/**
 * @license
 * Copyright Tyler Technologies, Inc. 
 * License: Apache-2.0
 */
import { BaseComponent, IBaseComponent } from '../core/base/base-component';
import { IColumnConfiguration, TableLayoutType, TableViewTemplate, TableRowCreatedCallback, TableCellCreatedCallback, TableHeaderSelectAllTemplate, CellAlign, ITableRowClickEventData, ITableSelectDoubleEventData, ITableSelectEventData, ITableSelectAllEventData, ITableColumnResizeEventData, ITableSortEventData, ITableSortMultipleEventData, ITableFilterEventData, TableSelectTooltipCallback } from './types';
export interface ITableComponent extends IBaseComponent {
    data: any[];
    columnConfigurations: IColumnConfiguration[];
    select: boolean;
    multiselect: boolean;
    selectKey: string | string[];
    dense: boolean;
    roomy: boolean;
    filter: boolean;
    fixedHeaders: boolean;
    layoutType: TableLayoutType;
    wrapContent: boolean;
    resizable: boolean;
    minResizeWidth: number;
    allowRowClick: boolean;
    multiColumnSort: boolean;
    selectCheckboxAlignment: `${CellAlign}`;
    tooltipSelect: string | TableSelectTooltipCallback;
    tooltipSelectAll: string;
    rowCreated: TableRowCreatedCallback;
    cellCreated: TableCellCreatedCallback;
    hideColumn(columnIndex: number): void;
    showColumn(columnIndex: number): void;
    isColumnHidden(columnIndex: number): boolean;
    getSelectedRows(): any[];
    selectRowsByIndex(indexes: number | number[], preserveExisting?: boolean): void;
    deselectRowsByIndex(indexes: number | number[]): void;
    selectRow(data: any): void;
    selectRows(data: any[], preserveExisting?: boolean): void;
    deselectRow(data: any): void;
    deselectRows(data: any[]): void;
    clearSelections(): void;
    render(): void;
    expandRow(rowIndex: number, template: TableViewTemplate): Promise<void>;
    collapseRow(rowIndex: number): Promise<void>;
    isRowExpanded(rowIndex: number): boolean;
    isRowSelected(rowData: {
        [key: string]: any;
    }): boolean;
    selectAllTemplate: TableHeaderSelectAllTemplate;
}
declare global {
    interface HTMLElementTagNameMap {
        'forge-table': ITableComponent;
    }
    interface HTMLElementEventMap {
        'forge-table-row-click': CustomEvent<ITableRowClickEventData>;
        'forge-table-select': CustomEvent<ITableSelectEventData>;
        'forge-table-select-double': CustomEvent<ITableSelectDoubleEventData>;
        'forge-table-select-all': CustomEvent<ITableSelectAllEventData>;
        'forge-table-sort': CustomEvent<ITableSortEventData | ITableSortMultipleEventData>;
        'forge-table-filter': CustomEvent<ITableFilterEventData>;
        'forge-table-initialized': CustomEvent<void>;
        'forge-table-column-resize': CustomEvent<ITableColumnResizeEventData>;
    }
}
/**
 * The custom element class behind the `<forge-table>` component.
 *
 * @tag forge-table
 */
export declare class TableComponent extends BaseComponent implements ITableComponent {
    static get observedAttributes(): string[];
    private _foundation;
    constructor();
    initializedCallback(): void;
    connectedCallback(): void;
    disconnectedCallback(): void;
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
    /**
     * Hides a column from the table.
     * @param columnIndex The index of the column to hide.
     */
    hideColumn(columnIndex: number): void;
    /**
     * Shows a hidden column in th table.
     * @param columnIndex The index of the column to show.
     */
    showColumn(columnIndex: number): void;
    /**
     * Determines if a column at the given index is hidden or not.
     * @param {number} columnIndex The index of the column.
     * @returns {boolean} `true` if the column is hidden, `false` otherwise.
     */
    isColumnHidden(columnIndex: number): boolean;
    /** Returns the selected row instances. */
    getSelectedRows(): any[];
    /**
     * Selects a row in the table. Only applicable if `select` is true.
     * @param data The row data behind the row that should be selected.
     */
    selectRow(data: any): void;
    /**
     * Selects one or more rows in the table. Only applicable if `select` is true.
     * @param data The row data begind the rows that should be selected.
     * @param [preserveExisting=false] Should existing row selections be preserved or cleared.
     */
    selectRows(data: any[], preserveExisting?: boolean): void;
    /**
     * Deselects a single row in the table.
     * @param data The data behind the row that should be deselected.
     */
    deselectRow(data: any): void;
    /**
     * Deselects one or more rows in the table.
     * @param data The data behind the rows that should be deselected.
     */
    deselectRows(data: any[]): void;
    /**
     * Clears all selected table rows.
     */
    clearSelections(): void;
    /**
     * Forces the table to re-render based on its current configuration.
     */
    render(): void;
    /**
     * Expands a collapsed row.
     * @param rowIndex The index of the row to expand.
     */
    expandRow(rowIndex: any, template: TableViewTemplate): Promise<void>;
    /**
     * Collapses an expanded row.
     * @param rowIndex The index of the row to expand.
     */
    collapseRow(rowIndex: number): Promise<void>;
    /**
     * Checks if a row is expanded or not.
     * @param rowIndex The row index to check.
     */
    isRowExpanded(rowIndex: number): boolean;
    /**
     * Selects a rows by an index or array of indexes.
     * @param indexes The row index/indexes to select.
     */
    selectRowsByIndex(indexes: number | number[], preserveExisting?: boolean): void;
    /**
     * Deselects a rows by an index or array of indexes.
     * @param indexes The row index/indexes to deselect
     */
    deselectRowsByIndex(indexes: number | number[]): void;
    /**
     * Checks if a row is selected or not.
     * @param rowData The row object data to check.
     */
    isRowSelected(rowData: {
        [key: string]: any;
    }): boolean;
    /** The data to be display in the table body. */
    data: any[];
    /** The column configuration options. */
    columnConfigurations: IColumnConfiguration[];
    /** Controls the visibility of the select column. */
    select: boolean;
    /** Controls the visibility of the select all checkbox (only applied when `select` is `true`). */
    multiselect: boolean;
    /** The row key for matching data to selections. */
    selectKey: string | string[];
    tooltipSelect: string | TableSelectTooltipCallback;
    tooltipSelectAll: string;
    /** Controls whether the table is dense or not. False by default. */
    dense: boolean;
    /** Controls whether the table is roomy or not. False by default. */
    roomy: boolean;
    /** Controls whether the table filters are visible or not. */
    filter: boolean;
    /** Controls whether the table applies fixed headers when in scroll containers. */
    fixedHeaders: boolean;
    /** Controls the table layout algorithm. */
    layoutType: TableLayoutType;
    /** Controls whether the content in each cell wraps or not (true by default). */
    wrapContent: boolean;
    /** Controls whether the columns are resizable or not. */
    resizable: boolean;
    /** Gets/sets the minimum width that a column can be resized to by the user dragging the resize handle. */
    minResizeWidth: number;
    /** Gets/sets whether the rows respond to (and emit) row click events. */
    allowRowClick: boolean;
    multiColumnSort: boolean;
    rowCreated: TableRowCreatedCallback;
    cellCreated: TableCellCreatedCallback;
    selectAllTemplate: TableHeaderSelectAllTemplate;
    selectCheckboxAlignment: `${CellAlign}`;
}
