import { TabContent, TabLabel } from '../interfaces';
import { ComponentPortal } from '@angular/cdk/portal';
import { Type } from '@angular/core';
import { BehaviorSubject, Observable, Subject } from 'rxjs';
import { TabLabelStream } from './tab-label-stream';
/**
 * Holds the information of tab opened in a tab view.
 *
 * See {@link TabView} for more information.
 */
export declare class OpenedTab implements TabContent {
    uniqueId: string;
    /**
     * See {@link TabContent#label}.
     */
    label: TabLabel;
    /**
     * See [TabContent.canBeClosed]{@link TabContent#canBeClosed}.
     */
    canBeClosed: boolean;
    /**
     * See [TabContent.tabContentComponent]{@link TabContent#tabContentComponent}.
     */
    tabContentComponent: Type<any>;
    /**
     * See [TabContent.injectedObject]{@link TabContent#injectedObject}.
     */
    injectedObject: object;
    /**
     * See [TabContent.order]{@link TabContent#order}.
     */
    order: number;
    /**
     * See [TabContent.initial]{@link TabContent#initial}.
     */
    initial: boolean;
    /**
     * See [TabContent.parentUniqueId]{@link TabContent#parentUniqueId}.
     */
    parentUniqueId: any;
    /**
     * Reference to the component portal that is used to display the tab content
     */
    portal: ComponentPortal<any>;
    /**
     * Whether the tab was initialized after it's creation.
     *
     * See [TabGroup.initializeTab()]{@link TabView#initializeTab} for more information.
     */
    isTabInitialized: boolean;
    /**
     * A stream that is injected into each tab and is used to inform that tab whenever it is selected or deselected
     */
    tabSelected$: BehaviorSubject<boolean>;
    /**
     * A stream that is injected into each tab and is used to inform the tab about its termination
     */
    tabClosed$: Subject<void>;
    protected _label$: TabLabelStream;
    /**
     * @param tabContent - content of the tab
     * @param uniqueId - unique identifier for the tab
     */
    constructor(tabContent: TabContent, uniqueId: string);
    setIcon(icon: string): void;
    setText(text: string): void;
    getIcon$(): Observable<string>;
    getIcon(): string | undefined;
    getText$(): Observable<string>;
    /**
     * Closes the stream held in this object
     */
    destroy(): void;
}
