import { BaseStorageConfig, ILogger, StorageType } from '../../storage.interface';
interface SingletonResult<T> {
    instance: T;
    isNewInstance: boolean;
    appliedConfig: BaseStorageConfig;
    conflicts?: string[];
}
export declare class SingletonManager {
    private static instances;
    private static configs;
    private static logger?;
    static setLogger(logger: ILogger): void;
    static getOrCreate<T>(key: string, config: BaseStorageConfig, factory: (finalConfig: BaseStorageConfig) => T): SingletonResult<T>;
    static exists(key: string): boolean;
    static getConfig(key: string): BaseStorageConfig | undefined;
    static remove(key: string): boolean;
    static clear(): void;
    static getStats(): {
        instanceCount: number;
        instances: string[];
    };
    private static mergeConfigurations;
    private static strictMerge;
    private static firstWinsMerge;
    private static deepMerge;
    private static overrideMerge;
    private static warnAndUseFirst;
    private static findConflicts;
    private static findObjectConflicts;
    private static deepMergeObjects;
}
export declare class SingletonKeyGenerator {
    static generate(config: BaseStorageConfig, storageType: StorageType): string;
}
export {};
