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

import enum
import typing

from nautilus_trader import model
from nautilus_trader import network

__all__ = [
    "LIGHTER",
    "LIGHTER_CLIENT_ID",
    "LIGHTER_ROBINHOOD",
    "LIGHTER_ROBINHOOD_CLIENT_ID",
    "LIGHTER_ROBINHOOD_VENUE",
    "LIGHTER_VENUE",
    "LighterDataClientConfig",
    "LighterDataClientFactory",
    "LighterDeployment",
    "LighterEnvironment",
    "LighterExecutionClientConfig",
    "LighterExecutionClientFactory",
    "revoke_lighter_integrator",
]

LIGHTER: str
LIGHTER_CLIENT_ID: model.ClientId
LIGHTER_VENUE: model.Venue
LIGHTER_ROBINHOOD: str
LIGHTER_ROBINHOOD_CLIENT_ID: model.ClientId
LIGHTER_ROBINHOOD_VENUE: model.Venue

@typing.final
class LighterDataClientConfig:
    @property
    def environment(self) -> LighterEnvironment: ...
    @property
    def deployment(self) -> LighterDeployment: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def account_index(self) -> int | None: ...
    @property
    def api_key_index(self) -> int | None: ...
    @property
    def base_url_http(self) -> str | None: ...
    @property
    def base_url_ws(self) -> str | None: ...
    @property
    def http_timeout_secs(self) -> int: ...
    @property
    def ws_timeout_secs(self) -> int: ...
    @property
    def update_instruments_interval_mins(self) -> int: ...
    @property
    def rest_quota_per_min(self) -> int | None: ...
    @property
    def transport_backend(self) -> network.TransportBackend: ...
    def __init__(
        self,
        base_url_http: str | None = None,
        base_url_ws: str | None = None,
        proxy_url: str | None = None,
        environment: LighterEnvironment | None = None,
        account_index: int | None = None,
        api_key_index: int | None = None,
        private_key: str | None = None,
        http_timeout_secs: int | None = None,
        ws_timeout_secs: int | None = None,
        update_instruments_interval_mins: int | None = None,
        rest_quota_per_min: int | None = None,
        transport_backend: network.TransportBackend | None = None,
        deployment: LighterDeployment | None = None,
        venue: model.Venue | None = None,
    ) -> None: ...
    @property
    def has_proxy_url(self) -> bool: ...

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

@typing.final
class LighterExecutionClientConfig:
    @property
    def environment(self) -> LighterEnvironment: ...
    @property
    def deployment(self) -> LighterDeployment: ...
    @property
    def venue(self) -> model.Venue | None: ...
    @property
    def account_id(self) -> model.AccountId: ...
    @property
    def account_index(self) -> int | None: ...
    @property
    def api_key_index(self) -> int | None: ...
    @property
    def base_url_http(self) -> str | None: ...
    @property
    def base_url_ws(self) -> str | None: ...
    @property
    def http_timeout_secs(self) -> int: ...
    @property
    def ws_timeout_secs(self) -> int: ...
    @property
    def market_order_slippage_bps(self) -> int: ...
    @property
    def rest_quota_per_min(self) -> int | None: ...
    @property
    def sendtx_quota_per_min(self) -> int | None: ...
    @property
    def transport_backend(self) -> network.TransportBackend: ...
    def __init__(
        self,
        account_id: model.AccountId,
        account_index: int | None = None,
        api_key_index: int | None = None,
        private_key: str | None = None,
        base_url_http: str | None = None,
        base_url_ws: str | None = None,
        proxy_url: str | None = None,
        environment: LighterEnvironment | None = None,
        http_timeout_secs: int | None = None,
        ws_timeout_secs: int | None = None,
        market_order_slippage_bps: int | None = None,
        rest_quota_per_min: int | None = None,
        sendtx_quota_per_min: int | None = None,
        transport_backend: network.TransportBackend | None = None,
        deployment: LighterDeployment | None = None,
        venue: model.Venue | None = None,
    ) -> None: ...
    @property
    def has_proxy_url(self) -> bool: ...

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

@typing.final
class LighterDeployment(enum.Enum):
    LIGHTER = ...
    ROBINHOOD = ...

@typing.final
class LighterEnvironment(enum.Enum):
    MAINNET = ...
    TESTNET = ...

def revoke_lighter_integrator(
    environment: LighterEnvironment = LighterEnvironment.MAINNET,
) -> typing.Any: ...
