import type { Array, ParseArray } from './array';
import type { BigInt, ParseBigInt } from './bigint';
import type { Const, ParseConst } from './const';
import type { Ident, ParseIdent } from './ident';
import type { Integer, ParseInteger } from './integer';
import type { Number, ParseNumber } from './number';
import type { Optional, ParseOptional } from './optional';
import type { ParseRest, Rest } from './rest';
import type { ParseString, String } from './string';
import type { ParseTuple, Tuple } from './tuple';
import type { ParseUnion, Union } from './union';
import type { ParseUnsignedInteger, UnsignedInteger } from './unsigned_integer';
import type { ParseUnsignedNumber, UnsignedNumber } from './unsigned_number';
import type { ParseUntil_1, Until_1 } from './until_1';
import type { ParseUntil, Until } from './until';
import type { IParser } from './parser';
type ParseInput = (Parser extends Array ? ParseArray : Parser extends BigInt ? ParseBigInt : Parser extends Const ? ParseConst : Parser extends Ident ? ParseIdent : Parser extends Integer ? ParseInteger : Parser extends Number ? ParseNumber : Parser extends Optional ? ParseOptional : Parser extends Rest ? ParseRest : Parser extends String ? ParseString : Parser extends Tuple ? ParseTuple : Parser extends Union ? ParseUnion : Parser extends UnsignedInteger ? ParseUnsignedInteger : Parser extends UnsignedNumber ? ParseUnsignedNumber : Parser extends Until ? ParseUntil : Parser extends Until_1 ? ParseUntil_1 : [
]);
type ParseMapping = ((Parser['mapping'] & {
input: ParseResult;
})['output']);
/** Parses code with the given parser */
export type Parse = (ParseInput extends [infer ParseResult extends unknown, infer InputRest extends string] ? [ParseMapping, InputRest] : []);
export {};