import type { ComputeFramework } from "./types.ts";
export interface DetectComputeRepositoryInput {
    repositoryName: string;
    filePaths: Iterable<string>;
    readFile: (path: string) => Promise<string | null>;
}
/** Package manager detected for the repository root. */
export interface DetectedPackageManager {
    /** Package manager name. */
    name: "npm" | "pnpm" | "yarn" | "bun";
    /**
     * Lockfile found at the repository root.
     * null when the package manager was resolved from the packageManager field
     * alone and no lockfile was present.
     */
    lockfile: string | null;
}
export interface DetectedComputeRepositoryApp {
    id: string;
    target: string;
    name: string;
    root: string;
    framework: ComputeFramework;
    frameworkName: string;
    httpPort: number;
    entry: string;
    build: {
        command: string | null;
        outputDirectory: string;
        entrypoint: string;
    };
    inferredFrom: string[];
    reviewRequired: boolean;
    /**
     * Prisma Next usage for this app. "Prisma" here means Prisma Next (Prisma 8+),
     * the engine-less, @prisma-next/-scoped client. Earlier Prisma clients
     * (@prisma/client, prisma-client-js) are not part of this system's vocabulary
     * and are not detected.
     */
    prismaNext: {
        /** True when a Prisma Next config file or a @prisma-next/* package was found. */
        detected: boolean;
        /** Signal that triggered detection, or empty when detected is false. */
        inferredFrom: string[];
    };
}
export interface DetectComputeRepositoryResult {
    apps: DetectedComputeRepositoryApp[];
    warnings: string[];
    /**
     * Package manager detected from the repository root's packageManager field
     * and lockfile. null when neither signal is present.
     */
    packageManager: DetectedPackageManager | null;
}
/**
 * Detects every deployable app in a remote repository snapshot, including
 * workspace discovery, root-app ownership, and inferred build settings.
 */
export declare function detectComputeRepository(input: DetectComputeRepositoryInput): Promise<DetectComputeRepositoryResult>;
//# sourceMappingURL=detect-repository.d.ts.map