import type { QueryClient } from '@tanstack/react-query' import type { IndexRouteObject, Location, NonIndexRouteObject, Params } from 'react-router-dom' import type { LocaleCode } from '@/lib/locales' export type PagePreparation = { client: QueryClient params: Readonly locale: LocaleCode searchParams: URLSearchParams } export type LocaleSwitchRequest = { location: Pick params: Readonly locale: LocaleCode targetLocale: LocaleCode } export type SitemapSource = 'static' | 'help' | 'posts' | 'tags' | 'deerjikists' | 'materials' | 'descriptions' | 'tag_groups' | 'theatres' export type PageRouteHandle = { preload?: (locale: LocaleCode) => Promise prepare?: (request: PagePreparation) => Promise switchLocale?: (request: LocaleSwitchRequest) => Promise locale?: LocaleCode robots?: 'noindex' authentication?: 'user' sitemap?: SitemapSource[] redirectTo?: string notFound?: boolean } export type PageRoute = { handle?: PageRouteHandle } & ( Omit | (Omit & { children?: PageRoute[] }))