import { HybridCipherConfig, EncodingFormat } from './types';
/**
 * Hybrid cipher combining RSA-OAEP and AES-256-GCM.
 * Mirrors FluxEncrypt's HybridCipher API.
 *
 * The encryption format is:
 * [1 byte version][2 bytes RSA ciphertext length][N bytes RSA ciphertext][12 bytes IV][M bytes AES ciphertext]
 *
 * Usage:
 * ```typescript
 * const keypair = await generateKeyPair()
 * const cipher = createHybridCipher()
 * const encrypted = await cipher.encrypt(keypair.publicKey, 'secret data')
 * const decrypted = await cipher.decrypt(keypair.privateKey, encrypted)
 * ```
 */
export declare class HybridCipherImpl {
    private encoding;
    private rsaKeySize;
    constructor(config?: HybridCipherConfig);
    /**
     * Encrypt data using hybrid encryption.
     * 1. Generate a random AES key
     * 2. Encrypt the AES key with RSA-OAEP
     * 3. Encrypt the data with AES-GCM
     * 4. Combine: version + RSA ciphertext length + RSA ciphertext + IV + AES ciphertext
     */
    encrypt(publicKey: CryptoKey, plaintext: string | Uint8Array): Promise<string>;
    /**
     * Decrypt data using hybrid encryption.
     * 1. Parse the combined ciphertext
     * 2. Decrypt the AES key with RSA-OAEP
     * 3. Decrypt the data with AES-GCM
     */
    decrypt(privateKey: CryptoKey, ciphertext: string): Promise<Uint8Array>;
    /**
     * Decrypt and return as string.
     */
    decryptToString(privateKey: CryptoKey, ciphertext: string): Promise<string>;
    /**
     * Get the current encoding format.
     */
    getEncoding(): EncodingFormat;
    /**
     * Get the RSA key size.
     */
    getRsaKeySize(): number;
}
/**
 * Create a hybrid cipher instance.
 */
export declare function createHybridCipher(config?: HybridCipherConfig): HybridCipherImpl;
/**
 * Encrypt data with a public key (one-shot operation).
 */
export declare function hybridEncrypt(publicKey: CryptoKey, plaintext: string | Uint8Array, config?: HybridCipherConfig): Promise<string>;
/**
 * Decrypt data with a private key (one-shot operation).
 */
export declare function hybridDecrypt(privateKey: CryptoKey, ciphertext: string, config?: HybridCipherConfig): Promise<Uint8Array>;
/**
 * Decrypt data with a private key and return as string (one-shot operation).
 */
export declare function hybridDecryptToString(privateKey: CryptoKey, ciphertext: string, config?: HybridCipherConfig): Promise<string>;
//# sourceMappingURL=hybrid.d.ts.map