/**
 * reportPartition.ts — TS port of scar (d): lifecycle partitioning + re-report
 * (cycling) prevention for the operator digest.
 *
 * Ports the pure partition decision from the report-generation function (:2747) of
 * the reference `the-portal/.claude/scripts/feedback-processor.py` — the half of
 * scar (d) that complements the cluster-level cycling detection already ported in
 * transitions.ts. Given the current clusters + what was surfaced in the LAST
 * operator report, it decides what is actionable now: newly-open vs already-known
 * issues, the same for investigating, and items FIXED since the last report that
 * haven't been announced before (the re-report/cycling guard — a fix is announced
 * once, never again). It also decides whether the whole report should be skipped
 * (nothing new ⇒ no noise).
 *
 * Pure: the clusters, the previous-report state, and `now` are injected (the real
 * reporter does the DB query + state load + Telegram render around this). `now` is
 * an ISO string. Equivalence is by faithful transcription + both-sides-of-boundary
 * unit tests (the decision is embedded in a Telegram-rendering function in the
 * reference, so there is no clean isolated function for a cross-runtime harness).
 */
import type { Cluster } from './types.js';
export interface PreviousReportState {
    lastReportAt?: string;
    reportedOpenIds?: string[];
    reportedInvestigatingIds?: string[];
    reportedFixedIds?: string[];
}
export interface ReportPartition {
    newIssues: Cluster[];
    continuingOpen: Cluster[];
    newInvestigating: Cluster[];
    continuingInvestigating: Cluster[];
    fixedNew: Cluster[];
    /** True when there is nothing new to report (report should be skipped to avoid noise). */
    shouldSkip: boolean;
}
/**
 * Partition clusters for an operator report. `now` (ISO) is used only for the
 * first-run window (no prior report → items fixed in the last 4h).
 */
export declare function partitionClustersForReport(clusters: Cluster[], prev: PreviousReportState, now: string): ReportPartition;
//# sourceMappingURL=reportPartition.d.ts.map