export type TLogLevel = "error" | "warning" | "info" | "debug" | "trace" | "none";
export declare function isValidLogLevel(level: string): level is TLogLevel;
export declare function normalizeLogLevel(level: string): TLogLevel | null;
export interface Writer {
    write: (message: string, level?: TLogLevel) => void;
}
export interface LogContext {
    timestamp: Date;
    level: TLogLevel;
    loggerName: string;
    message: string;
}
export type LogFormatter = (context: LogContext) => string;
export declare function setDefaultLogLevel(level: TLogLevel): void;
export declare function getDefaultLogLevel(): TLogLevel;
export declare function setDefaultWriter(writer: Writer): void;
export declare function setDefaultFormatter(formatter: LogFormatter): void;
export declare function getDefaultFormatter(): LogFormatter;
export declare const DEFAULT_LOGGER_NAME = "default";
export declare const defaultLogFormatter: LogFormatter;
export declare const simpleLogFormatter: LogFormatter;
export declare const jsonLogFormatter: LogFormatter;
export declare function getLogger(name?: string): Logger;
export declare function clearLoggerCache(): void;
export declare function createConsoleWriter(): Writer;
export declare function createNullWriter(): Writer;
export declare function stringify(obj: any, indent?: number): string;
export declare class Logger {
    private _name;
    private _logLevel;
    private _writer;
    private _formatter;
    constructor(name: string, logLevel: TLogLevel, writer: Writer, formatter?: LogFormatter);
    setLogLevel(level: TLogLevel): void;
    getLogLevel(): TLogLevel;
    setWriter(writer: Writer): void;
    getWriter(): Writer;
    getName(): string;
    setFormatter(formatter: LogFormatter): void;
    getFormatter(): LogFormatter;
    private _shouldWrite;
    private _formatMessage;
    trace(msg: any | (() => any)): void;
    debug(msg: any | (() => any)): void;
    info(msg: any | (() => any)): void;
    warning(msg: any | (() => any)): void;
    error(msg: any | (() => any)): void;
}
export declare function getLogLevel(): TLogLevel;
export declare function setLogLevel(level: TLogLevel): void;
