@hbmodsofc/baileys 1.7.8 → 2.2.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 (155) hide show
  1. package/LICENSE +1 -1
  2. package/lib/Defaults/baileys-version.json +3 -0
  3. package/lib/Defaults/index.d.ts +8 -12
  4. package/lib/Defaults/index.js +124 -90
  5. package/lib/Defaults/phonenumber-mcc.json +223 -0
  6. package/lib/Signal/Group/group_cipher.d.ts +1 -0
  7. package/lib/Signal/Group/group_cipher.js +39 -28
  8. package/lib/Signal/Group/queue-job.d.ts +1 -0
  9. package/lib/Signal/Group/queue-job.js +57 -0
  10. package/lib/Signal/Group/sender-chain-key.d.ts +1 -1
  11. package/lib/Signal/Group/sender-chain-key.js +2 -9
  12. package/lib/Signal/Group/sender-key-distribution-message.js +3 -3
  13. package/lib/Signal/Group/sender-key-message.js +3 -3
  14. package/lib/Signal/Group/sender-key-state.d.ts +4 -4
  15. package/lib/Signal/Group/sender-key-state.js +16 -47
  16. package/lib/Signal/libsignal.d.ts +3 -7
  17. package/lib/Signal/libsignal.js +39 -224
  18. package/lib/Socket/Client/{types.d.ts → abstract-socket-client.d.ts} +3 -1
  19. package/lib/Socket/Client/index.d.ts +3 -2
  20. package/lib/Socket/Client/index.js +3 -2
  21. package/lib/Socket/Client/mobile-socket-client.d.ts +13 -0
  22. package/lib/Socket/Client/mobile-socket-client.js +65 -0
  23. package/lib/Socket/Client/{websocket.d.ts → web-socket-client.d.ts} +1 -1
  24. package/lib/Socket/Client/{websocket.js → web-socket-client.js} +16 -10
  25. package/lib/Socket/business.d.ts +78 -94
  26. package/lib/Socket/business.js +11 -130
  27. package/lib/Socket/chats.d.ts +233 -63
  28. package/lib/Socket/chats.js +184 -234
  29. package/lib/Socket/groups.d.ts +41 -62
  30. package/lib/Socket/groups.js +64 -76
  31. package/lib/Socket/hbmods.d.ts +253 -0
  32. package/lib/Socket/hbmods.js +1 -0
  33. package/lib/Socket/index.d.ts +83 -129
  34. package/lib/Socket/index.js +6 -13
  35. package/lib/Socket/messages-recv.d.ts +48 -59
  36. package/lib/Socket/messages-recv.js +371 -516
  37. package/lib/Socket/messages-send.d.ts +67 -86
  38. package/lib/Socket/messages-send.js +1 -1091
  39. package/lib/Socket/newsletter.d.ts +64 -76
  40. package/lib/Socket/newsletter.js +1 -184
  41. package/lib/Socket/registration.d.ts +267 -0
  42. package/lib/Socket/registration.js +166 -0
  43. package/lib/Socket/socket.d.ts +13 -19
  44. package/lib/Socket/socket.js +1 -805
  45. package/lib/Socket/usync.d.ts +36 -0
  46. package/lib/Socket/usync.js +70 -0
  47. package/lib/Types/Auth.d.ts +10 -4
  48. package/lib/Types/Call.d.ts +1 -1
  49. package/lib/Types/Chat.d.ts +9 -29
  50. package/lib/Types/Chat.js +1 -7
  51. package/lib/Types/Contact.d.ts +1 -5
  52. package/lib/Types/Events.d.ts +14 -55
  53. package/lib/Types/GroupMetadata.d.ts +5 -15
  54. package/lib/Types/Label.d.ts +0 -11
  55. package/lib/Types/Label.js +1 -1
  56. package/lib/Types/LabelAssociation.js +1 -1
  57. package/lib/Types/Message.d.ts +49 -75
  58. package/lib/Types/Message.js +7 -10
  59. package/lib/Types/Newsletter.d.ts +98 -129
  60. package/lib/Types/Newsletter.js +38 -33
  61. package/lib/Types/Product.d.ts +1 -1
  62. package/lib/Types/Signal.d.ts +1 -29
  63. package/lib/Types/Socket.d.ts +22 -48
  64. package/lib/Types/State.d.ts +2 -13
  65. package/lib/Types/State.js +0 -12
  66. package/lib/Types/USync.d.ts +1 -1
  67. package/lib/Types/index.d.ts +3 -10
  68. package/lib/Types/index.js +2 -2
  69. package/lib/Utils/auth-utils.d.ts +3 -3
  70. package/lib/Utils/auth-utils.js +102 -378
  71. package/lib/Utils/baileys-event-stream.js +1 -1
  72. package/lib/Utils/business.d.ts +2 -2
  73. package/lib/Utils/business.js +13 -19
  74. package/lib/Utils/chat-utils.d.ts +22 -21
  75. package/lib/Utils/chat-utils.js +154 -201
  76. package/lib/Utils/crypto.d.ts +19 -18
  77. package/lib/Utils/crypto.js +37 -78
  78. package/lib/Utils/decode-wa-message.d.ts +7 -34
  79. package/lib/Utils/decode-wa-message.js +66 -138
  80. package/lib/Utils/event-buffer.d.ts +8 -6
  81. package/lib/Utils/event-buffer.js +43 -81
  82. package/lib/Utils/generics.d.ts +27 -27
  83. package/lib/Utils/generics.js +133 -128
  84. package/lib/Utils/history.d.ts +5 -9
  85. package/lib/Utils/history.js +23 -17
  86. package/lib/Utils/index.d.ts +0 -2
  87. package/lib/Utils/index.js +0 -2
  88. package/lib/Utils/link-preview.d.ts +4 -4
  89. package/lib/Utils/link-preview.js +12 -40
  90. package/lib/Utils/logger.d.ts +3 -11
  91. package/lib/Utils/lt-hash.d.ts +8 -8
  92. package/lib/Utils/lt-hash.js +24 -23
  93. package/lib/Utils/make-mutex.d.ts +2 -2
  94. package/lib/Utils/make-mutex.js +2 -3
  95. package/lib/Utils/messages-media.d.ts +41 -37
  96. package/lib/Utils/messages-media.js +368 -252
  97. package/lib/Utils/messages.d.ts +15 -13
  98. package/lib/Utils/messages.js +261 -274
  99. package/lib/Utils/noise-handler.d.ts +15 -13
  100. package/lib/Utils/noise-handler.js +26 -20
  101. package/lib/Utils/process-message.d.ts +8 -9
  102. package/lib/Utils/process-message.js +93 -157
  103. package/lib/Utils/signal.d.ts +5 -6
  104. package/lib/Utils/signal.js +29 -37
  105. package/lib/Utils/use-multi-file-auth-state.d.ts +2 -1
  106. package/lib/Utils/use-multi-file-auth-state.js +7 -12
  107. package/lib/Utils/validate-connection.d.ts +6 -5
  108. package/lib/Utils/validate-connection.js +97 -39
  109. package/lib/WABinary/constants.d.ts +27 -24
  110. package/lib/WABinary/constants.js +13 -1276
  111. package/lib/WABinary/decode.d.ts +4 -3
  112. package/lib/WABinary/decode.js +14 -28
  113. package/lib/WABinary/encode.d.ts +2 -1
  114. package/lib/WABinary/encode.js +147 -134
  115. package/lib/WABinary/generic-utils.d.ts +7 -4
  116. package/lib/WABinary/generic-utils.js +125 -40
  117. package/lib/WABinary/jid-utils.d.ts +8 -13
  118. package/lib/WABinary/jid-utils.js +16 -27
  119. package/lib/WAM/BinaryInfo.d.ts +11 -2
  120. package/lib/WAM/constants.d.ts +2 -3
  121. package/lib/WAM/constants.js +2359 -2252
  122. package/lib/WAM/encode.d.ts +2 -1
  123. package/lib/WAM/encode.js +11 -8
  124. package/lib/WAUSync/Protocols/USyncContactProtocol.d.ts +2 -2
  125. package/lib/WAUSync/Protocols/USyncContactProtocol.js +4 -3
  126. package/lib/WAUSync/Protocols/USyncDeviceProtocol.d.ts +2 -2
  127. package/lib/WAUSync/Protocols/USyncDeviceProtocol.js +5 -5
  128. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.d.ts +2 -2
  129. package/lib/WAUSync/Protocols/USyncDisappearingModeProtocol.js +5 -5
  130. package/lib/WAUSync/Protocols/USyncStatusProtocol.d.ts +2 -2
  131. package/lib/WAUSync/Protocols/USyncStatusProtocol.js +6 -5
  132. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.d.ts +2 -2
  133. package/lib/WAUSync/Protocols/UsyncBotProfileProtocol.js +1 -1
  134. package/lib/WAUSync/Protocols/UsyncLIDProtocol.d.ts +3 -4
  135. package/lib/WAUSync/Protocols/UsyncLIDProtocol.js +3 -11
  136. package/lib/WAUSync/USyncQuery.d.ts +2 -2
  137. package/lib/WAUSync/USyncQuery.js +15 -19
  138. package/lib/WAUSync/USyncUser.d.ts +5 -5
  139. package/lib/WAUSync/index.d.ts +1 -1
  140. package/lib/WAUSync/index.js +1 -1
  141. package/package.json +102 -104
  142. package/WAProto/index.js +0 -37306
  143. package/lib/Signal/lid-mapping.d.ts +0 -26
  144. package/lib/Signal/lid-mapping.js +0 -146
  145. package/lib/Socket/communities.d.ts +0 -232
  146. package/lib/Socket/communities.js +0 -402
  147. package/lib/Socket/mex.d.ts +0 -2
  148. package/lib/Socket/mex.js +0 -45
  149. package/lib/Types/Bussines.d.ts +0 -24
  150. package/lib/Types/Bussines.js +0 -2
  151. package/lib/Utils/lidToJid-test.d.ts +0 -11
  152. package/lib/Utils/lidToJid-test.js +0 -27
  153. package/lib/Utils/message-retry-manager.d.ts +0 -81
  154. package/lib/Utils/message-retry-manager.js +0 -152
  155. /package/lib/Socket/Client/{types.js → abstract-socket-client.js} +0 -0
@@ -4,14 +4,8 @@ exports.getNextPreKeysNode = exports.getNextPreKeys = exports.extractDeviceJids
4
4
  const Defaults_1 = require("../Defaults");
5
5
  const WABinary_1 = require("../WABinary");
6
6
  const crypto_1 = require("./crypto");
7
+ const lodash_1 = require("lodash")
7
8
  const generics_1 = require("./generics");
8
- function chunk(array, size) {
9
- const chunks = [];
10
- for (let i = 0; i < array.length; i += size) {
11
- chunks.push(array.slice(i, i + size));
12
- }
13
- return chunks;
14
- }
15
9
  const createSignalIdentity = (wid, accountSignatureKey) => {
16
10
  return {
17
11
  identifier: { name: wid, deviceId: 0 },
@@ -40,7 +34,7 @@ const generateOrGetPreKeys = (creds, range) => {
40
34
  return {
41
35
  newPreKeys,
42
36
  lastPreKeyId,
43
- preKeysRange: [creds.firstUnuploadedPreKeyId, range]
37
+ preKeysRange: [creds.firstUnuploadedPreKeyId, range],
44
38
  };
45
39
  };
46
40
  exports.generateOrGetPreKeys = generateOrGetPreKeys;
@@ -64,64 +58,62 @@ const xmppPreKey = (pair, id) => ({
64
58
  });
65
59
  exports.xmppPreKey = xmppPreKey;
66
60
  const parseAndInjectE2ESessions = async (node, repository) => {
67
- const extractKey = (key) => key
68
- ? {
69
- keyId: (0, WABinary_1.getBinaryNodeChildUInt)(key, 'id', 3),
70
- publicKey: (0, crypto_1.generateSignalPubKey)((0, WABinary_1.getBinaryNodeChildBuffer)(key, 'value')),
71
- signature: (0, WABinary_1.getBinaryNodeChildBuffer)(key, 'signature')
72
- }
73
- : undefined;
74
- const nodes = (0, WABinary_1.getBinaryNodeChildren)((0, WABinary_1.getBinaryNodeChild)(node, 'list'), 'user');
61
+ const extractKey = (key) => (key ? ({
62
+ keyId: WABinary_1.getBinaryNodeChildUInt(key, 'id', 3),
63
+ publicKey: crypto_1.generateSignalPubKey(WABinary_1.getBinaryNodeChildBuffer(key, 'value')),
64
+ signature: WABinary_1.getBinaryNodeChildBuffer(key, 'signature')
65
+ }) : undefined)
66
+ const nodes = WABinary_1.getBinaryNodeChildren(WABinary_1.getBinaryNodeChild(node, 'list'), 'user')
75
67
  for (const node of nodes) {
76
- (0, WABinary_1.assertNodeErrorFree)(node);
68
+ WABinary_1.assertNodeErrorFree(node)
77
69
  }
78
70
  // Most of the work in repository.injectE2ESession is CPU intensive, not IO
79
71
  // So Promise.all doesn't really help here,
80
72
  // but blocks even loop if we're using it inside keys.transaction, and it makes it "sync" actually
81
73
  // This way we chunk it in smaller parts and between those parts we can yield to the event loop
82
74
  // It's rare case when you need to E2E sessions for so many users, but it's possible
83
- const chunkSize = 100;
84
- const chunks = chunk(nodes, chunkSize);
75
+ const chunkSize = 100
76
+ const chunks = lodash_1.chunk(nodes, chunkSize)
85
77
  for (const nodesChunk of chunks) {
86
78
  await Promise.all(nodesChunk.map(async (node) => {
87
- const signedKey = (0, WABinary_1.getBinaryNodeChild)(node, 'skey');
88
- const key = (0, WABinary_1.getBinaryNodeChild)(node, 'key');
89
- const identity = (0, WABinary_1.getBinaryNodeChildBuffer)(node, 'identity');
90
- const jid = node.attrs.jid;
91
- const registrationId = (0, WABinary_1.getBinaryNodeChildUInt)(node, 'registration', 4);
79
+ const signedKey = WABinary_1.getBinaryNodeChild(node, 'skey')
80
+ const key = WABinary_1.getBinaryNodeChild(node, 'key')
81
+ const identity = WABinary_1.getBinaryNodeChildBuffer(node, 'identity')
82
+ const jid = node.attrs.jid
83
+ const registrationId = WABinary_1.getBinaryNodeChildUInt(node, 'registration', 4)
92
84
  await repository.injectE2ESession({
93
85
  jid,
94
86
  session: {
95
87
  registrationId: registrationId,
96
- identityKey: (0, crypto_1.generateSignalPubKey)(identity),
88
+ identityKey: crypto_1.generateSignalPubKey(identity),
97
89
  signedPreKey: extractKey(signedKey),
98
90
  preKey: extractKey(key)
99
91
  }
100
- });
101
- }));
92
+ })
93
+ }))
102
94
  }
103
- };
95
+ }
104
96
  exports.parseAndInjectE2ESessions = parseAndInjectE2ESessions;
105
97
  const extractDeviceJids = (result, myJid, excludeZeroDevices) => {
106
- const { user: myUser, device: myDevice } = (0, WABinary_1.jidDecode)(myJid);
107
- const extracted = [];
98
+ const { user: myUser, device: myDevice } = WABinary_1.jidDecode(myJid)
99
+ const extracted = []
108
100
  for (const userResult of result) {
109
- const { devices, id } = userResult;
110
- const { user } = (0, WABinary_1.jidDecode)(id);
111
- const deviceList = devices?.deviceList;
101
+ const { devices, id } = userResult
102
+ const { user } = WABinary_1.jidDecode(id)
103
+ const deviceList = devices?.deviceList
112
104
  if (Array.isArray(deviceList)) {
113
105
  for (const { id: device, keyIndex } of deviceList) {
114
106
  if ((!excludeZeroDevices || device !== 0) && // if zero devices are not-excluded, or device is non zero
115
107
  (myUser !== user || myDevice !== device) && // either different user or if me user, not this device
116
108
  (device === 0 || !!keyIndex) // ensure that "key-index" is specified for "non-zero" devices, produces a bad req otherwise
117
109
  ) {
118
- extracted.push({ user, device });
110
+ extracted.push({ user, device })
119
111
  }
120
112
  }
121
113
  }
122
114
  }
123
- return extracted;
124
- };
115
+ return extracted
116
+ }
125
117
  exports.extractDeviceJids = extractDeviceJids;
126
118
  /**
127
119
  * get the next N keys for upload or processing
@@ -146,7 +138,7 @@ const getNextPreKeysNode = async (state, count) => {
146
138
  attrs: {
147
139
  xmlns: 'encrypt',
148
140
  type: 'set',
149
- to: WABinary_1.S_WHATSAPP_NET
141
+ to: WABinary_1.S_WHATSAPP_NET,
150
142
  },
151
143
  content: [
152
144
  { tag: 'registration', attrs: {}, content: (0, generics_1.encodeBigEndian)(creds.registrationId) },
@@ -1,4 +1,4 @@
1
- import type { AuthenticationState } from '../Types';
1
+ import { AuthenticationState } from '../Types';
2
2
  /**
3
3
  * stores the full authentication state in a single folder.
4
4
  * Far more efficient than singlefileauthstate
@@ -10,3 +10,4 @@ export declare const useMultiFileAuthState: (folder: string) => Promise<{
10
10
  state: AuthenticationState;
11
11
  saveCreds: () => Promise<void>;
12
12
  }>;
13
+
@@ -4,15 +4,10 @@ exports.useMultiFileAuthState = void 0;
4
4
  const async_mutex_1 = require("async-mutex");
5
5
  const promises_1 = require("fs/promises");
6
6
  const path_1 = require("path");
7
- const index_js_1 = require("../../WAProto/index.js");
7
+ const WAProto_1 = require("../../WAProto");
8
8
  const auth_utils_1 = require("./auth-utils");
9
9
  const generics_1 = require("./generics");
10
- // We need to lock files due to the fact that we are using async functions to read and write files
11
- // https://github.com/WhiskeySockets/Baileys/issues/794
12
- // https://github.com/nodejs/node/issues/26338
13
- // Use a Map to store mutexes for each file path
14
10
  const fileLocks = new Map();
15
- // Get or create a mutex for a specific file path
16
11
  const getFileLock = (path) => {
17
12
  let mutex = fileLocks.get(path);
18
13
  if (!mutex) {
@@ -29,7 +24,6 @@ const getFileLock = (path) => {
29
24
  * Would recommend writing an auth state for use with a proper SQL or No-SQL DB
30
25
  * */
31
26
  const useMultiFileAuthState = async (folder) => {
32
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
33
27
  const writeData = async (data, file) => {
34
28
  const filePath = (0, path_1.join)(folder, fixFileName(file));
35
29
  const mutex = getFileLock(filePath);
@@ -68,14 +62,15 @@ const useMultiFileAuthState = async (folder) => {
68
62
  try {
69
63
  await (0, promises_1.unlink)(filePath);
70
64
  }
71
- catch {
65
+ catch (_a) {
72
66
  }
73
67
  finally {
74
68
  release();
75
69
  }
76
70
  });
77
71
  }
78
- catch { }
72
+ catch (_a) {
73
+ }
79
74
  };
80
75
  const folderInfo = await (0, promises_1.stat)(folder).catch(() => { });
81
76
  if (folderInfo) {
@@ -86,8 +81,8 @@ const useMultiFileAuthState = async (folder) => {
86
81
  else {
87
82
  await (0, promises_1.mkdir)(folder, { recursive: true });
88
83
  }
89
- const fixFileName = (file) => file?.replace(/\//g, '__')?.replace(/:/g, '-');
90
- const creds = (await readData('creds.json')) || (0, auth_utils_1.initAuthCreds)();
84
+ const fixFileName = (file) => { var _a; return (_a = file === null || file === void 0 ? void 0 : file.replace(/\//g, '__')) === null || _a === void 0 ? void 0 : _a.replace(/:/g, '-'); };
85
+ const creds = await readData('creds.json') || (0, auth_utils_1.initAuthCreds)();
91
86
  return {
92
87
  state: {
93
88
  creds,
@@ -97,7 +92,7 @@ const useMultiFileAuthState = async (folder) => {
97
92
  await Promise.all(ids.map(async (id) => {
98
93
  let value = await readData(`${type}-${id}.json`);
99
94
  if (type === 'app-state-sync-key' && value) {
100
- value = index_js_1.proto.Message.AppStateSyncKeyData.create(value);
95
+ value = WAProto_1.proto.Message.AppStateSyncKeyData.fromObject(value);
101
96
  }
102
97
  data[id] = value;
103
98
  }));
@@ -1,10 +1,11 @@
1
- import { proto } from '../../WAProto/index.js';
1
+ import { proto } from '../../WAProto';
2
2
  import type { AuthenticationCreds, SignalCreds, SocketConfig } from '../Types';
3
- import { type BinaryNode } from '../WABinary';
3
+ import { BinaryNode } from '../WABinary';
4
+ export declare const generateMobileNode: (config: SocketConfig) => proto.IClientPayload;
4
5
  export declare const generateLoginNode: (userJid: string, config: SocketConfig) => proto.IClientPayload;
5
6
  export declare const generateRegistrationNode: ({ registrationId, signedPreKey, signedIdentityKey }: SignalCreds, config: SocketConfig) => proto.ClientPayload;
6
- export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecretKey, signedIdentityKey, signalIdentities }: Pick<AuthenticationCreds, "advSecretKey" | "signedIdentityKey" | "signalIdentities">) => {
7
+ export declare const configureSuccessfulPairing: (stanza: BinaryNode, { advSecretKey, signedIdentityKey, signalIdentities }: Pick<AuthenticationCreds, 'advSecretKey' | 'signedIdentityKey' | 'signalIdentities'>) => {
7
8
  creds: Partial<AuthenticationCreds>;
8
9
  reply: BinaryNode;
9
- };
10
- export declare const encodeSignedDeviceIdentity: (account: proto.IADVSignedDeviceIdentity, includeSignatureKey: boolean) => Uint8Array<ArrayBufferLike>;
10
+ };
11
+ export declare const encodeSignedDeviceIdentity: (account: proto.IADVSignedDeviceIdentity, includeSignatureKey: boolean) => Uint8Array;
@@ -3,79 +3,109 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.encodeSignedDeviceIdentity = exports.configureSuccessfulPairing = exports.generateRegistrationNode = exports.generateLoginNode = void 0;
4
4
  const boom_1 = require("@hapi/boom");
5
5
  const crypto_1 = require("crypto");
6
- const index_js_1 = require("../../WAProto/index.js");
6
+ const WAProto_1 = require("../../WAProto");
7
7
  const Defaults_1 = require("../Defaults");
8
8
  const WABinary_1 = require("../WABinary");
9
9
  const crypto_2 = require("./crypto");
10
10
  const generics_1 = require("./generics");
11
11
  const signal_1 = require("./signal");
12
+
12
13
  const getUserAgent = (config) => {
13
14
  return {
14
15
  appVersion: {
15
16
  primary: config.version[0],
16
17
  secondary: config.version[1],
17
- tertiary: config.version[2]
18
+ tertiary: config.version[2],
18
19
  },
19
- platform: index_js_1.proto.ClientPayload.UserAgent.Platform.WEB,
20
- releaseChannel: index_js_1.proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
20
+ platform: WAProto_1.proto.ClientPayload.UserAgent.Platform.WEB,
21
+ releaseChannel: WAProto_1.proto.ClientPayload.UserAgent.ReleaseChannel.RELEASE,
21
22
  osVersion: '0.1',
22
23
  device: 'Desktop',
23
24
  osBuildNumber: '0.1',
24
25
  localeLanguageIso6391: 'en',
25
26
  mnc: '000',
26
27
  mcc: '000',
27
- localeCountryIso31661Alpha2: config.countryCode
28
+ localeCountryIso31661Alpha2: config.countryCode || 'US'
28
29
  };
29
30
  };
31
+
30
32
  const PLATFORM_MAP = {
31
- 'Mac OS': index_js_1.proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
32
- Windows: index_js_1.proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
33
+ 'Mac OS': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.DARWIN,
34
+ 'Windows': WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WIN32
33
35
  };
36
+
34
37
  const getWebInfo = (config) => {
35
- let webSubPlatform = index_js_1.proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
36
- if (config.syncFullHistory && PLATFORM_MAP[config.browser[0]]) {
38
+ let webSubPlatform = WAProto_1.proto.ClientPayload.WebInfo.WebSubPlatform.WEB_BROWSER;
39
+ if (config.syncFullHistory && PLATFORM_MAP[config.browser[0]] && config.browser[1] === 'Desktop') {
37
40
  webSubPlatform = PLATFORM_MAP[config.browser[0]];
38
41
  }
39
42
  return { webSubPlatform };
40
43
  };
44
+
41
45
  const getClientPayload = (config) => {
42
46
  const payload = {
43
- connectType: index_js_1.proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
44
- connectReason: index_js_1.proto.ClientPayload.ConnectReason.USER_ACTIVATED,
45
- userAgent: getUserAgent(config)
47
+ connectType: WAProto_1.proto.ClientPayload.ConnectType.WIFI_UNKNOWN,
48
+ connectReason: WAProto_1.proto.ClientPayload.ConnectReason.USER_ACTIVATED,
49
+ userAgent: getUserAgent(config),
46
50
  };
47
51
  payload.webInfo = getWebInfo(config);
48
52
  return payload;
49
53
  };
54
+
50
55
  const generateLoginNode = (userJid, config) => {
51
56
  const { user, device } = (0, WABinary_1.jidDecode)(userJid);
52
57
  const payload = {
53
58
  ...getClientPayload(config),
54
- passive: false,
59
+ passive: true,
55
60
  pull: true,
56
61
  username: +user,
57
- device: device
62
+ device: device,
63
+ lidDbMigrated: false
58
64
  };
59
- return index_js_1.proto.ClientPayload.create(payload);
65
+ return WAProto_1.proto.ClientPayload.fromObject(payload);
60
66
  };
61
67
  exports.generateLoginNode = generateLoginNode;
68
+
62
69
  const getPlatformType = (platform) => {
63
70
  const platformType = platform.toUpperCase();
64
- return (index_js_1.proto.DeviceProps.PlatformType[platformType] ||
65
- index_js_1.proto.DeviceProps.PlatformType.DESKTOP);
71
+ return WAProto_1.proto.DeviceProps.PlatformType[platformType] || WAProto_1.proto.DeviceProps.PlatformType.CHROME;
66
72
  };
73
+
67
74
  const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentityKey }, config) => {
68
- // the app version needs to be md5 hashed
69
- // and passed in
70
75
  const appVersionBuf = (0, crypto_1.createHash)('md5')
71
- .update(config.version.join('.')) // join as string
76
+ .update(config.version.join('.'))
72
77
  .digest();
78
+
73
79
  const companion = {
74
80
  os: config.browser[0],
75
81
  platformType: getPlatformType(config.browser[1]),
76
- requireFullSync: config.syncFullHistory
82
+ requireFullSync: config.syncFullHistory,
83
+ historySyncConfig: {
84
+ storageQuotaMb: 10240,
85
+ inlineInitialPayloadInE2EeMsg: true,
86
+ recentSyncDaysLimit: undefined,
87
+ supportCallLogHistory: false,
88
+ supportBotUserAgentChatHistory: true,
89
+ supportCagReactionsAndPolls: true,
90
+ supportBizHostedMsg: true,
91
+ supportRecentSyncChunkMessageCountTuning: true,
92
+ supportHostedGroupMsg: true,
93
+ supportFbidBotChatHistory: true,
94
+ supportAddOnHistorySyncMigration: undefined,
95
+ supportMessageAssociation: true,
96
+ supportGroupHistory: false,
97
+ onDemandReady: undefined,
98
+ supportGuestChat: undefined
99
+ },
100
+ version: {
101
+ primary: 10,
102
+ secondary: 15,
103
+ tertiary: 7
104
+ }
77
105
  };
78
- const companionProto = index_js_1.proto.DeviceProps.encode(companion).finish();
106
+
107
+ const companionProto = WAProto_1.proto.DeviceProps.encode(companion).finish();
108
+
79
109
  const registerPayload = {
80
110
  ...getClientPayload(config),
81
111
  passive: false,
@@ -88,12 +118,13 @@ const generateRegistrationNode = ({ registrationId, signedPreKey, signedIdentity
88
118
  eIdent: signedIdentityKey.public,
89
119
  eSkeyId: (0, generics_1.encodeBigEndian)(signedPreKey.keyId, 3),
90
120
  eSkeyVal: signedPreKey.keyPair.public,
91
- eSkeySig: signedPreKey.signature
92
- }
121
+ eSkeySig: signedPreKey.signature,
122
+ },
93
123
  };
94
- return index_js_1.proto.ClientPayload.create(registerPayload);
124
+ return WAProto_1.proto.ClientPayload.fromObject(registerPayload);
95
125
  };
96
126
  exports.generateRegistrationNode = generateRegistrationNode;
127
+
97
128
  const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, signalIdentities }) => {
98
129
  const msgId = stanza.attrs.id;
99
130
  const pairSuccessNode = (0, WABinary_1.getBinaryNodeChild)(stanza, 'pair-success');
@@ -101,37 +132,58 @@ const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, s
101
132
  const platformNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'platform');
102
133
  const deviceNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'device');
103
134
  const businessNode = (0, WABinary_1.getBinaryNodeChild)(pairSuccessNode, 'biz');
135
+
104
136
  if (!deviceIdentityNode || !deviceNode) {
105
137
  throw new boom_1.Boom('Missing device-identity or device in pair success node', { data: stanza });
106
138
  }
139
+
107
140
  const bizName = businessNode?.attrs.name;
108
141
  const jid = deviceNode.attrs.jid;
109
142
  const lid = deviceNode.attrs.lid;
110
- const { details, hmac, accountType } = index_js_1.proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
111
- const isHostedAccount = accountType !== undefined && accountType === index_js_1.proto.ADVEncryptionType.HOSTED;
112
- const hmacPrefix = isHostedAccount ? Buffer.from([6, 5]) : Buffer.alloc(0);
143
+
144
+ const { details, hmac, accountType } = WAProto_1.proto.ADVSignedDeviceIdentityHMAC.decode(deviceIdentityNode.content);
145
+
146
+ let hmacPrefix = Buffer.from([]);
147
+ if (accountType !== undefined && accountType === WAProto_1.proto.ADVEncryptionType.HOSTED) {
148
+ hmacPrefix = Buffer.from([0x06, 0x05]);
149
+ }
150
+
113
151
  const advSign = (0, crypto_2.hmacSign)(Buffer.concat([hmacPrefix, details]), Buffer.from(advSecretKey, 'base64'));
114
152
  if (Buffer.compare(hmac, advSign) !== 0) {
115
153
  throw new boom_1.Boom('Invalid account signature');
116
154
  }
117
- const account = index_js_1.proto.ADVSignedDeviceIdentity.decode(details);
155
+
156
+ const account = WAProto_1.proto.ADVSignedDeviceIdentity.decode(details);
118
157
  const { accountSignatureKey, accountSignature, details: deviceDetails } = account;
119
- const accountMsg = Buffer.concat([Buffer.from([6, 0]), deviceDetails, signedIdentityKey.public]);
158
+
159
+ const deviceIdentity = WAProto_1.proto.ADVDeviceIdentity.decode(deviceDetails);
160
+
161
+ const accountSignaturePrefix = deviceIdentity.deviceType === WAProto_1.proto.ADVEncryptionType.HOSTED
162
+ ? Buffer.from([0x06, 0x05])
163
+ : Buffer.from([0x06, 0x00]);
164
+ const accountMsg = Buffer.concat([accountSignaturePrefix, deviceDetails, signedIdentityKey.public]);
165
+
120
166
  if (!crypto_2.Curve.verify(accountSignatureKey, accountMsg, accountSignature)) {
121
167
  throw new boom_1.Boom('Failed to verify account signature');
122
168
  }
123
- const devicePrefix = isHostedAccount ? Buffer.from([6, 6]) : Buffer.from([6, 1]);
124
- const deviceMsg = Buffer.concat([devicePrefix, deviceDetails, signedIdentityKey.public, accountSignatureKey]);
169
+
170
+ const deviceMsg = Buffer.concat([
171
+ Buffer.from([0x06, 0x01]),
172
+ deviceDetails,
173
+ signedIdentityKey.public,
174
+ accountSignatureKey
175
+ ]);
125
176
  account.deviceSignature = crypto_2.Curve.sign(signedIdentityKey.private, deviceMsg);
126
- const identity = (0, signal_1.createSignalIdentity)(lid, accountSignatureKey);
177
+
178
+ const identity = (0, signal_1.createSignalIdentity)(jid, accountSignatureKey);
127
179
  const accountEnc = (0, exports.encodeSignedDeviceIdentity)(account, false);
128
- const deviceIdentity = index_js_1.proto.ADVDeviceIdentity.decode(account.details);
180
+
129
181
  const reply = {
130
182
  tag: 'iq',
131
183
  attrs: {
132
184
  to: WABinary_1.S_WHATSAPP_NET,
133
185
  type: 'result',
134
- id: msgId
186
+ id: msgId,
135
187
  },
136
188
  content: [
137
189
  {
@@ -147,25 +199,31 @@ const configureSuccessfulPairing = (stanza, { advSecretKey, signedIdentityKey, s
147
199
  }
148
200
  ]
149
201
  };
202
+
150
203
  const authUpdate = {
151
204
  account,
152
205
  me: { id: jid, name: bizName, lid },
153
- signalIdentities: [...(signalIdentities || []), identity],
206
+ signalIdentities: [
207
+ ...(signalIdentities || []),
208
+ identity
209
+ ],
154
210
  platform: platformNode?.attrs.name
155
211
  };
212
+
156
213
  return {
157
214
  creds: authUpdate,
158
215
  reply
159
216
  };
160
217
  };
161
218
  exports.configureSuccessfulPairing = configureSuccessfulPairing;
219
+
162
220
  const encodeSignedDeviceIdentity = (account, includeSignatureKey) => {
163
221
  account = { ...account };
164
- // set to null if we are not to include the signature key
165
- // or if we are including the signature key but it is empty
166
222
  if (!includeSignatureKey || !account.accountSignatureKey?.length) {
167
223
  account.accountSignatureKey = null;
168
224
  }
169
- return index_js_1.proto.ADVSignedDeviceIdentity.encode(account).finish();
225
+ return WAProto_1.proto.ADVSignedDeviceIdentity
226
+ .encode(account)
227
+ .finish();
170
228
  };
171
229
  exports.encodeSignedDeviceIdentity = encodeSignedDeviceIdentity;
@@ -1,27 +1,30 @@
1
1
  export declare const TAGS: {
2
- LIST_EMPTY: number;
3
- DICTIONARY_0: number;
4
- DICTIONARY_1: number;
5
- DICTIONARY_2: number;
6
- DICTIONARY_3: number;
7
- INTEROP_JID: number;
8
- FB_JID: number;
9
- AD_JID: number;
10
- LIST_8: number;
11
- LIST_16: number;
12
- JID_PAIR: number;
13
- HEX_8: number;
14
- BINARY_8: number;
15
- BINARY_20: number;
16
- BINARY_32: number;
17
- NIBBLE_8: number;
18
- PACKED_MAX: number;
19
- };
20
- export declare const DOUBLE_BYTE_TOKENS: readonly [readonly ["read-self", "active", "fbns", "protocol", "reaction", "screen_width", "heartbeat", "deviceid", "2:47DEQpj8", "uploadfieldstat", "voip_settings", "retry", "priority", "longitude", "conflict", "false", "ig_professional", "replaced", "preaccept", "cover_photo", "uncompressed", "encopt", "ppic", "04", "passive", "status-revoke-drop", "keygen", "540", "offer", "rate", "opus", "latitude", "w:gp2", "ver", "4", "business_profile", "medium", "sender", "prev_v_id", "email", "website", "invited", "sign_credential", "05", "transport", "skey", "reason", "peer_abtest_bucket", "America/Sao_Paulo", "appid", "refresh", "100", "06", "404", "101", "104", "107", "102", "109", "103", "member_add_mode", "105", "transaction-id", "110", "106", "outgoing", "108", "111", "tokens", "followers", "ig_handle", "self_pid", "tue", "dec", "thu", "joinable", "peer_pid", "mon", "features", "wed", "peer_device_presence", "pn", "delete", "07", "fri", "audio_duration", "admin", "connected", "delta", "rcat", "disable", "collection", "08", "480", "sat", "phash", "all", "invite", "accept", "critical_unblock_low", "group_update", "signed_credential", "blinded_credential", "eph_setting", "net", "09", "background_location", "refresh_id", "Asia/Kolkata", "privacy_mode_ts", "account_sync", "voip_payload_type", "service_areas", "acs_public_key", "v_id", "0a", "fallback_class", "relay", "actual_actors", "metadata", "w:biz", "5", "connected-limit", "notice", "0b", "host_storage", "fb_page", "subject", "privatestats", "invis", "groupadd", "010", "note.m4r", "uuid", "0c", "8000", "sun", "372", "1020", "stage", "1200", "720", "canonical", "fb", "011", "video_duration", "0d", "1140", "superadmin", "012", "Opening.m4r", "keystore_attestation", "dleq_proof", "013", "timestamp", "ab_key", "w:sync:app:state", "0e", "vertical", "600", "p_v_id", "6", "likes", "014", "500", "1260", "creator", "0f", "rte", "destination", "group", "group_info", "syncd_anti_tampering_fatal_exception_enabled", "015", "dl_bw", "Asia/Jakarta", "vp8/h.264", "online", "1320", "fb:multiway", "10", "timeout", "016", "nse_retry", "urn:xmpp:whatsapp:dirty", "017", "a_v_id", "web_shops_chat_header_button_enabled", "nse_call", "inactive-upgrade", "none", "web", "groups", "2250", "mms_hot_content_timespan_in_seconds", "contact_blacklist", "nse_read", "suspended_group_deletion_notification", "binary_version", "018", "https://www.whatsapp.com/otp/copy/", "reg_push", "shops_hide_catalog_attachment_entrypoint", "server_sync", ".", "ephemeral_messages_allowed_values", "019", "mms_vcache_aggregation_enabled", "iphone", "America/Argentina/Buenos_Aires", "01a", "mms_vcard_autodownload_size_kb", "nse_ver", "shops_header_dropdown_menu_item", "dhash", "catalog_status", "communities_mvp_new_iqs_serverprop", "blocklist", "default", "11", "ephemeral_messages_enabled", "01b", "original_dimensions", "8", "mms4_media_retry_notification_encryption_enabled", "mms4_server_error_receipt_encryption_enabled", "original_image_url", "sync", "multiway", "420", "companion_enc_static", "shops_profile_drawer_entrypoint", "01c", "vcard_as_document_size_kb", "status_video_max_duration", "request_image_url", "01d", "regular_high", "s_t", "abt", "share_ext_min_preliminary_image_quality", "01e", "32", "syncd_key_rotation_enabled", "data_namespace", "md_downgrade_read_receipts2", "patch", "polltype", "ephemeral_messages_setting", "userrate", "15", "partial_pjpeg_bw_threshold", "played-self", "catalog_exists", "01f", "mute_v2"], readonly ["reject", "dirty", "announcement", "020", "13", "9", "status_video_max_bitrate", "fb:thrift_iq", "offline_batch", "022", "full", "ctwa_first_business_reply_logging", "h.264", "smax_id", "group_description_length", "https://www.whatsapp.com/otp/code", "status_image_max_edge", "smb_upsell_business_profile_enabled", "021", "web_upgrade_to_md_modal", "14", "023", "s_o", "smaller_video_thumbs_status_enabled", "media_max_autodownload", "960", "blocking_status", "peer_msg", "joinable_group_call_client_version", "group_call_video_maximization_enabled", "return_snapshot", "high", "America/Mexico_City", "entry_point_block_logging_enabled", "pop", "024", "1050", "16", "1380", "one_tap_calling_in_group_chat_size", "regular_low", "inline_joinable_education_enabled", "hq_image_max_edge", "locked", "America/Bogota", "smb_biztools_deeplink_enabled", "status_image_quality", "1088", "025", "payments_upi_intent_transaction_limit", "voip", "w:g2", "027", "md_pin_chat_enabled", "026", "multi_scan_pjpeg_download_enabled", "shops_product_grid", "transaction_id", "ctwa_context_enabled", "20", "fna", "hq_image_quality", "alt_jpeg_doc_detection_quality", "group_call_max_participants", "pkey", "America/Belem", "image_max_kbytes", "web_cart_v1_1_order_message_changes_enabled", "ctwa_context_enterprise_enabled", "urn:xmpp:whatsapp:account", "840", "Asia/Kuala_Lumpur", "max_participants", "video_remux_after_repair_enabled", "stella_addressbook_restriction_type", "660", "900", "780", "context_menu_ios13_enabled", "mute-state", "ref", "payments_request_messages", "029", "frskmsg", "vcard_max_size_kb", "sample_buffer_gif_player_enabled", "match_last_seen", "510", "4983", "video_max_bitrate", "028", "w:comms:chat", "17", "frequently_forwarded_max", "groups_privacy_blacklist", "Asia/Karachi", "02a", "web_download_document_thumb_mms_enabled", "02b", "hist_sync", "biz_block_reasons_version", "1024", "18", "web_is_direct_connection_for_plm_transparent", "view_once_write", "file_max_size", "paid_convo_id", "online_privacy_setting", "video_max_edge", "view_once_read", "enhanced_storage_management", "multi_scan_pjpeg_encoding_enabled", "ctwa_context_forward_enabled", "video_transcode_downgrade_enable", "template_doc_mime_types", "hq_image_bw_threshold", "30", "body", "u_aud_limit_sil_restarts_ctrl", "other", "participating", "w:biz:directory", "1110", "vp8", "4018", "meta", "doc_detection_image_max_edge", "image_quality", "1170", "02c", "smb_upsell_chat_banner_enabled", "key_expiry_time_second", "pid", "stella_interop_enabled", "19", "linked_device_max_count", "md_device_sync_enabled", "02d", "02e", "360", "enhanced_block_enabled", "ephemeral_icon_in_forwarding", "paid_convo_status", "gif_provider", "project_name", "server-error", "canonical_url_validation_enabled", "wallpapers_v2", "syncd_clear_chat_delete_chat_enabled", "medianotify", "02f", "shops_required_tos_version", "vote", "reset_skey_on_id_change", "030", "image_max_edge", "multicast_limit_global", "ul_bw", "21", "25", "5000", "poll", "570", "22", "031", "1280", "WhatsApp", "032", "bloks_shops_enabled", "50", "upload_host_switching_enabled", "web_ctwa_context_compose_enabled", "ptt_forwarded_features_enabled", "unblocked", "partial_pjpeg_enabled", "fbid:devices", "height", "ephemeral_group_query_ts", "group_join_permissions", "order", "033", "alt_jpeg_status_quality", "migrate", "popular-bank", "win_uwp_deprecation_killswitch_enabled", "web_download_status_thumb_mms_enabled", "blocking", "url_text", "035", "web_forwarding_limit_to_groups", "1600", "val", "1000", "syncd_msg_date_enabled", "bank-ref-id", "max_subject", "payments_web_enabled", "web_upload_document_thumb_mms_enabled", "size", "request", "ephemeral", "24", "receipt_agg", "ptt_remember_play_position", "sampling_weight", "enc_rekey", "mute_always", "037", "034", "23", "036", "action", "click_to_chat_qr_enabled", "width", "disabled", "038", "md_blocklist_v2", "played_self_enabled", "web_buttons_message_enabled", "flow_id", "clear", "450", "fbid:thread", "bloks_session_state", "America/Lima", "attachment_picker_refresh", "download_host_switching_enabled", "1792", "u_aud_limit_sil_restarts_test2", "custom_urls", "device_fanout", "optimistic_upload", "2000", "key_cipher_suite", "web_smb_upsell_in_biz_profile_enabled", "e", "039", "siri_post_status_shortcut", "pair-device", "lg", "lc", "stream_attribution_url", "model", "mspjpeg_phash_gen", "catalog_send_all", "new_multi_vcards_ui", "share_biz_vcard_enabled", "-", "clean", "200", "md_blocklist_v2_server", "03b", "03a", "web_md_migration_experience", "ptt_conversation_waveform", "u_aud_limit_sil_restarts_test1"], readonly ["64", "ptt_playback_speed_enabled", "web_product_list_message_enabled", "paid_convo_ts", "27", "manufacturer", "psp-routing", "grp_uii_cleanup", "ptt_draft_enabled", "03c", "business_initiated", "web_catalog_products_onoff", "web_upload_link_thumb_mms_enabled", "03e", "mediaretry", "35", "hfm_string_changes", "28", "America/Fortaleza", "max_keys", "md_mhfs_days", "streaming_upload_chunk_size", "5541", "040", "03d", "2675", "03f", "...", "512", "mute", "48", "041", "alt_jpeg_quality", "60", "042", "md_smb_quick_reply", "5183", "c", "1343", "40", "1230", "043", "044", "mms_cat_v1_forward_hot_override_enabled", "user_notice", "ptt_waveform_send", "047", "Asia/Calcutta", "250", "md_privacy_v2", "31", "29", "128", "md_messaging_enabled", "046", "crypto", "690", "045", "enc_iv", "75", "failure", "ptt_oot_playback", "AIzaSyDR5yfaG7OG8sMTUj8kfQEb8T9pN8BM6Lk", "w", "048", "2201", "web_large_files_ui", "Asia/Makassar", "812", "status_collapse_muted", "1334", "257", "2HP4dm", "049", "patches", "1290", "43cY6T", "America/Caracas", "web_sticker_maker", "campaign", "ptt_pausable_enabled", "33", "42", "attestation", "biz", "04b", "query_linked", "s", "125", "04a", "810", "availability", "1411", "responsiveness_v2_m1", "catalog_not_created", "34", "America/Santiago", "1465", "enc_p", "04d", "status_info", "04f", "key_version", "..", "04c", "04e", "md_group_notification", "1598", "1215", "web_cart_enabled", "37", "630", "1920", "2394", "-1", "vcard", "38", "elapsed", "36", "828", "peer", "pricing_category", "1245", "invalid", "stella_ios_enabled", "2687", "45", "1528", "39", "u_is_redial_audio_1104_ctrl", "1025", "1455", "58", "2524", "2603", "054", "bsp_system_message_enabled", "web_pip_redesign", "051", "verify_apps", "1974", "1272", "1322", "1755", "052", "70", "050", "1063", "1135", "1361", "80", "1096", "1828", "1851", "1251", "1921", "key_config_id", "1254", "1566", "1252", "2525", "critical_block", "1669", "max_available", "w:auth:backup:token", "product", "2530", "870", "1022", "participant_uuid", "web_cart_on_off", "1255", "1432", "1867", "41", "1415", "1440", "240", "1204", "1608", "1690", "1846", "1483", "1687", "1749", "69", "url_number", "053", "1325", "1040", "365", "59", "Asia/Riyadh", "1177", "test_recommended", "057", "1612", "43", "1061", "1518", "1635", "055", "1034", "1375", "750", "1430", "event_code", "1682", "503", "55", "865", "78", "1309", "1365", "44", "America/Guayaquil", "535", "LIMITED", "1377", "1613", "1420", "1599", "1822", "05a", "1681", "password", "1111", "1214", "1376", "1478", "47", "1082", "4282", "Europe/Istanbul", "1307", "46", "058", "1124", "256", "rate-overlimit", "retail", "u_a_socket_err_fix_succ_test", "1292", "1370", "1388", "520", "861", "psa", "regular", "1181", "1766", "05b", "1183", "1213", "1304", "1537"], readonly ["1724", "profile_picture", "1071", "1314", "1605", "407", "990", "1710", "746", "pricing_model", "056", "059", "061", "1119", "6027", "65", "877", "1607", "05d", "917", "seen", "1516", "49", "470", "973", "1037", "1350", "1394", "1480", "1796", "keys", "794", "1536", "1594", "2378", "1333", "1524", "1825", "116", "309", "52", "808", "827", "909", "495", "1660", "361", "957", "google", "1357", "1565", "1967", "996", "1775", "586", "736", "1052", "1670", "bank", "177", "1416", "2194", "2222", "1454", "1839", "1275", "53", "997", "1629", "6028", "smba", "1378", "1410", "05c", "1849", "727", "create", "1559", "536", "1106", "1310", "1944", "670", "1297", "1316", "1762", "en", "1148", "1295", "1551", "1853", "1890", "1208", "1784", "7200", "05f", "178", "1283", "1332", "381", "643", "1056", "1238", "2024", "2387", "179", "981", "1547", "1705", "05e", "290", "903", "1069", "1285", "2436", "062", "251", "560", "582", "719", "56", "1700", "2321", "325", "448", "613", "777", "791", "51", "488", "902", "Asia/Almaty", "is_hidden", "1398", "1527", "1893", "1999", "2367", "2642", "237", "busy", "065", "067", "233", "590", "993", "1511", "54", "723", "860", "363", "487", "522", "605", "995", "1321", "1691", "1865", "2447", "2462", "NON_TRANSACTIONAL", "433", "871", "432", "1004", "1207", "2032", "2050", "2379", "2446", "279", "636", "703", "904", "248", "370", "691", "700", "1068", "1655", "2334", "060", "063", "364", "533", "534", "567", "1191", "1210", "1473", "1827", "069", "701", "2531", "514", "prev_dhash", "064", "496", "790", "1046", "1139", "1505", "1521", "1108", "207", "544", "637", "final", "1173", "1293", "1694", "1939", "1951", "1993", "2353", "2515", "504", "601", "857", "modify", "spam_request", "p_121_aa_1101_test4", "866", "1427", "1502", "1638", "1744", "2153", "068", "382", "725", "1704", "1864", "1990", "2003", "Asia/Dubai", "508", "531", "1387", "1474", "1632", "2307", "2386", "819", "2014", "066", "387", "1468", "1706", "2186", "2261", "471", "728", "1147", "1372", "1961"]];
21
- export declare const SINGLE_BYTE_TOKENS: string[];
2
+ LIST_EMPTY: number
3
+ DICTIONARY_0: number
4
+ DICTIONARY_1: number
5
+ DICTIONARY_2: number
6
+ DICTIONARY_3: number
7
+ INTEROP_JID: number
8
+ FB_JID: number
9
+ AD_JID: number
10
+ LIST_8: number
11
+ LIST_16: number
12
+ JID_PAIR: number
13
+ HEX_8: number
14
+ BINARY_8: number
15
+ BINARY_20: number
16
+ BINARY_32: number
17
+ NIBBLE_8: number
18
+ PACKED_MAX: number
19
+ }
20
+
21
+ export declare const DOUBLE_BYTE_TOKENS: string[][]
22
+
23
+ export declare const SINGLE_BYTE_TOKENS: (string | null)[]
24
+
22
25
  export declare const TOKEN_MAP: {
23
26
  [token: string]: {
24
- dict?: number;
25
- index: number;
26
- };
27
- };
27
+ dict?: number
28
+ index: number
29
+ }
30
+ }