import { Component, type InfernoNode } from 'inferno';
import type { History, Location } from 'history';
import type { RouterContext, TContextRouter, TLoaderData, TLoaderProps } from './Router';
export interface Match
> {
params: P;
isExact: boolean;
path: string;
url: string;
loader?: (props: TLoaderProps
) => Promise;
loaderData?: TLoaderData;
}
export interface RouteComponentProps> {
match: Match
;
location: Location;
history: History;
staticContext?: any;
}
export interface IRouteProps {
computedMatch?: Match | null;
path?: string;
exact?: boolean;
strict?: boolean;
sensitive?: boolean;
loader?: (props: TLoaderProps) => Promise;
component?: typeof Component | ((props: any, context: any) => InfernoNode);
render?: (props: RouteComponentProps, context: any) => InfernoNode;
location?: Pick;
children?: ((props: RouteComponentProps) => InfernoNode) | InfernoNode;
}
/**
* The public API for matching a single path and rendering.
*/
interface RouteState {
match: Match | null;
__loaderData__?: TLoaderData;
}
declare class Route extends Component, RouteState> {
constructor(props: IRouteProps, context: RouterContext);
getChildContext(): RouterContext;
computeMatch({ computedMatch, ...props }: IRouteProps, router: TContextRouter): Match | null;
componentWillReceiveProps(nextProps: any, nextContext: {
router: TContextRouter;
}): void;
render(props: IRouteProps, state: RouteState, context: {
router: TContextRouter;
}): InfernoNode;
}
export { Route };