import { ErrorKind } from './errors.js'; import type { Position } from './types.js'; export declare enum TokenKind { EOF = 0, Unquoted = 1, Quoted = 2 } export interface TokenBase { kind: TokenKind; value: string; pos: number; line: number; column: number; } export interface TokenEOF extends TokenBase { kind: TokenKind.EOF; } export interface TokenUnquoted extends TokenBase { kind: TokenKind.Unquoted; } export interface TokenQuoted extends TokenBase { kind: TokenKind.Quoted; } export type Token = TokenEOF | TokenUnquoted | TokenQuoted; export interface TokenStream { expectLinebreak(): void; eatLinebreak(): boolean; isLinebreak(): boolean; expectString(): TokenQuoted | TokenUnquoted; expectString(kind: TokenKind.Quoted): TokenQuoted; expectString(kind: TokenKind.Unquoted): TokenUnquoted; eatString(): TokenQuoted | TokenUnquoted | undefined; eatString(kind: TokenKind.Quoted): TokenQuoted | undefined; eatString(kind: TokenKind.Unquoted): TokenUnquoted | undefined; isEof(): boolean; getCurrentLocation(): Position; } export declare function tokenize(source: string, onError: (kind: ErrorKind, errorAt: Position) => void): TokenStream;