import { Component } from 'vue'; import { isSyntheticTrackedChangeCommentLaneItem } from '../../helpers/tracked-change-comment-lane.js'; export interface V2GeometryPublishOptions { retainMissingTrackedChangeGeometry?: boolean; retainedTrackedChangeIds?: Iterable; reason?: string; } export interface V2GeometryPayload { mountContainer: HTMLElement | null; epoch?: number | null; host?: unknown; mount?: unknown; } export type V2CommittedPageWindow = Readonly>; interface V2GeometryPublisherOptions { getLayersContainer: () => HTMLElement | null; isCommentsEnabled: () => boolean; publishPositions: (positions: Record, options?: V2GeometryPublishOptions) => void; clearPositions: () => void; readCurrentPositions?: () => Record; setGeometryAvailable?: (value: boolean) => void; } interface V2GeometryPublisher { publish(payload: V2GeometryPayload | null, options?: V2GeometryPublishOptions): Promise | void; recollect(options?: V2GeometryPublishOptions): Promise | void; noteCommittedPageWindow?(window: V2CommittedPageWindow | null | undefined): void; reset(): void; getLastEpoch(): number | null; getLastPayload(): V2GeometryPayload | null; } interface V2ReviewWindowContext { superdoc: unknown; documentId: string; commentsAdapter: unknown; trackedChangesAdapter: unknown; resolveReviewWindow: (input: unknown) => unknown; moveFragmentWordIds: (ids: readonly string[]) => unknown; } interface V2ReviewWindowResult { comments?: { items?: readonly unknown[]; requestedIds?: readonly string[]; unresolvedCommentIds?: readonly string[]; }; trackedChanges?: { items?: readonly unknown[]; requestedIds?: readonly string[]; unresolvedTargets?: readonly unknown[]; }; preparedReview?: unknown; } interface V2ReviewWindowControllerOptions { applyReviewWindow?: ((context: V2ReviewWindowContext, result: V2ReviewWindowResult) => unknown) | null; } interface V2ReviewMutationSettlement { outcome: 'aborted' | 'rejected' | 'committed'; allResolved?: boolean; resumeDomains?: readonly ('comments' | 'trackedChanges')[]; trackedRowCount?: number | null; } interface V2ReviewWindowSnapshot { readonly status: 'pending' | 'ready' | 'stale'; readonly [field: string]: unknown; } interface V2ReviewWindowDiagnostics { generation: number; reviewEpoch: number; hasContext: boolean; inFlight: boolean; queued: boolean; mutationPaused: boolean; records: readonly Record[]; } interface V2ReviewWindowController { setContext(context: V2ReviewWindowContext | null): void; onCommittedPagePaint?(commit: V2CommittedPageWindow): void; refreshCommittedWindow(reason?: string): void; invalidate(reason?: string): void; beginMutation(fact: string | { token?: string; } | null | undefined): void; settleMutation(token: string | undefined, settlement?: V2ReviewMutationSettlement): void; reset(reason?: string): void; getSnapshot?(): V2ReviewWindowSnapshot | null; subscribe?(listener: (snapshot: V2ReviewWindowSnapshot) => void): () => void; getDiagnostics(): V2ReviewWindowDiagnostics | null; } interface SuperDocV2Integration { version: number; capabilities: unknown; EditorComponent: Component; RulerComponent: Component | null; createGeometryPublisher: (options: V2GeometryPublisherOptions) => V2GeometryPublisher; createReviewWindowController: (options: V2ReviewWindowControllerOptions) => V2ReviewWindowController; isSyntheticTrackedChangeCommentLaneItem: (value: unknown) => boolean; isV2SyntheticTrackedChangeRow: (value: unknown) => boolean; } export declare function configureDefaultV2IntegrationLoader(loader: () => Promise): void; export declare function loadDefaultV2Integration(): Promise; export declare function loadDefaultV2IntegrationOrFallback(): Promise; export declare const SUPERDOC_V2_INTEGRATION_VERSION = 1; export { isSyntheticTrackedChangeCommentLaneItem }; export declare function isV2SyntheticTrackedChangeRow(row: unknown): boolean; export declare function createStubV2Integration(): SuperDocV2Integration; export declare function createDefaultV2Integration(): SuperDocV2Integration; export declare function hasRealV2Integration(integration: SuperDocV2Integration | null | undefined): boolean;