import type { Abi, AbiEvent, AbiFunction, AbiParametersToPrimitiveTypes, FormatAbiItem } from "abitype"; import type { GetEventArgs, ParseAbiItem } from "viem"; export type NonStrictPick = { [P in Extract]: T[P]; }; export type ExtractAbiEvents> = [events] extends [never] ? AbiEvent : events; export type ExtractAbiFunctions> = [functions] extends [never] ? AbiFunction : functions; /** Return the abi event given the abi and compact signature. */ export type ParseAbiEvent, noOverloadEvent = Extract, overloadEvent = Extract>> = [noOverloadEvent] extends [never] ? [overloadEvent] extends [never] ? AbiEvent : overloadEvent : noOverloadEvent; /** Return the abi function given the abi and compact signature. */ export type ParseAbiFunction, noOverloadFunction = Extract, overloadFunction = Extract>> = [overloadFunction] extends [never] ? [noOverloadFunction] extends [never] ? AbiFunction : noOverloadFunction : overloadFunction; /** Return the compact signature given the abi and abi event. */ export type FormatAbiEvent, matchingNameEvents extends AbiEvent = Extract> = [matchingNameEvents] extends [never] ? Abi extends abi ? event["name"] : never : [Exclude] extends [never] ? event["name"] : FormatAbiItem extends `event ${infer signature}` ? signature : never; /** Return the compact signature given the abi and abi function. */ export type FormatAbiFunction, matchingNameFunctions extends AbiFunction = Extract> = [matchingNameFunctions] extends [never] ? Abi extends abi ? `${_function["name"]}()` : never : [Exclude] extends [never] ? `${_function["name"]}()` : FormatAbiItem<_function> extends `function ${infer signature}` ? signature : never; /** * Return an union of safe event names that handle event overriding. */ export type SafeEventNames> = abiEvents extends abiEvents ? FormatAbiEvent : never; /** * Return an union of safe function names that handle function overriding. */ export type SafeFunctionNames> = abiFunctions extends abiFunctions ? FormatAbiFunction : never; export type FormatEventArgs = GetEventArgs>; export type FormatFunctionArgs["inputs"]>> = readonly [] extends args ? never : args; export type FormatFunctionResult["outputs"]>> = readonly [] extends result ? never : result extends readonly [unknown] ? result[0] : result; //# sourceMappingURL=utilityTypes.d.ts.map