import type { MulticallRetryFunction } from '../../../types';
import type { LstWithdrawalKnownIds } from './readers';
import type { LstWithdrawalRegistryEntry } from './registry';
import type { LstWithdrawalRequestsByLst } from './types';
/** Optional knobs for the orchestrator. */
export interface LstWithdrawalFetchOptions {
    /** Per-LST caller-supplied IDs. Required for protocols whose
     *  readers are `callerSupplied`-shaped (Mantle, Puffer, TruFin) —
     *  those readers return `[]` when no IDs are supplied. Ignored by
     *  protocols with on-chain enumeration. Keyed by lowercased LST
     *  share-token address. */
    knownIds?: LstWithdrawalKnownIds;
    /** Caller-supplied registry entries appended to the static registry.
     *  Lets the orchestrator read withdrawal requests for vaults not in
     *  the hardcoded LST allowlist — e.g. an arbitrary ERC-7540 vault
     *  surfaced by the public-data lookup. Each entry needs at least
     *  `{ lst, brand, symbol, reader }`; the `erc7540` reader needs only
     *  the address. De-duped against the static registry (static wins). */
    extraEntries?: LstWithdrawalRegistryEntry[];
}
/**
 * Fetch a user's pending LST withdrawal requests across all LSTs on
 * a chain.
 *
 * One reader-`fetch` invocation per registered LST, all running in
 * parallel via `Promise.all`. Per-reader failures (RPC error,
 * malformed response, unsupported protocol) are logged and produce
 * an empty array — they don't sink the whole call.
 *
 * Returns a map keyed by lowercased LST share-token address.
 * Empty-array entries are kept so callers can render "no pending
 * requests" UX uniformly.
 *
 * For protocols with no user-keyed on-chain storage and no public
 * subgraph (Mantle mETH, Puffer pufETH, TruFin TruMATIC), pass
 * `options.knownIds[lstAddress]` — the list of withdrawal IDs the
 * caller captured at request time. See `INDEXING_STRATEGIES.md`
 * "Caller-supplied IDs" section.
 *
 * Note: the orchestrator runs N parallel multicalls (one per LST,
 * possibly with internal sub-stages). Per-chain consolidation is not
 * yet implemented — see GAPS.md section F for the optimization
 * trade-off.
 */
export declare const getLstWithdrawalRequests: (user: string, chainId: string, multicallRetry: MulticallRetryFunction, options?: LstWithdrawalFetchOptions) => Promise<LstWithdrawalRequestsByLst>;
/**
 * Alias for {@link getLstWithdrawalRequests}. The orchestrator is no
 * longer LST-specific — with `options.extraEntries` it reads withdrawal
 * requests for any vault (e.g. arbitrary ERC-7540) — so this name reads
 * better at non-LST call sites. Same signature, same behaviour.
 */
export declare const getVaultWithdrawalRequests: (user: string, chainId: string, multicallRetry: MulticallRetryFunction, options?: LstWithdrawalFetchOptions) => Promise<LstWithdrawalRequestsByLst>;
//# sourceMappingURL=fetchPublic.d.ts.map