import type { RouteDefinition } from './define-route.js'; import type { BindingDefinition } from './define-binding.js'; import type { MetaData, RenderMode, HandlerType, RouteGroupOptions, ResourceHandlers, ResourceOptions, MiddlewareInput } from './types.js'; export interface WebRouteOptions { render: RenderMode; revalidate?: number | false; loaders?: HandlerType[]; middleware?: MiddlewareInput[]; generateParams?: () => Promise>>; meta?: (ctx: { params: Record; loaderData: Record; }) => MetaData | Promise; name?: string; bind?: Record; deprecated?: boolean; sunset?: string; } export interface ApiRouteOptions { middleware?: MiddlewareInput[]; name?: string; bind?: Record; deprecated?: boolean; sunset?: string; } export declare function getRegisteredRoutes(): readonly RouteDefinition[]; export declare function clearRegisteredRoutes(): void; export declare const Route: { readonly get: (path: string, handler: HandlerType, options?: WebRouteOptions | ApiRouteOptions) => RouteDefinition; readonly post: (path: string, handler: HandlerType, options?: ApiRouteOptions) => RouteDefinition; readonly put: (path: string, handler: HandlerType, options?: ApiRouteOptions) => RouteDefinition; readonly patch: (path: string, handler: HandlerType, options?: ApiRouteOptions) => RouteDefinition; readonly delete: (path: string, handler: HandlerType, options?: ApiRouteOptions) => RouteDefinition; /** * Groups routes under a shared prefix, middleware, and/or version. * * @example * Route.group({ prefix: '/api/v1', version: 1, middleware: ['auth'] }, () => { * Route.get('/users', listUsersHandler, { name: 'v1.users.index' }) * Route.post('/users', createUserHandler, { name: 'v1.users.store' }) * }) * * @example Nested groups * Route.group({ prefix: '/api', middleware: ['throttle'] }, () => { * Route.group({ prefix: '/v1', version: 1 }, () => { * Route.get('/posts', listPostsHandler, { name: 'v1.posts.index' }) * }) * Route.group({ prefix: '/v2', version: 2 }, () => { * Route.get('/posts', listPostsV2Handler, { name: 'v2.posts.index' }) * }) * }) */ readonly group: (options: RouteGroupOptions, callback: () => void) => void; /** * Registers the full set of CRUD resource routes (including web form routes). * * Generated routes for `Route.resource('/photos', handlers)`: * | Method | Path | Action | Name | * |--------|-------------------|---------|-----------------| * | GET | /photos | index | photos.index | * | GET | /photos/create | create | photos.create | * | POST | /photos | store | photos.store | * | GET | /photos/:id | show | photos.show | * | GET | /photos/:id/edit | edit | photos.edit | * | PUT | /photos/:id | update | photos.update | * | DELETE | /photos/:id | destroy | photos.destroy | * * @example * Route.resource('/photos', PhotoHandlers) * Route.resource('/photos', PhotoHandlers, { only: ['index', 'show'] }) * Route.resource('/photos', PhotoHandlers, { except: ['destroy'] }) */ readonly resource: (path: string, handlers: ResourceHandlers, options?: ResourceOptions) => void; /** * Registers API-only CRUD resource routes (no web form routes: no create/edit). * * Generated routes for `Route.apiResource('/photos', handlers)`: * | Method | Path | Action | Name | * |--------|-------------|---------|----------------| * | GET | /photos | index | photos.index | * | POST | /photos | store | photos.store | * | GET | /photos/:id | show | photos.show | * | PUT | /photos/:id | update | photos.update | * | DELETE | /photos/:id | destroy | photos.destroy | * * @example * Route.apiResource('/photos', PhotoApiHandlers) * Route.apiResource('/photos', PhotoApiHandlers, { only: ['index', 'store'] }) */ readonly apiResource: (path: string, handlers: ResourceHandlers, options?: ResourceOptions) => void; }; export declare function route(name: string, params?: Record, query?: Record): string; //# sourceMappingURL=route.d.ts.map