import type { JsonRpcProvider } from '@ethersproject/providers'; import { Signer } from 'ethers'; import { AssetFlow, ChainId, IPluginParams, Plugin, PluginParamsInput, Protocol, RequiredApprovals, SetMethodParamsArgs, Subscribtion, PluginName, Type, FlowType } from './generics'; import { IPluginCall } from './plugins/corelibTypes'; export declare class NewPluginType

extends Plugin { constructor(args: { chainId: ChainId; initParams?: ParamsInput; walletAddress?: string; vaultAddress?: string; provider?: JsonRpcProvider; }); create: () => Promise; } export type OnCreatePlugin = Plugin; export type SupportedContracts = { address: string; chainId: number; name?: string; }[]; export declare const createPlugin:

({ getParams, protocol, type, method, isMulticallPlugin, validate, onCreate, onChange, getSubscribtions, name, description, initParams, supportedContracts, falseMeansFail, toEns, getParamsOnCreate, requiredApprovals, calculateValuesOnUserInput, beforeSimulate, setValuesAsync, assetFlow, overrideSetMethodParams, estimateGasOnParams, payerIndex, usePureMethod, flowType, }: { getParams: (p: { chainId: ChainId; vaultAddress?: string; walletAddress?: string; }) => Params; protocol: P; type: T; method: M; isMulticallPlugin?: boolean | undefined; validate?: ((params: Params["input"], errors: any) => boolean) | undefined; getSubscribtions?: ((p: { chainId: ChainId; input: Params["input"]; output: Params["output"]; setMethod: (method: M) => void; walletAddress?: string | undefined; vaultAddress?: string | undefined; }) => Subscribtion[]) | undefined; onCreate?: ((p: { chainId: ChainId; input: Params["input"]; output: Params["output"]; }) => void) | undefined; onChange?: ((p: { chainId: ChainId; input: Params["input"]; output: Params["output"]; }) => void) | undefined; setValuesAsync?: ((p: { chainId: ChainId; account: string; input?: Params["input"] | undefined; output?: Params["output"] | undefined; provider?: JsonRpcProvider | undefined; }) => Promise) | undefined; calculateValuesOnUserInput?: ((p: { chainId: ChainId; input: Params["input"]; output: Params["output"]; account?: string | undefined; provider?: JsonRpcProvider | undefined; setMethod?: ((method: M) => void) | undefined; }) => { get: (p: { changedParamKey?: string | undefined; inputs?: Partial> | undefined; service?: any; signer?: Signer | undefined; }) => Promise<{ params: Partial>; error: string | undefined; isSimulationNeeded?: boolean | undefined; } | undefined>; depParamKeys: string[] | (() => string[]); }) | undefined; beforeSimulate?: ((p: { chainId: ChainId; input: Params["input"]; output: Params["output"]; provider?: { provider: JsonRpcProvider; signer: Signer; } | undefined; }) => Promise) | undefined; name?: PluginName | undefined; description?: string | undefined; initParams?: Partial | undefined; supportedContracts?: SupportedContracts | undefined; falseMeansFail?: boolean | undefined; toEns?: string | undefined; payerIndex?: number | undefined; usePureMethod?: boolean | undefined; flowType?: F | undefined; getParamsOnCreate?: ((p: { chainId: ChainId; params: Params["input"]; isEstimation?: boolean | undefined; }) => Promise<{ params: IPluginParams['input']; method: string; gasLimit: string | undefined; plugin?: OnCreatePlugin | undefined; } | undefined>) | undefined; requiredApprovals?: ((params: Params["input"], chainId: ChainId, walletAddress?: string, vaultAddress?: string, provider?: JsonRpcProvider, method?: M | undefined, isEstimation?: boolean) => RequiredApprovals) | undefined; assetFlow?: ((params: Params["input"], chainId: ChainId, walletAddress?: string, vaultAddress?: string, provider?: JsonRpcProvider, method?: M | undefined) => AssetFlow) | undefined; overrideSetMethodParams?: ((p: { chainId: ChainId; input: Params["input"]; output: Params["output"]; }) => (params: SetMethodParamsArgs, method: string) => void) | undefined; estimateGasOnParams?: ((params: Params["input"], method: M, chainId: ChainId) => string) | undefined; }) => { new (args: { chainId: ChainId; initParams?: Partial | undefined; walletAddress?: string | undefined; vaultAddress?: string | undefined; provider?: JsonRpcProvider | undefined; }): NewPluginType>; };