/**
 * ClarificationItemBody - Shared rendering for a single clarification item's zones.
 *
 * Uses "Inset Panels" design: issue zone is recessed (tinted bg + inset shadow),
 * response zone is elevated (white surface). A centered gradient divider with label
 * creates a clear break between "what's wrong" and "how to respond."
 *
 * Used by both ClarificationCard (single item) and ClarificationGroupCard (per-item rows).
 *
 * Layout:
 * ┌─ Sub-header (optional, for GroupCard per-item rows) ──────┐
 * │  [Status Icon] [Status Badge]  Field Label  [Action Btns] │
 * ├─ Issue Zone (recessed) ───────────────────────────────────┤
 * │  [!] ISSUE FOUND · RULE_NAME                              │
 * │  Issue description (RED if pending, MUTED if responded)   │
 * │  Validation details (italic, same color logic)            │
 * │  Referenced Documents (optional)                          │
 * ├─ Divider ─────────────────────────────────────────────────┤
 * │  ──────── [icon] YOUR RESPONSE ────────                   │
 * ├─ Response Zone (elevated) ────────────────────────────────┤
 * │  ClarificationResponseForm                                │
 * └───────────────────────────────────────────────────────────┘
 */
import React from 'react';
import type { ClarificationItem, ClarificationResponse, ClarificationResponseOption, ResponseValidationState } from '../../types/clarification.js';
import type { ExtractedResponseFields } from '../../types/shared_data.js';
import type { FileManagerCallbacks } from '../../types/file_manager.js';
export interface ClarificationItemBodyProps {
    /** The clarification item to render */
    item: ClarificationItem;
    /** Show doc references inline with issue (true for Card, false for GroupCard where shared above) */
    show_doc_references?: boolean;
    /** Whether the response form is read-only */
    read_only?: boolean;
    /** Hide per-card submit button */
    hide_submit?: boolean;
    /** Custom label for the submit button */
    submit_label?: string;
    /** Hide the entire response form */
    hide_response_form?: boolean;
    /** File manager callbacks for file upload */
    file_manager?: FileManagerCallbacks;
    /** Callback when response is submitted */
    on_respond?: (id: string, response: ClarificationResponse) => void;
    /** Callback when resolved */
    on_resolve?: (id: string) => void;
    /** Callback when dismissed */
    on_dismiss?: (id: string) => void;
    /** Callback when re-opened */
    on_reopen?: (id: string) => void;
    /** Callback when a doc reference is clicked */
    on_doc_click?: (file_id: string) => void;
    /** Callback to view a referenced document */
    on_doc_view?: (file_id: string, file_name: string) => void;
    /** Callback to delete a referenced document */
    on_doc_delete?: (clarification_id: string, file_id: string) => void;
    /** Callback when the target field label is clicked */
    on_field_click?: (field_id: string) => void;
    /** Callback fired on every response change */
    on_response_change?: (id: string, response: ClarificationResponse) => void;
    /** Per-file validation state to show as badge on doc reference file bars */
    file_validation?: Record<string, {
        state: 'passed' | 'issues' | 'resolved' | 'validating';
        issue_count?: number;
    }>;
    /** Response validation state */
    response_validation?: ResponseValidationState;
    /** Callback when a file validation badge is clicked (opens detail dialog) */
    on_validation_click?: (file_id: string) => void;
    /** Per-file validation details for built-in dialog (keyed by file_id) */
    file_validation_details?: Record<string, import('../../components/shared/file_bar/file_bar_types.js').FileValidationDetails>;
    /** Per-file pipeline status text (keyed by file_id) */
    file_pipeline_status?: Record<string, string>;
    /** Compact mode: hides the "ISSUE FOUND · rule_name" label line */
    compact?: boolean;
    /**
     * Endpoint that runs the aggregate resolver (sum_match, etc.) at send time.
     * When provided alongside item.expectation, ClarificationItemBody intercepts
     * the submit, calls this URL with the response files, and either passes the
     * verdict through to on_respond or surfaces the rfibox-style mismatch sub-form.
     */
    resolution_api_url?: string;
    /**
     * Pulls structured fields (total/date/vendor) from a response file. Called
     * for each file lacking extracted_fields prior to running the resolver.
     * Typically wired to use_file_pipeline.extract_response_fields.
     */
    extract_response_fields?: (file_id: string, file_name: string, mime_type: string) => Promise<ExtractedResponseFields | null>;
    /** Pre-existing extracted fields keyed by file_id, used to skip re-extraction. */
    initial_extracted_fields?: Record<string, ExtractedResponseFields>;
    /** The radio options for the mismatch sub-form (typically loaded from the resolution_mismatch response set). */
    resolution_mismatch_options?: ClarificationResponseOption[];
}
/** Removed inset shadow styles — using flat zone design */
export declare const ClarificationItemBody: React.NamedExoticComponent<ClarificationItemBodyProps>;
//# sourceMappingURL=clarification_item_body.d.ts.map