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 = contracts extends readonly [] ? readonly [] : contracts extends readonly [infer contract] ? [ ...result, MulticallResponse, options['error'], allowFailure> ] : contracts extends readonly [infer contract, ...infer rest] ? MulticallResults<[ ...rest ], allowFailure, options, [ ...result, MulticallResponse, options['error'], allowFailure> ]> : readonly unknown[] extends contracts ? MulticallResponse[] : contracts extends readonly (infer contract extends ContractFunctionParameters)[] ? MulticallResponse, options['error'], allowFailure>[] : MulticallResponse[]; export type MulticallResponse = allowFailure extends true ? { error?: undefined; result: result; status: 'success'; } | { error: unknown extends error ? Error : error; result?: undefined; status: 'failure'; } : result; 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