import { AnyResponseSchema, PossibleResponses } from "./response.js"; import { AfterRoute, BeforeRoute, ContextExtra } from "./middleware.js"; import { ZodSchema } from "zod"; import { Grace } from "../grace.js"; export type Context, Params = Record, Headers = Record, Extras = Record> = { request: Request; body: Body; query: Query; params: Params; headers: Headers; extras: Extras; app: Grace; } & Extras; export type Route>>, After extends Array>>, Headers = Record, ContextExtras = ContextExtra, ContextSchema = Context> = { method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; format?: 'json' | 'multipart' | 'text'; path?: string; schema?: { body?: ZodSchema; query?: ZodSchema; params?: ZodSchema; headers?: ZodSchema; response?: Response; }; before?: Before; after?: After; handler: (context: ContextSchema) => Promise>; }; export type AnyRoute = Route; export type InferContext = R extends Route ? ContextSchema : never; export type InferResponse = R extends Route ? Response : never; export declare function createRoute>>, After extends Array>>>(route: Route): Route; export declare function createRouteWithExtras(): >>[], After extends AfterRoute>>[]>(route: Route>) => Route>; export declare function createRouteTemplate({ before, after, schema, }?: { before?: Array>>; after?: Array>>; schema?: { body?: ZodSchema; query?: ZodSchema; params?: ZodSchema; headers?: ZodSchema | Record; response?: AnyResponseSchema; }; }): >>[], After extends AfterRoute>>[]>(route: Route>) => Route>; //# sourceMappingURL=route.d.ts.map