import type { Identifier, ISODateTime, ObjectEither, ObjectPrettify, UnionPrettify, UrlSecure } from "typeforge"; type Universe_SocialLink = ObjectPrettify<{ title: string; uri: UrlSecure; }>; export type UniverseAgeRating = UnionPrettify<"AGE_RATING_UNSPECIFIED" | "AGE_RATING_ALL" | "AGE_RATING_9_PLUS" | "AGE_RATING_13_PLUS" | "AGE_RATING_17_PLUS">; export type UniverseVisibility = UnionPrettify<"PRIVATE" | "PUBLIC" | "VISIBILITY_UNSPECIFIED">; export type Universe = { displayName: DisplayName; description: Description; visibility: Visibility; facebookSocialLink?: Universe_SocialLink; twitterSocialLink?: Universe_SocialLink; youtubeSocialLink?: Universe_SocialLink; twitchSocialLink?: Universe_SocialLink; discordSocialLink?: Universe_SocialLink; robloxGroupSocialLink?: Universe_SocialLink; guildedSocialLink?: Universe_SocialLink; voiceChatEnabled: VoiceChatEnabled; ageRating: AgeRating; privateServerPriceRobux?: number; desktopEnabled: DesktopEnabled; mobileEnabled: MobileEnabled; tabletEnabled: TabletEnabled; consoleEnabled: ConsoleEnabled; vrEnabled: VREnabled; }; type UniverseInfoData = { path: `universes/${UniverseId}`; createTime: TimeType; updateTime: TimeType; } & ObjectEither<{ user: `users/${Identifier}`; }, { group: `groups/${Identifier}`; }> & Universe; export type RawUniverseInfoData = UniverseInfoData; export type PrettifiedUniverseInfoData = UniverseInfoData; type UpdateUniverseData = { path: `universes/${UniverseId}`; createTime: TemporalType; updateTime: TemporalType; displayName: DisplayName; description: Description; user: `users/${Identifier}`; visibility: Visibility; voiceChatEnabled: VoiceChatEnabled; ageRating: AgeRating; desktopEnabled: DesktopEnabled; mobileEnabled: MobileEnabled; tabletEnabled: TabletEnabled; consoleEnabled: ConsoleEnabled; vrEnabled: VREnabled; }; export type RawUpdateUniverseData = (UpdateUniverseData); export type PrettifiedUpdateUniverseData = (UpdateUniverseData); type Place = ObjectPrettify<{ displayName: string; description: string; serverSize: number; }>; type PlaceInfoData = ObjectPrettify<{ path: `universes/${UniverseId}/places/${PlaceId}`; createTime: TemporalType; updateTime: TemporalType; } & Place>; export type RawPlaceInfoData = PlaceInfoData; export type PrettifiedPlaceInfoData = PlaceInfoData; type UpdatePlaceData = ObjectPrettify<{ path: `universes/${UniverseId}/places/${PlaceId}`; createTime: TemporalType; updateTime: TemporalType; displayName: DisplayName; description: Description; serverSize: ServerSize; }>; export type RawUpdatePlaceData = UpdatePlaceData; export type PrettifiedUpdatePlaceData = UpdatePlaceData; export {};