import { ContractWrapperBase } from "./contractWrapperBase";
/**
 * Generic class factory for all of the contract wrapper classes.
 */
export declare class ContractWrapperFactory<TWrapper extends ContractWrapperBase> {
    private solidityContractName;
    private wrapper;
    private solidityContract;
    /**
     * Connstructor to create a contract wrapper factory for the given
     * Arc contract name and wrapper class.
     * @param solidityContract Name of the contract
     * @param wrapper - Class of the contract
     */
    constructor(solidityContractName: string, wrapper: new (solidityContract: any) => TWrapper);
    /**
     * Deploy a new instance of the contract and return a wrapper around it.
     * @param rest Optional arguments to the Arc contracts constructor.
     */
    new(...rest: Array<any>): Promise<TWrapper>;
    /**
     * Return a wrapper around the contract, hydrated from the given address.
     * Throws an exception if the contract is not found at the given address.
     * @param address
     */
    at(address: string): Promise<TWrapper>;
    /**
     * Return a wrapper around the contract as deployed by the current version of Arc.js.
     * Note this is usually not needed as the WrapperService provides these
     * wrappers already hydrated.
     */
    deployed(): Promise<TWrapper>;
    private ensureSolidityContract();
}
