import { PptxSlide } from 'pptx-viewer-core'; import { PptxAiFocusedTarget } from 'pptx-viewer-shared/ai'; /** The selection inputs the focus derivation reads. */ export interface FocusSelectionInput { activeSlideIndex: number; selectedElementIds: readonly string[]; selectedElementId: string | null; } /** * Derive focused targets from the live selection: one `element` target per * selected element on the active slide, or a single whole-`slide` target when * nothing is selected. Order and multiplicity are preserved (multi-select and * tables included) so callers can detect e.g. "exactly two tables". */ export declare function computeFocusTargets(input: FocusSelectionInput): PptxAiFocusedTarget[]; /** A renderable focus chip. `title` carries the full element id for hover. */ export interface FocusChip { key: string; label: string; title: string; } /** * Build display chips for the given targets. Slide targets read `Slide N`; * element targets read ` ` (a friendly short label, full id on hover), * or ` (missing)` when the element is no longer on the slide. */ export declare function focusTargetChips(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): FocusChip[]; /** Whether the focus is exactly two table elements (drives the merge action). */ export declare function isTwoTableFocus(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): false | { slideIndex: number; elementIdA: string; elementIdB: string; }; /** Build the directive that fires `merge_tables` without a confirmation round-trip. */ export declare function mergeTablesDirective(slideIndex: number, elementIdA: string, elementIdB: string): string; //# sourceMappingURL=focus-targets.d.ts.map