import type { VisitorInteraction } from "./VisitorInteraction"; import type { FSM } from "../fsm/FSM"; export interface Interaction { stopImmediatePropagation: boolean; preventDefault: boolean; readonly fsm: FSM; data: D; readonly name: string; readonly registeredNodes: ReadonlySet; readonly dynamicRegisteredNodes: ReadonlySet; isRunning(): boolean; isActivated(): boolean; setActivated(activated: boolean): void; log(log: boolean): void; registerToNodes(widgets: ReadonlyArray): void; registerToNodeChildren(elementToObserve: Node): void; setThrottleTimeout(timeout: number): void; fullReinit(): void; reinit(): void; reinitData(): void; uninstall(): void; acceptVisitor(visitor: VisitorInteraction): void; } export type InteractionDataType = T extends Interaction ? D & object : never; export type InteractionsDataTypes>> = { [K in keyof A]: A[K] extends Interaction ? T : never; };