import { ParserLike, ParserValue } from "./combinators"; import type { ParseResultDetaill } from "./combinators"; import { Parser, Mark, Node } from "./parser"; interface Chain { (onOk: (value: Value, i: ParseResultDetaill) => Parser): (parser2: Parser) => Parser; (onOk: (value: Value, i: ParseResultDetaill) => Parser, onFail: (i: ParseResultDetaill) => Parser): (parser2: Parser) => Parser; } declare const chain: Chain; declare const mapToParser: Chain; declare const join: (sep?: string) => (parser: Parser) => Parser; declare const many: (parserLike: T) => Parser[]>; declare type Concat = (unit: T) => (parserLike: U) => ParserValue extends unknown[] ? ParserValue extends unknown[] ? Parser<[...ParserValue, ...ParserValue]> : Parser<[ParserValue, ...ParserValue]> : ParserValue extends unknown[] ? Parser<[...ParserValue, ParserValue]> : Parser<[ParserValue, ParserValue]>; declare const concat: Concat; declare const plus: Concat; declare const and: Concat; declare const pick1: (key: I) => (parser: Parser) => Parser; declare type Remap = { >(mapTemplate: I): >(parser: Parser) => Parser<{ [K in keyof I]: I[K] extends keyof T ? T[I[K]] : I[K]; }>; >(mapTemplate: I): >(parser: Parser) => Parser<{ [K in keyof I]: I[K] extends keyof T ? T[I[K]] : I[K]; }>; >(mapTemplate: I): | Readonly>(parser: Parser) => Parser<{ [K in keyof I]: I[K] extends keyof T ? T[I[K]] : I[K]; }>; >(mapTemplate: readonly [...I]): | Readonly>(parser: Parser) => Parser<{ [K in keyof I]: I[K] extends keyof T ? T[I[K]] : I[K]; }>; }; declare const remap: Remap; declare type MakeObj