import { type CapabilityClaim, type CapabilityResolution } from './schema.js';
/** The injected port's output — one mined review finding per review comment. */
export interface MinedReviewFinding {
    /** GitHub review-comment numeric id (REST exposes no GraphQL node_id) — the nativeKey source. */
    commentId: number;
    /** GitHub author login (a review-bot or a cohort seat). */
    author: string;
    /** Provenance ref of the thread/PR, e.g. `mmnto-ai/totem#2205`. */
    prRef: string;
    /** The commit the finding was asserted against (lowercase 40-hex). */
    commitSha: string;
    /** When the finding was posted (ISO). */
    assertedAt: string;
    /**
     * The deterministic disposition read (reusing `bot-review-parser`'s taxonomy):
     * `accepted` → held → `correct`; `declined` → wrong → `wrong`; `undefined` = silence
     * (no disposition, no fix) → NO resolution row → the regenerator derives `unresolved`
     * (strategy pin: never count silence as a miss).
     */
    disposition?: 'accepted' | 'declined';
    /** The disposition comment id / fix-commit ref the read was grounded in. */
    dispositionEvidenceRef?: string;
    /** When the disposition was made (ISO); falls back to `assertedAt`. */
    resolvedAt?: string;
}
export interface ReviewCatchMineResult {
    claims: CapabilityClaim[];
    resolutions: CapabilityResolution[];
}
/**
 * Resolve a GitHub author login to a stable Layer-B actor-id, COUPLING to existing
 * actors rather than minting a parallel scheme (#697 fold 5, corrected c.4755848293).
 * The namespace is `{ cohort agent-seats } ∪ { coderabbit, gemini-code-assist, greptile }`:
 * the three ACTIVE paid review bots (de-facto home: `doctrine/bot-protocols.md` + the
 * parity-manifest `bot-review-configs` dimension) + the cohort seats (a cohort dispatch
 * login already IS its `cohort-roles.md` id). `pr-agent`/`qodo` are research-only/dropped
 * (no shipped #670 backend registry to couple to — forward-couple only IF #670 ships), so
 * they are NOT specially mapped. Model/backend identity is intentionally NOT folded into
 * the id (so the hit-rate aggregates across model swaps).
 *
 * @param author - the GitHub login of the finding's author (bot or cohort seat).
 * @returns the stable actor-id — a known bot's canonical id, else the trimmed login.
 * @throws if `author` is empty or whitespace-only (no silent empty actor-id).
 */
export declare function resolveActorId(author: string): string;
/**
 * Mine the review-catch column from a list of findings. One claim per finding; a
 * resolution only when the finding carries a disposition (silence → unresolved by
 * absence). Deterministic: `claimId`/`resolutionId` derive from the finding's stable
 * `commentId`, so re-mining identical history yields identical rows.
 */
export declare function mineReviewCatch(findings: readonly MinedReviewFinding[]): ReviewCatchMineResult;
//# sourceMappingURL=review-catch.d.ts.map