/**
 * UTXO-specific error codes for better error handling and debugging
 */
export declare enum UtxoErrorCode {
    INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
    INVALID_ADDRESS = "INVALID_ADDRESS",
    INVALID_AMOUNT = "INVALID_AMOUNT",
    INVALID_FEE_RATE = "INVALID_FEE_RATE",
    INVALID_MEMO = "INVALID_MEMO",
    INVALID_UTXO = "INVALID_UTXO",
    PROVIDER_ERROR = "PROVIDER_ERROR",
    NETWORK_ERROR = "NETWORK_ERROR",
    VALIDATION_ERROR = "VALIDATION_ERROR",
    TRANSACTION_TOO_LARGE = "TRANSACTION_TOO_LARGE",
    UTXO_SELECTION_FAILED = "UTXO_SELECTION_FAILED",
    BROADCAST_ERROR = "BROADCAST_ERROR",
    SIGNING_ERROR = "SIGNING_ERROR"
}
/**
 * Enhanced error class for UTXO operations with detailed context
 */
export declare class UtxoError extends Error {
    readonly code: UtxoErrorCode;
    readonly details?: Record<string, unknown> | undefined;
    readonly isUtxoError = true;
    constructor(code: UtxoErrorCode, message: string, details?: Record<string, unknown> | undefined);
    /**
     * Create an insufficient balance error
     */
    static insufficientBalance(required: string, available: string, chain?: string): UtxoError;
    /**
     * Create an invalid address error
     */
    static invalidAddress(address: string, network?: string): UtxoError;
    /**
     * Create an invalid amount error
     */
    static invalidAmount(amount: string | number, reason?: string): UtxoError;
    /**
     * Create an invalid fee rate error
     */
    static invalidFeeRate(feeRate: number, reason?: string): UtxoError;
    /**
     * Create an invalid memo error
     */
    static invalidMemo(memo: string, reason: string): UtxoError;
    /**
     * Create a provider error
     */
    static providerError(providerName: string, originalError: Error): UtxoError;
    /**
     * Create a network error
     */
    static networkError(operation: string, originalError: Error): UtxoError;
    /**
     * Create a validation error
     */
    static validationError(message: string, details?: Record<string, unknown>): UtxoError;
    /**
     * Create a transaction too large error
     */
    static transactionTooLarge(currentSize: number, maxSize: number): UtxoError;
    /**
     * Create a UTXO selection failed error
     */
    static utxoSelectionFailed(targetAmount: number, availableAmount: number, strategy?: string): UtxoError;
    /**
     * Create a broadcast error
     */
    static broadcastError(txHash: string, originalError: Error): UtxoError;
    /**
     * Create a signing error
     */
    static signingError(reason: string, details?: Record<string, unknown>): UtxoError;
    /**
     * Convert unknown errors to typed UTXO errors
     */
    static fromUnknown(error: unknown, context?: string): UtxoError;
    /**
     * Check if an error is a UTXO error
     */
    static isUtxoError(error: unknown): error is UtxoError;
    /**
     * Get a user-friendly error message
     */
    getUserFriendlyMessage(): string;
    /**
     * Convert to JSON for logging
     */
    toJSON(): Record<string, unknown>;
}
