/**
 * Skill Validator - Self-validating skills infrastructure
 *
 * Each skill can define validation strategies in VALIDATION.md or validation.yaml
 * Validation runs automatically after skill work completes.
 *
 * @since v1.0.130
 */
/**
 * Validation step definition
 */
export interface ValidationStep {
    command: string;
    name: string;
    timeout: number;
    optional?: boolean;
    platform?: 'ios' | 'android' | 'web' | 'all';
    workdir?: string;
}
/**
 * Preview/dev server configuration
 */
export interface PreviewConfig {
    command: string;
    port: number;
    wait_for?: string;
    browser_url?: string;
    timeout?: number;
}
/**
 * API endpoint test definition
 */
export interface EndpointTest {
    method: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
    path: string;
    body_file?: string;
    body?: Record<string, unknown>;
    expected_status: number;
    expected_shape?: Record<string, string>;
    headers?: Record<string, string>;
}
/**
 * API testing configuration
 */
export interface ApiTestConfig {
    base_url: string;
    health_check: string;
    auth_strategy: 'jwt' | 'api_key' | 'basic' | 'oauth2' | 'none';
    auth_env_var?: string;
    auth_header?: string;
    endpoints_to_test: EndpointTest[];
}
/**
 * Full validation configuration for a skill
 */
export interface ValidationConfig {
    domain: string;
    framework?: string;
    validation_type: 'automated' | 'manual' | 'hybrid';
    requires_auth: boolean;
    timeout_seconds: number;
    validations: {
        quick: ValidationStep[];
        standard: ValidationStep[];
        full: ValidationStep[];
    };
    preview?: PreviewConfig;
    api_testing?: ApiTestConfig;
    success_criteria?: {
        min_coverage?: number;
        max_warnings?: number;
        required_tests?: string[];
    };
}
/**
 * Result of a single validation step
 */
export interface StepResult {
    name: string;
    command: string;
    passed: boolean;
    duration_ms: number;
    output?: string;
    error?: string;
    skipped?: boolean;
    skip_reason?: string;
}
/**
 * Result of full validation run
 */
export interface ValidationResult {
    passed: boolean;
    level: 'quick' | 'standard' | 'full';
    steps: StepResult[];
    duration_ms: number;
    coverage?: number;
    warnings: string[];
    summary: string;
}
/**
 * Skill Validator
 *
 * Runs validation strategies defined in skill VALIDATION.md files
 */
export declare class SkillValidator {
    private projectRoot;
    private verbose;
    constructor(projectRoot: string, options?: {
        verbose?: boolean;
    });
    /**
     * Load validation config from skill or use defaults
     */
    loadConfig(skillFqn: string): Promise<ValidationConfig | null>;
    /**
     * Parse VALIDATION.md or validation.yaml file
     */
    private parseConfigFile;
    /**
     * Detect domain from skill FQN
     */
    private detectDomain;
    /**
     * Run validation at specified level
     */
    validate(skillFqn: string, level?: 'quick' | 'standard' | 'full'): Promise<ValidationResult>;
    /**
     * Run a single validation step
     */
    private runStep;
    /**
     * Check if a command exists on the system
     */
    private commandExists;
    /**
     * Generate human-readable summary
     */
    private generateSummary;
    /**
     * Run quick validation (fastest, minimal checks)
     */
    runQuickValidation(domain?: string): Promise<ValidationResult>;
    /**
     * Run standard validation (unit tests, integration tests)
     */
    runStandardValidation(domain?: string): Promise<ValidationResult>;
    /**
     * Run full validation (E2E, visual regression, API tests)
     */
    runFullValidation(domain?: string): Promise<ValidationResult>;
    /**
     * Detect project domain from package.json and file structure
     */
    detectProjectDomain(): Promise<string | null>;
    /**
     * Format validation result for display
     */
    formatResult(result: ValidationResult): string;
}
/**
 * Run validation from CLI or hook
 */
export declare function validateSkill(skillFqn: string, level?: 'quick' | 'standard' | 'full', options?: {
    projectRoot?: string;
    verbose?: boolean;
}): Promise<ValidationResult>;
/**
 * Auto-detect domain and run validation
 */
export declare function validateProject(level?: 'quick' | 'standard' | 'full', options?: {
    projectRoot?: string;
    verbose?: boolean;
}): Promise<ValidationResult>;
//# sourceMappingURL=skill-validator.d.ts.map