import { LenderAssetReward } from '../types';
/** Shape returned by reward fetchers — matches lenderRewards in YieldDataWithTimestamp */
export type RewardResult = {
    [chainId: string]: {
        [lender: string]: {
            [asset: string]: LenderAssetReward;
        };
    };
};
/** Unified interface for reward fetchers (parallel to YieldFetcher for intrinsic yields) */
export interface RewardFetcher {
    label: string;
    fetch: () => Promise<RewardResult>;
}
export interface MerklToken {
    address: string;
    symbol: string;
    decimals: number;
    price: number | null;
}
export interface MerklAprBreakdown {
    identifier: string;
    type: string;
    value: number;
    distributionType: string;
}
export interface MerklAprRecord {
    cumulated: number;
    breakdowns: MerklAprBreakdown[];
}
export interface MerklRewardBreakdown {
    token: MerklToken;
    amount: string;
    value: number;
    distributionType: string;
}
export interface MerklRewardsRecord {
    total: number;
    breakdowns: MerklRewardBreakdown[];
}
export interface MerklOpportunity {
    chainId: number;
    identifier: string;
    name: string;
    status: string;
    /** "LEND" | "BORROW" | "POOL" | "HOLD" | "DROP" */
    action: string;
    /** APR as a percentage (3.25 = 3.25%) */
    apr: number;
    tvl: number;
    dailyRewards: number;
    tokens: MerklToken[];
    explorerAddress?: string;
    /** e.g. "https://app.aave.com/reserve-overview/?underlyingAsset=0x..." */
    depositUrl?: string;
    aprRecord: MerklAprRecord | null;
    rewardsRecord: MerklRewardsRecord | null;
    type: string;
    chain: {
        endOfDisputePeriod: number;
        explorers: any[];
        icon: string;
        id: number;
        liveCampaigns: number;
        name: string;
    };
}
//# sourceMappingURL=types.d.ts.map