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 { 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 extends true ? { name: components[key]['name']; } : unknown) & (components[key] extends { components: readonly AbiParameter[]; } ? { components: components[key]['components']; } : unknown)>; }, ', '>})${array}`; } & (IsNarrowable extends true ? { name: name; } : unknown) & (IsNarrowable extends true ? { indexed: indexed; } : unknown)> : `${abiParameter['type']}${abiParameter extends { indexed: true; } ? ' indexed' : ''}${abiParameter['name'] extends infer name extends string ? name extends '' ? '' : ` ${AssertName}` : ''}`; /** * Formats `AbiParameter` to human-readable ABI parameter. * * @param abiParameter - ABI parameter * @returns Human-readable ABI parameter */ export declare function formatAbiParameter(abiParameter: abiParameter): FormatAbiParameter; //# sourceMappingURL=formatAbiParameter.d.ts.map