/** * StorageRouter - Intelligent routing of operations to appropriate storage backends * Optimized for sub-10ms latency and efficient resource utilization */ import { StorageEngine, StorageResult, Document, DocumentQuery, VectorData, VectorQuery, VectorSearchResult, TimeSeriesPoint, TimeSeriesQuery, TransactionContext, BatchOperation, StorageConfig, PerformanceMetrics, ShardInfo, ChangeEvent, StreamConfig, StorageBackend, ShardingStrategy } from '../interfaces/storage-engine'; import { D1Config } from '../adapters/d1-adapter'; import { KVConfig } from '../adapters/kv-adapter'; import { R2Config } from '../adapters/r2-adapter'; import { DurableObjectConfig } from '../adapters/durable-object-adapter'; export interface RouterConfig { d1: D1Config; kv: KVConfig; r2: R2Config; durableObject: DurableObjectConfig; sharding: ShardingStrategy; routing: RoutingRules; fallback: FallbackConfig; optimization: OptimizationConfig; } export interface RoutingRules { documentSizeThreshold: number; vectorDimensionThreshold: number; timeSeriesRetention: { hot: string; warm: string; cold: string; }; cacheRules: { documentCache: boolean; vectorCache: boolean; queryResultCache: boolean; cacheTTL: number; }; } export interface FallbackConfig { enabled: boolean; fallbackOrder: StorageBackend[]; maxRetries: number; fallbackDelay: number; } export interface OptimizationConfig { enableQueryOptimization: boolean; enableBatchOptimization: boolean; enableCompressionOptimization: boolean; enableShardingOptimization: boolean; adaptiveRouting: boolean; } export interface RoutedOperation { id: string; backend: StorageBackend; shard?: string; priority: 'high' | 'medium' | 'low'; estimatedLatency: number; fallbackBackends: StorageBackend[]; } export declare class StorageRouter implements StorageEngine { private d1; private kv; private r2; private durableObject; private config; private metrics; private shardMap; private routingCache; private adaptiveMetrics; constructor(config: RouterConfig); initialize(config: StorageConfig): Promise; destroy(): Promise; health(): Promise<{ healthy: boolean; shards: ShardInfo[]; }>; insertDocument(collection: string, document: Document): Promise>; findDocuments(collection: string, query: DocumentQuery): Promise>; updateDocument(collection: string, id: string, update: Partial): Promise>; deleteDocument(collection: string, id: string): Promise>; countDocuments(collection: string, filter?: Record): Promise>; insertVector(collection: string, vector: VectorData): Promise>; searchVectors(collection: string, query: VectorQuery): Promise>; deleteVector(collection: string, id: string): Promise>; upsertVector(collection: string, vector: VectorData): Promise>; insertTimeSeriesPoint(point: TimeSeriesPoint): Promise>; insertTimeSeriesBatch(points: TimeSeriesPoint[]): Promise>; queryTimeSeries(query: TimeSeriesQuery): Promise>; aggregateTimeSeries(query: TimeSeriesQuery): Promise>>; private routeDocumentOperation; private routeVectorOperation; private routeDocumentQuery; private routeVectorQuery; private executeWithFallback; private updateAdaptiveMetrics; private getOptimalBackendForCollection; private getBackendLatency; private getEstimatedLatency; private hashQuery; private initializeShardMap; insertMany(collection: string, documents: Document[]): Promise>; updateMany(collection: string, filter: Record, update: Partial): Promise>; deleteMany(collection: string, filter: Record): Promise>; insertHybrid(collection: string, document: Document, vector: VectorData): Promise>; searchHybrid(collection: string, vectorQuery: VectorQuery, documentFilter?: Record): Promise>; executeSQL(sql: string, params?: any[]): Promise>; executeBatchSQL(operations: { sql: string; params?: any[]; }[]): Promise>; putBlob(key: string, data: ArrayBuffer | Uint8Array, metadata?: Record): Promise>; getBlob(key: string): Promise; }>>; deleteBlob(key: string): Promise>; listBlobs(prefix?: string, limit?: number): Promise>; putKV(key: string, value: any, options?: { ttl?: number; metadata?: Record; }): Promise>; getKV(key: string): Promise; }>>; deleteKV(key: string): Promise>; listKV(prefix?: string, limit?: number): Promise; }[]>>; ensureIndex(collection: string, field: string, options?: { unique?: boolean; sparse?: boolean; }): Promise>; dropIndex(collection: string, field: string): Promise>; getIndexes(collection: string): Promise>; optimizeCollection(collection: string): Promise>; beginTransaction(isolation?: 'read_committed' | 'serializable'): Promise>; commitTransaction(context: TransactionContext): Promise>; rollbackTransaction(context: TransactionContext): Promise>; executeBatch(batch: BatchOperation): Promise>; watchCollection(collection: string, config: StreamConfig): Promise>; createStream(config: StreamConfig): Promise; getMetrics(): Promise; getShardInfo(): Promise; optimizePerformance(): Promise>; createBackup(collections?: string[]): Promise>; restoreBackup(backupId: string): Promise>; createCollection(name: string, options?: { sharding?: any; indexing?: any; }): Promise>; dropCollection(name: string): Promise>; listCollections(): Promise>; private cacheDocument; private getCachedDocument; private invalidateDocumentCache; private cacheQueryResult; private getCachedQueryResult; private insertLargeDocument; private deleteLargeDocument; private determineTimeSeriesTier; private parseTimeRange; private queryHotTimeSeries; private queryWarmTimeSeries; private queryColdTimeSeries; private buildTimeSeriesSQL; private buildTimeSeriesAggregationSQL; private getCollectionVectorCount; } //# sourceMappingURL=storage-router.d.ts.map