Source code for nqs_sdk.bindings.protocols.uniswap_v3.uniswap_v3_factory

from typing import Any

import nqs_sdk
from nqs_sdk.bindings.protocols.protocol_infos import ProtocolInfos
from nqs_sdk.bindings.utils.utils import get_all_tokens
from nqs_sdk.interfaces.protocol_metafactory import ProtocolMetaFactory

from .uniswap_v3_pool import UniswapV3Pool


[docs] class UniswapV3Factory(ProtocolMetaFactory):
[docs] def __init__(self) -> None: self.protocols: dict[str, UniswapV3Pool] = {} self.tokens_metadata = get_all_tokens()
[docs] def register_protocol(self, protocol: ProtocolInfos) -> None: assert isinstance(protocol, UniswapV3Pool), "Protocol must be an instance of UniswapV3Pool" assert protocol.name not in self.protocols, "Protocol already registered" self.protocols[protocol.name] = protocol
[docs] def id(self) -> str: return "uniswap_v3"
[docs] def get_config(self) -> dict: historical_pools: list[dict[str, Any]] = [] custom_pools: list[dict[str, Any]] = [] for protocol in self.protocols.values(): if protocol.initial_balance is not None: custom_pools.append( { "pool_name": protocol.name, "symbol_token0": protocol.token0, "symbol_token1": protocol.token1, "fee_tier": protocol.fee_tier, "initial_balance": { "amount": protocol.initial_balance["amount"], "unit": protocol.initial_balance["unit"], }, } ) else: historical_pools.append( { "pool_name": protocol.name, "symbol_token0": protocol.token0, "symbol_token1": protocol.token1, "address": protocol.address, } ) config = { "uniswap_v3": { "initial_state": { "custom_state": {"pools": custom_pools}, "historical_state": {"pools": historical_pools}, } } } return config
[docs] def get_factories(self) -> list[Any]: factories: list[Any] = [] factories.append(nqs_sdk.implementations.uniswap_v3_rust_factory()) return factories