import { EventEmitter } from 'events';
export interface PanelConfig {
    id: string;
    title: string;
    component: any;
    position: {
        top: number | string;
        left: number | string;
        width: number | string;
        height: number | string;
    };
    zIndex?: number;
    resizable?: boolean;
    movable?: boolean;
    border?: {
        type?: string;
        fg?: string;
        bg?: string;
    };
    visible?: boolean;
    state?: 'minimized' | 'maximized' | 'normal' | 'fullscreen';
}
export interface LayoutPreset {
    name: string;
    description: string;
    panels: PanelConfig[];
    minSize: {
        width: number;
        height: number;
    };
}
export interface LayoutState {
    currentLayout: string;
    panelStates: Map<string, PanelConfig>;
    fullscreenPanel?: string;
    history: string[];
}
export declare class LayoutManager {
    private screen;
    private eventBus;
    private layouts;
    private currentState;
    private panels;
    private originalPositions;
    constructor(screen: any, eventBus: EventEmitter);
    private initializeDefaultLayouts;
    private setupEventHandlers;
    registerPanel(panelId: string, component: any): void;
    unregisterPanel(panelId: string): void;
    switchLayout(layoutName: string): void;
    private applyLayout;
    private applyPanelConfig;
    private calculatePosition;
    toggleFullscreen(panelId: string): void;
    private enterFullscreen;
    private exitFullscreen;
    minimizePanel(panelId: string): void;
    maximizePanel(panelId: string): void;
    restorePanel(panelId: string): void;
    private hidePanel;
    private storeCurrentStates;
    private handleScreenResize;
    private findAndSwitchToCompatibleLayout;
    private getTerminalSize;
    getAvailableLayouts(): string[];
    getCurrentLayout(): string;
    getLayoutInfo(layoutName?: string): LayoutPreset | null;
    getPanelState(panelId: string): PanelConfig | null;
    isFullscreen(): boolean;
    getFullscreenPanel(): string | undefined;
    addLayoutPreset(preset: LayoutPreset): void;
    removeLayoutPreset(layoutName: string): void;
    saveCurrentState(): LayoutPreset;
    destroy(): void;
}
//# sourceMappingURL=layout-manager.d.ts.map