import { EventEmitter, OnInit, OnChanges, SimpleChanges } from '@angular/core';
import { DataTableMetadata, DataTableColumn, DataTableSort, DataTableRowClickEvent, DataTableSelectionChangeEvent, DataTableSortChangeEvent, DataTablePageChangeEvent, DataTableEmptyState } from './types';
import * as i0 from "@angular/core";
export declare class DataTableComponent<T = any> implements OnInit, OnChanges {
    props: DataTableMetadata<T>;
    rowClick: EventEmitter<DataTableRowClickEvent<T>>;
    selectionChange: EventEmitter<DataTableSelectionChangeEvent<T>>;
    sortChange: EventEmitter<DataTableSortChangeEvent>;
    pageChange: EventEmitter<DataTablePageChangeEvent>;
    displayedData: T[];
    currentSort: DataTableSort | null;
    selectedRows: Set<any>;
    /** Cached visible columns for performance */
    private _visibleColumns;
    private cdr;
    private i18n;
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    private initializeState;
    private updateDisplayedData;
    private sortData;
    get visibleColumns(): DataTableColumn<T>[];
    get totalColumns(): number;
    get emptyState(): DataTableEmptyState;
    /** Get actions column label */
    getActionsLabel(): string;
    /** Get pagination info text */
    getPaginationInfoText(): string;
    /** Get per page text */
    getPerPageText(size: number): string;
    /** Get first page aria label */
    getFirstPageLabel(): string;
    /** Get previous page aria label */
    getPreviousPageLabel(): string;
    /** Get next page aria label */
    getNextPageLabel(): string;
    /** Get last page aria label */
    getLastPageLabel(): string;
    get pageSizeOptions(): number[];
    get totalPages(): number;
    get paginationStart(): number;
    get paginationEnd(): number;
    get isAllSelected(): boolean;
    get isIndeterminate(): boolean;
    getCellValue(row: T, column: DataTableColumn<T>): any;
    getFormattedValue(row: T, column: DataTableColumn<T>): string;
    getColumnClass(column: DataTableColumn<T>): string;
    getAriaSort(column: DataTableColumn<T>): string | null;
    getRowNumber(index: number): number;
    getRowId(row: T): any;
    trackByFn(row: T): any;
    isRowSelected(row: T): boolean;
    onSort(column: DataTableColumn<T>): void;
    onRowClick(row: T, index: number, event: MouseEvent): void;
    toggleSelectAll(event: CustomEvent): void;
    toggleRowSelection(row: T, event: CustomEvent): void;
    selectSingleRow(row: T): void;
    private emitSelectionChange;
    goToPage(page: number): void;
    onPageSizeChange(event: CustomEvent): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DataTableComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DataTableComponent<any>, "val-data-table", never, { "props": { "alias": "props"; "required": false; }; }, { "rowClick": "rowClick"; "selectionChange": "selectionChange"; "sortChange": "sortChange"; "pageChange": "pageChange"; }, never, ["[toolbar]"], true, never>;
}
