import { ChangeDetectorRef, ElementRef, EventEmitter, NgZone, OnChanges, TemplateRef } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';
import { Subject } from 'rxjs';
import { TabItemState } from '../tab-item/tab-item.directive';
import { TabListComponentInterface } from '../tab-list-component.interface';
import * as i0 from "@angular/core";
export declare class TabPanelStateChange {
    target: TabPanelComponent;
    state: boolean;
    /**
     * Tab panel state change event
     * @param target Tab panel that is being changed
     * @param state New state of the tab panel
     */
    constructor(target: TabPanelComponent, state: boolean);
}
/**
 * Represents the body of a tab element. It also contains elements pertaining to the associated tab header.
 */
export declare class TabPanelComponent implements OnChanges {
    elementRef: ElementRef;
    private _changeDetRef;
    private _ngZone;
    private readonly _tabsComponent;
    /** Id of the tab. If none is provided, one will be generated. */
    id: string;
    /** Aria-label of the tab. */
    ariaLabel: Nullable<string>;
    /** Id of the element that labels the tab. */
    ariaLabelledBy: Nullable<string>;
    /** The title of tab, depending on mode used, it will be placed in different position */
    title: Nullable<string>;
    /** The count of tab, depending on mode used, it will be placed in different position */
    count: Nullable<string>;
    /** Glyph icon, it can be used only on  */
    glyph: string;
    /** Glyph icon, it can be used only on  */
    header: boolean;
    /** Disabled state for tab item */
    disabled: boolean;
    /** Semantic type of the tab item */
    tabState: Nullable<TabItemState>;
    /** Event that is emitted when the tab panel has been opened. */
    opened: EventEmitter<void>;
    /** Event that is emitted when the tab panel has been closed. */
    closed: EventEmitter<void>;
    /** @hidden */
    titleTemplate: TemplateRef<any>;
    /** @hidden */
    _expandedClass: boolean;
    /** @hidden Event that is emitted when the tab panel . */
    _expandedStateChange: Subject<TabPanelStateChange>;
    /** @hidden */
    _forcedVisibility: boolean;
    /** @hidden Whether to display tab panel content */
    private _expanded;
    /** @hidden */
    get _panelId(): string;
    /** @hidden */
    constructor(elementRef: ElementRef, _changeDetRef: ChangeDetectorRef, _ngZone: NgZone, _tabsComponent: TabListComponentInterface | null);
    /** @hidden
     * Thanks to OnPush change strategy detection on tab-list parent component,
     * every change of any property should be reported. */
    ngOnChanges(): void;
    /** Whether tab panel content is expanded */
    get expanded(): boolean;
    /** Whether to expand tab panel content */
    open(open: boolean): void;
    /** @hidden Set new expand state */
    _expand(expanded: boolean): void;
    /** @hidden */
    _focusFirstFocusableElement(): void;
    /** @hidden */
    private _updateHost;
    static ɵfac: i0.ɵɵFactoryDeclaration<TabPanelComponent, [null, null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<TabPanelComponent, "fd-tab", never, { "id": { "alias": "id"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "title": { "alias": "title"; "required": false; }; "count": { "alias": "count"; "required": false; }; "glyph": { "alias": "glyph"; "required": false; }; "header": { "alias": "header"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "tabState": { "alias": "tabState"; "required": false; }; }, { "opened": "opened"; "closed": "closed"; }, ["titleTemplate"], ["*"], true, never>;
}
