import { type ReactNode } from "react"; import type { ReviewComment } from "../../review/types.js"; export interface ReviewThread { root: ReviewComment; replies: ReviewComment[]; } export type ReviewThreadCapability = boolean | ((thread: ReviewThread) => boolean); export type ReviewCommentCapability = boolean | ((comment: ReviewComment, thread: ReviewThread) => boolean); export interface ReviewThreadPanelProps { resourceType: string; resourceId: string; targetId?: string | null; /** Persist new comments against this target while targetId continues to filter the list. */ composerTargetId?: string | null; /** Optional element/point anchor attached to new comments from the composer. */ composerAnchor?: unknown | null; /** Host metadata attached to new comments from the composer. */ composerMetadata?: Record; /** Visible label describing the element currently targeted by the composer. */ composerContextLabel?: string; title?: string; className?: string; includeResolved?: boolean; showComposer?: boolean; showHeader?: boolean; variant?: "card" | "plain"; placeholder?: string; emptyState?: string; loadingLabel?: string; replyLabel?: string; replyPlaceholder?: string; cancelReplyLabel?: string; resolveLabel?: string; deleteLabel?: string; moreActionsLabel?: string; resolvedLabel?: string; reviewerLabel?: string; onSelectThread?: (thread: ReviewThread) => void; onCommentCreated?: (comment: ReviewComment) => void; /** Allow signed-in commenters to reply. Omitted capabilities fail closed. */ canReply?: ReviewThreadCapability; /** Allow editors to resolve a thread. Omitted capabilities fail closed. */ canResolve?: ReviewThreadCapability; /** Allow deletion only for comments the caller has authorized. */ canDeleteComment?: ReviewCommentCapability; /** Extra per-thread controls rendered next to reply/resolve/delete. */ renderThreadActions?: (thread: ReviewThread) => ReactNode; /** Show a separate agent-submit action when the host supports agent routing. */ showComposerTargetPicker?: boolean; composerCommentLabel?: string; composerAgentLabel?: string; } export declare function ReviewThreadPanel({ resourceType, resourceId, targetId, composerTargetId, composerAnchor, composerMetadata, composerContextLabel, title, className, includeResolved, showComposer, showHeader, variant, placeholder, emptyState, loadingLabel, replyLabel, replyPlaceholder, cancelReplyLabel, resolveLabel, deleteLabel, moreActionsLabel, resolvedLabel, reviewerLabel, onSelectThread, onCommentCreated, canReply, canResolve, canDeleteComment, renderThreadActions, showComposerTargetPicker, composerCommentLabel, composerAgentLabel, }: ReviewThreadPanelProps): import("react").JSX.Element; export declare function buildReviewThreads(comments: ReviewComment[]): ReviewThread[]; //# sourceMappingURL=ReviewThreadPanel.d.ts.map