import { EventEmitter } from 'events';
export declare enum LogLevel {
    TRACE = 0,
    DEBUG = 1,
    INFO = 2,
    WARNING = 3,
    ERROR = 4
}
export declare enum LoggingEventType {
    AUDIT = "audit",
    ACTIVITY = "activity",
    GENERAL = "general"
}
export interface SimpleLogEvent {
    type: LoggingEventType.GENERAL;
    level: LogLevel;
    correlationId?: string;
    timestamp: Date;
    data: string;
    diagnosticData?: any;
}
export declare enum LogMethod {
    DEBUG_PKG = 0,
    CONSOLE = 1,
    EVENT = 2
}
export interface SimpleLogOptions {
    namespace?: string;
    eventName?: string;
    defaultLogLevel?: LogLevel;
    methods?: LogMethod[];
}
export declare function logOptions(opts?: SimpleLogOptions): Required<SimpleLogOptions>;
export declare class Loggers {
    private static readonly DEFAULT_KEY;
    static readonly DEFAULT: Loggers;
    private readonly namespaceOptions;
    private readonly loggers;
    constructor(defaultOptions?: Omit<SimpleLogOptions, 'namespace'>);
    options(namespace: string, options: Omit<SimpleLogOptions, 'namespace'>): this;
    defaultOptions(options: Omit<SimpleLogOptions, 'namespace'>): this;
    register<T>(namespace: string, logger: ISimpleLogger<T>): ISimpleLogger<T>;
    get<T>(namespace: string, registerLogger?: ISimpleLogger<T>): ISimpleLogger<T>;
}
export type ISimpleLogger<LogType> = {
    options: Required<SimpleLogOptions>;
    log(value: LogType, ...args: any[]): void;
    info(value: LogType, ...args: any[]): void;
    debug(value: LogType, ...args: any[]): void;
    trace(value: LogType, ...args: any[]): void;
    warning(value: LogType, ...args: any[]): void;
    error(value: LogType, ...args: any[]): void;
    logl(level: LogLevel, value: LogType, ...argsW: any[]): void;
};
export declare class SimpleLogger implements ISimpleLogger<any> {
    private _eventEmitter;
    private _options;
    constructor(opts?: SimpleLogOptions);
    get eventEmitter(): EventEmitter;
    get options(): Required<SimpleLogOptions>;
    trace(value: any, ...args: any[]): void;
    debug(value: any, ...args: any[]): void;
    info(value: any, ...args: any[]): void;
    warning(value: any, ...args: any[]): void;
    error(value: any, ...args: any[]): void;
    logl(level: LogLevel, value: any, ...args: any[]): void;
    private logImpl;
    log(value: any, ...args: any[]): void;
}
export declare class SimpleRecordLogger extends SimpleLogger implements ISimpleLogger<Record<string, any>> {
    constructor(opts?: SimpleLogOptions);
}
//# sourceMappingURL=index.d.ts.map