ox
Version:
Ethereum Standard Library
28 lines • 1.87 kB
TypeScript
import type { AbiParameter } from 'abitype';
import type { Narrow } from 'abitype';
import type { Error, Filter } from './types.js';
import type { IsStructSignature, Modifier } from './types/signatures.js';
import type { ParseStructs } from './types/structs.js';
import type { ParseAbiParameter as ParseAbiParameter_ } from './types/utils.js';
/**
* Parses human-readable ABI parameter into `AbiParameter`.
*
* @param param - Human-readable ABI parameter
* @returns Parsed `AbiParameter`.
*/
export type ParseAbiParameter<param extends string | readonly string[] | readonly unknown[]> = (param extends string ? param extends '' ? never : string extends param ? AbiParameter : ParseAbiParameter_<param, {
modifier: Modifier;
}> : never) | (param extends readonly string[] ? string[] extends param ? AbiParameter : ParseStructs<param> extends infer structs ? {
[key in keyof param]: param[key] extends string ? IsStructSignature<param[key]> extends true ? never : ParseAbiParameter_<param[key], {
modifier: Modifier;
structs: structs;
}> : never;
} extends infer mapped extends readonly unknown[] ? Filter<mapped, never>[0] extends infer result ? result extends undefined ? never : result : never : never : never : never);
/**
* Parses human-readable ABI parameter into `AbiParameter`.
*
* @param param - Human-readable ABI parameter
* @returns Parsed `AbiParameter`.
*/
export declare function parseAbiParameter<param extends string | readonly string[] | readonly unknown[]>(param: Narrow<param> & ((param extends string ? param extends '' ? Error<'Empty string is not allowed.'> : unknown : never) | (param extends readonly string[] ? param extends readonly [] ? Error<'At least one parameter required.'> : string[] extends param ? unknown : unknown : never))): ParseAbiParameter<param>;
//# sourceMappingURL=parseAbiParameter.d.ts.map