export { BaseService, CircuitBreaker, RetryHandler, CircuitBreakerConfig, RetryConfig, HealthCheckResult, CircuitBreakerState, ServiceConfig, defaultServiceConfig } from './base.js';
export { DatabaseService, databaseService, DatabaseQuery, DatabaseUpdateQuery, DatabaseDeleteQuery, QueryResult, ConnectionPoolStats } from './database.js';
export { SearchService, searchService, SearchQuery, SearchResult, SearchHit, FacetCount, GroupedHit, IndexInfo } from './search.js';
export { ExternalApiService, externalApiService, ApiEndpoint, ApiRequest, ApiResponse, RateLimitState } from './external-api.js';
import { DatabaseService } from './database.js';
import { SearchService } from './search.js';
import { ExternalApiService } from './external-api.js';
import { BaseService } from './base.js';
export interface ServiceManagerConfig {
    enableHealthMonitoring?: boolean;
    healthCheckInterval?: number;
    shutdownTimeout?: number;
}
export interface SystemHealthReport {
    isHealthy: boolean;
    timestamp: Date;
    services: {
        [serviceName: string]: {
            isHealthy: boolean;
            status: string;
            responseTime?: number;
            error?: string;
            lastCheck: Date;
            metrics?: any;
        };
    };
    summary: {
        totalServices: number;
        healthyServices: number;
        unhealthyServices: number;
        overallSuccessRate: number;
    };
}
export declare class ServiceManager {
    private static instance;
    private services;
    private healthMonitoringInterval;
    private config;
    private isShuttingDown;
    private constructor();
    static getInstance(config?: ServiceManagerConfig): ServiceManager;
    initialize(): Promise<void>;
    registerService(name: string, service: BaseService): void;
    getService<T extends BaseService>(name: string): T | undefined;
    getDatabaseService(): DatabaseService;
    getSearchService(): SearchService;
    getExternalApiService(): ExternalApiService;
    getSystemHealth(): Promise<SystemHealthReport>;
    private startHealthMonitoring;
    private stopHealthMonitoring;
    resetAllCircuitBreakers(): Promise<void>;
    gracefulShutdown(): Promise<void>;
    getServiceList(): string[];
    isServiceRegistered(name: string): boolean;
    getServiceCount(): number;
}
export declare const serviceManager: ServiceManager;
