import type { CodeIndex, CodeSymbol } from "../types.js";
import type { HonoAppModel } from "../parser/extractors/hono-model.js";
export type Framework = "react" | "nestjs" | "nextjs" | "express" | "astro" | "hono" | "test" | "kotlin-android";
/**
 * Kotlin/Android annotations that mark a symbol as referenced by the runtime
 * rather than by static imports. `find_dead_code` must treat these as live
 * because Hilt (reflection), Compose (tooling), Room (KSP), kotlinx.serialization
 * (JSON), and JUnit/Kotest (runner) all instantiate or invoke symbols outside
 * the normal call graph.
 */
export declare const KOTLIN_FRAMEWORK_ANNOTATIONS: ReadonlySet<string>;
/** Exported for testing — matches next.config.{js,mjs,cjs,ts} at root or src/ */
export declare const NEXT_CONFIG_FILE: RegExp;
/** Exported for testing — App Router convention files */
export declare const NEXT_APP_CONVENTION_FILE: RegExp;
export declare function detectFrameworks(index: CodeIndex): Set<Framework>;
export declare function isFrameworkEntryPoint(symbol: Pick<CodeSymbol, "name" | "file"> & {
    source?: string;
    decorators?: string[] | undefined;
}, frameworks: Set<Framework>, honoModel?: HonoAppModel | null): boolean;
//# sourceMappingURL=framework-detect.d.ts.map