import * as momoa from '@humanwhocodes/momoa';
export declare const LOG_ORDER: readonly ['error', 'warn', 'info', 'debug'];
export type LogSeverity = 'error' | 'warn' | 'info' | 'debug';
export type LogLevel = LogSeverity | 'silent';
export type LogGroup = 'config' | 'import' | 'lint' | 'parser' | 'plugin' | 'resolver' | 'server';
export interface LogEntry {
    /** Originator of log message */
    group: LogGroup;
    /** Error message to be logged */
    message: string;
    /** Prefix message with label */
    label?: string;
    /** File in disk */
    filename?: URL;
    /**
     * Continue on error?
     * @default false
     */
    continueOnError?: boolean;
    /** Show a code frame for the erring node */
    node?: momoa.AnyNode;
    /** To show a code frame, provide the original source code */
    src?: string;
    /** Display performance timing */
    timing?: number;
}
export interface DebugEntry {
    group: LogGroup;
    /** Error message to be logged */
    message: string;
    /** Current subtask or submodule */
    label?: string;
    /** Show code below message */
    codeFrame?: {
        src: string;
        line: number;
        column: number;
    };
    /** Display performance timing */
    timing?: number;
}
/**
 * @param {Entry} entry
 * @param {Severity} severity
 * @return {string}
 */
export declare function formatMessage(entry: LogEntry, severity: LogSeverity): string;
export default class Logger {
    level: LogLevel;
    debugScope: string;
    errorCount: number;
    warnCount: number;
    infoCount: number;
    debugCount: number;
    constructor(options?: {
        level?: LogLevel;
        debugScope?: string;
    });
    setLevel(level: LogLevel): void;
    /** Log an error message (always; can’t be silenced) */
    error(...entries: LogEntry[]): void;
    /** Log an info message (if logging level permits) */
    info(...entries: LogEntry[]): void;
    /** Log a warning message (if logging level permits) */
    warn(...entries: LogEntry[]): void;
    /** Log a diagnostics message (if logging level permits) */
    debug(...entries: DebugEntry[]): void;
    /** Get stats for current logger instance */
    stats(): {
        errorCount: number;
        warnCount: number;
        infoCount: number;
        debugCount: number;
    };
}
export declare class TokensJSONError extends Error {
    constructor(message: string);
}
//# sourceMappingURL=logger.d.ts.map