/**
 * GenerateMonthlyRecapUseCase — spec 097, FR-31.
 *
 * For a given UTC `YYYY-MM` bucket, gathers recognition events + the
 * contributors involved and produces a markdown recap artifact. Pure: no
 * publishing, no side-effects. The artifact is the single source of
 * truth that `PublishMonthlyRecapUseCase` fans out across channels.
 */
import { ContributorLane } from '../../../domain/generated/output.js';
import type { IContributorRepository } from '../../ports/output/repositories/contributor-repository.interface.js';
import type { IRecognitionEventRepository } from '../../ports/output/repositories/recognition-event-repository.interface.js';
import type { RecapArtifact } from '../../ports/output/services/recap-publisher.interface.js';
/**
 * Query parameters for building a contributor recap for one UTC month.
 */
export interface GenerateMonthlyRecapInput {
    /** UTC year-month bucket (e.g. `2026-04`). */
    yearMonth: string;
    /** Title prefix; defaults to "Shep". */
    projectName?: string;
}
/**
 * Aggregate counters and highlights computed for a monthly contributor recap.
 */
export interface RecapStats {
    /** Count of recognition events included in the month. */
    totalEvents: number;
    /** Count of first-PR or first-issue recognitions in the month. */
    newContributors: number;
    /** Count of PR-based recognitions in the month. */
    prsRecognized: number;
    /** Lane with the most recognized contributors, when contributors have lane data. */
    topLane?: ContributorLane;
    /** GitHub login with the most recognition events in the month. */
    topContributorLogin?: string;
}
/**
 * Rendered recap artifact plus the stats used to produce and summarize it.
 */
export interface GenerateMonthlyRecapResult {
    /** Markdown recap artifact ready for downstream publishers. */
    artifact: RecapArtifact;
    /** Aggregate statistics for dashboard display and recap metadata. */
    stats: RecapStats;
}
export declare class GenerateMonthlyRecapUseCase {
    private readonly contributors;
    private readonly events;
    constructor(contributors: IContributorRepository, events: IRecognitionEventRepository);
    execute(input: GenerateMonthlyRecapInput): Promise<GenerateMonthlyRecapResult>;
}
//# sourceMappingURL=generate-monthly-recap.use-case.d.ts.map