/**
 * GetCuratedIssuesByLaneUseCase — spec 097, FR-37.
 *
 * Returns curated good-first-issues filtered by chosen lane. Backs the
 * web "pick your first issue" CTA. Stale issues (older than the
 * configured threshold) are excluded so newcomers do not land on
 * abandoned tickets.
 */
import { ContributionDifficulty, type ContributorLane } from '../../../domain/generated/output.js';
import type { IExternalIssueFetcher } from '../../ports/output/services/external-issue-fetcher.interface.js';
/**
 * Repository, lane, and freshness filters for curated newcomer issues.
 */
export interface GetCuratedIssuesByLaneInput {
    /** GitHub repository owner or organization login. */
    owner: string;
    /** GitHub repository name within `owner`. */
    repo: string;
    /** Contributor lane that must be represented by issue labels. */
    lane: ContributorLane;
    /** Threshold past which an issue is considered stale and excluded. */
    staleDays?: number;
    /** Override "now" — useful for deterministic tests. */
    now?: Date;
}
/**
 * Good-first issue prepared for the lane-specific contributor picker.
 */
export interface CuratedIssue {
    /** 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;
    /** Lane used to curate this issue. */
    lane: ContributorLane;
    /** Difficulty inferred from issue labels. */
    difficulty: ContributionDifficulty;
    /** Markdown-style acceptance criteria carried verbatim if present in labels. */
    acceptanceCriteria?: string;
}
/**
 * Curated issue result for one requested contributor lane.
 */
export interface GetCuratedIssuesByLaneResult {
    /** Requested lane represented by every issue in `issues`. */
    lane: ContributorLane;
    /** Fresh, good-first issues matching the requested lane. */
    issues: readonly CuratedIssue[];
}
export declare class GetCuratedIssuesByLaneUseCase {
    private readonly fetcher;
    constructor(fetcher: IExternalIssueFetcher);
    execute(input: GetCuratedIssuesByLaneInput): Promise<GetCuratedIssuesByLaneResult>;
}
//# sourceMappingURL=get-curated-issues-by-lane.use-case.d.ts.map