from _typeshed import Incomplete

POOLING_STRATEGIES: Incomplete

class ServerState:
    server: Incomplete
    last_checked_time: Incomplete
    available: Incomplete
    def __init__(self, server, last_checked_time, available) -> None: ...

class ServerPoolState:
    server_states: Incomplete
    strategy: Incomplete
    server_pool: Incomplete
    last_used_server: int
    initialize_time: Incomplete
    def __init__(self, server_pool) -> None: ...
    def refresh(self) -> None: ...
    def get_current_server(self): ...
    def get_server(self): ...
    def find_active_random_server(self): ...
    def find_active_server(self, starting): ...
    def __len__(self) -> int: ...

class ServerPool:
    servers: Incomplete
    pool_states: Incomplete
    active: Incomplete
    exhaust: Incomplete
    single: Incomplete
    strategy: Incomplete
    def __init__(
        self, servers=None, pool_strategy="ROUND_ROBIN", active: bool = True, exhaust: bool = False, single_state: bool = True
    ) -> None: ...
    def __len__(self) -> int: ...
    def __getitem__(self, item): ...
    def __iter__(self): ...
    def add(self, servers) -> None: ...
    def remove(self, server) -> None: ...
    def initialize(self, connection) -> None: ...
    def get_server(self, connection): ...
    def get_current_server(self, connection): ...
