import { ParamParser } from "./paramParser"; /** * The React Component for a Route */ export type RouteElement = () => React.ReactElement; export type RouteOptions = Record | undefined; type InferParam = T extends `:${infer O}?` ? [M[0], M[1] | O] : T extends `:${infer O}*` ? [M[0], M[1] | O] : T extends `:${infer O}+` ? [M[0] | O, M[1]] : T extends `:${infer O}` ? [M[0] | O, M[1]] : M; export type InferParamGroups

= P extends `${infer A}/${infer B}` ? InferParam> : P extends `${infer A}&${infer B}` ? InferParam> : InferParam; type MergeParamGroups = G[0] | G[1]; export type RequiredParamNames = G[0]; export type OptionalParamNames = G[1]; export type SerializedParams = Record; export type RawParams = Record; export type ParamsParserMap = Record>; export type TemplateParserMap = ParamsParserMap>>; export type ExtractParamsParserReturnTypes< P extends ParamsParserMap, F extends keyof P, > = { [K in F]: ReturnType; }