/**
 * Copyright Valkey GLIDE Project Contributors - SPDX Identifier: Apache-2.0
 */
/**
 * Compression backend to use for automatic value compression.
 */
export declare enum CompressionBackend {
    /** Use zstd compression backend. */
    ZSTD = 0,
    /** Use lz4 compression backend. */
    LZ4 = 1
}
/**
 * Configuration for automatic compression of values sent to the server.
 *
 * NOTE: This is an experimental feature. The API may change in future releases.
 *
 * When compression is enabled, values that meet the minimum size threshold
 * will be automatically compressed before being sent to the server and
 * decompressed when retrieved.
 *
 * @example
 * ```typescript
 * // Enable compression with defaults (ZSTD, 64 byte threshold)
 * const config: CompressionConfiguration = { enabled: true };
 *
 * // Enable compression with LZ4 backend and custom threshold
 * const config: CompressionConfiguration = {
 *     enabled: true,
 *     backend: CompressionBackend.LZ4,
 *     minCompressionSize: 128,
 * };
 *
 * // Enable compression with custom max decompressed size limit
 * const config: CompressionConfiguration = {
 *     enabled: true,
 *     maxDecompressedSize: 100 * 1024 * 1024, // 100MB limit
 * };
 * ```
 */
export interface CompressionConfiguration {
    /**
     * Whether compression is enabled. Defaults to false.
     */
    enabled: boolean;
    /**
     * The compression backend to use. Defaults to ZSTD.
     */
    backend?: CompressionBackend;
    /**
     * The compression level. If not set, the backend's default level is used.
     * Valid ranges are backend-specific and validated by the Rust core.
     * ZSTD default is 3, LZ4 default is 0.
     */
    compressionLevel?: number;
    /**
     * Minimum size in bytes for values to be compressed.
     * Values smaller than this will not be compressed.
     * Must be at least 6 bytes. Defaults to 64 bytes.
     */
    minCompressionSize?: number;
    /**
     * Maximum allowed size in bytes for decompressed data.
     * This limit prevents decompression bombs (maliciously crafted compressed data
     * that expands to huge sizes).
     * If not set, defaults to 512MB (matching Valkey's proto-max-bulk-len).
     */
    maxDecompressedSize?: number;
}
