import { BindingSignaler } from 'aurelia-templating-resources';
import { UIColumn } from './ui-column';
import { BindingEngine, Disposable, ICollectionObserverSplice } from "aurelia-framework";
import { UIDataSource } from "./ui-data-source";
import { UITableAction } from './ui-table-action';
import { DateUtils } from '../../../utils/date-utils';
export declare class UITable {
    private element;
    private bindingEngine;
    private signaler;
    private dateUtils;
    data: KeyValue[];
    defaultSortProperty?: string;
    defaultSortOrder?: "asc" | "desc";
    filter: (record: KeyValue) => boolean;
    protected dragDropFunction: (obj: {
        record: KeyValue;
        oldVal: number;
        newVal: number;
    }) => void | Promise<void> | boolean | Promise<boolean>;
    protected showCounter: boolean;
    checkable: boolean;
    selected: KeyValue[];
    nbSelectedMax: number;
    customColumns: UIColumn[];
    designWithBorder: boolean;
    compact: boolean;
    rowClassComputedFrom: string | string[];
    rowClass: string | ((record: KeyValue, isDesktopScreen: boolean) => string);
    onRowClicked: (obj: {
        record: KeyValue;
    }) => void;
    rowRoute: (obj: {
        record: KeyValue;
    }) => string;
    cellAlign: "start" | "center" | "end";
    headerAlign: "start" | "center" | "end";
    useVirtualization: boolean;
    onRowSelected: (obj: object) => boolean;
    protected focusData: {
        data: any;
        colIndex: number;
    } | null;
    protected isRendered: boolean;
    protected isLoadingData: boolean;
    protected get nbHeadersVisible(): number;
    protected get tableClasses(): string;
    private get canDragAndDrop();
    protected ds: UIDataSource;
    private drake;
    protected disposables: Array<Disposable>;
    private isDesktopScreen;
    private isColumnsInitialized;
    private auTargetId;
    private columns;
    private headersVisible;
    private columnsVisible;
    private isDrangAndDropPending;
    private computedFromSubscriptions;
    private readonly draggableHandleClassName;
    private readonly recordChangedSignal;
    constructor(element: Element, bindingEngine: BindingEngine, signaler: BindingSignaler, dateUtils: DateUtils);
    filterChanged(): void;
    refresh(): void;
    protected attached(): void;
    protected detached(): void;
    protected bind(): void;
    protected toggleSelection($event: any, record: KeyValue): void;
    protected toggleSelectionAll(): void;
    protected getRowClass(record: KeyValue): string;
    dataHasChanged(splices?: ICollectionObserverSplice<any, any>[]): void;
    protected setupRowClassObservers(splices?: ICollectionObserverSplice<any, any>[]): void;
    protected observeRecordChanges(computedFrom: string[], records: KeyValue[]): void;
    protected disposeRecordChanges(records: KeyValue[]): void;
    columnsChanged(): void;
    createColumn(type: "text" | "number" | "drag" | "checkbox" | "counter"): void;
    initDrake(): void;
    computeTemplateWidth(): void;
    sortColumns(columnsVisible: (UIColumn | UITableAction)[]): (UIColumn | UITableAction)[];
    renderCell(cell: any): void;
    customColumnsChanged(): void;
    addCustomColumns(): void;
}
