import type { Account, Coin, DeployInfo, InstantiateInfo, TxnStdFee, UserAccount } from "../../types";
export interface ExecArgs {
    account: Account | UserAccount;
    transferAmount: readonly Coin[] | undefined;
    customFees: TxnStdFee | undefined;
}
export declare class Contract {
    readonly contractName: string;
    readonly contractPath: string;
    private readonly env;
    private client?;
    codeId: number;
    contractCodeHash: string;
    contractAddress: string;
    instantiateTag: string;
    private checkpointData;
    private readonly checkpointPath;
    constructor(contractName: string, instantiateTag?: string);
    setupClient(): Promise<void>;
    deploy(account: Account | UserAccount, customFees?: TxnStdFee, source?: string, builder?: string): Promise<DeployInfo>;
    instantiatedWithAddress(address: string, timestamp?: Date | undefined): void;
    instantiate(initArgs: Record<string, unknown>, label: string, account: Account | UserAccount, transferAmount?: Coin[], customFees?: TxnStdFee, contractAdmin?: string | undefined): Promise<InstantiateInfo>;
    queryMsg(msgData: Record<string, unknown>): Promise<any>;
    executeMsg(msgData: Record<string, unknown>, account: Account | UserAccount, customFees?: TxnStdFee, memo?: string, transferAmount?: readonly Coin[]): Promise<any>;
}
