import { ParamParser, ParamParsers } from "./param-parser"; declare type _ = T; export declare type Merge = _<{ [k in keyof T]: T[k]; }>; export declare type Trim = T extends `/${infer Rest}${"/" | ""}` ? Trim : T; declare type TypeOfParser = T extends ParamParser ? A : never; declare type ParserType = TypeOfParser; declare type PathParam = S extends `${infer Var}:${infer VarType}` ? VarType extends keyof ParamParsers ? { readonly [key in Var]: ParserType; } : never : S extends `${infer Var}` ? { readonly [key in Var]: string; } : never; declare type PathParams = A extends `{${infer AA}}${infer Tail}` ? Merge & PathParams> : A extends `${infer _}{${infer AA}}${infer Tail}` ? Merge & PathParams> : A extends `${infer _}{${infer AA}}` ? Merge> : Seed; declare type UrlParam = S extends `${infer Var}:${infer VarType}` ? VarType extends keyof ParamParsers ? UrlParam> : never : S extends `${infer Var}?` ? { readonly [key in Var]?: P; } : S extends `${infer Var}` ? { readonly [key in Var]: P; } : never; declare type QueryParams = A extends `{${infer AA}}${infer Tail}` ? Merge & QueryParams> : Seed; export declare type Request = { pathParams: Url extends `${infer P}?${infer _}` ? PathParams

: PathParams; queryParams: Url extends `${infer _}?${infer Q}` ? QueryParams : never; body: Body; }; export declare type Response = { statusCode: number; headers?: { [header: string]: boolean | number | string; }; body: unknown; }; export declare type Handler = (req: Request) => Promise; export {}; //# sourceMappingURL=types.d.ts.map