import type { MulticallRetryFunction } from '../types';
/**
 * Vault interface family, detected via ERC-165 `supportsInterface`.
 *
 *  - `erc4626`  — plain synchronous tokenized vault (the default; most
 *     vaults don't implement ERC-165 at all, which we treat as 4626).
 *  - `erc7540`  — asynchronous deposit and/or redeem (request → claim).
 *  - `erc7575`  — multi-asset vault (share token split from entrypoints)
 *     that is NOT also 7540.
 */
export type InterfaceKind = 'erc4626' | 'erc7540' | 'erc7575';
/**
 * ERC-165 interface IDs, verified against EIP-7540 / EIP-7575:
 *  - `0xe3bc4e65` — ERC-7540 operator methods (implemented by ALL 7540
 *    vaults, async-deposit and async-redeem alike). Best single probe
 *    for "is this a 7540 vault".
 *  - `0x2f0a18c5` — ERC-7575 interface. All 7540 vaults also return true
 *    here, so 7575-but-not-7540 is the pure multi-asset (sync) case.
 */
export declare const INTERFACE_IDS: {
    readonly erc7540Operator: "0xe3bc4e65";
    readonly erc7575: "0x2f0a18c5";
};
/**
 * Classify each vault address by interface family using two ERC-165
 * probes per vault (`supportsInterface(0xe3bc4e65)` for 7540,
 * `supportsInterface(0x2f0a18c5)` for 7575). Failures / reverts (a vault
 * that doesn't implement ERC-165) fall back to `erc4626`.
 *
 * Returns a map keyed by lowercased address. Pure read — one multicall.
 */
export declare const detectInterfaceKinds: (addresses: string[], chainId: string, multicallRetry: MulticallRetryFunction) => Promise<Record<string, InterfaceKind>>;
//# sourceMappingURL=interfaceKind.d.ts.map