/**
 * DetectStaleGoodFirstIssueUseCase — spec 097, FR-29.
 *
 * Returns the structured list of `good-first-issue`-labeled issues whose
 * last activity is older than the configured threshold. Pure: no side-
 * effects. Caller (CLI command, scheduler tick, web route) decides what
 * to do with the result (notify, surface in dashboard, auto-close, …).
 */
import type { IExternalIssueFetcher } from '../../ports/output/services/external-issue-fetcher.interface.js';
/**
 * Canonical label queried when looking for stale newcomer-friendly issues.
 */
export declare const GOOD_FIRST_ISSUE_LABEL = "good-first-issue";
/**
 * Repository and threshold parameters for stale good-first-issue detection.
 */
export interface DetectStaleGoodFirstIssueInput {
    /** GitHub repository owner or organization login. */
    owner: string;
    /** GitHub repository name within `owner`. */
    repo: string;
    /** Stale threshold in days. Defaults to 30. Must be > 0. */
    staleDays?: number;
    /** Override "now" — useful for deterministic tests. */
    now?: Date;
}
/**
 * Good-first issue whose last activity is at or older than the stale cutoff.
 */
export interface StaleIssue {
    /** GitHub repository owner or organization login. */
    owner: string;
    /** GitHub repository name within `owner`. */
    repo: string;
    /** GitHub issue number scoped to the repository. */
    issueNumber: number;
    /** Current issue title returned by the external issue fetcher. */
    title: string;
    /** Browser URL for the issue. */
    url: string;
    /** ISO 8601 timestamp the fetcher reported as the last activity. */
    lastActivityAt: string;
    /** Whole days since `lastActivityAt` at the time of the call. */
    staleForDays: number;
}
/**
 * Stale issue query result with the effective threshold used for the run.
 */
export interface DetectStaleGoodFirstIssueResult {
    /** Effective stale threshold in days after defaults and validation. */
    thresholdDays: number;
    /** Issues whose last activity is outside the effective threshold. */
    stale: readonly StaleIssue[];
}
export declare class DetectStaleGoodFirstIssueUseCase {
    private readonly fetcher;
    constructor(fetcher: IExternalIssueFetcher);
    execute(input: DetectStaleGoodFirstIssueInput): Promise<DetectStaleGoodFirstIssueResult>;
}
//# sourceMappingURL=detect-stale-good-first-issue.use-case.d.ts.map