/**
 * Shared types and utilities for the House Plan Maker application.
 */

export interface HealthCheckResponse {
  status: 'ok' | 'error';
  timestamp: string;
}

// Types
export type {
  Apartment,
  ApartmentWithRooms,
  ApartmentRoom,
  CreateApartmentDto,
  UpdateApartmentDto,
} from './types/apartment.js';

export type {
  Point,
  FloorType,
  WallFinish,
  Room,
  RoomFull,
  CreateRoomDto,
  UpdateRoomDto,
} from './types/room.js';

export { FLOOR_TYPES, WALL_FINISHES, DEFAULT_OUTLET_WIDTH, DEFAULT_OUTLET_HEIGHT } from './types/room.js';

export type {
  WallDirection,
  Wall,
  CreateWallDto,
  OpeningType,
  DoorOpenDirection,
  WallOpening,
  CreateWallOpeningDto,
  UpdateWallOpeningDto,
  HorizontalAnchor,
  VerticalAnchor,
  PositionAnchor,
  ElectricalType,
  OutletDirection,
  AcUnitStyle,
  WallLightStyle,
  FurnitureTexture,
  ElectricalItem,
  CreateElectricalItemDto,
  UpdateElectricalItemDto,
  FurnitureType,
  FurnitureItem,
  CreateFurnitureItemDto,
  UpdateFurnitureItemDto,
  Annotation,
  CreateAnnotationDto,
  UpdateAnnotationDto,
  BatchSyncOpeningsDto,
  BatchSyncElectricalDto,
  BatchSyncFurnitureDto,
  BatchSyncAnnotationsDto,
} from './types/elements.js';

export {
  WALL_DIRECTIONS,
  OPENING_TYPES,
  DOOR_OPEN_DIRECTIONS,
  ELECTRICAL_TYPES,
  OUTLET_DIRECTIONS,
  AC_UNIT_STYLES,
  WALL_LIGHT_STYLES,
  FURNITURE_TEXTURES,
  TEXTURABLE_FURNITURE,
  FURNITURE_TYPES,
  HORIZONTAL_ANCHORS,
  VERTICAL_ANCHORS,
  DEFAULT_POSITION_ANCHOR,
  anchorOffsetToCenter,
  rotatedAnchorOffsetToCenter,
} from './types/elements.js';

export type {
  ApiResponse,
  ApiListResponse,
  ApiErrorResponse,
} from './types/api.js';

// Zod schemas
export {
  createApartmentSchema,
  updateApartmentSchema,
  type CreateApartmentInput,
  type UpdateApartmentInput,
} from './schemas/apartment.schema.js';

export {
  createRoomSchema,
  updateRoomSchema,
  type CreateRoomInput,
  type UpdateRoomInput,
} from './schemas/room.schema.js';

export {
  bulkUpdateWallsSchema,
  createWallOpeningSchema,
  updateWallOpeningSchema,
  createElectricalItemSchema,
  updateElectricalItemSchema,
  createFurnitureItemSchema,
  updateFurnitureItemSchema,
  batchSyncOpeningsSchema,
  batchSyncElectricalSchema,
  batchSyncFurnitureSchema,
  createAnnotationSchema,
  updateAnnotationSchema,
  batchSyncAnnotationsSchema,
  type BulkUpdateWallsInput,
  type CreateWallOpeningInput,
  type UpdateWallOpeningInput,
  type CreateElectricalItemInput,
  type UpdateElectricalItemInput,
  type CreateFurnitureItemInput,
  type UpdateFurnitureItemInput,
  type BatchSyncOpeningsInput,
  type BatchSyncElectricalInput,
  type BatchSyncFurnitureInput,
  type CreateAnnotationInput,
  type UpdateAnnotationInput,
  type BatchSyncAnnotationsInput,
} from './schemas/elements.schema.js';
