import { Call } from '../../../utils/multicall';
/**
 * All 256 EVC sub-account indexes (0-255).
 * Kept for backward compatibility but no longer used as default.
 */
export declare const ALL_EULER_SUB_ACCOUNT_INDEXES: number[];
/**
 * Active sub-account indexes for an owner (true set; for the next-account
 * route). Falls back to [0] when the API is unsupported or fails.
 */
export declare function fetchEulerSubAccountIndexes(chainId: string, owner: string): Promise<number[]>;
/**
 * Synchronous read of previously resolved sub-account indexes.
 * Returns `undefined` when no prior build has populated the store.
 */
export declare function getResolvedEulerSubAccountIndexes(chainId: string, account: string): number[] | undefined;
/**
 * Derives a sub-account address from an owner address and index (0-255).
 * Uses the EVC formula: `address(uint160(owner) ^ uint160(accountId))`.
 * Since accountId is uint8, only the last byte is affected via XOR.
 */
declare function getSubAccountAddress(owner: string, index: number): string;
/**
 * Extracts the sub-account index from a sub-account address given its owner.
 * Reverses the EVC formula: `index = lastByte(subAccountAddr) ^ lastByte(owner)`.
 */
declare function getSubAccountIndex(addr: string, owner?: string): number;
/**
 * Resolve the sorted, deduplicated list of sub-account indexes to query.
 *
 * Always includes index 0 (the owner's own address, since owner ^ 0 = owner)
 * in addition to the requested set.
 */
export declare function resolveSubAccountIndexes(_account: string, subAccountIndexes: number[]): number[];
/**
 * Build multicall calls for fetching Euler V2 user data.
 *
 * For each sub-account index in the resolved set, creates one
 * `getAccountEnabledVaultsInfo(evc, subAccountAddr)` call
 * via the AccountLens contract.
 *
 * When no `subAccountIndexes` are provided, discovers active sub-accounts via
 * the Euler Data API; on unsupported chains / API failure it scans all 256
 * indexes on-chain (empties are dropped by the parser).
 *
 * @param subAccountIndexes - Numeric sub-account indexes to fetch.
 *   When undefined, resolved via {@link resolveEulerBuildIndexes}.
 *   The owner's native index is always included automatically.
 *   Pass a narrower set (e.g. [0]) for simulations where only one account is needed.
 */
export declare const buildEulerUserCall: (chainId: string, lender: string, account: string, subAccountIndexes?: number[]) => Promise<Call[]>;
export { getSubAccountAddress, getSubAccountIndex };
//# sourceMappingURL=userCallBuild.d.ts.map