/** * Types for the WAL-based storage engine. */ import type { opType } from './constants'; /** * Operation type for storage operations. */ export type OpType = (typeof opType)[keyof typeof opType]; /** * Location of a record in the data file. * Used by the in-memory index for O(1) lookups. */ export interface RecordLocation { /** Byte offset in the data file */ offset: number; /** Length of the record in bytes */ length: number; /** Sequence number for ordering */ sequenceNumber: bigint; } /** * WAL entry structure. * Fixed 48 bytes on disk, points to data file location. */ export interface WalEntry { /** Operation type (INSERT, UPDATE, DELETE) */ opType: OpType; /** Monotonic sequence number */ sequenceNumber: bigint; /** Offset in data file where record starts */ offset: number; /** Length of record in data file */ length: number; /** First 8 bytes of key hash for validation */ keyHash: Uint8Array; } /** * Data record structure. * Variable size on disk, contains key and embedding. */ export interface DataRecord { /** Operation type (INSERT, UPDATE, DELETE) */ opType: OpType; /** Monotonic sequence number */ sequenceNumber: bigint; /** Unix timestamp in milliseconds when record was created */ timestamp: bigint; /** Record key */ key: string; /** Embedding dimension */ dimension: number; /** Embedding vector */ embedding: Float32Array; } /** * Options for creating a storage engine. */ export interface StorageEngineOptions { /** Path to the data file (without extension) */ dataPath: string; /** Embedding dimension (default: 384 for bge-small-en-v1.5) */ dimension?: number; /** Lock acquisition timeout in milliseconds (default: 10000). Use 0 to fail immediately. */ lockTimeout?: number; /** Open database in read-only mode (default: false). Allows concurrent reads without exclusive lock. */ readOnly?: boolean; } /** * Result of deserializing a data record. */ export interface DeserializeDataResult { record: DataRecord; bytesRead: number; } /** * Result of deserializing a WAL entry. */ export interface DeserializeWalResult { entry: WalEntry; bytesRead: number; } /** * Header information for the data file. */ export interface DataFileHeader { /** Format version */ version: number; /** Embedding dimension */ dimension: number; } /** * Issue found during integrity verification. */ /** * Result of compacting the database. */ export interface CompactionResult { /** Number of records before compaction (including dead records) */ recordsBefore: number; /** Number of live records after compaction */ recordsAfter: number; /** Data file size in bytes before compaction */ bytesBefore: number; /** Data file size in bytes after compaction */ bytesAfter: number; } export interface VerifyIssue { /** Byte offset where the issue was found */ offset: number; /** Description of the issue */ message: string; } /** * Result of verifying database integrity. */ export interface VerifyResult { /** Total number of records scanned (valid + corrupt) */ totalRecords: number; /** Number of valid records */ validRecords: number; /** Number of corrupt records */ corruptRecords: number; /** List of issues found */ issues: VerifyIssue[]; } //# sourceMappingURL=types.d.ts.map