import type { DisplayMode, SelectableData, SelectModeClickPosition, SelectModeFormatCommand, SelectModeHoverRect, SelectModeSelectionType, SelectModeTiptapActiveMarks } from "../_vendor/schemas/generated/selectMode"; import type { InlineEditFeedback } from "../_vendor/schemas/generated/selectModeIframeRpc"; import type { DragCandidate } from "./interactions/selectionGeometry"; import type { SelectionFrameSpec } from "./selectionFrame"; import type { SelectModeInteractionSession } from "./selectModeSession"; import type { InlineTiptapEditor } from "./tiptapInlineEditor"; export declare const EMPTY_ACTIVE_MARKS: SelectModeTiptapActiveMarks; export declare const INLINE_EDIT_PREPARE_TIMEOUT_MS = 10000; type InlineEditDraft = { status: "pending"; editId: string; element: HTMLElement; timeout: number; } | { status: Exclude; element: HTMLElement; }; type InlineEditRequest = InlineEditDraft & { stopFeedback: () => void; }; type LastClick = { descriptorPromise: Promise; target: Element; time: number; }; type PostedHover = { element: Element | null; rect: SelectModeHoverRect | null; }; interface SelectModeStoreState { displayMode: DisplayMode; interactionSession: SelectModeInteractionSession; selectionFrames: SelectionFrameSpec[]; isSelectionFrameEditing: boolean; lastPointerClientPosition: { x: number; y: number; } | null; lastPostedHover: PostedHover | undefined; sectionPreviewElement: Element | null; hoverSyncAnimationFrameId: number | null; lastClick: LastClick | null; dragCandidates: DragCandidate[]; committedSelectionAtPointerDown: Element[]; dragAnimationFrameId: number | null; editingPointerIds: Set; scrollSyncAnimationFrameId: number | null; inlineEditRequest: InlineEditRequest | null; editor: InlineTiptapEditor | null; editingElement: HTMLElement | null; editId: string | null; originalInnerHTML: string | null; initialHTML: string | null; isCommitting: boolean; beginEditingAt: number; activeMarks: SelectModeTiptapActiveMarks; actions: { reset: () => void; setDisplayMode: (displayMode: DisplayMode) => void; setSelectionType: ({ selectionType, selectors, }: { selectionType: SelectModeSelectionType; selectors?: string[]; }) => void; setInteractionSession: (interactionSession: SelectModeInteractionSession) => void; resetInteractionSession: () => void; postSelectedElementSnapshot: (options?: { clearMissing?: boolean; }) => boolean; commitElementSelection: ({ element, clickPosition, isPendingClickOnSelection, }: { element: Element; clickPosition: SelectModeClickPosition; isPendingClickOnSelection?: (data: SelectableData) => boolean; }) => SelectableData; expandToSection: (input: { targetSelector: string; }) => void; setSectionPreview: (input: { targetSelector: string | null; }) => void; showElementSelectionFrames: ({ elements, isSection, scrollOffset, }: { elements: Element[]; isSection?: boolean; scrollOffset: { left: number; top: number; }; }) => void; showAreaSelectionFrames: ({ elements, scrollOffset, }: { elements: Element[]; scrollOffset: { left: number; top: number; }; }) => void; hideSelectionFrames: () => void; setLastPointerClientPosition: (position: { x: number; y: number; } | null) => void; setLastPostedHover: (hover: PostedHover | undefined) => void; setHoverSyncAnimationFrameId: (id: number | null) => void; setLastClick: (lastClick: LastClick | null) => void; setDragCandidates: (dragCandidates: DragCandidate[]) => void; setCommittedSelectionAtPointerDown: (elements: Element[]) => void; setDragAnimationFrameId: (id: number | null) => void; setScrollSyncAnimationFrameId: (id: number | null) => void; beginEditing: ({ element, descriptorPromise, }: { element: Element; descriptorPromise: Promise; }) => void; commitInlineEdit: () => void; revertInlineEdit: () => void; formatCommand: (command: SelectModeFormatCommand) => void; dismissInlineEditRequest: () => void; }; } export declare const selectModeStore: import("zustand/traditional").UseBoundStoreWithEqualityFn>; export declare function useSelectModeStore(): import("zustand/traditional").UseBoundStoreWithEqualityFn>; export declare const useSelectModeStoreActions: () => { reset: () => void; setDisplayMode: (displayMode: DisplayMode) => void; setSelectionType: ({ selectionType, selectors, }: { selectionType: SelectModeSelectionType; selectors?: string[]; }) => void; setInteractionSession: (interactionSession: SelectModeInteractionSession) => void; resetInteractionSession: () => void; postSelectedElementSnapshot: (options?: { clearMissing?: boolean; }) => boolean; commitElementSelection: ({ element, clickPosition, isPendingClickOnSelection, }: { element: Element; clickPosition: SelectModeClickPosition; isPendingClickOnSelection?: (data: SelectableData) => boolean; }) => SelectableData; expandToSection: (input: { targetSelector: string; }) => void; setSectionPreview: (input: { targetSelector: string | null; }) => void; showElementSelectionFrames: ({ elements, isSection, scrollOffset, }: { elements: Element[]; isSection?: boolean; scrollOffset: { left: number; top: number; }; }) => void; showAreaSelectionFrames: ({ elements, scrollOffset, }: { elements: Element[]; scrollOffset: { left: number; top: number; }; }) => void; hideSelectionFrames: () => void; setLastPointerClientPosition: (position: { x: number; y: number; } | null) => void; setLastPostedHover: (hover: PostedHover | undefined) => void; setHoverSyncAnimationFrameId: (id: number | null) => void; setLastClick: (lastClick: LastClick | null) => void; setDragCandidates: (dragCandidates: DragCandidate[]) => void; setCommittedSelectionAtPointerDown: (elements: Element[]) => void; setDragAnimationFrameId: (id: number | null) => void; setScrollSyncAnimationFrameId: (id: number | null) => void; beginEditing: ({ element, descriptorPromise, }: { element: Element; descriptorPromise: Promise; }) => void; commitInlineEdit: () => void; revertInlineEdit: () => void; formatCommand: (command: SelectModeFormatCommand) => void; dismissInlineEditRequest: () => void; }; export declare const useDisplayMode: () => DisplayMode; export declare const useSelectionFrames: () => SelectionFrameSpec[]; export declare const useSectionHoverRect: () => SelectModeHoverRect | null; export declare const useIsSelectionFrameEditing: () => boolean; export declare const useEditingElement: () => HTMLElement | null; export declare const useInteractionSession: () => SelectModeInteractionSession; export {};