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>;
};