import type { VeryfrontConfig } from "../../config/index.js"; export type BrowserModuleProtectionReason = "invalid-path" | "invalid-configured-root" | "metadata" | "hidden-path" | "middleware" | "discovery" | "server-route"; export interface BrowserModuleSourcePolicy { canonicalPath: string | null; protectionReason: BrowserModuleProtectionReason | null; requiresClientBoundary: boolean; } export interface BrowserModuleSourcePolicyOptions { config?: VeryfrontConfig; rscEnabled?: boolean; /** * A real on-disk project served by `veryfront dev`. Client boundaries are a * hosted-transport concern: the browser hydrates a local project by importing * the whole page module (as the non-RSC path does), so local dev must not * require an RSC `use client` directive to serve an app-router page (#3662). */ isLocalProject?: boolean; } /** * Classify an adapter-resolved absolute source path with the same canonical * browser policy used for logical module requests. Containment is established * before the relative path reaches the policy grammar, so aliases and resolved * dependencies cannot bypass protected project roots. */ export declare function classifyBrowserModuleAbsoluteSourcePath(sourcePath: string, projectDir: string, options?: BrowserModuleSourcePolicyOptions): BrowserModuleSourcePolicy; /** * Classify one project-relative source path for the public browser module * transport. The same policy is applied before remote fetches and again after * local resolution so aliases cannot bypass a server-source boundary. */ export declare function classifyBrowserModuleSourcePath(logicalPath: string, options?: BrowserModuleSourcePolicyOptions): BrowserModuleSourcePolicy; /** Framework-owned project surfaces that are never browser module entrypoints. */ export declare function isProtectedBrowserModulePath(logicalPath: string, config?: VeryfrontConfig): boolean; //# sourceMappingURL=browser-module-admission.d.ts.map