UNPKG

ox

Version:

Ethereum Standard Library

41 lines 1.83 kB
import type { AbiEventParameter, AbiParameter } from 'abitype'; import type { IsNarrowable, Join } from './types.js'; import type { AssertName } from './types/signatures.js'; /** * Formats `AbiParameter` to human-readable ABI parameter. * * @param abiParameter - ABI parameter * @returns Human-readable ABI parameter */ export type FormatAbiParameter<abiParameter extends AbiParameter | AbiEventParameter> = abiParameter extends { name?: infer name extends string; type: `tuple${infer array}`; components: infer components extends readonly AbiParameter[]; indexed?: infer indexed extends boolean; } ? FormatAbiParameter<{ type: `(${Join<{ [key in keyof components]: FormatAbiParameter<{ type: components[key]['type']; } & (IsNarrowable<components[key]['name'], string> extends true ? { name: components[key]['name']; } : unknown) & (components[key] extends { components: readonly AbiParameter[]; } ? { components: components[key]['components']; } : unknown)>; }, ', '>})${array}`; } & (IsNarrowable<name, string> extends true ? { name: name; } : unknown) & (IsNarrowable<indexed, boolean> extends true ? { indexed: indexed; } : unknown)> : `${abiParameter['type']}${abiParameter extends { indexed: true; } ? ' indexed' : ''}${abiParameter['name'] extends infer name extends string ? name extends '' ? '' : ` ${AssertName<name>}` : ''}`; /** * Formats `AbiParameter` to human-readable ABI parameter. * * @param abiParameter - ABI parameter * @returns Human-readable ABI parameter */ export declare function formatAbiParameter<const abiParameter extends AbiParameter | AbiEventParameter>(abiParameter: abiParameter): FormatAbiParameter<abiParameter>; //# sourceMappingURL=formatAbiParameter.d.ts.map