import React from 'react'; import type { DocumentAspect, DocumentResolution, DocumentResolutionStrategy } from '../merge/useMergeResolution.js'; import type { MetadataCherryPickProps } from './MetadataDiffTable.js'; import type { GoLiveMode } from './GoLiveFlow.js'; export interface ReviewChangesPageProps { mode: GoLiveMode; documents: DocumentResolution[]; loading: boolean; error: string | null; banner?: React.ReactNode; siteName: string; siteHost: string; logoUrl?: string; workstreamName: string; config: any; /** * Branches each preview resolves tokens against. `publish` is the branch * whose datasources are live after go-live. Omitted, previews use the * surrounding editor's resolution. */ branchIds?: { live: string; workstream: string; publish: string; }; authorLabel: (doc: DocumentResolution) => string; updatedLabel: (doc: DocumentResolution) => string; onSetStrategy: (documentId: string, strategy: DocumentResolutionStrategy, aspect?: DocumentAspect) => void; onResolveRemaining: (strategy: 'accept-draft' | 'accept-live') => void; onCherryPick?: (documentId: string) => void; onMetadataCherryPick?: (documentId: string) => void; metadataCherryPick?: (MetadataCherryPickProps & { documentId: string; }) | null; onContinue?: () => void; onClose: () => void; /** Demo-only extras: rail rows pinned first and last, a detail that replaces the selected page's, and a hook on rail selection. */ demoSlot?: { railHeader: React.ReactNode; railFooter: React.ReactNode; detail: React.ReactNode | null; onRailSelect: () => void; registerReviewConflicts: (fn: () => void) => void; }; } export declare function ReviewChangesPage({ mode, documents, loading, error, banner, siteName, siteHost, logoUrl, workstreamName, config, branchIds, authorLabel, updatedLabel, onSetStrategy, onResolveRemaining, onCherryPick, onMetadataCherryPick, metadataCherryPick, onContinue, onClose, demoSlot, }: ReviewChangesPageProps): React.ReactElement;