import { ComponentTarget, IInteractionManager, ITabulator, ListenerConfig, PseudoTracker } from '../../../../../../types/src/table';
import { default as CoreFeature } from '../CoreFeature';

export default class InteractionManager extends CoreFeature implements IInteractionManager {
    el: HTMLElement | null;
    abortClasses: string[];
    previousTargets: Record<string, ComponentTarget>;
    listeners: string[] | Record<string, ListenerConfig>;
    componentMap: Record<string, string>;
    pseudoTrackers: Record<string, PseudoTracker>;
    pseudoTracking: boolean;
    constructor(table: ITabulator);
    initialize(): void;
    buildListenerMap(): void;
    bindPseudoEvents(): void;
    pseudoMouseEnter(key: string, e: Event, target: HTMLElement): void;
    pseudoMouseLeave(key: string, e: Event): void;
    bindSubscriptionWatchers(): void;
    subscriptionChanged(component: string, key: string, added: boolean): void;
    updateEventListeners(): void;
    track(type: string, e: Event): void;
    findTargets(path: EventTarget[]): Record<string, HTMLElement>;
    bindComponents(type: string, targets: Record<string, HTMLElement | false>): Record<string, any>;
    triggerEvents(type: string, e: Event, targets: Record<string, any>): void;
    clearWatchers(): void;
}
