import { CryptoManagerConfig, KeyPair, DerivedKeyResult } from './types';
/**
 * Crypto Module
 * @countermeasure/web-components
 *
 * Client-side encryption utilities compatible with FluxEncrypt.
 * Provides AES-256-GCM symmetric encryption and RSA-OAEP hybrid encryption.
 */
export type { EncodingFormat, SymmetricCipherConfig, EncryptedData, SymmetricCipher, HybridCipherConfig, KeyPair, ExportedKeyPair, HybridCipher, KeyDerivationConfig, DerivedKeyResult, CryptoManagerConfig, CryptoManager, CryptoErrorCode, } from './types';
export { CryptoError } from './types';
export { toBase64, fromBase64, toHex, fromHex, stringToBytes, bytesToString, encodeEncryptedData, decodeEncryptedData, constantTimeEqual, zeroize, concat, } from './encoding';
export { encodeOutput, decodeInput } from './encoding-helpers';
export { generateSymmetricKey, importSymmetricKey, generateIV, randomBytes, generateKeyPair, exportPublicKey, exportPrivateKey, importPublicKey, importPrivateKey, deriveKeyFromPassword, exportDerivedKey, } from './keys';
export { SymmetricCipherImpl, createSymmetricCipher, createSymmetricCipherFromKey, encryptSecret, decryptSecret, } from './symmetric';
export { HybridCipherImpl, createHybridCipher, hybridEncrypt, hybridDecrypt, hybridDecryptToString, } from './hybrid';
/**
 * Unified crypto manager providing access to all encryption operations.
 * Mirrors FluxEncrypt's Cryptum interface.
 *
 * Usage:
 * ```typescript
 * const crypto = createCryptoManager()
 *
 * // Symmetric encryption
 * const key = await crypto.generateSymmetricKey()
 * const encrypted = await crypto.encryptSecret(key, 'my-secret')
 * const decrypted = await crypto.decryptSecret(key, encrypted)
 *
 * // Hybrid encryption
 * const keypair = await crypto.generateKeyPair()
 * const ciphertext = await crypto.encrypt(keypair.publicKey, 'secret data')
 * const plaintext = await crypto.decrypt(keypair.privateKey, ciphertext)
 * ```
 */
export declare class CryptoManagerImpl {
    private config;
    constructor(config?: CryptoManagerConfig);
    /**
     * Generate a new symmetric key (hex-encoded).
     */
    generateSymmetricKey(): Promise<string>;
    /**
     * Encrypt a secret with a hex key.
     */
    encryptSecret(hexKey: string, plaintext: string): Promise<string>;
    /**
     * Decrypt a secret with a hex key.
     */
    decryptSecret(hexKey: string, ciphertext: string): Promise<string>;
    /**
     * Generate a new RSA key pair.
     */
    generateKeyPair(): Promise<KeyPair>;
    /**
     * Encrypt data with a public key using hybrid encryption.
     */
    encrypt(publicKey: CryptoKey, data: string | Uint8Array): Promise<string>;
    /**
     * Decrypt data with a private key using hybrid encryption.
     */
    decrypt(privateKey: CryptoKey, ciphertext: string): Promise<Uint8Array>;
    /**
     * Decrypt data and return as string.
     */
    decryptToString(privateKey: CryptoKey, ciphertext: string): Promise<string>;
    /**
     * Export a public key to PEM format.
     */
    exportPublicKey(key: CryptoKey): Promise<string>;
    /**
     * Export a private key to PEM format.
     */
    exportPrivateKey(key: CryptoKey): Promise<string>;
    /**
     * Import a public key from PEM format.
     */
    importPublicKey(pem: string): Promise<CryptoKey>;
    /**
     * Import a private key from PEM format.
     */
    importPrivateKey(pem: string): Promise<CryptoKey>;
    /**
     * Derive a key from a password using PBKDF2.
     */
    deriveKeyFromPassword(password: string, salt?: Uint8Array): Promise<DerivedKeyResult>;
    /**
     * Get the current configuration.
     */
    getConfig(): Required<CryptoManagerConfig>;
}
/**
 * Create a new CryptoManager instance.
 */
export declare function createCryptoManager(config?: CryptoManagerConfig): CryptoManagerImpl;
/**
 * Get the default CryptoManager instance.
 */
export declare function getDefaultCryptoManager(config?: CryptoManagerConfig): CryptoManagerImpl;
/**
 * Convenience function to create a CryptoManager (matches FluxEncrypt's `cryptum()` function).
 */
export declare function cryptum(config?: CryptoManagerConfig): CryptoManagerImpl;
//# sourceMappingURL=index.d.ts.map