import { LogLevel } from './log-level';
import { ITransport } from './transport';
export interface ILogger {
    area: string;
    instance: string;
    trace(...args: any[]): void;
    debug(...args: any[]): void;
    info(...args: any[]): void;
    warn(...args: any[]): void;
    error(...args: any[]): void;
    sub(area: string, instance?: string): ILogger;
}
export declare class Logger implements ILogger {
    readonly area: string;
    readonly instance: string;
    private _transports;
    private _level;
    private _root;
    constructor(area?: string, instance?: string);
    /**
     * Configured log-level
     */
    get level(): LogLevel;
    set level(value: LogLevel);
    /**
     * Gets the available transports
     */
    get transports(): ITransport[];
    /**
     * Constructs a sub-logger under the current parent
     * @param area optional area, if not provided it inherits from the parent
     * @param instance optional instance, if not provied it inherits from the parent
     */
    sub(area?: string, instance?: string): Logger;
    /**
     * Write a trace message
     */
    trace(...args: any[]): void;
    /**
     * Write a debug message
     * @param args variadic arguments
     */
    debug(...args: any[]): void;
    /**
     * Write an info message
     * @param args variadic arguments
     */
    info(...args: any[]): void;
    /**
     * Write a warning message
     * @param args variadic arguments
     */
    warn(...args: any[]): void;
    /**
     * Write an error message
     * @param args variadic arguments
     */
    error(...args: any[]): void;
    private _log;
    private _format;
    private _write;
}
