import { type ComponentPublicInstance, type ComputedRef, type MaybeRefOrGetter, type Ref } from "vue"; /** Kendo Window's stage values. Distinct from browser fullscreen APIs. */ export type WindowStage = "DEFAULT" | "MINIMIZED" | "FULLSCREEN"; export interface WindowMoveEventPayload { drag: boolean; end: boolean; left: number; top: number; width: number; height: number; } export type WindowResizeEventPayload = WindowMoveEventPayload; export interface WindowSettings { title: string; draggable: boolean; resizable: boolean; /** Hidden via `windowClass`, not a real Kendo prop - see docs "Inert Props". */ closable: boolean; fixed: boolean; /** Hidden via `windowClass`, not a real Kendo prop - see docs "Inert Props". */ minimizeButton: boolean; /** Hidden via `windowClass`, not a real Kendo prop - see docs "Inert Props". */ maximizeButton: boolean; initialLeft?: number; initialTop?: number; initialWidth: number; initialHeight: number; width?: number; height?: number; left?: number; top?: number; /** Minimum resize width in px. Unset/`null` falls back to Kendo's default (120). */ minWidth?: number | null; /** Minimum resize height in px. Unset/`null` falls back to Kendo's default (100). */ minHeight?: number | null; } export declare const WINDOW_SETTINGS_DEFAULTS: WindowSettings; export interface UseWindowOptions { /** * Overrides for one or more settings; any field you omit falls back to * `WINDOW_SETTINGS_DEFAULTS`, merged internally - you never need to spread * the defaults yourself. Pass a `Ref` (e.g. one already wired to your own * persistence layer) to have `useWindow` read and mutate it directly * instead of creating its own internal ref; missing fields on that ref are * filled in from the defaults once, in place, at setup time. */ settings?: Partial | Ref>; initialStage?: WindowStage; /** Enables the native titlebar double-click stage toggle. Defaults to true. */ titlebarDoubleClick?: MaybeRefOrGetter; onMove?: (payload: WindowMoveEventPayload) => void; onResize?: (payload: WindowResizeEventPayload) => void; onStageChange?: (stage: WindowStage) => void; onOpen?: () => void; onClose?: () => void; } /** The subset of Kendo `Window` props useWindow keeps functional - see docs "Inert Props". */ export interface WindowBindableProps { title: string; draggable: boolean; resizable: boolean; left?: number; top?: number; initialLeft: number; initialTop: number; initialWidth: number; initialHeight: number; width?: number; height?: number; minWidth: number; minHeight: number; stage: WindowStage; windowClass: string; } export interface WindowEvents { move: (...args: unknown[]) => void; resize: (...args: unknown[]) => void; stagechange: (...args: unknown[]) => void; close: (...args: unknown[]) => void; } export interface UseWindowOpenOptions { /** * Discards any existing left/top/width/height (including one restored from * an externally-persisted `settings` ref) and recomputes the initial inset * position and `initialWidth`/`initialHeight` size. Defaults to `false`, so * a previously dragged/resized/persisted position survives close + reopen. */ resetPosition?: boolean; } export interface UseWindowReturn { windowRef: Ref; settings: Ref; visible: Ref; stage: Ref; isDragging: Ref; isResizing: Ref; /** Spread via `v-bind` onto ``. */ props: ComputedRef; /** Spread via `v-on` onto ``. */ events: WindowEvents; open: (openOptions?: UseWindowOpenOptions) => Promise; close: () => void; } /** * Wraps Kendo UI for Vue's `Window` component (not the browser `window` * object) with zero-config defaults, viewport-clamped dragging, and the * pointerdown-capture resize/text-selection workaround from * docs/design/composable-native-event-listener-tactic.md. */ export declare function useWindow(options?: UseWindowOptions): UseWindowReturn;