import type { Abi } from 'abitype';
import type { Narrow } from 'abitype';
import type { Error, Filter } from './types.js';
import type { Signature, Signatures } from './types/signatures.js';
import type { ParseStructs } from './types/structs.js';
import type { ParseSignature } from './types/utils.js';
/**
 * Parses human-readable ABI item (e.g. error, event, function) into `Abi` item.
 *
 * @param signature - Human-readable ABI item
 * @returns Parsed `Abi` item.
 */
export type ParseAbiItem<signature extends string | readonly string[] | readonly unknown[]> = (signature extends string ? string extends signature ? Abi[number] : signature extends Signature<signature> ? ParseSignature<signature> : never : never) | (signature extends readonly string[] ? string[] extends signature ? Abi[number] : signature extends Signatures<signature> ? ParseStructs<signature> extends infer structs ? {
    [key in keyof signature]: ParseSignature<signature[key] extends string ? signature[key] : never, structs>;
} extends infer mapped extends readonly unknown[] ? Filter<mapped, never>[0] extends infer result ? result extends undefined ? never : result : never : never : never : never : never);
/**
 * Parses human-readable ABI item (e.g. error, event, function) into `Abi` item.
 *
 * @param signature - Human-readable ABI item
 * @returns Parsed `Abi` item.
 */
export declare function parseAbiItem<signature extends string | readonly string[] | readonly unknown[]>(signature: Narrow<signature> & ((signature extends string ? string extends signature ? unknown : Signature<signature> : never) | (signature extends readonly string[] ? signature extends readonly [] ? Error<'At least one signature required.'> : string[] extends signature ? unknown : Signatures<signature> : never))): ParseAbiItem<signature>;
//# sourceMappingURL=parseAbiItem.d.ts.map