import { IColor } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { IRoom, IPlacedDecosDatabase, ITailorShop, ITailorShopDatabase, TBootLocation, IApartmentDatabase, IApartmentClient } from "@/src/types/shipTypes"; import { Document, Model, Types } from "mongoose"; export interface IOrbiter { Features: string[]; Rooms: IRoom[]; VignetteFish?: string[]; FavouriteLoadoutId?: Types.ObjectId; Wallpaper?: string; Vignette?: string; ContentUrlSignature?: string; BootLocation?: TBootLocation; } export interface IPersonalRoomsClient { ShipInteriorColors: IColor; Ship: IOrbiter; Apartment: IApartmentClient; TailorShop: ITailorShop; } export interface IPersonalRoomsDatabase { ShipInteriorColors: IColor; personalRoomsOwnerId: Types.ObjectId; activeShipId: Types.ObjectId; Ship: IOrbiter; Apartment: IApartmentDatabase; TailorShop: ITailorShopDatabase; } export type RoomsType = { Name: string; MaxCapacity: number; PlacedDecos: Types.DocumentArray }; export type PersonalRoomsDocumentProps = { Ship: Omit & { Rooms: RoomsType[]; }; Apartment: Omit & { Rooms: RoomsType[]; }; TailorShop: Omit & { Rooms: RoomsType[]; }; }; // eslint-disable-next-line @typescript-eslint/no-empty-object-type export type PersonalRoomsModelType = Model; // eslint-disable-next-line @typescript-eslint/no-empty-object-type export type TPersonalRoomsDatabaseDocument = Document & Omit< IPersonalRoomsDatabase & { _id: Types.ObjectId; } & { __v: number; }, keyof PersonalRoomsDocumentProps > & PersonalRoomsDocumentProps;