/**
 * @author Martin Karkowski
 * @email m.karkowski@zema.de
 * @create date 2021-11-11 11:27:44
 * @modify date 2021-11-11 11:27:44
 * @desc [description]
 */
import { ILogger, ILoggerOpts } from "js-logger";
export declare const formatMsgForConsole: (message: any, context: any) => any[];
/**
 * Contains the Valid Types of the Loger.
 */
export type LoggerLevel = "error" | "warn" | "info" | "debug" | "trace";
/**
 * Array containg the Valid Types of the Loger. see {@link LoggerLevel}
 */
export declare const LoggerLevels: string[];
/**
 * Tests if the Logger is enabled for the level, or extracts the level.
 *
 * @param {ILogger} logger The logger
 * @param {LoggerLevel} [lvl] if provided tests if the lvl matches the logger. otherwise returns the current level
 * @return {(boolean | LoggerLevel)}
 */
export declare function enabledFor(logger: ILogger, lvl?: LoggerLevel): boolean | LoggerLevel;
/**
 * Enables the Logger for the desired Level.
 *
 * @param {ILogger} logger The logger
 * @param {LoggerLevel} lvl The level to use
 * @return {void}
 */
export declare function enableFor(logger: ILogger, lvl: LoggerLevel): void;
/**
 * Helper to test if the message would be logged.
 * @param loggerLevel The Level of the logger
 * @param messageLevel The Level of the Message
 * @returns
 */
export declare function shouldLog(loggerLevel: LoggerLevel, messageLevel: LoggerLevel): boolean;
/**
 * The Nope-Logger. It consits o
 */
export declare class NopeLogger {
    protected _logger: ILogger;
    protected _loggers: Map<string, ILogger>;
    /**
     * Sets the Level of the logger. Sets all logger to the defined value.
     *
     * @author M.Karkowski
     * @memberof NopeLogger
     */
    set level(value: LoggerLevel);
    /**
     * Returns the general logger-level.
     *
     * @author M.Karkowski
     * @type {LoggerLevel}
     * @memberof NopeLogger
     */
    get level(): LoggerLevel;
    /**
     * Helper to readout the level
     *
     * @author M.Karkowski
     * @type {LoggerLevel}
     * @memberof NopeLogger
     */
    _level: LoggerLevel;
    /**
     * Creates a sublogger with the given name and the
     * level.
     *
     * @author M.Karkowski
     * @param {string} [name=""] The name of the logger
     * @param {LoggerLevel} [level=this.level] The level of the logger.
     * @return {ILogger} The Logger
     * @memberof NopeLogger
     */
    getLogger(name?: string, level?: LoggerLevel): ILogger;
    /**
     * Helper function, to update the Logger Defaults. Therefore you should checkout the [description](https://www.npmjs.com/package/js-logger)
     *
     * @param {ILoggerOpts} defaults
     * @memberof NopeLogger
     */
    setDefaults(defaults: ILoggerOpts): void;
    /**
     * Rewrites the Stream of the Logger to the
     * given handler. Watch out, only one handler
     * is active.
     *
     * @param {(msg, context) => void} handler
     * @memberof NopeLogger
     */
    setHandler(handler: (msg: any, context: any) => void): void;
    /**
     * Function to determine the Logger Level
     * @param loggerGroup The specified group, which should be addressed
     * @param level The Level to Set
     */
    setLoglevel(loggerGroup: string, level: LoggerLevel): void;
    /**
     * Function, to check, whether a specific logger is enabled for logging the given log level
     *
     * @author M.Karkowski
     * @param {string} loggerName Name of the Logger
     * @param {LoggerLevel} level The Log-Level to Test
     * @return {boolean} Result of the Test.
     * @memberof NopeLogger
     */
    isLogging(loggerName: string, level: LoggerLevel): boolean;
    /**
     * Creates an instance of NopeLogger.
     * @author M.Karkowski
     * @memberof NopeLogger
     */
    constructor();
    protected _pw: string;
    /**
     * Lock the Logger Level with a password. This prevents chaning the
     * log level to other log-levels. you must {@link NopeLogger.unlock} to
     * update the Level again.
     *
     * @param {string} pw The Password to Lock the Logger
     * @memberof NopeLogger
     */
    lock(pw: string): void;
    /**
     * Unlock the Logger, therefore the password used for locking is
     * required. After unlocking, the log-level can be adapted.
     *
     * @author M.Karkowski
     * @param {string} pw The password to unlock the logger
     * @memberof NopeLogger
     */
    unlock(pw: string): void;
    /**
     * Flag indicating, whether the logger is locked or not.
     *
     * @author M.Karkowski
     * @readonly
     * @type {boolean}
     * @memberof NopeLogger
     */
    get isLocked(): boolean;
}
