/** * Per-Plugin Schedule Configuration * * Manages plugin-specific schedule overrides and blackout dates. * * @since v1.51.4 */ import type { TimeWindow } from './schedule-types.js'; /** * Per-plugin schedule configuration */ export interface PluginScheduleConfig { /** Override global time window for this plugin */ window?: TimeWindow; /** Disable scheduled updates for this plugin */ disabled?: boolean; /** Delay updates for this many days after release */ delayDays?: number; /** Auto-approve major version updates for this plugin */ autoApproveMajor?: boolean; } /** * Schedule overrides configuration */ export interface ScheduleOverrides { /** Blackout dates (ISO format YYYY-MM-DD) when no updates should run */ blackoutDates: string[]; /** Per-plugin schedule configurations */ plugins: Record; /** Auto-approve major version updates globally */ autoApproveMajor: boolean; } /** * Default schedule overrides */ export declare const DEFAULT_SCHEDULE_OVERRIDES: ScheduleOverrides; /** * Plugin Schedule Manager * * Manages per-plugin schedule configurations and blackout dates. */ export declare class PluginScheduleManager { private filePath; private overrides; constructor(filePath: string); /** * Load overrides from file */ load(): Promise; /** * Save overrides to file */ save(): Promise; /** * Get all overrides */ getOverrides(): ScheduleOverrides; /** * Check if today is a blackout date */ isBlackoutDate(date?: Date): boolean; /** * Add a blackout date */ addBlackoutDate(date: string): Promise; /** * Remove a blackout date */ removeBlackoutDate(date: string): Promise; /** * Get blackout dates */ getBlackoutDates(): string[]; /** * Clear expired blackout dates (dates in the past) */ clearExpiredBlackoutDates(): Promise; /** * Get plugin schedule config */ getPluginConfig(pluginId: string): PluginScheduleConfig; /** * Set plugin schedule config */ setPluginConfig(pluginId: string, config: PluginScheduleConfig): Promise; /** * Update plugin schedule config (merge with existing) */ updatePluginConfig(pluginId: string, config: Partial): Promise; /** * Remove plugin schedule config */ removePluginConfig(pluginId: string): Promise; /** * Check if plugin is disabled for scheduling */ isPluginDisabled(pluginId: string): boolean; /** * Get plugin's custom time window (or undefined for global window) */ getPluginWindow(pluginId: string): TimeWindow | undefined; /** * Get plugin's delay days (or 0 for immediate) */ getPluginDelayDays(pluginId: string): number; /** * Check if update should be delayed based on release date * * @param pluginId - Plugin identifier * @param releaseDate - Release date of the update * @returns true if update should wait, false if ready */ shouldDelayUpdate(pluginId: string, releaseDate: Date): boolean; /** * Get when a delayed update will be ready */ getDelayedUpdateReadyDate(pluginId: string, releaseDate: Date): Date; /** * Check if major version update should be auto-approved */ shouldAutoApproveMajor(pluginId: string): boolean; /** * Set global auto-approve major setting */ setAutoApproveMajor(value: boolean): Promise; /** * Get global auto-approve major setting */ getAutoApproveMajor(): boolean; /** * Get list of plugins with custom configurations */ getConfiguredPlugins(): string[]; /** * Format date as YYYY-MM-DD */ private formatDate; /** * Validate date format (YYYY-MM-DD) */ private isValidDateFormat; } /** * Get the singleton plugin schedule manager */ export declare function getPluginScheduleManager(): PluginScheduleManager | null; /** * Initialize the plugin schedule manager */ export declare function initPluginScheduleManager(filePath: string): PluginScheduleManager; /** * Reset the singleton (for testing) */ export declare function resetPluginScheduleManager(): void; //# sourceMappingURL=plugin-schedule.d.ts.map