import { BigintIsh } from '@wicchain/sdk'; import { Abi, Address } from 'viem'; export type ProviderConfig = { /** * The block number to use when getting data on-chain. */ blockNumber?: BigintIsh | Promise; }; export type CallSameFunctionOnMultipleContractsParams = { addresses: Address[]; abi: Abi; functionName: string; functionParams?: TFunctionParams; providerConfig?: ProviderConfig; additionalConfig?: TAdditionalConfig; }; export type CallSameFunctionOnContractWithMultipleParams = { address: Address; abi: Abi; functionName: string; functionParams: TFunctionParams[]; providerConfig?: ProviderConfig; additionalConfig?: TAdditionalConfig; }; export type CallMultipleFunctionsOnSameContractParams = { address: Address; abi: Abi; functionNames: string[]; functionParams?: TFunctionParams[]; providerConfig?: ProviderConfig; additionalConfig?: TAdditionalConfig; }; export type SuccessResult = { success: true; result: TReturn; }; export type FailResult = { success: false; returnData: string; }; export type Result = SuccessResult | FailResult; /** * Provider for fetching data on chain using multicall contracts. * * @export * @abstract * @class IMulticallProvider * @template TMulticallConfig */ export declare abstract class IMulticallProvider { /** * Calls the same function on multiple contracts. * * For example, if you wanted to get the ERC-20 balance of 10 different tokens * this can be used to call balance on the 10 contracts in a single multicall. * * @abstract * @template TFunctionParams * @template TReturn * @param params * @returns {*} */ abstract callSameFunctionOnMultipleContracts(params: CallSameFunctionOnMultipleContractsParams): Promise<{ blockNumber: bigint; results: Result[]; }>; /** * Calls a function on a single contract with different parameters. * * For example, if you wanted to call the Pancakeswap V3 Quoter with 10 different * swap amounts this can be used to make the calls in a single multicall. * * @abstract * @template TFunctionParams * @template TReturn * @param params * @returns {*} */ abstract callSameFunctionOnContractWithMultipleParams(params: CallSameFunctionOnContractWithMultipleParams): Promise<{ blockNumber: bigint; results: Result[]; }>; abstract callMultipleFunctionsOnSameContract(params: CallMultipleFunctionsOnSameContractParams): Promise<{ blockNumber: bigint; results: Result[]; }>; } //# sourceMappingURL=multicallProvider.d.ts.map