import { Token } from './lexer'; import { TokenPosition } from './util'; declare type Brand = K & { __brand: T; }; export declare type Terminal = Brand; export declare const brandLiteral: (value: string) => Brand; export declare const brandType: (type: string) => Brand; export declare const brandEof: Brand; declare type EofToken = { type: 'eof'; index: number; outerIndex: number; length: number; }; export declare class InternalParseError { readonly message: string; readonly pos: TokenPosition; constructor(message: string, pos: TokenPosition); } export declare class ParseState { private readonly tokens; private index; constructor(tokens: Token[]); private results; next(): Token | EofToken; peek(): Token | EofToken; push(x: unknown): void; reduce(arity: number, fn: (...xs: unknown[]) => unknown): void; done(): unknown; private eofToken; } export interface Parser { parse(state: ParseState): void; } export declare class MatchType implements Parser { private type; constructor(type: 'identifier' | 'value'); parse(state: ParseState): void; } export declare class MatchLiteral implements Parser { private value; constructor(value: string); parse(state: ParseState): void; } export declare class MatchRule implements Parser { private parsers; private ruleName; constructor(parsers: Map, ruleName: symbol); parse(state: ParseState): void; } declare type SeqFn = (...xs: unknown[]) => unknown; export declare class Seq implements Parser { private parsers; constructor(parsers: Parser[]); parse(state: ParseState): void; } export declare class Reduce implements Parser { private arity; private fn; constructor(arity: number, fn: SeqFn | null); parse(state: ParseState): void; } export declare class Alt implements Parser { private parserMap; constructor(parserMap: Map); parse(state: ParseState): void; } export {};