import { AfterContentInit, AfterViewInit, ChangeDetectorRef, DestroyRef, ElementRef, EventEmitter, OnDestroy, QueryList } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
import { MenuComponent } from '@fundamental-ngx/core/menu';
import { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';
import { TabList } from '@fundamental-ngx/core/shared';
import { Subject } from 'rxjs';
import { TabItemDirective } from './tab-item/tab-item.directive';
import { TabLinkDirective } from './tab-link/tab-link.directive';
import { TabListComponentInterface } from './tab-list-component.interface';
import { TabPanelComponent } from './tab-panel/tab-panel.component';
import { TabInfo } from './tab-utils/tab-info.class';
import * as i0 from "@angular/core";
export type TabModes = 'icon-only' | 'process' | 'filter';
export type TabSizes = 's' | 'm' | 'l' | 'xl' | 'xxl';
/**
 * Represents a list of tab-panels.
 * @deprecated
 * Use `@fundamental-ngx/platform/icon-tab-bar` instead
 */
export declare class TabListComponent implements TabListComponentInterface, AfterContentInit, AfterViewInit, OnDestroy, TabList {
    private readonly _changeDetectorRef;
    readonly _contentDensityObserver: ContentDensityObserver;
    private readonly _destroyRef;
    /** Size of tab, it's mostly about adding spacing on tab container, available sizes 's' | 'm' | 'l' | 'xl' | 'xxl' */
    size: TabSizes;
    /**
     * Whether user wants to use tab component in certain mode. Modes available:
     * 'icon-only' | 'process' | 'filter'
     */
    mode: TabModes;
    /** Whether to move tabs overflowing in the tab bar to the dropdown */
    collapseOverflow: boolean;
    /** Limits the maximum number of tabs visible in the tab bar in collapseOverflow mode.
     * Other tabs will be moved to the collapsed tabs dropdown */
    maxVisibleTabs: number;
    /** Whether to open tab content one under another without collapsing */
    stackContent: boolean;
    /** Maximum height of the content */
    maxContentHeight: string;
    /** Whether to enable collapsing expanded tab on expanded tab click */
    collapsibleTabs: boolean;
    /** Initially selected tab (by id). First not disabled one if not specified. */
    defaultTab: Nullable<string>;
    /** Whether to try to keep selected tab (default value) on tabs change or to select default one (first if not specified). */
    selectDefaultOnTabsChange: boolean;
    /** Whether to focus the first focusable element in a tab panel when using stacked tabs. */
    focusFirstFocusableElement: boolean;
    /** Event emitted when the selected panel changes. */
    selectedTabChange: EventEmitter<TabPanelComponent>;
    /** Event emitted when the selected panel index changes. */
    selectedTabIndexChange: EventEmitter<number>;
    /** Event emitted when visible items count has been changed. */
    visibleItemsCount: EventEmitter<number>;
    /** Event emitted when hidden items count has been changed. */
    hiddenItemsCount: EventEmitter<number>;
    /** @hidden */
    tabPanels: QueryList<TabPanelComponent>;
    /** @hidden */
    tabHeaderLinks: QueryList<TabLinkDirective>;
    /** @hidden */
    tabHeaders: QueryList<TabItemDirective>;
    /** @hidden */
    overflowTrigger: ElementRef;
    /** @hidden */
    headerContainer: ElementRef;
    /** @hidden */
    _scrollbar: ScrollbarDirective;
    /** @hidden */
    menu: MenuComponent;
    /** @hidden */
    private _overflowLayout;
    /** @hidden */
    private readonly _scrollSpy;
    /** @hidden */
    get contentContainer(): ElementRef<HTMLElement>;
    /** @hidden Collection of tabs in original order */
    _tabArray: TabInfo[];
    /** @hidden Whether to disable scroll spy */
    _disableScrollSpy: boolean;
    /** @hidden */
    _init: boolean;
    /** @hidden */
    _currentNumberOfTabs: number;
    /** Scrollable element reference. */
    get scrollableElement(): Nullable<ElementRef>;
    /** Event is thrown always when tab is selected by keyboard actions */
    readonly tabSelected: Subject<number>;
    /** Event is thrown always, when some property is changed */
    readonly tabPanelPropertyChanged: Subject<void>;
    /** @hidden */
    private _subscriptions;
    /** @hidden */
    private readonly _zone;
    /** @hidden */
    constructor(_changeDetectorRef: ChangeDetectorRef, _contentDensityObserver: ContentDensityObserver, _destroyRef: DestroyRef);
    /** @hidden */
    ngAfterContentInit(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    _tabHeaderClickHandler(tabPanel: TabPanelComponent): void;
    /** @hidden */
    _tabHeaderKeydownHandler(event: KeyboardEvent, tabPanel: TabPanelComponent): void;
    /** @hidden */
    _overflowingTabHeaderClickHandler(tabPanel: TabPanelComponent): void;
    /** @hidden */
    selectTab(id: Nullable<string>): void;
    /** @hidden */
    highlightActiveTab(id: Nullable<string>): void;
    /** @hidden */
    _onTriggerKeydown(event: KeyboardEvent, menuRef: MenuComponent): void;
    /** @hidden */
    private get _tabPanelsChange$();
    /** @hidden */
    private _detectChanges;
    /** @hidden */
    private _setupTabPanelsChangeListeners;
    /** @hidden Setup mechanisms required for handling the stacked content behavior */
    private _initStackContentSubscription;
    /** @hidden */
    private _listenOnTabPanelsAndUpdateStorageStructures;
    /** @hidden */
    private _listenOnTabPanelsExpandedChange;
    /** @hidden */
    private _listenOnTabPanelsAndInitiallyExpandTabPanel;
    /** @hidden */
    private _listenOnPropertiesChange;
    /** @hidden */
    private _activateStackedTab;
    /** @hidden */
    private _activateExpandableTab;
    /** @hidden */
    private _expandTab;
    /** @hidden */
    private _scrollToPanel;
    /** @hidden Whether tab can be expanded/collapsed */
    private _canChangeExpandState;
    /** @hidden */
    private _selectedTabChange;
    static ɵfac: i0.ɵɵFactoryDeclaration<TabListComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TabListComponent, "fd-tab-list", never, { "size": { "alias": "size"; "required": false; }; "mode": { "alias": "mode"; "required": false; }; "collapseOverflow": { "alias": "collapseOverflow"; "required": false; }; "maxVisibleTabs": { "alias": "maxVisibleTabs"; "required": false; }; "stackContent": { "alias": "stackContent"; "required": false; }; "maxContentHeight": { "alias": "maxContentHeight"; "required": false; }; "collapsibleTabs": { "alias": "collapsibleTabs"; "required": false; }; "defaultTab": { "alias": "defaultTab"; "required": false; }; "selectDefaultOnTabsChange": { "alias": "selectDefaultOnTabsChange"; "required": false; }; "focusFirstFocusableElement": { "alias": "focusFirstFocusableElement"; "required": false; }; }, { "selectedTabChange": "selectedTabChange"; "selectedTabIndexChange": "selectedTabIndexChange"; "visibleItemsCount": "visibleItemsCount"; "hiddenItemsCount": "hiddenItemsCount"; }, ["tabPanels"], ["*"], true, never>;
}
