import { IDisposable, CompositeDisposable } from '../../../lifecycle';
import { Event } from '../../../events';
import { Tab } from '../tab/tab';
import { DockviewGroupPanel } from '../../dockviewGroupPanel';
import { IDockviewPanel } from '../../dockviewPanel';
import { DockviewComponent } from '../../dockviewComponent';
import { DockviewWillShowOverlayLocationEvent } from '../../events';
import { DockviewHeaderDirection } from '../../options';
export interface TabDropIndexEvent {
    readonly event: DragEvent | PointerEvent;
    readonly index: number;
    readonly targetTabGroupId?: string | null;
}
export interface TabDragEvent {
    /** Narrow with `instanceof DragEvent` before reading `dataTransfer`. */
    readonly nativeEvent: DragEvent | PointerEvent;
    readonly panel: IDockviewPanel;
}
export interface GroupDragEvent {
    /** Narrow with `instanceof DragEvent` before reading `dataTransfer`. */
    readonly nativeEvent: DragEvent | PointerEvent;
    readonly group: DockviewGroupPanel;
}
export interface ITabsContainer extends IDisposable {
    readonly element: HTMLElement;
    readonly panels: string[];
    readonly size: number;
    readonly onDrop: Event<TabDropIndexEvent>;
    readonly onTabDragStart: Event<TabDragEvent>;
    readonly onGroupDragStart: Event<GroupDragEvent>;
    readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
    hidden: boolean;
    direction: DockviewHeaderDirection;
    delete(id: string): void;
    indexOf(id: string): number;
    setActive(isGroupActive: boolean): void;
    setActivePanel(panel: IDockviewPanel): void;
    isActive(tab: Tab): boolean;
    closePanel(panel: IDockviewPanel): void;
    openPanel(panel: IDockviewPanel, index?: number): void;
    setRightActionsElement(element: HTMLElement | undefined): void;
    setLeftActionsElement(element: HTMLElement | undefined): void;
    setPrefixActionsElement(element: HTMLElement | undefined): void;
    show(): void;
    hide(): void;
    updateDragAndDropState(): void;
    updateTabGroups(): void;
    refreshTabGroupAccent(): void;
}
export declare class TabsContainer extends CompositeDisposable implements ITabsContainer {
    private readonly accessor;
    private readonly group;
    private readonly _element;
    private readonly tabs;
    private readonly rightActionsContainer;
    private readonly leftActionsContainer;
    private readonly preActionsContainer;
    private readonly voidContainer;
    private rightActions;
    private leftActions;
    private preActions;
    private _hidden;
    private _direction;
    private dropdownPart;
    private _overflowTabs;
    private _overflowTabGroups;
    private readonly _dropdownDisposable;
    private readonly _onDrop;
    readonly onDrop: Event<TabDropIndexEvent>;
    get onTabDragStart(): Event<TabDragEvent>;
    private readonly _onGroupDragStart;
    readonly onGroupDragStart: Event<GroupDragEvent>;
    private readonly _onWillShowOverlay;
    readonly onWillShowOverlay: Event<DockviewWillShowOverlayLocationEvent>;
    get panels(): string[];
    get size(): number;
    get hidden(): boolean;
    set hidden(value: boolean);
    get direction(): DockviewHeaderDirection;
    set direction(value: DockviewHeaderDirection);
    get element(): HTMLElement;
    constructor(accessor: DockviewComponent, group: DockviewGroupPanel);
    show(): void;
    hide(): void;
    setRightActionsElement(element: HTMLElement | undefined): void;
    setLeftActionsElement(element: HTMLElement | undefined): void;
    setPrefixActionsElement(element: HTMLElement | undefined): void;
    isActive(tab: Tab): boolean;
    indexOf(id: string): number;
    setActive(_isGroupActive: boolean): void;
    delete(id: string): void;
    setActivePanel(panel: IDockviewPanel): void;
    openPanel(panel: IDockviewPanel, index?: number): void;
    closePanel(panel: IDockviewPanel): void;
    private updateClassnames;
    private toggleDropdown;
    updateDragAndDropState(): void;
    updateTabGroups(): void;
    refreshTabGroupAccent(): void;
}
