import type { AbiParameter } from '../abi.js'; import type { Narrow } from '../narrow.js'; import type { Error, Filter } from '../types.js'; import type { IsStructSignature, Modifier } from './types/signatures.js'; import type { ParseStructs } from './types/structs.js'; import type { SplitParameters } from './types/utils.js'; import type { ParseAbiParameters as ParseAbiParameters_ } from './types/utils.js'; /** * Parses human-readable ABI parameters into {@link AbiParameter}s * * @param params - Human-readable ABI parameters * @returns Parsed {@link AbiParameter}s * * @deprecated Human-readable ABI utilities are moving to Ox. * Install [`ox`](https://oxlib.sh) and use [`AbiParameters.from.ReturnType`](https://oxlib.sh/api/AbiParameters/from#return-type) instead: * `import { AbiParameters } from 'ox'`. * * @example * type Result = ParseAbiParameters('address from, address to, uint256 amount') * // ^? type Result: [{ type: "address"; name: "from"; }, { type: "address";... * * @example * type Result = ParseAbiParameters< * // ^? type Result: [{ type: "tuple"; components: [{ type: "string"; name:... * ['Baz bar', 'struct Baz { string name; }'] * > */ export type ParseAbiParameters = (params extends string ? params extends '' ? never : string extends params ? readonly AbiParameter[] : ParseAbiParameters_, { modifier: Modifier; }> : never) | (params extends readonly string[] ? string[] extends params ? AbiParameter : ParseStructs extends infer structs ? { [key in keyof params]: params[key] extends string ? IsStructSignature extends true ? never : ParseAbiParameters_, { modifier: Modifier; structs: structs; }> : never; } extends infer mapped extends readonly unknown[] ? Filter extends readonly [...infer content] ? content['length'] extends 0 ? never : DeepFlatten : never : never : never : never); /** * Flatten all members of {@link T} * * @param T - List of items to flatten * @param Acc - The accumulator used while recursing * @returns The flattened array * * @example * type Result = DeepFlatten<[['a', 'b'], [['c']]]> * // ^? type Result = ['a', 'b', 'c'] */ type DeepFlatten = T extends readonly [infer head, ...infer tail] ? tail extends undefined ? never : head extends readonly unknown[] ? DeepFlatten]> : DeepFlatten : Acc; /** * Parses human-readable ABI parameters into {@link AbiParameter}s * * @param params - Human-readable ABI parameters * @returns Parsed {@link AbiParameter}s * * @deprecated Human-readable ABI utilities are moving to Ox. * Install [`ox`](https://oxlib.sh) and use [`AbiParameters.from`](https://oxlib.sh/api/AbiParameters/from) instead: * `import { AbiParameters } from 'ox'`. * * @example * const abiParameters = parseAbiParameters('address from, address to, uint256 amount') * // ^? const abiParameters: [{ type: "address"; name: "from"; }, { type: "address";... * * @example * const abiParameters = parseAbiParameters([ * // ^? const abiParameters: [{ type: "tuple"; components: [{ type: "string"; name:... * 'Baz bar', * 'struct Baz { string name; }', * ]) */ export declare function parseAbiParameters(params: Narrow & ((params extends string ? params extends '' ? Error<'Empty string is not allowed.'> : unknown : never) | (params extends readonly string[] ? params extends readonly [] ? Error<'At least one parameter required.'> : string[] extends params ? unknown : unknown : never))): ParseAbiParameters; export {}; //# sourceMappingURL=parseAbiParameters.d.ts.map