import { TronWeb } from '../../tronweb.js';
import { CreateSmartContractTransaction, SignedTransaction, Transaction, TransactionWrapper } from '../../types/Transaction.js';
import { Permission, TriggerSmartContract } from '../../types/Contract.js';
import { AlterTransactionOptions, CreateSmartContractOptions, CreateTokenOptions, DeployConstantContractOptions, TriggerConstantContractOptions, TransactionCommonOptions, Resource, ContractFunctionParameter, TriggerSmartContractOptions, TxLocal, UpdateTokenOptions, VoteInfo } from '../../types/TransactionBuilder.js';
export declare class TransactionBuilder {
    private tronWeb;
    private validator;
    constructor(tronWeb?: TronWeb);
    sendTrx(to: string, amount?: number, from?: string, options?: TransactionCommonOptions): Promise<Transaction>;
    sendToken(to: string, amount: number | undefined, tokenId: string, from?: string, options?: TransactionCommonOptions): Promise<Transaction>;
    purchaseToken(issuerAddress: string, tokenId: string, amount?: number, buyer?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    freezeBalance(amount?: number, duration?: number, resource?: Resource, ownerAddress?: string, receiverAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    unfreezeBalance(resource?: Resource, address?: string, receiverAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    freezeBalanceV2(amount?: number, resource?: Resource, address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    unfreezeBalanceV2(amount?: number, resource?: Resource, address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    cancelUnfreezeBalanceV2(address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    delegateResource(amount: number | undefined, receiverAddress: string, resource?: Resource, address?: string, lock?: boolean, lockPeriod?: number, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    undelegateResource(amount: number | undefined, receiverAddress: string, resource?: Resource, address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    withdrawExpireUnfreeze(address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    withdrawBlockRewards(address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    applyForSR(address?: string, url?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    vote(votes?: VoteInfo, voterAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    createSmartContract(options?: CreateSmartContractOptions, issuerAddress?: string): Promise<CreateSmartContractTransaction>;
    triggerSmartContract(contractAddress: string, functionSelector: string, options?: TriggerSmartContractOptions, parameters?: ContractFunctionParameter[], issuerAddress?: string): Promise<TransactionWrapper>;
    triggerConstantContract(contractAddress: string, functionSelector: string, options?: TriggerConstantContractOptions, parameters?: ContractFunctionParameter[], issuerAddress?: string): Promise<TransactionWrapper>;
    triggerConfirmedConstantContract(contractAddress: string, functionSelector: string, options?: TriggerConstantContractOptions, parameters?: ContractFunctionParameter[], issuerAddress?: string): Promise<TransactionWrapper>;
    estimateEnergy(contractAddress: string, functionSelector: string, options?: TriggerConstantContractOptions, parameters?: ContractFunctionParameter[], issuerAddress?: string): Promise<{
        result: {
            result: boolean;
        };
        energy_required: number;
    }>;
    deployConstantContract(options?: DeployConstantContractOptions): Promise<{
        result: {
            result: boolean;
        };
        energy_required: number;
    }>;
    _getTriggerSmartContractArgs(contractAddress: string, functionSelector: string, options: TriggerConstantContractOptions, parameters: ContractFunctionParameter[], issuerAddress: string, tokenValue?: number, tokenId?: string, callValue?: number, feeLimit?: number): TriggerSmartContract;
    _triggerSmartContractLocal(contractAddress: string, functionSelector: string, options?: TriggerConstantContractOptions, parameters?: ContractFunctionParameter[], issuerAddress?: string): Promise<{
        result: {
            result: boolean;
        };
        transaction: Transaction<import("../../types/Contract.js").ContractParamter>;
    }>;
    _triggerSmartContract(contractAddress: string, functionSelector: string, options?: TriggerConstantContractOptions, parameters?: ContractFunctionParameter[], issuerAddress?: string): Promise<TransactionWrapper>;
    clearABI(contractAddress: string, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    updateBrokerage(brokerage: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    createToken(options?: CreateTokenOptions, issuerAddress?: string): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    createAccount(accountAddress: string, address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    updateAccount(accountName: string, address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    setAccountId(accountId: string, address?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    updateToken(options?: UpdateTokenOptions, issuerAddress?: string): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    sendAsset(to: string, amount: number | undefined, tokenId: string, from?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    purchaseAsset(issuerAddress: string, tokenId: string, amount?: number, buyer?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    createAsset(options: CreateTokenOptions, issuerAddress: string): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    updateAsset(options?: UpdateTokenOptions, issuerAddress?: string): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Creates a proposal to modify the network.
     * Can only be created by a current Super Representative.
     */
    createProposal(parameters: Record<string, string | number> | Record<string, string | number>[], issuerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Deletes a network modification proposal that the owner issued.
     * Only current Super Representative can vote on a proposal.
     */
    deleteProposal(proposalID: number, issuerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Adds a vote to an issued network modification proposal.
     * Only current Super Representative can vote on a proposal.
     */
    voteProposal(proposalID: number, isApproval?: boolean, voterAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Create an exchange between a token and TRX.
     * Token Name should be a CASE SENSITIVE string.
     * PLEASE VERIFY THIS ON TRONSCAN.
     */
    createTRXExchange(tokenName: string, tokenBalance: number, trxBalance: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Create an exchange between a token and another token.
     * DO NOT USE THIS FOR TRX.
     * Token Names should be a CASE SENSITIVE string.
     * PLEASE VERIFY THIS ON TRONSCAN.
     */
    createTokenExchange(firstTokenName: string, firstTokenBalance: number, secondTokenName: string, secondTokenBalance: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Adds tokens into a bancor style exchange.
     * Will add both tokens at market rate.
     * Use "_" for the constant value for TRX.
     */
    injectExchangeTokens(exchangeID: number, tokenName: string, tokenAmount: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Withdraws tokens from a bancor style exchange.
     * Will withdraw at market rate both tokens.
     * Use "_" for the constant value for TRX.
     */
    withdrawExchangeTokens(exchangeID: number, tokenName: string, tokenAmount: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Trade tokens on a bancor style exchange.
     * Expected value is a validation and used to cap the total amt of token 2 spent.
     * Use "_" for the constant value for TRX.
     */
    tradeExchangeTokens(exchangeID: number, tokenName: string, tokenAmountSold: number, tokenAmountExpected: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Update userFeePercentage.
     */
    updateSetting(contractAddress: string, userFeePercentage: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    /**
     * Update energy limit.
     */
    updateEnergyLimit(contractAddress: string, originEnergyLimit?: number, ownerAddress?: string, options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    private checkPermissions;
    updateAccountPermissions(ownerAddress: string | undefined, ownerPermission: Permission, witnessPermission?: Permission, activesPermissions?: Permission | Permission[], options?: TransactionCommonOptions): Promise<Transaction<import("../../types/Contract.js").ContractParamter>>;
    newTxID(transaction: SignedTransaction, options?: {
        txLocal?: boolean;
    }): Promise<TransactionWrapper | Transaction<import("../../types/Contract.js").ContractParamter>>;
    alterTransaction(transaction: Transaction, options?: AlterTransactionOptions): Promise<TransactionWrapper | Transaction<import("../../types/Contract.js").ContractParamter>>;
    extendExpiration(transaction: SignedTransaction, extension: number, options?: TxLocal): Promise<TransactionWrapper | Transaction<import("../../types/Contract.js").ContractParamter>>;
    addUpdateData(transaction: Transaction, data: string, dataFormat?: 'utf8' | 'hex', options?: TxLocal): Promise<TransactionWrapper | Transaction<import("../../types/Contract.js").ContractParamter>>;
}
