export interface ScreenRect { minX: number; minY: number; maxX: number; maxY: number; } export interface ScreenPoint { id: string; x: number; y: number; } /** Normalize two drag corners (in any order) into a rectangle. */ export declare function screenRect(ax: number, ay: number, bx: number, by: number): ScreenRect; export declare function rectContainsPoint(rect: ScreenRect, x: number, y: number): boolean; /** Ids of the projected candidates whose screen point falls inside the marquee. */ export declare function selectWithinRect(candidates: readonly ScreenPoint[], rect: ScreenRect): string[]; /** True when the drag is large enough to be a marquee rather than a click. */ export declare function isMarquee(rect: ScreenRect, thresholdPx?: number): boolean; export interface SelectionSet { add(id: string): void; remove(id: string): void; toggle(id: string): void; has(id: string): boolean; replace(ids: Iterable): void; clear(): void; list(): string[]; size(): number; } /** An ordered, deduplicated set of selected instance ids for RTS unit-command routing. */ export declare function createSelectionSet(initial?: Iterable): SelectionSet;