import type { AbiParametersToPrimitiveTypes, ExtractAbiFunction, ExtractAbiFunctionNames, FormatAbi, ParseAbi, } from 'abitype' export type ValueOf = T[keyof T] export type Write< TName extends string, THumanReadableAbi extends readonly string[], > = { [TFunctionName in ExtractAbiFunctionNames< ParseAbi, 'payable' | 'nonpayable' >]: < TArgs extends AbiParametersToPrimitiveTypes< ExtractAbiFunction, TFunctionName>['inputs'] > & any[] = AbiParametersToPrimitiveTypes< ExtractAbiFunction, TFunctionName>['inputs'] > & any[], >( ...args: TArgs ) => TArgs['length'] extends 0 ? { functionName: TFunctionName humanReadableAbi: FormatAbi< [ExtractAbiFunction, TFunctionName>] > abi: [ExtractAbiFunction, TFunctionName>] } : { evmtsContractName: TName functionName: TFunctionName args: TArgs humanReadableAbi: FormatAbi< [ExtractAbiFunction, TFunctionName>] > abi: [ExtractAbiFunction, TFunctionName>] } }