import { TronWeb } from "tronweb";
import { PopulatedTransaction } from "ethers";
export interface TronTransactionResult {
    txid: string;
    result: boolean;
}
/** Result of an off-chain contract call via `triggerConstantContract` (no broadcast). */
export interface TronSimulationResult {
    success: boolean;
    message?: string;
    constantResult?: unknown;
    energyUsed?: number;
    energyRequired?: number;
    energyPenalty?: number;
}
/**
 * Submit a populated EVM transaction to TRON via TronWeb.
 *
 * The EVM `populateV3Relay()` already produces correct ABI-encoded calldata.
 * This function extracts `to` and `data` from the PopulatedTransaction,
 * converts the target address to TRON Base58 format, and uses TronWeb's
 * `triggerSmartContract` → `sign` → `sendRawTransaction` pipeline.
 *
 * @param tronWeb An authenticated TronWeb instance (with private key set).
 * @param populatedTx The populated transaction containing `to` and `data`.
 * @param feeLimit The maximum TRX to burn for energy consumption, in SUN (1 TRX = 1,000,000 SUN).
 * @returns The transaction ID and result status.
 */
export declare function submitTransaction(tronWeb: TronWeb, populatedTx: PopulatedTransaction, feeLimit: number, callValue?: number): Promise<TronTransactionResult>;
/**
 * Simulate a populated EVM transaction against TRON via TronWeb (constant call / `eth_call`-style).
 *
 * Same calldata path as {@link submitTransaction}: `to` and `data` from the populated tx,
 * EVM `to` converted to TRON Base58, empty function selector with `{ input: data }`.
 * Does not sign or broadcast.
 *
 * @param tronWeb TronWeb instance with a default address (used as `caller`).
 * @param populatedTx Must contain `to` and `data`.
 * @param feeLimit Maximum TRX for energy, in SUN (mirrors `submitTransaction`).
 */
export declare function simulateTransaction(tronWeb: TronWeb, populatedTx: PopulatedTransaction, feeLimit: number, callValue?: number): Promise<TronSimulationResult>;
//# sourceMappingURL=TransactionUtils.d.ts.map