@genuxofficial/baileys 1.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 (171) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -0
  3. package/WAProto/GenerateStatics.sh +4 -0
  4. package/WAProto/WAProto.proto +3344 -0
  5. package/WAProto/index.d.ts +37016 -0
  6. package/WAProto/index.js +101044 -0
  7. package/WASignalGroup/GroupProtocol.js +1697 -0
  8. package/WASignalGroup/ciphertext_message.js +16 -0
  9. package/WASignalGroup/group_cipher.js +120 -0
  10. package/WASignalGroup/group_session_builder.js +46 -0
  11. package/WASignalGroup/index.js +5 -0
  12. package/WASignalGroup/keyhelper.js +21 -0
  13. package/WASignalGroup/protobufs.js +3 -0
  14. package/WASignalGroup/queue_job.js +69 -0
  15. package/WASignalGroup/sender_chain_key.js +50 -0
  16. package/WASignalGroup/sender_key_distribution_message.js +78 -0
  17. package/WASignalGroup/sender_key_message.js +92 -0
  18. package/WASignalGroup/sender_key_name.js +70 -0
  19. package/WASignalGroup/sender_key_record.js +56 -0
  20. package/WASignalGroup/sender_key_state.js +129 -0
  21. package/WASignalGroup/sender_message_key.js +39 -0
  22. package/lib/Defaults/baileys-version.json +3 -0
  23. package/lib/Defaults/index.d.ts +53 -0
  24. package/lib/Defaults/index.js +106 -0
  25. package/lib/Signal/libsignal.d.ts +3 -0
  26. package/lib/Signal/libsignal.js +152 -0
  27. package/lib/Socket/Client/index.d.ts +2 -0
  28. package/lib/Socket/Client/index.js +18 -0
  29. package/lib/Socket/Client/types.d.ts +17 -0
  30. package/lib/Socket/Client/types.js +13 -0
  31. package/lib/Socket/Client/websocket.d.ts +12 -0
  32. package/lib/Socket/Client/websocket.js +62 -0
  33. package/lib/Socket/business.d.ts +149 -0
  34. package/lib/Socket/business.js +260 -0
  35. package/lib/Socket/chats.d.ts +85 -0
  36. package/lib/Socket/chats.js +850 -0
  37. package/lib/Socket/groups.d.ts +124 -0
  38. package/lib/Socket/groups.js +314 -0
  39. package/lib/Socket/index.d.ts +149 -0
  40. package/lib/Socket/index.js +10 -0
  41. package/lib/Socket/messages-recv.d.ts +136 -0
  42. package/lib/Socket/messages-recv.js +912 -0
  43. package/lib/Socket/messages-send.d.ts +130 -0
  44. package/lib/Socket/messages-send.js +673 -0
  45. package/lib/Socket/socket.d.ts +45 -0
  46. package/lib/Socket/socket.js +622 -0
  47. package/lib/Socket/usync.d.ts +38 -0
  48. package/lib/Socket/usync.js +70 -0
  49. package/lib/Store/index.d.ts +3 -0
  50. package/lib/Store/index.js +10 -0
  51. package/lib/Store/make-cache-manager-store.d.ts +14 -0
  52. package/lib/Store/make-cache-manager-store.js +83 -0
  53. package/lib/Store/make-in-memory-store.d.ts +118 -0
  54. package/lib/Store/make-in-memory-store.js +420 -0
  55. package/lib/Store/make-ordered-dictionary.d.ts +13 -0
  56. package/lib/Store/make-ordered-dictionary.js +81 -0
  57. package/lib/Store/object-repository.d.ts +10 -0
  58. package/lib/Store/object-repository.js +27 -0
  59. package/lib/Types/Auth.d.ts +105 -0
  60. package/lib/Types/Auth.js +2 -0
  61. package/lib/Types/Call.d.ts +13 -0
  62. package/lib/Types/Call.js +2 -0
  63. package/lib/Types/Chat.d.ts +108 -0
  64. package/lib/Types/Chat.js +4 -0
  65. package/lib/Types/Contact.d.ts +19 -0
  66. package/lib/Types/Contact.js +2 -0
  67. package/lib/Types/Events.d.ts +172 -0
  68. package/lib/Types/Events.js +2 -0
  69. package/lib/Types/GroupMetadata.d.ts +56 -0
  70. package/lib/Types/GroupMetadata.js +2 -0
  71. package/lib/Types/Label.d.ts +46 -0
  72. package/lib/Types/Label.js +27 -0
  73. package/lib/Types/LabelAssociation.d.ts +29 -0
  74. package/lib/Types/LabelAssociation.js +9 -0
  75. package/lib/Types/Message.d.ts +271 -0
  76. package/lib/Types/Message.js +9 -0
  77. package/lib/Types/Product.d.ts +78 -0
  78. package/lib/Types/Product.js +2 -0
  79. package/lib/Types/Signal.d.ts +57 -0
  80. package/lib/Types/Signal.js +2 -0
  81. package/lib/Types/Socket.d.ts +118 -0
  82. package/lib/Types/Socket.js +2 -0
  83. package/lib/Types/State.d.ts +27 -0
  84. package/lib/Types/State.js +2 -0
  85. package/lib/Types/USync.d.ts +25 -0
  86. package/lib/Types/USync.js +2 -0
  87. package/lib/Types/index.d.ts +63 -0
  88. package/lib/Types/index.js +41 -0
  89. package/lib/Utils/auth-utils.d.ts +18 -0
  90. package/lib/Utils/auth-utils.js +200 -0
  91. package/lib/Utils/baileys-event-stream.d.ts +16 -0
  92. package/lib/Utils/baileys-event-stream.js +63 -0
  93. package/lib/Utils/business.d.ts +22 -0
  94. package/lib/Utils/business.js +234 -0
  95. package/lib/Utils/chat-utils.d.ts +72 -0
  96. package/lib/Utils/chat-utils.js +745 -0
  97. package/lib/Utils/crypto.d.ts +42 -0
  98. package/lib/Utils/crypto.js +181 -0
  99. package/lib/Utils/decode-wa-message.d.ts +36 -0
  100. package/lib/Utils/decode-wa-message.js +205 -0
  101. package/lib/Utils/event-buffer.d.ts +35 -0
  102. package/lib/Utils/event-buffer.js +520 -0
  103. package/lib/Utils/generics.d.ts +94 -0
  104. package/lib/Utils/generics.js +433 -0
  105. package/lib/Utils/history.d.ts +19 -0
  106. package/lib/Utils/history.js +94 -0
  107. package/lib/Utils/index.d.ts +17 -0
  108. package/lib/Utils/index.js +33 -0
  109. package/lib/Utils/link-preview.d.ts +21 -0
  110. package/lib/Utils/link-preview.js +116 -0
  111. package/lib/Utils/logger.d.ts +11 -0
  112. package/lib/Utils/logger.js +7 -0
  113. package/lib/Utils/lt-hash.d.ts +12 -0
  114. package/lib/Utils/lt-hash.js +51 -0
  115. package/lib/Utils/make-mutex.d.ts +7 -0
  116. package/lib/Utils/make-mutex.js +44 -0
  117. package/lib/Utils/messages-media.d.ts +108 -0
  118. package/lib/Utils/messages-media.js +667 -0
  119. package/lib/Utils/messages.d.ts +78 -0
  120. package/lib/Utils/messages.js +760 -0
  121. package/lib/Utils/noise-handler.d.ts +21 -0
  122. package/lib/Utils/noise-handler.js +150 -0
  123. package/lib/Utils/process-message.d.ts +42 -0
  124. package/lib/Utils/process-message.js +373 -0
  125. package/lib/Utils/signal.d.ts +33 -0
  126. package/lib/Utils/signal.js +153 -0
  127. package/lib/Utils/use-multi-file-auth-state.d.ts +12 -0
  128. package/lib/Utils/use-multi-file-auth-state.js +94 -0
  129. package/lib/Utils/validate-connection.d.ts +10 -0
  130. package/lib/Utils/validate-connection.js +175 -0
  131. package/lib/WABinary/constants.d.ts +27 -0
  132. package/lib/WABinary/constants.js +40 -0
  133. package/lib/WABinary/decode.d.ts +8 -0
  134. package/lib/WABinary/decode.js +254 -0
  135. package/lib/WABinary/encode.d.ts +4 -0
  136. package/lib/WABinary/encode.js +234 -0
  137. package/lib/WABinary/generic-utils.d.ts +16 -0
  138. package/lib/WABinary/generic-utils.js +110 -0
  139. package/lib/WABinary/index.d.ts +5 -0
  140. package/lib/WABinary/index.js +21 -0
  141. package/lib/WABinary/jid-utils.d.ts +31 -0
  142. package/lib/WABinary/jid-utils.js +62 -0
  143. package/lib/WABinary/types.d.ts +18 -0
  144. package/lib/WABinary/types.js +2 -0
  145. package/lib/WAM/BinaryInfo.d.ts +18 -0
  146. package/lib/WAM/BinaryInfo.js +13 -0
  147. package/lib/WAM/constants.d.ts +39 -0
  148. package/lib/WAM/constants.js +15350 -0
  149. package/lib/WAM/encode.d.ts +4 -0
  150. package/lib/WAM/encode.js +155 -0
  151. package/lib/WAM/index.d.ts +3 -0
  152. package/lib/WAM/index.js +19 -0
  153. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +9 -0
  154. package/lib/WAUSync/Protocols/USyncContactProtocol.js +32 -0
  155. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +22 -0
  156. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +57 -0
  157. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +12 -0
  158. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +30 -0
  159. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +12 -0
  160. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +42 -0
  161. package/lib/WAUSync/Protocols/index.d.ts +4 -0
  162. package/lib/WAUSync/Protocols/index.js +20 -0
  163. package/lib/WAUSync/USyncQuery.d.ts +26 -0
  164. package/lib/WAUSync/USyncQuery.js +79 -0
  165. package/lib/WAUSync/USyncUser.d.ts +10 -0
  166. package/lib/WAUSync/USyncUser.js +22 -0
  167. package/lib/WAUSync/index.d.ts +3 -0
  168. package/lib/WAUSync/index.js +19 -0
  169. package/lib/index.d.ts +12 -0
  170. package/lib/index.js +31 -0
  171. package/package.json +104 -0
@@ -0,0 +1,1697 @@
1
+ /*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/
2
+ "use strict";
3
+
4
+ var $protobuf = require("protobufjs/minimal");
5
+
6
+ // Common aliases
7
+ var $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;
8
+
9
+ // Exported root namespace
10
+ var $root = $protobuf.roots["default"] || ($protobuf.roots["default"] = {});
11
+
12
+ $root.groupproto = (function() {
13
+
14
+ /**
15
+ * Namespace groupproto.
16
+ * @exports groupproto
17
+ * @namespace
18
+ */
19
+ var groupproto = {};
20
+
21
+ groupproto.SenderKeyMessage = (function() {
22
+
23
+ /**
24
+ * Properties of a SenderKeyMessage.
25
+ * @memberof groupproto
26
+ * @interface ISenderKeyMessage
27
+ * @property {number|null} [id] SenderKeyMessage id
28
+ * @property {number|null} [iteration] SenderKeyMessage iteration
29
+ * @property {Uint8Array|null} [ciphertext] SenderKeyMessage ciphertext
30
+ */
31
+
32
+ /**
33
+ * Constructs a new SenderKeyMessage.
34
+ * @memberof groupproto
35
+ * @classdesc Represents a SenderKeyMessage.
36
+ * @implements ISenderKeyMessage
37
+ * @constructor
38
+ * @param {groupproto.ISenderKeyMessage=} [properties] Properties to set
39
+ */
40
+ function SenderKeyMessage(properties) {
41
+ if (properties)
42
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
43
+ if (properties[keys[i]] != null)
44
+ this[keys[i]] = properties[keys[i]];
45
+ }
46
+
47
+ /**
48
+ * SenderKeyMessage id.
49
+ * @member {number} id
50
+ * @memberof groupproto.SenderKeyMessage
51
+ * @instance
52
+ */
53
+ SenderKeyMessage.prototype.id = 0;
54
+
55
+ /**
56
+ * SenderKeyMessage iteration.
57
+ * @member {number} iteration
58
+ * @memberof groupproto.SenderKeyMessage
59
+ * @instance
60
+ */
61
+ SenderKeyMessage.prototype.iteration = 0;
62
+
63
+ /**
64
+ * SenderKeyMessage ciphertext.
65
+ * @member {Uint8Array} ciphertext
66
+ * @memberof groupproto.SenderKeyMessage
67
+ * @instance
68
+ */
69
+ SenderKeyMessage.prototype.ciphertext = $util.newBuffer([]);
70
+
71
+ /**
72
+ * Creates a new SenderKeyMessage instance using the specified properties.
73
+ * @function create
74
+ * @memberof groupproto.SenderKeyMessage
75
+ * @static
76
+ * @param {groupproto.ISenderKeyMessage=} [properties] Properties to set
77
+ * @returns {groupproto.SenderKeyMessage} SenderKeyMessage instance
78
+ */
79
+ SenderKeyMessage.create = function create(properties) {
80
+ return new SenderKeyMessage(properties);
81
+ };
82
+
83
+ /**
84
+ * Encodes the specified SenderKeyMessage message. Does not implicitly {@link groupproto.SenderKeyMessage.verify|verify} messages.
85
+ * @function encode
86
+ * @memberof groupproto.SenderKeyMessage
87
+ * @static
88
+ * @param {groupproto.ISenderKeyMessage} message SenderKeyMessage message or plain object to encode
89
+ * @param {$protobuf.Writer} [writer] Writer to encode to
90
+ * @returns {$protobuf.Writer} Writer
91
+ */
92
+ SenderKeyMessage.encode = function encode(message, writer) {
93
+ if (!writer)
94
+ writer = $Writer.create();
95
+ if (message.id != null && Object.hasOwnProperty.call(message, "id"))
96
+ writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id);
97
+ if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration"))
98
+ writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.iteration);
99
+ if (message.ciphertext != null && Object.hasOwnProperty.call(message, "ciphertext"))
100
+ writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.ciphertext);
101
+ return writer;
102
+ };
103
+
104
+ /**
105
+ * Encodes the specified SenderKeyMessage message, length delimited. Does not implicitly {@link groupproto.SenderKeyMessage.verify|verify} messages.
106
+ * @function encodeDelimited
107
+ * @memberof groupproto.SenderKeyMessage
108
+ * @static
109
+ * @param {groupproto.ISenderKeyMessage} message SenderKeyMessage message or plain object to encode
110
+ * @param {$protobuf.Writer} [writer] Writer to encode to
111
+ * @returns {$protobuf.Writer} Writer
112
+ */
113
+ SenderKeyMessage.encodeDelimited = function encodeDelimited(message, writer) {
114
+ return this.encode(message, writer).ldelim();
115
+ };
116
+
117
+ /**
118
+ * Decodes a SenderKeyMessage message from the specified reader or buffer.
119
+ * @function decode
120
+ * @memberof groupproto.SenderKeyMessage
121
+ * @static
122
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
123
+ * @param {number} [length] Message length if known beforehand
124
+ * @returns {groupproto.SenderKeyMessage} SenderKeyMessage
125
+ * @throws {Error} If the payload is not a reader or valid buffer
126
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
127
+ */
128
+ SenderKeyMessage.decode = function decode(reader, length) {
129
+ if (!(reader instanceof $Reader))
130
+ reader = $Reader.create(reader);
131
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderKeyMessage();
132
+ while (reader.pos < end) {
133
+ var tag = reader.uint32();
134
+ switch (tag >>> 3) {
135
+ case 1:
136
+ message.id = reader.uint32();
137
+ break;
138
+ case 2:
139
+ message.iteration = reader.uint32();
140
+ break;
141
+ case 3:
142
+ message.ciphertext = reader.bytes();
143
+ break;
144
+ default:
145
+ reader.skipType(tag & 7);
146
+ break;
147
+ }
148
+ }
149
+ return message;
150
+ };
151
+
152
+ /**
153
+ * Decodes a SenderKeyMessage message from the specified reader or buffer, length delimited.
154
+ * @function decodeDelimited
155
+ * @memberof groupproto.SenderKeyMessage
156
+ * @static
157
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
158
+ * @returns {groupproto.SenderKeyMessage} SenderKeyMessage
159
+ * @throws {Error} If the payload is not a reader or valid buffer
160
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
161
+ */
162
+ SenderKeyMessage.decodeDelimited = function decodeDelimited(reader) {
163
+ if (!(reader instanceof $Reader))
164
+ reader = new $Reader(reader);
165
+ return this.decode(reader, reader.uint32());
166
+ };
167
+
168
+ /**
169
+ * Verifies a SenderKeyMessage message.
170
+ * @function verify
171
+ * @memberof groupproto.SenderKeyMessage
172
+ * @static
173
+ * @param {Object.<string,*>} message Plain object to verify
174
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
175
+ */
176
+ SenderKeyMessage.verify = function verify(message) {
177
+ if (typeof message !== "object" || message === null)
178
+ return "object expected";
179
+ if (message.id != null && message.hasOwnProperty("id"))
180
+ if (!$util.isInteger(message.id))
181
+ return "id: integer expected";
182
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
183
+ if (!$util.isInteger(message.iteration))
184
+ return "iteration: integer expected";
185
+ if (message.ciphertext != null && message.hasOwnProperty("ciphertext"))
186
+ if (!(message.ciphertext && typeof message.ciphertext.length === "number" || $util.isString(message.ciphertext)))
187
+ return "ciphertext: buffer expected";
188
+ return null;
189
+ };
190
+
191
+ /**
192
+ * Creates a SenderKeyMessage message from a plain object. Also converts values to their respective internal types.
193
+ * @function fromObject
194
+ * @memberof groupproto.SenderKeyMessage
195
+ * @static
196
+ * @param {Object.<string,*>} object Plain object
197
+ * @returns {groupproto.SenderKeyMessage} SenderKeyMessage
198
+ */
199
+ SenderKeyMessage.fromObject = function fromObject(object) {
200
+ if (object instanceof $root.groupproto.SenderKeyMessage)
201
+ return object;
202
+ var message = new $root.groupproto.SenderKeyMessage();
203
+ if (object.id != null)
204
+ message.id = object.id >>> 0;
205
+ if (object.iteration != null)
206
+ message.iteration = object.iteration >>> 0;
207
+ if (object.ciphertext != null)
208
+ if (typeof object.ciphertext === "string")
209
+ $util.base64.decode(object.ciphertext, message.ciphertext = $util.newBuffer($util.base64.length(object.ciphertext)), 0);
210
+ else if (object.ciphertext.length)
211
+ message.ciphertext = object.ciphertext;
212
+ return message;
213
+ };
214
+
215
+ /**
216
+ * Creates a plain object from a SenderKeyMessage message. Also converts values to other types if specified.
217
+ * @function toObject
218
+ * @memberof groupproto.SenderKeyMessage
219
+ * @static
220
+ * @param {groupproto.SenderKeyMessage} message SenderKeyMessage
221
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
222
+ * @returns {Object.<string,*>} Plain object
223
+ */
224
+ SenderKeyMessage.toObject = function toObject(message, options) {
225
+ if (!options)
226
+ options = {};
227
+ var object = {};
228
+ if (options.defaults) {
229
+ object.id = 0;
230
+ object.iteration = 0;
231
+ if (options.bytes === String)
232
+ object.ciphertext = "";
233
+ else {
234
+ object.ciphertext = [];
235
+ if (options.bytes !== Array)
236
+ object.ciphertext = $util.newBuffer(object.ciphertext);
237
+ }
238
+ }
239
+ if (message.id != null && message.hasOwnProperty("id"))
240
+ object.id = message.id;
241
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
242
+ object.iteration = message.iteration;
243
+ if (message.ciphertext != null && message.hasOwnProperty("ciphertext"))
244
+ object.ciphertext = options.bytes === String ? $util.base64.encode(message.ciphertext, 0, message.ciphertext.length) : options.bytes === Array ? Array.prototype.slice.call(message.ciphertext) : message.ciphertext;
245
+ return object;
246
+ };
247
+
248
+ /**
249
+ * Converts this SenderKeyMessage to JSON.
250
+ * @function toJSON
251
+ * @memberof groupproto.SenderKeyMessage
252
+ * @instance
253
+ * @returns {Object.<string,*>} JSON object
254
+ */
255
+ SenderKeyMessage.prototype.toJSON = function toJSON() {
256
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
257
+ };
258
+
259
+ return SenderKeyMessage;
260
+ })();
261
+
262
+ groupproto.SenderKeyDistributionMessage = (function() {
263
+
264
+ /**
265
+ * Properties of a SenderKeyDistributionMessage.
266
+ * @memberof groupproto
267
+ * @interface ISenderKeyDistributionMessage
268
+ * @property {number|null} [id] SenderKeyDistributionMessage id
269
+ * @property {number|null} [iteration] SenderKeyDistributionMessage iteration
270
+ * @property {Uint8Array|null} [chainKey] SenderKeyDistributionMessage chainKey
271
+ * @property {Uint8Array|null} [signingKey] SenderKeyDistributionMessage signingKey
272
+ */
273
+
274
+ /**
275
+ * Constructs a new SenderKeyDistributionMessage.
276
+ * @memberof groupproto
277
+ * @classdesc Represents a SenderKeyDistributionMessage.
278
+ * @implements ISenderKeyDistributionMessage
279
+ * @constructor
280
+ * @param {groupproto.ISenderKeyDistributionMessage=} [properties] Properties to set
281
+ */
282
+ function SenderKeyDistributionMessage(properties) {
283
+ if (properties)
284
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
285
+ if (properties[keys[i]] != null)
286
+ this[keys[i]] = properties[keys[i]];
287
+ }
288
+
289
+ /**
290
+ * SenderKeyDistributionMessage id.
291
+ * @member {number} id
292
+ * @memberof groupproto.SenderKeyDistributionMessage
293
+ * @instance
294
+ */
295
+ SenderKeyDistributionMessage.prototype.id = 0;
296
+
297
+ /**
298
+ * SenderKeyDistributionMessage iteration.
299
+ * @member {number} iteration
300
+ * @memberof groupproto.SenderKeyDistributionMessage
301
+ * @instance
302
+ */
303
+ SenderKeyDistributionMessage.prototype.iteration = 0;
304
+
305
+ /**
306
+ * SenderKeyDistributionMessage chainKey.
307
+ * @member {Uint8Array} chainKey
308
+ * @memberof groupproto.SenderKeyDistributionMessage
309
+ * @instance
310
+ */
311
+ SenderKeyDistributionMessage.prototype.chainKey = $util.newBuffer([]);
312
+
313
+ /**
314
+ * SenderKeyDistributionMessage signingKey.
315
+ * @member {Uint8Array} signingKey
316
+ * @memberof groupproto.SenderKeyDistributionMessage
317
+ * @instance
318
+ */
319
+ SenderKeyDistributionMessage.prototype.signingKey = $util.newBuffer([]);
320
+
321
+ /**
322
+ * Creates a new SenderKeyDistributionMessage instance using the specified properties.
323
+ * @function create
324
+ * @memberof groupproto.SenderKeyDistributionMessage
325
+ * @static
326
+ * @param {groupproto.ISenderKeyDistributionMessage=} [properties] Properties to set
327
+ * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage instance
328
+ */
329
+ SenderKeyDistributionMessage.create = function create(properties) {
330
+ return new SenderKeyDistributionMessage(properties);
331
+ };
332
+
333
+ /**
334
+ * Encodes the specified SenderKeyDistributionMessage message. Does not implicitly {@link groupproto.SenderKeyDistributionMessage.verify|verify} messages.
335
+ * @function encode
336
+ * @memberof groupproto.SenderKeyDistributionMessage
337
+ * @static
338
+ * @param {groupproto.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode
339
+ * @param {$protobuf.Writer} [writer] Writer to encode to
340
+ * @returns {$protobuf.Writer} Writer
341
+ */
342
+ SenderKeyDistributionMessage.encode = function encode(message, writer) {
343
+ if (!writer)
344
+ writer = $Writer.create();
345
+ if (message.id != null && Object.hasOwnProperty.call(message, "id"))
346
+ writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id);
347
+ if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration"))
348
+ writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.iteration);
349
+ if (message.chainKey != null && Object.hasOwnProperty.call(message, "chainKey"))
350
+ writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.chainKey);
351
+ if (message.signingKey != null && Object.hasOwnProperty.call(message, "signingKey"))
352
+ writer.uint32(/* id 4, wireType 2 =*/34).bytes(message.signingKey);
353
+ return writer;
354
+ };
355
+
356
+ /**
357
+ * Encodes the specified SenderKeyDistributionMessage message, length delimited. Does not implicitly {@link groupproto.SenderKeyDistributionMessage.verify|verify} messages.
358
+ * @function encodeDelimited
359
+ * @memberof groupproto.SenderKeyDistributionMessage
360
+ * @static
361
+ * @param {groupproto.ISenderKeyDistributionMessage} message SenderKeyDistributionMessage message or plain object to encode
362
+ * @param {$protobuf.Writer} [writer] Writer to encode to
363
+ * @returns {$protobuf.Writer} Writer
364
+ */
365
+ SenderKeyDistributionMessage.encodeDelimited = function encodeDelimited(message, writer) {
366
+ return this.encode(message, writer).ldelim();
367
+ };
368
+
369
+ /**
370
+ * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer.
371
+ * @function decode
372
+ * @memberof groupproto.SenderKeyDistributionMessage
373
+ * @static
374
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
375
+ * @param {number} [length] Message length if known beforehand
376
+ * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage
377
+ * @throws {Error} If the payload is not a reader or valid buffer
378
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
379
+ */
380
+ SenderKeyDistributionMessage.decode = function decode(reader, length) {
381
+ if (!(reader instanceof $Reader))
382
+ reader = $Reader.create(reader);
383
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderKeyDistributionMessage();
384
+ while (reader.pos < end) {
385
+ var tag = reader.uint32();
386
+ switch (tag >>> 3) {
387
+ case 1:
388
+ message.id = reader.uint32();
389
+ break;
390
+ case 2:
391
+ message.iteration = reader.uint32();
392
+ break;
393
+ case 3:
394
+ message.chainKey = reader.bytes();
395
+ break;
396
+ case 4:
397
+ message.signingKey = reader.bytes();
398
+ break;
399
+ default:
400
+ reader.skipType(tag & 7);
401
+ break;
402
+ }
403
+ }
404
+ return message;
405
+ };
406
+
407
+ /**
408
+ * Decodes a SenderKeyDistributionMessage message from the specified reader or buffer, length delimited.
409
+ * @function decodeDelimited
410
+ * @memberof groupproto.SenderKeyDistributionMessage
411
+ * @static
412
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
413
+ * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage
414
+ * @throws {Error} If the payload is not a reader or valid buffer
415
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
416
+ */
417
+ SenderKeyDistributionMessage.decodeDelimited = function decodeDelimited(reader) {
418
+ if (!(reader instanceof $Reader))
419
+ reader = new $Reader(reader);
420
+ return this.decode(reader, reader.uint32());
421
+ };
422
+
423
+ /**
424
+ * Verifies a SenderKeyDistributionMessage message.
425
+ * @function verify
426
+ * @memberof groupproto.SenderKeyDistributionMessage
427
+ * @static
428
+ * @param {Object.<string,*>} message Plain object to verify
429
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
430
+ */
431
+ SenderKeyDistributionMessage.verify = function verify(message) {
432
+ if (typeof message !== "object" || message === null)
433
+ return "object expected";
434
+ if (message.id != null && message.hasOwnProperty("id"))
435
+ if (!$util.isInteger(message.id))
436
+ return "id: integer expected";
437
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
438
+ if (!$util.isInteger(message.iteration))
439
+ return "iteration: integer expected";
440
+ if (message.chainKey != null && message.hasOwnProperty("chainKey"))
441
+ if (!(message.chainKey && typeof message.chainKey.length === "number" || $util.isString(message.chainKey)))
442
+ return "chainKey: buffer expected";
443
+ if (message.signingKey != null && message.hasOwnProperty("signingKey"))
444
+ if (!(message.signingKey && typeof message.signingKey.length === "number" || $util.isString(message.signingKey)))
445
+ return "signingKey: buffer expected";
446
+ return null;
447
+ };
448
+
449
+ /**
450
+ * Creates a SenderKeyDistributionMessage message from a plain object. Also converts values to their respective internal types.
451
+ * @function fromObject
452
+ * @memberof groupproto.SenderKeyDistributionMessage
453
+ * @static
454
+ * @param {Object.<string,*>} object Plain object
455
+ * @returns {groupproto.SenderKeyDistributionMessage} SenderKeyDistributionMessage
456
+ */
457
+ SenderKeyDistributionMessage.fromObject = function fromObject(object) {
458
+ if (object instanceof $root.groupproto.SenderKeyDistributionMessage)
459
+ return object;
460
+ var message = new $root.groupproto.SenderKeyDistributionMessage();
461
+ if (object.id != null)
462
+ message.id = object.id >>> 0;
463
+ if (object.iteration != null)
464
+ message.iteration = object.iteration >>> 0;
465
+ if (object.chainKey != null)
466
+ if (typeof object.chainKey === "string")
467
+ $util.base64.decode(object.chainKey, message.chainKey = $util.newBuffer($util.base64.length(object.chainKey)), 0);
468
+ else if (object.chainKey.length)
469
+ message.chainKey = object.chainKey;
470
+ if (object.signingKey != null)
471
+ if (typeof object.signingKey === "string")
472
+ $util.base64.decode(object.signingKey, message.signingKey = $util.newBuffer($util.base64.length(object.signingKey)), 0);
473
+ else if (object.signingKey.length)
474
+ message.signingKey = object.signingKey;
475
+ return message;
476
+ };
477
+
478
+ /**
479
+ * Creates a plain object from a SenderKeyDistributionMessage message. Also converts values to other types if specified.
480
+ * @function toObject
481
+ * @memberof groupproto.SenderKeyDistributionMessage
482
+ * @static
483
+ * @param {groupproto.SenderKeyDistributionMessage} message SenderKeyDistributionMessage
484
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
485
+ * @returns {Object.<string,*>} Plain object
486
+ */
487
+ SenderKeyDistributionMessage.toObject = function toObject(message, options) {
488
+ if (!options)
489
+ options = {};
490
+ var object = {};
491
+ if (options.defaults) {
492
+ object.id = 0;
493
+ object.iteration = 0;
494
+ if (options.bytes === String)
495
+ object.chainKey = "";
496
+ else {
497
+ object.chainKey = [];
498
+ if (options.bytes !== Array)
499
+ object.chainKey = $util.newBuffer(object.chainKey);
500
+ }
501
+ if (options.bytes === String)
502
+ object.signingKey = "";
503
+ else {
504
+ object.signingKey = [];
505
+ if (options.bytes !== Array)
506
+ object.signingKey = $util.newBuffer(object.signingKey);
507
+ }
508
+ }
509
+ if (message.id != null && message.hasOwnProperty("id"))
510
+ object.id = message.id;
511
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
512
+ object.iteration = message.iteration;
513
+ if (message.chainKey != null && message.hasOwnProperty("chainKey"))
514
+ object.chainKey = options.bytes === String ? $util.base64.encode(message.chainKey, 0, message.chainKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.chainKey) : message.chainKey;
515
+ if (message.signingKey != null && message.hasOwnProperty("signingKey"))
516
+ object.signingKey = options.bytes === String ? $util.base64.encode(message.signingKey, 0, message.signingKey.length) : options.bytes === Array ? Array.prototype.slice.call(message.signingKey) : message.signingKey;
517
+ return object;
518
+ };
519
+
520
+ /**
521
+ * Converts this SenderKeyDistributionMessage to JSON.
522
+ * @function toJSON
523
+ * @memberof groupproto.SenderKeyDistributionMessage
524
+ * @instance
525
+ * @returns {Object.<string,*>} JSON object
526
+ */
527
+ SenderKeyDistributionMessage.prototype.toJSON = function toJSON() {
528
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
529
+ };
530
+
531
+ return SenderKeyDistributionMessage;
532
+ })();
533
+
534
+ groupproto.SenderChainKey = (function() {
535
+
536
+ /**
537
+ * Properties of a SenderChainKey.
538
+ * @memberof groupproto
539
+ * @interface ISenderChainKey
540
+ * @property {number|null} [iteration] SenderChainKey iteration
541
+ * @property {Uint8Array|null} [seed] SenderChainKey seed
542
+ */
543
+
544
+ /**
545
+ * Constructs a new SenderChainKey.
546
+ * @memberof groupproto
547
+ * @classdesc Represents a SenderChainKey.
548
+ * @implements ISenderChainKey
549
+ * @constructor
550
+ * @param {groupproto.ISenderChainKey=} [properties] Properties to set
551
+ */
552
+ function SenderChainKey(properties) {
553
+ if (properties)
554
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
555
+ if (properties[keys[i]] != null)
556
+ this[keys[i]] = properties[keys[i]];
557
+ }
558
+
559
+ /**
560
+ * SenderChainKey iteration.
561
+ * @member {number} iteration
562
+ * @memberof groupproto.SenderChainKey
563
+ * @instance
564
+ */
565
+ SenderChainKey.prototype.iteration = 0;
566
+
567
+ /**
568
+ * SenderChainKey seed.
569
+ * @member {Uint8Array} seed
570
+ * @memberof groupproto.SenderChainKey
571
+ * @instance
572
+ */
573
+ SenderChainKey.prototype.seed = $util.newBuffer([]);
574
+
575
+ /**
576
+ * Creates a new SenderChainKey instance using the specified properties.
577
+ * @function create
578
+ * @memberof groupproto.SenderChainKey
579
+ * @static
580
+ * @param {groupproto.ISenderChainKey=} [properties] Properties to set
581
+ * @returns {groupproto.SenderChainKey} SenderChainKey instance
582
+ */
583
+ SenderChainKey.create = function create(properties) {
584
+ return new SenderChainKey(properties);
585
+ };
586
+
587
+ /**
588
+ * Encodes the specified SenderChainKey message. Does not implicitly {@link groupproto.SenderChainKey.verify|verify} messages.
589
+ * @function encode
590
+ * @memberof groupproto.SenderChainKey
591
+ * @static
592
+ * @param {groupproto.ISenderChainKey} message SenderChainKey message or plain object to encode
593
+ * @param {$protobuf.Writer} [writer] Writer to encode to
594
+ * @returns {$protobuf.Writer} Writer
595
+ */
596
+ SenderChainKey.encode = function encode(message, writer) {
597
+ if (!writer)
598
+ writer = $Writer.create();
599
+ if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration"))
600
+ writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration);
601
+ if (message.seed != null && Object.hasOwnProperty.call(message, "seed"))
602
+ writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed);
603
+ return writer;
604
+ };
605
+
606
+ /**
607
+ * Encodes the specified SenderChainKey message, length delimited. Does not implicitly {@link groupproto.SenderChainKey.verify|verify} messages.
608
+ * @function encodeDelimited
609
+ * @memberof groupproto.SenderChainKey
610
+ * @static
611
+ * @param {groupproto.ISenderChainKey} message SenderChainKey message or plain object to encode
612
+ * @param {$protobuf.Writer} [writer] Writer to encode to
613
+ * @returns {$protobuf.Writer} Writer
614
+ */
615
+ SenderChainKey.encodeDelimited = function encodeDelimited(message, writer) {
616
+ return this.encode(message, writer).ldelim();
617
+ };
618
+
619
+ /**
620
+ * Decodes a SenderChainKey message from the specified reader or buffer.
621
+ * @function decode
622
+ * @memberof groupproto.SenderChainKey
623
+ * @static
624
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
625
+ * @param {number} [length] Message length if known beforehand
626
+ * @returns {groupproto.SenderChainKey} SenderChainKey
627
+ * @throws {Error} If the payload is not a reader or valid buffer
628
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
629
+ */
630
+ SenderChainKey.decode = function decode(reader, length) {
631
+ if (!(reader instanceof $Reader))
632
+ reader = $Reader.create(reader);
633
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderChainKey();
634
+ while (reader.pos < end) {
635
+ var tag = reader.uint32();
636
+ switch (tag >>> 3) {
637
+ case 1:
638
+ message.iteration = reader.uint32();
639
+ break;
640
+ case 2:
641
+ message.seed = reader.bytes();
642
+ break;
643
+ default:
644
+ reader.skipType(tag & 7);
645
+ break;
646
+ }
647
+ }
648
+ return message;
649
+ };
650
+
651
+ /**
652
+ * Decodes a SenderChainKey message from the specified reader or buffer, length delimited.
653
+ * @function decodeDelimited
654
+ * @memberof groupproto.SenderChainKey
655
+ * @static
656
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
657
+ * @returns {groupproto.SenderChainKey} SenderChainKey
658
+ * @throws {Error} If the payload is not a reader or valid buffer
659
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
660
+ */
661
+ SenderChainKey.decodeDelimited = function decodeDelimited(reader) {
662
+ if (!(reader instanceof $Reader))
663
+ reader = new $Reader(reader);
664
+ return this.decode(reader, reader.uint32());
665
+ };
666
+
667
+ /**
668
+ * Verifies a SenderChainKey message.
669
+ * @function verify
670
+ * @memberof groupproto.SenderChainKey
671
+ * @static
672
+ * @param {Object.<string,*>} message Plain object to verify
673
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
674
+ */
675
+ SenderChainKey.verify = function verify(message) {
676
+ if (typeof message !== "object" || message === null)
677
+ return "object expected";
678
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
679
+ if (!$util.isInteger(message.iteration))
680
+ return "iteration: integer expected";
681
+ if (message.seed != null && message.hasOwnProperty("seed"))
682
+ if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed)))
683
+ return "seed: buffer expected";
684
+ return null;
685
+ };
686
+
687
+ /**
688
+ * Creates a SenderChainKey message from a plain object. Also converts values to their respective internal types.
689
+ * @function fromObject
690
+ * @memberof groupproto.SenderChainKey
691
+ * @static
692
+ * @param {Object.<string,*>} object Plain object
693
+ * @returns {groupproto.SenderChainKey} SenderChainKey
694
+ */
695
+ SenderChainKey.fromObject = function fromObject(object) {
696
+ if (object instanceof $root.groupproto.SenderChainKey)
697
+ return object;
698
+ var message = new $root.groupproto.SenderChainKey();
699
+ if (object.iteration != null)
700
+ message.iteration = object.iteration >>> 0;
701
+ if (object.seed != null)
702
+ if (typeof object.seed === "string")
703
+ $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0);
704
+ else if (object.seed.length)
705
+ message.seed = object.seed;
706
+ return message;
707
+ };
708
+
709
+ /**
710
+ * Creates a plain object from a SenderChainKey message. Also converts values to other types if specified.
711
+ * @function toObject
712
+ * @memberof groupproto.SenderChainKey
713
+ * @static
714
+ * @param {groupproto.SenderChainKey} message SenderChainKey
715
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
716
+ * @returns {Object.<string,*>} Plain object
717
+ */
718
+ SenderChainKey.toObject = function toObject(message, options) {
719
+ if (!options)
720
+ options = {};
721
+ var object = {};
722
+ if (options.defaults) {
723
+ object.iteration = 0;
724
+ if (options.bytes === String)
725
+ object.seed = "";
726
+ else {
727
+ object.seed = [];
728
+ if (options.bytes !== Array)
729
+ object.seed = $util.newBuffer(object.seed);
730
+ }
731
+ }
732
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
733
+ object.iteration = message.iteration;
734
+ if (message.seed != null && message.hasOwnProperty("seed"))
735
+ object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed;
736
+ return object;
737
+ };
738
+
739
+ /**
740
+ * Converts this SenderChainKey to JSON.
741
+ * @function toJSON
742
+ * @memberof groupproto.SenderChainKey
743
+ * @instance
744
+ * @returns {Object.<string,*>} JSON object
745
+ */
746
+ SenderChainKey.prototype.toJSON = function toJSON() {
747
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
748
+ };
749
+
750
+ return SenderChainKey;
751
+ })();
752
+
753
+ groupproto.SenderMessageKey = (function() {
754
+
755
+ /**
756
+ * Properties of a SenderMessageKey.
757
+ * @memberof groupproto
758
+ * @interface ISenderMessageKey
759
+ * @property {number|null} [iteration] SenderMessageKey iteration
760
+ * @property {Uint8Array|null} [seed] SenderMessageKey seed
761
+ */
762
+
763
+ /**
764
+ * Constructs a new SenderMessageKey.
765
+ * @memberof groupproto
766
+ * @classdesc Represents a SenderMessageKey.
767
+ * @implements ISenderMessageKey
768
+ * @constructor
769
+ * @param {groupproto.ISenderMessageKey=} [properties] Properties to set
770
+ */
771
+ function SenderMessageKey(properties) {
772
+ if (properties)
773
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
774
+ if (properties[keys[i]] != null)
775
+ this[keys[i]] = properties[keys[i]];
776
+ }
777
+
778
+ /**
779
+ * SenderMessageKey iteration.
780
+ * @member {number} iteration
781
+ * @memberof groupproto.SenderMessageKey
782
+ * @instance
783
+ */
784
+ SenderMessageKey.prototype.iteration = 0;
785
+
786
+ /**
787
+ * SenderMessageKey seed.
788
+ * @member {Uint8Array} seed
789
+ * @memberof groupproto.SenderMessageKey
790
+ * @instance
791
+ */
792
+ SenderMessageKey.prototype.seed = $util.newBuffer([]);
793
+
794
+ /**
795
+ * Creates a new SenderMessageKey instance using the specified properties.
796
+ * @function create
797
+ * @memberof groupproto.SenderMessageKey
798
+ * @static
799
+ * @param {groupproto.ISenderMessageKey=} [properties] Properties to set
800
+ * @returns {groupproto.SenderMessageKey} SenderMessageKey instance
801
+ */
802
+ SenderMessageKey.create = function create(properties) {
803
+ return new SenderMessageKey(properties);
804
+ };
805
+
806
+ /**
807
+ * Encodes the specified SenderMessageKey message. Does not implicitly {@link groupproto.SenderMessageKey.verify|verify} messages.
808
+ * @function encode
809
+ * @memberof groupproto.SenderMessageKey
810
+ * @static
811
+ * @param {groupproto.ISenderMessageKey} message SenderMessageKey message or plain object to encode
812
+ * @param {$protobuf.Writer} [writer] Writer to encode to
813
+ * @returns {$protobuf.Writer} Writer
814
+ */
815
+ SenderMessageKey.encode = function encode(message, writer) {
816
+ if (!writer)
817
+ writer = $Writer.create();
818
+ if (message.iteration != null && Object.hasOwnProperty.call(message, "iteration"))
819
+ writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.iteration);
820
+ if (message.seed != null && Object.hasOwnProperty.call(message, "seed"))
821
+ writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.seed);
822
+ return writer;
823
+ };
824
+
825
+ /**
826
+ * Encodes the specified SenderMessageKey message, length delimited. Does not implicitly {@link groupproto.SenderMessageKey.verify|verify} messages.
827
+ * @function encodeDelimited
828
+ * @memberof groupproto.SenderMessageKey
829
+ * @static
830
+ * @param {groupproto.ISenderMessageKey} message SenderMessageKey message or plain object to encode
831
+ * @param {$protobuf.Writer} [writer] Writer to encode to
832
+ * @returns {$protobuf.Writer} Writer
833
+ */
834
+ SenderMessageKey.encodeDelimited = function encodeDelimited(message, writer) {
835
+ return this.encode(message, writer).ldelim();
836
+ };
837
+
838
+ /**
839
+ * Decodes a SenderMessageKey message from the specified reader or buffer.
840
+ * @function decode
841
+ * @memberof groupproto.SenderMessageKey
842
+ * @static
843
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
844
+ * @param {number} [length] Message length if known beforehand
845
+ * @returns {groupproto.SenderMessageKey} SenderMessageKey
846
+ * @throws {Error} If the payload is not a reader or valid buffer
847
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
848
+ */
849
+ SenderMessageKey.decode = function decode(reader, length) {
850
+ if (!(reader instanceof $Reader))
851
+ reader = $Reader.create(reader);
852
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderMessageKey();
853
+ while (reader.pos < end) {
854
+ var tag = reader.uint32();
855
+ switch (tag >>> 3) {
856
+ case 1:
857
+ message.iteration = reader.uint32();
858
+ break;
859
+ case 2:
860
+ message.seed = reader.bytes();
861
+ break;
862
+ default:
863
+ reader.skipType(tag & 7);
864
+ break;
865
+ }
866
+ }
867
+ return message;
868
+ };
869
+
870
+ /**
871
+ * Decodes a SenderMessageKey message from the specified reader or buffer, length delimited.
872
+ * @function decodeDelimited
873
+ * @memberof groupproto.SenderMessageKey
874
+ * @static
875
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
876
+ * @returns {groupproto.SenderMessageKey} SenderMessageKey
877
+ * @throws {Error} If the payload is not a reader or valid buffer
878
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
879
+ */
880
+ SenderMessageKey.decodeDelimited = function decodeDelimited(reader) {
881
+ if (!(reader instanceof $Reader))
882
+ reader = new $Reader(reader);
883
+ return this.decode(reader, reader.uint32());
884
+ };
885
+
886
+ /**
887
+ * Verifies a SenderMessageKey message.
888
+ * @function verify
889
+ * @memberof groupproto.SenderMessageKey
890
+ * @static
891
+ * @param {Object.<string,*>} message Plain object to verify
892
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
893
+ */
894
+ SenderMessageKey.verify = function verify(message) {
895
+ if (typeof message !== "object" || message === null)
896
+ return "object expected";
897
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
898
+ if (!$util.isInteger(message.iteration))
899
+ return "iteration: integer expected";
900
+ if (message.seed != null && message.hasOwnProperty("seed"))
901
+ if (!(message.seed && typeof message.seed.length === "number" || $util.isString(message.seed)))
902
+ return "seed: buffer expected";
903
+ return null;
904
+ };
905
+
906
+ /**
907
+ * Creates a SenderMessageKey message from a plain object. Also converts values to their respective internal types.
908
+ * @function fromObject
909
+ * @memberof groupproto.SenderMessageKey
910
+ * @static
911
+ * @param {Object.<string,*>} object Plain object
912
+ * @returns {groupproto.SenderMessageKey} SenderMessageKey
913
+ */
914
+ SenderMessageKey.fromObject = function fromObject(object) {
915
+ if (object instanceof $root.groupproto.SenderMessageKey)
916
+ return object;
917
+ var message = new $root.groupproto.SenderMessageKey();
918
+ if (object.iteration != null)
919
+ message.iteration = object.iteration >>> 0;
920
+ if (object.seed != null)
921
+ if (typeof object.seed === "string")
922
+ $util.base64.decode(object.seed, message.seed = $util.newBuffer($util.base64.length(object.seed)), 0);
923
+ else if (object.seed.length)
924
+ message.seed = object.seed;
925
+ return message;
926
+ };
927
+
928
+ /**
929
+ * Creates a plain object from a SenderMessageKey message. Also converts values to other types if specified.
930
+ * @function toObject
931
+ * @memberof groupproto.SenderMessageKey
932
+ * @static
933
+ * @param {groupproto.SenderMessageKey} message SenderMessageKey
934
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
935
+ * @returns {Object.<string,*>} Plain object
936
+ */
937
+ SenderMessageKey.toObject = function toObject(message, options) {
938
+ if (!options)
939
+ options = {};
940
+ var object = {};
941
+ if (options.defaults) {
942
+ object.iteration = 0;
943
+ if (options.bytes === String)
944
+ object.seed = "";
945
+ else {
946
+ object.seed = [];
947
+ if (options.bytes !== Array)
948
+ object.seed = $util.newBuffer(object.seed);
949
+ }
950
+ }
951
+ if (message.iteration != null && message.hasOwnProperty("iteration"))
952
+ object.iteration = message.iteration;
953
+ if (message.seed != null && message.hasOwnProperty("seed"))
954
+ object.seed = options.bytes === String ? $util.base64.encode(message.seed, 0, message.seed.length) : options.bytes === Array ? Array.prototype.slice.call(message.seed) : message.seed;
955
+ return object;
956
+ };
957
+
958
+ /**
959
+ * Converts this SenderMessageKey to JSON.
960
+ * @function toJSON
961
+ * @memberof groupproto.SenderMessageKey
962
+ * @instance
963
+ * @returns {Object.<string,*>} JSON object
964
+ */
965
+ SenderMessageKey.prototype.toJSON = function toJSON() {
966
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
967
+ };
968
+
969
+ return SenderMessageKey;
970
+ })();
971
+
972
+ groupproto.SenderSigningKey = (function() {
973
+
974
+ /**
975
+ * Properties of a SenderSigningKey.
976
+ * @memberof groupproto
977
+ * @interface ISenderSigningKey
978
+ * @property {Uint8Array|null} ["public"] SenderSigningKey public
979
+ * @property {Uint8Array|null} ["private"] SenderSigningKey private
980
+ */
981
+
982
+ /**
983
+ * Constructs a new SenderSigningKey.
984
+ * @memberof groupproto
985
+ * @classdesc Represents a SenderSigningKey.
986
+ * @implements ISenderSigningKey
987
+ * @constructor
988
+ * @param {groupproto.ISenderSigningKey=} [properties] Properties to set
989
+ */
990
+ function SenderSigningKey(properties) {
991
+ if (properties)
992
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
993
+ if (properties[keys[i]] != null)
994
+ this[keys[i]] = properties[keys[i]];
995
+ }
996
+
997
+ /**
998
+ * SenderSigningKey public.
999
+ * @member {Uint8Array} public
1000
+ * @memberof groupproto.SenderSigningKey
1001
+ * @instance
1002
+ */
1003
+ SenderSigningKey.prototype["public"] = $util.newBuffer([]);
1004
+
1005
+ /**
1006
+ * SenderSigningKey private.
1007
+ * @member {Uint8Array} private
1008
+ * @memberof groupproto.SenderSigningKey
1009
+ * @instance
1010
+ */
1011
+ SenderSigningKey.prototype["private"] = $util.newBuffer([]);
1012
+
1013
+ /**
1014
+ * Creates a new SenderSigningKey instance using the specified properties.
1015
+ * @function create
1016
+ * @memberof groupproto.SenderSigningKey
1017
+ * @static
1018
+ * @param {groupproto.ISenderSigningKey=} [properties] Properties to set
1019
+ * @returns {groupproto.SenderSigningKey} SenderSigningKey instance
1020
+ */
1021
+ SenderSigningKey.create = function create(properties) {
1022
+ return new SenderSigningKey(properties);
1023
+ };
1024
+
1025
+ /**
1026
+ * Encodes the specified SenderSigningKey message. Does not implicitly {@link groupproto.SenderSigningKey.verify|verify} messages.
1027
+ * @function encode
1028
+ * @memberof groupproto.SenderSigningKey
1029
+ * @static
1030
+ * @param {groupproto.ISenderSigningKey} message SenderSigningKey message or plain object to encode
1031
+ * @param {$protobuf.Writer} [writer] Writer to encode to
1032
+ * @returns {$protobuf.Writer} Writer
1033
+ */
1034
+ SenderSigningKey.encode = function encode(message, writer) {
1035
+ if (!writer)
1036
+ writer = $Writer.create();
1037
+ if (message["public"] != null && Object.hasOwnProperty.call(message, "public"))
1038
+ writer.uint32(/* id 1, wireType 2 =*/10).bytes(message["public"]);
1039
+ if (message["private"] != null && Object.hasOwnProperty.call(message, "private"))
1040
+ writer.uint32(/* id 2, wireType 2 =*/18).bytes(message["private"]);
1041
+ return writer;
1042
+ };
1043
+
1044
+ /**
1045
+ * Encodes the specified SenderSigningKey message, length delimited. Does not implicitly {@link groupproto.SenderSigningKey.verify|verify} messages.
1046
+ * @function encodeDelimited
1047
+ * @memberof groupproto.SenderSigningKey
1048
+ * @static
1049
+ * @param {groupproto.ISenderSigningKey} message SenderSigningKey message or plain object to encode
1050
+ * @param {$protobuf.Writer} [writer] Writer to encode to
1051
+ * @returns {$protobuf.Writer} Writer
1052
+ */
1053
+ SenderSigningKey.encodeDelimited = function encodeDelimited(message, writer) {
1054
+ return this.encode(message, writer).ldelim();
1055
+ };
1056
+
1057
+ /**
1058
+ * Decodes a SenderSigningKey message from the specified reader or buffer.
1059
+ * @function decode
1060
+ * @memberof groupproto.SenderSigningKey
1061
+ * @static
1062
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
1063
+ * @param {number} [length] Message length if known beforehand
1064
+ * @returns {groupproto.SenderSigningKey} SenderSigningKey
1065
+ * @throws {Error} If the payload is not a reader or valid buffer
1066
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
1067
+ */
1068
+ SenderSigningKey.decode = function decode(reader, length) {
1069
+ if (!(reader instanceof $Reader))
1070
+ reader = $Reader.create(reader);
1071
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderSigningKey();
1072
+ while (reader.pos < end) {
1073
+ var tag = reader.uint32();
1074
+ switch (tag >>> 3) {
1075
+ case 1:
1076
+ message["public"] = reader.bytes();
1077
+ break;
1078
+ case 2:
1079
+ message["private"] = reader.bytes();
1080
+ break;
1081
+ default:
1082
+ reader.skipType(tag & 7);
1083
+ break;
1084
+ }
1085
+ }
1086
+ return message;
1087
+ };
1088
+
1089
+ /**
1090
+ * Decodes a SenderSigningKey message from the specified reader or buffer, length delimited.
1091
+ * @function decodeDelimited
1092
+ * @memberof groupproto.SenderSigningKey
1093
+ * @static
1094
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
1095
+ * @returns {groupproto.SenderSigningKey} SenderSigningKey
1096
+ * @throws {Error} If the payload is not a reader or valid buffer
1097
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
1098
+ */
1099
+ SenderSigningKey.decodeDelimited = function decodeDelimited(reader) {
1100
+ if (!(reader instanceof $Reader))
1101
+ reader = new $Reader(reader);
1102
+ return this.decode(reader, reader.uint32());
1103
+ };
1104
+
1105
+ /**
1106
+ * Verifies a SenderSigningKey message.
1107
+ * @function verify
1108
+ * @memberof groupproto.SenderSigningKey
1109
+ * @static
1110
+ * @param {Object.<string,*>} message Plain object to verify
1111
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
1112
+ */
1113
+ SenderSigningKey.verify = function verify(message) {
1114
+ if (typeof message !== "object" || message === null)
1115
+ return "object expected";
1116
+ if (message["public"] != null && message.hasOwnProperty("public"))
1117
+ if (!(message["public"] && typeof message["public"].length === "number" || $util.isString(message["public"])))
1118
+ return "public: buffer expected";
1119
+ if (message["private"] != null && message.hasOwnProperty("private"))
1120
+ if (!(message["private"] && typeof message["private"].length === "number" || $util.isString(message["private"])))
1121
+ return "private: buffer expected";
1122
+ return null;
1123
+ };
1124
+
1125
+ /**
1126
+ * Creates a SenderSigningKey message from a plain object. Also converts values to their respective internal types.
1127
+ * @function fromObject
1128
+ * @memberof groupproto.SenderSigningKey
1129
+ * @static
1130
+ * @param {Object.<string,*>} object Plain object
1131
+ * @returns {groupproto.SenderSigningKey} SenderSigningKey
1132
+ */
1133
+ SenderSigningKey.fromObject = function fromObject(object) {
1134
+ if (object instanceof $root.groupproto.SenderSigningKey)
1135
+ return object;
1136
+ var message = new $root.groupproto.SenderSigningKey();
1137
+ if (object["public"] != null)
1138
+ if (typeof object["public"] === "string")
1139
+ $util.base64.decode(object["public"], message["public"] = $util.newBuffer($util.base64.length(object["public"])), 0);
1140
+ else if (object["public"].length)
1141
+ message["public"] = object["public"];
1142
+ if (object["private"] != null)
1143
+ if (typeof object["private"] === "string")
1144
+ $util.base64.decode(object["private"], message["private"] = $util.newBuffer($util.base64.length(object["private"])), 0);
1145
+ else if (object["private"].length)
1146
+ message["private"] = object["private"];
1147
+ return message;
1148
+ };
1149
+
1150
+ /**
1151
+ * Creates a plain object from a SenderSigningKey message. Also converts values to other types if specified.
1152
+ * @function toObject
1153
+ * @memberof groupproto.SenderSigningKey
1154
+ * @static
1155
+ * @param {groupproto.SenderSigningKey} message SenderSigningKey
1156
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
1157
+ * @returns {Object.<string,*>} Plain object
1158
+ */
1159
+ SenderSigningKey.toObject = function toObject(message, options) {
1160
+ if (!options)
1161
+ options = {};
1162
+ var object = {};
1163
+ if (options.defaults) {
1164
+ if (options.bytes === String)
1165
+ object["public"] = "";
1166
+ else {
1167
+ object["public"] = [];
1168
+ if (options.bytes !== Array)
1169
+ object["public"] = $util.newBuffer(object["public"]);
1170
+ }
1171
+ if (options.bytes === String)
1172
+ object["private"] = "";
1173
+ else {
1174
+ object["private"] = [];
1175
+ if (options.bytes !== Array)
1176
+ object["private"] = $util.newBuffer(object["private"]);
1177
+ }
1178
+ }
1179
+ if (message["public"] != null && message.hasOwnProperty("public"))
1180
+ object["public"] = options.bytes === String ? $util.base64.encode(message["public"], 0, message["public"].length) : options.bytes === Array ? Array.prototype.slice.call(message["public"]) : message["public"];
1181
+ if (message["private"] != null && message.hasOwnProperty("private"))
1182
+ object["private"] = options.bytes === String ? $util.base64.encode(message["private"], 0, message["private"].length) : options.bytes === Array ? Array.prototype.slice.call(message["private"]) : message["private"];
1183
+ return object;
1184
+ };
1185
+
1186
+ /**
1187
+ * Converts this SenderSigningKey to JSON.
1188
+ * @function toJSON
1189
+ * @memberof groupproto.SenderSigningKey
1190
+ * @instance
1191
+ * @returns {Object.<string,*>} JSON object
1192
+ */
1193
+ SenderSigningKey.prototype.toJSON = function toJSON() {
1194
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
1195
+ };
1196
+
1197
+ return SenderSigningKey;
1198
+ })();
1199
+
1200
+ groupproto.SenderKeyStateStructure = (function() {
1201
+
1202
+ /**
1203
+ * Properties of a SenderKeyStateStructure.
1204
+ * @memberof groupproto
1205
+ * @interface ISenderKeyStateStructure
1206
+ * @property {number|null} [senderKeyId] SenderKeyStateStructure senderKeyId
1207
+ * @property {groupproto.ISenderChainKey|null} [senderChainKey] SenderKeyStateStructure senderChainKey
1208
+ * @property {groupproto.ISenderSigningKey|null} [senderSigningKey] SenderKeyStateStructure senderSigningKey
1209
+ * @property {Array.<groupproto.ISenderMessageKey>|null} [senderMessageKeys] SenderKeyStateStructure senderMessageKeys
1210
+ */
1211
+
1212
+ /**
1213
+ * Constructs a new SenderKeyStateStructure.
1214
+ * @memberof groupproto
1215
+ * @classdesc Represents a SenderKeyStateStructure.
1216
+ * @implements ISenderKeyStateStructure
1217
+ * @constructor
1218
+ * @param {groupproto.ISenderKeyStateStructure=} [properties] Properties to set
1219
+ */
1220
+ function SenderKeyStateStructure(properties) {
1221
+ this.senderMessageKeys = [];
1222
+ if (properties)
1223
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
1224
+ if (properties[keys[i]] != null)
1225
+ this[keys[i]] = properties[keys[i]];
1226
+ }
1227
+
1228
+ /**
1229
+ * SenderKeyStateStructure senderKeyId.
1230
+ * @member {number} senderKeyId
1231
+ * @memberof groupproto.SenderKeyStateStructure
1232
+ * @instance
1233
+ */
1234
+ SenderKeyStateStructure.prototype.senderKeyId = 0;
1235
+
1236
+ /**
1237
+ * SenderKeyStateStructure senderChainKey.
1238
+ * @member {groupproto.ISenderChainKey|null|undefined} senderChainKey
1239
+ * @memberof groupproto.SenderKeyStateStructure
1240
+ * @instance
1241
+ */
1242
+ SenderKeyStateStructure.prototype.senderChainKey = null;
1243
+
1244
+ /**
1245
+ * SenderKeyStateStructure senderSigningKey.
1246
+ * @member {groupproto.ISenderSigningKey|null|undefined} senderSigningKey
1247
+ * @memberof groupproto.SenderKeyStateStructure
1248
+ * @instance
1249
+ */
1250
+ SenderKeyStateStructure.prototype.senderSigningKey = null;
1251
+
1252
+ /**
1253
+ * SenderKeyStateStructure senderMessageKeys.
1254
+ * @member {Array.<groupproto.ISenderMessageKey>} senderMessageKeys
1255
+ * @memberof groupproto.SenderKeyStateStructure
1256
+ * @instance
1257
+ */
1258
+ SenderKeyStateStructure.prototype.senderMessageKeys = $util.emptyArray;
1259
+
1260
+ /**
1261
+ * Creates a new SenderKeyStateStructure instance using the specified properties.
1262
+ * @function create
1263
+ * @memberof groupproto.SenderKeyStateStructure
1264
+ * @static
1265
+ * @param {groupproto.ISenderKeyStateStructure=} [properties] Properties to set
1266
+ * @returns {groupproto.SenderKeyStateStructure} SenderKeyStateStructure instance
1267
+ */
1268
+ SenderKeyStateStructure.create = function create(properties) {
1269
+ return new SenderKeyStateStructure(properties);
1270
+ };
1271
+
1272
+ /**
1273
+ * Encodes the specified SenderKeyStateStructure message. Does not implicitly {@link groupproto.SenderKeyStateStructure.verify|verify} messages.
1274
+ * @function encode
1275
+ * @memberof groupproto.SenderKeyStateStructure
1276
+ * @static
1277
+ * @param {groupproto.ISenderKeyStateStructure} message SenderKeyStateStructure message or plain object to encode
1278
+ * @param {$protobuf.Writer} [writer] Writer to encode to
1279
+ * @returns {$protobuf.Writer} Writer
1280
+ */
1281
+ SenderKeyStateStructure.encode = function encode(message, writer) {
1282
+ if (!writer)
1283
+ writer = $Writer.create();
1284
+ if (message.senderKeyId != null && Object.hasOwnProperty.call(message, "senderKeyId"))
1285
+ writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.senderKeyId);
1286
+ if (message.senderChainKey != null && Object.hasOwnProperty.call(message, "senderChainKey"))
1287
+ $root.groupproto.SenderChainKey.encode(message.senderChainKey, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();
1288
+ if (message.senderSigningKey != null && Object.hasOwnProperty.call(message, "senderSigningKey"))
1289
+ $root.groupproto.SenderSigningKey.encode(message.senderSigningKey, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();
1290
+ if (message.senderMessageKeys != null && message.senderMessageKeys.length)
1291
+ for (var i = 0; i < message.senderMessageKeys.length; ++i)
1292
+ $root.groupproto.SenderMessageKey.encode(message.senderMessageKeys[i], writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();
1293
+ return writer;
1294
+ };
1295
+
1296
+ /**
1297
+ * Encodes the specified SenderKeyStateStructure message, length delimited. Does not implicitly {@link groupproto.SenderKeyStateStructure.verify|verify} messages.
1298
+ * @function encodeDelimited
1299
+ * @memberof groupproto.SenderKeyStateStructure
1300
+ * @static
1301
+ * @param {groupproto.ISenderKeyStateStructure} message SenderKeyStateStructure message or plain object to encode
1302
+ * @param {$protobuf.Writer} [writer] Writer to encode to
1303
+ * @returns {$protobuf.Writer} Writer
1304
+ */
1305
+ SenderKeyStateStructure.encodeDelimited = function encodeDelimited(message, writer) {
1306
+ return this.encode(message, writer).ldelim();
1307
+ };
1308
+
1309
+ /**
1310
+ * Decodes a SenderKeyStateStructure message from the specified reader or buffer.
1311
+ * @function decode
1312
+ * @memberof groupproto.SenderKeyStateStructure
1313
+ * @static
1314
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
1315
+ * @param {number} [length] Message length if known beforehand
1316
+ * @returns {groupproto.SenderKeyStateStructure} SenderKeyStateStructure
1317
+ * @throws {Error} If the payload is not a reader or valid buffer
1318
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
1319
+ */
1320
+ SenderKeyStateStructure.decode = function decode(reader, length) {
1321
+ if (!(reader instanceof $Reader))
1322
+ reader = $Reader.create(reader);
1323
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderKeyStateStructure();
1324
+ while (reader.pos < end) {
1325
+ var tag = reader.uint32();
1326
+ switch (tag >>> 3) {
1327
+ case 1:
1328
+ message.senderKeyId = reader.uint32();
1329
+ break;
1330
+ case 2:
1331
+ message.senderChainKey = $root.groupproto.SenderChainKey.decode(reader, reader.uint32());
1332
+ break;
1333
+ case 3:
1334
+ message.senderSigningKey = $root.groupproto.SenderSigningKey.decode(reader, reader.uint32());
1335
+ break;
1336
+ case 4:
1337
+ if (!(message.senderMessageKeys && message.senderMessageKeys.length))
1338
+ message.senderMessageKeys = [];
1339
+ message.senderMessageKeys.push($root.groupproto.SenderMessageKey.decode(reader, reader.uint32()));
1340
+ break;
1341
+ default:
1342
+ reader.skipType(tag & 7);
1343
+ break;
1344
+ }
1345
+ }
1346
+ return message;
1347
+ };
1348
+
1349
+ /**
1350
+ * Decodes a SenderKeyStateStructure message from the specified reader or buffer, length delimited.
1351
+ * @function decodeDelimited
1352
+ * @memberof groupproto.SenderKeyStateStructure
1353
+ * @static
1354
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
1355
+ * @returns {groupproto.SenderKeyStateStructure} SenderKeyStateStructure
1356
+ * @throws {Error} If the payload is not a reader or valid buffer
1357
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
1358
+ */
1359
+ SenderKeyStateStructure.decodeDelimited = function decodeDelimited(reader) {
1360
+ if (!(reader instanceof $Reader))
1361
+ reader = new $Reader(reader);
1362
+ return this.decode(reader, reader.uint32());
1363
+ };
1364
+
1365
+ /**
1366
+ * Verifies a SenderKeyStateStructure message.
1367
+ * @function verify
1368
+ * @memberof groupproto.SenderKeyStateStructure
1369
+ * @static
1370
+ * @param {Object.<string,*>} message Plain object to verify
1371
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
1372
+ */
1373
+ SenderKeyStateStructure.verify = function verify(message) {
1374
+ if (typeof message !== "object" || message === null)
1375
+ return "object expected";
1376
+ if (message.senderKeyId != null && message.hasOwnProperty("senderKeyId"))
1377
+ if (!$util.isInteger(message.senderKeyId))
1378
+ return "senderKeyId: integer expected";
1379
+ if (message.senderChainKey != null && message.hasOwnProperty("senderChainKey")) {
1380
+ var error = $root.groupproto.SenderChainKey.verify(message.senderChainKey);
1381
+ if (error)
1382
+ return "senderChainKey." + error;
1383
+ }
1384
+ if (message.senderSigningKey != null && message.hasOwnProperty("senderSigningKey")) {
1385
+ var error = $root.groupproto.SenderSigningKey.verify(message.senderSigningKey);
1386
+ if (error)
1387
+ return "senderSigningKey." + error;
1388
+ }
1389
+ if (message.senderMessageKeys != null && message.hasOwnProperty("senderMessageKeys")) {
1390
+ if (!Array.isArray(message.senderMessageKeys))
1391
+ return "senderMessageKeys: array expected";
1392
+ for (var i = 0; i < message.senderMessageKeys.length; ++i) {
1393
+ var error = $root.groupproto.SenderMessageKey.verify(message.senderMessageKeys[i]);
1394
+ if (error)
1395
+ return "senderMessageKeys." + error;
1396
+ }
1397
+ }
1398
+ return null;
1399
+ };
1400
+
1401
+ /**
1402
+ * Creates a SenderKeyStateStructure message from a plain object. Also converts values to their respective internal types.
1403
+ * @function fromObject
1404
+ * @memberof groupproto.SenderKeyStateStructure
1405
+ * @static
1406
+ * @param {Object.<string,*>} object Plain object
1407
+ * @returns {groupproto.SenderKeyStateStructure} SenderKeyStateStructure
1408
+ */
1409
+ SenderKeyStateStructure.fromObject = function fromObject(object) {
1410
+ if (object instanceof $root.groupproto.SenderKeyStateStructure)
1411
+ return object;
1412
+ var message = new $root.groupproto.SenderKeyStateStructure();
1413
+ if (object.senderKeyId != null)
1414
+ message.senderKeyId = object.senderKeyId >>> 0;
1415
+ if (object.senderChainKey != null) {
1416
+ if (typeof object.senderChainKey !== "object")
1417
+ throw TypeError(".groupproto.SenderKeyStateStructure.senderChainKey: object expected");
1418
+ message.senderChainKey = $root.groupproto.SenderChainKey.fromObject(object.senderChainKey);
1419
+ }
1420
+ if (object.senderSigningKey != null) {
1421
+ if (typeof object.senderSigningKey !== "object")
1422
+ throw TypeError(".groupproto.SenderKeyStateStructure.senderSigningKey: object expected");
1423
+ message.senderSigningKey = $root.groupproto.SenderSigningKey.fromObject(object.senderSigningKey);
1424
+ }
1425
+ if (object.senderMessageKeys) {
1426
+ if (!Array.isArray(object.senderMessageKeys))
1427
+ throw TypeError(".groupproto.SenderKeyStateStructure.senderMessageKeys: array expected");
1428
+ message.senderMessageKeys = [];
1429
+ for (var i = 0; i < object.senderMessageKeys.length; ++i) {
1430
+ if (typeof object.senderMessageKeys[i] !== "object")
1431
+ throw TypeError(".groupproto.SenderKeyStateStructure.senderMessageKeys: object expected");
1432
+ message.senderMessageKeys[i] = $root.groupproto.SenderMessageKey.fromObject(object.senderMessageKeys[i]);
1433
+ }
1434
+ }
1435
+ return message;
1436
+ };
1437
+
1438
+ /**
1439
+ * Creates a plain object from a SenderKeyStateStructure message. Also converts values to other types if specified.
1440
+ * @function toObject
1441
+ * @memberof groupproto.SenderKeyStateStructure
1442
+ * @static
1443
+ * @param {groupproto.SenderKeyStateStructure} message SenderKeyStateStructure
1444
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
1445
+ * @returns {Object.<string,*>} Plain object
1446
+ */
1447
+ SenderKeyStateStructure.toObject = function toObject(message, options) {
1448
+ if (!options)
1449
+ options = {};
1450
+ var object = {};
1451
+ if (options.arrays || options.defaults)
1452
+ object.senderMessageKeys = [];
1453
+ if (options.defaults) {
1454
+ object.senderKeyId = 0;
1455
+ object.senderChainKey = null;
1456
+ object.senderSigningKey = null;
1457
+ }
1458
+ if (message.senderKeyId != null && message.hasOwnProperty("senderKeyId"))
1459
+ object.senderKeyId = message.senderKeyId;
1460
+ if (message.senderChainKey != null && message.hasOwnProperty("senderChainKey"))
1461
+ object.senderChainKey = $root.groupproto.SenderChainKey.toObject(message.senderChainKey, options);
1462
+ if (message.senderSigningKey != null && message.hasOwnProperty("senderSigningKey"))
1463
+ object.senderSigningKey = $root.groupproto.SenderSigningKey.toObject(message.senderSigningKey, options);
1464
+ if (message.senderMessageKeys && message.senderMessageKeys.length) {
1465
+ object.senderMessageKeys = [];
1466
+ for (var j = 0; j < message.senderMessageKeys.length; ++j)
1467
+ object.senderMessageKeys[j] = $root.groupproto.SenderMessageKey.toObject(message.senderMessageKeys[j], options);
1468
+ }
1469
+ return object;
1470
+ };
1471
+
1472
+ /**
1473
+ * Converts this SenderKeyStateStructure to JSON.
1474
+ * @function toJSON
1475
+ * @memberof groupproto.SenderKeyStateStructure
1476
+ * @instance
1477
+ * @returns {Object.<string,*>} JSON object
1478
+ */
1479
+ SenderKeyStateStructure.prototype.toJSON = function toJSON() {
1480
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
1481
+ };
1482
+
1483
+ return SenderKeyStateStructure;
1484
+ })();
1485
+
1486
+ groupproto.SenderKeyRecordStructure = (function() {
1487
+
1488
+ /**
1489
+ * Properties of a SenderKeyRecordStructure.
1490
+ * @memberof groupproto
1491
+ * @interface ISenderKeyRecordStructure
1492
+ * @property {Array.<groupproto.ISenderKeyStateStructure>|null} [senderKeyStates] SenderKeyRecordStructure senderKeyStates
1493
+ */
1494
+
1495
+ /**
1496
+ * Constructs a new SenderKeyRecordStructure.
1497
+ * @memberof groupproto
1498
+ * @classdesc Represents a SenderKeyRecordStructure.
1499
+ * @implements ISenderKeyRecordStructure
1500
+ * @constructor
1501
+ * @param {groupproto.ISenderKeyRecordStructure=} [properties] Properties to set
1502
+ */
1503
+ function SenderKeyRecordStructure(properties) {
1504
+ this.senderKeyStates = [];
1505
+ if (properties)
1506
+ for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)
1507
+ if (properties[keys[i]] != null)
1508
+ this[keys[i]] = properties[keys[i]];
1509
+ }
1510
+
1511
+ /**
1512
+ * SenderKeyRecordStructure senderKeyStates.
1513
+ * @member {Array.<groupproto.ISenderKeyStateStructure>} senderKeyStates
1514
+ * @memberof groupproto.SenderKeyRecordStructure
1515
+ * @instance
1516
+ */
1517
+ SenderKeyRecordStructure.prototype.senderKeyStates = $util.emptyArray;
1518
+
1519
+ /**
1520
+ * Creates a new SenderKeyRecordStructure instance using the specified properties.
1521
+ * @function create
1522
+ * @memberof groupproto.SenderKeyRecordStructure
1523
+ * @static
1524
+ * @param {groupproto.ISenderKeyRecordStructure=} [properties] Properties to set
1525
+ * @returns {groupproto.SenderKeyRecordStructure} SenderKeyRecordStructure instance
1526
+ */
1527
+ SenderKeyRecordStructure.create = function create(properties) {
1528
+ return new SenderKeyRecordStructure(properties);
1529
+ };
1530
+
1531
+ /**
1532
+ * Encodes the specified SenderKeyRecordStructure message. Does not implicitly {@link groupproto.SenderKeyRecordStructure.verify|verify} messages.
1533
+ * @function encode
1534
+ * @memberof groupproto.SenderKeyRecordStructure
1535
+ * @static
1536
+ * @param {groupproto.ISenderKeyRecordStructure} message SenderKeyRecordStructure message or plain object to encode
1537
+ * @param {$protobuf.Writer} [writer] Writer to encode to
1538
+ * @returns {$protobuf.Writer} Writer
1539
+ */
1540
+ SenderKeyRecordStructure.encode = function encode(message, writer) {
1541
+ if (!writer)
1542
+ writer = $Writer.create();
1543
+ if (message.senderKeyStates != null && message.senderKeyStates.length)
1544
+ for (var i = 0; i < message.senderKeyStates.length; ++i)
1545
+ $root.groupproto.SenderKeyStateStructure.encode(message.senderKeyStates[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();
1546
+ return writer;
1547
+ };
1548
+
1549
+ /**
1550
+ * Encodes the specified SenderKeyRecordStructure message, length delimited. Does not implicitly {@link groupproto.SenderKeyRecordStructure.verify|verify} messages.
1551
+ * @function encodeDelimited
1552
+ * @memberof groupproto.SenderKeyRecordStructure
1553
+ * @static
1554
+ * @param {groupproto.ISenderKeyRecordStructure} message SenderKeyRecordStructure message or plain object to encode
1555
+ * @param {$protobuf.Writer} [writer] Writer to encode to
1556
+ * @returns {$protobuf.Writer} Writer
1557
+ */
1558
+ SenderKeyRecordStructure.encodeDelimited = function encodeDelimited(message, writer) {
1559
+ return this.encode(message, writer).ldelim();
1560
+ };
1561
+
1562
+ /**
1563
+ * Decodes a SenderKeyRecordStructure message from the specified reader or buffer.
1564
+ * @function decode
1565
+ * @memberof groupproto.SenderKeyRecordStructure
1566
+ * @static
1567
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
1568
+ * @param {number} [length] Message length if known beforehand
1569
+ * @returns {groupproto.SenderKeyRecordStructure} SenderKeyRecordStructure
1570
+ * @throws {Error} If the payload is not a reader or valid buffer
1571
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
1572
+ */
1573
+ SenderKeyRecordStructure.decode = function decode(reader, length) {
1574
+ if (!(reader instanceof $Reader))
1575
+ reader = $Reader.create(reader);
1576
+ var end = length === undefined ? reader.len : reader.pos + length, message = new $root.groupproto.SenderKeyRecordStructure();
1577
+ while (reader.pos < end) {
1578
+ var tag = reader.uint32();
1579
+ switch (tag >>> 3) {
1580
+ case 1:
1581
+ if (!(message.senderKeyStates && message.senderKeyStates.length))
1582
+ message.senderKeyStates = [];
1583
+ message.senderKeyStates.push($root.groupproto.SenderKeyStateStructure.decode(reader, reader.uint32()));
1584
+ break;
1585
+ default:
1586
+ reader.skipType(tag & 7);
1587
+ break;
1588
+ }
1589
+ }
1590
+ return message;
1591
+ };
1592
+
1593
+ /**
1594
+ * Decodes a SenderKeyRecordStructure message from the specified reader or buffer, length delimited.
1595
+ * @function decodeDelimited
1596
+ * @memberof groupproto.SenderKeyRecordStructure
1597
+ * @static
1598
+ * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from
1599
+ * @returns {groupproto.SenderKeyRecordStructure} SenderKeyRecordStructure
1600
+ * @throws {Error} If the payload is not a reader or valid buffer
1601
+ * @throws {$protobuf.util.ProtocolError} If required fields are missing
1602
+ */
1603
+ SenderKeyRecordStructure.decodeDelimited = function decodeDelimited(reader) {
1604
+ if (!(reader instanceof $Reader))
1605
+ reader = new $Reader(reader);
1606
+ return this.decode(reader, reader.uint32());
1607
+ };
1608
+
1609
+ /**
1610
+ * Verifies a SenderKeyRecordStructure message.
1611
+ * @function verify
1612
+ * @memberof groupproto.SenderKeyRecordStructure
1613
+ * @static
1614
+ * @param {Object.<string,*>} message Plain object to verify
1615
+ * @returns {string|null} `null` if valid, otherwise the reason why it is not
1616
+ */
1617
+ SenderKeyRecordStructure.verify = function verify(message) {
1618
+ if (typeof message !== "object" || message === null)
1619
+ return "object expected";
1620
+ if (message.senderKeyStates != null && message.hasOwnProperty("senderKeyStates")) {
1621
+ if (!Array.isArray(message.senderKeyStates))
1622
+ return "senderKeyStates: array expected";
1623
+ for (var i = 0; i < message.senderKeyStates.length; ++i) {
1624
+ var error = $root.groupproto.SenderKeyStateStructure.verify(message.senderKeyStates[i]);
1625
+ if (error)
1626
+ return "senderKeyStates." + error;
1627
+ }
1628
+ }
1629
+ return null;
1630
+ };
1631
+
1632
+ /**
1633
+ * Creates a SenderKeyRecordStructure message from a plain object. Also converts values to their respective internal types.
1634
+ * @function fromObject
1635
+ * @memberof groupproto.SenderKeyRecordStructure
1636
+ * @static
1637
+ * @param {Object.<string,*>} object Plain object
1638
+ * @returns {groupproto.SenderKeyRecordStructure} SenderKeyRecordStructure
1639
+ */
1640
+ SenderKeyRecordStructure.fromObject = function fromObject(object) {
1641
+ if (object instanceof $root.groupproto.SenderKeyRecordStructure)
1642
+ return object;
1643
+ var message = new $root.groupproto.SenderKeyRecordStructure();
1644
+ if (object.senderKeyStates) {
1645
+ if (!Array.isArray(object.senderKeyStates))
1646
+ throw TypeError(".groupproto.SenderKeyRecordStructure.senderKeyStates: array expected");
1647
+ message.senderKeyStates = [];
1648
+ for (var i = 0; i < object.senderKeyStates.length; ++i) {
1649
+ if (typeof object.senderKeyStates[i] !== "object")
1650
+ throw TypeError(".groupproto.SenderKeyRecordStructure.senderKeyStates: object expected");
1651
+ message.senderKeyStates[i] = $root.groupproto.SenderKeyStateStructure.fromObject(object.senderKeyStates[i]);
1652
+ }
1653
+ }
1654
+ return message;
1655
+ };
1656
+
1657
+ /**
1658
+ * Creates a plain object from a SenderKeyRecordStructure message. Also converts values to other types if specified.
1659
+ * @function toObject
1660
+ * @memberof groupproto.SenderKeyRecordStructure
1661
+ * @static
1662
+ * @param {groupproto.SenderKeyRecordStructure} message SenderKeyRecordStructure
1663
+ * @param {$protobuf.IConversionOptions} [options] Conversion options
1664
+ * @returns {Object.<string,*>} Plain object
1665
+ */
1666
+ SenderKeyRecordStructure.toObject = function toObject(message, options) {
1667
+ if (!options)
1668
+ options = {};
1669
+ var object = {};
1670
+ if (options.arrays || options.defaults)
1671
+ object.senderKeyStates = [];
1672
+ if (message.senderKeyStates && message.senderKeyStates.length) {
1673
+ object.senderKeyStates = [];
1674
+ for (var j = 0; j < message.senderKeyStates.length; ++j)
1675
+ object.senderKeyStates[j] = $root.groupproto.SenderKeyStateStructure.toObject(message.senderKeyStates[j], options);
1676
+ }
1677
+ return object;
1678
+ };
1679
+
1680
+ /**
1681
+ * Converts this SenderKeyRecordStructure to JSON.
1682
+ * @function toJSON
1683
+ * @memberof groupproto.SenderKeyRecordStructure
1684
+ * @instance
1685
+ * @returns {Object.<string,*>} JSON object
1686
+ */
1687
+ SenderKeyRecordStructure.prototype.toJSON = function toJSON() {
1688
+ return this.constructor.toObject(this, $protobuf.util.toJSONOptions);
1689
+ };
1690
+
1691
+ return SenderKeyRecordStructure;
1692
+ })();
1693
+
1694
+ return groupproto;
1695
+ })();
1696
+
1697
+ module.exports = $root;