import type { JsonRpcProvider } from '@ethersproject/providers'; import { utils } from 'ethers'; import { AllPlugins, PluginInstance } from '../../../../Fct'; import { ChainId, FlowType, ParamsSchemas, Plugin, PluginProviderType, RequiredApprovalInterface, SetMethodParamsArgs, SetOutputParamsArgs } from '../../../../Fct/generics'; import { FctValue } from '../../../../Fct/generics'; import { IPluginCall } from '../../../../Fct/plugins/corelibTypes'; import { BeforeSimulate } from './BeforeSimulate'; export type PluginJSON = ReturnType; export type MulticallProtocol = 'KIROBO_MULTICALL'; export type MulticallType = 'LIBRARY' | 'LIBRARY:VIEWONLY'; export type MulticallMethod = 'multiBalance' | 'erc20Airdrop' | 'erc20Approvals' | 'erc20MonoTransfers' | 'erc20Transfers' | 'multiValidate' | 'transfers' | 'multiCall' | 'multiAction' | 'multiGetOffchainData'; export type MulticallName = MulticallMethod | 'multiAction' | 'multiMultiplier' | 'multiDivider' | 'multiSubtract' | 'multiAdd' | 'ethTransfers' | 'approvedSwap' | 'unwrapAndSendEth'; export type MulticallConfig

[]> = { params: { key: P[number]['input']['paramsList'][number]['key']; multicallKey: string; isUnique?: boolean; virtual?: boolean; depOn?: string; isPreview?: boolean; }[]; tupleName?: string; }; export type MulticallPluginJSON = PluginJSON & { pluginsAmount: number; }; export declare const MULTICALL_CONTRACT_ADDRESS: { readonly '1': "0x0ae3Ef19F87b5931aC8fBc3E01bbEca8DB185849"; readonly '10': "0x92B83232F2579D77BE181Dc2b167f9a542F2e0DE"; readonly '42161': "0xD8d95c30874DfBD9981272c5d0F0729BA523D475"; readonly '8453': "0xC7D810CEc1465C85345eD7C2B103E7E6109eBE47"; readonly '11155111': "0x64754348Aa0fb27Cce9c40214e240755bBBcb265"; }; export declare class Multicall

[]> { _plugin: AllPlugins | AllPlugins[]; _protocol: MulticallProtocol; _type: MulticallType; _method: MulticallMethod; _name: MulticallName; _config: MulticallConfig

; _chainId: ChainId; _vaultAddress?: string | undefined; _walletAddress?: string | undefined; _addPluginOnInit?: boolean | undefined; _withPluginOutputs?: boolean | undefined; _estimateGasFromPlugins?: ((plugins: P, chainId: ChainId) => string) | undefined; _beforeSimulate?: BeforeSimulate | undefined; _flowType?: FlowType; _plugins: P; get chainId(): ChainId; get type(): MulticallType; get protocol(): "KIROBO_MULTICALL"; get method(): MulticallMethod; get name(): MulticallName; get toENS(): string; get config(): MulticallConfig

; getOutputValues: ({ provider, walletSigner, execute, withAutoApprovals, service, }: { provider: PluginProviderType; walletSigner?: any; execute?: boolean | undefined; withAutoApprovals?: boolean | undefined; service?: any; }) => Promise | { params: {}; error: string; }>; get contractInterface(): string; get methodInterface(): string; get methodInterfaceHash(): string; get contractInterfaceReturns(): string; get plugins(): P; get pluginsLength(): number; constructor(_plugin: AllPlugins | AllPlugins[], _protocol: MulticallProtocol, _type: MulticallType, _method: MulticallMethod, _name: MulticallName, _config: MulticallConfig

, _chainId: ChainId, _vaultAddress?: string | undefined, _walletAddress?: string | undefined, _addPluginOnInit?: boolean | undefined, _withPluginOutputs?: boolean | undefined, _estimateGasFromPlugins?: ((plugins: P, chainId: ChainId) => string) | undefined, _beforeSimulate?: BeforeSimulate | undefined, _flowType?: FlowType); get gasLimit(): string; add: (pluginNodeJSON?: PluginJSON) => this | undefined; remove: () => this; get input(): import("../../../../Fct/generics").Input<{ input: { [key: string]: import("../../../../Fct").FctParamType | { [key: string]: import("../../../../Fct").FctParamType; }; } & { to?: import("../../../../Fct").FctAddress | undefined; gasLimit?: FctValue | undefined; isOffChainOnly?: import("../../../../Fct").FctBoolean | undefined; value?: FctValue | undefined; } & { methodParams: { [key: string]: import("../../../../Fct").FctParamType; }; }; output: { [key: string]: import("../../../../Fct").FctParamType | { [key: string]: import("../../../../Fct").FctParamType; }; }; }, Partial<{ [x: string]: unknown; to?: unknown; gasLimit?: unknown; isOffChainOnly?: unknown; value?: unknown; methodParams: unknown; }>>; get output(): import("../../../../Fct/generics").Output<{ [key: string]: import("../../../../Fct").FctParamType | { [key: string]: import("../../../../Fct").FctParamType; }; }>; removeAll: () => this; toJSON: () => MulticallPluginJSON; fromJSON: (multicallJSON: MulticallPluginJSON) => boolean; jsonToPlugin: (plugin: PluginJSON, chainId: ChainId) => import("../../../../Fct").NewPluginType> | undefined; subscribe: ({ callback, id, }: { callback: (p: ReturnType['getInterface']>, errors: undefined, chainId: ChainId, gasLimit: string | undefined) => void; id: string; }) => void; unsubscribe: ({ id }: { id: string; }) => void; getInterface(prev?: { instance?: Plugin; }): { instance: import("../../../../Fct").NewPluginType<"KIROBO_MULTICALL", MulticallType, MulticallMethod, "erc20Airdrop" | "erc20Approvals" | "erc20MonoTransfers" | "erc20Transfers" | "transfers" | "multiBalance" | "multiAction" | "multiCall" | "multiValidate" | "multiGetOffchainData" | "multiMultiplier" | "multiDivider" | "multiSubtract" | "multiAdd" | "ethTransfers" | "approvedSwap" | "unwrapAndSendEth", { input: { [key: string]: import("../../../../Fct").FctParamType | { [key: string]: import("../../../../Fct").FctParamType; }; } & { to?: import("../../../../Fct").FctAddress | undefined; gasLimit?: FctValue | undefined; isOffChainOnly?: import("../../../../Fct").FctBoolean | undefined; value?: FctValue | undefined; } & { methodParams: { [key: string]: import("../../../../Fct").FctParamType; }; }; output: { [key: string]: import("../../../../Fct").FctParamType | { [key: string]: import("../../../../Fct").FctParamType; }; }; }, Partial<{ [x: string]: unknown; to?: unknown; gasLimit?: unknown; isOffChainOnly?: unknown; value?: unknown; methodParams: unknown; }>>; details: { plugin: { new (args: { chainId: ChainId; initParams?: Partial<{ [x: string]: unknown; to?: unknown; gasLimit?: unknown; isOffChainOnly?: unknown; value?: unknown; methodParams: unknown; }> | undefined; walletAddress?: string | undefined; vaultAddress?: string | undefined; provider?: JsonRpcProvider | undefined; }): import("../../../../Fct").NewPluginType<"KIROBO_MULTICALL", MulticallType, MulticallMethod, "erc20Airdrop" | "erc20Approvals" | "erc20MonoTransfers" | "erc20Transfers" | "transfers" | "multiBalance" | "multiAction" | "multiCall" | "multiValidate" | "multiGetOffchainData" | "multiMultiplier" | "multiDivider" | "multiSubtract" | "multiAdd" | "ethTransfers" | "approvedSwap" | "unwrapAndSendEth", { input: { [key: string]: import("../../../../Fct").FctParamType | { [key: string]: import("../../../../Fct").FctParamType; }; } & { to?: import("../../../../Fct").FctAddress | undefined; gasLimit?: FctValue | undefined; isOffChainOnly?: import("../../../../Fct").FctBoolean | undefined; value?: FctValue | undefined; } & { methodParams: { [key: string]: import("../../../../Fct").FctParamType; }; }; output: { [key: string]: import("../../../../Fct").FctParamType | { [key: string]: import("../../../../Fct").FctParamType; }; }; }, Partial<{ [x: string]: unknown; to?: unknown; gasLimit?: unknown; isOffChainOnly?: unknown; value?: unknown; methodParams: unknown; }>>; }; name: MulticallName; description: MulticallName; }; }; pluginParamsToMulticallParamsTuples: () => { inputs: { param: ParamsSchemas; key: string; }[][]; outputs: { param: ParamsSchemas; key: string; }[][]; uniqueParams: { param: ParamsSchemas; key: string; }[]; onchainParams: { param: ParamsSchemas; key: string; }[]; }; create: (isEstimation?: boolean, testProvider?: JsonRpcProvider) => Promise; setMethodParams(params: SetMethodParamsArgs): void; getOutputParamsTypes: () => string[] | (string | (string & import("../../../../Fct").TradingGraphPropsType))[][][]; setOutputParams(params: SetOutputParamsArgs): void; _getOutputValues: ({ provider, execute }: { provider: PluginProviderType; execute?: boolean | undefined; }) => Promise<{ trx: (string | boolean | string[])[]; gasLimit: any; } | { trx: utils.Result[]; gasLimit: any; }>; getRequiredApprovals: (isEstimation?: boolean) => RequiredApprovalInterface[]; observers: Map['getInterface']>, errors: undefined, chainId: ChainId, gasLimit: string | undefined) => void>; updateSubscriptions: () => void; get currentGasLimit(): string | undefined; set currentGasLimit(gasLimit: string | undefined); _currentGasLimit: string | undefined; }