import type { Abi, AbiStateMutability } from 'abitype'; import type { ContractFunctionArgs, ContractFunctionName, ContractFunctionParameters, ContractFunctionReturnType } from './contract.js'; import type { MaybePartial, Prettify } from './utils.js'; export type MulticallContracts; } = { mutability: AbiStateMutability; }, result extends readonly any[] = []> = contracts extends readonly [] ? readonly [] : contracts extends readonly [infer contract] ? readonly [ ...result, MaybePartial & options['properties']>, options['optional']> ] : contracts extends readonly [infer contract, ...infer rest] ? MulticallContracts<[ ...rest ], options, [ ...result, MaybePartial & options['properties']>, options['optional']> ]> : readonly unknown[] extends contracts ? contracts : contracts extends readonly (infer contract extends ContractFunctionParameters)[] ? readonly MaybePartial, options['optional']>[] : readonly MaybePartial, options['optional']>[]; export type MulticallResults | undefined; mutability: AbiStateMutability; } = { error: Error; extraProperties: {}; mutability: AbiStateMutability; }, result extends any[] = []> = contracts extends readonly [] ? readonly [] : contracts extends readonly [infer contract] ? [ ...result, MulticallResponse, options['error'], allowFailure, options['extraProperties']> ] : contracts extends readonly [infer contract, ...infer rest] ? MulticallResults<[ ...rest ], allowFailure, options, [ ...result, MulticallResponse, options['error'], allowFailure, options['extraProperties']> ]> : readonly unknown[] extends contracts ? MulticallResponse[] : contracts extends readonly (infer contract extends ContractFunctionParameters)[] ? MulticallResponse, options['error'], allowFailure, options['extraProperties']>[] : MulticallResponse[]; export type MulticallResponse | undefined = {}> = allowFailure extends true ? (extraProperties & { error?: undefined; result: result; status: 'success'; }) | (extraProperties & { error: unknown extends error ? Error : error; result?: undefined; status: 'failure'; }) : result; export type GetMulticallContractParameters = contract extends { abi: infer abi extends Abi; } ? contract extends { functionName: infer functionName extends ContractFunctionName; } ? contract extends { args: infer args extends ContractFunctionArgs; } ? ContractFunctionParameters : ContractFunctionParameters : Abi extends abi ? ContractFunctionParameters : ContractFunctionParameters : ContractFunctionParameters; type GetMulticallContractReturnType = contract extends { abi: infer abi extends Abi; } ? contract extends { functionName: infer functionName extends ContractFunctionName; } ? contract extends { args: infer args extends ContractFunctionArgs; } ? ContractFunctionReturnType : ContractFunctionReturnType : ContractFunctionReturnType : ContractFunctionReturnType; export {}; //# sourceMappingURL=multicall.d.ts.map