@gati-framework/runtime
Version:
Gati runtime execution engine for running handler-based applications
45 lines • 1.97 kB
TypeScript
/**
* @module runtime/types/storage-contract
* @description Storage contract interface for pluggable manifest storage backends
*
* Allows Gati to use any storage implementation (in-memory, SQLite, PostgreSQL, etc.)
* via the module system.
*/
import type { HandlerManifest, HookManifest, GType, Transformer, VersionGraph, TimescapeMetadata } from './manifest-store.js';
/**
* Storage statistics
*/
export interface StorageStats {
manifestCount: number;
gtypeCount: number;
transformerCount: number;
versionGraphCount: number;
timescapeMetadataCount: number;
hookManifestCount: number;
}
/**
* Storage Contract
*
* Interface that all storage backends must implement.
* Provides persistence for manifests, GTypes, transformers, and metadata.
*/
export interface StorageContract {
storeManifest(manifest: HandlerManifest): Promise<void>;
getManifest(id: string, version?: string): Promise<HandlerManifest | undefined>;
getAllManifestVersions(id: string): Promise<HandlerManifest[]>;
storeHookManifest(manifest: HookManifest): Promise<void>;
getHookManifest(handlerId: string): Promise<HookManifest | null>;
listHookManifests(): Promise<HookManifest[]>;
storeGType(gtype: GType): Promise<void>;
getGType(ref: string): Promise<GType | undefined>;
storeTransformer(transformer: Transformer): Promise<void>;
getTransformer(id: string): Promise<Transformer | undefined>;
getTransformersForVersions(handlerId: string, fromVersion: string, toVersion: string): Promise<Transformer[]>;
storeVersionGraph(graph: VersionGraph): Promise<void>;
getVersionGraph(handlerId: string): Promise<VersionGraph | undefined>;
storeTimescapeMetadata(metadata: TimescapeMetadata): Promise<void>;
getTimescapeMetadata(handlerId: string, version: string): Promise<TimescapeMetadata | undefined>;
clear(): Promise<void>;
getStats(): StorageStats;
}
//# sourceMappingURL=storage-contract.d.ts.map