import 'source-map-support/register';
import { LoggerImplementation, LoggerBuilder } from './LoggerBindings';
import { LogLevel } from './LoggerConfiguration';
export interface ILoggerInstance<T> {
    trace(...args: any[]): Promise<any>;
    debug(...args: any[]): Promise<any>;
    info(...args: any[]): Promise<any>;
    warn(...args: any[]): Promise<any>;
    error(...args: any[]): Promise<any>;
    getLogLevel(): LogLevel;
    setMetadata(metadata: any): void;
    getImplementation(): T;
}
export declare class DefaultLoggerInstance<T, P extends any[]> implements ILoggerInstance<T> {
    private readonly impl;
    private readonly name;
    private readonly group;
    private commonMetadata;
    private logLevel;
    constructor(name: string, group: string, logLevel: LogLevel, commonMetadata: any, impl: LoggerImplementation<T, P>, builder: LoggerBuilder<T, P>);
    getLogLevel(): LogLevel;
    setLogLevel(logLevel: LogLevel): void;
    getName(): string;
    getGroup(): string;
    getImpl(): LoggerImplementation<T, P>;
    getMetadata(): any;
    setMetadata(commonMetadata: any): void;
    trace(...args: any[]): Promise<any>;
    debug(...args: any[]): Promise<any>;
    info(...args: any[]): Promise<any>;
    warn(...args: any[]): Promise<any>;
    error(...args: any[]): Promise<any>;
    getImplementation(): T;
    private log;
}
export declare class LoggerFactory {
    static getLogger<T, P extends any[]>(group?: string, name?: string, builder?: LoggerBuilder<T, P>): ILoggerInstance<T>;
    static reset(reinit?: boolean): void;
    static getMetadata(): any;
    static setMetadata(metadata: any): void;
    private static COMMON_METADATA;
    private static LOGGER;
    private static ROOT_LOGGER;
    private static INITIALIZED;
    private static readonly LOGGER_INSTANCE_CACHE;
    private static initialize;
    private static logLevelChanged;
    private static configChanged;
}
