/**
 * Create a hash object for incremental hashing (cross-platform - synchronous)
 *
 * This function works in both Node.js and browser environments using
 * synchronous noble hash implementations.
 *
 * @param algorithm - Hash algorithm ('sha256', 'sha1', 'sha512')
 * @returns Hash object with update() and digest() methods
 */
export declare function createHash(algorithm: string): {
    update(data: string | Uint8Array): ReturnType<typeof createHash>;
    digest(): Uint8Array;
};
/**
 * Create a hash asynchronously (works in both Node.js and browser)
 *
 * This is the recommended method for cross-platform code.
 *
 * @param algorithm - Hash algorithm ('sha256', 'sha1', 'sha512')
 * @param data - Data to hash
 * @returns Hash result
 */
export declare function createHashAsync(algorithm: string, data: string | Uint8Array): Promise<Uint8Array>;
/**
 * Create a cipher for encryption (cross-platform - synchronous)
 *
 * @param algorithm - Cipher algorithm (only 'aes-256-cbc' is supported)
 * @param key - 256-bit (32-byte) encryption key
 * @param iv - 128-bit (16-byte) initialization vector
 * @returns Cipher object with update() and final() methods
 */
export declare function createCipheriv(algorithm: string, key: Uint8Array, iv: Uint8Array): {
    update(data: string, inputEncoding: string, outputEncoding: string): string;
    final(encoding: string): string;
};
/**
 * Create a decipher for decryption (cross-platform - synchronous)
 *
 * @param algorithm - Cipher algorithm (only 'aes-256-cbc' is supported)
 * @param key - 256-bit (32-byte) decryption key
 * @param iv - 128-bit (16-byte) initialization vector
 * @returns Decipher object with update() and final() methods
 */
export declare function createDecipheriv(algorithm: string, key: Uint8Array, iv: Uint8Array): {
    update(data: string, inputEncoding: string, outputEncoding: string): string;
    final(encoding: string): string;
};
/**
 * Encrypt data asynchronously (works in both Node.js and browser)
 *
 * This is the recommended method for cross-platform code using AES-256-CBC.
 *
 * @param key - 256-bit (32-byte) encryption key
 * @param iv - 128-bit (16-byte) initialization vector
 * @param data - Data to encrypt
 * @returns Encrypted data
 */
export declare function encryptAsync(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Promise<Uint8Array>;
/**
 * Decrypt data asynchronously (works in both Node.js and browser)
 *
 * This is the recommended method for cross-platform code using AES-256-CBC.
 *
 * @param key - 256-bit (32-byte) decryption key
 * @param iv - 128-bit (16-byte) initialization vector
 * @param data - Data to decrypt
 * @returns Decrypted data
 */
export declare function decryptAsync(key: Uint8Array, iv: Uint8Array, data: Uint8Array): Promise<Uint8Array>;
/**
 * Encrypt using AES-256-GCM (synchronous).
 *
 * This is used for cross-language secret encryption with integrity protection.
 */
export declare function encryptAes256Gcm(key: Uint8Array, iv: Uint8Array, plaintext: Uint8Array, aad?: Uint8Array): {
    ciphertext: Uint8Array;
    tag: Uint8Array;
};
/**
 * Decrypt using AES-256-GCM (synchronous).
 */
export declare function decryptAes256Gcm(key: Uint8Array, iv: Uint8Array, ciphertext: Uint8Array, tag: Uint8Array, aad?: Uint8Array): Uint8Array;
//# sourceMappingURL=crypto-compat.d.ts.map