export type StructureVec3 = readonly [number, number, number]; export interface PlacedStructure { id: string; catalogId: string; position: StructureVec3; rotationY: number; plotId?: string; data?: Readonly>; } export interface AddStructureInput { id?: string; catalogId: string; position: StructureVec3; rotationY?: number; plotId?: string; data?: Readonly>; } export interface StructureFilter { plotId?: string; catalogId?: string; } export interface PlacedStructureSnapshot { structures: readonly PlacedStructure[]; } export interface PlacedStructureStore { add(input: AddStructureInput): PlacedStructure; move(id: string, position: StructureVec3): boolean; rotate(id: string, rotationY: number): boolean; remove(id: string): boolean; get(id: string): PlacedStructure | null; list(filter?: StructureFilter): readonly PlacedStructure[]; clear(): void; select(id: string | null): boolean; selected(): PlacedStructure | null; snapshot(): PlacedStructureSnapshot; load(snapshot: PlacedStructureSnapshot): void; subscribe(listener: () => void): () => void; } export declare function createPlacedStructureStore(): PlacedStructureStore;