import type { Panel, PanelRegistration, PanelCategory } from './types.js';
export interface Pane {
    panels: Panel[];
    activeIndex: number;
}
export interface WorkspaceTab {
    readonly id: string;
    readonly name: string;
    readonly icon: string;
    readonly pane: 'top' | 'bottom';
    readonly active: boolean;
    readonly focused: boolean;
}
export declare class PanelManager {
    private registry;
    private retainedPanels;
    private _visible;
    private _splitRatio;
    private topPane;
    private bottomPane;
    private _focusedPane;
    private _verticalSplitRatio;
    private _bottomPaneVisible;
    registerType(registration: PanelRegistration): void;
    getRegisteredTypes(): PanelRegistration[];
    getTypesByCategory(): Map<PanelCategory, PanelRegistration[]>;
    prewarmRegistered(): void;
    open(panelId: string, pane?: 'top' | 'bottom'): Panel;
    close(panelId: string): void;
    /**
     * Move a panel to a specific pane. If panelId is omitted, moves the active
     * panel from the currently focused pane.
     */
    moveToPane(dest: 'top' | 'bottom', panelId?: string): void;
    /**
     * Move a panel to the other pane. If panelId is omitted, moves the active
     * panel from the currently focused pane.
     */
    moveToOtherPane(panelId?: string): void;
    nextPanel(): void;
    nextWorkspaceTab(): void;
    prevWorkspaceTab(): void;
    prevPanel(): void;
    activateByIndex(index: number): void;
    activateById(panelId: string): void;
    focusPane(pane: 'top' | 'bottom'): void;
    getFocusedPane(): 'top' | 'bottom';
    /** Get the currently active (focused) panel, or null if none. */
    getActivePanel(): Panel | null;
    togglePaneFocus(): void;
    toggleBottomPane(): void;
    isBottomPaneVisible(): boolean;
    getTopPane(): Readonly<Pane>;
    getBottomPane(): Readonly<Pane>;
    getOpen(): Panel[];
    /**
     * Returns all panels across both panes (top then bottom).
     * Use this when you need to know if any panels exist at all.
     */
    getAllOpen(): Panel[];
    getActive(): Panel | null;
    getPanel(panelId: string): Panel | null;
    getPaneOf(panelId: string): 'top' | 'bottom' | null;
    getWorkspaceTabs(): WorkspaceTab[];
    activateWorkspaceIndex(index: number): void;
    toggle(): void;
    show(): void;
    hide(): void;
    isVisible(): boolean;
    getSplitRatio(): number;
    setSplitRatio(ratio: number): void;
    widenLeft(): void;
    widenRight(): void;
    getLeftWidth(totalWidth: number): number;
    getRightWidth(totalWidth: number): number;
    getVerticalSplitRatio(): number;
    setVerticalSplitRatio(ratio: number): void;
    destroyAll(): void;
    private _getPane;
    private _getFocusedPane;
    private _findPaneOf;
    private _moveBetweenPanes;
    private _cycleWorkspaceTab;
    private _obtainPanel;
    private _getRegistration;
    private _shouldRetain;
    private _activateByIdInPane;
}
//# sourceMappingURL=panel-manager.d.ts.map