/**
 * CSharpStrategy - Warm-up strategy for C# projects
 *
 * Handles .sln and .csproj detection with upward directory search.
 * Supports multiple solution file selection with caching.
 *
 * @see spec.md US-001: Language-Aware Warm-up
 * @satisfies AC-US1-01, AC-US1-03
 */
import type { WarmupStrategy } from '../strategy.js';
/**
 * Filesystem abstraction for testing
 */
export interface FileSystemProvider {
    glob(pattern: string, cwd: string): Promise<string[]>;
    exists(path: string): Promise<boolean>;
    findUp(pattern: string, startDir: string): Promise<string | null>;
}
/**
 * Prompt provider for interactive selection
 */
export type PromptProvider = (options: string[], message: string) => Promise<string>;
/**
 * Cache provider for persisting choices
 */
export interface CacheProvider {
    get<T>(key: string): Promise<T | null>;
    set<T>(key: string, value: T): Promise<void>;
}
/**
 * C# warm-up strategy with solution/project file detection
 */
export declare class CSharpStrategy implements WarmupStrategy {
    readonly language = "csharp";
    private readonly fs;
    private readonly prompt?;
    private readonly cache?;
    /** Detected solution file name */
    solutionFile?: string;
    /** Detected project file name (fallback when no .sln) */
    projectFile?: string;
    private projectRoot?;
    constructor(fs: FileSystemProvider, prompt?: PromptProvider, cache?: CacheProvider);
    /**
     * Detect the C# project root by searching for .sln or .csproj files
     *
     * @param startDir - Directory to start searching from
     * @returns Project root directory, or null if no C# project found
     */
    detectProjectRoot(startDir: string): Promise<string | null>;
    /**
     * Get files to open for warm-up
     *
     * @param projectRoot - Root directory of the project
     * @returns Promise resolving to array of .cs file paths
     */
    getFilesToOpen(projectRoot: string): Promise<string[]>;
    private getCacheKey;
    private getCachedChoice;
    private setCachedChoice;
}
//# sourceMappingURL=csharp.d.ts.map