import type { UtxoExplorer } from '../../Explorer/UtxoExplorer';
/** Details passed to the confirmation callback. */
export interface UtxoConfirmationDetails {
    /** Transaction hash. */
    transactionId: string;
    /** Block height the transaction was included in. */
    blockHeight: number;
}
/**
 * Represents a UTXO transaction that has been signed and broadcast to the network.
 *
 * Use {@link onConfirmed} to register a callback that fires when the
 * transaction is confirmed on-chain.
 *
 * @example
 * ```ts
 * const broadcasted = await tx.signAndBroadcast();
 * console.log('TX sent:', broadcasted.transactionId);
 *
 * const cancel = broadcasted.onConfirmed((details) => {
 *   console.log('Confirmed in block', details.blockHeight);
 * });
 *
 * // Stop waiting at any time:
 * cancel();
 * ```
 */
export declare class BroadcastedUtxoTransaction {
    /** The transaction ID returned by the network. */
    readonly transactionId: string;
    private readonly explorer;
    private confirmationDetails;
    private polling;
    private cancelled;
    private callbacks;
    /** @internal */
    constructor(transactionId: string, explorer: UtxoExplorer);
    /**
     * Registers a callback to be invoked when the transaction is confirmed.
     *
     * - If the transaction is already confirmed, the callback fires immediately.
     * - Multiple callbacks can be registered; they all fire once on confirmation.
     * - Polling starts automatically on the first call and stops after confirmation
     *   or when the returned `cancel` function is called.
     *
     * @param callback - Function invoked with confirmation details.
     * @returns A function that, when called, removes this callback and stops
     *          polling if no other callbacks remain.
     */
    onConfirmed(callback: (details: UtxoConfirmationDetails) => void): () => void;
    /** Polls the explorer for transaction confirmation. */
    private poll;
    /** Invokes all registered callbacks and clears the list. */
    private fireCallbacks;
}
