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

import collections.abc
import datetime
import enum
import typing

from nautilus_trader import common
from nautilus_trader import core
from nautilus_trader import model
from nautilus_trader import portfolio
from nautilus_trader import trading
from nautilus_trader.live.providers import InstrumentProvider as InstrumentProvider
from nautilus_trader.portfolio import PortfolioConfig

__all__ = [
    "BarsResponse",
    "BatchCancelOrders",
    "BatchModifyOrders",
    "BookDeltasResponse",
    "BookDepthResponse",
    "BookResponse",
    "CancelAllOrders",
    "CancelOrder",
    "ClientCache",
    "CustomDataResponse",
    "DataClientConfig",
    "ExecutionClientConfig",
    "FundingRatesResponse",
    "GenerateFillReports",
    "GenerateOrderStatusReport",
    "GenerateOrderStatusReports",
    "GeneratePositionStatusReports",
    "InstrumentProviderConfig",
    "InstrumentResponse",
    "InstrumentsResponse",
    "LiveDataEngineConfig",
    "LiveExecutionEngineConfig",
    "LiveNode",
    "LiveNodeBuilder",
    "LiveNodeConfig",
    "LiveNodeHandle",
    "LiveRiskEngineConfig",
    "ModifyOrder",
    "NodeState",
    "OptionChainReferencePriceResponse",
    "PluginConfig",
    "PortfolioConfig",
    "QueryAccount",
    "QueryOrder",
    "QueueMonitorConfig",
    "QuotesResponse",
    "RequestBars",
    "RequestBookDeltas",
    "RequestBookDepth",
    "RequestBookSnapshot",
    "RequestCustomData",
    "RequestFundingRates",
    "RequestInstrument",
    "RequestInstruments",
    "RequestOptionChainReferencePrice",
    "RequestQuotes",
    "RequestTrades",
    "RoutingConfig",
    "SubmitOrder",
    "SubmitOrderList",
    "SubscribeBars",
    "SubscribeBookDeltas",
    "SubscribeBookDepth10",
    "SubscribeCustomData",
    "SubscribeFundingRates",
    "SubscribeIndexPrices",
    "SubscribeInstrument",
    "SubscribeInstrumentClose",
    "SubscribeInstrumentStatus",
    "SubscribeInstruments",
    "SubscribeMarkPrices",
    "SubscribeOptionGreeks",
    "SubscribeQuotes",
    "SubscribeTrades",
    "TradesResponse",
    "UnsubscribeBars",
    "UnsubscribeBookDeltas",
    "UnsubscribeBookDepth10",
    "UnsubscribeCustomData",
    "UnsubscribeFundingRates",
    "UnsubscribeIndexPrices",
    "UnsubscribeInstrument",
    "UnsubscribeInstrumentClose",
    "UnsubscribeInstrumentStatus",
    "UnsubscribeInstruments",
    "UnsubscribeMarkPrices",
    "UnsubscribeOptionGreeks",
    "UnsubscribeQuotes",
    "UnsubscribeTrades",
    "_ClientOutput",
    "_ClientRuntime",
]

@typing.final
class BarsResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def bar_type(self) -> model.BarType: ...
    @property
    def data(self) -> list[model.Bar]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        bar_type: model.BarType,
        data: typing.Sequence[model.Bar],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> BarsResponse: ...

@typing.final
class BatchCancelOrders:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def cancels(self) -> list[CancelOrder]: ...

@typing.final
class BatchModifyOrders:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def modifies(self) -> list[ModifyOrder]: ...

@typing.final
class BookDeltasResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def data(self) -> list[model.OrderBookDelta]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        instrument_id: model.InstrumentId,
        data: typing.Sequence[model.OrderBookDelta],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> BookDeltasResponse: ...

@typing.final
class BookDepthResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def data(self) -> list[model.OrderBookDepth10]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        instrument_id: model.InstrumentId,
        data: typing.Sequence[model.OrderBookDepth10],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> BookDepthResponse: ...

@typing.final
class BookResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def data(self) -> model.OrderBook: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        instrument_id: model.InstrumentId,
        data: model.OrderBook,
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> BookResponse: ...

@typing.final
class CancelAllOrders:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def order_side(self) -> model.OrderSide | None: ...

@typing.final
class CancelOrder:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def client_order_id(self) -> model.ClientOrderId: ...
    @property
    def venue_order_id(self) -> model.VenueOrderId | None: ...

@typing.final
class _ClientOutput:
    def __init__(self) -> None: ...
    def instrument(self, instrument: typing.Any) -> None: ...
    def data(self, data: typing.Any) -> None: ...
    def response(self, response: typing.Any) -> None: ...
    def event(self, event: typing.Any) -> None: ...
    def report(
        self, report: typing.Any, fills: typing.Sequence[model.FillReport] | None = None
    ) -> None: ...
    def account_state(
        self,
        balances: typing.Sequence[model.AccountBalance],
        margins: typing.Sequence[model.MarginBalance],
        reported: bool,
        ts_event: int,
        ts_init: int,
        info: dict | None = None,
    ) -> None: ...
    def order_submitted_batch(self, events: typing.Sequence[model.OrderSubmitted]) -> None: ...
    def order_accepted_batch(self, events: typing.Sequence[model.OrderAccepted]) -> None: ...
    def order_canceled_batch(self, events: typing.Sequence[model.OrderCanceled]) -> None: ...
    def order_denied(self, order: typing.Any, reason: str, ts_init: int) -> None: ...
    def order_submitted(self, order: typing.Any, ts_init: int) -> None: ...
    def order_rejected(
        self, order: typing.Any, reason: str, ts_event: int, ts_init: int, due_post_only: bool
    ) -> None: ...
    def order_accepted(
        self, order: typing.Any, venue_order_id: model.VenueOrderId, ts_event: int, ts_init: int
    ) -> None: ...
    def order_modify_rejected(
        self,
        order: typing.Any,
        venue_order_id: model.VenueOrderId | None,
        reason: str,
        ts_event: int,
        ts_init: int,
    ) -> None: ...
    def order_cancel_rejected(
        self,
        order: typing.Any,
        venue_order_id: model.VenueOrderId | None,
        reason: str,
        ts_event: int,
        ts_init: int,
    ) -> None: ...
    def order_updated(
        self,
        order: typing.Any,
        venue_order_id: model.VenueOrderId,
        quantity: model.Quantity,
        price: model.Price | None,
        trigger_price: model.Price | None,
        protection_price: model.Price | None,
        ts_event: int,
        ts_init: int,
    ) -> None: ...
    def order_canceled(
        self,
        order: typing.Any,
        venue_order_id: model.VenueOrderId | None,
        ts_event: int,
        ts_init: int,
    ) -> None: ...
    def order_triggered(
        self,
        order: typing.Any,
        venue_order_id: model.VenueOrderId | None,
        ts_event: int,
        ts_init: int,
    ) -> None: ...
    def order_expired(
        self,
        order: typing.Any,
        venue_order_id: model.VenueOrderId | None,
        ts_event: int,
        ts_init: int,
    ) -> None: ...
    def order_filled(
        self,
        order: typing.Any,
        venue_order_id: model.VenueOrderId,
        venue_position_id: model.PositionId | None,
        trade_id: model.TradeId,
        last_qty: model.Quantity,
        last_px: model.Price,
        quote_currency: model.Currency,
        commission: model.Money | None,
        liquidity_side: model.LiquiditySide,
        ts_event: int,
        ts_init: int,
    ) -> None: ...

@typing.final
class _ClientRuntime:
    @property
    def connected(self) -> bool: ...
    @property
    def complete(self) -> bool: ...
    @property
    def event_loop(self) -> typing.Any | None: ...
    def __new__(cls, client: typing.Any, capacity: int = ...) -> _ClientRuntime: ...
    def bind(self, event_loop: typing.Any) -> None: ...
    def call(self, operation: str, args: tuple | None = None) -> typing.Any: ...
    def call_awaited(self, operation: str, args: tuple | None = None) -> typing.Any: ...
    def admit(self, operation: str, args: tuple | None = None) -> None: ...
    def create_task(self, coroutine: typing.Any, operation: str = "background") -> typing.Any: ...
    def lifecycle(self, operation: str) -> typing.Any: ...
    def connect(self) -> typing.Any: ...
    def abandon(self, task: typing.Any) -> None: ...
    def dispose(self) -> None: ...

class DataClientConfig:
    @property
    def handle_revised_bars(self) -> bool: ...
    @property
    def instrument_provider(self) -> InstrumentProviderConfig: ...
    @property
    def routing(self) -> RoutingConfig: ...
    def __new__(
        cls,
        handle_revised_bars: bool | None = None,
        instrument_provider: InstrumentProviderConfig | None = None,
        routing: RoutingConfig | None = None,
        **_kwargs: typing.Any,
    ) -> typing.Self: ...
    def dict(self) -> dict: ...
    def json(self) -> bytes: ...
    def to_importable(self, factory: typing.Any | None = None) -> typing.Any: ...

class ExecutionClientConfig:
    @property
    def instrument_provider(self) -> InstrumentProviderConfig: ...
    @property
    def routing(self) -> RoutingConfig: ...
    def __new__(
        cls,
        instrument_provider: InstrumentProviderConfig | None = None,
        routing: RoutingConfig | None = None,
        **_kwargs: typing.Any,
    ) -> typing.Self: ...
    def dict(self) -> dict: ...
    def json(self) -> bytes: ...
    def to_importable(self, factory: typing.Any | None = None) -> typing.Any: ...

@typing.final
class FundingRatesResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def data(self) -> list[model.FundingRateUpdate]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        instrument_id: model.InstrumentId,
        data: typing.Sequence[model.FundingRateUpdate],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> FundingRatesResponse: ...

@typing.final
class GenerateFillReports:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId | None: ...
    @property
    def venue_order_id(self) -> model.VenueOrderId | None: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def log_receipt_level(self) -> common.LogLevel: ...

@typing.final
class GenerateOrderStatusReport:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId | None: ...
    @property
    def client_order_id(self) -> model.ClientOrderId | None: ...
    @property
    def venue_order_id(self) -> model.VenueOrderId | None: ...

@typing.final
class GenerateOrderStatusReports:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def open_only(self) -> bool: ...
    @property
    def instrument_id(self) -> model.InstrumentId | None: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def log_receipt_level(self) -> common.LogLevel: ...

@typing.final
class GeneratePositionStatusReports:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId | None: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def log_receipt_level(self) -> common.LogLevel: ...

@typing.final
class InstrumentProviderConfig:
    @property
    def load_all(self) -> bool: ...
    @property
    def load_ids(self) -> list[str] | None: ...
    @property
    def filters(self) -> typing.Any: ...
    @property
    def filter_callable(self) -> str | None: ...
    @property
    def log_warnings(self) -> bool: ...
    def __new__(
        cls,
        load_all: bool | None = None,
        load_ids: typing.Sequence[str] | None = None,
        filters: typing.Mapping[str, typing.Any] | None = None,
        filter_callable: str | None = None,
        log_warnings: bool | None = None,
    ) -> InstrumentProviderConfig: ...

@typing.final
class LiveDataEngineConfig:
    @property
    def time_bars_build_with_no_updates(self) -> bool: ...
    @property
    def time_bars_timestamp_on_close(self) -> bool: ...
    @property
    def time_bars_skip_first_non_full_bar(self) -> bool: ...
    @property
    def time_bars_interval_type(self) -> model.BarIntervalType: ...
    @property
    def time_bars_build_delay(self) -> int: ...
    @property
    def time_bars_origin_offset(self) -> dict[str, int]: ...
    @property
    def validate_data_sequence(self) -> bool: ...
    @property
    def buffer_deltas(self) -> bool: ...
    @property
    def emit_quotes_from_book(self) -> bool: ...
    @property
    def emit_quotes_from_book_depths(self) -> bool: ...
    @property
    def external_clients(self) -> list[model.ClientId] | None: ...
    @property
    def debug(self) -> bool: ...
    def __new__(
        cls,
        time_bars_build_with_no_updates: bool | None = None,
        time_bars_timestamp_on_close: bool | None = None,
        time_bars_skip_first_non_full_bar: bool | None = None,
        time_bars_interval_type: typing.Any | None = None,
        time_bars_build_delay: int | None = None,
        time_bars_origin_offset: typing.Mapping[str, int] | None = None,
        validate_data_sequence: bool | None = None,
        buffer_deltas: bool | None = None,
        emit_quotes_from_book: bool | None = None,
        emit_quotes_from_book_depths: bool | None = None,
        external_clients: typing.Sequence[model.ClientId] | None = None,
        debug: bool | None = None,
    ) -> LiveDataEngineConfig: ...

@typing.final
class LiveExecutionEngineConfig:
    @property
    def load_cache(self) -> bool: ...
    @property
    def manage_own_order_books(self) -> bool: ...
    @property
    def snapshot_orders(self) -> bool: ...
    @property
    def snapshot_positions(self) -> bool: ...
    @property
    def snapshot_positions_interval_secs(self) -> float | None: ...
    @property
    def external_clients(self) -> list[model.ClientId] | None: ...
    @property
    def allow_overfills(self) -> bool: ...
    @property
    def reconciliation(self) -> bool: ...
    @property
    def reconciliation_startup_delay_secs(self) -> float: ...
    @property
    def reconciliation_lookback_mins(self) -> int | None: ...
    @property
    def reconciliation_instrument_ids(self) -> list[str] | None: ...
    @property
    def filter_unclaimed_external_orders(self) -> bool: ...
    @property
    def filter_position_reports(self) -> bool: ...
    @property
    def filtered_client_order_ids(self) -> list[str] | None: ...
    @property
    def generate_missing_orders(self) -> bool: ...
    @property
    def inflight_check_interval_ms(self) -> int: ...
    @property
    def inflight_check_threshold_ms(self) -> int: ...
    @property
    def inflight_check_retries(self) -> int: ...
    @property
    def open_check_interval_secs(self) -> float | None: ...
    @property
    def open_check_lookback_mins(self) -> int | None: ...
    @property
    def open_check_threshold_ms(self) -> int: ...
    @property
    def open_check_missing_retries(self) -> int: ...
    @property
    def open_check_open_only(self) -> bool: ...
    @property
    def max_single_order_queries_per_cycle(self) -> int: ...
    @property
    def single_order_query_delay_ms(self) -> int: ...
    @property
    def position_check_interval_secs(self) -> float | None: ...
    @property
    def position_check_lookback_mins(self) -> int: ...
    @property
    def position_check_threshold_ms(self) -> int: ...
    @property
    def position_check_retries(self) -> int: ...
    @property
    def purge_closed_orders_interval_mins(self) -> int | None: ...
    @property
    def purge_closed_orders_buffer_mins(self) -> int | None: ...
    @property
    def purge_closed_positions_interval_mins(self) -> int | None: ...
    @property
    def purge_closed_positions_buffer_mins(self) -> int | None: ...
    @property
    def purge_account_events_interval_mins(self) -> int | None: ...
    @property
    def purge_account_events_lookback_mins(self) -> int | None: ...
    @property
    def own_books_audit_interval_secs(self) -> float | None: ...
    @property
    def debug(self) -> bool: ...
    def __new__(
        cls,
        load_cache: bool | None = None,
        manage_own_order_books: bool | None = None,
        snapshot_positions_interval_secs: float | None = None,
        external_clients: typing.Sequence[model.ClientId] | None = None,
        allow_overfills: bool | None = None,
        reconciliation: bool | None = None,
        reconciliation_startup_delay_secs: float | None = None,
        reconciliation_lookback_mins: int | None = None,
        reconciliation_instrument_ids: typing.Sequence[str] | None = None,
        filter_unclaimed_external_orders: bool | None = None,
        filter_position_reports: bool | None = None,
        filtered_client_order_ids: typing.Sequence[str] | None = None,
        generate_missing_orders: bool | None = None,
        inflight_check_interval_ms: int | None = None,
        inflight_check_threshold_ms: int | None = None,
        inflight_check_retries: int | None = None,
        open_check_interval_secs: float | None = None,
        open_check_lookback_mins: int | None = None,
        open_check_threshold_ms: int | None = None,
        open_check_missing_retries: int | None = None,
        open_check_open_only: bool | None = None,
        max_single_order_queries_per_cycle: int | None = None,
        single_order_query_delay_ms: int | None = None,
        position_check_interval_secs: float | None = None,
        position_check_lookback_mins: int | None = None,
        position_check_threshold_ms: int | None = None,
        position_check_retries: int | None = None,
        purge_closed_orders_interval_mins: int | None = None,
        purge_closed_orders_buffer_mins: int | None = None,
        purge_closed_positions_interval_mins: int | None = None,
        purge_closed_positions_buffer_mins: int | None = None,
        purge_account_events_interval_mins: int | None = None,
        purge_account_events_lookback_mins: int | None = None,
        own_books_audit_interval_secs: float | None = None,
        debug: bool | None = None,
        snapshot_orders: bool | None = None,
        snapshot_positions: bool | None = None,
    ) -> LiveExecutionEngineConfig: ...

@typing.final
class LiveNodeConfig:
    @property
    def data_clients(self) -> dict: ...
    @property
    def exec_clients(self) -> dict: ...
    @property
    def environment(self) -> common.Environment: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def load_state(self) -> bool: ...
    @property
    def save_state(self) -> bool: ...
    @property
    def shutdown_on_error(self) -> bool: ...
    @property
    def timeout_connection_secs(self) -> float: ...
    @property
    def timeout_reconciliation_secs(self) -> float: ...
    @property
    def timeout_portfolio_secs(self) -> float: ...
    @property
    def timeout_disconnection_secs(self) -> float: ...
    @property
    def delay_post_stop_secs(self) -> float: ...
    @property
    def timeout_shutdown_secs(self) -> float: ...
    @property
    def logging(self) -> common.LoggerConfig: ...
    @property
    def instance_id(self) -> core.UUID4 | None: ...
    @property
    def cache(self) -> common.CacheConfig | None: ...
    @property
    def msgbus(self) -> common.MessageBusConfig | None: ...
    @property
    def portfolio(self) -> portfolio.PortfolioConfig | None: ...
    @property
    def queue_monitor(self) -> QueueMonitorConfig | None: ...
    @property
    def loop_debug(self) -> bool: ...
    @property
    def data_engine(self) -> LiveDataEngineConfig: ...
    @property
    def risk_engine(self) -> LiveRiskEngineConfig: ...
    @property
    def exec_engine(self) -> LiveExecutionEngineConfig: ...
    @property
    def plugins(self) -> list[PluginConfig]: ...
    @property
    def controller(self) -> trading.ImportableControllerConfig | None: ...
    def __new__(
        cls,
        environment: common.Environment | None = None,
        trader_id: model.TraderId | None = None,
        load_state: bool | None = None,
        save_state: bool | None = None,
        shutdown_on_error: bool | None = None,
        logging: common.LoggerConfig | None = None,
        instance_id: core.UUID4 | None = None,
        timeout_connection_secs: float | None = None,
        timeout_reconciliation_secs: float | None = None,
        timeout_portfolio_secs: float | None = None,
        timeout_disconnection_secs: float | None = None,
        delay_post_stop_secs: float | None = None,
        timeout_shutdown_secs: float | None = None,
        cache: common.CacheConfig | None = None,
        msgbus: common.MessageBusConfig | None = None,
        portfolio: portfolio.PortfolioConfig | None = None,
        queue_monitor: QueueMonitorConfig | None = None,
        loop_debug: bool | None = None,
        data_engine: LiveDataEngineConfig | None = None,
        risk_engine: LiveRiskEngineConfig | None = None,
        exec_engine: LiveExecutionEngineConfig | None = None,
        controller: trading.ImportableControllerConfig | None = None,
        plugins: typing.Sequence[PluginConfig] | None = None,
        *,
        data_clients: dict | None = None,
        exec_clients: dict | None = None,
    ) -> LiveNodeConfig: ...

@typing.final
class LiveRiskEngineConfig:
    @property
    def bypass(self) -> bool: ...
    @property
    def max_order_submit_rate(self) -> str: ...
    @property
    def max_order_modify_rate(self) -> str: ...
    @property
    def max_notional_per_order(self) -> dict[str, str]: ...
    @property
    def full_position_exit_venues(self) -> list[model.Venue]: ...
    @property
    def debug(self) -> bool: ...
    def __new__(
        cls,
        bypass: bool | None = None,
        max_order_submit_rate: str | None = None,
        max_order_modify_rate: str | None = None,
        max_notional_per_order: typing.Mapping[str, typing.Any] | None = None,
        full_position_exit_venues: typing.Sequence[model.Venue] | None = None,
        debug: bool | None = None,
    ) -> LiveRiskEngineConfig: ...

@typing.final
class ModifyOrder:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def client_order_id(self) -> model.ClientOrderId: ...
    @property
    def venue_order_id(self) -> model.VenueOrderId | None: ...
    @property
    def quantity(self) -> model.Quantity | None: ...
    @property
    def price(self) -> model.Price | None: ...
    @property
    def trigger_price(self) -> model.Price | None: ...

@typing.final
class PluginConfig:
    @property
    def path(self) -> str: ...
    @property
    def type_name(self) -> str: ...
    @property
    def config(self) -> dict: ...
    @property
    def sha256(self) -> str | None: ...
    def __new__(
        cls,
        path: str,
        type_name: str,
        config: typing.Mapping[str, typing.Any] | None = None,
        sha256: str | None = None,
    ) -> PluginConfig: ...

@typing.final
class ClientCache:
    def instrument(self, instrument_id: model.InstrumentId) -> typing.Any | None: ...
    def quote(
        self, instrument_id: model.InstrumentId, index: int = 0
    ) -> model.QuoteTick | None: ...
    def get(self, key: str) -> list[int] | None: ...
    def instruments(self, venue: model.Venue | None = None) -> list[typing.Any]: ...
    def instrument_ids(self, venue: model.Venue | None = None) -> list[model.InstrumentId]: ...
    def account(self, account_id: model.AccountId) -> typing.Any | None: ...
    def order(self, client_order_id: model.ClientOrderId) -> typing.Any | None: ...
    def client_order_id(self, venue_order_id: model.VenueOrderId) -> model.ClientOrderId | None: ...
    def venue_order_id(self, client_order_id: model.ClientOrderId) -> model.VenueOrderId | None: ...
    def position_id(self, client_order_id: model.ClientOrderId) -> model.PositionId | None: ...
    def strategy_id_for_order(
        self, client_order_id: model.ClientOrderId
    ) -> model.StrategyId | None: ...
    def order_list(self, order_list_id: model.OrderListId) -> model.OrderList | None: ...
    def order_book(self, instrument_id: model.InstrumentId) -> model.OrderBook | None: ...
    def position(self, position_id: model.PositionId) -> model.Position | None: ...
    def orders(
        self,
        venue: model.Venue | None = None,
        instrument_id: model.InstrumentId | None = None,
        strategy_id: model.StrategyId | None = None,
        account_id: model.AccountId | None = None,
        side: model.OrderSide | None = None,
    ) -> list[typing.Any]: ...
    def orders_open(
        self,
        venue: model.Venue | None = None,
        instrument_id: model.InstrumentId | None = None,
        strategy_id: model.StrategyId | None = None,
        account_id: model.AccountId | None = None,
        side: model.OrderSide | None = None,
    ) -> list[typing.Any]: ...
    def orders_inflight(
        self,
        venue: model.Venue | None = None,
        instrument_id: model.InstrumentId | None = None,
        strategy_id: model.StrategyId | None = None,
        account_id: model.AccountId | None = None,
        side: model.OrderSide | None = None,
    ) -> list[typing.Any]: ...
    def orders_open_count(
        self,
        venue: model.Venue | None = None,
        instrument_id: model.InstrumentId | None = None,
        strategy_id: model.StrategyId | None = None,
        account_id: model.AccountId | None = None,
        side: model.OrderSide | None = None,
    ) -> int: ...
    def client_order_ids_open(
        self,
        venue: model.Venue | None = None,
        instrument_id: model.InstrumentId | None = None,
        strategy_id: model.StrategyId | None = None,
        account_id: model.AccountId | None = None,
    ) -> list[model.ClientOrderId]: ...
    def positions_open(
        self,
        venue: model.Venue | None = None,
        instrument_id: model.InstrumentId | None = None,
        strategy_id: model.StrategyId | None = None,
        account_id: model.AccountId | None = None,
        side: model.PositionSide | None = None,
    ) -> list[model.Position]: ...

@typing.final
class CustomDataResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def data_type(self) -> model.DataType: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def data(self) -> list[model.CustomData]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        data_type: model.DataType,
        venue: model.Venue | None,
        data: typing.Sequence[model.CustomData],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> CustomDataResponse: ...

@typing.final
class InstrumentResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def data(self) -> typing.Any: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        instrument_id: model.InstrumentId,
        data: typing.Any,
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> InstrumentResponse: ...

@typing.final
class InstrumentsResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def venue(self) -> model.Venue: ...
    @property
    def data(self) -> list[typing.Any]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        venue: model.Venue,
        data: typing.Sequence[typing.Any],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> InstrumentsResponse: ...

@typing.final
class LiveNode:
    @property
    def environment(self) -> common.Environment: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def instance_id(self) -> core.UUID4: ...
    @property
    def is_running(self) -> bool: ...
    @property
    def cache(self) -> common.Cache: ...
    @property
    def portfolio(self) -> portfolio.Portfolio: ...
    @staticmethod
    def build(
        name: str,
        config: LiveNodeConfig | None = None,
        *,
        data_factories: dict | None = None,
        exec_factories: dict | None = None,
    ) -> LiveNode: ...
    @staticmethod
    def builder(
        name: str, trader_id: model.TraderId, environment: common.Environment
    ) -> LiveNodeBuilder: ...
    def handle(self) -> LiveNodeHandle: ...
    def add_stream_processor(self, callback: typing.Any) -> None: ...
    def run_async(self) -> collections.abc.Coroutine[typing.Any, typing.Any, None]: ...
    def run(self) -> None: ...
    def stop(self) -> None: ...
    def dispose(self) -> None: ...
    def add_actor(self, actor: typing.Any) -> None: ...
    def add_actor_from_config(self, config: common.ImportableActorConfig) -> None: ...
    def add_strategy(self, strategy: typing.Any) -> None: ...
    def add_strategy_from_config(self, config: trading.ImportableStrategyConfig) -> None: ...
    def add_exec_algorithm(self, exec_algorithm: typing.Any) -> None: ...
    def add_exec_algorithm_from_config(
        self, config: trading.ImportableExecutionAlgorithmConfig
    ) -> None: ...
    def add_plugin(
        self,
        path: str,
        type_name: str,
        config: typing.Mapping[str, typing.Any] | None = None,
        sha256: str | None = None,
    ) -> None: ...
    def add_builtin_actor(self, type_name: str, config: typing.Any) -> None: ...
    def add_builtin_strategy(self, type_name: str, config: typing.Any) -> None: ...

@typing.final
class LiveNodeBuilder:
    @staticmethod
    def from_config(
        name: str,
        config: LiveNodeConfig | None = None,
        *,
        data_factories: dict | None = None,
        exec_factories: dict | None = None,
    ) -> LiveNodeBuilder: ...
    def with_instance_id(self, instance_id: core.UUID4) -> LiveNodeBuilder: ...
    def with_load_state(self, load_state: bool) -> LiveNodeBuilder: ...
    def with_save_state(self, save_state: bool) -> LiveNodeBuilder: ...
    def with_timeout_connection(self, timeout_secs: int) -> LiveNodeBuilder: ...
    def with_timeout_reconciliation(self, timeout_secs: int) -> LiveNodeBuilder: ...
    def with_timeout_portfolio(self, timeout_secs: int) -> LiveNodeBuilder: ...
    def with_timeout_disconnection_secs(self, timeout_secs: int) -> LiveNodeBuilder: ...
    def with_delay_post_stop_secs(self, delay_secs: int) -> LiveNodeBuilder: ...
    def with_delay_shutdown_secs(self, delay_secs: int) -> LiveNodeBuilder: ...
    def with_reconciliation(self, reconciliation: bool) -> LiveNodeBuilder: ...
    def with_controller(
        self, controller: trading.ImportableControllerConfig
    ) -> LiveNodeBuilder: ...
    def with_reconciliation_lookback_mins(self, mins: int) -> LiveNodeBuilder: ...
    def with_cache_config(self, config: common.CacheConfig) -> LiveNodeBuilder: ...
    def with_cache_database_factory(self, factory: typing.Any) -> LiveNodeBuilder: ...
    def with_msgbus_config(self, config: common.MessageBusConfig) -> LiveNodeBuilder: ...
    def with_external_msgbus_factory(self, factory: typing.Any) -> LiveNodeBuilder: ...
    def with_portfolio_config(self, config: portfolio.PortfolioConfig) -> LiveNodeBuilder: ...
    def with_data_engine_config(self, config: LiveDataEngineConfig) -> LiveNodeBuilder: ...
    def with_risk_engine_config(self, config: LiveRiskEngineConfig) -> LiveNodeBuilder: ...
    def with_exec_engine_config(self, config: LiveExecutionEngineConfig) -> LiveNodeBuilder: ...
    def with_logging(self, logging: common.LoggerConfig) -> LiveNodeBuilder: ...
    def add_data_client(
        self,
        name: str | None,
        factory: typing.Any,
        config: typing.Any,
        routing: RoutingConfig | None = None,
    ) -> LiveNodeBuilder: ...
    def add_exec_client(
        self,
        name: str | None,
        factory: typing.Any,
        config: typing.Any,
        routing: RoutingConfig | None = None,
    ) -> LiveNodeBuilder: ...
    def add_simulated_exec_client(
        self, name: str | None, factory: typing.Any, config: typing.Any
    ) -> LiveNodeBuilder: ...
    def build(self) -> LiveNode: ...

@typing.final
class LiveNodeHandle:
    @property
    def is_stopping(self) -> bool: ...
    @property
    def is_running(self) -> bool: ...
    @property
    def state(self) -> NodeState: ...
    def stop(self) -> None: ...

@typing.final
class OptionChainReferencePriceResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def series_id(self) -> model.OptionSeriesId: ...
    @property
    def price(self) -> model.Price | None: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        series_id: model.OptionSeriesId,
        price: model.Price | None,
        correlation_id: core.UUID4,
        ts_init: int,
        params: dict | None = None,
    ) -> OptionChainReferencePriceResponse: ...

@typing.final
class QueryAccount:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def account_id(self) -> model.AccountId: ...

@typing.final
class QueryOrder:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def client_order_id(self) -> model.ClientOrderId: ...
    @property
    def venue_order_id(self) -> model.VenueOrderId | None: ...

@typing.final
class QueueMonitorConfig:
    @property
    def queue_depth_trigger(self) -> int: ...
    @property
    def queue_depth_clear(self) -> int: ...
    @property
    def mean_dispatch_ns_trigger(self) -> int: ...
    @property
    def mean_dispatch_ns_clear(self) -> int: ...
    def __new__(
        cls,
        queue_depth_trigger: int,
        queue_depth_clear: int,
        mean_dispatch_ns_trigger: int,
        mean_dispatch_ns_clear: int,
    ) -> QueueMonitorConfig: ...

@typing.final
class QuotesResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def data(self) -> list[model.QuoteTick]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        instrument_id: model.InstrumentId,
        data: typing.Sequence[model.QuoteTick],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> QuotesResponse: ...

@typing.final
class RequestBars:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def bar_type(self) -> model.BarType: ...
    @property
    def limit(self) -> int | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestBookDeltas:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def limit(self) -> int | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestBookDepth:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def limit(self) -> int | None: ...
    @property
    def depth(self) -> int | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestBookSnapshot:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def depth(self) -> int | None: ...

@typing.final
class RequestCustomData:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def data_type(self) -> model.DataType: ...
    @property
    def limit(self) -> int | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestFundingRates:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def limit(self) -> int | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestInstrument:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestInstruments:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestOptionChainReferencePrice:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def series_id(self) -> model.OptionSeriesId: ...

@typing.final
class RequestQuotes:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def limit(self) -> int | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RequestTrades:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def request_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def limit(self) -> int | None: ...
    @property
    def start(self) -> datetime.datetime | None: ...
    @property
    def end(self) -> datetime.datetime | None: ...
    @property
    def start_ns(self) -> int | None: ...
    @property
    def end_ns(self) -> int | None: ...

@typing.final
class RoutingConfig:
    @property
    def default(self) -> bool: ...
    @property
    def venues(self) -> list[str] | None: ...
    def __new__(
        cls, default: bool | None = None, venues: typing.Sequence[str] | None = None
    ) -> RoutingConfig: ...

@typing.final
class SubmitOrder:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def client_order_id(self) -> model.ClientOrderId: ...
    @property
    def order_init(self) -> model.OrderInitialized: ...
    @property
    def exec_algorithm_id(self) -> model.ExecAlgorithmId | None: ...
    @property
    def position_id(self) -> model.PositionId | None: ...
    @property
    def order(self) -> typing.Any: ...

@typing.final
class SubmitOrderList:
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def causation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def trader_id(self) -> model.TraderId: ...
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def strategy_id(self) -> model.StrategyId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def order_list(self) -> model.OrderList: ...
    @property
    def order_inits(self) -> list[model.OrderInitialized]: ...
    @property
    def exec_algorithm_id(self) -> model.ExecAlgorithmId | None: ...
    @property
    def position_id(self) -> model.PositionId | None: ...

@typing.final
class SubscribeBars:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def bar_type(self) -> model.BarType: ...

@typing.final
class SubscribeBookDeltas:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def book_type(self) -> model.BookType: ...
    @property
    def depth(self) -> int | None: ...
    @property
    def managed(self) -> bool: ...

@typing.final
class SubscribeBookDepth10:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def book_type(self) -> model.BookType: ...
    @property
    def depth(self) -> int | None: ...
    @property
    def managed(self) -> bool: ...

@typing.final
class SubscribeCustomData:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def data_type(self) -> model.DataType: ...

@typing.final
class SubscribeFundingRates:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeIndexPrices:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeInstrument:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeInstrumentClose:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeInstrumentStatus:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeInstruments:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...

@typing.final
class SubscribeMarkPrices:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeOptionGreeks:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeQuotes:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class SubscribeTrades:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class TradesResponse:
    @property
    def client_id(self) -> model.ClientId: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...
    @property
    def data(self) -> list[model.TradeTick]: ...
    @property
    def correlation_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def start(self) -> int | None: ...
    @property
    def end(self) -> int | None: ...
    @property
    def params(self) -> dict | None: ...
    def __new__(
        cls,
        client_id: model.ClientId,
        instrument_id: model.InstrumentId,
        data: typing.Sequence[model.TradeTick],
        correlation_id: core.UUID4,
        ts_init: int,
        start: int | None = None,
        end: int | None = None,
        params: dict | None = None,
    ) -> TradesResponse: ...

@typing.final
class UnsubscribeBars:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def bar_type(self) -> model.BarType: ...

@typing.final
class UnsubscribeBookDeltas:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeBookDepth10:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeCustomData:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def data_type(self) -> model.DataType: ...

@typing.final
class UnsubscribeFundingRates:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeIndexPrices:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeInstrument:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeInstrumentClose:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeInstrumentStatus:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeInstruments:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...

@typing.final
class UnsubscribeMarkPrices:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeOptionGreeks:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeQuotes:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class UnsubscribeTrades:
    @property
    def client_id(self) -> model.ClientId | None: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def command_id(self) -> core.UUID4: ...
    @property
    def ts_init(self) -> int: ...
    @property
    def correlation_id(self) -> core.UUID4 | None: ...
    @property
    def params(self) -> dict | None: ...
    @property
    def instrument_id(self) -> model.InstrumentId: ...

@typing.final
class NodeState(enum.Enum):
    IDLE = ...
    STARTING = ...
    RUNNING = ...
    SHUTTING_DOWN = ...
    STOPPED = ...
