import { PersonalPositionLayout } from '@raydium-io/raydium-sdk-v2/lib';
import { PublicKey } from '@solana/web3.js';
import BN from 'bn.js';
import Decimal from 'decimal.js';
export type ReturnTypeGetTickPrice = {
    tick: number;
    price: Decimal;
    tickSqrtPriceX64: BN;
};
export type RaydiumPersonalPositionInfo = ReturnType<typeof PersonalPositionLayout.decode>;
export declare function decodeRaydiumPersonalPosition(data: Buffer): RaydiumPersonalPositionInfo;
export declare function i32ToBytes(num: number): Uint8Array;
export declare function getPdaProtocolPositionAddress(programId: PublicKey, poolId: PublicKey, tickLower: number, tickUpper: number): {
    publicKey: PublicKey;
    nonce: number;
};
export declare class RaydiumSqrtPriceMath {
    static sqrtPriceX64ToPrice(sqrtPriceX64: BN, decimalsA: number, decimalsB: number): Decimal;
    static priceToSqrtPriceX64(price: Decimal, decimalsA: number, decimalsB: number): BN;
    static getSqrtPriceX64FromTick(tick: number): BN;
    static getTickFromPrice(price: Decimal, decimalsA: number, decimalsB: number): number;
    static getTickFromSqrtPriceX64(sqrtPriceX64: BN): number;
}
export declare class RaydiumTickMath {
    static getTickWithPriceAndTickspacing(price: Decimal, tickSpacing: number, mintDecimalsA: number, mintDecimalsB: number): number;
    static roundPriceWithTickspacing(price: Decimal, tickSpacing: number, mintDecimalsA: number, mintDecimalsB: number): Decimal;
}
export declare class RaydiumLiquidityMath {
    static addDelta(x: BN, y: BN): BN;
    static getTokenAmountAFromLiquidity(sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, roundUp: boolean): BN;
    static getTokenAmountBFromLiquidity(sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, roundUp: boolean): BN;
    static getLiquidityFromTokenAmountA(sqrtPriceX64A: BN, sqrtPriceX64B: BN, amountA: BN, _roundUp: boolean): BN;
    static getLiquidityFromTokenAmountB(sqrtPriceX64A: BN, sqrtPriceX64B: BN, amountB: BN): BN;
    static getLiquidityFromTokenAmounts(sqrtPriceCurrentX64: BN, sqrtPriceX64A: BN, sqrtPriceX64B: BN, amountA: BN, amountB: BN): BN;
    static getAmountsFromLiquidity(sqrtPriceCurrentX64: BN, sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, roundUp: boolean): {
        amountA: BN;
        amountB: BN;
    };
    static getAmountsFromLiquidityWithSlippage(sqrtPriceCurrentX64: BN, sqrtPriceX64A: BN, sqrtPriceX64B: BN, liquidity: BN, amountMax: boolean, roundUp: boolean, amountSlippage: number): {
        amountSlippageA: BN;
        amountSlippageB: BN;
    };
}
export declare class RaydiumTickUtils {
    static getTickArrayStartIndexByTick(tickIndex: number, tickSpacing: number): number;
}
//# sourceMappingURL=raydiumSdkCompat.d.ts.map