shadowx-fca 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (174) hide show
  1. package/README.md +1066 -0
  2. package/build/messagix.dll +0 -0
  3. package/build/messagix.so +0 -0
  4. package/checkUpdate.js +393 -0
  5. package/config.json +17 -0
  6. package/e2ee.js +563 -0
  7. package/e2eetest.js +356 -0
  8. package/index.js +611 -0
  9. package/lib/index.mjs +1412 -0
  10. package/logger.js +500 -0
  11. package/package.json +65 -0
  12. package/src/GetBotInfo.js +66 -0
  13. package/src/OldMessage.js +182 -0
  14. package/src/Screenshot.js +83 -0
  15. package/src/addExternalModule.js +13 -0
  16. package/src/addUserToGroup.js +33 -0
  17. package/src/approveGroupJoinRequests.js +18 -0
  18. package/src/changeAdminStatus.js +16 -0
  19. package/src/changeArchivedStatus.js +17 -0
  20. package/src/changeAvatar.js +136 -0
  21. package/src/changeAvatarV2.js +86 -0
  22. package/src/changeAvt.js +85 -0
  23. package/src/changeBio.js +76 -0
  24. package/src/changeBlockedStatus.js +20 -0
  25. package/src/changeBlockedStatusMqtt.js +80 -0
  26. package/src/changeCover.js +72 -0
  27. package/src/changeGroupImage.js +16 -0
  28. package/src/changeName.js +79 -0
  29. package/src/changeNickname.js +16 -0
  30. package/src/changeThreadColor.js +15 -0
  31. package/src/changeThreadEmoji.js +15 -0
  32. package/src/changeThreadMemberNickname.js +6 -0
  33. package/src/changeUsername.js +59 -0
  34. package/src/createCommentPost.js +230 -0
  35. package/src/createNewGroup.js +38 -0
  36. package/src/createNote.js +35 -0
  37. package/src/createPoll.js +27 -0
  38. package/src/createPost.js +276 -0
  39. package/src/createThemeAI.js +129 -0
  40. package/src/data/cache/system/data.json +4 -0
  41. package/src/data/cache/system/datahandle.js +21 -0
  42. package/src/data/getThreadInfo.json +1 -0
  43. package/src/deleteComment.js +23 -0
  44. package/src/deleteMessage.js +15 -0
  45. package/src/deleteThread.js +15 -0
  46. package/src/denyGroupJoinRequests.js +18 -0
  47. package/src/e2ee/crypto.js +173 -0
  48. package/src/e2ee/index.js +144 -0
  49. package/src/e2ee/proto/ArmadilloApplication.proto +281 -0
  50. package/src/e2ee/proto/ArmadilloICDC.proto +14 -0
  51. package/src/e2ee/proto/ConsumerApplication.proto +232 -0
  52. package/src/e2ee/proto/MessageApplication.proto +82 -0
  53. package/src/e2ee/proto/MessageTransport.proto +77 -0
  54. package/src/e2ee/proto/WACommon.proto +66 -0
  55. package/src/e2ee/proto/WAMediaTransport.proto +176 -0
  56. package/src/e2ee/proto/proto-writer.ts +76 -0
  57. package/src/e2ee/protocol.js +196 -0
  58. package/src/e2ee/ratchet.js +219 -0
  59. package/src/e2ee/store.js +182 -0
  60. package/src/e2ee.js +8 -0
  61. package/src/editMessage.js +56 -0
  62. package/src/editMessageOld.js +67 -0
  63. package/src/enableReactions.js +24 -0
  64. package/src/follow.js +74 -0
  65. package/src/followUser.js +23 -0
  66. package/src/forwardAttachment.js +16 -0
  67. package/src/friendList.js +98 -0
  68. package/src/getAccess.js +112 -0
  69. package/src/getAppState.js +13 -0
  70. package/src/getAvatarUser.js +11 -0
  71. package/src/getBio.js +24 -0
  72. package/src/getBotInitialData.js +42 -0
  73. package/src/getCtx.js +5 -0
  74. package/src/getCurrentUserID.js +6 -0
  75. package/src/getEmojiUrl.js +29 -0
  76. package/src/getFriendsList.js +36 -0
  77. package/src/getMessage.js +37 -0
  78. package/src/getNotes.js +17 -0
  79. package/src/getOptions.js +5 -0
  80. package/src/getPinnedMessages.js +33 -0
  81. package/src/getPostInfo.js +17 -0
  82. package/src/getProfileInfo.js +17 -0
  83. package/src/getPublicData.js +25 -0
  84. package/src/getRegion.js +7 -0
  85. package/src/getRepInfo.js +17 -0
  86. package/src/getStickerPacks.js +25 -0
  87. package/src/getStickers.js +39 -0
  88. package/src/getStoryReactions.js +18 -0
  89. package/src/getThreadHistory.js +45 -0
  90. package/src/getThreadHistoryDeprecated.js +71 -0
  91. package/src/getThreadInfo.js +73 -0
  92. package/src/getThreadInfoDeprecated.js +56 -0
  93. package/src/getThreadList.js +76 -0
  94. package/src/getThreadListDeprecated.js +46 -0
  95. package/src/getThreadPictures.js +59 -0
  96. package/src/getThreadTheme.js +77 -0
  97. package/src/getUID.js +17 -0
  98. package/src/getUserID.js +17 -0
  99. package/src/getUserInfo.js +28 -0
  100. package/src/handleFriendRequest.js +21 -0
  101. package/src/handleMessageRequest.js +15 -0
  102. package/src/httpGet.js +13 -0
  103. package/src/httpPost.js +12 -0
  104. package/src/httpPostFormData.js +12 -0
  105. package/src/listenE2EE.js +75 -0
  106. package/src/listenMqtt.js +802 -0
  107. package/src/listenNotification.js +85 -0
  108. package/src/logout.js +22 -0
  109. package/src/markAsDelivered.js +17 -0
  110. package/src/markAsRead.js +14 -0
  111. package/src/markAsReadAll.js +15 -0
  112. package/src/markAsSeen.js +15 -0
  113. package/src/metaTheme.js +185 -0
  114. package/src/muteThread.js +52 -0
  115. package/src/note.js +228 -0
  116. package/src/pin.js +53 -0
  117. package/src/pinMessage.js +6 -0
  118. package/src/postComment.js +29 -0
  119. package/src/postFormData.js +46 -0
  120. package/src/reactToComment.js +31 -0
  121. package/src/reactToPost.js +32 -0
  122. package/src/refreshFb_dtsg.js +31 -0
  123. package/src/removeSuspiciousAccount.js +74 -0
  124. package/src/removeUserFromGroup.js +15 -0
  125. package/src/reply.js +442 -0
  126. package/src/resolvePhotoUrl.js +15 -0
  127. package/src/searchForThread.js +20 -0
  128. package/src/searchFriends.js +28 -0
  129. package/src/searchStickers.js +53 -0
  130. package/src/send.js +46 -0
  131. package/src/sendAudio.js +8 -0
  132. package/src/sendBroadcast.js +93 -0
  133. package/src/sendButtons.js +161 -0
  134. package/src/sendComment.js +159 -0
  135. package/src/sendEmoji.js +10 -0
  136. package/src/sendFile.js +9 -0
  137. package/src/sendFriendRequest.js +33 -0
  138. package/src/sendGif.js +24 -0
  139. package/src/sendImage.js +9 -0
  140. package/src/sendLocation.js +9 -0
  141. package/src/sendMessage.js +487 -0
  142. package/src/sendMessage1.js +309 -0
  143. package/src/sendMessageMqtt.js +68 -0
  144. package/src/sendSticker.js +8 -0
  145. package/src/sendTypingIndicator.js +36 -0
  146. package/src/sendTypingIndicatorV2.js +28 -0
  147. package/src/sendVideo.js +9 -0
  148. package/src/sessionGuard.js +130 -0
  149. package/src/setActiveStatus.js +16 -0
  150. package/src/setMessageReaction.js +61 -0
  151. package/src/setMessageReactionMqtt.js +62 -0
  152. package/src/setOptions.js +22 -0
  153. package/src/setPollVote.js +17 -0
  154. package/src/setPostReaction.js +112 -0
  155. package/src/setProfileGuard.js +44 -0
  156. package/src/setProfileLock.js +93 -0
  157. package/src/setStoryReaction.js +129 -0
  158. package/src/setStorySeen.js +99 -0
  159. package/src/setThreadTheme.js +17 -0
  160. package/src/setTitle.js +15 -0
  161. package/src/shareContact.js +33 -0
  162. package/src/shareLink.js +8 -0
  163. package/src/sharePost.js +31 -0
  164. package/src/stopListenMqtt.js +23 -0
  165. package/src/storyManager.js +353 -0
  166. package/src/suggestFriend.js +128 -0
  167. package/src/threadColors.js +131 -0
  168. package/src/unfollowUser.js +23 -0
  169. package/src/unfriend.js +15 -0
  170. package/src/unpinMessage.js +6 -0
  171. package/src/unsendMessage.js +14 -0
  172. package/src/uploadAttachment.js +58 -0
  173. package/src/uploadImageToImgbb.js +29 -0
  174. package/utils.js +2945 -0
@@ -0,0 +1,232 @@
1
+ syntax = "proto2";
2
+ package waConsumerApplication;
3
+
4
+ import "WACommon.proto";
5
+
6
+ message ConsumerApplication {
7
+ message Payload {
8
+ oneof payload {
9
+ Content content = 1;
10
+ ApplicationData applicationData = 2;
11
+ Signal signal = 3;
12
+ SubProtocolPayload subProtocol = 4;
13
+ }
14
+ }
15
+
16
+ message SubProtocolPayload {
17
+ optional WACommon.FutureProofBehavior futureProof = 1;
18
+ }
19
+
20
+ message Metadata {
21
+ enum SpecialTextSize {
22
+ SMALL = 1;
23
+ MEDIUM = 2;
24
+ LARGE = 3;
25
+ }
26
+
27
+ optional SpecialTextSize specialTextSize = 1;
28
+ }
29
+
30
+ message Signal {
31
+ }
32
+
33
+ message ApplicationData {
34
+ oneof applicationContent {
35
+ RevokeMessage revoke = 1;
36
+ }
37
+ }
38
+
39
+ message Content {
40
+ oneof content {
41
+ WACommon.MessageText messageText = 1;
42
+ ImageMessage imageMessage = 2;
43
+ ContactMessage contactMessage = 3;
44
+ LocationMessage locationMessage = 4;
45
+ ExtendedTextMessage extendedTextMessage = 5;
46
+ StatusTextMesage statusTextMessage = 6;
47
+ DocumentMessage documentMessage = 7;
48
+ AudioMessage audioMessage = 8;
49
+ VideoMessage videoMessage = 9;
50
+ ContactsArrayMessage contactsArrayMessage = 10;
51
+ LiveLocationMessage liveLocationMessage = 11;
52
+ StickerMessage stickerMessage = 12;
53
+ GroupInviteMessage groupInviteMessage = 13;
54
+ ViewOnceMessage viewOnceMessage = 14;
55
+ ReactionMessage reactionMessage = 16;
56
+ PollCreationMessage pollCreationMessage = 17;
57
+ PollUpdateMessage pollUpdateMessage = 18;
58
+ EditMessage editMessage = 19;
59
+ }
60
+ }
61
+
62
+ message EditMessage {
63
+ optional WACommon.MessageKey key = 1;
64
+ optional WACommon.MessageText message = 2;
65
+ optional int64 timestampMS = 3;
66
+ }
67
+
68
+ message PollAddOptionMessage {
69
+ repeated Option pollOption = 1;
70
+ }
71
+
72
+ message PollVoteMessage {
73
+ repeated bytes selectedOptions = 1;
74
+ optional int64 senderTimestampMS = 2;
75
+ }
76
+
77
+ message PollEncValue {
78
+ optional bytes encPayload = 1;
79
+ optional bytes encIV = 2;
80
+ }
81
+
82
+ message PollUpdateMessage {
83
+ optional WACommon.MessageKey pollCreationMessageKey = 1;
84
+ optional PollEncValue vote = 2;
85
+ optional PollEncValue addOption = 3;
86
+ }
87
+
88
+ message PollCreationMessage {
89
+ optional bytes encKey = 1;
90
+ optional string name = 2;
91
+ repeated Option options = 3;
92
+ optional uint32 selectableOptionsCount = 4;
93
+ }
94
+
95
+ message Option {
96
+ optional string optionName = 1;
97
+ }
98
+
99
+ message ReactionMessage {
100
+ optional WACommon.MessageKey key = 1;
101
+ optional string text = 2;
102
+ optional string groupingKey = 3;
103
+ optional int64 senderTimestampMS = 4;
104
+ optional string reactionMetadataDataclassData = 5;
105
+ optional int32 style = 6;
106
+ }
107
+
108
+ message RevokeMessage {
109
+ optional WACommon.MessageKey key = 1;
110
+ }
111
+
112
+ message ViewOnceMessage {
113
+ oneof viewOnceContent {
114
+ ImageMessage imageMessage = 1;
115
+ VideoMessage videoMessage = 2;
116
+ }
117
+ }
118
+
119
+ message GroupInviteMessage {
120
+ optional string groupJID = 1;
121
+ optional string inviteCode = 2;
122
+ optional int64 inviteExpiration = 3;
123
+ optional string groupName = 4;
124
+ optional bytes JPEGThumbnail = 5;
125
+ optional WACommon.MessageText caption = 6;
126
+ }
127
+
128
+ message LiveLocationMessage {
129
+ optional Location location = 1;
130
+ optional uint32 accuracyInMeters = 2;
131
+ optional float speedInMps = 3;
132
+ optional uint32 degreesClockwiseFromMagneticNorth = 4;
133
+ optional WACommon.MessageText caption = 5;
134
+ optional int64 sequenceNumber = 6;
135
+ optional uint32 timeOffset = 7;
136
+ }
137
+
138
+ message ContactsArrayMessage {
139
+ optional string displayName = 1;
140
+ repeated ContactMessage contacts = 2;
141
+ }
142
+
143
+ message ContactMessage {
144
+ optional WACommon.SubProtocol contact = 1;
145
+ }
146
+
147
+ message StatusTextMesage {
148
+ enum FontType {
149
+ SANS_SERIF = 0;
150
+ SERIF = 1;
151
+ NORICAN_REGULAR = 2;
152
+ BRYNDAN_WRITE = 3;
153
+ BEBASNEUE_REGULAR = 4;
154
+ OSWALD_HEAVY = 5;
155
+ }
156
+
157
+ optional ExtendedTextMessage text = 1;
158
+ optional fixed32 textArgb = 6;
159
+ optional fixed32 backgroundArgb = 7;
160
+ optional FontType font = 8;
161
+ }
162
+
163
+ message ExtendedTextMessage {
164
+ enum PreviewType {
165
+ NONE = 0;
166
+ VIDEO = 1;
167
+ }
168
+
169
+ optional WACommon.MessageText text = 1;
170
+ optional string matchedText = 2;
171
+ optional string canonicalURL = 3;
172
+ optional string description = 4;
173
+ optional string title = 5;
174
+ optional WACommon.SubProtocol thumbnail = 6;
175
+ optional PreviewType previewType = 7;
176
+ }
177
+
178
+ message LocationMessage {
179
+ optional Location location = 1;
180
+ optional string address = 2;
181
+ }
182
+
183
+ message StickerMessage {
184
+ optional WACommon.SubProtocol sticker = 1;
185
+ }
186
+
187
+ message DocumentMessage {
188
+ optional WACommon.SubProtocol document = 1;
189
+ optional string fileName = 2;
190
+ }
191
+
192
+ message VideoMessage {
193
+ optional WACommon.SubProtocol video = 1;
194
+ optional WACommon.MessageText caption = 2;
195
+ }
196
+
197
+ message AudioMessage {
198
+ optional WACommon.SubProtocol audio = 1;
199
+ optional bool PTT = 2;
200
+ }
201
+
202
+ message ImageMessage {
203
+ optional WACommon.SubProtocol image = 1;
204
+ optional WACommon.MessageText caption = 2;
205
+ }
206
+
207
+ message InteractiveAnnotation {
208
+ oneof action {
209
+ Location location = 2;
210
+ }
211
+
212
+ repeated Point polygonVertices = 1;
213
+ }
214
+
215
+ message Point {
216
+ optional double x = 1;
217
+ optional double y = 2;
218
+ }
219
+
220
+ message Location {
221
+ optional double degreesLatitude = 1;
222
+ optional double degreesLongitude = 2;
223
+ optional string name = 3;
224
+ }
225
+
226
+ message MediaPayload {
227
+ optional WACommon.SubProtocol protocol = 1;
228
+ }
229
+
230
+ optional Payload payload = 1;
231
+ optional Metadata metadata = 2;
232
+ }
@@ -0,0 +1,82 @@
1
+ syntax = "proto2";
2
+ package WAMsgApplication;
3
+
4
+ import "WACommon.proto";
5
+
6
+ message MessageApplication {
7
+ message Metadata {
8
+ enum ThreadType {
9
+ DEFAULT = 0;
10
+ VANISH_MODE = 1;
11
+ DISAPPEARING_MESSAGES = 2;
12
+ }
13
+
14
+ message QuotedMessage {
15
+ optional string stanzaID = 1;
16
+ optional string remoteJID = 2;
17
+ optional string participant = 3;
18
+ optional Payload payload = 4;
19
+ }
20
+
21
+ message EphemeralSetting {
22
+ enum EphemeralityType {
23
+ UNKNOWN = 0;
24
+ SEEN_ONCE = 1;
25
+ SEEN_BASED_WITH_TIMER = 2;
26
+ SEND_BASED_WITH_TIMER = 3;
27
+ }
28
+
29
+ optional uint32 ephemeralExpiration = 2;
30
+ optional int64 ephemeralSettingTimestamp = 3;
31
+ optional EphemeralityType ephemeralityType = 5;
32
+ optional bool isEphemeralSettingReset = 4;
33
+ }
34
+
35
+ message EphemeralSettingMap {
36
+ optional string chatJID = 1;
37
+ optional EphemeralSetting ephemeralSetting = 2;
38
+ }
39
+
40
+ oneof ephemeral {
41
+ EphemeralSetting chatEphemeralSetting = 1;
42
+ EphemeralSettingMap ephemeralSettingList = 2;
43
+ bytes ephemeralSharedSecret = 3;
44
+ }
45
+
46
+ optional uint32 forwardingScore = 5;
47
+ optional bool isForwarded = 6;
48
+ optional WACommon.SubProtocol businessMetadata = 7;
49
+ optional bytes frankingKey = 8;
50
+ optional int32 frankingVersion = 9;
51
+ optional QuotedMessage quotedMessage = 10;
52
+ optional ThreadType threadType = 11;
53
+ optional string readonlyMetadataDataclass = 12;
54
+ optional string groupID = 13;
55
+ optional uint32 groupSize = 14;
56
+ optional uint32 groupIndex = 15;
57
+ optional string botResponseID = 16;
58
+ optional string collapsibleID = 17;
59
+ optional string secondaryOtid = 18;
60
+ }
61
+
62
+ message Payload {
63
+ oneof content {
64
+ SubProtocolPayload subProtocol = 4;
65
+ }
66
+ }
67
+
68
+ message SubProtocolPayload {
69
+ oneof subProtocol {
70
+ WACommon.SubProtocol consumerMessage = 2;
71
+ WACommon.SubProtocol businessMessage = 3;
72
+ WACommon.SubProtocol paymentMessage = 4;
73
+ WACommon.SubProtocol multiDevice = 5;
74
+ WACommon.SubProtocol voip = 6;
75
+ WACommon.SubProtocol armadillo = 7;
76
+ }
77
+ optional WACommon.FutureProofBehavior futureProof = 1;
78
+ }
79
+
80
+ optional Payload payload = 1;
81
+ optional Metadata metadata = 2;
82
+ }
@@ -0,0 +1,77 @@
1
+ syntax = "proto2";
2
+ package waMsgTransport;
3
+
4
+ message MessageTransport {
5
+ message Payload {
6
+ message SubProtocol {
7
+ optional bytes payload = 1;
8
+ optional int32 version = 2;
9
+ }
10
+
11
+ optional SubProtocol applicationPayload = 1;
12
+ optional int32 futureProof = 3;
13
+ }
14
+
15
+ message Protocol {
16
+ message Integral {
17
+ message DeviceSentMessage {
18
+ optional string destinationJID = 1;
19
+ optional string phash = 2;
20
+ }
21
+
22
+ optional bytes padding = 1;
23
+ optional DeviceSentMessage DSM = 2;
24
+ }
25
+
26
+ message Ancillary {
27
+ message SenderKeyDistributionMessage {
28
+ optional string groupID = 1;
29
+ optional bytes axolotlSenderKeyDistributionMessage = 2;
30
+ }
31
+
32
+ message DeviceListMetadata {
33
+ optional bytes senderKeyHash = 1;
34
+ optional uint64 senderTimestamp = 2;
35
+ optional bytes recipientKeyHash = 8;
36
+ optional uint64 recipientTimestamp = 9;
37
+ }
38
+
39
+ message ICDCParticipantDevices {
40
+ message ICDCIdentityListDescription {
41
+ optional int32 seq = 1;
42
+ optional bytes signingDevice = 2;
43
+ repeated bytes unknownDevices = 3;
44
+ repeated int32 unknownDeviceIDs = 4;
45
+ }
46
+
47
+ optional ICDCIdentityListDescription senderIdentity = 1;
48
+ repeated ICDCIdentityListDescription recipientIdentities = 2;
49
+ repeated string recipientUserJIDs = 3;
50
+ }
51
+
52
+ message BackupDirective {
53
+ enum ActionType {
54
+ NOOP = 0;
55
+ UPSERT = 1;
56
+ DELETE = 2;
57
+ UPSERT_AND_DELETE = 3;
58
+ }
59
+
60
+ optional string messageID = 1;
61
+ optional ActionType actionType = 2;
62
+ optional string supplementalKey = 3;
63
+ }
64
+
65
+ optional SenderKeyDistributionMessage skdm = 2;
66
+ optional DeviceListMetadata deviceListMetadata = 3;
67
+ optional ICDCParticipantDevices icdc = 4;
68
+ optional BackupDirective backupDirective = 5;
69
+ }
70
+
71
+ optional Integral integral = 1;
72
+ optional Ancillary ancillary = 2;
73
+ }
74
+
75
+ optional Payload payload = 1;
76
+ optional Protocol protocol = 2;
77
+ }
@@ -0,0 +1,66 @@
1
+ syntax = "proto2";
2
+ package WACommon;
3
+
4
+ enum FutureProofBehavior {
5
+ PLACEHOLDER = 0;
6
+ NO_PLACEHOLDER = 1;
7
+ IGNORE = 2;
8
+ }
9
+
10
+ message MessageKey {
11
+ optional string remoteJID = 1;
12
+ optional bool fromMe = 2;
13
+ optional string ID = 3;
14
+ optional string participant = 4;
15
+ }
16
+
17
+ message Command {
18
+ enum CommandType {
19
+ EVERYONE = 1;
20
+ SILENT = 2;
21
+ AI = 3;
22
+ AI_IMAGINE = 4;
23
+ }
24
+
25
+ optional CommandType commandType = 1;
26
+ optional uint32 offset = 2;
27
+ optional uint32 length = 3;
28
+ optional string validationToken = 4;
29
+ }
30
+
31
+ message Mention {
32
+ enum MentionType {
33
+ PROFILE = 0;
34
+ }
35
+
36
+ optional MentionType mentionType = 1;
37
+ optional string mentionedJID = 2;
38
+ optional uint32 offset = 3;
39
+ optional uint32 length = 4;
40
+ }
41
+
42
+ message MessageText {
43
+ optional string text = 1;
44
+ repeated string mentionedJID = 2;
45
+ repeated Command commands = 3;
46
+ repeated Mention mentions = 4;
47
+ }
48
+
49
+ message SubProtocol {
50
+ optional bytes payload = 1;
51
+ optional int32 version = 2;
52
+ }
53
+
54
+ message LimitSharing {
55
+ enum Trigger {
56
+ UNKNOWN = 0;
57
+ CHAT_SETTING = 1;
58
+ BIZ_SUPPORTS_FB_HOSTING = 2;
59
+ UNKNOWN_GROUP = 3;
60
+ }
61
+
62
+ optional bool sharingLimited = 1;
63
+ optional Trigger trigger = 2;
64
+ optional int64 limitSharingSettingTimestamp = 3;
65
+ optional bool initiatedByMe = 4;
66
+ }
@@ -0,0 +1,176 @@
1
+ syntax = "proto2";
2
+ package WAMediaTransport;
3
+
4
+ import "WACommon.proto";
5
+
6
+ message WAMediaTransport {
7
+ message Ancillary {
8
+ message Thumbnail {
9
+ message DownloadableThumbnail {
10
+ optional bytes fileSHA256 = 1;
11
+ optional bytes fileEncSHA256 = 2;
12
+ optional string directPath = 3;
13
+ optional bytes mediaKey = 4;
14
+ optional int64 mediaKeyTimestamp = 5;
15
+ optional string objectID = 6;
16
+ optional bytes thumbnailScansSidecar = 7;
17
+ repeated uint32 thumbnailScanLengths = 8;
18
+ }
19
+
20
+ optional bytes JPEGThumbnail = 1;
21
+ optional DownloadableThumbnail downloadableThumbnail = 2;
22
+ optional uint32 thumbnailWidth = 3;
23
+ optional uint32 thumbnailHeight = 4;
24
+ }
25
+
26
+ optional uint64 fileLength = 1;
27
+ optional string mimetype = 2;
28
+ optional Thumbnail thumbnail = 3;
29
+ optional string objectID = 4;
30
+ }
31
+
32
+ message Integral {
33
+ optional bytes fileSHA256 = 1;
34
+ optional bytes mediaKey = 2;
35
+ optional bytes fileEncSHA256 = 3;
36
+ optional string directPath = 4;
37
+ optional int64 mediaKeyTimestamp = 5;
38
+ }
39
+
40
+ optional Integral integral = 1;
41
+ optional Ancillary ancillary = 2;
42
+ }
43
+
44
+ message ImageTransport {
45
+ message Ancillary {
46
+ enum HdType {
47
+ NONE = 0;
48
+ LQ_4K = 1;
49
+ HQ_4K = 2;
50
+ }
51
+
52
+ optional uint32 height = 1;
53
+ optional uint32 width = 2;
54
+ optional bytes scansSidecar = 3;
55
+ repeated uint32 scanLengths = 4;
56
+ optional bytes midQualityFileSHA256 = 5;
57
+ optional HdType hdType = 6;
58
+ repeated float memoriesConceptScores = 7 [packed=true];
59
+ repeated uint32 memoriesConceptIDs = 8 [packed=true];
60
+ }
61
+
62
+ message Integral {
63
+ optional WAMediaTransport transport = 1;
64
+ }
65
+
66
+ optional Integral integral = 1;
67
+ optional Ancillary ancillary = 2;
68
+ }
69
+
70
+ message VideoTransport {
71
+ message Ancillary {
72
+ enum Attribution {
73
+ NONE = 0;
74
+ GIPHY = 1;
75
+ TENOR = 2;
76
+ }
77
+
78
+ optional uint32 seconds = 1;
79
+ optional WACommon.MessageText caption = 2;
80
+ optional bool gifPlayback = 3;
81
+ optional uint32 height = 4;
82
+ optional uint32 width = 5;
83
+ optional bytes sidecar = 6;
84
+ optional Attribution gifAttribution = 7;
85
+ optional string accessibilityLabel = 8;
86
+ optional bool isHd = 9;
87
+ }
88
+
89
+ message Integral {
90
+ optional WAMediaTransport transport = 1;
91
+ }
92
+
93
+ optional Integral integral = 1;
94
+ optional Ancillary ancillary = 2;
95
+ }
96
+
97
+ message AudioTransport {
98
+ message Ancillary {
99
+ message AvatarAudio {
100
+ enum AnimationsType {
101
+ TALKING_A = 0;
102
+ IDLE_A = 1;
103
+ TALKING_B = 2;
104
+ IDLE_B = 3;
105
+ BACKGROUND = 4;
106
+ }
107
+
108
+ message DownloadableAvatarAnimations {
109
+ optional bytes fileSHA256 = 1;
110
+ optional bytes fileEncSHA256 = 2;
111
+ optional string directPath = 3;
112
+ optional bytes mediaKey = 4;
113
+ optional int64 mediaKeyTimestamp = 5;
114
+ optional string objectID = 6;
115
+ optional AnimationsType animationsType = 7;
116
+ }
117
+
118
+ optional uint32 poseID = 1;
119
+ repeated DownloadableAvatarAnimations avatarAnimations = 2;
120
+ }
121
+
122
+ optional uint32 seconds = 1;
123
+ optional AvatarAudio avatarAudio = 2;
124
+ optional string waveformData = 3;
125
+ optional bytes waveform = 4;
126
+ }
127
+
128
+ message Integral {
129
+ enum AudioFormat {
130
+ UNKNOWN = 0;
131
+ OPUS = 1;
132
+ }
133
+
134
+ optional WAMediaTransport transport = 1;
135
+ optional AudioFormat audioFormat = 2;
136
+ }
137
+
138
+ optional Integral integral = 1;
139
+ optional Ancillary ancillary = 2;
140
+ }
141
+
142
+ message DocumentTransport {
143
+ message Ancillary {
144
+ optional uint32 pageCount = 1;
145
+ }
146
+
147
+ message Integral {
148
+ optional WAMediaTransport transport = 1;
149
+ }
150
+
151
+ optional Integral integral = 1;
152
+ optional Ancillary ancillary = 2;
153
+ }
154
+
155
+ message StickerTransport {
156
+ message Ancillary {
157
+ optional uint32 pageCount = 1;
158
+ optional uint32 height = 2;
159
+ optional uint32 width = 3;
160
+ optional uint32 firstFrameLength = 4;
161
+ optional bytes firstFrameSidecar = 5;
162
+ optional string mustacheText = 6;
163
+ optional bool isThirdParty = 7;
164
+ optional string receiverFetchID = 8;
165
+ optional string accessibilityLabel = 9;
166
+ }
167
+
168
+ message Integral {
169
+ optional WAMediaTransport transport = 1;
170
+ optional bool isAnimated = 2;
171
+ optional string receiverFetchID = 3;
172
+ }
173
+
174
+ optional Integral integral = 1;
175
+ optional Ancillary ancillary = 2;
176
+ }
@@ -0,0 +1,76 @@
1
+ /** Minimal protobuf writer - only what we need */
2
+ export class ProtoWriter {
3
+ private chunks: Buffer[] = [];
4
+
5
+ private encodeVarint(value: number): Buffer {
6
+ const bytes: number[] = [];
7
+ let v = value >>> 0;
8
+ while (v > 127) {
9
+ bytes.push((v & 0x7f) | 0x80);
10
+ v >>>= 7;
11
+ }
12
+ bytes.push(v);
13
+ return Buffer.from(bytes);
14
+ }
15
+
16
+ private fieldHeader(fieldNum: number, wireType: number): Buffer {
17
+ return this.encodeVarint((fieldNum << 3) | wireType);
18
+ }
19
+
20
+ /** Wire type 0 (varint) but supports bigint */
21
+ private encodeVarintBigInt(value: bigint): Buffer {
22
+ const bytes: number[] = [];
23
+ let v = value;
24
+ while (v > 127n) {
25
+ bytes.push(Number((v & 0x7fn) | 0x80n));
26
+ v >>= 7n;
27
+ }
28
+ bytes.push(Number(v));
29
+ return Buffer.from(bytes);
30
+ }
31
+
32
+ /** Wire type 0 (varint) for uint64 fields */
33
+ uint64_varint(fieldNum: number, value: bigint): this {
34
+ this.chunks.push(this.fieldHeader(fieldNum, 0));
35
+ this.chunks.push(this.encodeVarintBigInt(value));
36
+ return this;
37
+ }
38
+
39
+ /** Wire type 2 (length-delimited) - bytes, string, embedded message */
40
+ bytes(fieldNum: number, data: Uint8Array): this {
41
+ const d = Buffer.from(data);
42
+ this.chunks.push(this.fieldHeader(fieldNum, 2));
43
+ this.chunks.push(this.encodeVarint(d.length));
44
+ this.chunks.push(d);
45
+ return this;
46
+ }
47
+
48
+ string(fieldNum: number, value: string): this {
49
+ return this.bytes(fieldNum, Buffer.from(value, "utf8"));
50
+ }
51
+
52
+ /** Wire type 0 (varint) */
53
+ varint(fieldNum: number, value: number): this {
54
+ this.chunks.push(this.fieldHeader(fieldNum, 0));
55
+ this.chunks.push(this.encodeVarint(value));
56
+ return this;
57
+ }
58
+
59
+ /** Wire type 0, bool */
60
+ bool(fieldNum: number, value: boolean): this {
61
+ return this.varint(fieldNum, value ? 1 : 0);
62
+ }
63
+
64
+ /** Wire type 1 (64-bit fixed) - uint64 */
65
+ uint64(fieldNum: number, value: bigint): this {
66
+ const buf = Buffer.alloc(8);
67
+ buf.writeBigUInt64LE(value);
68
+ this.chunks.push(this.fieldHeader(fieldNum, 1));
69
+ this.chunks.push(buf);
70
+ return this;
71
+ }
72
+
73
+ build(): Buffer {
74
+ return Buffer.concat(this.chunks);
75
+ }
76
+ }