import { Contract } from "web3-eth-contract";
import Ethereum from "./ethereum";
/**
 * toolkit of smart contract
 *
 * @class SmartContract
 */
declare class SmartContract {
    /**
     * instance of smart contract
     *
     * @private
     * @type {Contract}
     * @memberof SmartContract
     */
    private _contract;
    /**
     * instance of abi
     *
     * @private
     * @type {any}
     * @memberof SmartContract
     */
    private _abi;
    /**
     * instance of ethereum
     *
     * @private
     * @type {Ethereum}
     * @memberof SmartContract
     */
    private _ethereum;
    /**
     * contract address of smart contract
     *
     * @private
     * @type {string}
     * @memberof SmartContract
     */
    private _address;
    /**
     * EthereumABI instance
     *
     * @private
     * @type {EthereumABI}
     * @memberof SmartContract
     */
    private _ethereumABI;
    /**
     * Creates an instance of SmartContract
     * @memberof SmartContract
     */
    constructor();
    /**
     * return ethereum instance
     *
     * @readonly
     * @type {Ethereum}
     * @memberof SmartContract
     */
    get ethereum(): Ethereum;
    /**
     * return contract instance
     *
     * @readonly
     * @type {Contract}
     * @memberof SmartContract
     */
    get contract(): Contract;
    get contractAddress(): string;
    /**
     * init instance of smart contract
     *
     * @param {string} tokenContractAddress contract address of smart contract
     * @param {Ethereum} ethereum instance
     * @param {any} abi
     * @memberof SmartContract
     */
    init(tokenContractAddress: string, ethereum: Ethereum, abi: any): void;
    /**
     * destroy instance of smart contract
     *
     * @memberof SmartContract
     */
    destroy(): void;
    /**
     * call defined function in the abi
     *
     */
    callABI(name: any, ...args: any[]): Promise<any>;
}
export default SmartContract;
