import { B as Bounds, f as Size, g as SnapZone, W as WindowManager, b as WindowState } from './types-DdCtDHgt.cjs'; declare function clamp(value: number, min: number, max: number): number; declare function clampSize(size: Size, min: Size, max: Size | null): Size; declare function clampToViewport(bounds: Bounds, viewport: Size, minVisible: number): Bounds; declare function boundsEqual(a: Bounds, b: Bounds): boolean; declare function zoneBounds(zone: SnapZone, viewport: Size): Bounds; interface SnapDetectOptions { threshold?: number; cornerSize?: number; } declare function detectSnapZone(x: number, y: number, viewport: Size, options?: SnapDetectOptions): SnapZone | null; interface MagnetResult { x: number; y: number; snappedX: boolean; snappedY: boolean; } declare function magnetize(bounds: Bounds, targets: readonly Bounds[], threshold: number): MagnetResult; interface AnnouncerMessages { opened(title: string): string; closed(title: string): string; minimized(title: string): string; restored(title: string): string; maximized(title: string): string; snapped(title: string, zone: string): string; focused(title: string): string; } declare const defaultMessages: AnnouncerMessages; interface Announcer { element: HTMLElement; announce(message: string): void; destroy(): void; } declare function createAnnouncer(wm: WindowManager, container: HTMLElement, messages?: Partial): Announcer; interface DesktopSnapOptions extends SnapDetectOptions { preview?: boolean; topEdge?: 'maximize' | 'top' | 'none'; } interface DesktopKeyboardOptions { moveStep?: number; cycle?: boolean; } interface HitAreaOptions { edge?: number; corner?: number; } interface MagnetismOptions { threshold?: number; } interface DesktopOptions { snap?: boolean | DesktopSnapOptions; keyboard?: boolean | DesktopKeyboardOptions; announce?: boolean | Partial; autoViewport?: boolean; hitAreas?: HitAreaOptions; magnetism?: boolean | MagnetismOptions; minimizeTarget?: (window: WindowState) => Element | null; onTitlebarContextMenu?: (window: WindowState, event: MouseEvent) => void; } interface WindowAttachOptions { handle?: HTMLElement | string; resizeHandles?: boolean; removeOnClose?: boolean; } interface DesktopController { element: HTMLElement; wm: WindowManager; attachWindow(id: string, element: HTMLElement, options?: WindowAttachOptions): () => void; destroy(): void; } interface DesktopBinder { wm: WindowManager; controller(): DesktopController | null; bindDesktop(element: HTMLElement): () => void; bindWindow(id: string, element: HTMLElement, options?: WindowAttachOptions): () => void; } declare function createDesktopBinder(wm: WindowManager, options?: DesktopOptions): DesktopBinder; export { type Announcer as A, type DesktopBinder as D, type HitAreaOptions as H, type MagnetResult as M, type SnapDetectOptions as S, type WindowAttachOptions as W, type DesktopOptions as a, type DesktopController as b, type AnnouncerMessages as c, type DesktopKeyboardOptions as d, type DesktopSnapOptions as e, type MagnetismOptions as f, boundsEqual as g, clamp as h, clampSize as i, clampToViewport as j, createAnnouncer as k, createDesktopBinder as l, defaultMessages as m, detectSnapZone as n, magnetize as o, zoneBounds as z };