@ai2070/l0
Version:
L0: The Missing Reliability Substrate for AI
96 lines • 4.72 kB
TypeScript
import type { L0EventStore, L0EventStoreWithSnapshots, L0EventEnvelope, L0RecordedEvent, L0Snapshot } from "../types/events";
export interface StorageAdapterConfig {
type: string;
connection?: string;
prefix?: string;
ttl?: number;
options?: Record<string, unknown>;
}
export type StorageAdapterFactory = (config: StorageAdapterConfig) => L0EventStore | Promise<L0EventStore>;
export declare function registerStorageAdapter(type: string, factory: StorageAdapterFactory): void;
export declare function unregisterStorageAdapter(type: string): boolean;
export declare function getRegisteredAdapters(): string[];
export declare function createEventStore(config: StorageAdapterConfig): Promise<L0EventStore>;
export declare abstract class BaseEventStore implements L0EventStore {
protected prefix: string;
protected ttl: number;
constructor(config?: StorageAdapterConfig);
protected getStreamKey(streamId: string): string;
protected getMetaKey(streamId: string): string;
protected isExpired(timestamp: number): boolean;
abstract append(streamId: string, event: L0RecordedEvent): Promise<void>;
abstract getEvents(streamId: string): Promise<L0EventEnvelope[]>;
abstract exists(streamId: string): Promise<boolean>;
abstract delete(streamId: string): Promise<void>;
abstract listStreams(): Promise<string[]>;
getLastEvent(streamId: string): Promise<L0EventEnvelope | null>;
getEventsAfter(streamId: string, afterSeq: number): Promise<L0EventEnvelope[]>;
}
export declare abstract class BaseEventStoreWithSnapshots extends BaseEventStore implements L0EventStoreWithSnapshots {
protected getSnapshotKey(streamId: string): string;
abstract saveSnapshot(snapshot: L0Snapshot): Promise<void>;
abstract getSnapshot(streamId: string): Promise<L0Snapshot | null>;
getSnapshotBefore(streamId: string, seq: number): Promise<L0Snapshot | null>;
}
export declare class FileEventStore extends BaseEventStoreWithSnapshots {
private basePath;
private fs;
private path;
constructor(config: StorageAdapterConfig & {
basePath?: string;
});
private ensureFs;
static validateStreamId(streamId: string): string;
private getFilePath;
private getSnapshotFilePath;
append(streamId: string, event: L0RecordedEvent): Promise<void>;
getEvents(streamId: string): Promise<L0EventEnvelope[]>;
exists(streamId: string): Promise<boolean>;
delete(streamId: string): Promise<void>;
listStreams(): Promise<string[]>;
saveSnapshot(snapshot: L0Snapshot): Promise<void>;
getSnapshot(streamId: string): Promise<L0Snapshot | null>;
}
export declare class LocalStorageEventStore extends BaseEventStoreWithSnapshots {
private storage;
constructor(config?: StorageAdapterConfig);
append(streamId: string, event: L0RecordedEvent): Promise<void>;
getEvents(streamId: string): Promise<L0EventEnvelope[]>;
exists(streamId: string): Promise<boolean>;
delete(streamId: string): Promise<void>;
listStreams(): Promise<string[]>;
saveSnapshot(snapshot: L0Snapshot): Promise<void>;
getSnapshot(streamId: string): Promise<L0Snapshot | null>;
private addToStreamList;
private removeFromStreamList;
}
export declare class CompositeEventStore implements L0EventStore {
private stores;
private primaryIndex;
constructor(stores: L0EventStore[], primaryIndex?: number);
private get primary();
append(streamId: string, event: L0RecordedEvent): Promise<void>;
getEvents(streamId: string): Promise<L0EventEnvelope[]>;
exists(streamId: string): Promise<boolean>;
getLastEvent(streamId: string): Promise<L0EventEnvelope | null>;
getEventsAfter(streamId: string, afterSeq: number): Promise<L0EventEnvelope[]>;
delete(streamId: string): Promise<void>;
listStreams(): Promise<string[]>;
}
export declare function createCompositeStore(stores: L0EventStore[], primaryIndex?: number): CompositeEventStore;
export declare class TTLEventStore implements L0EventStore {
private store;
private ttl;
constructor(store: L0EventStore, ttlMs: number);
private isExpired;
private filterExpired;
append(streamId: string, event: L0RecordedEvent): Promise<void>;
getEvents(streamId: string): Promise<L0EventEnvelope[]>;
exists(streamId: string): Promise<boolean>;
getLastEvent(streamId: string): Promise<L0EventEnvelope | null>;
getEventsAfter(streamId: string, afterSeq: number): Promise<L0EventEnvelope[]>;
delete(streamId: string): Promise<void>;
listStreams(): Promise<string[]>;
}
export declare function withTTL(store: L0EventStore, ttlMs: number): TTLEventStore;
//# sourceMappingURL=storageAdapters.d.ts.map