import type { ArrayToUnion, Identifier, ISODateTime, ObjectPrettify, ObjectRemoveKeys, UnionPrettify, ArrayNonEmptyIfConst } from "typeforge"; import type { ObjectRemoveReadOnly } from "../../../apis/apis.types"; type Universe = ObjectPrettify<{ id: UniverseId; name: string; description: string; isArchived: boolean; rootPlaceId: Identifier; isActive: boolean; privacyType: "Private" | "Public"; creatorType: CreatorType; creatorTargetId: CreatorId; creatorName: string; created: TemporalType; updated: TemporalType; }>; export type RawPaginatedUniverseData = { previousPageCursor: string | null; nextPageCursor: string | null; data: Universe[]; }; type GameTemplate = ObjectPrettify<{ gameTemplateType: "Generic" | "Gameplay" | "Theme"; hasTutorials: boolean; universe: { id: Identifier; name: string; description: string | null; isArchived: boolean; rootPlaceId: Identifier; isActive: boolean; privacyType: "Public"; creatorType: "User"; creatorTargetId: Identifier; creatorName: string; created: TemporalType; updated: TemporalType; }; }>; export type RawGameTemplatesData = { data: GameTemplate[]; }; export type PrettifiedGameTemplatesData = GameTemplate[]; export type RawGroupUniversesData = RawPaginatedUniverseData; export type PrettifiedGroupUniversesData = Universe[]; type TeamCreateUser = ObjectPrettify<{ id: Identifier; name: string; displayName: string; }>; export type RawTeamCreateActiveMembersData = { previousPageCursor: string | null; nextPageCursor: string | null; data: TeamCreateUser[]; }; export type PrettifiedTeamCreateActiveMembersData = TeamCreateUser[]; export type RawTeamCreateSettingsForUniversesData = { data: { id: UniverseId; isEnabled: boolean; }[]; }; export type PrettifiedTeamCreateSettingsForUniversesData = { [Key in UniverseId]: { isEnabled: boolean; } | undefined; }; type PluginInfo = ObjectPrettify<{ id: PluginId; name: string; description: string; commentsEnabled: boolean; versionId: Identifier; created: TemporalType; updated: TemporalType; }>; export type RawPluginsInfoData = { data: PluginInfo[]; }; export type PrettifiedPluginsInfoData = { [Key in PluginId]: ObjectPrettify, "id">> | undefined; }; export type RawUniverseInfo = Universe; export type PrettifiedUniverseInfo = Universe; export type PrettifiedUniversePlacesData = { id: Identifier; universeId: UniverseId; name: string; description: string; }[]; export type RawUniversePlacesData = { previousPageCursor: string | null; nextPageCursor: string | null; data: PrettifiedUniversePlacesData; }; export type RawUniversesInfoData = RawPaginatedUniverseData; export type PrettifiedUniversesInfoData = { [Key in UniverseId]: ObjectRemoveKeys, "id"> | undefined; }; export type RawAuthenticatedUserPermissionsForUniversesData = { data: { universeId: UniverseId; canManage: boolean; canCloudEdit: boolean; }[]; }; export type PrettifiedAuthenticatedUserPermissionsForUniversesData = { [Kry in UniverseId]: { canManage: boolean; canCloudEdit: boolean; } | undefined; }; export type UniverseAvatarType = UnionPrettify<"MorphtoR6" | "MorphToR15" | "PlayerChoice">; export type UniverseScaleType = UnionPrettify<"AllScales" | "NoScales">; export type UniverseAnimationType = UnionPrettify<"Standard" | "PlayerChoice">; export type UniverseCollisionType = UnionPrettify<"InnnerBox" | "OuterBox">; export type UniverseBodyType = UnionPrettify<"Standard" | "PlayerChoice">; export type UniverseJointPositioningType = UnionPrettify<"Standard" | "ArtistIntent">; export type UniverseGenre = UnionPrettify<"All" | "TownAndCity" | "Fantasy" | "SciFi" | "Ninja" | "Scary" | "Pirate" | "Adventure" | "Sports" | "Funny" | "WildWest" | "War" | "SkatePark" | "Tutorial">; export type UniversePlayableDevice = UnionPrettify<"Computer" | "Phone" | "Tablet" | "VR" | "Console">; export type UniverseConfigurationData_V1 = { allowPrivateServers: boolean; privateServerPrice: number | null; isMeshTextureApiAccessAllowed: IsMeshTextureApiAccessAllowed; id: UniverseId; name: Name; universeAvatarType: AvatarType; universeScaleType: ScaleType; universeAnimationType: AnimationType; universeCollisionType: CollisionType; universeBodyType: BodyType; universeJointPositioningType: JointPositioningType; isArchived: IsArchived; isFriendsOnly: IsFriendsOnly; genre: Genre; playableDevices: PlayableDevice[]; isForSale: IsForSale; price: Price | null; isStudioAccessToApisAllowed: boolean; privacyType: "Public" | "Private"; }; type GroupCanManage = ObjectPrettify<{ id: Identifier; name: string; }>; export type RawAuthenticatedUserGroupsCanManage = { data: GroupCanManage[]; }; export type PrettifiedAuthenticatedUserGroupsCanManage = GroupCanManage[]; export type RawAuthenticatedUserUniversesData = RawPaginatedUniverseData; export type PrettifiedAuthenticatedUserUniversesData = Universe[]; export type PlaceSocialSlotType = UnionPrettify<"Automatic" | "Empty" | "Custom">; export type PlaceGearType = UnionPrettify<"Invalid" | "Melee" | "Ranged" | "Explosive" | "PowerUps" | "Navigation" | "Musical" | "Social" | "Building" | "PersonalTransport">; export type PlaceConfigurationData = { maxPlayerCount: number; socialSlotType: PlaceSocialSlotType; customSocialSlotsCount: number; allowCopying: boolean; currentSavedVersion: number; isAllGenresAllowed: boolean; allowedGearTypes: PlaceGearType[]; maxPlayersAllowed: number; id: PlaceId; universeId: Identifier; name: string; description: string; isRootPlace: boolean; }; export type UpdatePlaceConfigurationData_V2 = { maxPlayerCount: MaxPlayerCount; socialSlotType: SocialSlotType; customSocialSlotsCount: CustomSocialSlotsCount; allowCopying: AllowCopying; currentSavedVersion: number; isAllGenresAllowed: IsAllGenresAllowed; allowedGearTypes: AllowedGearTypes[]; maxPlayersAllowed: number; id: PlaceId; universeId: Identifier; name: Name; description: Description; isRootPlace: boolean; }; export type RawAvatarAssetOverride = ObjectPrettify<{ assetID: Identifier; assetTypeID: Identifier; isPlayerChoice: boolean; }>; export type PrettifiedAvatarAssetOverride = ObjectPrettify<{ assetId: Identifier; assetTypeId: Identifier; isPlayerChoice: boolean; }>; export type AvatarScales = ObjectPrettify<{ height: number; width: number; head: number; depth: number; proportion: number; bodyType: number; }>; export type UniverseRegion = UnionPrettify<"Unknown" | "China">; type PrettifiedAvatarAssetOverridesToRaw> = ArrayToUnion<{ [Key in keyof Overrides]: { assetID: Overrides[Key]["assetId"]; assetTypeID: Overrides[Key]["assetTypeId"]; isPlayerChoice: Overrides[Key]["isPlayerChoice"]; }; }>[]; type UpdateUniverseConfigurationData_V2 = ObjectPrettify<{ allowPrivateServers: AllowPrivateServers; privateServerPrice: PrivateServerPrice; optInRegions: { region: number; status: string; }[]; isMeshTextureApiAccessAllowed: IsMeshTextureApiAccessAllowed; id: UniverseId; name: Name; description: Description; universeAvatarType: AvatarType; universeAnimationType: AnimationType; universeCollisionType: CollisionType; universeJointPositioningType: JointPositioningType; isArchived: IsArchived; isFriendsOnly: IsFriendsOnly; genre: Genre; playableDevices: PlayableDevice[]; isForSale: IsForSale; price: Price; universeAvatarAssetOverrides: AvatarAssetOverrides; universeAvatarMinScales: ObjectRemoveReadOnly; universeAvatarMaxScales: ObjectRemoveReadOnly; studioAccessToApisAllowed: StudioAccessToApisAllowed; permissions: Permissions; }>; export type RawUpdateUniverseConfigurationData_V2 = []> = UpdateUniverseConfigurationData_V2, { IsThirdPartyTeleportAllowed: IsThirdPartyTeleportAllowed; IsThirdPartyAssetAllowed: IsThirdPartyAssetAllowed; IsThirdPartyPurchaseAllowed: IsThirdPartyPurchaseAllowed; }>; export type PrettifiedUpdateUniverseConfigurationData_V2 = []> = UpdateUniverseConfigurationData_V2>[], { isThirdPartyTeleportAllowed: IsThirdPartyTeleportAllowed; isThirdPartyAssetAllowed: IsThirdPartyAssetAllowed; isThirdPartyPurchaseAllowed: IsThirdPartyPurchaseAllowed; }>; export {};