import { UmbLitElement } from '../../lit-element/index.js';
export interface UmbTableItem {
    id: string;
    icon?: string | null;
    entityType?: string;
    data: Array<UmbTableItemData>;
    selectable?: boolean;
}
export interface UmbTableItemData {
    columnAlias: string;
    value: any;
}
export interface UmbTableColumn {
    name: string;
    alias: string;
    elementName?: string;
    width?: string;
    allowSorting?: boolean;
    align?: 'left' | 'center' | 'right';
    labelTemplate?: string;
    clipText?: boolean;
}
export interface UmbTableColumnLayoutElement extends HTMLElement {
    column: UmbTableColumn;
    item: UmbTableItem;
    value: any;
}
export interface UmbTableConfig {
    allowSelection: boolean;
    selectOnly?: boolean;
    allowSelectAll?: boolean;
    hideIcon?: boolean;
}
export declare class UmbTableSelectedEvent extends Event {
    #private;
    constructor(args?: {
        itemId?: string;
    });
    getItemId(): string | undefined;
}
export declare class UmbTableDeselectedEvent extends Event {
    #private;
    constructor(args?: {
        itemId: string;
    });
    getItemId(): string | undefined;
}
export declare class UmbTableOrderedEvent extends Event {
    constructor();
}
export declare class UmbTableSortedEvent extends Event {
    #private;
    constructor({ itemId }: {
        itemId: string;
    });
    getItemId(): string;
}
/**
 *  @element umb-table
 *  @description - Element for displaying a table
 *  @fires {UmbTableSelectedEvent} selected - fires when a row is selected
 *  @fires {UmbTableDeselectedEvent} deselected - fires when a row is deselected
 *  @fires {UmbTableOrderedEvent} sort - fires when a column order is changed
 *  @augments LitElement
 */
export declare class UmbTableElement extends UmbLitElement {
    #private;
    /**
     * Table Items
     * @type {Array<UmbTableItem>}
     * @memberof UmbTableElement
     */
    private _items;
    get items(): Array<UmbTableItem>;
    set items(value: Array<UmbTableItem>);
    /**
     * @description Table Columns
     * @type {Array<UmbTableColumn>}
     * @memberof UmbTableElement
     */
    columns: Array<UmbTableColumn>;
    /**
     * @description Table Config
     * @type {UmbTableConfig}
     * @memberof UmbTableElement
     */
    config: UmbTableConfig;
    /**
     * @description Table Selection
     * @type {Array<string>}
     * @memberof UmbTableElement
     */
    selection: Array<string>;
    orderingColumn: string;
    orderingDesc: boolean;
    private _sortable;
    get sortable(): boolean;
    set sortable(newVal: boolean);
    private _selectionMode;
    updated(changedProperties: Map<string | number | symbol, unknown>): void;
    constructor();
    private _isSelected;
    private _handleRowCheckboxChange;
    private _handleAllRowsCheckboxChange;
    private _handleOrderingChange;
    private _selectAllRows;
    private _deselectAllRows;
    private _selectRow;
    private _deselectRow;
    render(): import("lit-html").TemplateResult<1>;
    private _renderHeaderCell;
    private _renderSortingUI;
    private _renderHeaderCheckboxCell;
    private _renderRow;
    private _renderRowCheckboxCell;
    private _renderRowCell;
    private _renderCellContent;
    static styles: import("lit").CSSResult[];
}
export default UmbTableElement;
declare global {
    interface HTMLElementTagNameMap {
        'umb-table': UmbTableElement;
    }
}
