export interface RepoSpec {
    /** Relative path to the spec file */
    file: string;
    /** Glob pattern that matched this file */
    fromGlob: string;
    /** Number of tests described in the file (approximate, parsed from file text) */
    testCount: number;
    /** File mtime in ms (used for cache invalidation) */
    mtimeMs: number;
    /** File content hash (used for cache invalidation) */
    contentHash: string;
}
export interface PackageManagers {
    npm: boolean;
    yarn: boolean;
    pnpm: boolean;
    bun: boolean;
    /** Detected preferred package manager */
    preferred: "npm" | "yarn" | "pnpm" | "bun";
}
export interface DevScripts {
    /** Script that starts the dev/test server (if found) */
    dev: string | null;
    /** Script for test-only mode (if found) */
    test: string | null;
    /** Script to seed/fill test database */
    seed: string | null;
    /** Script to build the app */
    build: string | null;
}
export interface ReadinessCheck {
    /** Playwright is installed */
    playwrightInstalled: boolean;
    /** Browsers are downloaded */
    browsersInstalled: boolean;
    /** Playwright config file exists */
    configExists: boolean;
    /** Spec files exist and are readable */
    specsFound: boolean;
    /** All checks passed */
    ready: boolean;
    /** Human-readable issues if not ready */
    issues: string[];
}
export interface RepoPrep {
    /** Command to install dependencies */
    installCmd: string | null;
    /** Command to install Playwright browsers */
    installBrowsersCmd: string | null;
    /** Command to start dev server */
    startDevCmd: string | null;
    /** Command to build */
    buildCmd: string | null;
    /** Command to seed database */
    seedCmd: string | null;
}
export interface RepoDiscoverySnapshot {
    /** Absolute path to the repo root */
    repoPath: string;
    /** Playwright config file path (relative to repo) */
    configPath: string | null;
    /** Playwright config content parsed (or null if unparseable) */
    configRaw: string | null;
    /** Spec files discovered */
    specs: RepoSpec[];
    /** Total approximate test count across all specs */
    totalTests: number;
    /** Package manager detection */
    packageManager: PackageManagers;
    /** Dev-related scripts from package.json */
    devScripts: DevScripts;
    /** Readiness assessment */
    readiness: ReadinessCheck;
    /** Prep commands that could be run with --apply */
    prep: RepoPrep;
    /** Suggested base URL for the dev server */
    suggestedUrl: string | null;
    /** Suggested working directory for running tests */
    workingDir: string;
    /** When the snapshot was taken (ISO timestamp) */
    snapshotAt: string;
    /** Cache key for this snapshot (path hash + spec file hashes) */
    cacheKey: string;
}
export interface DiscoveryOptions {
    /** Absolute path to the repo root */
    repoPath: string;
    /** Force a fresh scan, ignoring cache */
    refresh?: boolean;
    /** Override the working directory for running tests */
    workingDir?: string;
    /** Override base URL */
    baseUrl?: string;
}
export declare function discoverRepo(opts: DiscoveryOptions): RepoDiscoverySnapshot;
export declare function clearDiscoveryCache(repoPath?: string): void;
export declare function getDiscoveryCacheInfo(repoPath: string): {
    cached: boolean;
    stale: boolean;
    path: string;
} | null;
//# sourceMappingURL=repo-discovery.d.ts.map