import type { CapabilityManifest } from '../contracts/capability'; import type { PageDefinition, PageGuardProjection, PageNavigationProjection, PageRendererProjection, PageRouteProjection, PageRuntimeProjection } from '../contracts/page'; import type { ProductContext, ViewProviderDescriptor } from '../contracts/render'; export interface PageAccessContext { authenticated: boolean; permissionCodes: readonly string[]; featureFlags: Readonly>; } export interface PageAccessDecision { allowed: boolean; reasons: readonly ('authentication' | 'permission-all' | 'permission-any' | 'feature-flag')[]; } export interface CompilePageRuntimeProjectionInput { product: ProductContext; pages: readonly PageDefinition[]; capabilities: readonly CapabilityManifest[]; providers: readonly ViewProviderDescriptor[]; } export interface CompiledPageRuntimeProjection { document: PageRuntimeProjection; pagesById: ReadonlyMap; providersById: ReadonlyMap; routesById: ReadonlyMap; navigationByPageId: ReadonlyMap; guardsByPageId: ReadonlyMap; renderersByPageId: ReadonlyMap; evaluateAccess(pageId: string, context: PageAccessContext): PageAccessDecision; visibleNavigation(context: PageAccessContext): readonly PageNavigationProjection[]; matchRoute(pathname: string): PageDefinition | undefined; requireRoute(routeId: string): PageRouteProjection; requireGuard(pageId: string): PageGuardProjection; requireRenderer(pageId: string): PageRendererProjection; } /** Compiles route, navigation, guard and renderer tables from one canonical PageDefinition set. */ export declare const compilePageRuntimeProjection: (input: CompilePageRuntimeProjectionInput) => CompiledPageRuntimeProjection; //# sourceMappingURL=page-compiler.d.ts.map