Source code for nqs_sdk.bindings.protocols.cex.cex_market
import os
from decimal import Decimal
from nqs_sdk import quantlib
from ..protocol_infos import ProtocolInfos
[docs]
class CEXPair:
token0: str
token1: str
decimals0: int
decimals1: int
opening_fee: Decimal
max_leverage: int
maintenance_margin_ratio: Decimal
[docs]
def __init__(
self,
token0: str,
token1: str,
opening_fee: float | Decimal,
max_leverage: int,
maintenance_margin_ratio: float | Decimal,
) -> None:
data_source = quantlib.QuantlibDataProvider(os.getenv("QUANTLIB_CONFIG"))
token0_info = data_source.token_info("Ethereum", token0)
token1_info = data_source.token_info("Ethereum", token1)
assert token0_info is not None, f"Token {token0} not found"
assert token1_info is not None, f"Token {token1} not found"
self.decimals1 = int(token1_info.decimals)
self.decimals0 = int(token0_info.decimals)
self.token0 = token0
self.token1 = token1
self.opening_fee = Decimal(opening_fee)
self.max_leverage = max_leverage
self.maintenance_margin_ratio = Decimal(maintenance_margin_ratio)
[docs]
class CEXMarkets(ProtocolInfos):
pairs: list[CEXPair]
[docs]
def __init__(self, pairs: list[CEXPair]) -> None:
self.pairs = pairs
@property
def name(self) -> str:
return "cex"
@property
def factory_id(self) -> str:
return "cex"
[docs]
def get_token_infos(self) -> dict[str, int]:
return {pair.token0: pair.decimals0 for pair in self.pairs} | {
pair.token1: pair.decimals1 for pair in self.pairs
}