import { TronWeb } from '../../tronweb.js';
import type { ContractReadNamespace, ContractWriteNamespace } from './readWrite.js';
import type { ContractAbiInterface, GetMethodsTypeFromAbi, GetOnMethodTypeFromAbi, AnyOnMethodType } from '../../types/ABI.js';
import type { Address } from '../../types/Trx.js';
import type { CreateSmartContractOptions } from '../../types/TransactionBuilder.js';
export declare class Contract<Abi extends ContractAbiInterface = ContractAbiInterface> {
    tronWeb: TronWeb;
    abi: Abi;
    address: false | string;
    eventListener: any;
    bytecode?: false | string;
    deployed?: boolean;
    lastBlock?: false | number;
    methods: GetOnMethodTypeFromAbi<Abi> & AnyOnMethodType;
    methodInstances: GetMethodsTypeFromAbi<Abi>;
    props: any[];
    private _readNamespace?;
    private _writeNamespace?;
    [key: string | number | symbol]: any;
    constructor(tronWeb: TronWeb, abi: Abi | undefined, address: Address);
    /**
     * Type-safe read namespace:
     * every `view`/`pure` ABI function is callable as
     * `contract.read.fn([args], { from, value })` and resolves to the decoded
     * result directly. Rebuilt lazily whenever the contract ABI is replaced.
     */
    get read(): ContractReadNamespace<Abi>;
    /**
     * Type-safe write namespace:
     * every state-changing ABI function is callable as
     * `contract.write.fn([args], { account, value, feeLimit, tokenId, tokenValue, permissionId })`,
     * signed with the instance's default private key, broadcast, and resolved to
     * the transaction ID. Rebuilt lazily whenever the contract ABI is replaced.
     */
    get write(): ContractWriteNamespace<Abi>;
    hasProperty(property: number | string | symbol): any;
    loadAbi(abi: Abi): void;
    decodeInput(data: string): {
        name: string;
        params: any;
    };
    new(options: CreateSmartContractOptions, privateKey?: string | false): Promise<import("../../types/ABI.js").ContractInstance<ContractAbiInterface>>;
    at(contractAddress: Address): Promise<this>;
}
export type { CallOptions, SendOptions, AbiFragmentNoErrConstructor } from './method.js';
export { Method } from './method.js';
export type { ContractReadNamespace, ContractWriteNamespace, ReadContractFunctionName, WriteContractFunctionName, ReadContractParameters, ReadContractReturnType, WriteContractParameters, WriteContractReturnType, ReadOptions, WriteOptions, CollapseSingleItemTuple, } from './readWrite.js';
export { buildReadNamespace, buildWriteNamespace } from './readWrite.js';
