/**
 * @license
 * Copyright 2023 Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { BaseAdapter, IBaseAdapter } from '../core/base/base-adapter';
import { ITableComponent } from './table';
import { CellAlign, ITableConfiguration, SortDirection, TableHeaderSelectAllTemplate, TableViewTemplate, TableSelectTooltipCallback } from './types';
import { TableRow } from './table-row';
export interface ITableAdapter extends IBaseAdapter {
    initialize: () => void;
    getTableElement: () => HTMLTableElement;
    createTable: (configuration: ITableConfiguration) => void;
    recreateTableBody: (configuration: ITableConfiguration) => void;
    setSelectedRows: (tableElement: HTMLTableElement, key: string[], data: any[], selectedRows: any[], preserveExisting?: boolean) => void;
    clearSelectedRows: (tableElement: HTMLTableElement) => void;
    updateSelectedState: (rowElement: HTMLTableRowElement, isSelected: boolean) => void;
    updateSelectAllState: (tableElement: HTMLTableElement, isAllSelected: boolean, isIndeterminate?: boolean) => void;
    setSortedColumn: (tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection) => void;
    removeColumnSort: (tableElement: HTMLTableElement, columnIndex: number) => void;
    setSortDirection: (tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection) => void;
    setSelectColumnVisibility: (tableElement: HTMLTableElement, isVisible: boolean, selectListener: (evt: Event) => void, selectAllListener?: (evt: Event) => void, selectAllTemplate?: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment?: CellAlign, data?: TableRow[], tooltipSelect?: string | TableSelectTooltipCallback, tooltipSelectAll?: string) => void;
    setDense: (tableElement: HTMLTableElement, isDense: boolean) => void;
    setRoomy(tableElement: HTMLTableElement, isRoomy: boolean): void;
    setResizable: (configuration: ITableConfiguration) => void;
    setSelectAllVisibility: (tableElement: HTMLTableElement, isVisible: boolean, listener: ((evt: Event) => void) | null, selectAllTemplate: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment?: CellAlign, tooltipSelectAll?: string) => void;
    setFilterRow: (configuration: ITableConfiguration) => void;
    expandRow(configuration: ITableConfiguration, rowIndex: number, template: TableViewTemplate): Promise<void>;
    collapseRow(configuration: ITableConfiguration, rowIndex: number): Promise<void>;
    isRowExpanded(configuration: ITableConfiguration, rowIndex: number): boolean;
    setFixedHeaders(configuration: ITableConfiguration): void;
    setTableLayoutType(configuration: ITableConfiguration): void;
    setWrapContentState(configuration: ITableConfiguration): void;
    addDocumentListener(type: string, listener: (evt: MouseEvent) => void): void;
    removeDocumentListener(type: string, listener: (evt: MouseEvent) => void): void;
    normalizeColumnWidths(configuration: ITableConfiguration): void;
    setResizeColumnVisibility(configuration: ITableConfiguration, columnIndex: number, isVisible: boolean): void;
    addTableClass(classes: string | string[]): void;
    removeTableClass(classes: string | string[]): void;
    setRowClickListeners(tableElement: HTMLTableElement, allowClick: boolean, clickListener: (evt: Event) => void, doubleClickListener: (evt: Event) => void): void;
    setRowClickAttributes(tableElement: HTMLTableElement, allowClick: boolean): void;
}
/**
 * Provides facilities for interacting with the internal DOM of `TableComponent`.
 */
export declare class TableAdapter extends BaseAdapter<ITableComponent> implements ITableAdapter {
    private _tableElement;
    constructor(component: ITableComponent);
    initialize(): void;
    getTableElement(): HTMLTableElement;
    createTable(configuration: ITableConfiguration): void;
    recreateTableBody(configuration: ITableConfiguration): void;
    setSelectedRows(tableElement: HTMLTableElement, key: string[], data: any[], selectedRows: any[], preserveExisting?: boolean): void;
    clearSelectedRows(tableElement: HTMLTableElement): void;
    updateSelectedState(rowElement: HTMLTableRowElement, isSelected: boolean): void;
    updateSelectAllState(tableElement: HTMLTableElement, isAllSelected: boolean, isIndeterminate?: boolean): void;
    setSortedColumn(tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection): void;
    removeColumnSort(tableElement: HTMLTableElement, columnIndex: number): void;
    setSortDirection(tableElement: HTMLTableElement, columnIndex: number, sortDirection: SortDirection): void;
    setSelectColumnVisibility(tableElement: HTMLTableElement, isVisible: boolean, selectListener: (evt: Event) => void, selectAllListener?: (evt: Event) => void, selectAllTemplate?: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment?: CellAlign, data?: TableRow[], tooltipSelect?: string | TableSelectTooltipCallback, tooltipSelectAll?: string): void;
    setDense(tableElement: HTMLTableElement, isDense: boolean): void;
    setRoomy(tableElement: HTMLTableElement, isRoomy: boolean): void;
    setResizable(configuration: ITableConfiguration): void;
    setSelectAllVisibility(tableElement: HTMLTableElement, isVisible: boolean, listener: ((evt: Event) => void) | null, selectAllTemplate: TableHeaderSelectAllTemplate | null, selectCheckboxAlignment?: CellAlign, tooltipSelectAll?: string | null): void;
    setFilterRow(configuration: ITableConfiguration): void;
    expandRow(configuration: ITableConfiguration, rowIndex: number, template: TableViewTemplate): Promise<void>;
    collapseRow(configuration: ITableConfiguration, rowIndex: number): Promise<void>;
    isRowExpanded(configuration: ITableConfiguration, rowIndex: number): boolean;
    setFixedHeaders(configuration: ITableConfiguration): void;
    setTableLayoutType(configuration: ITableConfiguration): void;
    setWrapContentState(configuration: ITableConfiguration): void;
    addDocumentListener(type: string, listener: (evt: MouseEvent) => void): void;
    removeDocumentListener(type: string, listener: (evt: MouseEvent) => void): void;
    normalizeColumnWidths(configuration: ITableConfiguration): void;
    setResizeColumnVisibility(configuration: ITableConfiguration, columnIndex: number, isVisible: boolean): void;
    addTableClass(classes: string | string[]): void;
    removeTableClass(classes: string | string[]): void;
    setRowClickListeners(tableElement: HTMLTableElement, allowClick: boolean, clickListener: (evt: Event) => void, doubleClickListener: (evt: Event) => void): void;
    setRowClickAttributes(tableElement: HTMLTableElement, allowClick: boolean): void;
}
