import { z } from 'zod';
export declare const SeveritySchema: z.ZodEnum<{
    critical: "critical";
    suggestion: "suggestion";
    nit: "nit";
    "false-positive": "false-positive";
}>;
export type Severity = z.infer<typeof SeveritySchema>;
export declare const SpecialistRoleSchema: z.ZodEnum<{
    architecture: "architecture";
    security: "security";
    performance: "performance";
    correctness: "correctness";
    maintainability: "maintainability";
}>;
export type SpecialistRole = z.infer<typeof SpecialistRoleSchema>;
export interface SpecialistFinding {
    /** Which specialist produced this finding. */
    role: SpecialistRole;
    /** File path (relative or diff-relative). Empty string for repo-level findings. */
    file: string;
    /** 1-based line number. 0 = file-level or cannot determine. */
    line: number;
    /** Short human-readable description of the problem. */
    message: string;
    /** Actionable recommended fix. */
    recommendation: string;
    /** Preliminary severity as assessed by the specialist. */
    severity: Severity;
    /** Free-form reasoning from the specialist. */
    reasoning: string;
}
export interface ArbitratorDecision {
    /** Canonical severity after arbitration. */
    severity: Severity;
    /** File path (same as deduplicated finding). */
    file: string;
    /** Line number (same as deduplicated finding). */
    line: number;
    /** Final concise description of the problem. */
    message: string;
    /** Final actionable recommendation. */
    recommendation: string;
    /** Which specialist roles contributed to this finding (after dedup). */
    contributors: SpecialistRole[];
    /** Explicit justification when contradictions were resolved. */
    justification: string;
}
export interface ReviewPanelReport {
    /** All 5 specialist outputs keyed by role. */
    specialistReports: Record<SpecialistRole, SpecialistFinding[]>;
    /** Final arbitrated decisions (deduplicated + classified). */
    decisions: ArbitratorDecision[];
    /** Markdown-formatted final report. */
    markdownReport: string;
    /** Machine-readable JSON summary. */
    jsonSummary: ReviewPanelJsonSummary;
    /** ISO-8601 timestamp. */
    reviewedAt: string;
    /**
     * SPEC-705: Present when parallelism was downgraded due to host RAM.
     * E.g. "⚠️ Parallelism reduced from 5 to 2 due to host memory (3.0GB free)".
     */
    ramDowngradeWarning?: string;
    /** SPEC-727: True when the panel was aborted due to heterogeneity violation. */
    aborted?: boolean;
    /** SPEC-727: Reason for abort (e.g. 'HETEROGENEITY_VIOLATION', 'arbitrator_output_invalid'). */
    reason?: string;
    /** SPEC-727: Duplicate specialist descriptors that caused a heterogeneity violation. */
    duplicates?: {
        a: SpecialistRole;
        b: SpecialistRole;
        modelId: string;
        promptHash: string;
    }[];
    /** SPEC-727: True when the panel was blocked (e.g. arbitrator output invalid). */
    blocked?: boolean;
}
export interface ReviewPanelJsonSummary {
    totalFindings: number;
    bySeverity: Record<Severity, number>;
    criticalFindings: ArbitratorDecision[];
    allFindings: ArbitratorDecision[];
}
/**
 * Descriptor for a specialist in the panel (used by SPEC-727 heterogeneity gate).
 * When not provided, specialists are assumed to use default prompts.
 */
export interface PanelSpecialistDescriptor {
    role: SpecialistRole;
    modelId: string;
    promptHash: string;
}
export interface ReviewPanelInput {
    /** Unified diff text to review. At least one of diff/branch/commitRange must be provided. */
    diff?: string;
    /** PR number for context (used in output headers). */
    prNumber?: number;
    /** Branch name (for context only — diff extraction is caller's responsibility). */
    branch?: string;
    /** Commit range for context (e.g. "main..HEAD"). */
    commitRange?: string;
    /** Absolute path to the project root. */
    projectPath: string;
    /** Optional linked spec content for arbitrator context. */
    spec?: string;
    /**
     * SPEC-705: Set by the panel orchestrator when parallelism is downgraded due to host RAM.
     * Surfaces "⚠️ Parallelism reduced from N to M due to host memory (X.XGB free)".
     */
    ramDowngradeWarning?: string;
    /**
     * SPEC-727: Optional specialist descriptors for heterogeneity checking.
     * When provided, the gate verifies that no two specialists share the same (modelId, promptHash).
     */
    specialists?: PanelSpecialistDescriptor[];
    /**
     * SPEC-727: Spec identifier used for disagreement counter keying.
     */
    specId?: string;
    /**
     * SPEC-727: Frontmatter SHA used for disagreement counter keying.
     */
    frontmatterSha?: string;
    /**
     * SPEC-727: Project identifier used for disagreement counter persistence.
     */
    projectId?: string;
}
/** Loose shape for raw specialist finding output from JSON.parse. */
export interface RawFinding {
    file?: unknown;
    line?: unknown;
    message?: unknown;
    recommendation?: unknown;
    severity?: unknown;
    reasoning?: unknown;
}
/** Loose shape for raw arbitrator decision output from JSON.parse. */
export interface RawDecision {
    severity?: unknown;
    file?: unknown;
    line?: unknown;
    message?: unknown;
    recommendation?: unknown;
    contributors?: unknown;
    justification?: unknown;
}
/** Loose shape for raw arbitrator response from JSON.parse. */
export interface RawArbitratorResponse {
    decisions?: unknown[];
}
export interface LlmInvoker {
    /**
     * Invoke a single LLM call with a system prompt and user message.
     * Returns the raw text response.
     */
    invoke(systemPrompt: string, userMessage: string): Promise<string>;
}
//# sourceMappingURL=multi-teammate-review.d.ts.map