/** * Delta Encoding with Varint for Neighbor Lists * * Implements delta-encoded neighbor lists as used by Qdrant for ~38% storage reduction. * Neighbor IDs are sorted, then stored as deltas with variable-length encoding. * * Format: * - First ID stored as full uint32 * - Subsequent IDs stored as varint deltas from previous ID * * Varint encoding (like Protocol Buffers): * - Values 0-127: 1 byte * - Values 128-16383: 2 bytes * - Values 16384-2097151: 3 bytes * - Values 2097152-268435455: 4 bytes * - Larger: 5 bytes */ /** * Encode an unsigned integer as a varint * Returns the number of bytes written */ export declare function encodeVarint(value: number, buffer: Uint8Array, offset: number): number; /** * Decode a varint from buffer * Returns [value, bytesRead] */ export declare function decodeVarint(buffer: Uint8Array, offset: number): [number, number]; /** * Calculate the number of bytes needed to encode a varint */ export declare function varintSize(value: number): number; /** * Delta-encode a sorted array of neighbor IDs * Returns the encoded buffer */ export declare function deltaEncodeNeighbors(neighbors: number[], preSorted?: boolean): Uint8Array; /** * Decode a delta-encoded neighbor list * Returns the original neighbor IDs (sorted) */ export declare function deltaDecodeNeighbors(buffer: Uint8Array, count: number): number[]; /** * Calculate the encoded size for a neighbor list without actually encoding * Useful for calculating total buffer size before serialization */ export declare function deltaEncodedSize(neighbors: number[], preSorted?: boolean): number; /** * Batch encode multiple neighbor lists efficiently * Returns a single buffer with all encoded lists concatenated * Also returns offsets for each list */ export declare function deltaEncodeBatch(neighborLists: number[][]): { buffer: Uint8Array; offsets: number[]; sizes: number[]; }; /** * Decode a batch of neighbor lists from a single buffer */ export declare function deltaDecodeBatch(buffer: Uint8Array, offsets: number[], sizes: number[], counts: number[]): number[][]; //# sourceMappingURL=DeltaEncoder.d.ts.map