from botocore.retries.bucket import Clock as Clock

class AsyncTokenBucket:
    def __init__(self, max_rate: float, clock: Clock, min_rate: float = ...) -> None: ...
    @property
    def max_rate(self) -> float: ...
    async def set_max_rate(self, value: float) -> None: ...
    def _set_max_rate(self, value: float) -> None: ...
    @property
    def max_capacity(self) -> int: ...
    @property
    def available_capacity(self) -> int: ...
    async def acquire(self, amount: int = ..., block: bool = ...) -> bool: ...
