import { TronWeb } from '../../tronweb.js';
import { Method } from './method.js';
import type { ContractAbiInterface } from '../../types/ABI.js';
import { Address } from '../../types/Trx.js';
import { CreateSmartContractOptions } from '../../types/TransactionBuilder.js';
export interface IContract {
    [key: string | number | symbol]: (...args: any[]) => ReturnType<Method['onMethod']>;
}
export declare class Contract {
    tronWeb: TronWeb;
    abi: ContractAbiInterface;
    address: false | string;
    eventListener: any;
    bytecode?: false | string;
    deployed?: boolean;
    lastBlock?: false | number;
    methods: Record<any, any>;
    methodInstances: Record<any, any>;
    props: any[];
    constructor(tronWeb: TronWeb, abi: ContractAbiInterface | undefined, address: Address);
    hasProperty(property: number | string | symbol): boolean;
    loadAbi(abi: ContractAbiInterface): void;
    decodeInput(data: string): {
        name: any;
        params: any;
    };
    new(options: CreateSmartContractOptions, privateKey?: string | false, callback?: boolean): Promise<this>;
    at(contractAddress: Address): Promise<this>;
}
export { CallOptions, SendOptions, AbiFragmentNoErrConstructor, Method } from './method.js';
