import { DatabaseService, DatabaseConfig } from './database-service.js';
import { ExternalApiService, ExternalApiConfig } from './external-api-service.js';
import { BaseService, ServiceHealthStatus } from './base-service.js';
export interface ServiceManagerConfig {
    database: DatabaseConfig;
    openai?: ExternalApiConfig;
    perplexity?: ExternalApiConfig;
    cohere?: ExternalApiConfig;
    typesense?: ExternalApiConfig;
}
export interface ServiceHealth {
    serviceName: string;
    status: ServiceHealthStatus;
    metrics: any;
    timestamp: Date;
}
export interface OverallHealth {
    status: ServiceHealthStatus;
    services: ServiceHealth[];
    timestamp: Date;
}
export declare class ServiceManager {
    private static instance;
    private services;
    private isInitialized;
    private constructor();
    static getInstance(): ServiceManager;
    initialize(): Promise<void>;
    private initializeDatabaseService;
    private initializeExternalApiServices;
    getService<T extends BaseService>(serviceName: string): T | undefined;
    getDatabaseService(): DatabaseService | undefined;
    getExternalApiService(serviceName: string): ExternalApiService | undefined;
    getAllServices(): Map<string, BaseService>;
    healthCheck(): Promise<OverallHealth>;
    getServiceMetrics(): Promise<Record<string, any>>;
    shutdown(): Promise<void>;
    isServiceManagerInitialized(): boolean;
    resetAllMetrics(): void;
    addService(serviceName: string, service: BaseService): void;
    removeService(serviceName: string): boolean;
    getServiceStatusSummary(): {
        serviceName: string;
        status: string;
        config: any;
    }[];
}
export declare const serviceManager: ServiceManager;
export { DatabaseService, ExternalApiService, BaseService, ServiceHealthStatus };
export type { DatabaseConfig, ExternalApiConfig };
