export interface ProjectConfig {
    name: string;
    detection: {
        files: string[];
        extensions: string[];
    };
    setup: {
        steps: SetupStep[];
        environment: Record<string, string>;
    };
    validation: {
        checks: ValidationCheck[];
    };
    defaultConfig: {
        interpreter: string;
        execMode: 'fork' | 'cluster';
        supportsCluster: boolean;
        interpreterPath?: string;
        startScript?: string;
        startCommand?: string;
    };
}
export interface SetupStep {
    name: string;
    command: string;
    description: string;
    required: boolean;
    conditional?: string;
    platform?: 'win32' | 'unix';
    workingDirectory?: string;
    useVenv?: boolean;
    timeout?: number;
}
export interface ValidationCheck {
    name: string;
    file?: string;
    directory?: string;
    pattern?: string;
    optional?: boolean;
}
export interface SetupResult {
    success: boolean;
    steps: StepResult[];
    errors: string[];
    warnings: string[];
    environment: Record<string, string>;
    interpreterPath?: string;
}
export interface StepResult {
    name: string;
    success: boolean;
    output: string;
    error?: string;
    skipped?: boolean;
    duration: number;
}
export declare class ProjectSetupService {
    private configs;
    private logFile;
    constructor();
    private loadConfigs;
    private ensureLogDirectory;
    private log;
    detectProjectType(projectPath: string): string | null;
    setupProject(projectPath: string, projectType: string, onLog?: (msg: string) => void): Promise<SetupResult>;
    private shouldSkipStep;
    private executeStep;
    private validateSetup;
    getProjectConfig(projectType: string): ProjectConfig | null;
    getSupportedProjectTypes(): string[];
}
export declare const projectSetupService: ProjectSetupService;
