import { SetupOptions } from '../types';
export declare abstract class BaseAction {
    abstract name: string;
    abstract description: string;
    abstract canExecute(projectPath: string): Promise<boolean>;
    abstract execute(projectPath: string, options: SetupOptions): Promise<boolean>;
    abstract rollback(projectPath: string): Promise<boolean>;
    protected runCommand(command: string, args: string[], cwd: string, options?: {
        timeout?: number;
        env?: Record<string, string>;
    }): Promise<{
        success: boolean;
        output: string;
        error?: string;
    }>;
    protected runCommandLegacy(command: string, cwd: string): Promise<{
        success: boolean;
        output: string;
    }>;
    private isValidCommand;
    private sanitizeArgument;
    private sanitizePath;
    private parseCommand;
    protected fileExists(filePath: string): Promise<boolean>;
    protected readJsonFile<T = unknown>(filePath: string): Promise<T | null>;
    protected writeJsonFile(filePath: string, data: unknown): Promise<void>;
    protected createBackup(filePath: string): Promise<string>;
    private cleanupOldBackups;
}
//# sourceMappingURL=BaseAction.d.ts.map