import { Disposable } from 'vscode-jsonrpc'; export declare enum LogLevel { Error = "error", Warn = "warn", Info = "info", Log = "log" } export interface ConsoleInterface { error: (message: string) => void; warn: (message: string) => void; info: (message: string) => void; log: (message: string) => void; } export declare namespace ConsoleInterface { function is(obj: any): obj is ConsoleInterface; function hasLevel(console: any): console is ConsoleInterface & { level: LogLevel; }; } export declare function getLevelNumber(level: LogLevel): number; export declare class NullConsole implements ConsoleInterface { logCount: number; infoCount: number; warnCount: number; errorCount: number; log(message: string): void; info(message: string): void; warn(message: string): void; error(message: string): void; } export declare class StandardConsole implements ConsoleInterface { private _maxLevel; constructor(_maxLevel?: LogLevel); get level(): LogLevel; log(message: string): void; info(message: string): void; warn(message: string): void; error(message: string): void; } export declare class StderrConsole implements ConsoleInterface { private _maxLevel; constructor(_maxLevel?: LogLevel); get level(): LogLevel; log(message: string): void; info(message: string): void; warn(message: string): void; error(message: string): void; } export interface Chainable { addChain(console: ConsoleInterface): void; removeChain(console: ConsoleInterface): void; } export declare namespace Chainable { function is(value: any): value is Chainable; } export declare class ConsoleWithLogLevel implements ConsoleInterface, Chainable, Disposable { private _console; private _name; private readonly _chains; private _maxLevel; private _disposed; constructor(_console: ConsoleInterface, _name?: string); get level(): LogLevel; set level(value: LogLevel); dispose(): void; error(message: string): void; warn(message: string): void; info(message: string): void; log(message: string): void; addChain(console: ConsoleInterface): void; removeChain(console: ConsoleInterface): void; private get _prefix(); private _log; private _getNumericalLevel; private _processChains; } export declare function log(console: ConsoleInterface, logType: LogLevel, msg: string): void; export declare function convertLogLevel(logLevelValue?: string): LogLevel;