export declare enum Level {
    debug = 10,
    info = 20,
    warning = 30,
    error = 40,
    test = 1000
}
export interface LoggerAdapter {
    info(...message: string[]): void;
    warn(...message: string[]): void;
    error(...message: string[]): void;
    debug(...message: string[]): void;
}
export declare type Formatter = (name: string, level: Level, ...message: any[]) => any;
export declare class ContextLogger {
    private name;
    private level;
    private formatter?;
    private adapter;
    destroy: () => void;
    private effects;
    constructor(name: string, level: Level, formatter?: Formatter | undefined, adapter?: LoggerAdapter);
    private invoke;
    info(...message: any[]): void;
    warn(...message: any[]): void;
    error(...message: any[]): void;
    debug(...message: any[]): void;
    setLevel(level: Level): void;
    replaceAdapter(adapter: LoggerAdapter): void;
    replaceFormatter(formatter: Formatter): void;
    effect(method: keyof LoggerAdapter, callback: Function): void;
    clearEffects(): void;
}
export declare class Logger {
    private static enable;
    private static contextMap;
    private static defaultLevel;
    private static outputLogger;
    static get(name: string, formatter?: Formatter, level?: Level, adapter?: LoggerAdapter): ContextLogger;
    static setLevel(level: Level): void;
    static warn(...message: any[]): void;
    static info(...message: any[]): void;
    static debug(...message: any[]): void;
    static error(...message: any[]): void;
    static setEnable(enable: boolean): void;
}
