interface Success { ok: true; body: T; } interface Failure { ok: false; } declare type ParseResult = Success | Failure; declare type ParserComponent = (scanner: Scanner) => ParseResult; declare type BlockParseResultBody = { type: "Block"; value: Record; } | { type: "Table"; key: string[]; value: Record; } | { type: "TableArray"; key: string[]; value: Record; }; export declare class TOMLParseError extends Error { } export declare class Scanner { #private; private source; constructor(source: string); /** * Get current character * @param index - relative index from current position */ char(index?: number): string; /** * Get sliced string * @param start - start position relative from current position * @param end - end position relative from current position */ slice(start: number, end: number): string; /** * Move position to next */ next(count?: number): void; /** * Move position until current char is not a whitespace, EOL, or comment. * @param options.inline - skip only whitespaces */ nextUntilChar(options?: { inline?: boolean; comment?: boolean; }): void; /** * Position reached EOF or not */ eof(): boolean; /** * Get current position */ position(): number; isCurrentCharEOL(): boolean; } export declare const Utils: { unflat(keys: string[], values?: unknown, cObj?: unknown): Record; deepAssignWithTable(target: Record, table: { type: "Table" | "TableArray"; key: string[]; value: Record; }): void; }; export declare function BareKey(scanner: Scanner): ParseResult; export declare function BasicString(scanner: Scanner): ParseResult; export declare function LiteralString(scanner: Scanner): ParseResult; export declare function MultilineBasicString(scanner: Scanner): ParseResult; export declare function MultilineLiteralString(scanner: Scanner): ParseResult; export declare function Symbols(scanner: Scanner): ParseResult; export declare const DottedKey: ParserComponent; export declare function Integer(scanner: Scanner): ParseResult; export declare function Float(scanner: Scanner): ParseResult; export declare function DateTime(scanner: Scanner): ParseResult; export declare function LocalTime(scanner: Scanner): ParseResult; export declare function ArrayValue(scanner: Scanner): ParseResult; export declare function InlineTable(scanner: Scanner): ParseResult>; export declare const Value: ParserComponent; export declare const Pair: ParserComponent<{ [key: string]: unknown; }>; export declare function Block(scanner: Scanner): ParseResult; export declare const TableHeader: ParserComponent; export declare function Table(scanner: Scanner): ParseResult; export declare const TableArrayHeader: ParserComponent; export declare function TableArray(scanner: Scanner): ParseResult; export declare function Toml(scanner: Scanner): ParseResult>; export declare function ParserFactory(parser: ParserComponent): (tomlString: string) => T; /** * Parse parses TOML string into an object. * @param tomlString */ export declare const parse: (tomlString: string) => Record; export {};