import { ElementRef, EventEmitter, OnDestroy, OnInit, QueryList } from '@angular/core';
import { CliEngineSnapshot, CliPanelConfig, CliPanelPosition, CliPanelState, ICliCommandProcessor, ICliModule, ICliPanelRef } from '@qodalis/cli-core';
import { CliEngine, CliEngineOptions } from '@qodalis/cli';
import { CliComponent } from '../cli/cli.component';
import { CollapsableContentComponent } from '../collapsable-content/collapsable-content.component';
import { TabStatus, GlobalStatus } from './cli-panel-status.service';
import * as i0 from "@angular/core";
export interface TerminalPane {
    id: number;
    widthPercent: number;
    snapshot?: CliEngineSnapshot;
}
export interface TerminalTab {
    id: number;
    title: string;
    isEditing: boolean;
    panes: TerminalPane[];
}
export interface TabContextMenu {
    visible: boolean;
    x: number;
    y: number;
    tabId: number;
}
export type CliPanelOptions = CliEngineOptions & CliPanelConfig;
/**
 * A component that displays the CLI on the bottom of page.
 */
export declare class CliPanelComponent implements OnInit, OnDestroy, ICliPanelRef<CliEngine> {
    private readonly elementRef;
    /**
     * The options for the CLI.
     */
    options?: CliPanelOptions;
    /**
     * Optional list of CLI modules to register with each terminal pane.
     */
    modules?: ICliModule[];
    /**
     * Optional list of command processors to register with each terminal pane.
     * This allows passing processors without Angular DI (framework-agnostic pattern).
     * @deprecated Use modules instead.
     */
    processors?: ICliCommandProcessor[];
    onClose: EventEmitter<void>;
    collapsed?: boolean;
    collapsedChange: EventEmitter<boolean>;
    hidden?: boolean;
    hiddenChange: EventEmitter<boolean>;
    maximized?: boolean;
    maximizedChange: EventEmitter<boolean>;
    activeTabId?: number;
    activeTabIdChange: EventEmitter<number>;
    position?: CliPanelPosition;
    positionChange: EventEmitter<CliPanelPosition>;
    height?: number;
    heightChange: EventEmitter<number>;
    width?: number;
    widthChange: EventEmitter<number>;
    onTabAdded: EventEmitter<{
        tabId: number;
    }>;
    onTabClosed: EventEmitter<{
        tabId: number;
    }>;
    onPaneSplit: EventEmitter<{
        paneId: number;
        tabId: number;
    }>;
    onPaneClosed: EventEmitter<{
        paneId: number;
    }>;
    collapsableContent: CollapsableContentComponent;
    cliComponents: QueryList<CliComponent>;
    currentPosition: CliPanelPosition;
    themeStyles: Record<string, string>;
    visible: boolean;
    tabs: TerminalTab[];
    tabStatuses: Record<number, TabStatus>;
    activePaneId: number;
    private _internalActiveTabId;
    private _internalCollapsed;
    private _internalHidden;
    private _internalMaximized;
    private _internalHeight;
    private _internalWidth;
    private nextTabId;
    private nextPaneId;
    private statusService;
    private destroy$;
    globalStatus: GlobalStatus;
    protected get resolvedCollapsed(): boolean;
    protected get resolvedHidden(): boolean;
    protected get resolvedMaximized(): boolean;
    protected get resolvedActiveTabId(): number;
    protected get resolvedHeight(): number;
    protected get resolvedWidth(): number;
    protected get resolvedPosition(): CliPanelPosition;
    contextMenu: TabContextMenu;
    paneResizing: boolean;
    private paneResizeTabId;
    private paneResizeDividerIndex;
    private paneResizeStartX;
    private paneResizeStartWidths;
    private paneResizeContainerWidth;
    private static readonly MIN_PANE_WIDTH_PERCENT;
    protected terminalHeight: string;
    protected initialized: boolean;
    private themeObserver?;
    constructor(elementRef: ElementRef);
    ngOnInit(): void;
    ngOnDestroy(): void;
    onDocumentClick(event: MouseEvent): void;
    onEscapeKey(): void;
    onPositionChange(position: CliPanelPosition): void;
    onToggle($event: boolean): void;
    onContentSizeChange(_event: number): void;
    addTab(title?: string): number;
    closeTab(id: number): void;
    selectTab(id: number): void;
    trackByTabId(_index: number, tab: TerminalTab): number;
    getTabDotClass(tabId: number): string;
    onPaneEngineReady(tabId: number, paneId: number, engine: CliEngine): void;
    trackByPaneId(_index: number, pane: TerminalPane): number;
    startRename(tab: TerminalTab): void;
    onTabDoubleClick(tab: TerminalTab): void;
    commitRename(tab: TerminalTab, value: string): void;
    onRenameKeydown(event: KeyboardEvent, tab: TerminalTab): void;
    onRenameBlur(event: FocusEvent, tab: TerminalTab): void;
    onTabContextMenu(event: MouseEvent, tab: TerminalTab): void;
    closeContextMenu(): void;
    contextMenuRename(): void;
    contextMenuDuplicate(): void;
    contextMenuClose(): void;
    contextMenuCloseOthers(): void;
    contextMenuCloseToTheRight(): void;
    contextMenuCloseAll(): void;
    splitPane(tabId?: number): number;
    closePane(paneId: number): void;
    contextMenuSplitRight(): void;
    onPaneResizeStart(event: MouseEvent, tabId: number, dividerIndex: number): void;
    onPaneResizeMove(event: MouseEvent): void;
    onPaneResizeEnd(): void;
    onPaneClick(tabId: number, paneId: number): void;
    open(): void;
    collapse(): void;
    toggleCollapse(): void;
    hide(): void;
    unhide(): void;
    toggleHide(): void;
    close(): void;
    maximize(): void;
    restore(): void;
    toggleMaximize(): void;
    resize(dimensions: {
        height?: number;
        width?: number;
    }): void;
    setPosition(pos: CliPanelPosition): void;
    renameTab(tabId: number, title: string): void;
    getEngine(paneId?: number): CliEngine | undefined;
    getState(): CliPanelState;
    private findTab;
    private getEngineForTab;
    private cancelAllEditing;
    private focusActiveTerminal;
    private focusPane;
    private normalizePaneWidths;
    private setupThemeSync;
    private syncThemeFromEngine;
    static ɵfac: i0.ɵɵFactoryDeclaration<CliPanelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CliPanelComponent, "cli-panel", never, { "options": { "alias": "options"; "required": false; }; "modules": { "alias": "modules"; "required": false; }; "processors": { "alias": "processors"; "required": false; }; "collapsed": { "alias": "collapsed"; "required": false; }; "hidden": { "alias": "hidden"; "required": false; }; "maximized": { "alias": "maximized"; "required": false; }; "activeTabId": { "alias": "activeTabId"; "required": false; }; "position": { "alias": "position"; "required": false; }; "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; }, { "onClose": "onClose"; "collapsedChange": "collapsedChange"; "hiddenChange": "hiddenChange"; "maximizedChange": "maximizedChange"; "activeTabIdChange": "activeTabIdChange"; "positionChange": "positionChange"; "heightChange": "heightChange"; "widthChange": "widthChange"; "onTabAdded": "onTabAdded"; "onTabClosed": "onTabClosed"; "onPaneSplit": "onPaneSplit"; "onPaneClosed": "onPaneClosed"; }, never, never, false, never>;
}
