import * as contrib from 'blessed-contrib';
import { EventEmitter } from 'events';
import { BaseComponent } from './base.component';
import { GridPosition, GridSize, LayoutConfig } from '../types/monitoring';
export interface GridCell {
    component?: BaseComponent;
    position: GridPosition;
    widget?: any;
    occupied: boolean;
}
export declare class GridManager {
    private screen;
    private grid;
    private eventBus;
    private cells;
    private rows;
    private cols;
    private currentLayout;
    private layouts;
    private resizeTimeout?;
    constructor(screen: any, eventBus: EventEmitter, rows?: number, cols?: number);
    private initializeGrid;
    private initializeCells;
    private setupEventListeners;
    private handleResize;
    private handleComponentCreated;
    private handleComponentDestroyed;
    private registerDefaultLayouts;
    setLayout(layoutName: string): void;
    addComponent(component: BaseComponent, position: GridPosition): any;
    removeComponent(componentId: string): boolean;
    canPlaceComponent(position: GridPosition): boolean;
    getOptimalPosition(size: GridSize): GridPosition | null;
    getAvailableLayouts(): string[];
    getCurrentLayout(): string;
    getLayoutConfig(layoutName: string): LayoutConfig | undefined;
    registerLayout(layout: LayoutConfig): void;
    getGrid(): contrib.Grid;
    getGridSize(): {
        rows: number;
        cols: number;
    };
    getOccupiedCells(): GridPosition[];
    private findComponentById;
    private markCellsOccupied;
    private markCellsUnoccupied;
    private removeComponentFromGrid;
    private clearGrid;
    private recalculateLayout;
    destroy(): void;
}
//# sourceMappingURL=grid-manager.d.ts.map