/** * JSON-compatible value shape returned by the parser once complete. */ export type JsonValue = null | boolean | number | string | JsonValue[] | { [key: string]: JsonValue; }; /** * JSON value that may be partially resolved while parsing. */ export type JsonResolvedValue = null | boolean | number | string | JsonResolvedValue[] | { [key: string]: JsonResolvedValue; } | undefined; /** * AST node kinds produced by the streaming parser. */ export type JsonAstType = 'null' | 'boolean' | 'number' | 'string' | 'array' | 'object'; /** * Shared fields for all AST node shapes. */ export type JsonAstBase = { id: number; type: JsonAstType; parentId: number | null; closed: boolean; resolvedValue: JsonResolvedValue; }; /** * AST node representing a `null` literal. */ export type JsonNullAstNode = JsonAstBase & { type: 'null'; resolvedValue: null | undefined; }; /** * AST node representing a boolean literal. */ export type JsonBooleanAstNode = JsonAstBase & { type: 'boolean'; resolvedValue: boolean | undefined; }; /** * AST node representing a number literal, including its raw buffer. */ export type JsonNumberAstNode = JsonAstBase & { type: 'number'; buffer: string; resolvedValue: number | undefined; }; /** * AST node representing a string literal, including its raw buffer. */ export type JsonStringAstNode = JsonAstBase & { type: 'string'; buffer: string; resolvedValue: string | undefined; }; /** * AST node representing an array container. */ export type JsonArrayAstNode = JsonAstBase & { type: 'array'; children: number[]; resolvedValue: JsonResolvedValue[] | undefined; }; /** * AST node representing an object container. */ export type JsonObjectAstNode = JsonAstBase & { type: 'object'; keys: string[]; children: number[]; resolvedValue: Record | undefined; }; /** * Union of all AST node shapes. */ export type JsonAstNode = JsonNullAstNode | JsonBooleanAstNode | JsonNumberAstNode | JsonStringAstNode | JsonArrayAstNode | JsonObjectAstNode; /** * Error information captured by the parser when invalid JSON is encountered. */ export type ParserError = { message: string; index: number; line: number; column: number; }; /** * Internal parser mode that drives state transitions. */ export type ParseMode = 'Value' | 'ArrayValue' | 'ArrayValueOrEnd' | 'ObjectKey' | 'ObjectKeyOrEnd' | 'ObjectColon' | 'CommaOrEnd' | 'String' | 'Number' | 'Literal' | 'Done' | 'Error'; /** * Complete immutable parser state for streaming JSON parsing. */ export type ParserState = { nextId: number; mode: ParseMode; stack: number[]; nodes: JsonAstNode[]; rootId: number | null; error: ParserError | null; isComplete: boolean; index: number; line: number; column: number; stringContext: 'value' | 'key' | null; stringEscape: boolean; stringUnicode: string | null; literalExpected: string | null; literalBuffer: string; pendingKey: string | null; pendingKeyOwner: number | null; currentNodeId: number | null; keyBuffer: string; }; /** * Creates the initial parser state for a new JSON stream. * * @returns Fresh parser state. */ export declare function createParserState(): ParserState; /** * Parses a chunk of JSON text and returns the next parser state. * * @param state - Current parser state. * @param chunk - JSON text chunk to parse. * @returns Updated parser state after consuming the chunk. */ export declare function parseChunk(state: ParserState, chunk: string): ParserState; /** * Finalizes parsing at end-of-stream, returning an error if JSON is incomplete. * * @param state - Current parser state. * @returns Updated parser state after end-of-stream handling. */ export declare function finalizeJsonParse(state: ParserState): ParserState; /** * Returns the fully resolved JSON value when parsing is complete and error-free. * * @param state - Current parser state. * @returns Resolved JSON value when complete, otherwise undefined. */ export declare function getResolvedValue(state: ParserState): JsonValue | undefined; //# sourceMappingURL=json-parser.d.ts.map