import { Account, Address, PublicClient, SimulateContractReturnType, WalletClient, WriteContractReturnType } from 'viem';
import { Deployment, EVMNetworkType, RenftContractType, RenftContractVersion, RenftContractVersions } from '../core';
export declare type Simulator = (functionName: string, args: any) => Promise<SimulateContractReturnType>;
export declare type Executor = (functionName: string, args: any) => Promise<WriteContractReturnType>;
export declare type SDKInterface<ContractType extends RenftContractType, ContractVersion extends RenftContractVersions[ContractType]> = {
    account: Account | Address;
    deployment: Deployment<ContractType, ContractVersion>;
    publicClient: PublicClient;
    walletClient: WalletClient;
};
export declare abstract class SDK<ContractType extends RenftContractType, ContractVersion extends RenftContractVersions[ContractType]> {
    protected deployment: Deployment<RenftContractType, RenftContractVersion>;
    protected exec: Executor;
    protected network: EVMNetworkType;
    protected supportedDeployments: Deployment<RenftContractType, RenftContractVersion>[];
    constructor({ account, deployment, publicClient, walletClient, }: SDKInterface<ContractType, ContractVersion>);
    protected validate(deploymentList: Deployment<RenftContractType, RenftContractVersion>[]): void;
}
