import { EventEmitter } from '../../stencil-public-runtime';
import { ColumnDefinition as TabulatorColumnDefinition, RowComponent as TabulatorRowComponent } from 'tabulator-tables';
import { ElementPool } from './element-pool';
import { RowReorderEvent } from './table.types';
import { Languages } from '../date-picker/date.types';
/**
 * Provides row drag-and-drop reordering configuration for Tabulator
 * using native movableRows with a custom drag handle
 */
export declare class RowDragManager {
    private readonly pool;
    private readonly reorderEvent;
    private readonly getLanguage;
    private mutationObserver;
    constructor(pool: ElementPool, reorderEvent: EventEmitter<RowReorderEvent<unknown>>, getLanguage: () => Languages);
    /**
     * Start releasing drag-handle elements back to the pool when Tabulator
     * virtualizes rows out of view. Safe to call multiple times — a previous
     * observer is disconnected first.
     *
     * @param container - The element that hosts the Tabulator table.
     */
    observe(container: HTMLElement): void;
    /**
     * Disconnects the mutation observer. Call when the manager is no longer
     * needed (e.g. on `disconnectedCallback` or when `movableRows` is toggled).
     */
    destroy(): void;
    /**
     * Returns the Tabulator rowHeader config that renders
     * a limel-drag-handle and restricts dragging to that cell
     */
    getRowHeaderDefinition(): Partial<TabulatorColumnDefinition>;
    /**
     * Tabulator rowMoved event handler.
     * Attach this to the tabulator instance via `tabulator.on('rowMoved', ...)`
     * @param row
     */
    handleRowMoved(row: TabulatorRowComponent): void;
    /**
     * Tabulator fires `rowMoved` / `rowMoveCancelled` from its `mouseup`
     * handler. The browser may then dispatch a synthetic `click` on the drop
     * target which would bubble to Tabulator's row-click handling and trigger
     * a spurious row activation. Call this from both events: it installs a
     * one-shot capture-phase click listener that swallows that single click
     * before Tabulator can see it. If no click arrives (rare, but possible),
     * the listener is removed on the next macrotask so it can never swallow a
     * later, intentional click.
     *
     * @param target - Element that should swallow the post-drop click
     * (typically the table host).
     */
    readonly armPostDropClickGuard: (target: EventTarget) => void;
    private readonly handleCellClick;
    private readonly releaseDetachedHandles;
    private getDragHandleFormatter;
}
//# sourceMappingURL=row-drag-manager.d.ts.map