import { Observable, Subject } from 'rxjs'; type WhenType = "end" | "nonStrict" | "strict" | "strictStart" | "strictThen" | "then"; declare function isWhenAtStart(type: WhenType): boolean; declare function isWhenAtThen(type: WhenType): boolean; declare function isWhenAtEnd(type: WhenType): boolean; declare function isWhenStrict(type: WhenType): boolean; interface When { fn: (i: D, acc: Readonly) => boolean; type: WhenType; } type CmdStatus = "cancelled" | "created" | "done" | "executed" | "flushed"; interface Command { flush(): void; execute(): Promise | boolean; canExecute(): boolean; hadEffect(): boolean; done(): void; isDone(): boolean; cancel(): void; getStatus(): CmdStatus; } interface FSMHandler { fsmStarts?(): void; fsmUpdates?(): void; fsmStops?(): void; fsmCancels?(): void; fsmError?(err: unknown): void; preFsmStart?(): void; preFsmUpdate?(): void; preFsmStop?(): void; fsmReinit?(): void; } interface State { readonly name: string; readonly fsm: FSM; checkStartingState(): void; uninstall(): void; acceptVisitor(visitor: VisitorFSM): void; } interface InputState extends State { enter(): void; } declare const mouseEventTypes: readonly ["mousedown", "mouseup", "mousemove", "mouseover", "mouseout", "mouseenter", "mouseleave", "click", "auxclick"]; declare const touchEventTypes: readonly ["touchstart", "touchend", "touchmove"]; declare const keyEventTypes: readonly ["keydown", "keyup"]; declare const eventTypes: readonly ["mousedown", "mouseup", "mousemove", "mouseover", "mouseout", "mouseenter", "mouseleave", "click", "auxclick", "touchstart", "touchend", "touchmove", "keydown", "keyup", "input", "scroll", "change", "wheel"]; type EventType = typeof eventTypes[number]; type MouseEventType = typeof mouseEventTypes[number]; type TouchEventType = typeof touchEventTypes[number]; type KeyEventType = typeof keyEventTypes[number]; interface Transition { readonly target: InputState; execute(event: Event): InputState | undefined; guard(event: E): boolean; accept(event: Event): event is E; acceptVisitor(visitor: VisitorFSM): void; getAcceptedEvents(): ReadonlySet; uninstall(): void; } interface OutputState extends State { readonly transitions: ReadonlyArray>; exit(): void; process(event: Event): boolean; addTransition(tr: Transition): void; } declare function isOutputStateType(obj: State | undefined): obj is OutputState; interface FSM { readonly states: ReadonlyArray; currentState: OutputState; readonly currentStateObservable: Observable<[OutputState, OutputState]>; readonly initState: OutputState; readonly startingState: State; readonly started: boolean; inner: boolean; currentSubFSM: FSM | undefined; log: boolean; process(event: Event): boolean; onStarting(): void; onUpdating(): void; onCancelling(): void; onTerminating(): void; onError(err: unknown): void; onTimeout(): void; stopCurrentTimeout(): void; enterStdState(state: InputState & OutputState): void; addHandler(handler: FSMHandler): void; removeHandler(handler: FSMHandler): void; reinit(): void; fullReinit(): void; uninstall(): void; acceptVisitor(visitor: VisitorFSM): void; } interface ConcurrentFSM extends FSM { getAllConccurFSMs(): ReadonlyArray; } interface VisitorFSM { visitFSM(fsm: FSM): void; visitAndConcurrentFSM(fsm: ConcurrentFSM): void; visitXOrConcurrentFSM(fsm: ConcurrentFSM): void; visitState(state: OutputState & State): void; visitInitState(state: OutputState & State): void; visitCancellingState(state: InputState & State): void; visitTerminalState(state: InputState & State): void; visitTransition(transition: Transition): void; visitTimeoutTransition(transition: Transition): void; } interface VisitorInteraction extends VisitorFSM { visitInteraction(interaction: Interaction): void; } 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; } type InteractionDataType = T extends Interaction ? D & object : never; type InteractionsDataTypes>> = { [K in keyof A]: A[K] extends Interaction ? T : never; }; interface BindingsObserver { observeBinding(binding: Binding, unknown>): void; clearObservedBindings(): void; readonly checker: Checker; } type LogLevel = "binding" | "command" | "interaction" | "usage"; interface BaseUpdateBinderBuilder extends BaseBinderBuilder { continuousExecution(): BaseUpdateBinderBuilder; throttle(timeout: number): BaseUpdateBinderBuilder; when(fn: () => boolean, mode?: WhenType): BaseUpdateBinderBuilder; end(fn: () => void): BaseUpdateBinderBuilder; log(...level: ReadonlyArray): BaseUpdateBinderBuilder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): BaseUpdateBinderBuilder; onDynamic(node: Widget): BaseUpdateBinderBuilder; stopImmediatePropagation(): BaseUpdateBinderBuilder; preventDefault(): BaseUpdateBinderBuilder; catch(fn: (ex: unknown) => void): BaseUpdateBinderBuilder; name(name: string): BaseUpdateBinderBuilder; configureRules(ruleName: RuleName, severity: Severity): BaseUpdateBinderBuilder; } interface CmdBinderBuilder extends BaseBinderBuilder { first(fn: (c: C) => void): CmdBinderBuilder; end(fn: (c: C) => void): CmdBinderBuilder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): CmdBinderBuilder; onDynamic(node: Widget): CmdBinderBuilder; when(fn: () => boolean, mode?: WhenType): CmdBinderBuilder; log(...level: ReadonlyArray): CmdBinderBuilder; stopImmediatePropagation(): CmdBinderBuilder; preventDefault(): CmdBinderBuilder; catch(fn: (ex: unknown) => void): CmdBinderBuilder; name(name: string): CmdBinderBuilder; configureRules(ruleName: RuleName, severity: Severity): CmdBinderBuilder; } interface CmdUpdateBinderBuilder extends CmdBinderBuilder, BaseUpdateBinderBuilder { then(fn: (c: C) => void): CmdUpdateBinderBuilder; continuousExecution(): CmdUpdateBinderBuilder; throttle(timeout: number): CmdUpdateBinderBuilder; first(fn: (c: C) => void): CmdUpdateBinderBuilder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): CmdUpdateBinderBuilder; onDynamic(node: Widget): CmdUpdateBinderBuilder; end(fn: (c: C) => void): CmdUpdateBinderBuilder; when(fn: () => boolean, mode?: WhenType): CmdUpdateBinderBuilder; log(...level: ReadonlyArray): CmdUpdateBinderBuilder; stopImmediatePropagation(): CmdUpdateBinderBuilder; preventDefault(): CmdUpdateBinderBuilder; catch(fn: (ex: unknown) => void): CmdUpdateBinderBuilder; name(name: string): CmdUpdateBinderBuilder; configureRules(ruleName: RuleName, severity: Severity): CmdUpdateBinderBuilder; } interface InteractionBinderBuilder, A, D extends object = InteractionDataType> extends BaseBinderBuilder { when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): InteractionBinderBuilder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): InteractionBinderBuilder; onDynamic(node: Widget): InteractionBinderBuilder; end(fn: () => void): InteractionBinderBuilder; log(...level: ReadonlyArray): InteractionBinderBuilder; stopImmediatePropagation(): InteractionBinderBuilder; preventDefault(): InteractionBinderBuilder; catch(fn: (ex: unknown) => void): InteractionBinderBuilder; name(name: string): InteractionBinderBuilder; configureRules(ruleName: RuleName, severity: Severity): InteractionBinderBuilder; } interface InteractionCmdBinder, A, D extends object = InteractionDataType> extends CmdBinderBuilder, InteractionBinderBuilder { first(fn: (c: C, i: D, acc: A) => void): InteractionCmdBinder; ifHadEffects(fn: (c: C, i: D, acc: A) => void): InteractionCmdBinder; ifHadNoEffect(fn: (c: C, i: D, acc: A) => void): InteractionCmdBinder; ifCannotExecute(fn: (c: C, i: D, acc: A) => void): InteractionCmdBinder; end(fn: (c: C, i: D, acc: A) => void): InteractionCmdBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): InteractionCmdBinder; onDynamic(node: Widget): InteractionCmdBinder; log(...level: ReadonlyArray): InteractionCmdBinder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): InteractionCmdBinder; stopImmediatePropagation(): InteractionCmdBinder; preventDefault(): InteractionCmdBinder; catch(fn: (ex: unknown) => void): InteractionCmdBinder; name(name: string): InteractionCmdBinder; configureRules(ruleName: RuleName, severity: Severity): InteractionCmdBinder; bind(): Binding; } interface InteractionUpdateBinderBuilder, A, D extends object = InteractionDataType> extends InteractionBinderBuilder, BaseUpdateBinderBuilder { cancel(fn: (i: D, acc: A) => void): InteractionUpdateBinderBuilder; endOrCancel(fn: (i: D, acc: A) => void): InteractionUpdateBinderBuilder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): InteractionUpdateBinderBuilder; end(fn: () => void): InteractionUpdateBinderBuilder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): InteractionUpdateBinderBuilder; onDynamic(node: Widget): InteractionUpdateBinderBuilder; log(...level: ReadonlyArray): InteractionUpdateBinderBuilder; stopImmediatePropagation(): InteractionUpdateBinderBuilder; throttle(timeout: number): InteractionUpdateBinderBuilder; continuousExecution(): InteractionUpdateBinderBuilder; preventDefault(): InteractionUpdateBinderBuilder; catch(fn: (ex: unknown) => void): InteractionUpdateBinderBuilder; name(name: string): InteractionUpdateBinderBuilder; configureRules(ruleName: RuleName, severity: Severity): InteractionUpdateBinderBuilder; } interface InteractionCmdUpdateBinder, A, D extends object = InteractionDataType> extends InteractionCmdBinder, CmdUpdateBinderBuilder, InteractionUpdateBinderBuilder { then(fn: ((c: C, i: D, acc: A) => void) | ((c: C) => void)): InteractionCmdUpdateBinder; continuousExecution(): InteractionCmdUpdateBinder; throttle(timeout: number): InteractionCmdUpdateBinder; first(fn: (c: C, i: D, acc: A) => void): InteractionCmdUpdateBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): InteractionCmdUpdateBinder; onDynamic(node: Widget): InteractionCmdUpdateBinder; log(...level: ReadonlyArray): InteractionCmdUpdateBinder; cancel(fn: (i: D, acc: A) => void): InteractionCmdUpdateBinder; endOrCancel(fn: (i: D, acc: A) => void): InteractionCmdUpdateBinder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): InteractionCmdUpdateBinder; ifHadEffects(fn: (c: C, i: D, acc: A) => void): InteractionCmdUpdateBinder; ifHadNoEffect(fn: (c: C, i: D, acc: A) => void): InteractionCmdUpdateBinder; ifCannotExecute(fn: (c: C, i: D, acc: A) => void): InteractionCmdUpdateBinder; end(fn: (c: C, i: D, acc: A) => void): InteractionCmdUpdateBinder; stopImmediatePropagation(): InteractionCmdUpdateBinder; preventDefault(): InteractionCmdUpdateBinder; catch(fn: (ex: unknown) => void): InteractionCmdUpdateBinder; name(name: string): InteractionCmdUpdateBinder; configureRules(ruleName: RuleName, severity: Severity): InteractionCmdUpdateBinder; bind(): Binding; } interface CmdUpdateBinder extends CmdUpdateBinderBuilder { then(fn: (c: C) => void): CmdUpdateBinder; continuousExecution(): CmdUpdateBinder; throttle(timeout: number): CmdUpdateBinder; first(fn: (c: C) => void): CmdUpdateBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): CmdUpdateBinder; onDynamic(node: Widget): CmdUpdateBinder; when(fn: () => boolean, mode?: WhenType): CmdUpdateBinder; log(...level: ReadonlyArray): CmdUpdateBinder; end(fn: (c: C) => void): CmdUpdateBinder; usingInteraction, A, D extends object = InteractionDataType>(fn: () => I): InteractionCmdUpdateBinder; stopImmediatePropagation(): CmdUpdateBinder; preventDefault(): CmdUpdateBinder; catch(fn: (ex: unknown) => void): CmdUpdateBinder; name(name: string): CmdUpdateBinder; configureRules(ruleName: RuleName, severity: Severity): CmdUpdateBinder; } interface InteractionUpdateBinder, A, D extends object = InteractionDataType> extends InteractionUpdateBinderBuilder { on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): InteractionUpdateBinder; onDynamic(node: Widget): InteractionUpdateBinder; log(...level: ReadonlyArray): InteractionUpdateBinder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): InteractionUpdateBinder; end(fn: () => void): InteractionUpdateBinder; cancel(fn: (i: D, acc: A) => void): InteractionUpdateBinder; endOrCancel(fn: (i: D, acc: A) => void): InteractionUpdateBinder; stopImmediatePropagation(): InteractionUpdateBinder; preventDefault(): InteractionUpdateBinder; throttle(timeout: number): InteractionUpdateBinder; continuousExecution(): InteractionUpdateBinder; catch(fn: (ex: unknown) => void): InteractionUpdateBinder; name(name: string): InteractionUpdateBinder; configureRules(ruleName: RuleName, severity: Severity): InteractionUpdateBinder; toProduce(fn: (i: D) => C): InteractionCmdUpdateBinder; toProduceAnon(fn: () => void): InteractionCmdUpdateBinder; } interface BaseUpdateBinder extends BaseUpdateBinderBuilder, BaseBinder { on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): BaseUpdateBinder; onDynamic(node: Widget): BaseUpdateBinder; when(fn: () => boolean, mode?: WhenType): BaseUpdateBinder; end(fn: () => void): BaseUpdateBinder; log(...level: ReadonlyArray): BaseUpdateBinder; continuousExecution(): BaseUpdateBinder; throttle(timeout: number): BaseUpdateBinder; toProduce(fn: () => C): CmdUpdateBinder; toProduceAnon(fn: () => void): CmdUpdateBinder; usingInteraction, A, D extends object = InteractionDataType>(fn: () => I): InteractionUpdateBinder; stopImmediatePropagation(): BaseUpdateBinder; preventDefault(): BaseUpdateBinder; catch(fn: (ex: unknown) => void): BaseUpdateBinder; name(name: string): BaseUpdateBinder; configureRules(ruleName: RuleName, severity: Severity): BaseUpdateBinder; } interface InteractionBinder, A, D extends object = InteractionDataType> extends InteractionBinderBuilder { when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): InteractionBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): InteractionBinder; onDynamic(node: Widget): InteractionBinder; log(...level: ReadonlyArray): InteractionBinder; end(fn: () => void): InteractionBinder; stopImmediatePropagation(): InteractionBinder; preventDefault(): InteractionBinder; catch(fn: (ex: unknown) => void): InteractionBinder; name(name: string): InteractionBinder; configureRules(ruleName: RuleName, severity: Severity): InteractionBinder; toProduce(fn: (i: D) => C): InteractionCmdBinder; toProduceAnon(fn: () => void): InteractionCmdBinder; } interface KeyBinderBuilder { with(isCode: boolean, ...keysOrCodes: ReadonlyArray): KeyBinderBuilder; } interface KeyInteractionBinderBuilder, A, D extends object = InteractionDataType> extends InteractionBinderBuilder, KeyBinderBuilder { when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): KeyInteractionBinderBuilder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): KeyInteractionBinderBuilder; onDynamic(node: Widget): KeyInteractionBinderBuilder; log(...level: ReadonlyArray): KeyInteractionBinderBuilder; end(fn: () => void): KeyInteractionBinderBuilder; with(isCode: boolean, ...keysOrCodes: ReadonlyArray): KeyInteractionBinderBuilder; stopImmediatePropagation(): KeyInteractionBinderBuilder; preventDefault(): KeyInteractionBinderBuilder; catch(fn: (ex: unknown) => void): KeyInteractionBinderBuilder; name(name: string): KeyInteractionBinderBuilder; configureRules(ruleName: RuleName, severity: Severity): KeyInteractionBinderBuilder; } interface KeyInteractionCmdBinder, A, D extends object = InteractionDataType> extends KeyInteractionBinderBuilder, InteractionCmdBinder { first(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): KeyInteractionCmdBinder; onDynamic(node: Widget): KeyInteractionCmdBinder; log(...level: ReadonlyArray): KeyInteractionCmdBinder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): KeyInteractionCmdBinder; ifHadEffects(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdBinder; ifHadNoEffect(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdBinder; ifCannotExecute(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdBinder; end(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdBinder; with(isCode: boolean, ...keysOrCodes: ReadonlyArray): KeyInteractionCmdBinder; stopImmediatePropagation(): KeyInteractionCmdBinder; preventDefault(): KeyInteractionCmdBinder; catch(fn: (ex: unknown) => void): KeyInteractionCmdBinder; name(name: string): KeyInteractionCmdBinder; configureRules(ruleName: RuleName, severity: Severity): KeyInteractionCmdBinder; bind(): Binding; } interface KeyInteractionBinder, A, D extends object = InteractionDataType> extends KeyInteractionBinderBuilder { when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): KeyInteractionBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): KeyInteractionBinder; onDynamic(node: Widget): KeyInteractionBinder; log(...level: ReadonlyArray): KeyInteractionBinder; end(fn: () => void): KeyInteractionBinder; with(isCode: boolean, ...keysOrCodes: ReadonlyArray): KeyInteractionBinder; stopImmediatePropagation(): KeyInteractionBinder; preventDefault(): KeyInteractionBinder; catch(fn: (ex: unknown) => void): KeyInteractionBinder; name(name: string): KeyInteractionBinder; configureRules(ruleName: RuleName, severity: Severity): KeyInteractionBinder; toProduce(fn: (i: D) => C): KeyInteractionCmdBinder; toProduceAnon(fn: () => void): KeyInteractionCmdBinder; } interface KeyInteractionCmdUpdateBinder, A, D extends object = InteractionDataType> extends KeyInteractionBinderBuilder, InteractionUpdateBinder { with(isCode: boolean, ...keysOrCodes: ReadonlyArray): KeyInteractionCmdUpdateBinder; then(fn: ((c: C, i: D, acc: A) => void) | ((c: C) => void)): KeyInteractionCmdUpdateBinder; continuousExecution(): KeyInteractionCmdUpdateBinder; throttle(timeout: number): KeyInteractionCmdUpdateBinder; first(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdUpdateBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): KeyInteractionCmdUpdateBinder; onDynamic(node: Widget): KeyInteractionCmdUpdateBinder; log(...level: ReadonlyArray): KeyInteractionCmdUpdateBinder; cancel(fn: (i: D, acc: A) => void): KeyInteractionCmdUpdateBinder; endOrCancel(fn: (i: D, acc: A) => void): KeyInteractionCmdUpdateBinder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): KeyInteractionCmdUpdateBinder; ifHadEffects(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdUpdateBinder; ifHadNoEffect(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdUpdateBinder; ifCannotExecute(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdUpdateBinder; end(fn: (c: C, i: D, acc: A) => void): KeyInteractionCmdUpdateBinder; stopImmediatePropagation(): KeyInteractionCmdUpdateBinder; preventDefault(): KeyInteractionCmdUpdateBinder; catch(fn: (ex: unknown) => void): KeyInteractionCmdUpdateBinder; name(name: string): KeyInteractionCmdUpdateBinder; configureRules(ruleName: RuleName, severity: Severity): KeyInteractionCmdUpdateBinder; bind(): Binding; } interface KeyInteractionUpdateBinder, A, D extends object = InteractionDataType> extends InteractionUpdateBinderBuilder, KeyBinderBuilder { on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): KeyInteractionUpdateBinder; onDynamic(node: Widget): KeyInteractionUpdateBinder; log(...level: ReadonlyArray): KeyInteractionUpdateBinder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): KeyInteractionUpdateBinder; continuousExecution(): KeyInteractionUpdateBinder; throttle(timeout: number): KeyInteractionUpdateBinder; with(isCode: boolean, ...keysOrCodes: ReadonlyArray): KeyInteractionUpdateBinder; stopImmediatePropagation(): KeyInteractionUpdateBinder; preventDefault(): KeyInteractionUpdateBinder; cancel(fn: (i: D, acc: A) => void): KeyInteractionUpdateBinder; endOrCancel(fn: (i: D, acc: A) => void): KeyInteractionUpdateBinder; catch(fn: (ex: unknown) => void): KeyInteractionUpdateBinder; name(name: string): KeyInteractionUpdateBinder; configureRules(ruleName: RuleName, severity: Severity): KeyInteractionUpdateBinder; toProduce(fn: (i: D) => C): KeyInteractionCmdUpdateBinder; toProduceAnon(fn: () => void): KeyInteractionCmdUpdateBinder; } interface UnitInteractionData { readonly timeStamp: number; readonly target: EventTarget | null; readonly currentTarget: EventTarget | null; } interface EventModifierData extends UnitInteractionData { readonly altKey: boolean; readonly ctrlKey: boolean; readonly metaKey: boolean; readonly shiftKey: boolean; } interface PointBaseData extends EventModifierData { readonly clientX: number; readonly clientY: number; readonly pageX: number; readonly pageY: number; readonly screenX: number; readonly screenY: number; } interface SrcTgtPointsData { readonly src: T; readonly tgt: T; readonly diffClientX: number; readonly diffClientY: number; readonly diffPageX: number; readonly diffPageY: number; readonly diffScreenX: number; readonly diffScreenY: number; readonly duration: number; velocity(direction: "all" | "horiz" | "vert"): number; isVertical(pxTolerance: number): boolean; isHorizontal(pxTolerance: number): boolean; isLeft(pxTolerance: number): boolean; isRight(pxTolerance: number): boolean; isTop(pxTolerance: number): boolean; isBottom(pxTolerance: number): boolean; } interface TouchData extends PointBaseData, UnitInteractionData { readonly force: number; readonly identifier: number; readonly pageX: number; readonly pageY: number; readonly radiusX: number; readonly radiusY: number; readonly rotationAngle: number; readonly allTouches: ReadonlyArray; } interface LineTouchData { isVertical(pxTolerance: number): boolean; isHorizontal(pxTolerance: number): boolean; isLeft(pxTolerance: number): boolean; isRight(pxTolerance: number): boolean; isTop(pxTolerance: number): boolean; isBottom(pxTolerance: number): boolean; } interface MultiTouchData { readonly touches: ReadonlyArray>; velocity(direction: "all" | "horiz" | "vert"): number; } interface RotationTouchData extends TwoTouchData { rotationAngle: number; } interface ScaleTouchData extends TwoTouchData { scalingRatio(pxTolerance: number): number; } interface TwoTouchData extends MultiTouchData { readonly touch1: SrcTgtPointsData; readonly touch2: SrcTgtPointsData; readonly diffClientX: number; readonly diffClientY: number; readonly diffPageX: number; readonly diffPageY: number; readonly diffScreenX: number; readonly diffScreenY: number; } type GeneralTwoTouchData = LineTouchData & RotationTouchData & ScaleTouchData; interface ThreeTouchData extends TwoTouchData { readonly touch3: SrcTgtPointsData; } interface FourTouchData extends ThreeTouchData { readonly touch4: SrcTgtPointsData; } interface KeyData extends UnitInteractionData, EventModifierData { readonly code: string; readonly key: string; readonly location: number; readonly repeat: boolean; } interface KeysData { readonly keys: ReadonlyArray; } interface PointData extends PointBaseData { readonly button: number; readonly buttons: number; readonly movementX: number; readonly movementY: number; readonly offsetX: number; readonly offsetY: number; readonly relatedTarget: EventTarget | null; } interface PointsData { readonly points: ReadonlyArray; } interface MousePointsData extends PointsData { readonly currentPosition: PointData | undefined; } interface ScrollData extends UnitInteractionData { readonly scrollX: number; readonly scrollY: number; } type TapsData = PointsData; interface ThenData> { readonly dx: DX; } interface WheelData extends PointData { readonly deltaX: number; readonly deltaY: number; readonly deltaZ: number; readonly deltaMode: number; } interface WidgetData { readonly widget: T | undefined; } interface Logger { writeConsole: boolean; serverAddress: string | undefined; readonly frontVersion: string | undefined; readonly sessionID: string; logInteractionMsg(msg: string, interactionName?: string): void; logBindingMsg(msg: string, bindingName?: string): void; logBindingStart(bindingName: string): void; logBindingEnd(bindingName: string, cancelled: boolean): void; logCmdMsg(msg: string, cmdName?: string): void; logInteractionErr(msg: string, ex: unknown, interactionName?: string): void; logBindingErr(msg: string, ex: unknown, bindingName?: string): void; logCmdErr(msg: string, ex: unknown, cmdName?: string): void; } type PrimitiveUndoableSnapshot = HTMLElement | SVGElement | string; type UndoableSnapshot = PrimitiveUndoableSnapshot | Promise | undefined; interface Undoable { undo(): void; redo(): void; getUndoName(): string; getVisualSnapshot(): UndoableSnapshot; equals(undoable: Undoable): boolean; } declare function isUndoableType(obj: unknown): obj is Undoable; interface UndoHistoryBase { undo(): void; redo(): void; clear(): void; add(undoable: Undoable): void; getLastUndo(): Undoable | undefined; getLastRedo(): Undoable | undefined; getLastUndoMessage(): string | undefined; getLastRedoMessage(): string | undefined; getLastOrEmptyUndoMessage(): string; getLastOrEmptyRedoMessage(): string; undosObservable(): Observable; redosObservable(): Observable; get considersEqualCmds(): boolean; } type PartialButtonTypedBinder = InteractionBinder>, A>; type PartialInputTypedBinder = InteractionBinder>, A>; type PartialSelectTypedBinder = InteractionBinder>, A>; type PartialSpinnerTypedBinder = InteractionUpdateBinder>, A>; type PartialAnchorTypedBinder = InteractionBinder>, A>; type PartialTextInputTypedBinder = InteractionUpdateBinder>, A>; type PartialRotateTypedBinder = InteractionUpdateBinder, A>; type PartialScaleTypedBinder = InteractionUpdateBinder, A>; type PartialTwoPanTypedBinder = InteractionUpdateBinder, A>; type PartialTwoTouchTypedBinder = InteractionUpdateBinder, A>; type PartialThreeTouchTypedBinder = InteractionUpdateBinder, A>; type PartialFourTouchTypedBinder = InteractionUpdateBinder, A>; type PartialTouchSrcTgtTypedBinder = InteractionUpdateBinder>, A>; type PartialMultiTouchTypedBinder = InteractionUpdateBinder, A>; type PartialTapsTypedBinder = InteractionUpdateBinder, A>; type PartialTapTypedBinder = InteractionUpdateBinder, A>; type PartialTouchTypedBinder = InteractionUpdateBinder, A>; type PartialPointTypedBinder = InteractionBinder, A>; type PartialWheelTypedBinder = InteractionBinder, A>; type PartialScrollTypedBinder = InteractionBinder, A>; type PartialUpdatePointTypedBinder = InteractionUpdateBinder, A>; type PartialPointsTypedBinder = InteractionUpdateBinder, A>; type PartialPointSrcTgtTypedBinder = InteractionUpdateBinder>, A>; type PartialKeyTypedBinder = KeyInteractionBinder, A>; type PartialKeysTypedBinder = KeyInteractionUpdateBinder, A>; type PartialPointOrTouchTypedBinder = InteractionBinder, A>; type PartialPointsOrTapsTypedBinder = InteractionUpdateBinder>, A>; type PartialTouchMouseDnDTypedBinder = InteractionUpdateBinder>, A>; type PartialThenBinder>, A = unknown> = InteractionUpdateBinder>>, A, ThenData>>; declare abstract class Bindings { abstract readonly undoHistory: H; abstract readonly logger: Logger; abstract nodeBinder(accInit?: A): BaseUpdateBinder; abstract buttonBinder(accInit?: A): PartialButtonTypedBinder; abstract checkboxBinder(accInit?: A): PartialInputTypedBinder; abstract colorPickerBinder(accInit?: A): PartialInputTypedBinder; abstract comboBoxBinder(accInit?: A): PartialSelectTypedBinder; abstract spinnerBinder(accInit?: A): PartialSpinnerTypedBinder; abstract dateBinder(accInit?: A): PartialInputTypedBinder; abstract hyperlinkBinder(accInit?: A): PartialAnchorTypedBinder; abstract textInputBinder(timeout?: number, accInit?: A): PartialTextInputTypedBinder; abstract touchDnDBinder(cancellable: boolean, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract reciprocalTouchDnDBinder(handle: EltRef, spring: EltRef, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract multiTouchBinder(nbTouches: number, accInit?: A): PartialMultiTouchTypedBinder; abstract twoTouchBinder(accInit?: A): PartialTwoTouchTypedBinder; abstract threeTouchBinder(accInit?: A): PartialThreeTouchTypedBinder; abstract fourTouchBinder(accInit?: A): PartialFourTouchTypedBinder; abstract tapsBinder(tapsCount: number, accInit?: A): PartialTapsTypedBinder; abstract tapBinder(accInit?: A): PartialTapTypedBinder; abstract touchStartBinder(accInit?: A): PartialTouchTypedBinder; abstract longTouchBinder(duration: number, accInit?: A): PartialTouchTypedBinder; abstract panBinder(cancellable: boolean, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract panVerticalBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract panHorizontalBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract panLeftBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract panRightBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract panTopBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract panBottomBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; abstract twoPanVerticalBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; abstract twoPanHorizontalBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; abstract twoPanLeftBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; abstract twoPanRightBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; abstract twoPanTopBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; abstract twoPanBottomBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; abstract rotateBinder(pxTolerance: number, accInit?: A): PartialRotateTypedBinder; abstract scaleBinder(pxTolerance: number, accInit?: A): PartialScaleTypedBinder; abstract clickBinder(accInit?: A): PartialPointTypedBinder; abstract wheelBinder(accInit?: A): PartialWheelTypedBinder; abstract dbleClickBinder(accInit?: A): PartialUpdatePointTypedBinder; abstract mouseDownBinder(accInit?: A): PartialPointTypedBinder; abstract mouseUpBinder(accInit?: A): PartialPointTypedBinder; abstract longMouseDownBinder(duration: number, accInit?: A): PartialUpdatePointTypedBinder; abstract clicksBinder(nbClicks: number, accInit?: A): PartialPointsTypedBinder; abstract mouseEnterBinder(withBubbling: boolean, accInit?: A): PartialPointTypedBinder; abstract mouseLeaveBinder(withBubbling: boolean, accInit?: A): PartialPointTypedBinder; abstract mouseMoveBinder(accInit?: A): PartialPointTypedBinder; abstract scrollBinder(accInit?: A): PartialScrollTypedBinder; abstract dndBinder(cancellable: boolean, accInit?: A): PartialPointSrcTgtTypedBinder; abstract reciprocalDndBinder(handle: EltRef, spring: EltRef, accInit?: A): PartialPointSrcTgtTypedBinder; abstract dragLockBinder(accInit?: A): PartialPointSrcTgtTypedBinder; abstract keyDownBinder(modifierAccepted: boolean, accInit?: A): PartialKeyTypedBinder; abstract keysDownBinder(accInit?: A): PartialKeysTypedBinder; abstract keyUpBinder(modifierAccepted: boolean, accInit?: A): PartialKeyTypedBinder; abstract keysTypeBinder(accInit?: A): PartialKeysTypedBinder; abstract keyTypeBinder(accInit?: A): PartialKeyTypedBinder; abstract mouseDownOrTouchStartBinder(accInit?: A): PartialPointOrTouchTypedBinder; abstract tapsOrClicksBinder(nbTap: number, accInit?: A): PartialPointsOrTapsTypedBinder; abstract tapOrClickBinder(accInit?: A): PartialPointOrTouchTypedBinder; abstract longpressOrTouchBinder(duration: number, accInit?: A): PartialPointOrTouchTypedBinder; abstract reciprocalMouseOrTouchDnD(handle: EltRef, spring: EltRef, accInit?: A): PartialTouchMouseDnDTypedBinder; abstract undoRedoBinder(undo: Widget, redo: Widget, catchFn?: ((err: unknown) => void)): [ Binding>, unknown>, Binding>, unknown> ]; abstract combine>, A>(interactions: XS, accInit?: A): PartialThenBinder; abstract clear(): void; abstract setBindingObserver(obs?: BindingsObserver): void; abstract acceptVisitor(visitor: VisitorBinding): void; } interface VisitorBinding extends VisitorInteraction { visitBinding(binding: Binding, unknown>): void; visitBindings(bindings: Bindings): void; } interface Binding, A, D extends object = InteractionDataType> { readonly name: string; logUsage: boolean; logBinding: boolean; logCmd: boolean; readonly accumulator: A; readonly interaction: I; readonly command: C | undefined; readonly linterRules: ReadonlyMap; activated: boolean; readonly running: boolean; readonly continuousCmdExecution: boolean; readonly timesEnded: number; readonly timesCancelled: number; readonly produces: Observable; isWhenDefined(): boolean; uninstallBinding(): void; acceptVisitor(visitor: VisitorBinding): void; } type RuleName = "included" | "same-data" | "same-interactions"; type Severity = "err" | "ignore" | "warn"; type LinterRule = [name: RuleName, severity: Severity]; interface Checker { setLinterRules(...rules: ReadonlyArray): void; checkRules(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; checkSameInteractions(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; checkSameData(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; checkIncluded(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; } interface EltRef { nativeElement: T; } declare function isEltRef(obj: unknown): obj is EltRef; type Widget = EltRef | T; interface BaseBinderBuilder { on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): BaseBinderBuilder; onDynamic(node: Widget): BaseBinderBuilder; when(fn: () => boolean, mode?: WhenType): BaseBinderBuilder; end(fn: () => void): BaseBinderBuilder; log(...level: ReadonlyArray): BaseBinderBuilder; stopImmediatePropagation(): BaseBinderBuilder; preventDefault(): BaseBinderBuilder; catch(fn: (ex: unknown) => void): BaseBinderBuilder; name(name: string): BaseBinderBuilder; configureRules(ruleName: RuleName, severity: Severity): BaseBinderBuilder; } interface CmdBinder extends CmdBinderBuilder { first(fn: (c: C) => void): CmdBinder; end(fn: (c: C) => void): CmdBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): CmdBinder; onDynamic(node: Widget): CmdBinder; when(fn: () => boolean, mode?: WhenType): CmdBinder; log(...level: ReadonlyArray): CmdBinder; usingInteraction, A, D extends object = InteractionDataType>(fn: () => I): InteractionCmdBinder; stopImmediatePropagation(): CmdBinder; preventDefault(): CmdBinder; catch(fn: (ex: unknown) => void): CmdBinder; name(name: string): CmdBinder; configureRules(ruleName: RuleName, severity: Severity): CmdBinder; } interface BaseBinder extends BaseBinderBuilder { on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): BaseBinder; onDynamic(node: Widget): BaseBinder; when(whenPredicate: () => boolean, mode?: WhenType): BaseBinder; end(fn: () => void): BaseBinder; log(...level: ReadonlyArray): BaseBinder; catch(fn: (ex: unknown) => void): BaseBinder; name(name: string): BaseBinder; configureRules(ruleName: RuleName, severity: Severity): BaseBinder; toProduce(fn: () => C): CmdBinder; toProduceAnon(fn: () => void): CmdBinder; usingInteraction, A, D extends object = InteractionDataType>(fn: () => I): InteractionBinder; } interface InteractionBuilder, D extends object = InteractionDataType> { first(predicate: (i: D) => boolean): this; then(predicate: (i: D) => boolean): this; firstAndThen(predicate: (i: D) => boolean): this; end(predicate: (i: D) => boolean): this; name(name: string): this; build(): () => I; } interface UndoableTreeNode { lastChildUndone: UndoableTreeNode | undefined; readonly id: number; readonly undoable: Undoable; readonly parent: UndoableTreeNode | undefined; readonly children: Array; readonly visualSnapshot: UndoableSnapshot; undo(): void; redo(): void; } interface UndoableTreeNodeDTO { readonly id: number; readonly undoable: unknown; readonly children: ReadonlyArray; } interface TreeUndoHistoryDTO { readonly path: ReadonlyArray; readonly roots: ReadonlyArray; } declare abstract class TreeUndoHistory implements UndoHistoryBase { abstract get keepPath(): boolean; abstract get path(): ReadonlyArray; abstract get root(): UndoableTreeNode; abstract get undoableNodes(): Array; abstract get currentNode(): UndoableTreeNode; abstract goTo(id: number): void; abstract delete(id: number): void; abstract getPositions(): Map; abstract add(undoable: Undoable): void; abstract clear(): void; abstract getLastOrEmptyRedoMessage(): string; abstract getLastOrEmptyUndoMessage(): string; abstract getLastRedo(): Undoable | undefined; abstract getLastRedoMessage(): string | undefined; abstract getLastUndo(): Undoable | undefined; abstract getLastUndoMessage(): string | undefined; abstract redo(): void; abstract redosObservable(): Observable; abstract undo(): void; abstract undosObservable(): Observable; abstract export(fn: (undoable: Undoable) => unknown): TreeUndoHistoryDTO; abstract import(dtoHistory: TreeUndoHistoryDTO, fn: (dtoUndoable: unknown) => Undoable): void; abstract get considersEqualCmds(): boolean; abstract size(): number; abstract sizeObservable(): Observable; } declare abstract class UndoHistory implements UndoHistoryBase { abstract add(undoable: Undoable): void; abstract clear(): void; abstract undo(): void; abstract redo(): void; abstract getUndo(): ReadonlyArray; abstract getRedo(): ReadonlyArray; abstract undosObservable(): Observable; abstract redosObservable(): Observable; abstract getLastUndo(): Undoable | undefined; abstract getLastRedo(): Undoable | undefined; abstract getLastUndoMessage(): string | undefined; abstract getLastRedoMessage(): string | undefined; abstract getLastOrEmptyUndoMessage(): string; abstract getLastOrEmptyRedoMessage(): string; abstract getSizeMax(): number; abstract setSizeMax(max: number): void; abstract get considersEqualCmds(): boolean; abstract size(): [undos: number, redos: number]; abstract sizeObservable(): Observable<[undos: number, redos: number]>; } declare class DwellSpringAnimation { private displaySpring; private interval; private positionSpring; private readonly radius; private readonly handle; private readonly spring; constructor(handle: Readonly>, spring: Readonly>); process(i: SrcTgtPointsData): void; end(): void; } declare abstract class Binder, A, D extends object = InteractionDataType> implements CmdBinder, InteractionBinder, InteractionCmdBinder { protected firstFn?: (c: C, i: D, acc: A) => void; protected produceFn?: (i: D | undefined) => C; protected widgets: ReadonlyArray; protected dynamicNodes: ReadonlyArray; protected usingFn?: () => I; protected hadEffectsFn?: (c: C, i: D, acc: A) => void; protected hadNoEffectFn?: (c: C, i: D, acc: A) => void; protected cannotExecFn?: (c: C, i: D, acc: A) => void; protected endFn?: (c: C, i: D, acc: A) => void; protected onErrFn?: (ex: unknown) => void; protected logLevels: ReadonlyArray; protected stopPropagation: boolean; protected prevDefault: boolean; protected bindingName: string | undefined; protected observer: BindingsObserver | undefined; protected undoHistory: UndoHistoryBase; protected logger: Logger; protected whenFnArray: Array>; protected firstFnArray: Array<(c: C, i: D, acc: A) => void>; protected endFnArray: Array<(c: C, i: D, acc: A) => void>; protected hadEffectsFnArray: Array<(c: C, i: D, acc: A) => void>; protected hadNoEffectFnArray: Array<(c: C, i: D, acc: A) => void>; protected cannotExecFnArray: Array<(c: C, i: D, acc: A) => void>; protected onErrFnArray: Array<(ex: unknown) => void>; protected accInit: A | undefined; protected linterRules: Map; protected constructor(undoHistory: UndoHistoryBase, logger: Logger, observer?: BindingsObserver, binder?: Partial>, acc?: A); protected abstract duplicate(): Binder; protected copyFnArrays(): void; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): Binder; onDynamic(node: Widget): Binder; first(fn: (c: C, i: D, acc: A) => void): Binder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): Binder; ifHadEffects(fn: (c: C, i: D, acc: A) => void): Binder; ifHadNoEffect(fn: (c: C, i: D, acc: A) => void): Binder; ifCannotExecute(fn: (c: C, i: D, acc: A) => void): Binder; end(fn: (c: C, i: D, acc: A) => void): Binder; log(...level: ReadonlyArray): Binder; stopImmediatePropagation(): Binder; preventDefault(): Binder; catch(fn: (ex: unknown) => void): Binder; name(name: string): Binder; configureRules(ruleName: RuleName, severity: Severity): Binder; usingInteraction, A2, D2 extends object = InteractionDataType>(fn: () => I2): Binder; toProduce(fn: (i: D) => C2): Binder; toProduceAnon(fn: () => void): Binder; abstract bind(): Binding; } declare class UpdateBinder, A, D extends object = InteractionDataType> extends Binder implements CmdUpdateBinder, InteractionCmdUpdateBinder { protected thenFn?: (c: C, i: D, acc: A) => void; protected cancelFn?: (i: D, acc: A) => void; protected endOrCancelFn?: (i: D, acc: A) => void; protected continuousCmdExecution: boolean; protected throttleTimeout: number; protected thenFnArray: Array<(c: C, i: D, acc: A) => void>; protected cancelFnArray: Array<(i: D, acc: A) => void>; protected endOrCancelFnArray: Array<(i: D, acc: A) => void>; constructor(undoHistory: UndoHistoryBase, logger: Logger, observer?: BindingsObserver, binder?: Partial>, acc?: A); protected copyFnArraysUpdate(): void; then(fn: (c: C, i: D, acc: A) => void): UpdateBinder; continuousExecution(): UpdateBinder; cancel(fn: (i: D, acc: A) => void): UpdateBinder; endOrCancel(fn: (i: D, acc: A) => void): UpdateBinder; throttle(timeout: number): UpdateBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): UpdateBinder; onDynamic(node: Widget): UpdateBinder; first(fn: (c: C, i: D, acc: A) => void): UpdateBinder; when(fn: (i: D, acc: Readonly) => boolean, mode?: WhenType): UpdateBinder; ifHadEffects(fn: (c: C, i: D, acc: A) => void): UpdateBinder; ifHadNoEffect(fn: (c: C, i: D, acc: A) => void): UpdateBinder; ifCannotExecute(fn: (c: C, i: D, acc: A) => void): UpdateBinder; end(fn: (c: C, i: D, acc: A) => void): UpdateBinder; log(...level: ReadonlyArray): UpdateBinder; stopImmediatePropagation(): UpdateBinder; preventDefault(): UpdateBinder; catch(fn: (ex: unknown) => void): UpdateBinder; name(name: string): UpdateBinder; configureRules(ruleName: RuleName, severity: Severity): UpdateBinder; usingInteraction, A2, D2 extends object = InteractionDataType>(fn: () => I2): UpdateBinder; toProduce(fn: (i: D) => C2): UpdateBinder; toProduceAnon(fn: () => void): UpdateBinder; protected duplicate(): UpdateBinder; bind(): Binding; } declare class KeysBinder, A, D extends object = InteractionDataType> extends UpdateBinder implements KeyInteractionCmdUpdateBinder { private keysOrCodes; private isCode; constructor(undoHistory: UndoHistoryBase, logger: Logger, observer?: BindingsObserver, binder?: Partial>, acc?: A); private completeWhenWithKeysPredicates; with(isCode: boolean, ...keysOrCodes: ReadonlyArray): KeysBinder; on(widget: ReadonlyArray> | Widget, ...widgets: ReadonlyArray>): KeysBinder; onDynamic(node: Widget): KeysBinder; first(fn: (c: C, i: D, acc: A) => void): KeysBinder; when(fn: (() => boolean) | ((i: D, acc: Readonly) => boolean), mode?: WhenType): KeysBinder; ifHadEffects(fn: (c: C, i: D, acc: A) => void): KeysBinder; ifHadNoEffect(fn: (c: C, i: D, acc: A) => void): KeysBinder; ifCannotExecute(fn: (c: C, i: D, acc: A) => void): KeysBinder; end(fn: (c: C, i: D, acc: A) => void): KeysBinder; log(...level: ReadonlyArray): KeysBinder; stopImmediatePropagation(): KeysBinder; preventDefault(): KeysBinder; then(fn: ((c: C, i: D, acc: A) => void) | ((c: C) => void)): KeysBinder; continuousExecution(): KeysBinder; throttle(timeout: number): KeysBinder; cancel(fn: (i: D, acc: A) => void): KeysBinder; endOrCancel(fn: (i: D, acc: A) => void): KeysBinder; catch(fn: (ex: unknown) => void): KeysBinder; name(name: string): KeysBinder; configureRules(ruleName: RuleName, severity: Severity): KeysBinder; toProduce(fn: (i: D) => C2): KeysBinder; toProduceAnon(fn: () => void): KeysBinder; usingInteraction, A2, D2 extends object = InteractionDataType>(fn: () => I2): KeysBinder; protected duplicate(): KeysBinder; bind(): Binding; } declare class BindingImpl, A, D extends object = InteractionDataType> implements Binding { protected _name: string | undefined; protected _timeEnded: number; protected _timeCancelled: number; protected _activated: boolean; protected readonly _interaction: I; accumulator: A; readonly linterRules: ReadonlyMap; protected _cmd: C | undefined; readonly continuousCmdExecution: boolean; protected readonly cmdProducer: (i?: D) => C; protected readonly cmdsProduced: Subject; protected readonly accumulatorInit: A | undefined; protected undoHistory: UndoHistoryBase; protected logger: Logger; logBinding: boolean; logCmd: boolean; logUsage: boolean; constructor(continuousExecution: boolean, interaction: I, cmdProducer: (i?: D) => C, widgets: ReadonlyArray, undoHistory: UndoHistoryBase, logger: Logger, linterRules: ReadonlyMap, name?: string, accInit?: A); private reinitAccumulator; get name(): string; protected whenStart(): boolean; protected whenUpdate(): boolean; protected whenStop(): boolean; clearEvents(): void; protected createCommand(): C | undefined; isWhenDefined(): boolean; catch(_err: unknown): void; first(): void; then(): void; end(): void; cancel(): void; endOrCancel(): void; ifCmdHadNoEffect(): void; ifCmdHadEffects(): void; ifCannotExecuteCmd(): void; get interaction(): I; get command(): C | undefined; get activated(): boolean; set activated(activated: boolean); get running(): boolean; protected fsmError(err: unknown): void; protected fsmCancels(): void; private cancelContinousWithEffectsCmd; protected fsmStarts(): void; protected fsmUpdates(): void; private continuousExecutionOnFSMUpdate; protected fsmStops(): void; private executeCommandOnFSMStop; private createAndInitCommand; private afterCmdExecuted; uninstallBinding(): void; get produces(): Observable; get timesEnded(): number; get timesCancelled(): number; acceptVisitor(visitor: VisitorBinding): void; } declare class AnonBinding, A, D extends object = InteractionDataType> extends BindingImpl { private readonly firstFn; private readonly thenFn; private readonly whenFn; private readonly cancelFn; private readonly endOrCancelFn; private readonly hadEffectsFn; private readonly hadNoEffectFn; private readonly cannotExecFn; private readonly onEndFn; private readonly onErrFn; constructor(continuousExec: boolean, interaction: I, undoHistory: UndoHistoryBase, logger: Logger, cmdSupplierFn: (d: D | undefined) => C, widgets: ReadonlyArray, dynamicNodes: ReadonlyArray, loggers: ReadonlyArray, timeoutThrottle: number, stopPropagation: boolean, prevDefault: boolean, linterRules: ReadonlyMap, firstFn?: (c: C, i: D, acc: A) => void, thenFn?: (c: C, i: D, acc: A) => void, whenFn?: Array>, endFn?: (c: C, i: D, acc: A) => void, cancelFn?: (i: D, acc: A) => void, endOrCancelFn?: (i: D, acc: A) => void, hadEffectsFn?: (c: C, i: D, acc: A) => void, hadNoEffectFn?: (c: C, i: D, acc: A) => void, cannotExecFn?: (c: C, i: D, acc: A) => void, onErrFn?: (ex: unknown) => void, name?: string, accInit?: A); private configureLoggers; first(): void; then(): void; end(): void; cancel(): void; endOrCancel(): void; ifCmdHadNoEffect(): void; ifCmdHadEffects(): void; ifCannotExecuteCmd(): void; protected whenStart(): boolean; protected whenUpdate(): boolean; protected whenStop(): boolean; private whenChecker; private executeWhen; catch(err: unknown): void; isWhenDefined(): boolean; } declare class BindingsContext implements BindingsObserver { private readonly binds; private readonly disposables; private readonly cmds; readonly checker: Checker; constructor(); observeBinding(binding: Binding, unknown>): void; clearObservedBindings(): void; get bindings(): ReadonlyArray, unknown>>; get commands(): ReadonlyArray; getCmd(index: number): C | undefined; getCmdsProducedBy(binding: Binding, unknown>): ReadonlyArray; } declare abstract class CommandBase implements Command { protected status: CmdStatus; constructor(); flush(): void; protected createMemento(): void; execute(): Promise | boolean; protected abstract execution(): Promise | void; hadEffect(): boolean; done(): void; isDone(): boolean; cancel(): void; getStatus(): CmdStatus; canExecute(): boolean; } declare class Redo extends CommandBase { protected readonly history: UndoHistoryBase; constructor(undoHistory: UndoHistoryBase); canExecute(): boolean; protected execution(): void; } declare class Undo extends CommandBase { protected readonly history: UndoHistoryBase; constructor(undoHistory: UndoHistoryBase); canExecute(): boolean; protected execution(): void; } declare class BindingsImpl extends Bindings { protected observer: BindingsObserver | undefined; protected readonly undoHistoryData: H; readonly logger: Logger; constructor(history: H, logger?: Logger); setLinterRules(...rules: ReadonlyArray): void; get undoHistory(): H; nodeBinder(accInit?: A): BaseUpdateBinder; buttonBinder(accInit?: A): PartialButtonTypedBinder; checkboxBinder(accInit?: A): PartialInputTypedBinder; colorPickerBinder(accInit?: A): PartialInputTypedBinder; comboBoxBinder(accInit?: A): PartialSelectTypedBinder; spinnerBinder(accInit?: A): PartialSpinnerTypedBinder; dateBinder(accInit?: A): PartialInputTypedBinder; hyperlinkBinder(accInit?: A): PartialAnchorTypedBinder; textInputBinder(timeout?: number, accInit?: A): PartialTextInputTypedBinder; touchDnDBinder(cancellable: boolean, accInit?: A): PartialTouchSrcTgtTypedBinder; touchStartBinder(accInit?: A): PartialTouchTypedBinder; reciprocalTouchDnDBinder(handle: EltRef, spring: EltRef, accInit?: A): PartialTouchSrcTgtTypedBinder; reciprocalMouseOrTouchDnD(handle: EltRef, spring: EltRef, accInit?: A): PartialTouchMouseDnDTypedBinder; multiTouchBinder(nbTouches: number, accInit?: A): PartialMultiTouchTypedBinder; twoTouchBinder(accInit?: A): PartialTwoTouchTypedBinder; threeTouchBinder(accInit?: A): PartialThreeTouchTypedBinder; fourTouchBinder(accInit?: A): PartialFourTouchTypedBinder; tapsBinder(tapsCount: number, accInit?: A): PartialTapsTypedBinder; tapBinder(accInit?: A): PartialTapTypedBinder; longTouchBinder(duration: number, accInit?: A): PartialTouchTypedBinder; panBinder(cancellable: boolean, accInit?: A): PartialTouchSrcTgtTypedBinder; panVerticalBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; panHorizontalBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; panLeftBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; panRightBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; panTopBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; panBottomBinder(pxTolerance: number, cancellable: boolean, minLength?: number, minVelocity?: number, accInit?: A): PartialTouchSrcTgtTypedBinder; twoPanVerticalBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; twoPanHorizontalBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; twoPanLeftBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; twoPanRightBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; twoPanTopBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; twoPanBottomBinder(pxTolerance: number, minLength?: number, minVelocity?: number, accInit?: A): PartialTwoPanTypedBinder; rotateBinder(pxTolerance: number, accInit?: A): PartialRotateTypedBinder; scaleBinder(pxTolerance: number, accInit?: A): PartialScaleTypedBinder; clickBinder(accInit?: A): PartialPointTypedBinder; dbleClickBinder(accInit?: A): PartialUpdatePointTypedBinder; mouseUpBinder(accInit?: A): PartialPointTypedBinder; mouseDownBinder(accInit?: A): PartialPointTypedBinder; longMouseDownBinder(duration: number, accInit?: A): PartialUpdatePointTypedBinder; clicksBinder(nbClicks: number, accInit?: A): PartialPointsTypedBinder; mouseLeaveBinder(withBubbling: boolean, accInit?: A): PartialPointTypedBinder; mouseEnterBinder(withBubbling: boolean, accInit?: A): PartialPointTypedBinder; mouseMoveBinder(accInit?: A): PartialPointTypedBinder; wheelBinder(accInit?: A): PartialWheelTypedBinder; scrollBinder(accInit?: A): PartialScrollTypedBinder; dndBinder(cancellable: boolean, accInit?: A): PartialPointSrcTgtTypedBinder; reciprocalDndBinder(handle: EltRef, spring: EltRef, accInit?: A): PartialPointSrcTgtTypedBinder; dragLockBinder(accInit?: A): PartialPointSrcTgtTypedBinder; keyUpBinder(modifierAccepted: boolean, accInit?: A): PartialKeyTypedBinder; keyDownBinder(modifierAccepted: boolean, accInit?: A): PartialKeyTypedBinder; keysDownBinder(accInit?: A): PartialKeysTypedBinder; keysTypeBinder(accInit?: A): PartialKeysTypedBinder; keyTypeBinder(accInit?: A): PartialKeyTypedBinder; mouseDownOrTouchStartBinder(accInit?: A): PartialPointOrTouchTypedBinder; tapsOrClicksBinder(nbTap: number, accInit?: A): PartialPointsOrTapsTypedBinder; tapOrClickBinder(accInit?: A): PartialPointOrTouchTypedBinder; longpressOrTouchBinder(duration: number, accInit?: A): PartialPointOrTouchTypedBinder; combine>, A>(interactions: IX, accInit?: A): PartialThenBinder; undoRedoBinder(undo: Widget, redo: Widget, catchFn?: ((err: unknown) => void)): [ Binding>, unknown>, Binding>, unknown> ]; clear(): void; setBindingObserver(obs?: BindingsObserver): void; acceptVisitor(visitor: VisitorBinding): void; } declare class MustBeUndoableCmdError extends Error { constructor(cmdProducer: unknown); } declare class CheckerImpl implements Checker { private readonly linterRules; private readonly cacheIncluded; constructor(); setLinterRules(...rules: ReadonlyArray): void; checkRules(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; checkSameInteractions(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; checkSameData(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; checkIncluded(binding: Binding, unknown>, binds: ReadonlyArray, unknown>>): void; private checkRule; private isIncluded; private getSameDataSeverity; private getSameInteractionSeverity; private getIncludedSeverity; private isWidgetSetsIntersecting; private printLinterMsg; private fillCacheIncluded; } declare class AnonCmd extends CommandBase { private readonly exec; constructor(fct: () => void); canExecute(): boolean; protected execution(): void; } declare abstract class UndoableCommand extends CommandBase implements Undoable { getUndoName(): string; getVisualSnapshot(): UndoableSnapshot; equals(undoable: Undoable): boolean; abstract redo(): void; abstract undo(): void; } declare class FocusHTMLElement extends CommandBase { private readonly element; constructor(elt: unknown); protected execution(): void; canExecute(): boolean; } declare class RedoNTimes extends CommandBase { protected readonly history: UndoHistory; protected readonly numberOfRedos: number; constructor(undoHistory: UndoHistory, numberOfRedos: number); canExecute(): boolean; protected execution(): void; } declare class SetProperty extends UndoableCommand { protected readonly obj: T; protected readonly prop: S; newvalue: T[S]; protected mementoValue: T[S] | undefined; constructor(obj: T, prop: S, newvalue: T[S]); protected createMemento(): void; protected execution(): void; redo(): void; undo(): void; getUndoName(): string; } declare class SetProperties extends UndoableCommand { readonly obj: T; protected _newvalues: Partial; readonly compositeCmds: Array>; constructor(obj: T, newvalues: Partial); get newvalues(): Partial; set newvalues(value: Partial); execute(): Promise | boolean; protected execution(): void; redo(): void; undo(): void; } declare class TransferArrayItem extends UndoableCommand { protected _srcArray: Array; protected _tgtArray: Array; protected _srcIndex: number; protected _tgtIndex: number; protected readonly cmdName: string; constructor(srcArray: Array, tgtArray: Array, srcIndex: number, tgtIndex: number, cmdName: string); protected execution(): void; canExecute(): boolean; getUndoName(): string; redo(): void; undo(): void; get srcArray(): Array; set srcArray(value: Array); get tgtArray(): Array; set tgtArray(value: Array); get srcIndex(): number; set srcIndex(value: number); get tgtIndex(): number; set tgtIndex(value: number); } declare class UndoNTimes extends CommandBase { protected readonly history: UndoHistory; protected readonly numberOfUndos: number; constructor(undoHistory: UndoHistory, numberOfUndos: number); canExecute(): boolean; protected execution(): void; } declare abstract class TransitionBase implements Transition { readonly src: OutputState; readonly tgt: InputState; readonly action: (evt: E) => void; readonly guard: (evt: E) => boolean; constructor(srcState: OutputState, tgtState: InputState, action?: (evt: E) => void, guard?: (evt: E) => boolean); execute(event: Event): InputState | undefined; abstract accept(event: Event): event is E; acceptVisitor(visitor: VisitorFSM): void; abstract getAcceptedEvents(): ReadonlySet; get target(): InputState; uninstall(): void; } declare class BoxCheckPressedTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is InputEvent; getAcceptedEvents(): ReadonlySet; } declare class ButtonPressedTransition extends TransitionBase { private static readonly acceptedEvents; accept(evt: Event): evt is InputEvent; getAcceptedEvents(): ReadonlySet; } declare class CancelFSMError extends Error { constructor(); } declare abstract class StateBase implements State { readonly fsm: FSM; readonly name: string; constructor(stateMachine: FSM, stateName: string); checkStartingState(): void; uninstall(): void; abstract acceptVisitor(visitor: VisitorFSM): void; } declare class CancellingState extends StateBase implements InputState { enter(): void; uninstall(): void; acceptVisitor(visitor: VisitorFSM): void; } declare class MouseTransition extends TransitionBase { private readonly acceptedEvents; constructor(srcState: OutputState, tgtState: InputState, types: MouseEventType | ReadonlyArray, action?: (evt: MouseEvent) => void, guard?: (evt: MouseEvent) => boolean); accept(event: Event): event is MouseEvent; getAcceptedEvents(): ReadonlySet; } declare class ClickTransition extends MouseTransition { constructor(srcState: OutputState, tgtState: InputState, action?: (evt: MouseEvent) => void, guard?: (evt: MouseEvent) => boolean); } declare class ColorPickedTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is Event; getAcceptedEvents(): ReadonlySet; } declare class ComboBoxTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is Event; getAcceptedEvents(): ReadonlySet; } declare abstract class OutputStateBase extends StateBase implements OutputState { protected readonly _transitions: Array>; constructor(stateMachine: FSM, stateName: string); process(event: Event): boolean; clearTransitions(): void; get transitions(): ReadonlyArray>; addTransition(tr: Transition): void; abstract exit(): void; uninstall(): void; } declare class InitState extends OutputStateBase { exit(): void; acceptVisitor(visitor: VisitorFSM): void; } declare class StdState extends OutputStateBase implements InputState { enter(): void; exit(): void; acceptVisitor(visitor: VisitorFSM): void; } declare class TerminalState extends StateBase implements InputState { enter(): void; acceptVisitor(visitor: VisitorFSM): void; } declare class TimeoutTransition extends TransitionBase { private readonly timeoutDuration; private readonly logger; private timeoutThread; private timeouted; constructor(srcState: OutputState, tgtState: InputState, timeout: () => number, logger?: Logger, action?: (evt: Event) => void); startTimeout(): void; stopTimeout(): void; accept(_event?: Event): _event is Event; execute(event?: Event): InputState | undefined; getAcceptedEvents(): ReadonlySet; acceptVisitor(visitor: VisitorFSM): void; } declare class FSMImpl implements FSM { protected readonly logger: Logger; _log: boolean; inner: boolean; startingState: State; protected _started: boolean; readonly initState: InitState; protected _currentState: OutputState; protected readonly currentStatePublisher: Subject<[OutputState, OutputState]>; protected readonly _states: Array; protected readonly handlers: Array; protected readonly eventsToProcess: Array; protected currentTimeout: TimeoutTransition | undefined; currentSubFSM: FSM | undefined; constructor(logger: Logger); get currentState(): OutputState; set currentState(state: OutputState); get currentStateObservable(): Observable<[OutputState, OutputState]>; process(event: Event): boolean; private processEvent; acceptVisitor(visitor: VisitorFSM): void; get log(): boolean; set log(log: boolean); private removeKeyEvent; enterStdState(state: InputState & OutputState): void; get started(): boolean; protected processRemainingEvents(): void; addRemaningEventsToProcess(event: Event): void; onError(err: unknown): void; onTerminating(): void; onCancelling(): void; onStarting(): void; onUpdating(): void; addStdState(name: string, startingState?: boolean): StdState; addTerminalState(name: string, startingState?: boolean): TerminalState; addCancellingState(name: string): CancellingState; private addState; reinit(): void; fullReinit(): void; onTimeout(): void; stopCurrentTimeout(): void; protected checkTimeoutTransition(): void; addHandler(handler: FSMHandler): void; removeHandler(handler: FSMHandler): void; protected notifyHandlerOnStart(): void; protected notifyHandlerOnUpdate(): void; notifyHandlerOnStop(): void; protected notifyHandlerOnCancel(): void; protected notifyHandlerOnError(err: unknown): void; get states(): ReadonlyArray; getEventsToProcess(): ReadonlyArray; uninstall(): void; } declare class ConcurrentAndFSM extends FSMImpl implements ConcurrentFSM { private readonly _conccurFSMs; private readonly _secondaryFSMs; private readonly totalReinit; constructor(fsms: ReadonlyArray, logger: Logger, secondaries?: ReadonlyArray, totalReinit?: boolean); getAllConccurFSMs(): ReadonlyArray; get conccurFSMs(): ReadonlyArray; get secondaryFSMs(): ReadonlyArray; process(event: Event): boolean; acceptVisitor(visitor: VisitorFSM): void; get started(): boolean; set log(log: boolean); uninstall(): void; fullReinit(): void; } declare class ConcurrentXOrFSM extends FSMImpl implements ConcurrentFSM { private readonly _conccurFSMs; constructor(fsms: ReadonlyArray, logger: Logger); process(event: Event): boolean; getAllConccurFSMs(): ReadonlyArray; get started(): boolean; set log(log: boolean); uninstall(): void; fullReinit(): void; reinit(): void; acceptVisitor(visitor: VisitorFSM): void; } declare class DatePickedTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is Event; getAcceptedEvents(): ReadonlySet; } declare class KeyTransition extends TransitionBase { private readonly acceptedEvents; constructor(srcState: OutputState, tgtState: InputState, keyType: KeyEventType, action?: (evt: KeyboardEvent) => void, guard?: (evt: KeyboardEvent) => boolean); accept(event: Event): event is KeyboardEvent; getAcceptedEvents(): ReadonlySet; } declare class EscapeKeyPressureTransition extends KeyTransition { constructor(srcState: OutputState, tgtState: InputState, action?: (evt: KeyboardEvent) => void); } declare function getTouch(touches: TouchList, idToFind?: number): Touch | undefined; declare function isButton(target: EventTarget): target is HTMLButtonElement; declare function isCheckBox(target: EventTarget): target is HTMLInputElement; declare function isColorChoice(target: EventTarget): target is HTMLInputElement; declare function isComboBox(target: EventTarget): target is HTMLSelectElement; declare function isDatePicker(target: EventTarget): target is HTMLInputElement; declare function isSpinner(target: EventTarget): target is HTMLInputElement; declare function isHyperLink(target: EventTarget): target is HTMLAnchorElement; declare function isTextInput(target: EventTarget): target is HTMLInputElement | HTMLTextAreaElement; declare function isKeyDownEvent(event: Event): event is KeyboardEvent; declare function isKeyUpEvent(event: Event): event is KeyboardEvent; declare enum KeyCode { escape = 27 } declare class HyperLinkTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is Event; getAcceptedEvents(): ReadonlySet; } declare class NotFSM extends ConcurrentAndFSM { private readonly mainFSM; constructor(mainFSM: FSM, negFSM: FSM, logger: Logger); } declare class ScrollTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is Event; getAcceptedEvents(): ReadonlySet; } declare class SpinnerChangedTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is Event; getAcceptedEvents(): ReadonlySet; } declare class SubFSMTransition extends TransitionBase { private readonly subFSM; private readonly subFSMHandler; private subStateSubscription?; constructor(srcState: OutputState, tgtState: InputState, fsm: FSM, action?: (evt: Event) => void); private setUpFSMHandler; private unsetFSMHandler; private cancelsFSM; execute(event: Event): InputState | undefined; accept(event: Event): event is Event; private findTransition; getAcceptedEvents(): ReadonlySet; uninstall(): void; } declare class TextInputChangedTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is Event; getAcceptedEvents(): ReadonlySet; } declare class ThenFSM extends FSMImpl { constructor(fsms: Array, logger: Logger); } declare class TouchTransition extends TransitionBase { private readonly acceptedEvents; constructor(srcState: OutputState, tgtState: InputState, eventType: TouchEventType, action?: (evt: TouchEvent) => void, guard?: (evt: TouchEvent) => boolean); accept(evt: Event): evt is TouchEvent; getAcceptedEvents(): ReadonlySet; } declare class VisitorFSMDepthFirst implements VisitorFSM { private readonly visited; constructor(); visitAndConcurrentFSM(fsm: ConcurrentFSM): void; visitXOrConcurrentFSM(fsm: ConcurrentFSM): void; visitInitState(state: OutputState & State): void; visitState(state: OutputState & State): void; visitCancellingState(_state: InputState & State): void; visitTerminalState(_state: InputState & State): void; visitFSM(fsm: FSM): void; visitTransition(transition: Transition): void; visitTimeoutTransition(transition: Transition): void; clear(): void; protected alreadyVisited(state: State): boolean; } declare class WheelTransition extends TransitionBase { private static readonly acceptedEvents; accept(event: Event): event is WheelEvent; getAcceptedEvents(): ReadonlySet; } interface Flushable { flush(): void; } interface CancellablePromise extends Promise { cancel: () => void; } declare abstract class InteractionBase implements Interaction { protected readonly _registeredNodes: Set; protected readonly _dynamicRegisteredNodes: Set; protected readonly _fsm: F; protected readonly _name: string; protected _log: boolean; protected readonly mutationObservers: Array; protected readonly _data: DImpl; protected readonly logger: Logger; private mouseHandler?; private touchHandler?; private keyHandler?; private uiHandler?; private actionHandler?; private readonly disposable; private stopImmediatePropag; private preventDef; protected activated: boolean; protected throttleTimeout: number; protected currentThrottling: CancellablePromise | undefined; protected latestThrottledEvent: Event | undefined; protected constructor(fsm: F, data: DImpl, logger: Logger, name: string, reinitDataOnFSMReinit?: boolean); reinitData(): void; get data(): D; get name(): string; setThrottleTimeout(timeout: number): void; private createThrottleTimeout; private checkThrottlingEvent; protected updateEventsRegistered(newState: OutputState, oldState: OutputState): void; protected getCurrentAcceptedEvents(state: OutputState): ReadonlyArray; private callBackMutationObserver; protected getEventTypesOf(state: OutputState): ReadonlySet; registerToNodes(widgets: ReadonlyArray): void; protected unregisterFromNodes(widgets: ReadonlyArray): void; onNodeUnregistered(node: unknown): void; onNewNodeRegistered(node: unknown): void; registerToNodeChildren(elementToObserve: Node): void; protected registerEventToNode(eventType: EventType, node: unknown): void; protected unregisterEventToNode(eventType: EventType, node: unknown): void; protected registerActionHandlerClick(node: EventTarget): void; protected unregisterActionHandlerClick(node: EventTarget): void; protected registerActionHandlerInput(node: EventTarget): void; protected unregisterActionHandlerInput(node: EventTarget): void; protected getActionHandler(): EventListener; protected getMouseHandler(): EventListener; protected getTouchHandler(): EventListener; protected getKeyHandler(): EventListener; protected getUIHandler(): EventListener; isRunning(): boolean; fullReinit(): void; set stopImmediatePropagation(stop: boolean); get stopImmediatePropagation(): boolean; set preventDefault(prevent: boolean); get preventDefault(): boolean; processEvent(event: Event): void; private directEventProcess; log(log: boolean): void; isActivated(): boolean; setActivated(activated: boolean): void; get fsm(): F; reinit(): void; uninstall(): void; acceptVisitor(visitor: VisitorInteraction): void; get registeredNodes(): ReadonlySet; get dynamicRegisteredNodes(): ReadonlySet; } type InteractionDataImplType = T extends InteractionBase ? DImpl : never; declare abstract class ConcurrentInteraction = ConcurrentFSM> extends InteractionBase { private readonly subscriptions; protected constructor(fsm: F, data: DImpl, logger: Logger, name: string, reinitDataOnFSMReinit?: boolean); isRunning(): boolean; onNodeUnregistered(node: EventTarget): void; onNewNodeRegistered(node: EventTarget): void; getCurrentAcceptedEvents(_state?: OutputState): ReadonlyArray; uninstall(): void; } declare abstract class SrcTgtDataBase implements SrcTgtPointsData { protected readonly srcData: S; protected readonly tgtData: S; protected constructor(src: S, tgt: S); get src(): T; get tgt(): T; get diffClientX(): number; get diffClientY(): number; get diffPageX(): number; get diffPageY(): number; get diffScreenX(): number; get diffScreenY(): number; get duration(): number; velocity(direction: "all" | "horiz" | "vert"): number; isHorizontal(pxTolerance: number): boolean; isVertical(pxTolerance: number): boolean; isLeft(pxTolerance: number): boolean; isRight(pxTolerance: number): boolean; isTop(pxTolerance: number): boolean; isBottom(pxTolerance: number): boolean; flush(): void; } declare abstract class InteractionDataBase implements UnitInteractionData, Flushable { protected currentTargetData: EventTarget | null; protected targetData: EventTarget | null; protected timeStampData: number; copy(data: UnitInteractionData): void; flush(): void; get currentTarget(): EventTarget | null; get target(): EventTarget | null; get timeStamp(): number; } declare abstract class PointingDataBase extends InteractionDataBase implements PointBaseData { protected clientXData: number; protected clientYData: number; protected pageXData: number; protected pageYData: number; protected screenXData: number; protected screenYData: number; protected altKeyData: boolean; protected ctrlKeyData: boolean; protected metaKeyData: boolean; protected shiftKeyData: boolean; flush(): void; copy(data: PointBaseData): void; get clientX(): number; get clientY(): number; get pageX(): number; get pageY(): number; get screenX(): number; get screenY(): number; get altKey(): boolean; get ctrlKey(): boolean; get metaKey(): boolean; get shiftKey(): boolean; } declare class TouchDataImpl extends PointingDataBase implements TouchData { private _allTouches; private forceData; private identifierData; private radiusXData; private radiusYData; private rotationAngleData; get allTouches(): ReadonlyArray; get force(): number; get identifier(): number; get radiusX(): number; get radiusY(): number; get rotationAngle(): number; copy(data: TouchData): void; flush(): void; static mergeTouchEventData(touch: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): TouchData; toPointData(): PointData; } declare class SrcTgtTouchDataImpl extends SrcTgtDataBase { constructor(); copySrc(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; copyTgt(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; } declare abstract class MultiTouchDataBase implements MultiTouchData { abstract readonly touches: ReadonlyArray>; velocity(direction: "all" | "horiz" | "vert"): number; } declare class MultiTouchDataImpl extends MultiTouchDataBase implements Flushable { protected readonly touchesData: Map; constructor(); get touches(): ReadonlyArray>; addTouchData(data: SrcTgtTouchDataImpl): void; removeTouchData(id: number): void; flush(): void; setTouch(tp: Touch, evt: TouchEvent): void; isHorizontal(pxTolerance: number): boolean; isVertical(pxTolerance: number): boolean; } declare abstract class TwoTouchDataImpl extends MultiTouchDataBase implements TwoTouchData { protected readonly t1: SrcTgtTouchDataImpl; protected readonly t2: SrcTgtTouchDataImpl; constructor(); get touch1(): SrcTgtPointsData; get touch2(): SrcTgtPointsData; get touches(): ReadonlyArray>; flush(): void; initTouch(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; copyTouch(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; get diffClientX(): number; get diffClientY(): number; get diffPageX(): number; get diffPageY(): number; get diffScreenX(): number; get diffScreenY(): number; } declare class GeneralTwoTouchDataImpl extends TwoTouchDataImpl implements GeneralTwoTouchData { private readonly rotateData; private readonly panData; private readonly scaleData; constructor(); isVertical(pxTolerance: number): boolean; isHorizontal(pxTolerance: number): boolean; isLeft(pxTolerance: number): boolean; isRight(pxTolerance: number): boolean; isTop(pxTolerance: number): boolean; isBottom(pxTolerance: number): boolean; get rotationAngle(): number; scalingRatio(pxTolerance: number): number; } declare class ThreeTouchDataImpl extends GeneralTwoTouchDataImpl implements ThreeTouchData { protected readonly t3: SrcTgtTouchDataImpl; constructor(); get touch3(): SrcTgtPointsData; get touches(): ReadonlyArray>; flush(): void; initTouch(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; copyTouch(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; isLeft(pxTolerance: number): boolean; isRight(pxTolerance: number): boolean; isTop(pxTolerance: number): boolean; isBottom(pxTolerance: number): boolean; } declare class FourTouchDataImpl extends ThreeTouchDataImpl implements FourTouchData { private readonly t4; constructor(); get touch4(): SrcTgtPointsData; get touches(): ReadonlyArray>; initTouch(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; copyTouch(data: Touch, evt: EventModifierData & UnitInteractionData, allTouches: Array): void; flush(): void; isLeft(pxTolerance: number): boolean; isRight(pxTolerance: number): boolean; isTop(pxTolerance: number): boolean; isBottom(pxTolerance: number): boolean; } declare class InteractionBuilderImpl, D extends object = InteractionDataType> implements InteractionBuilder { private readonly iCtor; private startPredicate; private thenPredicate; private endPredicate; private interactionName; constructor(interactionSupplier: (name?: string) => I); first(predicate: (i: D) => boolean): this; then(predicate: (i: D) => boolean): this; firstAndThen(predicate: (i: D) => boolean): this; end(predicate: (i: D) => boolean): this; name(name: string): this; build(): () => I; private process; } declare class KeyDataImpl extends InteractionDataBase implements KeyData, Flushable { private codeData; private keyData; private locationData; private repeatData; private altKeyData; private ctrlKeyData; private metaKeyData; private shiftKeyData; flush(): void; copy(data: KeyData): void; get altKey(): boolean; get code(): string; get ctrlKey(): boolean; get key(): string; get location(): number; get metaKey(): boolean; get repeat(): boolean; get shiftKey(): boolean; } declare class KeysDataImpl implements KeysData, Flushable { private readonly keysData; flush(): void; get keys(): ReadonlyArray; addKey(key: KeyData): void; } declare abstract class PointsDataImpl implements PointsData { protected readonly pointsData: Array; constructor(); get points(): ReadonlyArray; addPoint(ptData: D): void; flush(): void; } declare class MousePointsDataImpl extends PointsDataImpl { private currentPositionData; get currentPosition(): PointData | undefined; set currentPosition(position: PointData | undefined); get lastButton(): number | undefined; flush(): void; } declare class Not, N extends Interaction, DI = InteractionDataType, DImpl = InteractionDataImplType> extends ConcurrentInteraction { private readonly mainInteraction; private readonly negInteraction; constructor(i1: I, not: N, logger: Logger, name: string); uninstall(): void; reinit(): void; fullReinit(): void; reinitData(): void; } declare class Or, I2 extends InteractionBase, D1 extends object = InteractionDataType, D2 extends object = InteractionDataType, D1Impl extends D1 & Flushable = InteractionDataImplType, D2Impl extends D2 & Flushable = InteractionDataImplType> extends ConcurrentInteraction> { private readonly i1; private readonly i2; constructor(i1: I1, i2: I2, logger: Logger); get data(): D1 | D2; uninstall(): void; reinit(): void; fullReinit(): void; reinitData(): void; } declare class PointDataImpl extends PointingDataBase implements PointData { protected buttonData: number; protected buttonsData: number; protected movementXData: number; protected movementYData: number; protected offsetXData: number; protected offsetYData: number; protected relatedTargetData: EventTarget | null; flush(): void; copy(data: PointData): void; get button(): number; get buttons(): number; get movementX(): number; get movementY(): number; get offsetX(): number; get offsetY(): number; get relatedTarget(): EventTarget | null; } declare class RotationTouchDataImpl extends TwoTouchDataImpl implements RotationTouchData { get rotationAngle(): number; private computeAngle; } declare class ScaleTouchDataImpl extends TwoTouchDataImpl implements ScaleTouchData { scalingRatio(pxTolerance: number): number; static project(vector1: [number, number], vector2: [number, number]): number; static distance(point1: [number, number], point2: [number, number]): number; } declare class ScrollDataImpl extends InteractionDataBase implements ScrollData, Flushable { protected scrollXData: number; protected scrollYData: number; flush(): void; get scrollX(): number; get scrollY(): number; setScrollData(event: Event): void; } declare class SrcTgtPointsDataImpl extends SrcTgtDataBase { constructor(); copySrc(data: PointData): void; copyTgt(data: PointData): void; get src(): PointDataImpl; get tgt(): PointDataImpl; } declare class TapsDataImpl extends PointsDataImpl { get lastId(): number | undefined; } declare class ThenDataImpl> implements ThenData, Flushable { readonly dx: DX; constructor(dx: DX); flush(): void; } declare class Then>, DX extends Array = InteractionsDataTypes> extends InteractionBase, ThenDataImpl & DX>> { private readonly ix; constructor(ix: IX, logger: Logger); uninstall(): void; reinit(): void; fullReinit(): void; reinitData(): void; } declare class TwoPanDataImpl extends TwoTouchDataImpl implements LineTouchData { isVertical(pxTolerance: number): boolean; isHorizontal(pxTolerance: number): boolean; isLeft(pxTolerance: number): boolean; isRight(pxTolerance: number): boolean; isTop(pxTolerance: number): boolean; isBottom(pxTolerance: number): boolean; } declare class WheelDataImpl extends PointDataImpl implements WheelData { private deltaModeData; private deltaXData; private deltaYData; private deltaZData; flush(): void; copy(data: WheelData): void; get deltaMode(): number; get deltaX(): number; get deltaY(): number; get deltaZ(): number; } declare class WidgetDataImpl extends InteractionDataBase implements WidgetData, Flushable { get widget(): T | undefined; } declare class BoxChecked extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class ButtonPressed extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class ClickFSM extends FSMImpl { private checkButton; constructor(logger: Logger, action?: (evt: MouseEvent) => void); getCheckButton(): number; setCheckButton(buttonToCheck: number): void; reinit(): void; } declare class Click extends InteractionBase { constructor(logger: Logger, fsm?: ClickFSM, data?: PointDataImpl, name?: string); } declare class ClicksFSM extends FSMImpl { private countClicks; private readonly nbClicks; constructor(nbClicks: number, logger: Logger, action: (evt: MouseEvent) => void); reinit(): void; } declare class Clicks extends InteractionBase { constructor(numberClicks: number, logger: Logger, name?: string); } declare class ColorPicked extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class ComboBoxSelected extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class DatePicked extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class DnD extends InteractionBase, SrcTgtPointsDataImpl> { constructor(cancellable: boolean, logger: Logger, name?: string); } declare class DoubleClickFSM extends FSMImpl { private static timeGap; private static readonly timeGapSupplier; static getTimeGap(): number; static setTimeGap(timeGapBetweenClicks: number): void; readonly firstClickFSM: ClickFSM; private readonly sndClickFSM; private checkButton; constructor(logger: Logger, subAction?: (evt: MouseEvent) => void); set log(log: boolean); setCheckButton(buttonToCheck: number): void; getCheckButton(): number; fullReinit(): void; reinit(): void; } declare class DoubleClick extends InteractionBase { constructor(logger: Logger, fsm?: DoubleClickFSM, data?: PointDataImpl, name?: string); } declare class DragLock extends InteractionBase, SrcTgtPointsDataImpl> { constructor(logger: Logger, name?: string); } declare class HyperLinkClicked extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class KeyDownFSM extends FSMImpl { private readonly modifiersAccepted; constructor(modifierAccepted: boolean, logger: Logger, action: (evt: KeyboardEvent) => void, key?: string); } declare class KeyDown extends InteractionBase { constructor(logger: Logger, modifierAccepted: boolean, key?: string, fsm?: KeyDownFSM, name?: string); } declare class KeyTypedFSM extends FSMImpl { private checkKey; constructor(logger: Logger, action: (event: KeyboardEvent) => void, key?: string); reinit(): void; } declare class KeyTyped extends InteractionBase { constructor(logger: Logger, key?: string, name?: string); } declare class KeyUpFSM extends FSMImpl { private readonly modifiersAccepted; constructor(modifierAccepted: boolean, logger: Logger, action: (evt: KeyboardEvent) => void); } declare class KeyUp extends InteractionBase { constructor(logger: Logger, modifierAccepted: boolean, fsm?: KeyUpFSM, name?: string); } declare class KeysDownFSM extends FSMImpl { private readonly currentCodes; constructor(logger: Logger, action: (evt: KeyboardEvent) => void); reinit(): void; } declare class KeysDown extends InteractionBase { constructor(logger: Logger, name?: string); } declare class KeysTypedFSM extends FSMImpl { private static readonly timeGap; private static readonly timeGapSupplier; private static getTimeGap; constructor(logger: Logger, action: (event: KeyboardEvent) => void); } declare class KeysTyped extends InteractionBase { constructor(logger: Logger, name?: string); } declare class LongMouseDownFSM extends FSMImpl { private readonly duration; private currentButton; constructor(duration: number, logger: Logger, action: (evt: MouseEvent) => void); reinit(): void; } declare class LongMouseDown extends InteractionBase { constructor(duration: number, logger: Logger, name?: string); } declare class LongTouch extends InteractionBase { constructor(duration: number, logger: Logger, name?: string); } declare class MouseDown extends InteractionBase { constructor(logger: Logger, name?: string); } declare class MouseEnterFSM extends FSMImpl { private readonly withBubbling; constructor(withBubbling: boolean, logger: Logger, action: (event: MouseEvent) => void); } declare class MouseEnter extends InteractionBase { constructor(withBubbling: boolean, logger: Logger, name?: string); } declare class MouseLeaveFSM extends FSMImpl { private readonly withBubbling; constructor(withBubbling: boolean, logger: Logger, action: (event: MouseEvent) => void); } declare class MouseLeave extends InteractionBase { constructor(withBubbling: boolean, logger: Logger, name?: string); } declare class MouseMoveFSM extends FSMImpl { constructor(logger: Logger, action: (event: MouseEvent) => void); } declare class MouseMove extends InteractionBase { constructor(logger: Logger, name?: string); } declare class MouseUpFSM extends FSMImpl { constructor(logger: Logger, action: (event: MouseEvent) => void); } declare class MouseUp extends InteractionBase { constructor(logger: Logger, name?: string); } interface TouchDnDFSMHandler { onTouch(event: TouchEvent): void; onMove(event: TouchEvent): void; onRelease(event: TouchEvent): void; } declare class TouchDnDFSM extends FSMImpl { protected touchID: number | undefined; protected readonly cancellable: boolean; protected readonly movementRequired: boolean; protected readonly cancelled: CancellingState; protected readonly moved: StdState; protected readonly touched: StdState; constructor(cancellable: boolean, logger: Logger, dataHandler: TouchDnDFSMHandler, movementRequired?: boolean); protected buildFSM(dataHandler: TouchDnDFSMHandler): void; getTouchId(): number | undefined; reinit(): void; } declare class OneTouchDnDFSM extends TouchDnDFSM { constructor(cancellable: boolean, logger: Logger, dataHandler: TouchDnDFSMHandler); protected buildFSM(dataHandler: TouchDnDFSMHandler): void; } declare class TouchDnD extends InteractionBase, SrcTgtTouchDataImpl> { constructor(logger: Logger, cancellable: boolean, fsm?: OneTouchDnDFSM, name?: string); private setTgtData; } declare class MultiTouchFSM extends ConcurrentAndFSM { constructor(nbTouch: number, totalReinit: boolean, logger: Logger, dataHandler: TouchDnDFSMHandler, movementRequired?: boolean); process(event: Event): boolean; } declare class MultiTouch extends ConcurrentInteraction { constructor(nbTouches: number, strict: boolean, logger: Logger, name?: string); } declare function hPan(logger: Logger, cancellable: boolean, pxTolerance: number, minLength?: number, minVelocity?: number): () => TouchDnD; declare function vPan(logger: Logger, cancellable: boolean, pxTolerance: number, minLength?: number, minVelocity?: number): () => TouchDnD; declare function leftPan(logger: Logger, cancellable: boolean, pxTolerance: number, minLength?: number, minVelocity?: number): () => TouchDnD; declare function rightPan(logger: Logger, cancellable: boolean, pxTolerance: number, minLength?: number, minVelocity?: number): () => TouchDnD; declare function topPan(logger: Logger, cancellable: boolean, pxTolerance: number, minLength?: number, minVelocity?: number): () => TouchDnD; declare function bottomPan(logger: Logger, cancellable: boolean, pxTolerance: number, minLength?: number, minVelocity?: number): () => TouchDnD; declare class ScrollFSM extends FSMImpl { constructor(logger: Logger, action: (evt: Event) => void); } declare class Scroll extends InteractionBase { constructor(logger: Logger, name?: string); } declare class SpinnerChangedFSM extends FSMImpl { private static timeGap; private static readonly timeGapSupplier; static getTimeGap(): number; static setTimeGap(timeGapBetweenClicks: number): void; constructor(logger: Logger, action: (evt: Event) => void); } declare class SpinnerChanged extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class TapFSM extends FSMImpl { protected readonly downState: StdState; protected readonly cancelState: CancellingState; private touchID?; constructor(logger: Logger, handler: (event: TouchEvent) => void); } declare class Tap extends InteractionBase { constructor(logger: Logger, name?: string); } declare class TapsFSM extends FSMImpl { private countTaps; private readonly nbTaps; private touchID?; protected readonly downState: StdState; protected readonly cancelState: CancellingState; constructor(nbTaps: number, logger: Logger, handler: (event: TouchEvent) => void); reinit(): void; } declare class Taps extends InteractionBase, TapsDataImpl> { constructor(numberTaps: number, logger: Logger, name?: string); } declare class TextInputChanged extends InteractionBase, WidgetDataImpl> { constructor(logger: Logger, timeGap?: number, name?: string); onNewNodeRegistered(node: EventTarget): void; onNodeUnregistered(node: EventTarget): void; } declare class TimedClickFSM extends FSMImpl { private currentButton; private readonly buttonToConsider; constructor(duration: number, logger: Logger, button?: number, action?: (evt: MouseEvent) => void); private setButtonToCheck; reinit(): void; } declare class TimedClick extends InteractionBase { constructor(duration: number, logger: Logger, button?: number, fsm?: TimedClickFSM, data?: PointDataImpl, name?: string); } declare class TimedTaps extends InteractionBase, TapsDataImpl> { constructor(duration: number, numberTaps: number, logger: Logger, name?: string); } declare class TouchStart extends InteractionBase { constructor(logger: Logger, name?: string); } declare class XTouchDnD extends ConcurrentInteraction { constructor(nbTouches: number, logger: Logger, dataImpl: S, name?: string, fsm?: MultiTouchFSM, movementRequired?: boolean); protected setTgtData(evt: TouchEvent): void; } type TwoTouch = XTouchDnD; declare function twoTouch(logger: Logger): () => TwoTouch; declare class ThreeTouchDnD extends XTouchDnD { constructor(logger: Logger, name?: string, movementRequired?: boolean); } declare class FourTouchDnD extends XTouchDnD { constructor(logger: Logger, name?: string, movementRequired?: boolean); } type TwoPan = XTouchDnD; declare function twoHPan(logger: Logger, pxTolerance: number, minLength?: number, minVelocity?: number): () => TwoPan; declare function twoVPan(logger: Logger, pxTolerance: number, minLength?: number, minVelocity?: number): () => TwoPan; declare function twoLeftPan(logger: Logger, pxTolerance: number, minLength?: number, minVelocity?: number): () => TwoPan; declare function twoRightPan(logger: Logger, pxTolerance: number, minLength?: number, minVelocity?: number): () => TwoPan; declare function twoTopPan(logger: Logger, pxTolerance: number, minLength?: number, minVelocity?: number): () => TwoPan; declare function twoBottomPan(logger: Logger, pxTolerance: number, minLength?: number, minVelocity?: number): () => TwoPan; type Rotate = XTouchDnD; type Scale = XTouchDnD; declare function rotate(logger: Logger, pxTolerance: number): () => Rotate; declare function scale(logger: Logger, pxTolerance: number): () => Scale; declare class Wheel extends InteractionBase { constructor(logger: Logger, data?: WheelDataImpl, name?: string); } declare class FittsLawDataImpl { readonly t: number; readonly w: number; readonly h: number; readonly d: number; constructor(t: number, w: number, h: number, d: number); getID(we?: number): number; } declare class FittsLaw { private readonly obsSrc; private readonly providedTarget; private readonly data; private _startX; private _startY; private _target; private readonly handler; constructor(bSrc: Binding, unknown>, bTgt: Binding, unknown>, target?: Element); private computeD; get we(): number; getAB(effectiveTargetW?: boolean): [a: number, b: number, r: number]; uninstall(): void; private reinit; } declare class LoggingData { readonly name: string; readonly sessionID: string; readonly date: number; readonly msg: string; readonly level: LogLevel; readonly type: "ERR" | "INFO"; readonly stack: string | undefined; readonly frontVersion: string | undefined; constructor(date: number, msg: string, level: LogLevel, name: string, type: "ERR" | "INFO", sessionID: string, stack?: string, frontVersion?: string); toString(): string; } declare class UsageLog { name: string; readonly sessionID: string; readonly date: number; duration: number; cancelled: boolean; readonly frontVersion: string | undefined; constructor(name: string, sessionID: string, date: number, frontVersion?: string); toString(): string; } declare class LoggerImpl implements Logger { writeConsole: boolean; serverAddress: string | undefined; readonly sessionID: string; readonly frontVersion: string | undefined; ongoingBindings: Array; constructor(version?: string); private processLoggingData; private formatError; logBindingErr(msg: string, ex: unknown, bindingName?: string): void; logBindingMsg(msg: string, bindingName?: string): void; logCmdErr(msg: string, ex: unknown, cmdName?: string): void; logCmdMsg(msg: string, cmdName?: string): void; logInteractionErr(msg: string, ex: unknown, interactionName?: string): void; logInteractionMsg(msg: string, interactionName?: string): void; logBindingStart(bindingName: string): void; logBindingEnd(bindingName: string, cancelled: boolean): void; } declare class TreeUndoHistoryImpl extends TreeUndoHistory { private idCounter; private _currentNode; readonly undoableNodes: Array; private readonly undoPublisher; private readonly redoPublisher; private readonly sizePublisher; readonly root: UndoableTreeNode; readonly considersEqualCmds: boolean; private readonly _path; private readonly _keepPath; constructor(keepPath?: boolean, considerEqualCmd?: boolean); add(undoable: Undoable): void; get currentNode(): UndoableTreeNode; clear(): void; delete(id: number): void; goTo(id: number): void; private goToFromRoot; private gatherToRoot; private goFromOneNodeToAnotherOne; redo(): void; undo(): void; getPositions(): Map; private getPositionNode; getLastOrEmptyRedoMessage(): string; getLastOrEmptyUndoMessage(): string; getLastRedo(): Undoable | undefined; getLastRedoMessage(): string | undefined; getLastUndo(): Undoable | undefined; getLastUndoMessage(): string | undefined; undosObservable(): Observable; redosObservable(): Observable; get path(): ReadonlyArray; get keepPath(): boolean; private addToPath; export(fn: (undoable: Undoable) => unknown): TreeUndoHistoryDTO; import(dtoHistory: TreeUndoHistoryDTO, fn: (dtoUndoable: unknown) => Undoable): void; size(): number; private childrenNode; sizeObservable(): Observable; } declare class UndoHistoryImpl extends UndoHistory { private readonly undos; private readonly redos; readonly considersEqualCmds: boolean; private sizeMax; private readonly undoPublisher; private readonly redoPublisher; private readonly sizePublisher; constructor(considerEqualCmd?: boolean); undosObservable(): Observable; redosObservable(): Observable; clear(): void; private clearRedo; add(undoable: Undoable): void; undo(): void; redo(): void; getLastUndoMessage(): string | undefined; getLastRedoMessage(): string | undefined; getLastOrEmptyUndoMessage(): string; getLastOrEmptyRedoMessage(): string; getLastUndo(): Undoable | undefined; getLastRedo(): Undoable | undefined; getSizeMax(): number; setSizeMax(max: number): void; getUndo(): ReadonlyArray; getRedo(): ReadonlyArray; size(): [number, number]; sizeObservable(): Observable<[number, number]>; private publishSize; } declare function remove(array: Array, elt: T): void; declare function removeAt(array: Array, index: number): T | undefined; export { AnonBinding, AnonCmd, type BaseBinder, type BaseBinderBuilder, type BaseUpdateBinder, type BaseUpdateBinderBuilder, Binder, type Binding, BindingImpl, Bindings, BindingsContext, BindingsImpl, type BindingsObserver, BoxCheckPressedTransition, BoxChecked, ButtonPressed, ButtonPressedTransition, CancelFSMError, type CancellablePromise, CancellingState, type Checker, CheckerImpl, Click, ClickFSM, ClickTransition, Clicks, ClicksFSM, type CmdBinder, type CmdBinderBuilder, type CmdStatus, type CmdUpdateBinder, type CmdUpdateBinderBuilder, ColorPicked, ColorPickedTransition, ComboBoxSelected, ComboBoxTransition, type Command, CommandBase, ConcurrentAndFSM, type ConcurrentFSM, ConcurrentInteraction, ConcurrentXOrFSM, DatePicked, DatePickedTransition, DnD, DoubleClick, DoubleClickFSM, DragLock, DwellSpringAnimation, type EltRef, EscapeKeyPressureTransition, type EventModifierData, type EventType, type FSM, type FSMHandler, FSMImpl, FittsLaw, FittsLawDataImpl, type Flushable, FocusHTMLElement, type FourTouchData, FourTouchDataImpl, FourTouchDnD, type GeneralTwoTouchData, GeneralTwoTouchDataImpl, HyperLinkClicked, HyperLinkTransition, InitState, type InputState, type Interaction, InteractionBase, type InteractionBinder, type InteractionBinderBuilder, type InteractionBuilder, InteractionBuilderImpl, type InteractionCmdBinder, type InteractionCmdUpdateBinder, InteractionDataBase, type InteractionDataImplType, type InteractionDataType, type InteractionUpdateBinder, type InteractionUpdateBinderBuilder, type InteractionsDataTypes, type KeyBinderBuilder, KeyCode, type KeyData, KeyDataImpl, KeyDown, KeyDownFSM, type KeyEventType, type KeyInteractionBinder, type KeyInteractionBinderBuilder, type KeyInteractionCmdBinder, type KeyInteractionCmdUpdateBinder, type KeyInteractionUpdateBinder, KeyTransition, KeyTyped, KeyTypedFSM, KeyUp, KeyUpFSM, KeysBinder, type KeysData, KeysDataImpl, KeysDown, KeysDownFSM, KeysTyped, KeysTypedFSM, type LineTouchData, type LinterRule, type LogLevel, type Logger, LoggerImpl, LoggingData, LongMouseDown, LongMouseDownFSM, LongTouch, MouseDown, MouseEnter, MouseEnterFSM, type MouseEventType, MouseLeave, MouseLeaveFSM, MouseMove, MouseMoveFSM, type MousePointsData, MousePointsDataImpl, MouseTransition, MouseUp, MouseUpFSM, MultiTouch, type MultiTouchData, MultiTouchDataBase, MultiTouchDataImpl, MultiTouchFSM, MustBeUndoableCmdError, Not, NotFSM, OneTouchDnDFSM, Or, type OutputState, OutputStateBase, type PartialAnchorTypedBinder, type PartialButtonTypedBinder, type PartialFourTouchTypedBinder, type PartialInputTypedBinder, type PartialKeyTypedBinder, type PartialKeysTypedBinder, type PartialMultiTouchTypedBinder, type PartialPointOrTouchTypedBinder, type PartialPointSrcTgtTypedBinder, type PartialPointTypedBinder, type PartialPointsOrTapsTypedBinder, type PartialPointsTypedBinder, type PartialRotateTypedBinder, type PartialScaleTypedBinder, type PartialScrollTypedBinder, type PartialSelectTypedBinder, type PartialSpinnerTypedBinder, type PartialTapTypedBinder, type PartialTapsTypedBinder, type PartialTextInputTypedBinder, type PartialThenBinder, type PartialThreeTouchTypedBinder, type PartialTouchMouseDnDTypedBinder, type PartialTouchSrcTgtTypedBinder, type PartialTouchTypedBinder, type PartialTwoPanTypedBinder, type PartialTwoTouchTypedBinder, type PartialUpdatePointTypedBinder, type PartialWheelTypedBinder, type PointBaseData, type PointData, PointDataImpl, PointingDataBase, type PointsData, PointsDataImpl, type PrimitiveUndoableSnapshot, Redo, RedoNTimes, type Rotate, type RotationTouchData, RotationTouchDataImpl, type RuleName, type Scale, type ScaleTouchData, ScaleTouchDataImpl, Scroll, type ScrollData, ScrollDataImpl, ScrollFSM, ScrollTransition, SetProperties, SetProperty, type Severity, SpinnerChanged, SpinnerChangedFSM, SpinnerChangedTransition, SrcTgtDataBase, type SrcTgtPointsData, SrcTgtPointsDataImpl, SrcTgtTouchDataImpl, type State, StateBase, StdState, SubFSMTransition, Tap, TapFSM, Taps, type TapsData, TapsDataImpl, TapsFSM, TerminalState, TextInputChanged, TextInputChangedTransition, Then, type ThenData, ThenDataImpl, ThenFSM, type ThreeTouchData, ThreeTouchDataImpl, ThreeTouchDnD, TimedClick, TimedClickFSM, TimedTaps, TimeoutTransition, type TouchData, TouchDataImpl, TouchDnD, TouchDnDFSM, type TouchDnDFSMHandler, type TouchEventType, TouchStart, TouchTransition, TransferArrayItem, type Transition, TransitionBase, TreeUndoHistory, type TreeUndoHistoryDTO, TreeUndoHistoryImpl, type TwoPan, TwoPanDataImpl, type TwoTouch, type TwoTouchData, TwoTouchDataImpl, Undo, UndoHistory, type UndoHistoryBase, UndoHistoryImpl, UndoNTimes, type Undoable, UndoableCommand, type UndoableSnapshot, type UndoableTreeNode, type UndoableTreeNodeDTO, type UnitInteractionData, UpdateBinder, UsageLog, type VisitorBinding, type VisitorFSM, VisitorFSMDepthFirst, type VisitorInteraction, Wheel, type WheelData, WheelDataImpl, WheelTransition, type When, type WhenType, type Widget, type WidgetData, WidgetDataImpl, XTouchDnD, bottomPan, eventTypes, getTouch, hPan, isButton, isCheckBox, isColorChoice, isComboBox, isDatePicker, isEltRef, isHyperLink, isKeyDownEvent, isKeyUpEvent, isOutputStateType, isSpinner, isTextInput, isUndoableType, isWhenAtEnd, isWhenAtStart, isWhenAtThen, isWhenStrict, keyEventTypes, leftPan, mouseEventTypes, remove, removeAt, rightPan, rotate, scale, topPan, touchEventTypes, twoBottomPan, twoHPan, twoLeftPan, twoRightPan, twoTopPan, twoTouch, twoVPan, vPan };