UNPKG

@tracer-protocol/pools-js

Version:

Javascript library for interacting with Tracer's Perpetual Pools

183 lines (182 loc) 6.34 kB
import BigNumber from "bignumber.js"; import { ethers } from "ethers"; import { NETWORKS } from '../utils'; import { PoolCommitter, PoolKeeper } from "@tracer-protocol/perpetual-pools-contracts/types"; import { EVENT_NAMES } from "../utils"; import { Pool } from "../entities"; /** * Holds burn and mint pending amounts * PendingAmounts.mint is the amount of quote token pending in the shadow pools * PendingAmounts.burn is the amount of to be burned pool tokens in the shadow pools */ export declare type PendingAmounts = { mint: BigNumber; burn: BigNumber; }; /** * Global contract interface used by each of the {@link entities} */ export interface IContract { address: string; provider: ethers.providers.Provider | ethers.Signer; } /** * ERC20 token info which is static and not going to change */ export declare type StaticTokenInfo = { address: string; name: string; symbol: string; decimals: number; }; declare type KnownNetworkKeys = keyof typeof NETWORKS; export declare type KnownNetwork = typeof NETWORKS[KnownNetworkKeys]; export declare type TotalPoolCommitments = Awaited<ReturnType<PoolCommitter['totalPoolCommitments']>>; export declare type TotalPoolCommitmentsBN = { longMintSettlement: BigNumber; longBurnPoolTokens: BigNumber; shortMintSettlement: BigNumber; shortBurnPoolTokens: BigNumber; shortBurnLongMintPoolTokens: BigNumber; longBurnShortMintPoolTokens: BigNumber; }; export declare type OraclePriceTransformer = (lastPrice: BigNumber, currentPrice: BigNumber) => BigNumber; export declare type PoolStatePreviewInputs = { leverage: BigNumber; fee: BigNumber; longBalance: BigNumber; shortBalance: BigNumber; longTokenSupply: BigNumber; shortTokenSupply: BigNumber; pendingLongTokenBurn: BigNumber; pendingShortTokenBurn: BigNumber; lastOraclePrice: BigNumber; currentOraclePrice: BigNumber; pendingCommits: TotalPoolCommitmentsBN[]; oraclePriceTransformer: OraclePriceTransformer; }; export declare type PoolStatePreview = { timestamp: number; currentSkew: BigNumber; currentLongBalance: BigNumber; currentLongSupply: BigNumber; currentShortBalance: BigNumber; currentShortSupply: BigNumber; currentLongTokenPrice: BigNumber; currentShortTokenPrice: BigNumber; currentPendingLongTokenBurn: BigNumber; currentPendingShortTokenBurn: BigNumber; expectedSkew: BigNumber; expectedLongBalance: BigNumber; expectedLongSupply: BigNumber; expectedShortBalance: BigNumber; expectedShortSupply: BigNumber; totalNetPendingLong: BigNumber; totalNetPendingShort: BigNumber; expectedLongTokenPrice: BigNumber; expectedShortTokenPrice: BigNumber; expectedPendingLongTokenBurn: BigNumber; expectedPendingShortTokenBurn: BigNumber; lastOraclePrice: BigNumber; expectedOraclePrice: BigNumber; pendingCommits: TotalPoolCommitmentsBN[]; }; export interface OracleClass<C> { _contract?: C; address: string; provider: ethers.providers.Provider | ethers.Signer | undefined; getPrice: () => Promise<BigNumber>; } export declare type RawCommitType = 0 | 1 | 2 | 3 | 4 | 5; export declare type CommitEventData = { user: string; amount: BigNumber; commitType: RawCommitType; appropriateIntervalId: number; payForClaim: boolean; fromAggregateBalance: boolean; mintingFee: string; timestamp: number; blockNumber: number; txHash: string; settlementTokenDecimals: number; }; export declare type UpkeepEventData = { poolAddress: string; data: string; startPrice: BigNumber; endPrice: BigNumber; timestamp: number; blockNumber: number; txHash: string; }; export declare type CommitsExecutedData = { updateIntervalId: number; burningFee: string; timestamp: number; blockNumber: number; txHash: string; }; export declare type SpecificPool = { poolAddress: string; }; declare type PoolWatcherArgs = { nodeUrl: string; chainId: string; commitmentWindowBuffer: number; oraclePriceTransformer?: (lastPrice: BigNumber, currentPrice: BigNumber) => BigNumber; ignoreEvents?: { [eventName: string]: boolean; }; }; export declare type PoolWatcherConstructorArgs = SpecificPool & PoolWatcherArgs; export declare type MultiplePoolWatcherConstructorArgs = { poolAddresses: string[]; } & PoolWatcherArgs; export declare type WatchedPool = { address: string; sdkInstance: Pool; updateInterval: number; keeperInstance: PoolKeeper; lastPriceTimestamp: number; committerInstance: PoolCommitter; frontRunningInterval: number; }; export declare type ExpectedPoolState = { timestamp: number; currentSkew: BigNumber; currentLongBalance: BigNumber; currentLongSupply: BigNumber; currentShortBalance: BigNumber; currentShortSupply: BigNumber; expectedSkew: BigNumber; expectedLongBalance: BigNumber; expectedLongSupply: BigNumber; expectedShortBalance: BigNumber; expectedShortSupply: BigNumber; totalNetPendingLong: BigNumber; totalNetPendingShort: BigNumber; expectedLongTokenPrice: BigNumber; expectedShortTokenPrice: BigNumber; lastOraclePrice: BigNumber; expectedOraclePrice: BigNumber; pendingCommits: TotalPoolCommitmentsBN[]; }; export declare type ExpectedPoolStateWithUpdateIntervalId = ExpectedPoolState & { updateIntervalId: BigNumber; }; export interface PoolWatcherEvents { [EVENT_NAMES.COMMIT]: (data: CommitEventData) => void; [EVENT_NAMES.UPKEEP]: (data: UpkeepEventData) => void; [EVENT_NAMES.COMMITMENT_WINDOW_ENDED]: () => void; [EVENT_NAMES.COMMITMENT_WINDOW_ENDING]: (state: ExpectedPoolStateWithUpdateIntervalId) => void; [EVENT_NAMES.COMMITS_EXECUTED]: (data: CommitsExecutedData) => void; } export interface MultiplePoolWatcherEvents { [EVENT_NAMES.COMMIT]: (data: CommitEventData & SpecificPool) => void; [EVENT_NAMES.UPKEEP]: (data: UpkeepEventData & SpecificPool) => void; [EVENT_NAMES.COMMITMENT_WINDOW_ENDED]: (data: SpecificPool) => void; [EVENT_NAMES.COMMITMENT_WINDOW_ENDING]: (state: ExpectedPoolStateWithUpdateIntervalId & SpecificPool) => void; [EVENT_NAMES.COMMITS_EXECUTED]: (data: CommitsExecutedData & SpecificPool) => void; } export {};