import { SymmetricCipherConfig, EncodingFormat } from './types';
/**
 * AES-256-GCM symmetric cipher for encrypting secrets.
 * Mirrors FluxEncrypt's SymmetricCipher API.
 *
 * Usage:
 * ```typescript
 * const cipher = await createSymmetricCipher(hexKey)
 * const encrypted = await cipher.encrypt('my-secret')
 * const decrypted = await cipher.decrypt(encrypted)
 * ```
 */
export declare class SymmetricCipherImpl {
    private key;
    private encoding;
    private constructor();
    /**
     * Create a new SymmetricCipher from a hex-encoded key.
     */
    static create(hexKey: string, config?: SymmetricCipherConfig): Promise<SymmetricCipherImpl>;
    /**
     * Create a new SymmetricCipher from a CryptoKey.
     */
    static fromKey(key: CryptoKey, config?: SymmetricCipherConfig): SymmetricCipherImpl;
    /**
     * Encrypt plaintext data.
     * Returns base64-encoded ciphertext by default.
     */
    encrypt(plaintext: string | Uint8Array): Promise<string>;
    /**
     * Decrypt ciphertext data.
     * Expects base64-encoded input by default.
     */
    decrypt(ciphertext: string): Promise<string>;
    /**
     * Encrypt raw bytes and return raw bytes.
     */
    encryptBytes(plaintext: Uint8Array): Promise<Uint8Array>;
    /**
     * Decrypt raw bytes and return raw bytes.
     */
    decryptBytes(ciphertext: Uint8Array): Promise<Uint8Array>;
    /**
     * Get the current encoding format.
     */
    getEncoding(): EncodingFormat;
}
/**
 * Create a symmetric cipher from a hex-encoded key.
 * This is the primary way to create a cipher, matching FluxEncrypt's API.
 *
 * @param hexKey - 64-character hex string (32 bytes / 256 bits)
 * @param config - Optional configuration
 */
export declare function createSymmetricCipher(hexKey: string, config?: SymmetricCipherConfig): Promise<SymmetricCipherImpl>;
/**
 * Create a symmetric cipher from a CryptoKey.
 */
export declare function createSymmetricCipherFromKey(key: CryptoKey, config?: SymmetricCipherConfig): SymmetricCipherImpl;
/**
 * Encrypt a secret with a hex key (one-shot operation).
 */
export declare function encryptSecret(hexKey: string, plaintext: string): Promise<string>;
/**
 * Decrypt a secret with a hex key (one-shot operation).
 */
export declare function decryptSecret(hexKey: string, ciphertext: string): Promise<string>;
//# sourceMappingURL=symmetric.d.ts.map