import { BigNumberish } from 'ethers' import { AdapterType } from '@premia/pair-lists' import { TokenPair } from './tokenPair' export { AdapterType } from '@premia/pair-lists' /** * @interface TokenMinimal * * The TokenMinimal interface represents minimal data for a token in a blockchain. * * @property {string} address - The address of the token contract on the blockchain. * @property {string} symbol - The symbol used to represent the token. * @property {string} name - The name of the token. * @property {number} decimals - The number of decimal places the token can be divided into. */ export interface TokenMinimal { address: string symbol: string name: string decimals: number } export interface Token extends TokenMinimal { address: string symbol: string name: string decimals: number chainId: number isNative: boolean isWrappedNative: boolean priceETH?: BigNumberish priceUSD?: BigNumberish } export interface TokenExtended extends Token { priceETH: BigNumberish priceUSD: BigNumberish pricingPathChainlink: TokenPriceNode[] pricingPathUniswapV3: TokenPriceNode[] poolCount: BigNumberish vaultCount: BigNumberish openInterestETH: BigNumberish openInterestUSD: BigNumberish callOpenInterestETH: BigNumberish callOpenInterestUSD: BigNumberish putOpenInterestETH: BigNumberish putOpenInterestUSD: BigNumberish totalValueLockedETH: BigNumberish totalValueLockedUSD: BigNumberish callTotalValueLockedETH: BigNumberish callTotalValueLockedUSD: BigNumberish putTotalValueLockedETH: BigNumberish putTotalValueLockedUSD: BigNumberish volumeETH: BigNumberish volumeUSD: BigNumberish callVolumeETH: BigNumberish callVolumeUSD: BigNumberish putVolumeETH: BigNumberish putVolumeUSD: BigNumberish premiumsETH: BigNumberish premiumsUSD: BigNumberish callPremiumsETH: BigNumberish callPremiumsUSD: BigNumberish putPremiumsETH: BigNumberish putPremiumsUSD: BigNumberish exercisePayoutsETH: BigNumberish exercisePayoutsUSD: BigNumberish feeRevenueETH: BigNumberish feeRevenueUSD: BigNumberish protocolFeeRevenueETH: BigNumberish protocolFeeRevenueUSD: BigNumberish } export interface TokenPriceNode { timestamp: BigNumberish adapterType: AdapterType decimals: number sources: string[] prices: BigNumberish[] liquidity: BigNumberish[] tokens: Token[] pairs: TokenPair[] price: BigNumberish next: TokenPriceNode[] prev: TokenPriceNode[] }