import { ModeBase } from '../../../types';
import { LenderCrossPoolMeta, UserDataForSubAccount } from '../../user-data/utils/types';
export interface EModeAssets {
    /** marketUids eligible as collateral in this mode */
    collateral: string[];
    /** marketUids eligible for borrowing in this mode */
    borrow: string[];
}
export type EModeBlockReason = 'collateral_not_supported' | 'debt_not_supported' | 'health_factor';
export interface EModeResult {
    /** Protocol-agnostic mode identifier (replaces legacy `category`) */
    modeId: number;
    /** @deprecated Use `modeId` */
    category: number;
    label: string;
    /** null means no debt (health is infinite) */
    healthFactor: number | null;
    supportedAssets: EModeAssets;
    /** false if HF <= 1 after switch, user holds incompatible debt, or user has
     *  collateral-enabled assets that are not valid collateral in this mode */
    canSwitch: boolean;
    /** Reason the switch is blocked; absent when canSwitch=true */
    blockReason?: EModeBlockReason;
    /** marketUids of the positions that block the switch */
    blockingAssets?: string[];
}
/**
 * For each available e-mode, compute the hypothetical health factor,
 * list supported assets, and determine if the switch is valid.
 */
export declare function computeEModeAnalysis(subAccount: UserDataForSubAccount, lenderMeta: LenderCrossPoolMeta, eModes: Record<number, ModeBase>): EModeResult[];
export declare const parseHf: (hf: number) => string;
//# sourceMappingURL=index.d.ts.map