import type { IElementRef, OnCreate, OnDestroy, OnRender, OnPropertyChange } from '@melodicdev/core';
import type { DataGridColumn, SortDirection } from './data-grid.types.js';
/**
 * ml-data-grid — Full-featured data grid with virtual scrolling, sorting, filtering,
 * selection, column resizing, column reordering, pinned columns, and pagination.
 *
 * @example
 * ```html
 * <ml-data-grid
 *   .columns=${columns}
 *   .rows=${rows}
 *   selectable
 *   virtual
 *   show-filter-row
 *   grid-title="Users"
 *   page-size="50"
 * ></ml-data-grid>
 * ```
 *
 * @fires ml:sort           - { key, direction }
 * @fires ml:filter         - { filters: Record<string, string> }
 * @fires ml:select         - { selectedRows: number[], allSelected: boolean }
 * @fires ml:row-click      - { row, index }
 * @fires ml:column-resize  - { key, width }
 * @fires ml:column-reorder - { order: string[] }
 * @fires ml:page-change    - { page, pageSize }
 *
 * @slot toolbar-actions — Actions placed in the toolbar next to title/description
 */
export declare class DataGridComponent implements IElementRef, OnCreate, OnDestroy, OnRender, OnPropertyChange {
    elementRef: HTMLElement;
    /** Enable row selection via checkboxes */
    selectable: boolean;
    /** Alternating row backgrounds */
    striped: boolean;
    /** Highlight rows on hover */
    hoverable: boolean;
    /** Grid size variant */
    size: 'sm' | 'md';
    /** Optional grid title shown in toolbar */
    gridTitle: string;
    /** Optional grid description shown in toolbar */
    description: string;
    /** When true, the grid renders rows as-is without sorting/filtering/pagination */
    serverSide: boolean;
    /** Number of rows per page */
    pageSize: number;
    /** Enable virtual scrolling (renders only visible rows) */
    virtual: boolean;
    /** Show per-column filter inputs below the header row */
    showFilterRow: boolean;
    /** Column definitions */
    columns: DataGridColumn[];
    /** Row data */
    rows: Record<string, unknown>[];
    sortKey: string;
    sortDirection: SortDirection;
    filters: Record<string, string>;
    selectedIndices: number[];
    currentPage: number;
    startIndex: number;
    endIndex: number;
    colWidths: Record<string, number>;
    colOrder: string[];
    resizingKey: string | null;
    draggingKey: string | null;
    dragOverKey: string | null;
    private _scroller;
    private _viewport;
    private _resizeStartX;
    private _resizeStartWidth;
    get rowHeight(): number;
    onPropertyChange(name: string, _oldVal: unknown, newVal: unknown): void;
    onCreate(): void;
    onRender(): void;
    onDestroy(): void;
    private _attachScroller;
    private _syncColumnState;
    get filteredRows(): Record<string, unknown>[];
    get sortedRows(): Record<string, unknown>[];
    get pagedRows(): Record<string, unknown>[];
    get processedRows(): Record<string, unknown>[];
    get visibleRows(): Record<string, unknown>[];
    get totalRows(): number;
    get totalPages(): number;
    get orderedColumns(): DataGridColumn[];
    get columnWidths(): Record<string, number>;
    get totalGridWidth(): number;
    get gridTemplateColumns(): string;
    getPinnedLeftOffset(key: string): number;
    get topSpacerHeight(): number;
    get bottomSpacerHeight(): number;
    get allSelected(): boolean;
    get someSelected(): boolean;
    isRowSelected: (index: number) => boolean;
    handleSort: (col: DataGridColumn) => void;
    handleFilterInput: (key: string, e: Event) => void;
    handleSelectAll: () => void;
    handleSelectRow: (index: number, e: Event) => void;
    handleRowClick: (row: Record<string, unknown>, index: number) => void;
    handleResizeStart: (key: string, e: PointerEvent) => void;
    handleResizeMove: (key: string, e: PointerEvent) => void;
    handleResizeEnd: () => void;
    handleDragStart: (key: string, e: DragEvent) => void;
    handleDragOver: (key: string, e: DragEvent) => void;
    handleDragEnd: () => void;
    handleDrop: (targetKey: string) => void;
    goToPage: (page: number) => void;
    private _emitSelect;
}
//# sourceMappingURL=data-grid.component.d.ts.map