# This file is automatically generated by pyo3_stub_gen
# ruff: noqa: E501

import decimal
import typing

from nautilus_trader import model

__all__ = [
    "SandboxExecutionClientConfig",
    "SandboxExecutionClientFactory",
]

@typing.final
class SandboxExecutionClientConfig:
    def __init__(
        self,
        venue: model.Venue,
        starting_balances: typing.Sequence[model.Money],
        account_id: model.AccountId | None = None,
        base_currency: model.Currency | None = None,
        oms_type: model.OmsType | None = None,
        account_type: model.AccountType | None = None,
        default_leverage: decimal.Decimal | None = None,
        book_type: model.BookType | None = None,
        frozen_account: bool = False,
        bar_execution: bool = True,
        trade_execution: bool = True,
        reject_stop_orders: bool = True,
        support_gtd_orders: bool = True,
        support_contingent_orders: bool = True,
        use_position_ids: bool = True,
        use_random_ids: bool = False,
        use_reduce_only: bool = True,
        fee_model: typing.Any | None = None,
        fill_model: typing.Any | None = None,
        queue_position: bool = False,
        liquidity_consumption: bool = False,
        bar_adaptive_high_low_ordering: bool = False,
        use_market_order_acks: bool = False,
        oto_full_trigger: bool = False,
        price_protection_points: int | None = None,
        latency_model: typing.Any | None = None,
    ) -> None: ...
    @property
    def account_id(self) -> model.AccountId: ...
    @property
    def venue(self) -> model.Venue: ...
    @property
    def starting_balances(self) -> list[model.Money]: ...
    @property
    def base_currency(self) -> model.Currency | None: ...
    @property
    def oms_type(self) -> model.OmsType: ...
    @property
    def account_type(self) -> model.AccountType: ...
    @property
    def default_leverage(self) -> decimal.Decimal: ...
    @property
    def book_type(self) -> model.BookType: ...
    @property
    def fee_model(self) -> typing.Any | None: ...
    @property
    def fill_model(self) -> typing.Any | None: ...
    @property
    def latency_model(self) -> typing.Any | None: ...
    @property
    def frozen_account(self) -> bool: ...
    @property
    def bar_execution(self) -> bool: ...
    @property
    def trade_execution(self) -> bool: ...
    @property
    def reject_stop_orders(self) -> bool: ...
    @property
    def support_gtd_orders(self) -> bool: ...
    @property
    def support_contingent_orders(self) -> bool: ...
    @property
    def use_position_ids(self) -> bool: ...
    @property
    def use_random_ids(self) -> bool: ...
    @property
    def use_reduce_only(self) -> bool: ...
    @property
    def queue_position(self) -> bool: ...
    @property
    def liquidity_consumption(self) -> bool: ...
    @property
    def bar_adaptive_high_low_ordering(self) -> bool: ...
    @property
    def use_market_order_acks(self) -> bool: ...
    @property
    def oto_full_trigger(self) -> bool: ...
    @property
    def price_protection_points(self) -> int: ...

@typing.final
class SandboxExecutionClientFactory:
    def __init__(self) -> None: ...
    def name(self) -> str: ...
