import * as H from 'history';
import * as React from 'react';
import { Unsubscribable } from 'rxjs';
import { Tab } from '../components/Tabs';
/**
 * A tab and corresponding content to display in the panel.
 */
export interface PanelItem extends Tab<string> {
    /**
     * Controls the relative order of panel items. The items are laid out from highest priority (at the beginning)
     * to lowest priority (at the end). The default is 0.
     */
    priority: number;
    /** The content element to display when the tab is active. */
    element: React.ReactElement<any>;
}
interface Props {
    isLightTheme: boolean;
    location: H.Location;
    history: H.History;
}
interface State {
    /** Panel title. */
    title?: React.ReactFragment;
    /** Panel items to display. */
    items: PanelItem[];
}
/**
 * The panel, which is a tabbed component with contextual information. Components rendering the panel should
 * generally use ResizablePanel, not Panel.
 *
 * Other components can contribute panel items to the panel.
 */
export declare class Panel extends React.PureComponent<Props, State> {
    private static forceUpdates;
    private static newItems;
    private static newTitles;
    private static itemsToRemove;
    private static titlesToRemove;
    private subscriptions;
    state: State;
    /**
     * Set the panel title. Do not call directly; use PanelTitlePortal instead.
     * @param fragment to set as the panel title
     */
    static setTitle(fragment: React.ReactFragment | undefined): Unsubscribable;
    /**
     * Add an item to the panel. Do not call directly; use PanelItemPortal instead.
     * @param item to add to the header
     */
    static addItem(item: PanelItem): Unsubscribable;
    /**
     * Forces an update of items in the panel. Do not call directly; use PanelItemPortal instead.
     */
    static forceUpdate(): void;
    componentDidMount(): void;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
    private onSelectTab;
    private onDismiss;
}
/** A wrapper around Panel that makes it resizable. */
export declare const ResizablePanel: React.SFC<Props>;
export {};
//# sourceMappingURL=Panel.d.ts.map