/**
 * GroomIssueUseCase — spec 097, FR-25.
 *
 * Composes `ClassifyIntoLaneUseCase` and `ProposeAcceptanceCriteriaUseCase`
 * over a fetched issue to produce a structured grooming recommendation:
 *
 *   { lane, difficulty, acceptanceCriteria, suggestedLabels[], welcomeComment }
 *
 * Pure: NO side-effects. Callers (CLI commands, GitHub Actions handlers,
 * web routes) decide whether to apply the result via `IGitHubIssueWriter`,
 * gated through `IContributorActionGate` (NFR-5).
 */
import { ContributionDifficulty, ContributorLane } from '../../../domain/generated/output.js';
import type { IExternalIssueFetcher } from '../../ports/output/services/external-issue-fetcher.interface.js';
import { ClassifyIntoLaneUseCase } from './classify-into-lane.use-case.js';
import { ProposeAcceptanceCriteriaUseCase } from './propose-acceptance-criteria.use-case.js';
/**
 * GitHub issue reference to fetch and groom for newcomer readiness.
 */
export interface GroomIssueInput {
    /** GitHub issue reference accepted by `IExternalIssueFetcher.fetchGitHubIssue`. */
    ref: string;
}
/**
 * Pure grooming recommendation for labels, criteria, and optional welcome copy.
 */
export interface GroomIssueResult {
    /** Recommended contributor lane for the issue. */
    lane: ContributorLane;
    /** Recommended issue difficulty based on labels and body heuristics. */
    difficulty: ContributionDifficulty;
    /** Markdown checklist (joined with newlines). */
    acceptanceCriteria: string;
    /** Labels that should be applied (lane + difficulty + carried-forward labels). */
    suggestedLabels: readonly string[];
    /** Optional welcome comment body when the issue looks good-first. */
    welcomeComment?: string;
}
export declare class GroomIssueUseCase {
    private readonly fetcher;
    private readonly classifyIntoLane;
    private readonly proposeCriteria;
    constructor(fetcher: IExternalIssueFetcher, classifyIntoLane: ClassifyIntoLaneUseCase, proposeCriteria: ProposeAcceptanceCriteriaUseCase);
    execute(input: GroomIssueInput): Promise<GroomIssueResult>;
}
//# sourceMappingURL=groom-issue.use-case.d.ts.map