import type { AllContext, RouteById } from './routeInfo' import type { AnyRouter } from './router' import type { Expand, StrictOrFrom } from './utils' export interface UseRouteContextBaseOptions< TRouter extends AnyRouter, TFrom, TStrict extends boolean, TSelected, > { select?: ( search: ResolveUseRouteContext, ) => TSelected } export type UseRouteContextOptions< TRouter extends AnyRouter, TFrom extends string | undefined, TStrict extends boolean, TSelected, > = StrictOrFrom & UseRouteContextBaseOptions export type ResolveUseRouteContext< TRouter extends AnyRouter, TFrom, TStrict extends boolean, > = TStrict extends false ? AllContext : Expand['types']['allContext']> export type UseRouteContextResult< TRouter extends AnyRouter, TFrom, TStrict extends boolean, TSelected, > = unknown extends TSelected ? ResolveUseRouteContext : TSelected