/**
 * Sync Configuration Types
 *
 * Extended sync configuration for the Unified Sync Orchestration feature.
 * Supports job scheduling, permission enforcement, discrepancy detection,
 * and proactive notifications.
 *
 * @module core/types/sync-config
 */
/**
 * Platform types for sync operations
 */
export type SyncPlatform = 'github' | 'jira' | 'ado';
/**
 * Scheduler configuration - controls recurring background jobs
 */
export interface SyncSchedulerConfig {
    /**
     * Master switch for scheduler
     * @default false
     */
    enabled: boolean;
    /**
     * Run sync check on session start
     * @default true (when scheduler enabled)
     */
    runOnStartup: boolean;
    /**
     * Individual job configurations
     */
    jobs: {
        /**
         * External tool sync (GitHub/JIRA/ADO)
         */
        externalSync: {
            enabled: boolean;
            /** Interval in minutes between sync runs */
            intervalMinutes: number;
        };
        /**
         * Code-to-spec discrepancy detection
         */
        discrepancyCheck: {
            enabled: boolean;
            /** Interval in minutes between checks */
            intervalMinutes: number;
        };
        /**
         * Living docs synchronization
         */
        livingDocsSync: {
            enabled: boolean;
            /** Interval in minutes between syncs */
            intervalMinutes: number;
        };
        /**
         * Notification cleanup
         */
        notificationCleanup: {
            enabled: boolean;
            /** Interval in minutes between cleanups */
            intervalMinutes: number;
        };
    };
}
/**
 * Per-platform sync permissions
 */
export interface PlatformSyncPermissions {
    /**
     * Can read/pull changes from external tool
     * @default true
     */
    canRead: boolean;
    /**
     * Can update status field only
     * @default false
     */
    canUpdateStatus: boolean;
    /**
     * Can create/update (upsert) items
     * @default false
     */
    canUpsert: boolean;
    /**
     * Can delete items (dangerous!)
     * @default false
     */
    canDelete: boolean;
}
/**
 * Sync permissions configuration - per-platform permission control
 */
export interface SyncPermissionsConfig {
    /**
     * GitHub permissions
     */
    github: PlatformSyncPermissions;
    /**
     * JIRA permissions
     */
    jira: PlatformSyncPermissions;
    /**
     * Azure DevOps permissions
     */
    ado: PlatformSyncPermissions;
}
/**
 * Discrepancy detection configuration
 */
export interface SyncDiscrepancyConfig {
    /**
     * Enable discrepancy detection
     * @default false
     */
    enabled: boolean;
    /**
     * Automatically update trivial changes (typos, formatting)
     * @default false
     */
    autoUpdateTrivial: boolean;
    /**
     * Severity levels that require manual review
     * @default ['major', 'breaking']
     */
    requireReviewFor: Array<'trivial' | 'minor' | 'major' | 'breaking'>;
    /**
     * Types of checks to run
     * @default ['api-routes', 'types', 'functions']
     */
    checkTypes: Array<'api-routes' | 'types' | 'functions' | 'config'>;
    /**
     * Glob patterns for paths to ignore
     * @default ['node_modules/**', 'dist/**', '*.test.ts']
     */
    ignorePaths: string[];
}
/**
 * Notification type
 */
export type NotificationType = 'import-complete' | 'discrepancy' | 'sync-failure' | 'drift' | 'job-complete';
/**
 * Notification preferences configuration
 */
export interface SyncNotificationsConfig {
    /**
     * Enable notification system
     * @default true
     */
    enabled: boolean;
    /**
     * Commands that trigger notification display
     * @default ['next', 'progress', 'status', 'done']
     */
    showOnCommands: string[];
    /**
     * Per-type notification settings
     */
    types: {
        importComplete: boolean;
        discrepancy: boolean;
        syncFailure: boolean;
        drift: boolean;
        jobComplete: boolean;
    };
}
/**
 * Logging verbosity levels
 */
export type SyncLoggingVerbosity = 'minimal' | 'normal' | 'verbose';
/**
 * Sync logging configuration
 */
export interface SyncLoggingConfig {
    /**
     * Logging verbosity level
     * @default 'normal'
     */
    verbosity: SyncLoggingVerbosity;
    /**
     * Days to retain logs before cleanup
     * @default 30
     */
    retentionDays: number;
}
/**
 * Complete sync configuration
 *
 * This is the root configuration under `config.json -> sync.orchestration`
 */
export interface SyncOrchestrationConfig {
    /**
     * Scheduler settings for recurring jobs
     */
    scheduler: SyncSchedulerConfig;
    /**
     * Per-platform permissions
     */
    permissions: SyncPermissionsConfig;
    /**
     * Discrepancy detection settings
     */
    discrepancy: SyncDiscrepancyConfig;
    /**
     * Notification preferences
     */
    notifications: SyncNotificationsConfig;
    /**
     * Logging settings
     */
    logging: SyncLoggingConfig;
}
/**
 * Default platform permissions (safe defaults - read-only)
 */
export declare const DEFAULT_PLATFORM_PERMISSIONS: PlatformSyncPermissions;
/**
 * Default scheduler configuration (disabled by default)
 */
export declare const DEFAULT_SCHEDULER_CONFIG: SyncSchedulerConfig;
/**
 * Default permissions configuration (all platforms read-only)
 */
export declare const DEFAULT_PERMISSIONS_CONFIG: SyncPermissionsConfig;
/**
 * Default discrepancy configuration (disabled)
 */
export declare const DEFAULT_DISCREPANCY_CONFIG: SyncDiscrepancyConfig;
/**
 * Default notifications configuration (enabled)
 */
export declare const DEFAULT_NOTIFICATIONS_CONFIG: SyncNotificationsConfig;
/**
 * Default logging configuration
 */
export declare const DEFAULT_LOGGING_CONFIG: SyncLoggingConfig;
/**
 * Get default sync orchestration configuration
 *
 * All scheduler features disabled by default for safety.
 * Notifications enabled for user awareness.
 */
export declare function getDefaultSyncOrchestrationConfig(): SyncOrchestrationConfig;
/**
 * Validation error for sync config
 */
export interface SyncConfigValidationError {
    path: string;
    message: string;
    value?: unknown;
}
/**
 * Validate sync orchestration configuration
 *
 * @param config - Partial configuration to validate
 * @returns Array of validation errors (empty if valid)
 */
export declare function validateSyncOrchestrationConfig(config: Partial<SyncOrchestrationConfig>): SyncConfigValidationError[];
/**
 * Deep merge sync orchestration configs
 *
 * @param base - Base configuration
 * @param override - Override configuration (partial)
 * @returns Merged configuration
 */
export declare function mergeSyncOrchestrationConfig(base: SyncOrchestrationConfig, override: Partial<SyncOrchestrationConfig>): SyncOrchestrationConfig;
//# sourceMappingURL=sync-config.d.ts.map