import { Rectangle as Bounds } from "electron";
import { TilingConfig } from "@edenapp/types";
import { ViewInfo, ViewMode } from "./types";
/**
 * TilingManager
 *
 * Handles tiling calculations and view positioning for tiled window mode.
 * Extracted from ViewManager for better separation of concerns.
 */
export declare class TilingManager {
    private config;
    private workspaceBounds;
    constructor(config?: TilingConfig, workspaceBounds?: Bounds);
    /**
     * Update the workspace bounds used for tile calculations
     */
    setWorkspaceBounds(bounds: Bounds): void;
    /**
     * Get current workspace bounds
     */
    getWorkspaceBounds(): Bounds;
    /**
     * Update tiling configuration
     */
    setConfig(config: TilingConfig): void;
    /**
     * Get current tiling configuration
     */
    getConfig(): TilingConfig;
    /**
     * Check if tiling is enabled
     */
    isEnabled(): boolean;
    /**
     * Calculate bounds for a tile based on tiling configuration
     * @param tileIndex - Index of the tile to calculate
     * @param visibleCount - Total number of visible tiled views
     */
    calculateTileBounds(tileIndex: number, visibleCount: number): Bounds;
    /**
     * Get the next available tile index from a collection of views
     * @param views - Iterable of view information
     */
    getNextTileIndex(views: Iterable<ViewInfo>): number;
    /**
     * Get count of visible tiled views
     * @param views - Iterable of view information
     */
    getVisibleTiledCount(views: Iterable<ViewInfo>): number;
    /**
     * Recalculate bounds for all tiled views
     * Returns updated views with new bounds applied
     * @param views - Map of viewId to ViewInfo
     */
    recalculateTiledViews(views: Map<number, ViewInfo>): void;
    /**
     * Determine view mode based on manifest window config and tiling state
     */
    determineViewMode(windowMode?: "floating" | "tiled" | "both"): ViewMode;
}
//# sourceMappingURL=TilingManager.d.ts.map