import { CompositeField, EnumObject, InitModelOf, Menu, ObjectOrChildModel, PropertyChangeEvent, Tab, TabAreaStyle, TabBoxEventMap, TabBoxHeader, TabBoxModel, TabItem } from '../../../index';
/**
 * Tab-area = where the 1-n tabs are placed (may have multiple runs = lines).
 * Tab-content = where the content of a single tab is displayed.
 */
export declare class TabBox extends CompositeField implements TabBoxModel {
    model: TabBoxModel;
    eventMap: TabBoxEventMap;
    self: TabBox;
    selectedTab: TabItem;
    header: TabBoxHeader;
    tabItems: TabItem[];
    tabAreaStyle: TabAreaStyle;
    /** @internal */
    _$tabContent: JQuery;
    protected _statusPositionOrig: any;
    protected _tabBoxHeaderPropertyChangeHandler: any;
    constructor();
    static MenuType: {
        /**
         * In most cases, it is not necessary to set this menu type for a tab box menu because it does not affect the
         * visibility of the menu unless the menu is used for widgets other than the tab box. In this case, the menu type can
         * be used to ensure that the menu is only visible on tab boxes.
         */
        readonly Header: "TabBox.Header";
    };
    protected _init(model: InitModelOf<this>): void;
    protected _initProperties(model: TabBoxModel): void;
    protected _destroy(): void;
    protected _render(): void;
    protected _renderProperties(): void;
    protected _remove(): void;
    getContextMenuItems(onlyVisible?: boolean): Menu[];
    protected _removeMenus(): void;
    deleteTabItem(tabItem: TabItem): void;
    /**
     * Inserts a new tab item.
     * @param index The position where the new tab should be inserted. By default, it will be appended at the end of the existing tab items.
     */
    insertTabItem(tabItem: ObjectOrChildModel<TabItem>, index?: number): void;
    setTabItems(tabItems: ObjectOrChildModel<TabItem>[]): void;
    protected _setTabItems(tabItems: TabItem[]): void;
    protected _renderTabItems(tabItems: TabItem[]): void;
    protected _removeTabItems(tabItems: TabItem[]): void;
    protected _removeTabContent(): void;
    /**
     * @param tabItem if a string is provided, the tab will be resolved automatically
     */
    setSelectedTab(tabItem: TabItem | string): void;
    protected _setSelectedTab(tabItem: TabItem): void;
    protected _renderSelectedTab(): void;
    protected _removeSelectedTab(): void;
    protected _updateScrollShadow(): void;
    setTabAreaStyle(tabAreaStyle: TabAreaStyle): void;
    protected _setTabAreaStyle(tabAreaStyle: TabAreaStyle): void;
    protected _renderStatusPosition(): void;
    protected _updateFieldStatus(): void;
    protected _renderLabelVisible(): void;
    getFields(): TabItem[];
    getTabItem(tabId: string): TabItem;
    /**
     * Focuses the selected tab.
     * @returns true if the tab could be focused, false if not.
     */
    focus(): boolean;
    /**
     * @returns the focusable element of the selected tab.
     */
    getFocusableElement(): HTMLElement | JQuery;
    isTabItemFocused(tabItem: TabItem): boolean;
    focusTabItem(tabItem: TabItem): boolean;
    getTabForItem(tabItem: TabItem): Tab;
    protected _onTabBoxHeaderPropertyChange(event: PropertyChangeEvent): void;
}
export type TabBoxMenuType = EnumObject<typeof TabBox.MenuType>;
//# sourceMappingURL=TabBox.d.ts.map