/** Next.js build route table symbols (app router). */ export type NextBuildRouteSymbol = 'static' | 'ssg' | 'dynamic'; export interface ParsedBuildRoute { symbol: NextBuildRouteSymbol; route: string; } /** Per-app policy committed beside smoke.cases.json. */ export interface BuildRoutePolicy { /** Routes that may be ƒ (dynamic) — e.g. CMS index pages, preview, download handlers. */ allowedDynamic: string[]; /** Segment routes that must be ○ or ●, never ƒ. */ mustBeSsgOrStatic: string[]; } export interface BuildRoutePolicyViolation { kind: 'must_be_ssg_or_static' | 'unexpected_dynamic' | 'parse_failure'; route: string; symbol: NextBuildRouteSymbol; message: string; } export interface BuildRoutePolicyResult { routes: ParsedBuildRoute[]; violations: BuildRoutePolicyViolation[]; } /** Parse the Route (app) table from `next build` stdout. */ export declare function parseNextBuildRouteTable(buildOutput: string): ParsedBuildRoute[]; /** Validate parsed build routes against a committed policy file. */ export declare function validateBuildRoutePolicy(routes: ParsedBuildRoute[], policy: BuildRoutePolicy): BuildRoutePolicyResult; export declare function formatBuildRoutePolicyReport(result: BuildRoutePolicyResult): string; export declare function getBuildRoutePolicyExitCode(result: BuildRoutePolicyResult): number; export interface LoadBuildRoutePolicyOptions { cwd?: string; } /** Load committed route-build-policy.json from an app directory. Returns null if missing. */ export declare function loadBuildRoutePolicy(filename?: string, options?: LoadBuildRoutePolicyOptions): BuildRoutePolicy | null; /** Parse and validate `next build` stdout against a policy file in cwd. */ export declare function validateBuildRoutesFromBuildOutput(buildOutput: string, options?: LoadBuildRoutePolicyOptions & { policyFile?: string; }): BuildRoutePolicyResult | null; //# sourceMappingURL=build-route-policy.d.ts.map