import React from 'react';
import { Tab as KuiTab, ToolbarText, MultiModalMode, MultiModalResponse, Button } from '@kui-shell/core';
import KuiContext from '../../Client/context';
import BaseSidecar, { Props, State } from './BaseSidecarV2';
import '../../../../web/css/static/ToolbarButton.scss';
import '../../../../web/scss/components/Sidecar/PatternFly.scss';
/**
 * One history entry, which is a `MultiModalResponse`, further parsed
 * out into buttons and tabs, and a pointer to the `currentTabIndex`.
 *
 */
interface HistoryEntry {
    currentTabIndex: number;
    viewButtons: Button[];
    drilldownButtons: Button[];
    tabs: Readonly<MultiModalMode[]>;
    toolbarText: ToolbarText;
    defaultMode: number;
}
export declare function getStateFromMMR(tab: KuiTab, response: MultiModalResponse): HistoryEntry;
type TopNavState = HistoryEntry & State & {
    response: MultiModalResponse;
    toolbarText: MultiModalResponse['toolbarText'];
    args: {
        argsForMode: MultiModalResponse['argsForMode'];
        argvNoOptions: Props<MultiModalResponse>['argvNoOptions'];
        parsedOptions: Props<MultiModalResponse>['parsedOptions'];
    };
};
/**
 *
 * TopNavSidecar
 * -----------------------
 * | <TitleBar/>         |
 * -----------------------
 * | nameHash?           |
 * | name                |
 * |---------------------|
 * | Tab | Tab |  ...    | <Tab/> from here down  - this is header()
 * |---------------------|                  |
 * | <Toolbar/>          |              <ToolbarContainer/> from here down
 * |---------------------|                  |                        |
 * | <KuiContent/>       |                  |                        |
 * |                     |               to here                  to here
 * -----------------------
 * | <Toolbar/>          | this is footer()
 * -----------------------
 */
export default class TopNavSidecar extends BaseSidecar<MultiModalResponse, TopNavState> {
    static contextType: React.Context<import("../../Client/KuiConfiguration").default>;
    readonly context: React.ContextType<typeof KuiContext>;
    constructor(props: Props<MultiModalResponse>);
    /** @return a `HistoryEntry` for the given `Response` */
    static getDerivedStateFromProps(props: Props<MultiModalResponse>, state?: TopNavState): TopNavState;
    protected headerBodyStyle(): {
        'flex-direction': string;
    };
    /** return the pretty name or unadulterated name from the response */
    private prettyName;
    /** ToolbarContainer updated the toolbar */
    private didUpdateToolbar;
    private readonly _didUpdateToolbar;
    /** Tell the world that we have changed the focused mode */
    private broadcastFocusChange;
    /** eventKey property for a Tab */
    private eventKey;
    /** idx from the encoded eventKey */
    private idxFromEventKey;
    /** User has changed selected Tab */
    private onSelect;
    private readonly _onSelect;
    private tabs;
    private _bodyContentMemo;
    protected bodyContent(idx: number): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
    private tabContent;
    /** Return a collection of badge elements */
    private badges;
    protected header(): JSX.Element;
    /**
     * The footer offers drilldown buttons that we assume depend on the
     * client supporting command execution. For example, a static single
     * page web app would not allow for this kind of functionality.
     *
     */
    private footer;
    private kindBreadcrumb;
    /** Show resource name as breadcrumb */
    private nameBreadcrumb;
    private versionBreadcrumb;
    private nameHashBreadcrumb;
    private namespaceBreadcrumb;
    private readonly _style;
    render(): JSX.Element;
}
export {};
