import { BigNumber } from '@ethersproject/bignumber';
import { BigNumber as OldBigNumber } from '../../../../utils/balancer/bignumber';
import { PhantomStablePoolPairData } from '.';
export declare function _invariant(A: BigNumber, balances: OldBigNumber[]): OldBigNumber;
/**********************************************************************************************
    // outGivenIn token x for y - polynomial equation to solve                                   //
    // ay = amount out to calculate                                                              //
    // by = balance token out                                                                    //
    // y = by - ay                                                                               //
    // D = invariant                               D                     D^(n+1)                 //
    // A = amplifier               y^2 + ( S - ----------  - 1) * y -  ------------- = 0         //
    // n = number of tokens                    (A * n^n)               A * n^2n * P              //
    // S = sum of final balances but y                                                           //
    // P = product of final balances but y                                                       //
    **********************************************************************************************/
export declare function _exactTokenInForTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
/**********************************************************************************************
    // inGivenOut token x for y - polynomial equation to solve                                   //
    // ax = amount in to calculate                                                               //
    // bx = balance token in                                                                     //
    // x = bx + ax                                                                               //
    // D = invariant                               D                     D^(n+1)                 //
    // A = amplifier               x^2 + ( S - ----------  - 1) * x -  ------------- = 0         //
    // n = number of tokens                    (A * n^n)               A * n^2n * P              //
    // S = sum of final balances but x                                                           //
    // P = product of final balances but x                                                       //
    **********************************************************************************************/
export declare function _tokenInForExactTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _tokenInForExactBPTOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _BPTInForExactTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _solveAnalyticalBalance(sum: OldBigNumber, inv: OldBigNumber, A: BigNumber, n_pow_n: OldBigNumber, p: OldBigNumber): OldBigNumber;
export declare function _exactTokenInForBPTOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _exactBPTInForTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _poolDerivatives(A: BigNumber, balances: OldBigNumber[], tokenIndexIn: number, tokenIndexOut: number, is_first_derivative: boolean, wrt_out: boolean): OldBigNumber;
export declare function _poolDerivativesBPT(A: BigNumber, balances: OldBigNumber[], bptSupply: OldBigNumber, tokenIndexIn: number, is_first_derivative: boolean, is_BPT_out: boolean, wrt_out: boolean): OldBigNumber;
export declare function _spotPriceAfterSwapExactTokenInForTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _spotPriceAfterSwapTokenInForExactTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _spotPriceAfterSwapExactTokenInForBPTOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _spotPriceAfterSwapTokenInForExactBPTOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _spotPriceAfterSwapExactBPTInForTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _spotPriceAfterSwapBPTInForExactTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapExactTokenInForTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapTokenInForExactTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapExactTokenInForBPTOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapTokenInForExactBPTOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapBPTInForExactTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapExactBPTInForTokenOut(amount: OldBigNumber, poolPairData: PhantomStablePoolPairData): OldBigNumber;
