/// <reference types="bn.js" />
import { Order, PositionDirection, StateAccount } from '../types';
import { BN } from '../isomorphic/anchor';
import { PerpMarketAccount } from '../types';
import { MMOraclePriceData } from '../oracles/types';
export declare function isAuctionComplete(order: Order, slot: number): boolean;
export declare function isFallbackAvailableLiquiditySource(order: Order, mmOraclePriceData: MMOraclePriceData, slot: number, state: StateAccount, market: PerpMarketAccount, isLiquidation?: boolean): boolean;
/**
 *
 * @param order
 * @param slot
 * @param oraclePrice Use MMOraclePriceData source for perp orders, OraclePriceData for spot
 * @returns BN
 */
export declare function getAuctionPrice(order: Order, slot: number, oraclePrice: BN): BN;
export declare function getAuctionPriceForFixedAuction(order: Order, slot: number): BN;
/**
 *
 * @param order
 * @param slot
 * @param oraclePrice Use MMOraclePriceData source for perp orders, OraclePriceData for spot
 * @returns
 */
export declare function getAuctionPriceForOracleOffsetAuction(order: Order, slot: number, oraclePrice: BN): BN;
export declare function deriveOracleAuctionParams({ direction, oraclePrice, auctionStartPrice, auctionEndPrice, limitPrice, auctionPriceCaps, }: {
    direction: PositionDirection;
    oraclePrice: BN;
    auctionStartPrice: BN;
    auctionEndPrice: BN;
    limitPrice: BN;
    auctionPriceCaps?: {
        min: BN;
        max: BN;
    };
}): {
    auctionStartPrice: BN;
    auctionEndPrice: BN;
    oraclePriceOffset: number;
};
/**
 *
 * @param params Use OraclePriceData.price for oraclePrice param
 * @returns
 */
export declare function getTriggerAuctionStartPrice(params: {
    perpMarket: PerpMarketAccount;
    direction: PositionDirection;
    oraclePrice: BN;
    limitPrice?: BN;
}): BN;
/**
 *
 * @param params Use OraclePriceData.price for oraclePrice param and MMOraclePriceData.price for mmOraclePrice
 * @returns
 */
export declare function getTriggerAuctionStartAndExecutionPrice(params: {
    perpMarket: PerpMarketAccount;
    direction: PositionDirection;
    oraclePrice: BN;
    mmOraclePrice: BN;
    limitPrice?: BN;
}): {
    startPrice: BN;
    executionPrice: BN;
};
