UNPKG

noblox.js-proxied

Version:

A Node.js wrapper for Roblox. (original from sentanos)

1,460 lines (1,305 loc) 22.9 kB
// types/Types import * as events from "events"; import * as stream from "stream"; /** * @typedef */ type CookieJar = { session?: string; } /// Asset /** * @typedef */ type UploadItemAssetType = 11 | 12 | 13; /** * @typedef */ type ProductInfoCreator = { Id: number; Name: string; } /** * @typedef */ type ProductInfo = { AssetId: number; ProductId: number; Name: string Description: string; AssetTypeId: number; Creator: ProductInfoCreator; IconImageAssetId: number; Created: Date; Updated: Date; PriceInRobux?: number; PriceInTickets?: number; Sales: number; IsNew: boolean; IsForSale: boolean; IsPublicDomain: boolean; IsLimited: boolean; IsLimitedUnique: boolean; Remaining?: number; MinimumMembershipLevel: number; ContentRatingTypeId: number; } /** * @typedef */ type BuyProductInfo = { ProductId: number; Creator: { Id: number }; PriceInRobux: number; UserAssetId: number; } /** * @typedef */ type PriceRange = { high: number; low: number; } /** * @typedef */ type BuyAssetResponse = { productId: number; price: number; } /** * @typedef */ type UploadItemResponse = { id: number; } /** * @typedef */ type UploadModelResponse = { AssetId: number; AssetVersionId : number; } /** * @typedef */ type UploadModelItemOptions = { name: string; description?: string; copyLocked?: boolean; allowComments?: boolean; groupId?: number; } /// Avatar /** * @typedef */ type AssetTypeRulesModel = { min: number; max: number; increment: number; } /** * @typedef */ type AvatarRulesScales = { [scalename: string]: AssetTypeRulesModel; } /** * @typedef */ type WearableAssetType = { maxNumber: number; id: number; name: string; } /** * @typedef */ type BodyColorModel = { brickColorId: number; hexColor: string; name: string; } /** * @typedef */ type DefaultClothingAssetLists = { defaultShirtAssetIds: Array<number>; defaultPantAssetIds: Array<number>; } /** * @typedef */ type AvatarRules = { playerAvatarTypes: Array<string>; scales: AvatarRulesScales; wearableAssetTypes: Array<WearableAssetType>; bodyColorsPalette: Array<BodyColorModel>; basicBodyColorsPalette: Array<BodyColorModel>; minimumDeltaEBodyColorDifference: number; proportionsAndBodyTypeEnabledForUser: boolean; defaultClothingAssetLists: DefaultClothingAssetLists; bundlesEnabledForUser: boolean; emotesEnabledForUser: boolean; } /** * @typedef */ type AssetIdList = { assetIds: Array<number>; } /** * @typedef */ type AvatarScale = { height: number; width: number; head: number; depth: number; proportion: number; bodyType: number; } /** * @typedef */ type AvatarBodyColors = { headColorId: number; torsoColorId: number; rightArmColorId: number; leftArmColorId: number; rightLegColorId: number; leftLegColorId: number; } /** * @typedef */ type AvatarAssetType = { id: number; name: string; } /** * @typedef */ type AvatarAsset = { id: number; name: string; assetType: AvatarAssetType; } /** * @typedef */ type PlayerAvatarType = "R6" | "R15"; /** * @typedef */ type AvatarInfo = { scales: AvatarScale; playerAvatarType: PlayerAvatarType; bodyColors: AvatarBodyColors; assets: Array<AvatarAsset>; defaultShirtApplied: boolean; defaultPantsApplied: boolean; } /** * @typedef */ type RecentItemListType = "All" | "Clothing" | "BodyParts" | "AvatarAnimations" | "Accessories" | "Outfits" | "Gear"; /** * @typedef */ type RecentItemType = "Asset" | "Outfit"; /** * @typedef */ type AssetRecentItem = { id: number; name: string; type: RecentItemType; assetType: AvatarAssetType; isEditable?: boolean; } /** * @typedef */ type AssetRecentItemsResult = { data: Array<AssetRecentItem>; total: number; } /** * @typedef */ type AvatarOutfitDetails = { id: number; name: string; assets: Array<AvatarAsset>; bodyColors: Array<AvatarBodyColors>; scale: AvatarScale; playerAvatarType: PlayerAvatarType; isEditable: boolean; } /** * @typedef */ type AvatarOutfit = { id: number; name: string; isEditable: boolean; } /** * @typedef */ type GetOutfitsResult = { data: Array<AvatarOutfit>; total: number; } /// Chat /** * @typedef */ type RejectedParticipant = { rejectedReason: string; type: string; targetId: number; name: string; displayName: string; } /** * @typedef */ type ConversationAddResponse = { conversationId: number; rejectedParticipants: Array<RejectedParticipant>; resultType: string; statusMessage: string; } /** * @typedef */ type ConversationRemoveResponse = { conversationId: number; resultType: string; statusMessage: string; } /** * @typedef */ type ConversationRenameResponse = { conversationTitle: string; resultType: string; title: ChatConversationTitle; statusMessage: string; } /** * @typedef */ type SendChatResponse = { content: string; filteredForReceivers: boolean; messageId: string; sent: string; messageType: string; resultType: string; statusMessage: string; } /** * @typedef */ type UpdateTypingResponse = { statusMessage: string; } /** * @typedef */ type StartGroupConversationResponse = { conversation: ChatConversation; rejectedParticipants: Array<RejectedParticipant>; resultType: string; statusMessage: string; } /** * @typedef */ type ChatSettings = { /** * Is chat enabled for the user. */ chatEnabled: boolean; /** * Was the Last ChatMessage Sent within the last x days or the account was created in the last x days? Note: user is active by default unless he does not chat for more than x days after account creation */ isActiveChatUser: boolean; } /** * @typedef */ type ChatMessage = { id: string; senderType: "User" | "System"; sent: string; read: boolean; messageType: "PlainText" | "Link" | "EventBased"; decorators: Array<string>; senderTargetId: number; content: string; link: ChatMessageLink; eventBased: ChatMessageEventBased; } /** * @typedef */ type ChatMessageLink = { type: "Game"; game: ChatMessageGameLink; } /** * @typedef */ type ChatMessageGameLink = { universeId: number; } /** * @typedef */ type ChatMessageEventBased = { type: "SetConversationUniverse"; setConversationUniverse: ChatMessageSetConversationUniverseEventBased; } /** * @typedef */ type ChatMessageSetConversationUniverseEventBased = { actorUserId: number; universeId: number; } /** * @typedef */ type ChatConversation = { id: number; title: string; initiator: ChatParticipant; hasUnreadMessages: boolean; participants: Array<ChatParticipant>; conversationType: "OneToOneConversation" | "MultiUserConversation" | "CloudEditConversation"; conversationTitle: ChatConversationTitle; lastUpdated: string; conversationUniverse: ChatConversationUniverse; } /** * @typedef */ type ChatParticipant = { type: "User" | "System"; targetId: number; name: string; } /** * @typedef */ type ChatConversationTitle = { titleForViewer: string; isDefaultTitle: boolean; } /** * @typedef */ type ChatConversationUniverse = { universeId: number; rootPlaceId: number; } /** * @typedef */ type ChatFeatureNames = "LuaChat" | "ConversationUniverse" | "PlayTogether" | "Party" | "GameLink" | "OldPlayTogether"; /** * @typedef */ type GetRolloutSettingsResult = { rolloutFeatures: Array<ChatRolloutFeature>; } /** * @typedef */ type ChatRolloutFeature = { featureName: ChatFeatureNames; isRolloutEnabled: boolean; } /** * @typedef */ type GetUnreadConversationCountResult = { count: number; } /** * @typedef */ type ChatConversationWithMessages = { conversationId: number; chatMessages: Array<ChatMessage>; } /** * @typedef */ type OnUserTypingChatEvent = { UserId: number; ConversationId: number; IsTyping: boolean; } /// Game /** * @typedef */ type GameInstancePlayerThumbnail = { AssetId: number; AssetTypeId: number; Url: string; IsFinal: boolean; } /** * @typedef */ type GameInstancePlayer = { Id: number; Username: string; Thumbnail: GameInstancePlayerThumbnail; } /** * @typedef */ type GameInstance = { Capacity: number; Ping: number; Fps: number; ShowSlowGameMessage: boolean; Guid: string; PlaceId: number; CurrentPlayers: Array<GameInstancePlayer>; UserCanJoin: boolean; ShowShutdownButton: boolean; JoinScript: string; FriendsDescription: string; FriendsMouseover: string; PlayersCapacity: string; } /** * @typedef */ type GameInstances = { PlaceId: number; ShowShutdownAllButton: boolean; Collection: Array<GameInstance>; TotalCollectionSize: number; } /** * @typedef */ type GamePassResponse = { gamePassId: number, name?: string, description?: string, price?: number, isForSale?: boolean, iconChanged?: boolean } /** * @typedef */ type PlaceInformation = { AssetId: number; Name: string; Description: string; Created: Date; Updated: Date; FavoritedCount: number; Url: string; ReportAbuseAbsoluteUrl: string; IsFavoritedByUser: boolean; IsFavoritesUnavailable: boolean; UserCanManagePlace: boolean; VisitedCount: number, MaxPlayers: number, Builder: string, BuilderId: number, BuilderAbsoluteUrl: string IsPlayable: boolean, ReasonProhibited: string, ReasonProhibitedMessage: string, IsCopyingAllowed: boolean, PlayButtonType: string, AssetGenre: string, AssetGenreViewModel: { DisplayName: string, Id: number }, OnlineCount: number, UniverseId: number, UniverseRootPlaceId: number, TotalUpVotes: number, TotalDownVotes: number, OverridesDefaultAvatar: boolean, UsePortraitMode: boolean, Price: number } /** * @typedef */ type DeveloperProduct = { ProductId: number, DeveloperProductId: number, Name: string, Description: string, IconImageAssetId: number, displayName: string, displayDescription: string, displayIcon: number, PriceInRobux: number } /** * @typedef */ type DeveloperProductsResult = { DeveloperProducts: Array<DeveloperProduct>, FinalPage: boolean, PageSize: number } /** * @typedef */ type DeveloperProductAddResult = { universeId: number, name: string, priceInRobux: number, description?: string, productId: string } /** * @typedef */ type DeveloperProductUpdateResult = { universeId: number, name: string, priceInRobux: number, description?: string, productId: number } /** * @typedef */ type CheckDeveloperProductNameResult = { Success: boolean; /** * When success is true: "Name available" * When success is false, you can get: "Product name already exists" */ Message: string; } /// Group /** * @typedef */ type GroupIconSize = "150x150" | "420x420" type GroupIconFormat = "Png" /** * @typedef */ type Role = { name: string; memberCount?: number; rank: number; id: number; } /** * @typedef */ type RoleWithDescription = { name: string; memberCount?: number; rank: number; id: number; description: string; } /** * @typedef */ type GroupPostsPermissions = { viewWall: boolean; postToWall: boolean; deleteFromWall: boolean; viewStatus: boolean; postToStatus: boolean; } /** * @typedef */ type GroupMembershipPermissions = { changeRank: boolean; inviteMembers: boolean; removeMembers: boolean; } /** * @typedef */ type GroupManagementPermissions = { manageRelationships: boolean; manageClan: boolean; viewAuditLogs: boolean; } /** * @typedef */ type GroupEconomyPermissions = { spendGroupFunds: boolean; advertiseGroup: boolean; createItems: boolean; manageItems: boolean; addGroupPlaces: boolean; manageGroupGames: boolean; viewGroupPayouts: boolean; } /** * @typedef */ type RolePermissionsBody = { groupPostsPermissions: GroupPostsPermissions; groupMembershipPermissions: GroupMembershipPermissions; groupManagementPermissions: GroupManagementPermissions; groupEconomyPermissions: GroupEconomyPermissions; } /** * @typedef */ type RolePermissions = { groupId: number; role: RoleWithDescription; permissions: RolePermissionsBody } /** * @typedef */ type ChangeRankResult = { newRole: Role; oldRole: Role; } /** * @typedef */ type Group = { id: number; name: string; description: string; owner: GroupUser; shout: GroupShout; memberCount: number; isBuildersClubOnly: boolean; publicEntryAllowed: boolean; isLocked: boolean; } /** * @typedef */ type GroupGameInfo = { id: number; name: string; description: string; creator: { id: number; type: string; }; rootPlace: { id: number; type: string; }; created: Date; updated: Date; placeVisits: number; } /** * @typedef */ type IGroupPartial = { Name: string; Id: number; EmblemUrl: string; MemberCount: number; Rank: number; Role: string; RoleId: number; IsPrimary: boolean; } /** * @typedef */ type GroupView = { __VIEWSTATE: string; __VIEWSTATEGENERATOR: string; __EVENTVALIDATION: string; __RequestVerificationToken: string; } /** * @typedef */ type GroupUser = { userId: number; username: string; displayName: string; buildersClubMembershipType: "None" | "BC" | "TBC" | "OBC" | "RobloxPremium"; } /** * @typedef */ type GroupShout = { body: string; poster: GroupUser; created: string; updated: string; } /** * @typedef */ type AuditItemActor = { user: GroupUser; role: Role; } /** * @typedef */ type AuditItem = { actor: AuditItemActor; actionType: string; description: object; created: string; } /** * @typedef */ type AuditPage = { data: Array<AuditItem>; nextPageCursor?: string; previousPageCursor?: string; } /** * @typedef */ type TransactionAgent = { id: number; type: string; name: string; } /** * @typedef */ type TransactionDetails = { id: number; name: string; type: string; } /** * @typedef */ type TransactionCurrency = { amount: number; type: string; } /** * @typedef */ type TransactionItem = { created: Date; isPending: boolean; agent: TransactionAgent; details?: TransactionDetails; currency: TransactionCurrency; } /** * @typedef */ type TransactionPage = { data: Array<TransactionItem>; nextPageCursor?: string; previousPageCursor?: string; } /** * @typedef */ type GroupJoinRequester = { userId: number; username: string; displayName: string; } /** * @typedef */ type GroupJoinRequest = { requester: GroupJoinRequester; created: Date; } /** * @typedef */ type GroupJoinRequestsPage = { previousPageCursor?: string; nextPageCursor?: string; data: Array<GroupJoinRequest>; } /** * @typedef */ type RevenueSummaryResponse = { recurringRobuxStipend?: number; itemSaleRobux?: number; purchasedRobux?: number; tradeSystemRobux?: number; pendingRobux?: number; groupPayoutRobux?: number; individualToGroupRobux?: number; } /** * @typedef */ type WallPost = { id: number; poster: GroupUser; body: string; created: string; updated: string; } /** * @typedef */ type WallPostPage = { previousPageCursor?: string; nextPageCursor?: string; data: Array<WallPost>; } /// Party /** * @typedef */ type PartyData = { PartyId: number; PartyType: string; } /// User /** * 0 = Inbox * 1 = Sent Messages * 3 = Archived Messages */ type PrivateMessageTab = 0 | 1 | 3; /** * 0 = Offline * 1 = Online * 2 = InGame * 3 = Studio */ type UserPresenceType = 0 | 1 | 2 | 3 /** * @typedef */ type LoggedInUserData = { UserID: number, UserName: string, RobuxBalance: number, TicketsBalance: number, ThumbnailUrl: string, IsAnyBuildersClubMember: boolean, IsPremium: boolean } /** * @typedef */ type UserLoginApiData = { userId: number; } /** * @typedef */ type AvatarEntry = { url: string; final: boolean; } /** * @typedef */ type UserStatus = { online: boolean; lastSeen: Date; } /** * @typedef */ type FriendRequestEntry = { description: string; created: string; isBanned: boolean; id: number; name: string; displayName: string; } /** * @typedef */ type FriendRequestsPage = { previousPageCursor?: string; nextPageCursor?: string; data: Array<FriendRequestEntry>; } /** * @typedef */ type FriendEntry = { isOnline?: boolean; isDeleted: boolean; id: number; name: string; description: string; created: string; } /** * @typedef */ type Friends = { friends: Array<FriendEntry>; } /** * @typedef */ type FollowEntry = { isDeleted: false; id: number; name: string; description: string; created: string; } /** * @typedef */ type FollowingsPage = { previousPageCursor?: string; nextPageCursor?: string; data: Array<FollowEntry>; } /** * @typedef */ type FollowersPage = { previousPageCursor?: string; nextPageCursor?: string; data: Array<FollowEntry>; } /** * @typedef */ type PrivateMessagesPage = { collection: Array<PrivateMessage>; totalPages: number; totalCollectionSize: number; pageNumber: number; } /** * @typedef */ type UserEntry = { userId: number; name: string; } /** * @typedef */ type PrivateMessageParent = { page: number; } /** * @typedef */ type PrivateMessage = { id: number; sender: UserEntry; recipient: UserEntry; subject: string; body: string; created: Date; updated: Date; isRead: boolean; isSystemMessage: boolean; isReportAbuseDisplayed: boolean; parent: PrivateMessageParent; } /** * @typedef */ type NotificationMessage = { type: string; [key: string]: any; } /** * @typedef */ type FriendRequest = { userId: number; } /** * @typedef */ type UserPresence = { userPresenceType?: UserPresenceType; lastLocation?: string; placeId?: number; rootPlaceId?: number; gameId?: string; universeId?: number; userId?: number; lastOnline?: string; } /** * @typedef */ type PlayerInfo = { username: string; status?: string; blurb: string; joinDate: Date; age?: number; friendCount?: number; followerCount?: number; followingCount?: number; oldNames?: Array<string>; isBanned: boolean; } /** * @typedef */ type Presences = { userPresences: Array<UserPresence>; } /** * @typedef */ type playerThumbnailData = { targetId: number; state: string; imageUrl: string; } /// Badges /** * @typedef */ type BadgeAwarder = { id: number; type: string; } /** * @typedef */ type UserBadgeStats = { badgeId: number; awardedDate: Date; } /** * @typedef */ type BadgeStatistics = { pastDayAwardedCount: number; awardedCount: number; winRatePercentage: number; } /** * @typedef */ type BadgeUniverse = { id: number; name: string; rootPlaceId: number; } /** * @typedef */ type PlayerBadges = { id: number; name: string; description?: string; displayName: string; displayDescription?: string; enabled: boolean; iconImageId: number; displayIconImageId: number; awarder: BadgeAwarder; statistics: BadgeStatistics; created: Date; updated: Date; } /** * @typedef */ type BadgeInfo = { id: number; name: string; description?: string; displayName: string; displayDescription?: string; enabled: boolean; iconImageId: number; displayIconImageId: number; created: Date; updated: Date; statistics: BadgeStatistics awardingUniverse: BadgeUniverse } //Inventory /** * @typedef */ type AssetOwner = { userId: number; username: string; buildersClubMembershipType: number; } /** * @typedef */ type CollectibleEntry = { userAssetId: number; serialNumber?: number; assetId: number; name: string; recentAveragePrice: number; originalPrice?: number; assetStock?: number; buildersClubMembershipType: number; } /** * @typedef */ type Collectibles = { collectibles: Array<CollectibleEntry>; } /** * @typedef */ type InventoryEntry = { assetId: number; name: string; assetType: string; created: Date; updated?: Date; assetName?: string; userAssetId?: number; owner?: AssetOwner; } /** * @typedef */ type Inventory = { items: Array<InventoryEntry>; } ///Trading /** * @typedef */ type UAIDResponse = { uaids: Array<number>, failedIds: Array<number> } /** * @typedef */ type CanTradeResponse = { canTrade: boolean, status: string } /** * @typedef */ type TradeUser = { userId: number; username: string; displayName: string; } /** * @typedef */ type TradeAsset = { id: number, user: TradeUser, created: Date, expiration?: Date, isActive: boolean, status: string } /** * @typedef */ type DetailedTradeAsset = { id: number, serialNumber: number, assetId: number, name: string, recentAveragePrice: number, originalPrice: number, assetStock: number, membershipType: string } /** * @typedef */ type DetailedTradeOffer = { user: TradeUser, userAssets: Array<DetailedTradeAsset>, robux: number } /** * @typedef */ type TradeOffer = { userAssetIds: Array<number>, robux: number } /** * @typedef */ type TradeInfo = { offers: Array<DetailedTradeOffer>, id: number, user: TradeUser, created: Date, expiration?: Date, isActive: boolean, status: string } /** * @typedef */ type SendTradeResponse = { id: number } /// Utility /** * @typedef */ type SelectorFunction = (selector: string) => {val(): any}; type SortOrder = 'Asc' | 'Desc'; type Limit = 10 | 25 | 50 | 100; /** * @typedef */ type Inputs = { /** * With a provided name, this returns the input's value. */ [name: string]: string; } /** * @typedef */ type GetVerificationResponse = { body?: string; inputs: Inputs; header: string; } /** * @typedef */ type HttpOptions = { verification?: string; jar?: CookieJar; } /** * @typedef */ type GetLatestResponse = { latest: number; data: object; repeat?: boolean; }