import { SourceRange } from "./grammar/source-position"; import { InputSource } from "./semantics/program"; export declare enum DiagnosticSeverity { Hint = 0, Warning = 1, Error = 2 } export type DiagnosticCode = number & { __diagnosticIdBrand: never; }; export interface Diagnostic { code: DiagnosticCode; source: InputSource; severity: DiagnosticSeverity; message: string; range: SourceRange; } export declare function formatDiagnostic(diagnostic: Diagnostic): string; type DiagnosticFactory = (level: DiagnosticSeverity, message: string, source: InputSource, range: SourceRange) => Diagnostic; type DiagnosticFactoryWithCode = DiagnosticFactory & { code: DiagnosticCode; }; export declare function createDiagnosticsFactory(): DiagnosticFactoryWithCode; export {};