import React from 'react';
import TabModel from './TabModel';
import { TabContentOptions } from './TabContent';
import { TopTabStripeConfiguration } from './TopTabStripe';
import CommonProps from './props/Common';
import BrandingProps from './props/Branding';
import InterfaceProps from './props/Interface';
import GuidebookProps from './props/Guidebooks';
import '../../../web/css/static/TabContainer.scss';
import '../../../web/scss/components/Page/_index.scss';
/**
 *
 * TabContainer
 * ----------------
 * | TopTabStripe |
 * |--------------|
 * |              |
 * | TabContent[] |
 * |              |
 * ----------------
 *
 */
type Props = TabContentOptions & TopTabStripeConfiguration & BrandingProps & InterfaceProps & GuidebookProps & React.PropsWithChildren<Pick<CommonProps, 'closeableTabs' | 'noTopTabs'>>;
interface State {
    /** hamburger menu expanded? */
    isSidebarOpen: boolean;
    /** list of current tabs; one TabContent for each */
    tabs: TabModel[];
    /** current active tab index */
    activeIdx: number;
}
export default class TabContainer extends React.PureComponent<Props, State> {
    /** Has the first tab activated itself? */
    private isFirstTabReady;
    constructor(props: Props);
    componentDidMount(): void;
    /** save tab state such as CWD prior to a tab switch */
    private captureState;
    /** restore tab state after a tab switch */
    private restoreState;
    /**
     * Switch Tab event: update state so that activeIdx=idx
     *
     */
    private onSwitchTab;
    private readonly _onSwitchTab;
    /**
     * Close Tab event
     *
     */
    private onCloseTab;
    private readonly _onCloseTab;
    private listenForTabClose;
    private newTabModel;
    /**
     * New Tab event
     *
     */
    private onNewTab;
    private readonly _onNewTab;
    private graft;
    /** Graft the tab `uuid` */
    private children;
    private willUpdateTopTabButtons;
    private onTabReady;
    private readonly _onTabReady;
    /** Render the row of Tabs along the top */
    private topTabStripe;
    private readonly _onSetTabTitle;
    /** Render the content of the tabs */
    private tabContent;
    private readonly toggleSidebar;
    private readonly toggleSidebarFromSidebar;
    private get needsSidebar();
    private sidebar;
    render(): JSX.Element;
}
export {};
