import * as React from "react"; import type { TrackedPromise, InitialEntry, Location, Router as RemixRouter, To } from "@remix-run/router"; import { Action as NavigationType } from "@remix-run/router"; import type { RouteMatch, RouteObject, Navigator, RelativeRoutingType } from "./context"; export interface RouterProviderProps { fallbackElement?: React.ReactNode; router: RemixRouter; } /** * Given a Remix Router instance, render the appropriate UI */ export declare function RouterProvider({ fallbackElement, router, }: RouterProviderProps): React.ReactElement; export interface MemoryRouterProps { basename?: string; children?: React.ReactNode; initialEntries?: InitialEntry[]; initialIndex?: number; } /** * A that stores all entries in memory. * * @see https://reactrouter.com/docs/en/v6/routers/memory-router */ export declare function MemoryRouter({ basename, children, initialEntries, initialIndex, }: MemoryRouterProps): React.ReactElement; export interface NavigateProps { to: To; replace?: boolean; state?: any; relative?: RelativeRoutingType; } /** * Changes the current location. * * Note: This API is mostly useful in React.Component subclasses that are not * able to use hooks. In functional components, we recommend you use the * `useNavigate` hook instead. * * @see https://reactrouter.com/docs/en/v6/components/navigate */ export declare function Navigate({ to, replace, state, relative, }: NavigateProps): null; export interface OutletProps { context?: unknown; } /** * Renders the child route's element, if there is one. * * @see https://reactrouter.com/docs/en/v6/components/outlet */ export declare function Outlet(props: OutletProps): React.ReactElement | null; interface DataRouteProps { id?: RouteObject["id"]; loader?: RouteObject["loader"]; action?: RouteObject["action"]; errorElement?: RouteObject["errorElement"]; shouldRevalidate?: RouteObject["shouldRevalidate"]; handle?: RouteObject["handle"]; } export interface RouteProps extends DataRouteProps { caseSensitive?: boolean; children?: React.ReactNode; element?: React.ReactNode | null; index?: boolean; path?: string; } export interface PathRouteProps extends DataRouteProps { caseSensitive?: boolean; children?: React.ReactNode; element?: React.ReactNode | null; index?: false; path: string; } export interface LayoutRouteProps extends DataRouteProps { children?: React.ReactNode; element?: React.ReactNode | null; } export interface IndexRouteProps extends DataRouteProps { element?: React.ReactNode | null; index: true; } /** * Declares an element that should be rendered at a certain URL path. * * @see https://reactrouter.com/docs/en/v6/components/route */ export declare function Route(_props: PathRouteProps | LayoutRouteProps | IndexRouteProps): React.ReactElement | null; export interface RouterProps { basename?: string; children?: React.ReactNode; location: Partial | string; navigationType?: NavigationType; navigator: Navigator; static?: boolean; } /** * Provides location context for the rest of the app. * * Note: You usually won't render a directly. Instead, you'll render a * router that is more specific to your environment such as a * in web browsers or a for server rendering. * * @see https://reactrouter.com/docs/en/v6/routers/router */ export declare function Router({ basename: basenameProp, children, location: locationProp, navigationType, navigator, static: staticProp, }: RouterProps): React.ReactElement | null; export interface RoutesProps { children?: React.ReactNode; location?: Partial | string; } /** * A container for a nested tree of elements that renders the branch * that best matches the current location. * * @see https://reactrouter.com/docs/en/v6/components/routes */ export declare function Routes({ children, location, }: RoutesProps): React.ReactElement | null; export interface AwaitResolveRenderFunction { (data: Awaited): React.ReactElement; } export interface AwaitProps { children: React.ReactNode | AwaitResolveRenderFunction; errorElement?: React.ReactNode; resolve: TrackedPromise | any; } /** * Component to use for rendering lazily loaded data from returning defer() * in a loader function */ export declare function Await({ children, errorElement, resolve }: AwaitProps): JSX.Element; /** * Creates a route config from a React "children" object, which is usually * either a `` element or an array of them. Used internally by * `` to create a route config from its children. * * @see https://reactrouter.com/docs/en/v6/utils/create-routes-from-children */ export declare function createRoutesFromChildren(children: React.ReactNode, parentPath?: number[]): RouteObject[]; /** * Renders the result of `matchRoutes()` into a React element. */ export declare function renderMatches(matches: RouteMatch[] | null): React.ReactElement | null; /** * @private * Walk the route tree and add hasErrorBoundary if it's not provided, so that * users providing manual route arrays can just specify errorElement */ export declare function enhanceManualRouteObjects(routes: RouteObject[]): RouteObject[]; export {};