import { MessageResolver } from '../message/message_resolver';
import { Platform } from '../platform_support';
export declare enum LogLevel {
    Debug = 0,
    Info = 1,
    Warn = 2,
    Error = 3
}
export declare const LogLevelToUpper: Record<LogLevel, string>;
export declare const LogLevelToLower: Record<LogLevel, string>;
export interface LoggerFacade {
    info(message: string | Error, ...args: any[]): void;
    debug(message: string | Error, ...args: any[]): void;
    warn(message: string | Error, ...args: any[]): void;
    error(message: string | Error, ...args: any[]): void;
    child(name?: string): LoggerFacade;
    setName(name: string): void;
}
export interface LogHandler {
    log(level: LogLevel, message: string, ...args: any[]): void;
}
export declare class ConsoleLogHandler implements LogHandler {
    private prefix;
    constructor(prefix?: string);
    log(level: LogLevel, message: string): void;
    private getTime;
    private consoleLog;
}
type OptimizelyLoggerConfig = {
    logHandler: LogHandler;
    infoMsgResolver?: MessageResolver;
    errorMsgResolver: MessageResolver;
    level: LogLevel;
    name?: string;
};
export declare class OptimizelyLogger implements LoggerFacade {
    private name?;
    private prefix;
    private logHandler;
    private infoResolver?;
    private errorResolver;
    private level;
    constructor(config: OptimizelyLoggerConfig);
    child(name?: string): OptimizelyLogger;
    setName(name: string): void;
    info(message: string | Error, ...args: any[]): void;
    debug(message: string | Error, ...args: any[]): void;
    warn(message: string | Error, ...args: any[]): void;
    error(message: string | Error, ...args: any[]): void;
    private handleLog;
    private log;
}
export declare const __platforms: Platform[];
export {};
