import { Interface } from '@ethersproject/abi'; import BigNumber from 'bignumber.js'; import { Logger } from 'log4js'; import { Address, Log } from '../../../types'; import { StatefulEventSubscriber } from '../../../stateful-event-subscriber'; import { DeepReadonly } from 'ts-essentials'; import { IDexHelper } from '../../../dex-helper'; export interface PoolState { A: BigNumber; fee: BigNumber; admin_fee: BigNumber; supply: BigNumber; balances: BigNumber[]; } export declare abstract class CurvePool extends StatefulEventSubscriber { parentName: string; protected dexHelper: IDexHelper; pool: string; address: Address; tokenAddress: Address; protected trackCoins: boolean; protected abi: any; N_COINS: number; PRECISION_MUL: BigNumber[]; USE_LENDING: boolean[]; COINS: Address[]; protected FEE_DENOMINATOR: BigNumber; protected LENDING_PRECISION: BigNumber; protected PRECISION: BigNumber; handlers: { [event: string]: (event: any, state: PoolState, log: Log) => PoolState; }; poolIface: Interface; decoder: (log: Log) => any; constructor(parentName: string, dexHelper: IDexHelper, logger: Logger, pool: string, address: Address, tokenAddress: Address, trackCoins: boolean, abi: any, N_COINS: number, PRECISION_MUL: BigNumber[], USE_LENDING: boolean[], COINS: Address[]); processLog(state: DeepReadonly, log: Readonly): DeepReadonly | null; setup(blockNumber: number, poolState?: PoolState | null): Promise; protected getRates(): BigNumber[]; generateState(blockNumber?: number | 'latest'): Promise>; handleNewParameters(event: any, state: PoolState, log: Log): PoolState; handleRemoveLiquidity(event: any, state: PoolState, log: Log): PoolState; handleRemoveLiquidityImbalances(event: any, state: PoolState, log: Log): PoolState; exchange(i: number, j: number, dx: BigNumber, state: PoolState): BigNumber; handleTokenExchange(event: any, state: PoolState, log: Log): PoolState; add_liquidity(amounts: BigNumber[], state: PoolState): BigNumber; handleAddLiquidity(event: any, state: PoolState, log: Log): PoolState; _get_dy_underlying(i: number, j: number, dx: BigNumber, A: BigNumber, fee: BigNumber, balances: BigNumber[], rates: BigNumber[], usefee?: boolean): BigNumber; get_dy_underlying(i: number, j: number, dx: BigNumber, state: Readonly): BigNumber; _get_dy(i: number, j: number, dx: BigNumber, A: BigNumber, fee: BigNumber, balances: BigNumber[], rates: BigNumber[], usefee?: boolean): BigNumber; get_virtual_price(state: PoolState): BigNumber; get_dy(i: number, j: number, dx: BigNumber, state: Readonly): BigNumber; get_D(xp: BigNumber[], amp: BigNumber): BigNumber; get_y(i: number, j: number, x: BigNumber, xp: BigNumber[], A: BigNumber): BigNumber; get_D_mem(rates: BigNumber[], balances: BigNumber[], amp: BigNumber): BigNumber; protected _xp(rates: BigNumber[], balances: BigNumber[]): BigNumber[]; protected _xp_mem(rates: BigNumber[], balances: BigNumber[]): BigNumber[]; }