import type { YieldFetcher, YieldResult } from '../types';
/**
 * Minimal shape a vault-registry entry needs to bind an intrinsic-yield
 * fetcher to its share address. Both `LstRegistryEntry` and
 * `SavingsRegistryEntry` are structurally assignable to this.
 */
export interface YieldBindingEntry {
    /** Share-token address (any case). */
    address: string;
    /** The shared intrinsic-yield fetcher this entry's APR comes from. */
    yieldFetcher?: YieldFetcher;
    /** Key inside the fetcher's `YieldResult` to read. */
    yieldKey?: string;
}
export interface ResolveEntryAprResult {
    /** `{ [shareAddressLowercase]: aprPercent }`. Missing keys are `0`,
     *  never `undefined` — parsers don't have to branch. */
    apr: Record<string, number>;
    /** Per-fetcher raw results, so callers can post-compose values that
     *  aren't a plain key lookup (e.g. LST weETH = wstETH APR + bonus). */
    byFetcher: Map<YieldFetcher, YieldResult | undefined>;
}
/**
 * The shared core behind both `lst/yieldBinding` and
 * `savings/yieldBinding`: collect the unique `YieldFetcher` refs across
 * the entries (many entries can point at one fetcher — Maple syrup*,
 * Angle stUSD/stEUR, Sky sUSDS/stUSDS), run each **once** via `safeFetch`
 * (timeouts, logging, no throws), and map every entry's `yieldKey` to its
 * APR.
 *
 * `extraFetchers` forces additional fetchers into the run even when no
 * entry references them by key — used by the LST binding to fetch wstETH
 * as the input to the weETH composition.
 */
export declare const resolveEntryApr: (entries: YieldBindingEntry[], extraFetchers?: YieldFetcher[]) => Promise<ResolveEntryAprResult>;
//# sourceMappingURL=resolveYieldApr.d.ts.map