import { Configuration, Context, ContextValue, ErrorObservable, InternalMonitoring } from '@datadog/browser-core';
import { LoggerSession } from './loggerSession';
export declare enum StatusType {
    debug = "debug",
    info = "info",
    warn = "warn",
    error = "error"
}
export declare const STATUS_PRIORITIES: {
    [key in StatusType]: number;
};
export declare const STATUSES: string[];
export interface LogsMessage {
    message: string;
    status: StatusType;
    [key: string]: ContextValue;
}
export interface LoggerConfiguration {
    level?: StatusType;
    handler?: HandlerType;
    context?: Context;
}
export declare enum HandlerType {
    http = "http",
    console = "console",
    silent = "silent"
}
export declare function startLogger(errorObservable: ErrorObservable, configuration: Configuration, session: LoggerSession, internalMonitoring: InternalMonitoring): Partial<{
    logger: {
        debug(message: string, context?: Context | undefined): void;
        error(message: string, context?: Context | undefined): void;
        info(message: string, context?: Context | undefined): void;
        log(message: string, context?: Context | undefined, status?: "error" | "debug" | "info" | "warn" | undefined): void;
        warn(message: string, context?: Context | undefined): void;
        setContext(context: Context): void;
        addContext(key: string, value: ContextValue): void;
        setHandler(handler: HandlerType): void;
        setLevel(level: StatusType): void;
    };
    init(userConfiguration: import("./logs.entry").LogsUserConfiguration): void;
    addLoggerGlobalContext(key: string, value: ContextValue): void;
    setLoggerGlobalContext(context: Context): void;
    createLogger(name: string, conf?: LoggerConfiguration | undefined): Logger;
    getLogger(name: string): Logger | undefined;
}>;
export declare class Logger {
    private session;
    private handlers;
    private level;
    private loggerContext;
    private handler;
    constructor(session: LoggerSession, handlers: {
        [key in HandlerType]: (message: LogsMessage) => void;
    }, handler?: HandlerType, level?: StatusType, loggerContext?: Context);
    log(message: string, messageContext?: {}, status?: StatusType): void;
    debug(message: string, messageContext?: {}): void;
    info(message: string, messageContext?: {}): void;
    warn(message: string, messageContext?: {}): void;
    error(message: string, messageContext?: {}): void;
    setContext(context: Context): void;
    addContext(key: string, value: ContextValue): void;
    setHandler(handler: HandlerType): void;
    setLevel(level: StatusType): void;
}
