/**
 * Stale Good-First-Issue Watcher Service
 *
 * Periodically polls every connected repository (with a `remoteUrl`)
 * and dispatches `DetectStaleGoodFirstIssueUseCase`. The use case is
 * pure — it returns the structured stale list — and the watcher's only
 * job is to feed it the right `(owner, repo)` tuples and surface
 * results via the desktop notifier so a maintainer notices.
 *
 * Time-driven side of spec 097, FR-42 (research decision 9). The split
 * with GitHub Actions is deliberate: webhook-driven workflows (welcome,
 * label-by-lane) live in `.github/workflows/`; cadence-driven workloads
 * run inside the Shep daemon so adopting projects without an always-on
 * Shep instance still get the inbound automation.
 */
import type { IRepositoryRepository } from '../../../application/ports/output/repositories/repository-repository.interface.js';
import type { IGitHubRepositoryService } from '../../../application/ports/output/services/github-repository-service.interface.js';
import type { IDesktopNotifier } from '../../../application/ports/output/services/i-desktop-notifier.js';
import type { DetectStaleGoodFirstIssueUseCase } from '../../../application/use-cases/contributors/detect-stale-good-first-issue.use-case.js';
export declare const DEFAULT_STALE_POLL_INTERVAL_MS: number;
export declare class StaleGoodFirstIssueWatcherService {
    private readonly useCase;
    private readonly repositoryRepo;
    private readonly githubService;
    private readonly notifier;
    private readonly pollIntervalMs;
    private readonly staleDays;
    private intervalId;
    constructor(useCase: DetectStaleGoodFirstIssueUseCase, repositoryRepo: IRepositoryRepository, githubService: IGitHubRepositoryService, notifier: IDesktopNotifier, pollIntervalMs?: number, staleDays?: number);
    isRunning(): boolean;
    start(): void;
    stop(): void;
    private poll;
}
export declare function initializeStaleGoodFirstIssueWatcher(useCase: DetectStaleGoodFirstIssueUseCase, repositoryRepo: IRepositoryRepository, githubService: IGitHubRepositoryService, notifier: IDesktopNotifier, pollIntervalMs?: number, staleDays?: number): void;
export declare function getStaleGoodFirstIssueWatcher(): StaleGoodFirstIssueWatcherService;
export declare function hasStaleGoodFirstIssueWatcher(): boolean;
export declare function resetStaleGoodFirstIssueWatcher(): void;
//# sourceMappingURL=stale-good-first-issue-watcher.service.d.ts.map