export type LogStringLevel = "error" | "warn" | "info" | "debug" | "trace"; export declare enum LogLevel { error = 0, warn = 1, info = 2, debug = 3 } export interface Log { message: string | Error; level: LogLevel; scopes?: string[]; } export interface LogReporter { log(log: Log): void; } type LazyString = (() => string) | string; export declare class Logger { protected _reporter: LogReporter; protected _scopes: LazyString[]; protected _level: LogLevel; get level(): LogLevel | LogStringLevel; set level(level: LogLevel | LogStringLevel); debug(message: LazyString, scope?: LazyString): void; info(message: LazyString, scope?: LazyString): void; warn(message: LazyString, scope?: LazyString): void; error(message: LazyString, scope?: LazyString): void; static levelFromString(level: LogStringLevel): number; setReporter(reporter: LogReporter): void; addScope(scope: LazyString): void; removeScope(count?: number): void; log(level: LogLevel, message: LazyString | Error, scope?: LazyString): void; } export declare const defaultReporter: { log: (log: Log) => void; }; export {};