import { BitcoinAddressCache } from "../bitcoin-address-cache.utils";
import type { BitcoinAddresses } from "../../interfaces";
/**
 * Initialize the global address cache with sensible defaults
 */
export declare function initializeAddressCache(config?: {
    maxSize?: number;
    ttlMs?: number;
    debug?: boolean;
}): void;
/**
 * Get the global address cache instance
 */
export declare function getAddressCache(): BitcoinAddressCache | null;
/**
 * Convert hex string to Uint8Array
 * @param hexString Hex string
 * @returns Uint8Array
 */
export declare const hexToUint8Array: (hexString: string) => Uint8Array;
/**
 * SHA256 hash using Node.js crypto module
 * @param data Uint8Array
 * @returns Uint8Array
 */
export declare const sha256: (data: Uint8Array) => Uint8Array;
/**
 * RIPEMD160 hash using native Web Crypto API
 * @param data Uint8Array
 * @returns Promise<Uint8Array>
 */
export declare const ripemd160: (data: Uint8Array) => Uint8Array;
/**
 * Convert CryptoJS WordArray to Uint8Array (fallback for RIPEMD160)
 * @param wordArray CryptoJS WordArray
 * @returns Uint8Array
 */
export declare const wordArrayToUint8Array: (wordArray: any) => Uint8Array;
/**
 * Generate a Bitcoin address from a PKP public key for regtest or mainnet.
 * @param pkpPublicKey Hex string public key (with or without '0x' prefix)
 * @param network "regtest" | "mainnet" | "testnet"
 * @returns Bitcoin address (string)
 */
export declare function getBitcoinAddressFromPkp(pkpPublicKey: string, network?: "regtest" | "mainnet" | "testnet"): Promise<string>;
/**
 * Generate multiple Bitcoin addresses from a PKP public key for different networks.
 * Uses caching to avoid repeated SHA256+RIPEMD160 operations for the same PKP ID.
 * @param pkpPublicKey Hex string public key (with or without '0x' prefix)
 * @returns Object containing addresses for different networks
 */
export declare function getBitcoinAddressesFromPkp(pkpPublicKey: string): Promise<BitcoinAddresses>;
export declare class BitcoinUtils {
    /**
     * Validate a Bitcoin address across mainnet / testnet / regtest with full
     * checksum verification.
     *
     * Audit H-12: the previous implementation was a permissive regex with no
     * checksum check — garbage like `bc1qqqqqqqqqq` passed. The new
     * implementation uses the `bech32` and `bs58check` packages (both already
     * in deps) to validate the actual checksum, and rejects unknown HRPs /
     * version bytes / witness program lengths.
     */
    static validateAddress(address: string): boolean;
    static formatTransaction(hash: string, amount: string, recipient: string): {
        hash: string;
        amount: string;
        recipient: string;
        timestamp: number;
    };
    static calculateFee(inputAmount: string, outputAmount: string): string;
    /**
     * Generate Bitcoin addresses from PKP public key
     * @param pkpPublicKey PKP public key
     * @param network Bitcoin network
     * @returns Bitcoin address
     */
    static getBitcoinAddress(pkpPublicKey: string, network?: "regtest" | "mainnet" | "testnet"): Promise<string>;
    /**
     * Generate Bitcoin addresses for all networks
     * @param pkpPublicKey PKP public key
     * @returns Object with addresses for all networks
     */
    static getAllBitcoinAddresses(pkpPublicKey: string): Promise<BitcoinAddresses>;
}
