import type { VirtualScrollConfig, VisibleRange, DataRecord } from '../types/interfaces';
export type { VirtualScrollConfig, VisibleRange };
/**
 * VirtualScrollManager - Efficient virtual scrolling implementation
 *
 * Renders only visible rows from a large dataset, dramatically improving
 * performance for datasets with thousands or millions of rows.
 *
 * @example
 * ```typescript
 * const scroller = new VirtualScrollManager({
 *   container: document.getElementById('table-container'),
 *   data: largeDataset,
 *   rowHeight: 40,
 *   bufferSize: 10,
 *   renderRow: (item, index) => createTableRow(item, index)
 * });
 * scroller.render();
 * ```
 */
export declare class VirtualScrollManager {
    private container;
    private data;
    private rowHeight;
    private bufferSize;
    private renderRow;
    private renderHeader?;
    private onVisibleRangeChange?;
    private onDragDrop?;
    private scrollTop;
    private visibleStart;
    private visibleEnd;
    private containerHeight;
    private wrapper;
    private spacer;
    private content;
    private resizeObserver;
    private scrollRAF;
    constructor(config: VirtualScrollConfig);
    /**
     * Initialize the virtual scrolling structure
     * @private
     */
    private init;
    /**
     * Handle scroll events with requestAnimationFrame throttling
     * @private
     */
    private handleScroll;
    /**
     * Process scroll event
     * @private
     */
    private onScroll;
    /**
     * Calculate the range of visible rows
     * @returns Object with start and end indices
     */
    getVisibleRange(): VisibleRange;
    /**
     * Render the visible rows
     */
    render(): void;
    /**
     * Add drag-and-drop support to a row
     * @private
     */
    private addDragDropSupport;
    /**
     * Update the dataset
     * @param data New dataset
     */
    setData(data: DataRecord[]): void;
    /**
     * Update row height
     * @param height New row height in pixels
     */
    updateRowHeight(height: number): void;
    /**
     * Scroll to a specific row index
     * @param index Row index to scroll to
     */
    scrollToIndex(index: number): void;
    /**
     * Scroll to the top
     */
    scrollToTop(): void;
    /**
     * Mount the virtual scroller to a parent element
     * @param parentElement Parent element to mount to
     */
    mount(parentElement: HTMLElement): void;
    /**
     * Refresh the current view
     */
    refresh(): void;
    /**
     * Get the current scroll position
     * @returns Current scroll top position
     */
    getScrollTop(): number;
    /**
     * Get the total number of rows
     * @returns Total row count
     */
    getRowCount(): number;
    /**
     * Get the current visible start and end indices
     * @returns Object with visibleStart and visibleEnd
     */
    getVisibleIndices(): {
        visibleStart: number;
        visibleEnd: number;
    };
    /**
     * Clean up resources and remove event listeners
     */
    destroy(): void;
}
//# sourceMappingURL=VirtualScrollManager.d.ts.map