import { PublicKey } from '@solana/web3.js';
import { TokenIndex } from './accounts/bank';
import { Group } from './accounts/group';
import { MangoAccount } from './accounts/mangoAccount';
import { MangoClient } from './client';
export interface LiqorPriceImpact {
    Coin: {
        val: string;
        highlight: boolean;
    };
    'Oracle Price': {
        val: number;
        highlight: boolean;
    };
    'Jup Price': {
        val: number;
        highlight: boolean;
    };
    'Future Price': {
        val: number;
        highlight: boolean;
    };
    'V4 Liq Fee': {
        val: number;
        highlight: boolean;
    };
    Liabs: {
        val: number;
        highlight: boolean;
    };
    'Liabs Slippage': {
        val: number;
        highlight: boolean;
    };
    Assets: {
        val: number;
        highlight: boolean;
    };
    'Assets Slippage': {
        val: number;
        highlight: boolean;
    };
}
export interface PerpPositionsToBeLiquidated {
    Market: {
        val: string;
        highlight: boolean;
    };
    Price: {
        val: number;
        highlight: boolean;
    };
    'Future Price': {
        val: number;
        highlight: boolean;
    };
    'Notional Position': {
        val: number;
        highlight: boolean;
    };
}
export interface AccountEquity {
    Account: {
        val: PublicKey;
        highlight: boolean;
    };
    Equity: {
        val: number;
        highlight: boolean;
    };
}
export interface LiquidationBatches {
    start: number;
    startAssets: number;
    prev: number;
    prevAssets: number;
    largestBatchQuoteUi: number;
}
export interface Risk {
    assetRally: {
        title: string;
        data: LiqorPriceImpact[];
    };
    assetDrop: {
        title: string;
        data: LiqorPriceImpact[];
    };
    usdcDepeg: {
        title: string;
        data: LiqorPriceImpact[];
    };
    usdtDepeg: {
        title: string;
        data: LiqorPriceImpact[];
    };
    perpRally: {
        title: string;
        data: PerpPositionsToBeLiquidated[];
    };
    perpDrop: {
        title: string;
        data: PerpPositionsToBeLiquidated[];
    };
    marketMakerEquity: {
        title: string;
        data: AccountEquity[];
    };
    liqorEquity: {
        title: string;
        data: AccountEquity[];
    };
}
export type PriceImpact = {
    symbol: string;
    side: 'bid' | 'ask';
    target_amount: number;
    avg_price_impact_percent: number;
    min_price_impact_percent: number;
    max_price_impact_percent: number;
    p90: number;
    p95: number;
};
/**
 * Returns price impact in bps i.e. 0 to 10,000
 * returns -1 if data is missing
 */
export declare function computePriceImpactOnJup(pis: PriceImpact[], usdcAmount: number, tokenName: string): number;
export declare function getOnChainPriceForMints(mints: string[]): Promise<number[]>;
export declare function getPriceImpactForLiqor(group: Group, pis: PriceImpact[], mangoAccounts: MangoAccount[]): Promise<LiqorPriceImpact[]>;
export declare function getPerpPositionsToBeLiquidated(group: Group, mangoAccounts: MangoAccount[]): Promise<PerpPositionsToBeLiquidated[]>;
export declare function getEquityForMangoAccounts(client: MangoClient, group: Group, mangoAccountPks: PublicKey[], allMangoAccounts: MangoAccount[]): Promise<AccountEquity[]>;
export declare function findLargestAssetBatchUi(pisForLiqor: LiqorPriceImpact[][], coin: string, startFromChange?: number, maxChange?: number, stepSize?: number): [number, number, LiquidationBatches[]];
export declare function buildGroupGrid(group: Group, allMangoAccounts: any, stepSize?: number): Promise<LiqorPriceImpact[][]>;
export declare function getLiquidationBatches(client: MangoClient, group: Group): Promise<{
    token: TokenIndex;
    liquidationPoints: LiquidationBatches[];
}[]>;
export declare function getRiskStats(client: MangoClient, group: Group, change?: number): Promise<Risk>;
