import { BigNumber } from '@ethersproject/bignumber'; import { PoolBase, PoolTypes, SubgraphPoolBase, SubgraphToken, SwapTypes } from '../../../../types/balancer'; import { BigNumber as OldBigNumber } from '../../../../utils/balancer/bignumber'; import { StablePoolPairData } from '../stablePool'; export declare enum PairTypes { BptToToken = 0, TokenToBpt = 1, TokenToToken = 2 } export declare type PhantomStablePoolToken = Pick; export declare type MetaStablePoolPairData = StablePoolPairData & { tokenInPriceRate: BigNumber; tokenOutPriceRate: BigNumber; }; export declare type PhantomStablePoolPairData = MetaStablePoolPairData & { pairType: PairTypes; bptIndex: number; virtualBptSupply: BigNumber; }; export declare class PhantomStablePool implements PoolBase { poolType: PoolTypes; id: string; address: string; amp: BigNumber; swapFee: BigNumber; totalShares: BigNumber; tokens: PhantomStablePoolToken[]; tokensList: string[]; ALMOST_ONE: BigNumber; static AMP_DECIMALS: number; static fromPool(pool: SubgraphPoolBase): PhantomStablePool; static removeBPT(poolPairData: PhantomStablePoolPairData): PhantomStablePoolPairData; constructor(id: string, address: string, amp: string, swapFee: string, totalShares: string, tokens: PhantomStablePoolToken[], tokensList: string[]); parsePoolPairData(tokenIn: string, tokenOut: string): PhantomStablePoolPairData; getNormalizedLiquidity(poolPairData: PhantomStablePoolPairData): OldBigNumber; getLimitAmountSwap(poolPairData: PhantomStablePoolPairData, swapType: SwapTypes): OldBigNumber; updateTokenBalanceForPool(token: string, newBalance: BigNumber): void; updateTotalShares(newTotalShares: BigNumber): void; _exactTokenInForTokenOut(poolPairData: PhantomStablePoolPairData, amount: OldBigNumber): OldBigNumber; _tokenInForExactTokenOut(poolPairData: PhantomStablePoolPairData, amount: OldBigNumber): OldBigNumber; /** * _calcTokensOutGivenExactBptIn * @param _bptAmountIn EVM scale. * @returns EVM scale. */ _calcTokensOutGivenExactBptIn(_bptAmountIn: BigNumber): BigNumber[]; /** * _calcBptOutGivenExactTokensIn * @param _amountsIn EVM Scale * @returns EVM Scale */ _calcBptOutGivenExactTokensIn(_amountsIn: BigNumber[]): BigNumber; _spotPriceAfterSwapExactTokenInForTokenOut(poolPairData: PhantomStablePoolPairData, amount: OldBigNumber): OldBigNumber; _spotPriceExactTokenInForTokenOut(poolPairData: PhantomStablePoolPairData): OldBigNumber; _spotPriceAfterSwapTokenInForExactTokenOut(poolPairData: PhantomStablePoolPairData, amount: OldBigNumber): OldBigNumber; _derivativeSpotPriceAfterSwapExactTokenInForTokenOut(poolPairData: PhantomStablePoolPairData, amount: OldBigNumber): OldBigNumber; _derivativeSpotPriceAfterSwapTokenInForExactTokenOut(poolPairData: PhantomStablePoolPairData, amount: OldBigNumber): OldBigNumber; subtractSwapFeeAmount(amount: BigNumber, swapFee: BigNumber): BigNumber; addSwapFeeAmount(amount: BigNumber, swapFee: BigNumber): BigNumber; }