import { BigNumber } from '@ethersproject/bignumber';
import { StablePoolPairData } from '.';
import { BigNumber as OldBigNumber } from '../../../../utils/balancer/bignumber';
/**********************************************************************************************
    // invariant                                                                                 //
    // D = invariant to compute                                                                  //
    // A = amplifier                n * D^2 + A * n^n * S * (n^n * P / D^(n−1))                  //
    // S = sum of balances         ____________________________________________                  //
    // P = product of balances    (n+1) * D + ( A * n^n − 1)* (n^n * P / D^(n−1))                //
    // n = number of tokens                                                                      //
    **********************************************************************************************/
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: StablePoolPairData): 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: StablePoolPairData): OldBigNumber;
export declare function _solveAnalyticalBalance(sum: OldBigNumber, inv: OldBigNumber, A: BigNumber, n_pow_n: OldBigNumber, p: OldBigNumber): OldBigNumber;
export declare function _spotPriceAfterSwapExactTokenInForTokenOut(amount: OldBigNumber, poolPairData: StablePoolPairData): OldBigNumber;
export declare function _spotPriceAfterSwapTokenInForExactTokenOut(amount: OldBigNumber, poolPairData: StablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapExactTokenInForTokenOut(amount: OldBigNumber, poolPairData: StablePoolPairData): OldBigNumber;
export declare function _derivativeSpotPriceAfterSwapTokenInForExactTokenOut(amount: OldBigNumber, poolPairData: StablePoolPairData): OldBigNumber;
