import { type NativeChat } from './harness-native-selection.js'; export interface SelectionPosition { left: number; top: number; overlay?: boolean; } export interface NativeSelectionSeat extends SelectionPosition { key: string; row: HTMLElement; } export interface NativeSelectionLayout { seats: readonly NativeSelectionSeat[]; viewport: HTMLElement | null; highlight?: { left: number; right: number; }; actionDock?: HTMLElement; } export declare const nativeSelectionActionOverlayCss = "\n :has(> [data-slot=\"conversation.input.dock\"] > [data-arkme-native-selection=\"actions\"]) { position: relative; }\n [data-slot=\"conversation.input.dock\"] > [data-arkme-native-selection=\"actions\"] { position: absolute; inset: 0; z-index: 1; }\n [data-slot=\"conversation.input.dock\"]:has(> [data-arkme-native-selection=\"actions\"]) + [data-slot=\"conversation.composer.bar\"] { visibility: hidden; }\n"; export declare function nativeSelectionHighlightSelector(keys: ReadonlySet): string; export declare function measureNativeSelection(viewport: HTMLElement, flow: HTMLElement, row: HTMLElement): SelectionPosition | undefined; export declare function sameSelectionPosition(a: SelectionPosition, b: SelectionPosition | undefined): boolean; /** Only the adapter knows native DOM attributes. No styles or attributes are written to host elements. */ export declare function watchNativeSelectionGeometry(options: { doc: Document; chat(): NativeChat; publish(layout: NativeSelectionLayout): void; fail(): void; }): { dispose(): void; refresh(): void; valid(seat: NativeSelectionSeat): boolean; }; /** Header slots do not inherit the native header's private view/store hooks. */ export declare function observeNativeChatPresence(doc: Document, publish: (present: boolean) => void): () => void; /** Resolve a selectable message body for pointer actions; native controls keep their own behavior. */ export declare function nativeSelectionMessageRow(doc: Document, target: EventTarget | null, chat: NativeChat): { key: string; row: HTMLElement; } | undefined; /** Expanded row paint is outside the native row box; resolve only bare scroll/flow space. */ export declare function nativeSelectionPointerRow(doc: Document, event: MouseEvent, chat: NativeChat, viewport: HTMLElement | null): { key: string; row: HTMLElement; } | undefined; //# sourceMappingURL=harness-native-selection-geometry.d.ts.map