import { TokenType } from "./utils/constants"; import { JsonPrimitive, JsonKey, JsonObject, JsonArray, JsonStruct } from "./utils/types"; export declare enum TokenParserMode { OBJECT = 0, ARRAY = 1 } export interface StackElement { key: JsonKey; value: JsonStruct; mode: TokenParserMode | undefined; emit: boolean; } export interface TokenParserOptions { paths?: string[]; keepStack?: boolean; separator?: string; } export declare class TokenParserError extends Error { constructor(message: string); } export default class TokenParser { private readonly paths?; private readonly keepStack; private readonly separator?; private state; private mode; private key; private value; private stack; constructor(opts?: TokenParserOptions); private shouldEmit; private push; private pop; private emit; get isEnded(): boolean; write(token: TokenType.LEFT_BRACE, value: "{"): void; write(token: TokenType.RIGHT_BRACE, value: "}"): void; write(token: TokenType.LEFT_BRACKET, value: "["): void; write(token: TokenType.RIGHT_BRACKET, value: "]"): void; write(token: TokenType.COLON, value: ":"): void; write(token: TokenType.COMMA, value: ","): void; write(token: TokenType.TRUE, value: true): void; write(token: TokenType.FALSE, value: false): void; write(token: TokenType.NULL, value: null): void; write(token: TokenType.STRING, value: string): void; write(token: TokenType.NUMBER, value: number): void; write(token: TokenType.SEPARATOR, value: string): void; error(err: Error): void; end(): void; onValue(value: JsonPrimitive | JsonStruct, key: number, parent: JsonArray, stack: StackElement[]): void; onValue(value: JsonPrimitive | JsonStruct, key: string, parent: JsonObject, stack: StackElement[]): void; onValue(value: JsonPrimitive | JsonStruct, key: undefined, parent: undefined, stack: []): void; onError(err: Error): void; onEnd(): void; }