import { type Aabb, type Vec2 } from "./geometry.js"; export type SpaceRef = { kind: "exterior"; } | { kind: "interior"; id: string; }; export interface EntityLocation { space: SpaceRef; position: Vec2; } export interface Interior { id: string; origin: Vec2; rotation?: number; bounds: Aabb; obstacles?: readonly Aabb[]; } export interface Exterior { bounds?: Aabb; obstacles?: readonly Aabb[]; } export interface InteriorsConfig { exterior?: Exterior; interiors?: readonly Interior[]; radius?: number; } export interface Interiors { move(location: EntityLocation, delta: Vec2): EntityLocation; enter(location: EntityLocation, id: string): EntityLocation | null; leave(location: EntityLocation): EntityLocation | null; toInterior(id: string, exterior: Vec2): Vec2 | null; toExterior(id: string, interior: Vec2): Vec2 | null; } /** Frame conversion and bounded movement across an exterior and its interiors; holds config only, no play state. */ export declare function createInteriors(config?: InteriorsConfig): Interiors;