import { ProjectStructureReport } from "./ProjectStructureValidator";
import { Command } from "commander";
export interface ValidationResult {
    passed: boolean;
    report: ProjectStructureReport;
    autoFixed: boolean;
}
export declare class PreCommandValidator {
    private validator;
    private autoFixEnabled;
    private strictMode;
    constructor(projectRoot?: string, options?: {
        autoFix?: boolean;
        strict?: boolean;
    });
    /**
     * Validate project structure before running any command
     */
    validateBeforeCommand(command: string): Promise<ValidationResult>;
    /**
     * Add validation hooks to a Commander command
     */
    static addValidationHook(command: Command, options?: {
        autoFix?: boolean;
        strict?: boolean;
    }): void;
    /**
     * Validate specific command types with custom rules
     */
    validateForCommandType(commandType: string): Promise<ValidationResult>;
    private validateForGenerate;
    private validateForBuild;
    private validateForTest;
    private validateForDeploy;
    /**
     * Enable/disable auto-fix
     */
    setAutoFix(enabled: boolean): void;
    /**
     * Enable/disable strict mode
     */
    setStrictMode(enabled: boolean): void;
    /**
     * Get current validation settings
     */
    getSettings(): {
        autoFix: boolean;
        strict: boolean;
    };
}
/**
 * Decorator function to add validation to commands
 */
export declare function withValidation(options?: {
    autoFix?: boolean;
    strict?: boolean;
}): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
 * Global validation settings
 */
export declare class GlobalValidationSettings {
    private static instance;
    private autoFixEnabled;
    private strictMode;
    private validationEnabled;
    static getInstance(): GlobalValidationSettings;
    setAutoFix(enabled: boolean): void;
    setStrictMode(enabled: boolean): void;
    setValidationEnabled(enabled: boolean): void;
    getSettings(): {
        autoFix: boolean;
        strict: boolean;
        enabled: boolean;
    };
    createValidator(projectRoot?: string): PreCommandValidator;
}
//# sourceMappingURL=PreCommandValidator.d.ts.map