Source code for curvesim.pool_data.metadata.base
from abc import ABC, abstractmethod
[docs]class PoolMetaDataInterface(ABC):
"""
Interface for container holding a pool's metadata.
Besides easy to access attributes, it provides `init_kwargs`, which
are keyword arguments to use in a pool's `__init__`. This is useful
for factory functions.
"""
[docs] @abstractmethod
def init_kwargs(self, normalize=True):
"""
Returns a dictionary of kwargs used to initialize the pool.
Parameters
----------
normalize: bool
Will put the balances in units of D, e.g. 18 decimals.
Returns
-------
dict
"""
raise NotImplementedError
@property
@abstractmethod
def address(self):
"""
Returns the pool address.
Returns
-------
str
"""
raise NotImplementedError
@property
@abstractmethod
def chain(self):
"""
Returns the chain/layer 2 identifier.
Returns
-------
str
"""
raise NotImplementedError
@property
@abstractmethod
def pool_type(self):
"""
Returns the pool type.
Returns
-------
Pool
"""
raise NotImplementedError
@property
@abstractmethod
def sim_pool_type(self):
"""
Returns the pool type.
Returns
-------
SimPool
"""
raise NotImplementedError
@property
@abstractmethod
def coins(self):
"""
Returns coin addresses for the pool's holdings.
For pools that are not on Ethereum mainnet, the address
for the corresponding mainnet token is returned.
For lending tokens (e.g., aTokens or cTokens), the
address for the underlying token is returned.
Returns
-------
list of strings
coin addresses
"""
raise NotImplementedError
@property
@abstractmethod
def coin_names(self):
"""
Returns coin names for the pool's holdings.
For pools that are not on Ethereum mainnet, the name
of the corresponding mainnet token is returned.
For lending tokens (e.g., aTokens or cTokens), the
name of the underlying token is returned.
Returns
-------
list of strings
coin names
"""
raise NotImplementedError
@property
@abstractmethod
def n(self):
"""
Returns the number of token-types (e.g., DAI, USDC, USDT) in a pool.
Returns
-------
int or list of ints
Number of token-types.
For metapools, a list [n_metapool, n_basepool] is returned.
N_metapool includes the basepool LP token.
"""
raise NotImplementedError
class PoolMetaDataBase(PoolMetaDataInterface, ABC):
"""
Base class for pool metadata containers.
Provides a very simple and generic implementation that is used
by simulation pipelines.
"""
def __init__(self, metadata_dict, pool_type, sim_pool_type):
self._dict = metadata_dict
self._pool_type = pool_type
self._sim_pool_type = sim_pool_type
@property
def address(self):
return self._dict["address"]
@property
def chain(self):
return self._dict["chain"]
@property
def pool_type(self):
return self._pool_type
@property
def sim_pool_type(self):
return self._sim_pool_type