degenbot.aerodrome ================== .. py:module:: degenbot.aerodrome .. autoapi-nested-parse:: Aerodrome V2/V3 liquidity pools and trackers. Submodules ---------- .. toctree:: :maxdepth: 1 /autoapi/degenbot/aerodrome/abi/index /autoapi/degenbot/aerodrome/address/index /autoapi/degenbot/aerodrome/functions/index /autoapi/degenbot/aerodrome/math/index /autoapi/degenbot/aerodrome/pools/index /autoapi/degenbot/aerodrome/trackers/index /autoapi/degenbot/aerodrome/types/index /autoapi/degenbot/aerodrome/v2_pool_calc/index /autoapi/degenbot/aerodrome/v2_pool_state/index Package Contents ---------------- .. py:class:: AerodromeV2Pool(*args: Any, **kwargs: Any) Bases: :py:obj:`degenbot.aerodrome.v2_pool_state.AerodromeV2PoolState`, :py:obj:`degenbot.aerodrome.v2_pool_calc.AerodromeV2PoolCalc`, :py:obj:`degenbot.types.abstract.AbstractLiquidityPool` AerodromeV2Pool class. .. py:attribute:: variant :type: ClassVar[str | None] :value: 'aerodrome' .. py:type:: PoolState :canonical: AerodromeV2PoolState .. py:attribute:: FEE_DENOMINATOR :value: 10000 .. py:attribute:: address :type: degenbot.types.chain.ChecksummedAddress .. py:attribute:: factory :type: degenbot.types.chain.ChecksummedAddress .. py:attribute:: deployer_address :type: degenbot.types.chain.ChecksummedAddress .. py:attribute:: name :type: str .. py:method:: from_handle(py_pool: degenbot.types.Pool) -> Self :classmethod: Wrap a Rust-owned ``Pool`` handle as a Python companion. Internal seam (ADR-005, Polars-style ``_from_pydf`` pattern). Every identity field (address, tokens, factory, fee, stable, variant) is read off the handle; reserves live in Rust (``AerodromeV2PoolState``) and are read via ``snapshot_aerodrome()`` — the Python ``StateCache`` is gone. :returns: A ``cls`` instance wrapping ``py_pool``. :raises DegenbotValueError: If the handle is not an Aerodrome V2 pool. .. py:property:: reserves_token0 :type: int Reserves token0. .. py:property:: reserves_token1 :type: int Reserves token1. .. py:property:: state :type: PoolState State. :raises DegenbotValueError: If the Rust snapshot is absent. .. py:property:: update_block :type: degenbot.types.aliases.BlockNumber Update block. .. py:method:: swap_is_viable(state: PoolState, vector: degenbot.uniswap.types.UniswapPoolSwapVector) -> bool :staticmethod: Swap is viable. :returns: The computed boolean value. .. py:method:: external_update(update: degenbot.aerodrome.types.AerodromeV2PoolExternalUpdate) -> None External update. :raises ExternalUpdateError: See function documentation. .. py:method:: discard_states_before_block(block: degenbot.types.aliases.BlockNumber) -> None Discard cached states earlier than the given block. :raises NoPoolStateAvailable: See function documentation. .. py:method:: restore_state_before_block(block: degenbot.types.aliases.BlockNumber) -> None Restore the last pool state recorded prior to a target block. Use this method to maintain consistent state data following a chain re-organization. :raises NoPoolStateAvailable: See function documentation. .. py:class:: AerodromeV3Pool(*args: Any, **kwargs: Any) Bases: :py:obj:`degenbot.uniswap.v3_liquidity_pool.UniswapV3Pool` AerodromeV3Pool class. .. py:attribute:: variant :type: ClassVar[str | None] :value: 'aerodrome' .. py:type:: PoolState :canonical: AerodromeV3PoolState .. py:attribute:: TICK_STRUCT_TYPES :value: ('uint128', 'int128', 'int128', 'uint256', 'uint256', 'uint256', 'int56', 'uint160', 'uint32', 'bool') .. py:class:: AerodromeV2PoolTracker(*, factory_address: str, bot: degenbot.bot.Bot, chain_id: degenbot.types.aliases.ChainId | None = None, deployer_address: degenbot._ffi.ChecksummedAddress | str | None = None, pool_init_hash: str | None = None) Bases: :py:obj:`_AbstractAerodromeV2PoolTracker`\ [\ :py:obj:`degenbot.aerodrome.pools.AerodromeV2Pool`\ ] Generate and track concrete instances of V2 liquidity pool helpers. Tracks Uniswap V2 liquidity pool helpers or their child classes. .. py:method:: get_volatile_pool(token_addresses: tuple[str, str], *, silent: bool = False, pool_class_kwargs: dict[str, Any] | None = None) -> degenbot.aerodrome.pools.AerodromeV2Pool Get a volatile pool by its token addresses. The token addresses may be passed in any order. :returns: The computed value. .. py:class:: AerodromeV3PoolTracker(*args: Any, **kwargs: Any) Bases: :py:obj:`degenbot.uniswap.trackers.AbstractUniswapV3PoolTracker`\ [\ :py:obj:`degenbot.aerodrome.pools.AerodromeV3Pool`\ ] AerodromeV3PoolTracker class. .. py:method:: get_pool_from_tokens_and_fee(*args: Any, **kwargs: Any) -> Never :abstractmethod: Return pool from tokens and fee. .. py:method:: get_pool_from_tokens_and_tick_spacing(token_addresses: tuple[str, str], tick_spacing: int, *, silent: bool = False, pool_class_kwargs: dict[str, Any] | None = None) -> degenbot.aerodrome.pools.AerodromeV3Pool Return pool from tokens and tick spacing. :returns: The computed value. .. py:class:: AerodromeV2PoolState Bases: :py:obj:`degenbot.types.abstract.AbstractPoolState` AerodromeV2PoolState class. .. py:attribute:: reserves_token0 :type: int .. py:attribute:: reserves_token1 :type: int .. py:class:: AerodromeV3PoolState Bases: :py:obj:`degenbot.uniswap.v3_types.UniswapV3PoolState` AerodromeV3PoolState class.