/** * @nahisaho/yata-scale - WAL Manager * * Write-Ahead Log for durability and sync */ import type { Entity, Relationship, WALEntry } from '../types.js'; /** * WAL operation type */ export type WALOperation = 'create' | 'update' | 'delete'; /** * WAL entry with full data */ export interface WALRecord { readonly sequenceNumber: number; readonly timestamp: Date; readonly operation: WALOperation; readonly entityType: 'entity' | 'relationship'; readonly entityId: string; readonly data?: Entity | Relationship; readonly previousData?: Entity | Relationship; readonly checksum: number; } /** * Write-Ahead Log manager */ export declare class WALManager { private currentSegment; private closedSegments; private sequenceNumber; private readonly maxEntriesPerSegment; private readonly maxSegments; constructor(maxEntriesPerSegment?: number, maxSegments?: number); /** * Create a new segment */ private createSegment; /** * Append entity create operation */ appendCreate(entity: Entity): WALRecord; /** * Append entity update operation */ appendUpdate(entity: Entity, previous?: Entity): WALRecord; /** * Append entity delete operation */ appendDelete(entityId: string, previous?: Entity): WALRecord; /** * Append relationship create operation */ appendRelationshipCreate(relationship: Relationship): WALRecord; /** * Append relationship update operation */ appendRelationshipUpdate(relationship: Relationship, previous?: Relationship): WALRecord; /** * Append relationship delete operation */ appendRelationshipDelete(relationshipId: string, previous?: Relationship): WALRecord; /** * Append a record to the WAL */ private append; /** * Rotate to a new segment */ private rotateSegment; /** * Compact old segments */ private compact; /** * Calculate checksum for a record */ private calculateChecksum; /** * Get entries since a sequence number */ getEntriesSince(sequenceNumber: number): WALRecord[]; /** * Get entries in a range */ getEntriesInRange(start: number, end: number): WALRecord[]; /** * Get latest sequence number */ getLatestSequence(): number; /** * Convert to WALEntry format for sync */ toWALEntries(records: WALRecord[]): WALEntry[]; /** * Replay WAL entries */ replay(fromSequence?: number): Generator; /** * Validate a record's checksum */ validateRecord(record: WALRecord): boolean; /** * Get statistics */ getStats(): { currentSequence: number; totalSegments: number; currentSegmentEntries: number; totalEntries: number; }; /** * Clear all segments */ clear(): void; /** * Force segment rotation */ forceRotate(): void; } //# sourceMappingURL=WALManager.d.ts.map