import type { Logger } from '@pikku/core/services'; import { LogLevel } from '@pikku/core/services'; import type { ErrorCode, DiagnosticSeverity, CodedDiagnostic } from '@pikku/inspector'; export type CLIOutputMode = 'text' | 'json'; export declare class CLILogger implements Logger { private silent; private level; private diagnostics; private failOn; private outputMode; private jsonFlushHookRegistered; constructor({ logLogo, silent, }: { logLogo: boolean; silent?: boolean; }); setLevel(level: LogLevel): void; setSilent(silent: boolean): void; setOutputMode(mode: CLIOutputMode): void; getOutputMode(): CLIOutputMode; isSilent(): boolean; private normalizeMessage; private writeJSONLine; private ensureJSONFlushHook; flushJSONBuffer(): void; private emit; info(message: string | { message: string; type?: string; data?: Record; }): void; error(message: string | Error | { message: string; type?: string; data?: Record; }): void; warn(message: string | { message: string; type?: string; data?: Record; }): void; debug(message: string | { message: string; type?: string; data?: Record; }): void; diagnostic({ severity, code, message }: CodedDiagnostic): void; /** Sugar for `diagnostic({ severity: 'critical', code, message })`. */ critical(code: ErrorCode, message: string): void; /** * Configure which severities fail the build. Critical is always included. */ setFailOn(severities: Iterable): void; hasCriticalErrors(): boolean; /** * True if any tracked diagnostic matches a severity configured to fail the * build (default: critical only). */ hasBlockingDiagnostics(): boolean; /** Distinct severities among tracked diagnostics that would fail the build. */ blockingSeverities(): DiagnosticSeverity[]; logLogo(): void; }