/**
 * @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>;
    }
}
/**
 * @tag forge-table
 *
 * @dependency forge-expansion-panel
 * @dependency forge-icon
 * @dependency forge-checkbox
 * @dependency forge-tooltip
 *
 * @event {CustomEvent<ITableRowClickEventData>} forge-table-row-click - Dispatched when a row is clicked. Only applies when `allow-row-click` is specified.
 * @event {CustomEvent<ITableSelectEventData>} forge-table-select - Dispatched when a row is selected. Only applies when `select` is specified.
 * @event {CustomEvent<ITableSelectDoubleEventData>} forge-table-select-double - Dispatched when a row is double-clicked. Only applies when `select` is specified.
 * @event {CustomEvent<ITableSelectAllEventData>} forge-table-select-all - Dispatched when the select all checkbox is toggled. Only applies when `select` and `multiselect` is specified.
 * @event {CustomEvent<ITableSortEventData | ITableSortMultipleEventData>} forge-table-sort - Dispatched when a column is sorted.
 * @event {CustomEvent<ITableFilterEventData>} forge-table-filter - Dispatched when a column is filtered. Only applies when `filter` is specified.
 * @event {CustomEvent<void>} forge-table-initialized - Dispatched when the table is initialized in the DOM for the first time.
 * @event {CustomEvent<ITableColumnResizeEventData>} forge-table-column-resize - Dispatched when a column is resized.
 */
export declare class TableComponent extends BaseComponent implements ITableComponent {
    static get observedAttributes(): string[];
    private _core;
    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.
     * @default []
     */
    data: any[];
    /**
     * The column configuration options.
     * @default []
     */
    columnConfigurations: IColumnConfiguration[];
    /**
     * Controls the visibility of the select column.
     * @default true
     * @attribute
     */
    select: boolean;
    /**
     * Controls the visibility of the select all checkbox (only applied when `select` is `true`).
     * @default true
     * @attribute
     */
    multiselect: boolean;
    /**
     * The row key for matching data to selections.
     * @attribute select-key
     */
    selectKey: string | string[];
    /**
     * The tooltip to display when hovering over the select column.
     * @attribute tooltip-select
     */
    tooltipSelect: string | TableSelectTooltipCallback;
    /**
     * The tooltip to display when hovering over the select all checkbox.
     * @attribute tooltip-select-all
     */
    tooltipSelectAll: string;
    /**
     * Controls whether the table is dense or not.
     * @default false
     * @attribute
     */
    dense: boolean;
    /**
     * Controls whether the table is roomy or not.
     * @default false
     * @attribute
     */
    roomy: boolean;
    /**
     * Controls whether the table shows its column filter row.
     * @default false
     * @attribute
     */
    filter: boolean;
    /**
     * Controls whether the table applies fixed headers when in scroll containers.
     * @default false
     * @attribute fixed-headers
     */
    fixedHeaders: boolean;
    /**
     * Controls the table layout algorithm.
     * @default 'auto'
     * @attribute layout-type
     */
    layoutType: TableLayoutType;
    /**
     * Controls whether the content in each cell wraps or not (true by default).
     * @default true
     * @attribute wrap-content
     */
    wrapContent: boolean;
    /**
     * Controls whether the columns are resizable or not.
     * @default false
     * @attribute
     */
    resizable: boolean;
    /**
     * Gets/sets the minimum width that a column can be resized to by the user dragging the resize handle.
     * @default 100
     * @attribute min-resize-width
     */
    minResizeWidth: number;
    /**
     * Gets/sets whether the rows respond to (and emit) row click events.
     * @default false
     * @attribute allow-row-click
     */
    allowRowClick: boolean;
    /**
     * Gets/sets whether the table supports multi-column sorting.
     * @default false
     * @attribute multi-column-sort
     */
    multiColumnSort: boolean;
    /**
     * Callback for when a row is clicked. This allows for custom logic to run after each `<tr>` is created.
     */
    rowCreated: TableRowCreatedCallback;
    /**
     * Callback for when a cell is clicked. This allows for custom logic to run after each `<td>` is created.
     */
    cellCreated: TableCellCreatedCallback;
    /**
     * The template to use for the select all checkbox in the header.
     */
    selectAllTemplate: TableHeaderSelectAllTemplate;
    /**
     * Controls the alignment of the select checkbox.
     * @default "center"
     * @attribute select-checkbox-alignment
     */
    selectCheckboxAlignment: `${CellAlign}`;
}
