import type { ListTable } from '@visactor/vtable';
import type { TableEventHandlersEventArgumentMap } from '@visactor/vtable/es/ts-types/events';
import type { ISpreadsheetEventSource } from './event-interfaces';
type EventCallback = (...args: any[]) => void;
export interface EnhancedTableEvent {
    sheetKey: string;
    [key: string]: any;
}
export declare class TableEventRelay {
    private _tableEventMap;
    private vtableSheet;
    private boundSheets;
    private cleanupCallbacks;
    constructor(vtableSheet: ISpreadsheetEventSource);
    onTableEvent<K extends keyof TableEventHandlersEventArgumentMap>(type: K, callback: (event: TableEventHandlersEventArgumentMap[K] & {
        sheetKey: string;
    }) => void): void;
    offTableEvent(type: string, callback?: EventCallback): void;
    private cleanupWrappedCallbacks;
    bindSheetEvents(sheetKey: string, tableInstance: ListTable): void;
    private bindSheetEvent;
    private bindToAllSheets;
    unbindSheetEvents(sheetKey: string, tableInstance: ListTable): void;
    private unbindFromAllSheets;
    getRegisteredEventTypes(): string[];
    getListenerCount(type: string): number;
    clearAllListeners(): void;
    destroy(): void;
}
export {};
