import type { AbiStateMutability, Address } from "viem"; import type { GetMulticallContractParameters } from "./multicall"; import type { OneOf, Prettify } from "./utils"; import type { Hex } from "./misc"; export type Call = {}> = OneOf<(extraProperties & { data?: Hex | undefined; to: Address; value?: bigint | undefined; }) | (extraProperties & (Omit, "address"> & { to: Address; value?: bigint | undefined; }))>; export type Calls = {}, result extends readonly any[] = []> = calls extends readonly [] ? readonly [] : calls extends readonly [infer call] ? readonly [...result, Prettify>] : calls extends readonly [infer call, ...infer rest] ? Calls<[...rest], extraProperties, [...result, Prettify>]> : readonly unknown[] extends calls ? calls : calls extends readonly (infer call extends OneOf)[] ? readonly Prettify[] : readonly OneOf[];