import { IPCBridge, EdenEmitter } from "../ipc";
import { ViewManager } from "./ViewManager";
import { ViewBounds, WindowSize } from "@edenapp/types";
/**
 * Events emitted by the ViewHandler
 */
interface ViewHandlerEvents {
    "bounds-updated": ViewBounds;
    "global-bounds-changed": {
        workspaceBounds: ViewBounds;
        windowSize: WindowSize;
    };
}
export declare class ViewHandler extends EdenEmitter<ViewHandlerEvents> {
    private viewManager;
    private mouseTracker;
    private dragState;
    private resizeState;
    constructor(viewManager: ViewManager, ipcBridge: IPCBridge);
    /**
     * Update the bounds (position and size) of a specific view.
     */
    handleUpdateViewBounds(args: {
        appId: string;
        bounds: ViewBounds;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * Show or hide a specific view.
     */
    handleSetViewVisibility(args: {
        appId: string;
        visible: boolean;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * Bring an application's view to the front and focus it.
     */
    handleFocusApp(args: {
        appId: string;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * Update the available workspace bounds (e.g. after taskbar resize).
     */
    handleUpdateWorkspaceBounds(args: {
        bounds: ViewBounds;
        windowSize: WindowSize;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * Toggle between floating and tiled window modes.
     */
    handleToggleViewMode(args: {
        appId: string;
        mode?: "floating" | "tiled";
    }): Promise<{
        success: boolean;
    }>;
    /**
     * Start dragging a window.
     */
    handleStartDrag(args: {
        appId: string;
        startX: number;
        startY: number;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * End the current drag operation.
     */
    handleEndDrag(args: {
        appId: string;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * Handle global mouse up event to stop any active drag/resize operations.
     */
    handleGlobalMouseUp(): Promise<{
        success: boolean;
    }>;
    /**
     * Start resizing a window.
     */
    handleStartResize(args: {
        appId: string;
        startX: number;
        startY: number;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * End the current resize operation.
     */
    handleEndResize(args: {
        appId: string;
    }): Promise<{
        success: boolean;
    }>;
    /**
     * Get the current dimensions of the main window.
     */
    handleGetWindowSize(): Promise<WindowSize>;
}
export {};
//# sourceMappingURL=ViewHandler.d.ts.map