import { type MorphoTypeVaultEntry } from '@1delta/data-sdk';
import { GenericTokenList, MulticallRetryFunction } from '../../types';
import { MorphoVaults } from './types';
export interface FetchListaVaultsFromChainOptions {
    /**
     * Override the registry — `[{ vault, underlying, name? }]`. Lets fork
     * tests point at a specific vault list without populating the global
     * registry.
     */
    vaultsOverride?: MorphoTypeVaultEntry[];
}
/**
 * On-chain Lista DAO (Moolah-fork) vault fetcher. Same output shape as
 * `fetchMorphoVaultsFromChain`, different read path:
 *
 *  - Phase 1 multicall: `name / symbol / decimals / totalAssets /
 *    totalSupply / fee / feeRecipient / CURATOR` per vault. The role hash
 *    returned by `CURATOR()` is contract-defined, not derivable, so it
 *    must be read on-chain.
 *  - Phase 2 multicall: `getRoleMember(CURATOR_ROLE, 0)` per vault →
 *    surfaces the curator address (Moolah uses
 *    `AccessControlEnumerable`, no direct `curator()` getter).
 *
 * `owner` / `guardian` are surfaced as `undefined` (Moolah uses
 * `DEFAULT_ADMIN_ROLE` for admin and has no guardian role; left out to
 * avoid extra round-trips). `timelock` is `0` — no timelock pattern in
 * Moolah.
 *
 * APR is computed via an allocation walk: each vault's `withdrawQueue`
 * enumerates the markets it lends to; `MOOLAH.position(id, vault)` gives
 * the vault's supply shares per market; the Lista lens supplies each
 * market's supply APY + share/asset totals. The vault `depositRate` is the
 * allocation-weighted market supply APR over `totalAssets` (idle assets
 * earn nothing), net of the vault performance `fee`. If the Moolah core
 * address or lens is missing for the chain, APR falls back to `0`.
 */
export declare const fetchListaVaultsFromChain: (chainId: string, multicallRetry: MulticallRetryFunction, prices?: {
    [asset: string]: number;
}, tokenList?: GenericTokenList, opts?: FetchListaVaultsFromChainOptions) => Promise<MorphoVaults>;
//# sourceMappingURL=fetchListaFromChain.d.ts.map