/** Existing goat-flow surfaces shown as setup-view checkboxes. */
type ExistingArtifactPresence = Record<"skills" | "lessons" | "footguns" | "config", boolean>;
/**
 * Per-surface presence flags driving the setup view's prefill checkboxes. Extends the skill/lessons/
 * footguns/config presence flags with the two Copilot instruction surfaces (repo-wide
 * `copilot-instructions.md` versus path-scoped `.github/instructions/`). Each flag is advisory: true
 * means the surface was detected, false means absent or unreadable, never an error.
 */
interface ExistingArtifacts extends ExistingArtifactPresence {
    instructionsRepoWide: boolean;
    instructionsPathScoped: boolean;
}
/** Command slots inferred for the generated setup prompt. */
interface SetupCommands {
    test: string;
    lint: string;
    build: string;
    format: string;
}
/**
 * Build the full `/api/setup/detect` payload for one project path.
 *
 * @param projectPath - Target project root selected in the dashboard.
 * @returns Setup-view payload with fast stack hints, agents, and existing surfaces.
 */
export declare function buildSetupDetectPayload(projectPath: string): {
    languages: string[];
    frameworks: string[];
    commands: SetupCommands;
    agents: Record<string, boolean>;
    existing: ExistingArtifacts;
    nonGoatFlow: string[];
};
/**
 * Heuristically treat a directory as a project when it has common repo markers.
 *
 * Swallows marker stat failures as non-matches because browse results
 * should survive unreadable children.
 *
 * @param dirPath - Candidate directory path from the browser route.
 * @returns True when any supported project or agent marker exists.
 */
export declare function isProjectDirectory(dirPath: string): boolean;
export {};
//# sourceMappingURL=setup-detect.d.ts.map