/**
 * Auto-Archive Watcher Service
 *
 * Periodically polls for completed features (Maintain lifecycle) that have
 * exceeded the configured auto-archive delay, and archives them automatically.
 *
 * Follows the same singleton + start/stop pattern as NotificationWatcherService.
 *
 * The poll interval is 60 seconds — auto-archiving is not time-critical and
 * a minute-level granularity keeps DB load minimal.
 */
import type { IFeatureRepository } from '../../../application/ports/output/repositories/feature-repository.interface.js';
export declare class AutoArchiveWatcherService {
    private readonly featureRepo;
    private readonly pollIntervalMs;
    private intervalId;
    constructor(featureRepo: IFeatureRepository, pollIntervalMs?: number);
    isRunning(): boolean;
    start(): void;
    stop(): void;
    private poll;
}
/**
 * Initialize the auto-archive watcher singleton.
 * Must be called once during web server startup.
 *
 * @throws Error if the watcher is already initialized
 */
export declare function initializeAutoArchiveWatcher(featureRepo: IFeatureRepository, pollIntervalMs?: number): void;
/**
 * Get the auto-archive watcher singleton.
 *
 * @returns The auto-archive watcher service
 * @throws Error if the watcher hasn't been initialized yet
 */
export declare function getAutoArchiveWatcher(): AutoArchiveWatcherService;
/**
 * Check if the auto-archive watcher has been initialized.
 */
export declare function hasAutoArchiveWatcher(): boolean;
/**
 * Reset the auto-archive watcher singleton (for testing purposes only).
 * Stops the watcher if running before resetting.
 *
 * @internal
 */
export declare function resetAutoArchiveWatcher(): void;
//# sourceMappingURL=auto-archive-watcher.service.d.ts.map