/**
 * Service Container - Dependency Injection
 *
 * Replaces the Service Locator pattern with a centralized container
 * that manages all core service instances.
 *
 * Benefits:
 * - Explicit dependencies (no hidden singletons)
 * - Easier testing (inject mocks)
 * - Single point of initialization
 * - Type-safe service access
 */
import type { IServiceContainer, IServiceContainerConfig, ISettingsManager, ICheckpointManager, ISessionStore, ICostTracker } from './types.js';
/**
 * ServiceContainer - Central registry for all application services
 *
 * Usage:
 * ```typescript
 * // Get the container
 * const container = ServiceContainer.create();
 *
 * // Access services
 * const settings = container.settings;
 * const checkpoints = container.checkpoints;
 *
 * // For testing, inject mocks
 * const testContainer = ServiceContainer.createWithConfig({
 *   settings: mockSettingsManager,
 *   checkpoints: mockCheckpointManager,
 * });
 * ```
 */
export declare class ServiceContainer implements IServiceContainer {
    readonly settings: ISettingsManager;
    readonly checkpoints: ICheckpointManager;
    readonly sessions: ISessionStore;
    readonly costs: ICostTracker;
    private static instance;
    /**
     * Private constructor - use static factory methods
     */
    private constructor();
    /**
     * Create or get the singleton ServiceContainer instance
     * Uses lazy initialization to load services on demand
     */
    static create(): ServiceContainer;
    /**
     * Create a ServiceContainer with custom configuration
     * Useful for testing or custom service implementations
     */
    static createWithConfig(config: IServiceContainerConfig): ServiceContainer;
    /**
     * Create a fresh ServiceContainer with default services
     * Does not affect the singleton instance
     */
    static createDefault(): ServiceContainer;
    /**
     * Reset the singleton instance
     * Useful for testing or reinitializing services
     */
    static reset(): void;
    /**
     * Check if singleton instance exists
     */
    static hasInstance(): boolean;
    /**
     * Set a custom container as the singleton
     * Useful for testing
     */
    static setInstance(container: ServiceContainer): void;
    /**
     * Create SettingsManager instance
     * Uses the existing singleton implementation for compatibility
     */
    private static createSettingsManager;
    /**
     * Create CheckpointManager instance
     * Note: Implementation may not have all interface methods
     */
    private static createCheckpointManager;
    /**
     * Create SessionStore instance
     * Note: Implementation may not have all interface methods
     */
    private static createSessionStore;
    /**
     * Create CostTracker instance
     */
    private static createCostTracker;
}
/**
 * Get the ServiceContainer singleton
 * Convenience function for easier access
 */
export declare function getServiceContainer(): IServiceContainer;
/**
 * Create a test container with mock services
 * @param mocks - Partial mock implementations
 */
export declare function createTestContainer(mocks?: Partial<IServiceContainerConfig>): ServiceContainer;
