/**
 * Next.js route readers: AST-based route segment config extraction,
 * rendering strategy classification, and single-file parsing.
 *
 * These readers are pure helpers with no orchestration logic. They are used by
 * `nextjs-route-tools.ts` (orchestrator) and re-exported from it for backward
 * compatibility with existing consumers and tests. Split follows the T2/T3
 * reader + orchestrator precedent.
 */
import type Parser from "web-tree-sitter";
export type RenderingStrategy = "static" | "ssr" | "isr" | "edge" | "client" | "unknown";
export type RouteEntryType = "page" | "route" | "layout" | "loading" | "error" | "not-found" | "global-error" | "default" | "template" | "parallel" | "intercepting" | "app" | "document" | "error_page";
export interface RouteSegmentConfig {
    dynamic?: "auto" | "force-dynamic" | "force-static" | "error";
    dynamic_non_literal?: boolean;
    revalidate?: number | false;
    revalidate_non_literal?: boolean;
    runtime?: "nodejs" | "edge";
    runtime_non_literal?: boolean;
    has_generate_static_params: boolean;
}
export interface NextjsRouteEntry {
    url_path: string;
    file_path: string;
    router: "app" | "pages";
    type: RouteEntryType;
    rendering: RenderingStrategy;
    config: RouteSegmentConfig;
    has_metadata: boolean;
    methods?: string[];
    layout_chain: string[];
    middleware_applies: boolean;
    is_client_component: boolean;
    /** Free-text explanation of *why* a route is SSR. Set only when rendering === "ssr". */
    rendering_reason?: string;
}
export interface NextjsRouteConflict {
    url_path: string;
    app: string;
    pages: string;
}
export interface PagesRouterSignals {
    hasGetServerSideProps?: boolean;
    hasGetStaticProps?: boolean;
    hasRevalidateInReturn?: boolean;
}
/**
 * Read Next.js route segment config exports from an AST.
 *
 * Recognizes:
 *   export const dynamic = "force-dynamic"
 *   export const revalidate = 60 | false
 *   export const runtime = "edge"
 *   export async function generateStaticParams() {...}
 *
 * Non-literal initializers (Identifier, BinaryExpression, etc.) set a
 * `_non_literal` flag and leave the corresponding value `undefined`.
 *
 * @internal exported for unit testing
 */
export declare function readRouteSegmentConfig(tree: Parser.Tree, _source: string): RouteSegmentConfig;
/**
 * Map a route segment config (+ optional Pages Router signals) to a
 * rendering strategy.
 *
 * Priority (App Router): runtime=edge > force-dynamic > force-static >
 * revalidate > generateStaticParams > default (static).
 *
 * Pages Router: getServerSideProps → ssr; getStaticProps + revalidate → isr;
 * getStaticProps → static; otherwise unknown.
 *
 * @internal exported for unit testing
 */
export declare function classifyRendering(config: RouteSegmentConfig, router: "app" | "pages", pagesSignals?: PagesRouterSignals): RenderingStrategy;
/**
 * Process a single route file into a `NextjsRouteEntry`.
 *
 * @internal exported for unit testing
 */
export declare function parseRouteFile(filePath: string, repoRoot: string, router: "app" | "pages"): Promise<NextjsRouteEntry>;
//# sourceMappingURL=nextjs-route-readers.d.ts.map