import { LenderCrossPoolMeta, UserData } from './types';
/**
 * Euler sub-account position payload.
 * Similar to InitUserReserveResponse but keyed by numeric sub-account index
 * (e.g. "0", "1", "34") and using controller vault as the "mode".
 */
export interface EulerUserReserveResponse {
    chainId: string;
    lendingPositions: {
        [subAccountIndex: string]: {
            [marketUid: string]: {
                marketUid: string;
                underlying: string;
                deposits: string;
                debt: string;
                debtStable: string;
                depositsUSD: number;
                debtUSD: number;
                debtStableUSD: number;
                depositsUSDOracle: number;
                debtUSDOracle: number;
                debtStableUSDOracle: number;
                collateralEnabled: boolean;
                isAllowed: boolean;
            };
        };
    };
    /** Controller vault per sub-account index — serves as the "mode" for config lookups */
    controllers: {
        [subAccountIndex: string]: string;
    };
    account: string;
}
/**
 * Aggregates Euler V2 user data across sub-accounts into the standard UserData format.
 *
 * Sub-accounts are identified by their numeric index (e.g. "0", "1", "34"),
 * NOT by derived hex addresses.
 *
 * Euler's config model differs from INIT:
 * - INIT uses numeric mode IDs per position
 * - Euler uses the controller vault address as the config key
 *   (each vault's config maps counterparty vault → LTV params)
 *
 * For each sub-account, the controller vault address determines which
 * config entry to use when looking up collateral/borrow factors.
 */
export declare function createEulerMultiAccountTypeUserState(payload: EulerUserReserveResponse, lenderData: LenderCrossPoolMeta, histData: {
    [subAccountIndex: string]: {
        totalDebt24h: number;
        totalDeposits24h: number;
    };
}): UserData;
//# sourceMappingURL=createEulerMultiAccountTypeUserState.d.ts.map