import type { Logger } from './logger.js'; import type { PerformanceProfile, PoltergeistConfig, ProjectType } from './types.js'; /** * Project-specific exclusion sets optimized for each ecosystem */ export declare const PROJECT_TYPE_EXCLUSIONS: { readonly swift: readonly [".build", "**/.build/**", "Package.resolved", "DerivedData", "**/DerivedData/**", "*.xcworkspace/xcuserdata", "*.xcodeproj/xcuserdata", "*.xcworkspace/xcshareddata/xcschemes", "*.xcodeproj/project.xcworkspace/xcuserdata", "*.dSYM", "*.framework", "*.app", "*.ipa", "*.swiftmodule", "*.swiftdoc", "*.swiftsourceinfo"]; readonly node: readonly ["node_modules", "**/node_modules/**", "dist", "build", "out", ".next", ".nuxt", "coverage", ".cache", ".parcel-cache", ".nyc_output", "lib-cov", "*.log", "logs", "npm-debug.log*", "yarn-debug.log*", "yarn-error.log*", "package-lock.json", "yarn.lock", "pnpm-lock.yaml"]; readonly rust: readonly ["target", "**/target/**", "Cargo.lock", "*.rlib", "*.rmeta", "*.crate", "*.rs.bk"]; readonly python: readonly ["__pycache__", "**/__pycache__/**", "*.pyc", "*.pyo", "*.pyd", "venv", "env", ".venv", ".env", ".pytest_cache", ".coverage", "htmlcov", ".tox", ".mypy_cache", ".ruff_cache", ".pylint.d", "*.egg-info", "dist", "build"]; readonly cmake: readonly ["build", "_build", "out", "cmake-build-*", "**/CMakeFiles/**", "CMakeCache.txt", "**/CMakeCache.txt", "cmake_install.cmake", "**/cmake_install.cmake", "Makefile", "**/Makefile", "*.a", "*.so", "*.dylib", "*.dll", "*.lib", "*.exe", ".cmake", "**/.cmake/**", "_deps", "**/_deps/**", "Testing", "**/Testing/**", "_CPack_Packages", "**/_CPack_Packages/**"]; readonly mixed: readonly []; }; /** * Universal exclusions that apply to all project types */ export declare const UNIVERSAL_EXCLUSIONS: readonly [".git", ".svn", ".hg", ".bzr", ".DS_Store", "Thumbs.db", "desktop.ini", ".vscode", ".idea", ".cursor", ".vs", "*.swp", "*.swo", "tmp", "temp", ".tmp", "*.tmp", "*.temp", "*.zip", "*.tar", "*.gz", "*.rar", "*.7z"]; /** * Performance profiles with different exclusion strategies */ export declare const PERFORMANCE_PROFILES: { readonly conservative: { readonly description: "Minimal exclusions, maximum file coverage"; readonly excludeOnlyEssential: true; readonly maxExclusions: 20; }; readonly balanced: { readonly description: "Good balance of performance and coverage"; readonly excludeOnlyEssential: false; readonly maxExclusions: 50; }; readonly aggressive: { readonly description: "Maximum performance, minimal file coverage"; readonly excludeOnlyEssential: false; readonly maxExclusions: 100; }; }; /** * Configuration error with helpful suggestions */ export declare class ConfigurationError extends Error { readonly suggestion?: string | undefined; readonly code?: string | undefined; constructor(message: string, suggestion?: string | undefined, code?: string | undefined); } /** * Smart Watchman configuration manager - v1.0 * Clean, modern, opinionated design for optimal performance */ export declare class WatchmanConfigManager { private projectRoot; private logger; private configPath; constructor(projectRoot: string, logger: Logger); /** * Detect project type based on files in project root */ detectProjectType(): Promise; /** * Generates optimized exclusion list based on project type and performance profile. * Combines universal patterns, project-specific patterns, and custom exclusions. * Applies performance limits and deduplication for optimal Watchman performance. */ getOptimizedExclusions(projectType: ProjectType, profile?: PerformanceProfile, customExclusions?: string[]): string[]; /** * Validate watch patterns with strict checking */ /** * Normalize a watch pattern to be more lenient and user-friendly */ normalizeWatchPattern(pattern: string): string; validateWatchPattern(pattern: string): void; /** * Generate comprehensive Watchman configuration */ generateWatchmanConfig(config: PoltergeistConfig): Promise>; /** * Strict configuration validation - fail fast */ validateConfiguration(config: PoltergeistConfig): void; /** * Write configuration with metadata and validation */ writeConfig(watchmanConfig: Record, config: PoltergeistConfig): Promise; /** * Ensure configuration is up to date */ ensureConfigUpToDate(config: PoltergeistConfig): Promise; /** * Create exclusion expressions for subscriptions */ createExclusionExpressions(config: PoltergeistConfig): Array<[string, string[]]>; /** * Comprehensive optimization summary */ private logOptimizationSummary; /** * Generate suggested optimizations based on project analysis */ suggestOptimizations(): Promise; } //# sourceMappingURL=watchman-config.d.ts.map