UNPKG

ox

Version:

Ethereum Standard Library

23 lines 1.85 kB
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