///
///
import { ContractType, VmType } from "../../types/web3";
import type { BaseProvider, DeployContractParams, CallContractResponse, DeployContractResponse, WatchContractEventCallback, WatchContractEventParams } from "../providers/base-provider";
export type CallContractArgType = string | number | boolean | string[];
export interface ContractOptions {
contractName?: string;
contractType?: ContractType;
abi?: string | Record[];
}
export interface CallContractParams {
methodName: string;
timeout?: number;
args?: CallContractArgType[];
gas?: number;
notParseReturn?: boolean;
callData?: string;
argsType?: string[];
returnType?: string;
blockNumber?: number;
local?: boolean;
tee?: boolean;
}
export interface DeployContractOptions {
update?: boolean;
}
export declare class Contract {
options: ContractOptions;
provider: BaseProvider;
contractName: string;
contractType: ContractType;
vmType: VmType;
abi: string;
constructor(options: ContractOptions, provider: BaseProvider);
on(params: WatchContractEventParams, callback: WatchContractEventCallback): void;
deploy(params: DeployContractParams, options?: DeployContractOptions): Promise;
call(params: CallContractParams): Promise>;
generateDeployCode(code: Buffer, parameters?: any[]): string;
generateUpdateCode(code: Buffer): string;
generateCallCode(methodName: string, parameters?: any[]): string;
parseReturnOutput(methodName: string, output: string): ReturnValue;
parseErrorOutput(output: string): string;
}