import { IDockviewComponent, SerializedDockview } from '../dockview/dockviewComponent';
import { AddGroupOptions, AddPanelOptions, MovementOptions } from '../dockview/options';
import { Direction, GroupChangeEvent } from '../gridview/baseComponentGridview';
import { AddComponentOptions, IGridviewComponent, SerializedGridview } from '../gridview/gridviewComponent';
import { GridviewPanel, IGridviewPanel } from '../gridview/gridviewPanel';
import { IGroupPanel } from '../groupview/groupPanel';
import { AddPaneviewCompponentOptions, SerializedPaneview, IPaneviewComponent } from '../paneview/paneviewComponent';
import { IPaneviewPanel } from '../paneview/paneviewPanel';
import { AddSplitviewComponentOptions, ISplitviewComponent, SerializedSplitview, SplitviewComponentUpdateOptions } from '../splitview/splitviewComponent';
import { Orientation, Sizing } from '../splitview/core/splitview';
import { ISplitviewPanel } from '../splitview/splitviewPanel';
import { GroupviewPanel } from '../groupview/groupviewPanel';
import { Event } from '../events';
import { IDisposable } from '../lifecycle';
export interface CommonApi {
    readonly height: number;
    readonly width: number;
    readonly onDidLayoutChange: Event<void>;
    focus(): void;
    layout(width: number, height: number): void;
    resizeToFit(): void;
}
export declare class SplitviewApi implements CommonApi {
    private readonly component;
    get minimumSize(): number;
    get maximumSize(): number;
    get height(): number;
    get width(): number;
    get length(): number;
    get onDidLayoutChange(): Event<void>;
    get orientation(): Orientation;
    constructor(component: ISplitviewComponent);
    updateOptions(options: SplitviewComponentUpdateOptions): void;
    removePanel(panel: ISplitviewPanel, sizing?: Sizing): void;
    setVisible(panel: ISplitviewPanel, isVisible: boolean): void;
    getPanels(): ISplitviewPanel[];
    focus(): void;
    getPanel(id: string): ISplitviewPanel | undefined;
    setActive(panel: ISplitviewPanel): void;
    layout(width: number, height: number): void;
    addPanel(options: AddSplitviewComponentOptions): void;
    resizeToFit(): void;
    movePanel(from: number, to: number): void;
    fromJSON(data: SerializedSplitview, deferComponentLayout?: boolean): void;
    toJSON(): SerializedSplitview;
}
export declare class PaneviewApi implements CommonApi {
    private readonly component;
    get width(): number;
    get height(): number;
    get minimumSize(): number;
    get maximumSize(): number;
    get onDidLayoutChange(): Event<void>;
    constructor(component: IPaneviewComponent);
    getPanels(): IPaneviewPanel[];
    removePanel(panel: IPaneviewPanel): void;
    getPanel(id: string): IPaneviewPanel | undefined;
    movePanel(from: number, to: number): void;
    focus(): void;
    layout(width: number, height: number): void;
    addPanel(options: AddPaneviewCompponentOptions): IDisposable;
    resizeToFit(): void;
    fromJSON(data: SerializedPaneview, deferComponentLayout?: boolean): void;
    toJSON(): SerializedPaneview;
}
export declare class GridviewApi implements CommonApi {
    private readonly component;
    get width(): number;
    get height(): number;
    get minimumHeight(): number;
    get maximumHeight(): number;
    get minimumWidth(): number;
    get maximumWidth(): number;
    get onGridEvent(): Event<GroupChangeEvent>;
    get onDidLayoutChange(): Event<void>;
    get panels(): GridviewPanel[];
    get orientation(): Orientation;
    set orientation(value: Orientation);
    constructor(component: IGridviewComponent);
    focus(): void;
    layout(width: number, height: number, force?: boolean): void;
    addPanel(options: AddComponentOptions): void;
    removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
    movePanel(panel: IGridviewPanel, options: {
        direction: Direction;
        reference: string;
        size?: number;
    }): void;
    resizeToFit(): void;
    getPanel(id: string): GridviewPanel | undefined;
    toggleVisibility(panel: IGridviewPanel): void;
    setVisible(panel: IGridviewPanel, visible: boolean): void;
    setActive(panel: IGridviewPanel): void;
    fromJSON(data: SerializedGridview, deferComponentLayout?: boolean): void;
    toJSON(): SerializedGridview;
}
export declare class DockviewApi implements CommonApi {
    private readonly component;
    get width(): number;
    get height(): number;
    get minimumHeight(): number;
    get maximumHeight(): number;
    get minimumWidth(): number;
    get maximumWidth(): number;
    get size(): number;
    get totalPanels(): number;
    get onGridEvent(): Event<GroupChangeEvent>;
    get onDidLayoutChange(): Event<void>;
    get panels(): IGroupPanel[];
    get groups(): GroupviewPanel[];
    get activePanel(): IGroupPanel | undefined;
    get activeGroup(): GroupviewPanel | undefined;
    constructor(component: IDockviewComponent);
    getTabHeight(): number | undefined;
    setTabHeight(height: number | undefined): void;
    focus(): void;
    getPanel(id: string): IGroupPanel | undefined;
    setActivePanel(panel: IGroupPanel): void;
    layout(width: number, height: number, force?: boolean): void;
    addPanel(options: AddPanelOptions): IGroupPanel;
    removePanel(panel: IGroupPanel): void;
    addEmptyGroup(options?: AddGroupOptions): void;
    moveToNext(options?: MovementOptions): void;
    moveToPrevious(options?: MovementOptions): void;
    closeAllGroups(): Promise<boolean>;
    removeGroup(group: GroupviewPanel): void;
    resizeToFit(): void;
    getGroup(id: string): GroupviewPanel | undefined;
    fromJSON(data: SerializedDockview): void;
    toJSON(): SerializedDockview;
}
