import { IEventEmitter } from '@breadstone/mosaik-elements';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { ITableColumnsChangedEventDetail } from './Events/ITableColumnsChangedEventDetail';
import type { ITableElementEvents } from './ITableElementEvents';
import { ITableElementProps } from './ITableElementProps';
declare const TableElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * Table - A structured display of data in rows and columns.
 *
 * @element mosaik-table
 *
 * @fires columnsChanged - Fired when the columns of the table has changed.
 *
 * @public
 */
export declare class TableElement extends TableElement_base implements ITableElementProps, ITableElementEvents {
    private readonly _columnsChanged;
    private _columns;
    private _caption;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `is` property.
     *
     * @public
     * @static
     * @readonly
    */
    static get is(): string;
    /**
     * Gets or sets the `columns` property.
     *
     * @public
     * @attr
     */
    get columns(): string;
    set columns(value: string);
    /**
     * Gets or sets the `caption` property.
     *
     * @public
     * @attr
     */
    get caption(): string;
    set caption(value: string);
    /**
     * Called when <ACTION>.
     * Provides reference to `{@link ITableColumnsChangedEventDetail}` as event argument.
     *
     * @public
     * @readonly
     * @eventProperty
     * @type IEventEmitter<ITableColumnsChangedEventDetail>
     */
    get columnsChanged(): IEventEmitter<ITableColumnsChangedEventDetail>;
    /**
     * @public
     * @override
     */
    attributeChangedCallback(name: string, oldValue: string, newValue: string): void;
}
/**
 * @public
 */
export declare namespace TableElement {
    type Props = ITableElementProps;
}
/**
 * @public
 */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-table': TableElement;
    }
    interface HTMLElementEventMap {
        columnsChanged: CustomEvent<ITableColumnsChangedEventDetail>;
    }
}
export {};
//# sourceMappingURL=TableElement.d.ts.map