import type { UserRegistry, InferRoutes } from '@tuyau/core/types'; import type { AreAllOptional } from '@poppinss/utils/types'; export type Routes = InferRoutes; /** * Get parameter tuple type for a route */ export type ExtractParamsTuple = Routes[Route]['types']['paramsTuple']; /** * Get parameter object type for a route */ export type ExtractParamsObject = Routes[Route]['types']['params']; /** * Get params format for a route */ export type RouteParamsFormats = ExtractParamsObject extends Record ? never : ExtractParamsTuple | ExtractParamsObject; /** * Parameters required for route navigation with proper type safety. */ export type RouteParams = { route: Route; } & (RouteParamsFormats extends never ? { routeParams?: never; } : AreAllOptional> extends true ? { routeParams?: RouteParamsFormats; } : { routeParams: RouteParamsFormats; });