import type { FirstChar, Narrow } from '@bespunky/typescript-utils'; import { autoNavigatorNameSeparator } from '../navigation-x.route-creator'; import type { RouteOperationMethod } from './auto-navigator-methods.types'; import type { RouteArgumentName, RouteSegments } from './route-paths.types'; declare type CapitalizeRouteSegment = Segment['length'] extends 0 | 1 ? never : Segment extends `:${infer ArgName}` ? Capitalize : Capitalize; declare type JoinStrings = `${S1}${S2}`; declare type Separator = typeof autoNavigatorNameSeparator; declare type SegmentedRouteComposerName = { 0: ''; 1: CapitalizeRouteSegment; multi: Segments extends [infer First, ...infer Rest] ? First extends string ? Rest extends string[] ? JoinStrings, JoinStrings>> : never : never : never; }[Segments['length'] extends 0 | 1 ? Segments['length'] : 'multi']; export declare type GeneratedRouteComposerName = SegmentedRouteComposerName>; export declare type RouteComposerName = FirstChar extends string ? FriendlyName : GeneratedRouteComposerName; export declare type RouteComposerComposeMethod = RouteOperationMethod; export declare type EntityRouteArgs = RouteArgumentName extends keyof Entity ? Narrow>> : `Route argument '${Exclude, keyof Entity>}' doesn't match any property on the route's corresponding entity.`; export {};