/** * Delta encoding for sequential numeric data * * Stores differences between consecutive values instead of absolute values. * Highly effective for time-series, sequential IDs, and monotonic data. * * Example: * Original: [100, 101, 102, 103, 104] * Delta: [100, +1, +1, +1, +1] * Savings: ~40% for sequential data */ import type { DeltaOptions } from './types.js'; /** * Delta encoding analysis result */ export interface DeltaAnalysis { isMonotonic: boolean; avgDelta: number; maxDelta: number; minDelta: number; compressionRatio: number; recommended: boolean; } /** * Delta encoder for sequential numeric data */ export declare class DeltaEncoder { private options; constructor(options?: Partial); /** * Analyze values for delta encoding suitability * * @param values - Array of numeric values * @returns Analysis with recommendations */ analyzeSequence(values: number[]): DeltaAnalysis; /** * Encode values using delta encoding * * First value is stored as-is (base value), subsequent values as deltas. * * @param values - Array of numeric values * @returns Encoded values (base + deltas) */ encode(values: number[]): (number | string)[]; /** * Decode delta-encoded values back to original * * @param encoded - Delta-encoded values * @returns Original values */ decode(encoded: (number | string)[]): number[]; /** * Generate delta encoding directive * * Format: @delta columnName * * @param columnName - Column name * @returns TONL directive string */ generateDirective(columnName: string): string; /** * Parse delta encoding directive * * @param directive - TONL directive like "@delta timestamp" * @returns Column name */ parseDirective(directive: string): string; /** * Check if delta encoding would be beneficial * * @param values - Numeric values * @param minCompressionRatio - Minimum compression ratio (default: 0.15 = 15%) * @returns True if delta encoding is recommended */ shouldEncode(values: number[], minCompressionRatio?: number): boolean; /** * Encode with automatic analysis * * Only applies delta encoding if beneficial * * @param values - Array of numeric values * @returns Encoded values or original if not beneficial */ smartEncode(values: number[]): (number | string)[]; /** * Estimate byte savings from delta encoding * * @param values - Original values * @returns Estimated bytes saved */ estimateSavings(values: number[]): number; } /** * Delta decoder for restoring original values */ export declare class DeltaDecoder { private deltaColumns; /** * Parse and register delta directive * * @param directive - TONL directive like "@delta timestamp" */ parseDirective(directive: string): void; /** * Check if a column uses delta encoding * * @param columnName - Column name * @returns True if column is delta-encoded */ isDeltaEncoded(columnName: string): boolean; /** * Decode delta-encoded values * * @param columnName - Column name * @param values - Encoded values * @returns Decoded values */ decode(columnName: string, values: (number | string)[]): number[]; /** * Get all delta-encoded column names * * @returns Array of column names */ getDeltaColumns(): string[]; /** * Clear all delta directives */ clear(): void; } //# sourceMappingURL=delta.d.ts.map