import { BigNumber } from 'bignumber.js';
import { AccountIdentifier, AccountPermissionUpdateOptions, BlockIdentifier, CreateAssetIssueOptions, CreateTransactionOptions, DeployContractOptions, DetailOption, FreezeAccountOptions, GetCanWithdrawUnfreezeAmountOptions, JsonRpcCall, JsonRpcResponse, TransferAssetIssueByAccountOptions, TriggerConstantContractOptions, TriggerSmartContractOptions, TronPermission, TronPrices, TronRpcSuite, TronStakeType, TronStakeTypeNumeric, TronTxRawBody, UnFreezeAccountOptions, UpdateAssetOptions, VisibleAndPermissionIdOptions, VisibleOption } from '../../../dto';
import { PostI } from '../../../dto/PostI';
import { AbstractEvmRpc } from './AbstractEvmRpc';
import { GetI } from '../../../dto/GetI';
export declare abstract class AbstractTronRpc extends AbstractEvmRpc implements TronRpcSuite {
    protected abstract post<T>(post: PostI): Promise<T>;
    protected abstract get<T>(get: GetI): Promise<T>;
    abstract destroy(): void;
    abstract getRpcNodeUrl(): string;
    abstract rawBatchRpcCall(body: JsonRpcCall[]): Promise<JsonRpcResponse<any>[] | JsonRpcResponse<any>>;
    abstract rawRpcCall(body: JsonRpcCall): Promise<JsonRpcResponse<any>>;
    private sendPost;
    private sendGet;
    accountPermissionUpdate(ownerAddress: string, actives: TronPermission[], owner: TronPermission, options?: AccountPermissionUpdateOptions): Promise<any>;
    broadcastHex(transaction: string): Promise<any>;
    broadcastTransaction(rawBody: TronTxRawBody): Promise<any>;
    clearAbi(ownerAddress: string, contractAddress: string, options?: VisibleOption): Promise<any>;
    createAccount(ownerAddress: string, accountAddress: string, options?: VisibleAndPermissionIdOptions): Promise<any>;
    createAssetIssue(ownerAddress: string, name: string, abbr: string, totalSupply: number, trxNum: number, num: number, startTime: number, endTime: number, url: string, options?: CreateAssetIssueOptions): Promise<any>;
    createTransaction(ownerAddress: string, toAddress: string, amount: BigNumber, options?: CreateTransactionOptions): Promise<any>;
    delegateResource(ownerAddress: string, receiverAddress: string, balance: BigNumber, resource: TronStakeType, lock: boolean, options?: VisibleAndPermissionIdOptions): Promise<any>;
    deployContract(abi: string, bytecode: string, ownerAddress: string, name: string, options?: DeployContractOptions): Promise<any>;
    estimateEnergy(ownerAddress: string, contractAddress: string, functionSelector: string, parameter: string, options?: VisibleOption): Promise<any>;
    freezeBalance(ownerAddress: string, frozenBalance: BigNumber, frozenDuration: number, resource: TronStakeType, options?: FreezeAccountOptions): Promise<any>;
    freezeBalanceV2(ownerAddress: string, frozenBalance: BigNumber, resource: TronStakeType, options?: VisibleAndPermissionIdOptions): Promise<any>;
    getAccount(address: string, options?: VisibleOption): Promise<any>;
    getAccountBalance(accountIdentifier: AccountIdentifier, blockIdentifier: BlockIdentifier, options?: VisibleOption): Promise<any>;
    getAccountNet(address: string, options?: VisibleOption): Promise<any>;
    getAccountResources(address: string, options?: VisibleOption): Promise<any>;
    getAssetIssueByAccount(address: string, options?: VisibleOption): Promise<any>;
    getAssetIssueById(value: number): Promise<any>;
    getAssetIssueByName(value: string): Promise<any>;
    getAssetIssueList(): Promise<any>;
    getAssetIssueListByName(value: string): Promise<any>;
    getAvailableUnfreezeCount(ownerAddress: string, options?: VisibleOption): Promise<any>;
    getBandwidthPrices(): Promise<TronPrices>;
    getBlock(idOrNum: string, options?: DetailOption): Promise<any>;
    getBlockBalance(hash: string, number: BigNumber, options?: VisibleOption): Promise<any>;
    getBlockById(id: string): Promise<any>;
    getBlockByLatestNum(num: number): Promise<any>;
    getBlockByLimitNext(startNum: number, endNum: number): Promise<any>;
    getBlockByNum(num: number): Promise<any>;
    getBurnTRX(): Promise<any>;
    getCanDelegatedMaxSize(ownerAddress: string, type: TronStakeTypeNumeric, options?: VisibleOption): Promise<any>;
    getCanWithdrawUnfreezeAmount(ownerAddress: string, options?: GetCanWithdrawUnfreezeAmountOptions): Promise<any>;
    getChainParameters(): Promise<any>;
    getContract(value: string, options?: VisibleOption): Promise<any>;
    getContractInfo(value: string, options?: VisibleOption): Promise<any>;
    getDelegatedResource(fromAddress: string, toAddress: string, options?: VisibleOption): Promise<any>;
    getDelegatedResourceAccountIndex(value: string, options?: VisibleOption): Promise<any>;
    getDelegatedResourceAccountIndexV2(value: string, options?: VisibleOption): Promise<any>;
    getDelegatedResourceV2(fromAddress: string, toAddress: string, options?: VisibleOption): Promise<any>;
    getEnergyPrices(): Promise<TronPrices>;
    getNodeInfo(): Promise<any>;
    getNowBlock(): Promise<any>;
    getPaginatedAssetIssueList(offset: number, limit: number): Promise<any>;
    getTransactionById(value: string, options?: VisibleOption): Promise<any>;
    getTransactionInfoByBlockNum(num: number): Promise<any>;
    getTransactionInfoById(value: string): Promise<any>;
    listNodes(): Promise<any>;
    participateAssetIssue(toAddress: string, ownerAddress: string, assetName: string, amount: BigNumber, options?: VisibleOption): Promise<any>;
    transferAsset(ownerAddress: string, toAddress: string, assetName: string, amount: BigNumber, options?: TransferAssetIssueByAccountOptions): Promise<any>;
    triggerConstantContract(ownerAddress: string, contractAddress: string, functionSelector: string, parameter: string, options?: TriggerConstantContractOptions): Promise<any>;
    triggerSmartContract(ownerAddress: string, contractAddress: string, functionSelector: string, parameter: string, options?: TriggerSmartContractOptions): Promise<any>;
    unDelegateResource(ownerAddress: string, receiverAddress: string, balance: BigNumber, resource: TronStakeType, lock: boolean, options?: VisibleAndPermissionIdOptions): Promise<any>;
    unfreezeAsset(ownerAddress: string, options?: VisibleAndPermissionIdOptions): Promise<any>;
    unfreezeBalance(ownerAddress: string, resource: TronStakeType, options?: UnFreezeAccountOptions): Promise<any>;
    unfreezeBalanceV2(ownerAddress: string, unfreezeBalance: BigNumber, resource: TronStakeType, options?: VisibleAndPermissionIdOptions): Promise<any>;
    updateAccount(ownerAddress: string, accountName: string, options?: VisibleAndPermissionIdOptions): Promise<any>;
    updateAsset(ownerAddress: string, url: string, options?: UpdateAssetOptions): Promise<any>;
    updateEnergyLimit(ownerAddress: string, contractAddress: string, originEnergyLimit: number, options?: VisibleAndPermissionIdOptions): Promise<any>;
    updateSetting(ownerAddress: string, contractAddress: string, consumeUserResourcePercent: number, options?: VisibleAndPermissionIdOptions): Promise<any>;
    validateAddress(address: string, options?: VisibleOption): Promise<any>;
    withdrawExpireUnfreeze(ownerAddress: string, options?: VisibleAndPermissionIdOptions): Promise<any>;
}
