import { Accordion, Comparator, Event, EventDelegator, EventHandler, Filter, FilterOrFunction, FilterResult, FilterSupport, Group, InitModelOf, KeyStrokeContext, ObjectOrChildModel, ObjectOrModel, PropertyChangeEvent, TextFilter, Tile, TileAccordionEventMap, TileAccordionLayout, TileAccordionModel, TileAccordionSelectionHandler, TileGrid, TileGridLayoutConfig } from '../../index';
export declare class TileAccordion<TTile extends Tile = Tile> extends Accordion implements TileAccordionModel {
    model: TileAccordionModel;
    eventMap: TileAccordionEventMap;
    self: TileAccordion<TTile>;
    groups: Group<TileGrid<TTile>>[];
    gridColumnCount: number;
    multiSelect: boolean;
    selectable: boolean;
    takeTileFiltersFromGroup: boolean;
    tileComparator: Comparator<TTile>;
    filters: Filter<TTile>[];
    tileGridLayoutConfig: TileGridLayoutConfig;
    tileGridSelectionHandler: TileAccordionSelectionHandler;
    withPlaceholders: boolean;
    virtual: boolean;
    textFilterEnabled: boolean;
    filterSupport: FilterSupport<TTile>;
    createTextFilter: () => TextFilter<TTile>;
    updateTextFilterText: string;
    $filterFieldContainer: JQuery;
    protected _selectionUpdateLocked: boolean;
    protected _tileGridPropertyChangeHandler: EventHandler<PropertyChangeEvent>;
    protected _groupBodyHeightChangeHandler: EventHandler<Event<Group<TileGrid<TTile>>>>;
    constructor();
    protected _render(): void;
    protected _createLayout(): TileAccordionLayout;
    protected _renderProperties(): void;
    protected _remove(): void;
    protected _init(model: InitModelOf<this>): void;
    protected _createKeyStrokeContext(): KeyStrokeContext;
    protected _initGroup(group: Group<TileGrid<TTile>> & {
        body: TileGrid<TTile> & {
            __tileAccordionEventDelegator?: EventDelegator;
        };
    }): void;
    protected _deleteGroup(group: Group<TileGrid<TTile>> & {
        body: TileGrid<TTile> & {
            __tileAccordionEventDelegator?: EventDelegator;
        };
    }): void;
    setGroups(groups: Group<TileGrid<TTile>>[]): void;
    /** @see TileAccordionModel.gridColumnCount */
    setGridColumnCount(gridColumnCount: number): void;
    /** @see TileAccordionModel.tileGridLayoutConfig */
    setTileGridLayoutConfig(layoutConfig: ObjectOrModel<TileGridLayoutConfig>): void;
    protected _setTileGridLayoutConfig(layoutConfig: ObjectOrModel<TileGridLayoutConfig>): void;
    /** @see TileAccordionModel.withPlaceholders */
    setWithPlaceholders(withPlaceholders: boolean): void;
    /** @see TileAccordionModel.virtual */
    setVirtual(virtual: boolean): void;
    /** @see TileAccordionModel.selectable */
    setSelectable(selectable: boolean): void;
    /** @see TileAccordionModel.multiSelect */
    setMultiSelect(multiSelect: boolean): void;
    getGroupById(id: string): Group<TileGrid<TTile>>;
    getGroupByTile(tile: TTile): Group<TileGrid<TTile>>;
    /**
     * Distribute the tiles to the corresponding groups and returns an object with group id as key and array of tiles as value.
     * Always returns all current groups even if the given tiles may not be distributed to all groups.
     */
    protected _groupTiles(tiles: TTile[]): Record<string, TTile[]>;
    deleteTile(tile: TTile): void;
    deleteTiles(tilesToDelete: TTile[] | TTile): void;
    deleteAllTiles(): void;
    /**
     * Distributes the given tiles to their corresponding groups.
     *
     * If the list contains new tiles not assigned to a group yet, an exception will be thrown.
     */
    setTiles(tilesOrModels: ObjectOrChildModel<TTile> | ObjectOrChildModel<TTile>[]): void;
    getTiles(): TTile[];
    getTileCount(): number;
    /**
     * @param filter The filters to add.
     * @param applyFilter Whether to apply the filters after modifying the filter list or not. Default is true.
     */
    addFilter(filter: FilterOrFunction<TTile> | FilterOrFunction<TTile>[], applyFilter?: boolean): void;
    /**
     * @param filter The filters to remove.
     * @param applyFilter Whether to apply the filters after modifying the filter list or not. Default is true.
     */
    removeFilter(filter: FilterOrFunction<TTile> | FilterOrFunction<TTile>[], applyFilter?: boolean): void;
    /**
     * @param filter The new filters.
     * @param applyFilter Whether to apply the filters after modifying the filter list or not. Default is true.
     */
    setFilters(filters: FilterOrFunction<TTile> | FilterOrFunction<TTile>[], applyFilter?: boolean): void;
    protected _setFilters(filter: FilterOrFunction<TTile> | FilterOrFunction<TTile>[]): void;
    filter(): void;
    protected _filter(): FilterResult<TTile>;
    protected _createFilterSupport(): FilterSupport<TTile>;
    protected _createTextFilter(): TextFilter<TTile>;
    protected _updateTextFilterText(filter: Filter<TTile>, text: string): boolean;
    /** @see TileAccordionModel.textFilterEnabled */
    setTextFilterEnabled(textFilterEnabled: boolean): void;
    isTextFilterFieldVisible(): boolean;
    protected _renderTextFilterEnabled(): void;
    getFilteredTiles(): TTile[];
    getFilteredTileCount(): number;
    /**
     * Compared to {@link getFilteredTiles()}, this function considers the collapsed state of the group as well, meaning only filtered tiles of expanded groups are returned.
     */
    getVisibleTiles(): TTile[];
    /**
     * Compared to {@link getFilteredTiles()}, this function considers the collapsed state of the group as well, meaning only filtered tiles of expanded groups are counted.
     */
    getVisibleTileCount(): number;
    findVisibleTileIndexAt(x: number, y: number, startIndex?: number, reverse?: boolean): number;
    /**
     * Selects the given tiles and deselects the previously selected ones.
     *
     * Tiles, that are currently invisible due to an active filter, are excluded and won't be selected.
     */
    selectTiles(tiles: TTile[]): void;
    /** @see selectTiles */
    selectTile(tile: TTile): void;
    /**
     * Selects all tiles. As for every selection operation: only considers filtered tiles and tiles of expanded groups
     */
    selectAllTiles(): void;
    deselectTiles(tiles: TTile[]): void;
    deselectTile(tile: TTile): void;
    deselectAllTiles(): void;
    addTilesToSelection(tiles: TTile[]): void;
    addTileToSelection(tile: TTile): void;
    getSelectedTiles(): TTile[];
    getSelectedTile(): TTile;
    getSelectedTileCount(): number;
    /**
     * Deselects every tile if all tiles are selected. Otherwise, selects all tiles.
     */
    toggleSelection(): void;
    /** @see TileAccordionModel.tileComparator */
    setTileComparator(comparator: Comparator<TTile>): void;
    sortTiles(): void;
    setFocusedTile(tile: TTile): void;
    getFocusedTile(): TTile;
    getVisibleGridRowCount(): number;
    getVisibleGridX(tile: TTile): number;
    getVisibleGridY(tile: TTile): number;
    getGroupByVisibleRow(rowToFind: number): Group<TileGrid<TTile>>;
    /**
     * @returns the index of the row where the group is located.<p>
     *          Example: There are 3 rows and 2 groups. The first group contains 2 rows, the second 1 row.
     *          The index of the first group is 0, the index of the second group is 2.
     */
    getVisibleRowByGroup(groupToFind: Group<TileGrid<TTile>>): number;
    expandedGroups(): Group<TileGrid<TTile>>[];
    protected _handleSelectionChanged(tileGrid: TileGrid<TTile>): void;
    protected _onTileGridPropertyChange(event: PropertyChangeEvent<any, TileGrid<TTile>>): void;
    protected _onGroupCollapsedChange(event: PropertyChangeEvent<boolean, Group<TileGrid<TTile>>>): void;
    protected _handleCollapsed(group: Group<TileGrid<TTile>>): void;
    protected _onGroupBodyHeightChange(event: Event<Group<TileGrid<TTile>>>): void;
    protected _onGroupBodyHeightChangeDone(event: Event<Group<TileGrid<TTile>>>): void;
    /**
     * @returns the first fully visible tile at the scrollTop.
     */
    tileAtScrollTop(scrollTop: number): TTile;
}
//# sourceMappingURL=TileAccordion.d.ts.map