import type { WizardOptions } from '../../utils/types';
export declare const getNextJsVersionBucket: (version: string | undefined) => string;
export declare enum NextJsRouter {
    APP_ROUTER = "app-router",
    PAGES_ROUTER = "pages-router"
}
export declare const IGNORE_PATTERNS: string[];
/**
 * Detect Next.js router type. Pure — returns null if ambiguous.
 */
export declare function getNextJsRouter({ installDir, }: Pick<WizardOptions, 'installDir'>): Promise<NextJsRouter | null>;
export declare const getNextJsRouterName: (router: NextJsRouter) => "app router" | "pages router";
/**
 * Concrete surface signals for a Next.js project — used to give the agent
 * deterministic instructions about which SDK(s) to install instead of
 * relying on its own LLM judgment from a partial directory scan.
 *
 * Without these flags the agent regularly mis-classified pages-router apps
 * with even a single API route (e.g. `pages/api/hello.ts`) as "API only"
 * and skipped the browser SDK entirely, even when the project had a normal
 * `pages/index.tsx` next door.
 */
export interface NextJsSurfaces {
    /**
     * Project has user-facing pages — i.e. anything the browser actually
     * renders. App Router: `app/**\/page.{ts,tsx,js,jsx}`. Pages Router:
     * any `.tsx`/`.jsx`/`.ts`/`.js` directly under `pages/` that isn't an
     * API route, `_app`, or `_document`.
     */
    hasBrowserSurface: boolean;
    /**
     * Project has server-side surfaces that should emit events from the
     * server runtime — API routes, route handlers, server actions wrappers,
     * or middleware.
     */
    hasServerSurface: boolean;
    /**
     * Project uses the `src/` layout convention. When true, instrumentation
     * files (instrumentation.ts, instrumentation-client.ts) and any new
     * server helpers (e.g. lib/amplitude-server.ts) MUST live inside `src/`
     * so they're co-located with the rest of the code; otherwise place them
     * at the project root. Mixing the two is what produced the
     * "instrumentation-client.ts at root, server in src/lib" inconsistency.
     */
    usesSrcDir: boolean;
}
export declare function detectNextJsSurfaces({ installDir, }: Pick<WizardOptions, 'installDir'>): Promise<NextJsSurfaces>;
