import * as bitcoin from 'bitcoinjs-lib';
import { TransactionInput, TransactionOutput, TransactionOptions, PreparedTransaction, AddressType, ElectrumUTXO, PSBTOptions } from '../types/wallet';
export declare class TransactionBuilder {
    private network;
    constructor(network?: bitcoin.Network);
    /**
     * Create a Bitcoin transaction from inputs and outputs
     */
    createTransaction(inputs: TransactionInput[], outputs: TransactionOutput[], options?: TransactionOptions): Promise<PreparedTransaction>;
    /**
     * Add input to PSBT based on address type
     */
    private addInputToPsbt;
    /**
     * Get script for address based on type
     */
    private getScriptForAddress;
    /**
     * Estimate transaction size in virtual bytes
     */
    estimateTransactionSize(inputs: TransactionInput[], outputs: TransactionOutput[], hasChange?: boolean): number;
    /**
     * Convert UTXOs to transaction inputs
     */
    convertUTXOsToInputs(utxos: ElectrumUTXO[], addressDetails: Map<string, {
        address: string;
        privateKey: string;
        publicKey: string;
        addressType: AddressType;
    }>): TransactionInput[];
    /**
     * Select UTXOs for a transaction using a simple selection algorithm
     */
    selectUTXOs(utxos: ElectrumUTXO[], targetAmount: number, feeRate?: number): {
        selectedUTXOs: ElectrumUTXO[];
        totalValue: number;
        estimatedFee: number;
    };
    /**
     * Create a PSBT (Partially Signed Bitcoin Transaction)
     */
    createPSBT(options: PSBTOptions): bitcoin.Psbt;
    /**
     * Validate transaction before broadcasting
     */
    validateTransaction(tx: PreparedTransaction): boolean;
    /**
     * Get network-specific dust limit
     */
    getDustLimit(): number;
    /**
     * Calculate transaction priority score
     */
    calculatePriority(inputs: TransactionInput[], feeRate: number): number;
}
