import { Side } from '../config';
import { IGlobalLiquidityPosition, IPriceState, IPriceVertexBigInt, IState } from '../types';
export interface IMoveStep {
    side: Side;
    sizeLeft: any;
    indexPriceX96: bigint;
    basisIndexPriceX96: bigint;
    improveBalance: boolean;
    from: IPriceVertexBigInt;
    current: IPriceVertexBigInt;
    to: IPriceVertexBigInt;
}
export interface UpdatePriceStateParameter {
    side: Side;
    sizeDelta: bigint;
    indexPriceX96: bigint;
    liquidationVertexIndex: number;
    liquidation: boolean;
}
export interface IPriceConfig {
    maxPriceImpactLiquidity: bigint;
    liquidationVertexIndex: number;
    vertices: {
        balanceRate: number;
        premiumRate: number;
    }[];
}
export declare const VERTEX_NUM = 10;
export declare const LATEST_VERTEX: number;
export declare const VERTEX_BASIS_POINT_DIVISOR = 100000000;
export declare const Q96: bigint;
export declare const Q152: bigint;
export declare class PriceUtil {
    static calculateMarketPrice(sizeDelta: string, globalLiquidityPosition: IGlobalLiquidityPosition, priceState: IPriceState, side: Side, indexPriceX96: string, baseDecimal: number, quoteDecimal?: number): string;
    static updatePriceState(state: any, priceConfig: any, parameter: UpdatePriceStateParameter): 0n | {
        tradePriceX96: any;
        priceStateCache: any;
        globalLiquidityPositionCache: any;
    };
    private static _updatePriceState;
    private static _calculatePriceVertex;
    static changePriceVertex(_state: IState, _priceConfig: IPriceConfig, _indexPriceX96: bigint, _startExclusive: number, _endInclusive: number): {
        priceVertices: any;
    };
    private static _changePriceVertex;
    static simulateMove(step: IMoveStep): {
        reached: boolean;
        sizeUsed: any;
        tradePriceX96: bigint;
        premiumRateAfterX96: any;
    };
    private static calculateReachedAndSizeUsed;
    private static calculatePremiumRateAfterX96;
    private static calculateAX248AndBX96;
}
