UNPKG

viem

Version:

TypeScript Interface for Ethereum

23 lines 2.3 kB
import { type Abi, type AbiParameter } from 'abitype'; import type { ErrorType } from '../../errors/utils.js'; import type { AbiItem, AbiItemArgs, AbiItemName, ExtractAbiItemForArgs, Widen } from '../../types/contract.js'; import type { Hex } from '../../types/misc.js'; import type { UnionEvaluate } from '../../types/utils.js'; import { type IsHexErrorType } from '../../utils/data/isHex.js'; import { type GetFunctionSelectorErrorType } from '../../utils/hash/getFunctionSelector.js'; import { type IsAddressErrorType } from '../address/isAddress.js'; export type GetAbiItemParameters<abi extends Abi | readonly unknown[] = Abi, name extends AbiItemName<abi> = AbiItemName<abi>, args extends AbiItemArgs<abi, name> | undefined = AbiItemArgs<abi, name>, allArgs = AbiItemArgs<abi, name>, allNames = AbiItemName<abi>> = { abi: abi; name: allNames | (name extends allNames ? name : never) | Hex; } & UnionEvaluate<readonly [] extends allArgs ? { args?: allArgs | (abi extends Abi ? args extends allArgs ? Widen<args> : never : never) | undefined; } : { args?: allArgs | (Widen<args> & (args extends allArgs ? unknown : never)) | undefined; }>; export type GetAbiItemErrorType = IsArgOfTypeErrorType | IsHexErrorType | GetFunctionSelectorErrorType | ErrorType; export type GetAbiItemReturnType<abi extends Abi | readonly unknown[] = Abi, name extends AbiItemName<abi> = AbiItemName<abi>, args extends AbiItemArgs<abi, name> | undefined = AbiItemArgs<abi, name>> = abi extends Abi ? Abi extends abi ? AbiItem | undefined : ExtractAbiItemForArgs<abi, name, args extends AbiItemArgs<abi, name> ? args : AbiItemArgs<abi, name>> : AbiItem | undefined; export declare function getAbiItem<const abi extends Abi | readonly unknown[], name extends AbiItemName<abi>, args extends AbiItemArgs<abi, name> | undefined = undefined>(parameters: GetAbiItemParameters<abi, name, args>): GetAbiItemReturnType<abi, name, args>; export type IsArgOfTypeErrorType = IsAddressErrorType | ErrorType; export declare function isArgOfType(arg: unknown, abiParameter: AbiParameter): boolean; export declare function getAmbiguousTypes(sourceParameters: readonly AbiParameter[], targetParameters: readonly AbiParameter[], args: AbiItemArgs): AbiParameter['type'][] | undefined; //# sourceMappingURL=getAbiItem.d.ts.map