/**
 * HMAC-SHA256 integrity verification using Web Crypto API.
 *
 * Provides message-level integrity for the XorIDA pipeline.
 * The HMAC is computed over the padded payload (after TLV serialization + PKCS#7 padding)
 * and verified after reconstruction, before unpadding.
 *
 * Uses crypto.subtle for constant-time verification (no manual byte comparison).
 */
/**
 * Generate a fresh random HMAC key and sign data with HMAC-SHA256.
 *
 * @param data - Bytes to sign (the padded payload)
 * @returns Object containing the raw key bytes and the 32-byte signature
 */
export declare function generateHMAC(data: Uint8Array): Promise<{
    key: Uint8Array;
    signature: Uint8Array;
}>;
/**
 * Verify an HMAC-SHA256 signature using constant-time comparison.
 *
 * Uses crypto.subtle.verify() which is constant-time by specification.
 * NEVER manually compare HMAC bytes (timing attack risk).
 *
 * @param key - Raw HMAC key bytes (32 bytes)
 * @param data - Data that was signed
 * @param signature - Expected HMAC-SHA256 signature (32 bytes)
 * @returns true if signature is valid, false otherwise
 */
export declare function verifyHMAC(key: Uint8Array, data: Uint8Array, signature: Uint8Array): Promise<boolean>;
/**
 * Sign data with a provided HMAC key (for cases where the key is already known).
 *
 * @param key - Raw HMAC key bytes (32 bytes)
 * @param data - Bytes to sign
 * @returns 32-byte HMAC-SHA256 signature
 */
export declare function signHMAC(key: Uint8Array, data: Uint8Array): Promise<Uint8Array>;
