UNPKG

@tracer-protocol/pools-js

Version:

Javascript library for interacting with Tracer's Perpetual Pools

74 lines (73 loc) 2.58 kB
import { PoolStateHelper as PoolStateHelperTypeChain } from "@tracer-protocol/pool-state-helper/types"; import BigNumber from "bignumber.js"; import { providers as MCProvider } from '@0xsequence/multicall'; import { ethers } from "ethers"; import { IContract, TotalPoolCommitmentsBN } from "../types"; /** * Pool State Helper class constructor inputs */ export interface IPoolStateHelper extends IContract, _PoolStateHelper { } /** * PoolStateHelper constructor props */ export interface _PoolStateHelper { address: string; poolAddress: string; committerAddress: string; } declare type ExpectedPoolState = { longSupply: BigNumber; longBalance: BigNumber; pendingLongTokenBurn: BigNumber; shortSupply: BigNumber; shortBalance: BigNumber; pendingShortTokenBurn: BigNumber; oraclePrice: BigNumber; }; /** * PoolStateHelper class for interacting with on chain PoolStateHelper contracts * The constructor is private so must be instantiated with {@linkcode PoolStateHelper.Create} */ export default class PoolStateHelper { _contract?: PoolStateHelperTypeChain; address: string; poolAddress: string; committerAddress: string; fullCommitPeriod: number; provider: ethers.providers.Provider | ethers.Signer | undefined; multicallProvider: MCProvider.MulticallProvider | ethers.Signer | undefined; /** * @private */ private constructor(); /** * Replacement constructor pattern to support async initialisations * @param tokenINfo {@link IPoolStateHelper | IPoolStateHelper interface props} * @returns a Promise containing an initialised PoolStateHelper class ready to be used */ static Create: (config: IPoolStateHelper) => Promise<PoolStateHelper>; /** * Creates an empty PoolStateHelper that can be used as a default * @returns default constructed poolStateHelper */ static CreateDefault: () => PoolStateHelper; /** * Private initialisation function called in {@link PoolStateHelper.Create} * @private * @param config {@link IPoolStateHelper | IPoolStateHelper interface props} */ private init; /** * Replaces the provider and connects the contract instance * @param provider The new provider to connect to */ connect: (provider: ethers.providers.Provider | ethers.Signer) => void; getExpectedPoolState: (args: { periods: number; }) => Promise<ExpectedPoolState>; getCommitQueue: (args: { periods: number; }) => Promise<TotalPoolCommitmentsBN[]>; } export {};