import * as json from "./json"; import * as iterator from "./iterator"; import * as sourceMap from "./source-map"; declare namespace set { const create: (v: readonly T[]) => Set; const isElement: (set: Set, c: string) => c is T; type GetElementType> = T extends Set ? U : string; } declare const symbol: Set<"{" | "}" | "[" | "]" | "," | ":">; interface JsonTokenBase { readonly position: sourceMap.FilePosition; } interface JsonSymbolToken extends JsonTokenBase { readonly kind: set.GetElementType; } interface JsonValueToken extends JsonTokenBase { readonly kind: "value"; readonly value: json.JsonPrimitive; } declare type JsonToken = JsonSymbolToken | JsonValueToken; export interface ErrorBase { readonly position: sourceMap.FilePosition; readonly token: string; readonly message: string; readonly url: string; } export declare type SyntaxErrorCode = "invalid token" | "invalid symbol" | "invalid escape symbol" | "unexpected end of string"; export interface SyntaxError extends ErrorBase { readonly kind: "syntax"; readonly code: SyntaxErrorCode; } export declare type StructureErrorCode = "unexpected end of file" | "unexpected token" | "expecting property name"; export interface StructureError extends ErrorBase { readonly kind: "structure"; readonly code: StructureErrorCode; } export declare type ParseError = SyntaxError | StructureError; export declare const defaultErrorReport: (e: ParseError) => never; export declare type ReportError = (error: ParseError) => void; export declare const tokenize: (s: string, reportError: ReportError | undefined, url: string) => iterator.IterableEx; export declare const parseJson: (url: string, context: string, reportError?: ReportError) => json.Json; export {}; //# sourceMappingURL=json-parser.d.ts.map