import type { Route } from '../Router/Route'; import type { ISearchParamsParser } from '../SearchParamsParser'; import type { Location } from './location'; import type { MatchPath } from './matchPath'; import type { Navigate } from './navigate'; import type { NavigateAsync } from './navigateAsync'; import type { RawRouteParams } from './routeParams'; import type { SearchParams, SetSearchParams } from './searchParams'; export type RouteConfig = { /** * @example '/user/:id' */ pattern: string; /** /** * Функция, генерирующая путь на основе переданных параметров. * Если не определен, то pathname формируется из pattern. * Если для пути не используются routeParams, то generatePath не нужен. * @example * generatePath: (params?: { id: string }) => `/user/${params?.id}` */ generatePath?: (params: TRouteParams) => string; }; export type RouteCreatorParams = { navigate: Navigate; navigateAsync: NavigateAsync; location: Location; matchPath: MatchPath; searchParams: SearchParams; setSearchParams: SetSearchParams; routeParams: RawRouteParams; _searchParamsParser: ISearchParamsParser; }; export type RouteCreator = (router: RouteCreatorParams) => Route>; export type RoutesConfig = Record> = TRoutes;