import { Url } from './index'; import Maybe from '../Maybe'; interface Queries { readonly [key: string]: Array; } interface State { readonly unvisited: Array; readonly queries: Queries; readonly fragment: Maybe; readonly value: T; } declare type FA = F extends (value: infer A) => R ? A : R; declare type FF = F extends (value: infer A) => infer N ? (value: A) => FF : R; declare type FN = F extends (arg0: infer A0) => infer F1 ? (arg0: A0) => F1 extends (arg1: infer A1) => infer F2 ? (arg1: A1) => F2 extends (arg2: infer A2) => infer F3 ? (arg2: A2) => F3 extends (arg3: infer A3) => infer F4 ? (arg3: A3) => F4 extends (arg4: infer A4) => infer F5 ? (arg4: A4) => F5 extends (arg5: infer A5) => infer F6 ? (arg5: A5) => F6 extends (arg6: infer A6) => infer F7 ? (arg6: A6) => F7 extends (arg7: infer A7) => infer F8 ? (arg7: A7) => F8 extends (arg8: infer A8) => infer F9 ? (arg8: A8) => F9 extends (arg9: infer A9) => infer F10 ? (arg9: A9) => F10 extends (arg10: infer A10) => infer F11 ? (arg10: A10) => F11 extends (arg11: infer A11) => infer F12 ? (arg11: A11) => F12 extends (arg12: infer A12) => infer F13 ? (arg12: A12) => F13 extends (arg13: infer A13) => infer F14 ? (arg13: A13) => F14 extends (arg14: infer A14) => infer F15 ? (arg14: A14) => F15 extends (arg15: infer A15) => infer F16 ? (arg15: A15) => F16 extends (arg16: infer A16) => infer F17 ? (arg16: A16) => F17 extends (arg17: infer A17) => infer F18 ? (arg17: A17) => F18 extends (arg18: infer A18) => infer F19 ? (arg18: A18) => F19 extends (arg19: infer A19) => infer F20 ? (arg19: A19) => FN : R : R : R : R : R : R : R : R : R : R : R : R : R : R : R : R : R : R : R : R; export declare abstract class Parser { static readonly root: Parser; static s(path: string): Parser; static custom(converter: (path: string) => Maybe): Parser<(str: A) => unknown, unknown>; static readonly string: Parser<(str: string) => unknown, unknown>; static readonly number: Parser<(num: number) => unknown, unknown>; static oneOf(parsers: Array>): Parser; map(tagger: FN): Parser<(value: B_) => C, C>; readonly slash: Slash; query(key: string): Query; fragment(converter: (valeu: Maybe) => B_): Parser C>, C>; parse(url: Url): Maybe>; abstract dive(state: State): Array>; } export interface Slash { string: Parser B>, B>; number: Parser B>, B>; s(path: string): Parser; custom(converter: (str: string) => Maybe): Parser C>, C>; oneOf(parsers: Array>): Parser, C>; } export interface Query { string: Parser) => B>, B>; number: Parser) => B>, B>; boolean: Parser) => B>, B>; list: QueryList; enum(variants: Array<[string, B_]>): Parser) => C>, C>; custom(converter: (values: Maybe) => B_): Parser C>, C>; } export interface QueryList { string: Parser) => B>, B>; number: Parser) => B>, B>; boolean: Parser) => B>, B>; enum(variants: Array<[string, B_]>): Parser) => C>, C>; custom(converter: (values: Array) => B_): Parser C>, C>; } export {};