{
  "id": "@typed/router/Parser#Parser",
  "canonicalId": "@typed/router/Parser#Parser",
  "symbol": {
    "id": "@typed/router/Parser#Parser",
    "packageName": "@typed/router",
    "moduleName": "Parser",
    "exportName": "Parser",
    "kind": "interface",
    "signatures": [
      "export interface Parser<Output = unknown> extends TypeFunction<string, Result<Output, string>> {\n}",
      "export declare namespace Parser {\n    type Any = Parser<unknown>;\n    type Run<P extends Any, Input extends string> = Apply<P, Input>;\n    interface Succeed<A> extends TypeFunction<string, Result<A, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? readonly [\n            A,\n            Input\n        ] : never;\n    }\n    interface Fail extends TypeFunction<string, never> {\n        readonly return: never;\n    }\n    interface Char<C extends string> extends TypeFunction<string, Result<C, string>> {\n        readonly return: InputOf<this> extends `${C}${infer Rest}` ? readonly [\n            C,\n            Rest\n        ] : never;\n    }\n    interface String<S extends string> extends TypeFunction<string, Result<S, string>> {\n        readonly return: InputOf<this> extends `${S}${infer Rest}` ? readonly [\n            S,\n            Rest\n        ] : never;\n    }\n    type LowercaseAlphabet = \"a\" | \"b\" | \"c\" | \"d\" | \"e\" | \"f\" | \"g\" | \"h\" | \"i\" | \"j\" | \"k\" | \"l\" | \"m\" | \"n\" | \"o\" | \"p\" | \"q\" | \"r\" | \"s\" | \"t\" | \"u\" | \"v\" | \"w\" | \"x\" | \"y\" | \"z\";\n    type UppercaseAlphabet = \"A\" | \"B\" | \"C\" | \"D\" | \"E\" | \"F\" | \"G\" | \"H\" | \"I\" | \"J\" | \"K\" | \"L\" | \"M\" | \"N\" | \"O\" | \"P\" | \"Q\" | \"R\" | \"S\" | \"T\" | \"U\" | \"V\" | \"W\" | \"X\" | \"Y\" | \"Z\";\n    type Alphabet = LowercaseAlphabet | UppercaseAlphabet;\n    type Digit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\";\n    type AlphaNumeric = Alphabet | Digit;\n    type TakeWhileInternal<Input extends string, Allowed extends string, Acc extends string = \"\"> = Input extends `${infer Head}${infer Tail}` ? Head extends Allowed ? TakeWhileInternal<Tail, Allowed, `${Acc}${Head}`> : readonly [\n        Acc,\n        Input\n    ] : readonly [\n        Acc,\n        Input\n    ];\n    type TakeWhile1Internal<Input extends string, Allowed extends string> = TakeWhileInternal<Input, Allowed> extends readonly [\n        infer Taken extends string,\n        infer Rest extends string\n    ] ? Taken extends \"\" ? never : readonly [\n        Taken,\n        Rest\n    ] : never;\n    interface TakeWhile<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhileInternal<Input, Allowed> : never;\n    }\n    interface TakeWhile1<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhile1Internal<Input, Allowed> : never;\n    }\n    interface Map<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Pipe<Value, F>,\n            Rest\n        ] : never : never : never;\n    }\n    interface FlatMap<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? Pipe<Value, F> extends infer Next ? [\n            Next\n        ] extends [\n            never\n        ] ? never : Next extends Any ? Pipe<Rest, Next> : never : never : never : never : never;\n    }\n    interface Zip<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R1 ? [\n            R1\n        ] extends [\n            never\n        ] ? never : R1 extends readonly [\n            infer Value1,\n            infer Rest1 extends string\n        ] ? Pipe<Rest1, Q> extends infer R2 ? [\n            R2\n        ] extends [\n            never\n        ] ? never : R2 extends readonly [\n            infer Value2,\n            infer Rest2 extends string\n        ] ? readonly [\n            readonly [\n                Value1,\n                Value2\n            ],\n            Rest2\n        ] : never : never : never : never : never;\n    }\n    interface OrElse<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? Pipe<Input, Q> : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    interface Optional<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? readonly [\n            undefined,\n            Input\n        ] : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    type ManyInternal<P extends Any, Input extends string, Acc extends ReadonlyArray<unknown> = readonly [\n    ]> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? readonly [\n        Acc,\n        Input\n    ] : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        ...Acc,\n        Value\n    ]> : never : never;\n    type Many1Internal<P extends Any, Input extends string> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? never : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        Value\n    ]> : never : never;\n    interface Many<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? ManyInternal<P, Input> : never;\n    }\n    interface Many1<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Many1Internal<P, Input> : never;\n    }\n    interface MapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Map<P, F> : never;\n    }\n    interface FlatMapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? FlatMap<P, F> : never;\n    }\n    interface ZipWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Zip<P, Q> : never;\n    }\n    interface OrElseWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? OrElse<P, Q> : never;\n    }\n    interface OptionalOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Optional<P> : never;\n    }\n    interface ManyOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many<P> : never;\n    }\n    interface Many1Of extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many1<P> : never;\n    }\n}"
    ],
    "summary": "A type lambda from a string literal to a parse result.",
    "sections": {
      "Why": "Route grammar can be evaluated in TypeScript while mirroring the runtime parser.",
      "Ownership and lifetime": "`Parser` is an HKT protocol evaluated by TypeScript. Implementing it creates no runtime parser object or subscription."
    },
    "examples": [],
    "relations": [],
    "source": {
      "file": "packages/router/src/Parser.ts",
      "line": 39
    },
    "since": "1.0.0",
    "category": "Parser contracts"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/router/Parser#Parser",
    "packageName": "@typed/router",
    "packageVersion": "1.0.0-beta.7",
    "moduleName": "Parser",
    "consumerSpecifier": "@typed/router/Parser",
    "exportName": "Parser",
    "qualifiedName": "Parser",
    "declarationKey": "declaration:3cb1df347f1e0a5b1e7fcb47",
    "family": "interface",
    "signatures": [
      "export interface Parser<Output = unknown> extends TypeFunction<string, Result<Output, string>> {\n}",
      "export declare namespace Parser {\n    type Any = Parser<unknown>;\n    type Run<P extends Any, Input extends string> = Apply<P, Input>;\n    interface Succeed<A> extends TypeFunction<string, Result<A, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? readonly [\n            A,\n            Input\n        ] : never;\n    }\n    interface Fail extends TypeFunction<string, never> {\n        readonly return: never;\n    }\n    interface Char<C extends string> extends TypeFunction<string, Result<C, string>> {\n        readonly return: InputOf<this> extends `${C}${infer Rest}` ? readonly [\n            C,\n            Rest\n        ] : never;\n    }\n    interface String<S extends string> extends TypeFunction<string, Result<S, string>> {\n        readonly return: InputOf<this> extends `${S}${infer Rest}` ? readonly [\n            S,\n            Rest\n        ] : never;\n    }\n    type LowercaseAlphabet = \"a\" | \"b\" | \"c\" | \"d\" | \"e\" | \"f\" | \"g\" | \"h\" | \"i\" | \"j\" | \"k\" | \"l\" | \"m\" | \"n\" | \"o\" | \"p\" | \"q\" | \"r\" | \"s\" | \"t\" | \"u\" | \"v\" | \"w\" | \"x\" | \"y\" | \"z\";\n    type UppercaseAlphabet = \"A\" | \"B\" | \"C\" | \"D\" | \"E\" | \"F\" | \"G\" | \"H\" | \"I\" | \"J\" | \"K\" | \"L\" | \"M\" | \"N\" | \"O\" | \"P\" | \"Q\" | \"R\" | \"S\" | \"T\" | \"U\" | \"V\" | \"W\" | \"X\" | \"Y\" | \"Z\";\n    type Alphabet = LowercaseAlphabet | UppercaseAlphabet;\n    type Digit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\";\n    type AlphaNumeric = Alphabet | Digit;\n    type TakeWhileInternal<Input extends string, Allowed extends string, Acc extends string = \"\"> = Input extends `${infer Head}${infer Tail}` ? Head extends Allowed ? TakeWhileInternal<Tail, Allowed, `${Acc}${Head}`> : readonly [\n        Acc,\n        Input\n    ] : readonly [\n        Acc,\n        Input\n    ];\n    type TakeWhile1Internal<Input extends string, Allowed extends string> = TakeWhileInternal<Input, Allowed> extends readonly [\n        infer Taken extends string,\n        infer Rest extends string\n    ] ? Taken extends \"\" ? never : readonly [\n        Taken,\n        Rest\n    ] : never;\n    interface TakeWhile<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhileInternal<Input, Allowed> : never;\n    }\n    interface TakeWhile1<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhile1Internal<Input, Allowed> : never;\n    }\n    interface Map<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Pipe<Value, F>,\n            Rest\n        ] : never : never : never;\n    }\n    interface FlatMap<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? Pipe<Value, F> extends infer Next ? [\n            Next\n        ] extends [\n            never\n        ] ? never : Next extends Any ? Pipe<Rest, Next> : never : never : never : never : never;\n    }\n    interface Zip<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R1 ? [\n            R1\n        ] extends [\n            never\n        ] ? never : R1 extends readonly [\n            infer Value1,\n            infer Rest1 extends string\n        ] ? Pipe<Rest1, Q> extends infer R2 ? [\n            R2\n        ] extends [\n            never\n        ] ? never : R2 extends readonly [\n            infer Value2,\n            infer Rest2 extends string\n        ] ? readonly [\n            readonly [\n                Value1,\n                Value2\n            ],\n            Rest2\n        ] : never : never : never : never : never;\n    }\n    interface OrElse<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? Pipe<Input, Q> : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    interface Optional<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? readonly [\n            undefined,\n            Input\n        ] : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    type ManyInternal<P extends Any, Input extends string, Acc extends ReadonlyArray<unknown> = readonly [\n    ]> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? readonly [\n        Acc,\n        Input\n    ] : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        ...Acc,\n        Value\n    ]> : never : never;\n    type Many1Internal<P extends Any, Input extends string> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? never : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        Value\n    ]> : never : never;\n    interface Many<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? ManyInternal<P, Input> : never;\n    }\n    interface Many1<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Many1Internal<P, Input> : never;\n    }\n    interface MapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Map<P, F> : never;\n    }\n    interface FlatMapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? FlatMap<P, F> : never;\n    }\n    interface ZipWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Zip<P, Q> : never;\n    }\n    interface OrElseWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? OrElse<P, Q> : never;\n    }\n    interface OptionalOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Optional<P> : never;\n    }\n    interface ManyOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many<P> : never;\n    }\n    interface Many1Of extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many1<P> : never;\n    }\n}"
    ],
    "sourceSpans": [
      {
        "file": "packages/router/src/Parser.ts",
        "start": {
          "line": 39,
          "column": 1
        },
        "end": {
          "line": 39,
          "column": 98
        }
      },
      {
        "file": "packages/router/src/Parser.ts",
        "start": {
          "line": 64,
          "column": 1
        },
        "end": {
          "line": 991,
          "column": 2
        }
      }
    ],
    "aliases": [],
    "isAlias": false,
    "static": false
  },
  "declaration": {
    "declarationKey": "declaration:3cb1df347f1e0a5b1e7fcb47",
    "name": "Parser",
    "family": "interface",
    "facets": [
      {
        "family": "interface",
        "syntaxKind": "InterfaceDeclaration",
        "signatures": [
          "export interface Parser<Output = unknown> extends TypeFunction<string, Result<Output, string>> {\n}"
        ],
        "typeParameters": [
          "Output = unknown"
        ],
        "sourceSpans": [
          {
            "file": "packages/router/src/Parser.ts",
            "start": {
              "line": 39,
              "column": 1
            },
            "end": {
              "line": 39,
              "column": 98
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "namespace",
        "syntaxKind": "ModuleDeclaration",
        "signatures": [
          "export declare namespace Parser {\n    type Any = Parser<unknown>;\n    type Run<P extends Any, Input extends string> = Apply<P, Input>;\n    interface Succeed<A> extends TypeFunction<string, Result<A, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? readonly [\n            A,\n            Input\n        ] : never;\n    }\n    interface Fail extends TypeFunction<string, never> {\n        readonly return: never;\n    }\n    interface Char<C extends string> extends TypeFunction<string, Result<C, string>> {\n        readonly return: InputOf<this> extends `${C}${infer Rest}` ? readonly [\n            C,\n            Rest\n        ] : never;\n    }\n    interface String<S extends string> extends TypeFunction<string, Result<S, string>> {\n        readonly return: InputOf<this> extends `${S}${infer Rest}` ? readonly [\n            S,\n            Rest\n        ] : never;\n    }\n    type LowercaseAlphabet = \"a\" | \"b\" | \"c\" | \"d\" | \"e\" | \"f\" | \"g\" | \"h\" | \"i\" | \"j\" | \"k\" | \"l\" | \"m\" | \"n\" | \"o\" | \"p\" | \"q\" | \"r\" | \"s\" | \"t\" | \"u\" | \"v\" | \"w\" | \"x\" | \"y\" | \"z\";\n    type UppercaseAlphabet = \"A\" | \"B\" | \"C\" | \"D\" | \"E\" | \"F\" | \"G\" | \"H\" | \"I\" | \"J\" | \"K\" | \"L\" | \"M\" | \"N\" | \"O\" | \"P\" | \"Q\" | \"R\" | \"S\" | \"T\" | \"U\" | \"V\" | \"W\" | \"X\" | \"Y\" | \"Z\";\n    type Alphabet = LowercaseAlphabet | UppercaseAlphabet;\n    type Digit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\";\n    type AlphaNumeric = Alphabet | Digit;\n    type TakeWhileInternal<Input extends string, Allowed extends string, Acc extends string = \"\"> = Input extends `${infer Head}${infer Tail}` ? Head extends Allowed ? TakeWhileInternal<Tail, Allowed, `${Acc}${Head}`> : readonly [\n        Acc,\n        Input\n    ] : readonly [\n        Acc,\n        Input\n    ];\n    type TakeWhile1Internal<Input extends string, Allowed extends string> = TakeWhileInternal<Input, Allowed> extends readonly [\n        infer Taken extends string,\n        infer Rest extends string\n    ] ? Taken extends \"\" ? never : readonly [\n        Taken,\n        Rest\n    ] : never;\n    interface TakeWhile<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhileInternal<Input, Allowed> : never;\n    }\n    interface TakeWhile1<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhile1Internal<Input, Allowed> : never;\n    }\n    interface Map<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Pipe<Value, F>,\n            Rest\n        ] : never : never : never;\n    }\n    interface FlatMap<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? Pipe<Value, F> extends infer Next ? [\n            Next\n        ] extends [\n            never\n        ] ? never : Next extends Any ? Pipe<Rest, Next> : never : never : never : never : never;\n    }\n    interface Zip<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R1 ? [\n            R1\n        ] extends [\n            never\n        ] ? never : R1 extends readonly [\n            infer Value1,\n            infer Rest1 extends string\n        ] ? Pipe<Rest1, Q> extends infer R2 ? [\n            R2\n        ] extends [\n            never\n        ] ? never : R2 extends readonly [\n            infer Value2,\n            infer Rest2 extends string\n        ] ? readonly [\n            readonly [\n                Value1,\n                Value2\n            ],\n            Rest2\n        ] : never : never : never : never : never;\n    }\n    interface OrElse<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? Pipe<Input, Q> : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    interface Optional<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? readonly [\n            undefined,\n            Input\n        ] : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    type ManyInternal<P extends Any, Input extends string, Acc extends ReadonlyArray<unknown> = readonly [\n    ]> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? readonly [\n        Acc,\n        Input\n    ] : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        ...Acc,\n        Value\n    ]> : never : never;\n    type Many1Internal<P extends Any, Input extends string> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? never : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        Value\n    ]> : never : never;\n    interface Many<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? ManyInternal<P, Input> : never;\n    }\n    interface Many1<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Many1Internal<P, Input> : never;\n    }\n    interface MapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Map<P, F> : never;\n    }\n    interface FlatMapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? FlatMap<P, F> : never;\n    }\n    interface ZipWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Zip<P, Q> : never;\n    }\n    interface OrElseWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? OrElse<P, Q> : never;\n    }\n    interface OptionalOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Optional<P> : never;\n    }\n    interface ManyOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many<P> : never;\n    }\n    interface Many1Of extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many1<P> : never;\n    }\n}"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/Parser.ts",
            "start": {
              "line": 64,
              "column": 1
            },
            "end": {
              "line": 991,
              "column": 2
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      }
    ],
    "signatures": [
      "export interface Parser<Output = unknown> extends TypeFunction<string, Result<Output, string>> {\n}",
      "export declare namespace Parser {\n    type Any = Parser<unknown>;\n    type Run<P extends Any, Input extends string> = Apply<P, Input>;\n    interface Succeed<A> extends TypeFunction<string, Result<A, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? readonly [\n            A,\n            Input\n        ] : never;\n    }\n    interface Fail extends TypeFunction<string, never> {\n        readonly return: never;\n    }\n    interface Char<C extends string> extends TypeFunction<string, Result<C, string>> {\n        readonly return: InputOf<this> extends `${C}${infer Rest}` ? readonly [\n            C,\n            Rest\n        ] : never;\n    }\n    interface String<S extends string> extends TypeFunction<string, Result<S, string>> {\n        readonly return: InputOf<this> extends `${S}${infer Rest}` ? readonly [\n            S,\n            Rest\n        ] : never;\n    }\n    type LowercaseAlphabet = \"a\" | \"b\" | \"c\" | \"d\" | \"e\" | \"f\" | \"g\" | \"h\" | \"i\" | \"j\" | \"k\" | \"l\" | \"m\" | \"n\" | \"o\" | \"p\" | \"q\" | \"r\" | \"s\" | \"t\" | \"u\" | \"v\" | \"w\" | \"x\" | \"y\" | \"z\";\n    type UppercaseAlphabet = \"A\" | \"B\" | \"C\" | \"D\" | \"E\" | \"F\" | \"G\" | \"H\" | \"I\" | \"J\" | \"K\" | \"L\" | \"M\" | \"N\" | \"O\" | \"P\" | \"Q\" | \"R\" | \"S\" | \"T\" | \"U\" | \"V\" | \"W\" | \"X\" | \"Y\" | \"Z\";\n    type Alphabet = LowercaseAlphabet | UppercaseAlphabet;\n    type Digit = \"0\" | \"1\" | \"2\" | \"3\" | \"4\" | \"5\" | \"6\" | \"7\" | \"8\" | \"9\";\n    type AlphaNumeric = Alphabet | Digit;\n    type TakeWhileInternal<Input extends string, Allowed extends string, Acc extends string = \"\"> = Input extends `${infer Head}${infer Tail}` ? Head extends Allowed ? TakeWhileInternal<Tail, Allowed, `${Acc}${Head}`> : readonly [\n        Acc,\n        Input\n    ] : readonly [\n        Acc,\n        Input\n    ];\n    type TakeWhile1Internal<Input extends string, Allowed extends string> = TakeWhileInternal<Input, Allowed> extends readonly [\n        infer Taken extends string,\n        infer Rest extends string\n    ] ? Taken extends \"\" ? never : readonly [\n        Taken,\n        Rest\n    ] : never;\n    interface TakeWhile<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhileInternal<Input, Allowed> : never;\n    }\n    interface TakeWhile1<Allowed extends string> extends TypeFunction<string, Result<string, string>> {\n        readonly return: InputOf<this> extends infer Input extends string ? TakeWhile1Internal<Input, Allowed> : never;\n    }\n    interface Map<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Pipe<Value, F>,\n            Rest\n        ] : never : never : never;\n    }\n    interface FlatMap<P extends Any, F extends TypeFunction> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? never : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? Pipe<Value, F> extends infer Next ? [\n            Next\n        ] extends [\n            never\n        ] ? never : Next extends Any ? Pipe<Rest, Next> : never : never : never : never : never;\n    }\n    interface Zip<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R1 ? [\n            R1\n        ] extends [\n            never\n        ] ? never : R1 extends readonly [\n            infer Value1,\n            infer Rest1 extends string\n        ] ? Pipe<Rest1, Q> extends infer R2 ? [\n            R2\n        ] extends [\n            never\n        ] ? never : R2 extends readonly [\n            infer Value2,\n            infer Rest2 extends string\n        ] ? readonly [\n            readonly [\n                Value1,\n                Value2\n            ],\n            Rest2\n        ] : never : never : never : never : never;\n    }\n    interface OrElse<P extends Any, Q extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? Pipe<Input, Q> : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    interface Optional<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Apply<P, Input> extends infer R ? [\n            R\n        ] extends [\n            never\n        ] ? readonly [\n            undefined,\n            Input\n        ] : R extends readonly [\n            infer Value,\n            infer Rest extends string\n        ] ? readonly [\n            Value,\n            Rest\n        ] : never : never : never;\n    }\n    type ManyInternal<P extends Any, Input extends string, Acc extends ReadonlyArray<unknown> = readonly [\n    ]> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? readonly [\n        Acc,\n        Input\n    ] : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        ...Acc,\n        Value\n    ]> : never : never;\n    type Many1Internal<P extends Any, Input extends string> = Apply<P, Input> extends infer R ? [\n        R\n    ] extends [\n        never\n    ] ? never : R extends readonly [\n        infer Value,\n        infer Rest extends string\n    ] ? IsNoProgress<Input, Rest> extends true ? never : ManyInternal<P, Rest, readonly [\n        Value\n    ]> : never : never;\n    interface Many<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? ManyInternal<P, Input> : never;\n    }\n    interface Many1<P extends Any> extends Parser<unknown> {\n        readonly return: InputOf<this> extends infer Input extends string ? Many1Internal<P, Input> : never;\n    }\n    interface MapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Map<P, F> : never;\n    }\n    interface FlatMapTo<F extends TypeFunction> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? FlatMap<P, F> : never;\n    }\n    interface ZipWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Zip<P, Q> : never;\n    }\n    interface OrElseWith<Q extends Any> extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? OrElse<P, Q> : never;\n    }\n    interface OptionalOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Optional<P> : never;\n    }\n    interface ManyOf extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many<P> : never;\n    }\n    interface Many1Of extends TypeFunction {\n        readonly return: InputOf<this> extends infer P extends Any ? Many1<P> : never;\n    }\n}"
    ],
    "typeParameters": [
      "Output = unknown"
    ],
    "summary": "A type lambda from a string literal to a parse result.",
    "sections": {
      "Why": "Route grammar can be evaluated in TypeScript while mirroring the runtime parser.",
      "Ownership and lifetime": "`Parser` is an HKT protocol evaluated by TypeScript. Implementing it creates no runtime parser object or subscription."
    },
    "examples": [],
    "sourceSpans": [
      {
        "file": "packages/router/src/Parser.ts",
        "start": {
          "line": 39,
          "column": 1
        },
        "end": {
          "line": 39,
          "column": 98
        }
      },
      {
        "file": "packages/router/src/Parser.ts",
        "start": {
          "line": 64,
          "column": 1
        },
        "end": {
          "line": 991,
          "column": 2
        }
      }
    ],
    "since": "1.0.0",
    "category": "Parser contracts"
  }
}
