import { GetEvmClientFunction } from '../../../types';
import { LenderUserQuery } from '../../../types/lenderTypes';
import { MulticallRpcBatch, PreparedCall, RawRpcCall } from '../../../utils/rpcCall';
export interface PreparedUserDataRpcCalls {
    batches: MulticallRpcBatch[];
    preparedCalls: PreparedCall[];
    queries: LenderUserQuery[];
    rpcCalls: RawRpcCall[];
}
export interface ChainQuery {
    chainId: string;
    providerOptions: ProviderOptions;
    /** query details - if not provided, it will be populated with context vars */
    queries?: LenderUserQuery[];
}
export interface ProviderOptions {
    getEvmClient?: GetEvmClientFunction;
    allowFailure?: boolean;
    batchSize?: number;
    retries?: number;
    logs?: boolean;
}
export interface BaseLendingPosition {
    deposits: string;
    debt: string;
    debtStable: string;
    /**
     * Raw par magnitude of the debt (Dolomite only): the index-scaled principal,
     * stable as interest accrues. Used for dust-free native repay-all via the
     * router's `depositParPayable`.
     */
    debtPar?: string;
    debtShares?: string;
    depositShares?: string;
    depositsUSD: number;
    debtUSD: number;
    debtStableUSD: number;
    collateralEnabled: boolean;
    claimableRewards?: number;
}
export interface BalanceData {
    rewards?: any;
    borrowDiscountedCollateral: number;
    borrowDiscountedCollateralAllActive: number;
    collateral: number;
    collateralAllActive: number;
    deposits: number;
    debt: number;
    adjustedDebt: number;
    nav: number;
    deposits24h: number;
    debt24h: number;
    nav24h: number;
}
export interface AprData {
    apr: number;
    borrowApr: number;
    depositApr: number;
    rewards: any;
    rewardApr: number;
    rewardDepositApr: number;
    rewardBorrowApr: number;
    intrinsicApr: number;
    intrinsicDepositApr: number;
    intrinsicBorrowApr: number;
}
/** Sinlge market config */
export interface UserConfig {
    selectedMode: string;
    id: string;
    /** if defined and false, the user cannot interact
     *  with the market unless whitelisted */
    isWhitelisted?: boolean;
}
export interface BasicReserveResponse {
    chainId: string;
    account: string;
    /** Single asset positions within a lender */
    lendingPositions: {
        [id: string]: {
            [marketUid: string]: BaseLendingPosition;
        };
    };
    /** Totals for account in lender */
    balanceData: {
        [id: string]: BalanceData;
    };
    /** Apr summary for lender in account */
    aprData: {
        [id: string]: AprData;
    };
    /** Configs per sub account - determines e.g. E-Modes */
    userConfigs: {
        [id: string]: UserConfig;
    };
    /** Auxiliary rewards data */
    rewards?: any;
}
//# sourceMappingURL=types.d.ts.map