import { EventEmitter } from 'events'; export interface APIConfig { storage?: StorageConfig; models?: ModelConfig; metrics?: MetricsConfig; } export interface StorageConfig { type: 'memory' | 'json' | 'sparql'; options: { path?: string; endpoint?: string; graphName?: string; }; } export interface ModelConfig { chat: { provider: 'ollama' | 'openai'; model: string; options?: Record; }; embedding: { provider: 'ollama' | 'openai'; model: string; options?: Record; }; } export interface MetricsConfig { enabled: boolean; interval?: number; storageEndpoint?: string; } export interface Interaction { id: string; prompt: string; output: string; embedding: number[]; timestamp: number; accessCount: number; concepts: string[]; decayFactor: number; } export interface Query { text?: string; concepts?: string[]; similarity?: number; limit?: number; offset?: number; } export interface MetricEvent { name: string; value: number | string | boolean; timestamp: number; labels?: Record; } export interface APIMetrics { timestamp: number; status: 'active' | 'inactive'; memoryUsage: NodeJS.MemoryUsage; uptime: number; } export declare class BaseAPI extends EventEmitter { protected config: APIConfig; protected logger: any; protected initialized: boolean; constructor(config?: APIConfig); initialize(): Promise; shutdown(): Promise; executeOperation(operation: string, params: Record): Promise; storeInteraction(interaction: Interaction): Promise; retrieveInteractions(query: Query): Promise; getMetrics(): Promise; protected _validateParams(params: unknown, schema: unknown): void; protected _emitMetric(name: string, value: MetricEvent['value']): void; } export declare class APIRegistry { private static instance: APIRegistry; private apis: Map; private metrics: Map; register(name: string, apiClass: typeof BaseAPI, config?: APIConfig): Promise; get(name: string): BaseAPI; unregister(name: string): Promise; getAll(): Map; getMetrics(): Record; shutdownAll(): Promise; } // CLI Types export interface CommandOptions { operation: string; params: Record; format?: 'text' | 'json'; color?: boolean; } // HTTP Types export interface APIResponse { success: boolean; data?: T; error?: string; metadata?: { timestamp: number; version: string; }; } // REPL Types export interface REPLContext { api: BaseAPI; history: string[]; mode: 'chat' | 'rdf'; } // Feature Set Types export interface SelfieMetrics { storage: { size: number; operations: number; latency: number; }; performance: { memory: NodeJS.MemoryUsage; cpu: number; uptime: number; }; errors: Array<{ type: string; count: number; lastOccurred: number; }>; }