import { default as Cell } from '../../core/cell/Cell';
import { default as Column } from '../../core/column/Column';
import { default as Module } from '../../core/Module';
import { default as Tabulator } from '../../core/Tabulator';

type TouchWatcher = {
    tap: boolean;
    tapDbl: ReturnType<typeof setTimeout> | null;
    tapHold: ReturnType<typeof setTimeout> | null;
};
type TouchWatchers = {
    cell: TouchWatcher;
    column: TouchWatcher;
    group: TouchWatcher;
    row: TouchWatcher;
};
export default class Interaction extends Module {
    static moduleName: string;
    eventMap: Record<string, string>;
    subscribers: Record<string, any>;
    touchSubscribers: Record<string, any>;
    columnSubscribers: Record<string, Column[]>;
    touchWatchers: TouchWatchers;
    constructor(table: Tabulator);
    initialize(): void;
    clearTouchWatchers(): void;
    cellContentsSelectionFixer(e: Event, cell: Cell): void;
    initializeExternalEvents(): void;
    subscriptionChanged(key: string, added: boolean): void;
    subscribeTouchEvents(key: string): void;
    unsubscribeTouchEvents(key: string): void;
    initializeColumn(column: Column): void;
    handle(action: string, e: Event, component: Cell | Column): void;
    handleTouch(type: string, action: string, e: Event, component: Cell | Column): void;
    dispatchEvent(action: string, e: Event, component: Cell | Column): void;
}
export {};
