import React from 'react'; import { EntityDict } from 'oak-domain/lib/types'; import { EntityDict as BaseEntityDict } from 'oak-domain/lib/base-app-domain'; import { Feature } from '../../types/Feature'; import { RouteAccess, RouteAccessFeatures, RouteAccessResult } from '../../features/routeAccess'; import { IRouter } from './router/types'; export type RouteAccessBoundaryResult = Exclude; export type RouteAccessBoundaryFallbackResult = Exclude; export type UnconfiguredRouteAccessPolicy = 'allow' | 'deny' | 'login'; export type ResolveUnconfiguredRouteAccessResult = RouteAccessBoundaryResult | boolean | null | undefined; export type RouteAccessBoundaryContext> = { url: string; pathname: string; route?: IRouter; access?: RouteAccess; accessResult?: RouteAccessResult; features: FD & RouteAccessFeatures; }; export type RouteAccessBoundaryRenderContext> = RouteAccessBoundaryContext & { result: RouteAccessBoundaryResult; }; export type RouteAccessBoundaryFallbackRenderContext> = RouteAccessBoundaryContext & { result: RouteAccessBoundaryFallbackResult; }; type RouteAccessBoundaryRenderNode = React.ReactNode | ((context: Context) => React.ReactNode); export type RouteAccessBoundaryProps> = { namespace: string; routers?: IRouter[]; children: React.ReactNode; requireLogin?: boolean; unconfiguredAccess?: UnconfiguredRouteAccessPolicy; resolveUnconfiguredAccess?: (context: RouteAccessBoundaryContext) => ResolveUnconfiguredRouteAccessResult; renderFallback?: RouteAccessBoundaryRenderNode>; renderLogin?: RouteAccessBoundaryRenderNode>; renderDenied?: RouteAccessBoundaryRenderNode>; renderContextMismatch?: RouteAccessBoundaryRenderNode>; renderPending?: RouteAccessBoundaryRenderNode>; renderError?: RouteAccessBoundaryRenderNode>; }; export declare function RouteAccessProvider(props: { routers: IRouter[]; children: React.ReactNode; }): React.JSX.Element; export declare function useRouteAccessRouters(): IRouter[]; export default function RouteAccessBoundary>(props: RouteAccessBoundaryProps): React.JSX.Element; export {};