Source code for curvesim.pool_data.queries.pool_assets
"""
Functions to get assets for Curve pools.
"""
from typing import List, Union
from curvesim.constants import Chain
from curvesim.pool_data.metadata import PoolMetaDataInterface
from curvesim.pool_data.queries.metadata import get_metadata
from curvesim.templates import OnChainAsset, OnChainAssetPair
from curvesim.utils import get_pairs
[docs]def get_pool_assets(
metadata_or_address, chain: Union[str, Chain] = Chain.MAINNET
) -> List[OnChainAssetPair]:
"""
Gets asset pairs tradeable for the specified pool.
Parameters
----------
metadata_or_address: PoolMetaDataInterface or str
Pool metadata or pool address to fetch metadata.
chain: str or Chain, default=Chain.MAINNET
Chain to use if pool address is provided to fetch metadata.
Returns
-------
List[OnChainAssetPair]
"""
if isinstance(metadata_or_address, str):
pool_metadata: PoolMetaDataInterface = get_metadata(metadata_or_address, chain)
else:
pool_metadata = metadata_or_address
symbol_pairs = get_pairs(pool_metadata.coin_names)
address_pairs = get_pairs(pool_metadata.coins)
sim_assets = []
for pair_info in zip(symbol_pairs, symbol_pairs, address_pairs):
base_info, quote_info = tuple(zip(*pair_info))
base_asset = OnChainAsset(*base_info, pool_metadata.chain) # type: ignore [call-arg]
quote_asset = OnChainAsset(*quote_info, pool_metadata.chain) # type: ignore [call-arg]
asset_pair = OnChainAssetPair(base_asset, quote_asset)
sim_assets.append(asset_pair)
return sim_assets