/**
* @djangocfg/crypto
*
* Client-side AES-256-GCM decryption for Django-CFG encrypted API responses.
*
* @packageDocumentation
*
* @example
* ```typescript
* // Basic usage - decrypt a single field
* import { createDecryptionClient } from '@djangocfg/crypto';
*
* const crypto = await createDecryptionClient({
* secretKey: 'your-django-secret-key',
* userId: 123 // optional, for per-user encryption
* });
*
* const response = await fetch('/api/products/?encrypt=true');
* const data = await crypto.decryptObject(await response.json());
* console.log(data.price); // decrypted value
* ```
*
* @example
* ```typescript
* // React usage
* import { useDecrypt } from '@djangocfg/crypto/react';
*
* function ProductPrice({ product }) {
* const { data, isLoading } = useDecrypt(product, {
* secretKey: process.env.NEXT_PUBLIC_DECRYPT_KEY!
* });
*
* if (isLoading) return ;
* return {data.price};
* }
* ```
*/
// Types
export type {
EncryptedField,
EncryptedResponse,
DecryptionConfig,
DecryptionResult,
DecryptionError,
} from './types';
export { isEncryptedField, isEncryptedResponse } from './types';
// Key derivation
export {
deriveKey,
deriveKeyBytes,
deriveKeyFromConfig,
buildSalt,
} from './key-derivation';
// Decryption
export {
decryptAES256GCM,
decryptField,
decryptResponse,
decryptObject,
createDecryptionClient,
safeDecrypt,
} from './decryption';