import type { ScaffoldManifest } from './types.js';
/**
 * Severity of a validation issue.
 */
export type ValidationIssueSeverity = 'error' | 'warning';
/**
 * A validation issue found during scaffold validation.
 */
export interface ValidationIssue {
    /** Severity of the issue */
    severity: ValidationIssueSeverity;
    /** Human-readable message describing the issue */
    message: string;
    /** File path where the issue was found, if applicable */
    file?: string;
}
/**
 * Result of validating a scaffold directory.
 */
export interface ValidationResult {
    /** Whether the scaffold is valid (no errors) */
    valid: boolean;
    /** Number of errors found */
    errors: number;
    /** Number of warnings found */
    warnings: number;
    /** All issues found during validation */
    issues: ValidationIssue[];
}
/**
 * Validate EJS syntax in template content.
 *
 * Checks for:
 * - Mismatched opening/closing EJS tags
 * - Invalid EJS tag patterns
 * - Empty output tags
 *
 * @param content - Template content to validate
 * @param filename - Optional filename for error reporting
 * @returns Array of validation issues found
 */
export declare function validateEjsSyntax(content: string, filename?: string): ValidationIssue[];
/**
 * Check that all referenced template files exist.
 *
 * @param filesDir - Path to the files/ directory
 * @param manifest - Scaffold manifest
 * @returns Array of validation issues for missing files
 */
export declare function checkTemplateFiles(filesDir: string, manifest: ScaffoldManifest): Promise<ValidationIssue[]>;
/**
 * Check for orphaned template files not referenced in manifest.
 *
 * @param allTemplates - All template file paths in files/ directory
 * @param manifest - Scaffold manifest
 * @returns Array of validation issues for orphaned files
 */
export declare function checkOrphanedFiles(allTemplates: string[], manifest: ScaffoldManifest): ValidationIssue[];
/**
 * Options for scaffold directory validation.
 */
export interface ValidateScaffoldOptions {
    /** Treat warnings as errors */
    strict?: boolean;
}
/**
 * Validate a complete scaffold directory.
 *
 * Performs comprehensive validation including:
 * - Checking scaffold.json exists and is valid JSON
 * - Validating manifest structure against schema
 * - Verifying files/ directory exists
 * - Checking all referenced template files exist
 * - Finding orphaned template files
 * - Validating EJS syntax in templates
 *
 * @param scaffoldPath - Path to the scaffold directory
 * @param options - Validation options
 * @returns Validation result with issues found
 */
export declare function validateScaffoldDirectory(scaffoldPath: string, options?: ValidateScaffoldOptions): Promise<ValidationResult>;
