import { LogProvider } from "../api/LogProvider";
import { LoggerNameType } from "../api/type/LoggerNameType";
import { CoreLogger } from "../api/CoreLogger";
import { LogConfig } from "../api/config/LogConfig";
import { RuntimeSettings } from "../api/runtime/RuntimeSettings";
/**
 * Implementation for {@link LogProvider}
 */
export declare class LogProviderImpl implements LogProvider {
    private readonly _log;
    private readonly _name;
    /**
     * Default settings that were taken on creation.
     * @private
     */
    private readonly _settings;
    private readonly _loggers;
    private readonly _idToKeyMap;
    /**
     * Current runtime settings (same as _settings on creation), but may be different if runtime settings are changed.
     * Creation of loggers always use this.
     * @private
     */
    private _globalRuntimeSettings;
    private _nextLoggerId;
    constructor(name: string, settings: LogConfig);
    get runtimeSettings(): LogConfig;
    getLogger(name: LoggerNameType): CoreLogger;
    updateLoggerRuntime(log: CoreLogger, settings: RuntimeSettings): boolean;
    updateRuntimeSettings(settings: RuntimeSettings): void;
    /**
     * Removes all state and loggers, it reverts back to as it was after initial construction.
     */
    clear(): void;
    private getOrCreateLogger;
    private nextLoggerId;
    private static mergeRuntimeSettingsIntoLogRuntime;
    private static createKey;
}
/**
 * Creates a default LogConfig (should not be exported).
 */
export declare function createDefaultLogConfig(): LogConfig;
//# sourceMappingURL=LogProviderImpl.d.ts.map