/**
 * Container class to manage the dependency injection container
 */
export declare class Container {
    private static instance;
    private static isInitialized;
    private constructor();
    /**
     * Get the singleton instance of the container
     */
    static getInstance(): Container;
    /**
     * Initialize the container with the default dependencies
     * @param cacheDir - the cache directory to use, defaults to constants.SOLO_CACHE_DIR
     * @param logLevel - the log level to use, defaults to 'debug'
     * @param devMode - if true, show full stack traces in error messages
     */
    init(cacheDir?: string, logLevel?: string, devMode?: boolean): void;
    /**
     * clears the container registries and re-initializes the container
     * @param cacheDir - the cache directory to use, defaults to constants.SOLO_CACHE_DIR
     * @param logLevel - the log level to use, defaults to 'debug'
     * @param devMode - if true, show full stack traces in error messages
     */
    reset(cacheDir?: string, logLevel?: string, devMode?: boolean): void;
    /**
     * clears the container instances, useful for testing when you are using container.registerInstance()
     * @param cacheDir - the cache directory to use, defaults to constants.SOLO_CACHE_DIR
     * @param logLevel - the log level to use, defaults to 'debug'
     * @param devMode - if true, show full stack traces in error messages
     */
    clearInstances(cacheDir?: string, logLevel?: string, devMode?: boolean): void;
    /**
     * only call dispose when you are about to system exit
     */
    dispose(): Promise<void>;
}
