zapo-js 1.6.2 → 1.7.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 (141) hide show
  1. package/dist/abprops-spec.d.ts +10 -0
  2. package/dist/abprops-spec.js +25 -0
  3. package/dist/client/WaClient.d.ts +11 -0
  4. package/dist/client/WaClient.js +60 -0
  5. package/dist/client/WaClientFactory.d.ts +2 -2
  6. package/dist/client/WaClientFactory.js +50 -12
  7. package/dist/client/coordinators/WaAbPropsCoordinator.d.ts +2 -2
  8. package/dist/client/coordinators/WaAbPropsCoordinator.js +16 -4
  9. package/dist/client/coordinators/WaIncomingNodeCoordinator.d.ts +2 -1
  10. package/dist/client/coordinators/WaIncomingNodeCoordinator.js +4 -0
  11. package/dist/client/coordinators/WaMessageCoordinator.d.ts +96 -0
  12. package/dist/client/coordinators/WaMessageCoordinator.js +163 -8
  13. package/dist/client/coordinators/WaMessageDispatchCoordinator.d.ts +64 -0
  14. package/dist/client/coordinators/WaMessageDispatchCoordinator.js +217 -30
  15. package/dist/client/coordinators/WaPrivacyCoordinator.d.ts +97 -19
  16. package/dist/client/coordinators/WaPrivacyCoordinator.js +152 -101
  17. package/dist/client/coordinators/WaRetryCoordinator.d.ts +22 -0
  18. package/dist/client/coordinators/WaRetryCoordinator.js +74 -11
  19. package/dist/client/events/dirty.d.ts +3 -0
  20. package/dist/client/events/dirty.js +12 -7
  21. package/dist/client/events/offline.d.ts +9 -0
  22. package/dist/client/events/offline.js +95 -0
  23. package/dist/client/events/privacy.d.ts +45 -0
  24. package/dist/client/events/privacy.js +130 -0
  25. package/dist/client/messaging/group-metadata.d.ts +12 -0
  26. package/dist/client/messaging/group-metadata.js +24 -8
  27. package/dist/client/messaging/link-preview.d.ts +7 -0
  28. package/dist/client/messaging/link-preview.js +27 -0
  29. package/dist/client/newsletter/content.d.ts +4 -1
  30. package/dist/client/newsletter/content.js +43 -18
  31. package/dist/client/newsletter/messaging.d.ts +2 -0
  32. package/dist/client/newsletter/messaging.js +2 -1
  33. package/dist/client/newsletter/mex.d.ts +2 -2
  34. package/dist/client/persistence/WriteBehindPersistence.js +2 -1
  35. package/dist/client/persistence/ephemeral-setting.d.ts +42 -0
  36. package/dist/client/persistence/ephemeral-setting.js +120 -0
  37. package/dist/client/persistence/group-history.d.ts +29 -0
  38. package/dist/client/persistence/group-history.js +149 -0
  39. package/dist/client/persistence/history-blob.d.ts +25 -0
  40. package/dist/client/persistence/history-blob.js +38 -0
  41. package/dist/client/persistence/history-sync.d.ts +2 -0
  42. package/dist/client/persistence/history-sync.js +31 -29
  43. package/dist/client/types.d.ts +150 -16
  44. package/dist/crypto/core/xeddsa.js +16 -0
  45. package/dist/crypto/curves/X25519.js +13 -0
  46. package/dist/crypto/nativeBackend.d.ts +20 -0
  47. package/dist/crypto/nativeBackend.js +95 -0
  48. package/dist/esm/abprops-spec.js +15 -0
  49. package/dist/esm/client/WaClient.js +60 -0
  50. package/dist/esm/client/WaClientFactory.js +51 -13
  51. package/dist/esm/client/coordinators/WaAbPropsCoordinator.js +17 -5
  52. package/dist/esm/client/coordinators/WaIncomingNodeCoordinator.js +4 -0
  53. package/dist/esm/client/coordinators/WaMessageCoordinator.js +166 -11
  54. package/dist/esm/client/coordinators/WaMessageDispatchCoordinator.js +218 -32
  55. package/dist/esm/client/coordinators/WaPrivacyCoordinator.js +145 -94
  56. package/dist/esm/client/coordinators/WaRetryCoordinator.js +74 -11
  57. package/dist/esm/client/events/dirty.js +12 -7
  58. package/dist/esm/client/events/offline.js +92 -0
  59. package/dist/esm/client/events/privacy.js +123 -0
  60. package/dist/esm/client/messaging/group-metadata.js +25 -9
  61. package/dist/esm/client/messaging/link-preview.js +29 -2
  62. package/dist/esm/client/newsletter/content.js +44 -19
  63. package/dist/esm/client/newsletter/messaging.js +2 -1
  64. package/dist/esm/client/persistence/WriteBehindPersistence.js +2 -1
  65. package/dist/esm/client/persistence/ephemeral-setting.js +116 -0
  66. package/dist/esm/client/persistence/group-history.js +145 -0
  67. package/dist/esm/client/persistence/history-blob.js +34 -0
  68. package/dist/esm/client/persistence/history-sync.js +24 -22
  69. package/dist/esm/crypto/core/xeddsa.js +17 -1
  70. package/dist/esm/crypto/curves/X25519.js +13 -0
  71. package/dist/esm/crypto/nativeBackend.js +93 -0
  72. package/dist/esm/index.js +3 -1
  73. package/dist/esm/message/context-info.js +39 -0
  74. package/dist/esm/message/encode/content.js +20 -4
  75. package/dist/esm/message/encode/media-payload.js +3 -1
  76. package/dist/esm/message/kinds/group-history.js +36 -0
  77. package/dist/esm/message/primitives/incoming.js +18 -6
  78. package/dist/esm/protocol/abprops.js +18 -162
  79. package/dist/esm/protocol/constants.js +4 -3
  80. package/dist/esm/protocol/defaults.js +6 -0
  81. package/dist/esm/protocol/media.js +1 -0
  82. package/dist/esm/protocol/message.js +8 -0
  83. package/dist/esm/protocol/notification.js +1 -0
  84. package/dist/esm/protocol/privacy.js +70 -4
  85. package/dist/esm/store/contracts/chat-metadata.store.js +1 -0
  86. package/dist/esm/store/createStore.js +19 -2
  87. package/dist/esm/store/index.js +1 -0
  88. package/dist/esm/store/memory/chat-metadata.store.js +66 -0
  89. package/dist/esm/store/noop.store.js +8 -0
  90. package/dist/esm/transport/node/builders/privacy.js +63 -4
  91. package/dist/esm/util/coercion.js +12 -4
  92. package/dist/esm/util/index.js +1 -1
  93. package/dist/index.d.ts +11 -6
  94. package/dist/index.js +15 -2
  95. package/dist/media/types.d.ts +1 -1
  96. package/dist/message/context-info.d.ts +10 -0
  97. package/dist/message/context-info.js +40 -0
  98. package/dist/message/encode/content.d.ts +7 -3
  99. package/dist/message/encode/content.js +20 -4
  100. package/dist/message/encode/media-payload.d.ts +5 -2
  101. package/dist/message/encode/media-payload.js +3 -1
  102. package/dist/message/kinds/group-history.d.ts +30 -0
  103. package/dist/message/kinds/group-history.js +40 -0
  104. package/dist/message/primitives/incoming.d.ts +5 -0
  105. package/dist/message/primitives/incoming.js +18 -6
  106. package/dist/protocol/abprops.d.ts +27 -140
  107. package/dist/protocol/abprops.js +18 -163
  108. package/dist/protocol/constants.d.ts +4 -3
  109. package/dist/protocol/constants.js +10 -3
  110. package/dist/protocol/defaults.d.ts +6 -0
  111. package/dist/protocol/defaults.js +6 -0
  112. package/dist/protocol/media.d.ts +1 -0
  113. package/dist/protocol/media.js +1 -0
  114. package/dist/protocol/message.d.ts +6 -0
  115. package/dist/protocol/message.js +9 -0
  116. package/dist/protocol/notification.d.ts +1 -0
  117. package/dist/protocol/notification.js +1 -0
  118. package/dist/protocol/privacy.d.ts +52 -0
  119. package/dist/protocol/privacy.js +71 -5
  120. package/dist/store/contracts/chat-metadata.store.d.ts +34 -0
  121. package/dist/store/contracts/chat-metadata.store.js +2 -0
  122. package/dist/store/contracts/group-metadata.store.d.ts +7 -0
  123. package/dist/store/contracts/thread.store.d.ts +6 -0
  124. package/dist/store/createStore.d.ts +10 -2
  125. package/dist/store/createStore.js +18 -1
  126. package/dist/store/index.d.ts +3 -1
  127. package/dist/store/index.js +3 -1
  128. package/dist/store/memory/chat-metadata.store.d.ts +26 -0
  129. package/dist/store/memory/chat-metadata.store.js +70 -0
  130. package/dist/store/noop.store.d.ts +2 -0
  131. package/dist/store/noop.store.js +9 -1
  132. package/dist/store/types.d.ts +190 -39
  133. package/dist/transport/node/builders/privacy.d.ts +26 -2
  134. package/dist/transport/node/builders/privacy.js +63 -3
  135. package/dist/util/coercion.d.ts +6 -0
  136. package/dist/util/coercion.js +13 -4
  137. package/dist/util/index.d.ts +1 -1
  138. package/dist/util/index.js +2 -1
  139. package/package.json +3 -1
  140. package/spec/abprops/index.d.ts +4402 -0
  141. package/spec/abprops/index.js +4372 -0
@@ -1,151 +1,38 @@
1
+ import { WA_ABPROPS, type WaAbPropName, type WaAbPropType, type WaAbPropValue } from '../abprops-spec';
1
2
  export declare const WA_ABPROPS_PROTOCOL_VERSION = "1";
2
3
  export declare const WA_ABPROPS_REFRESH_BOUNDS: Readonly<{
3
4
  readonly MIN_S: 600;
4
5
  readonly MAX_S: 604800;
5
6
  readonly DEFAULT_S: 86400;
6
7
  }>;
7
- export type AbPropType = 'bool' | 'int' | 'string';
8
- export type AbPropValue = boolean | number | string;
8
+ /** @deprecated Use `WaAbPropType`. Now also covers `'float'`. */
9
+ export type AbPropType = WaAbPropType;
10
+ /** @deprecated Use `WaAbPropValue`. */
11
+ export type AbPropValue = WaAbPropValue;
12
+ /** @deprecated Use `WaAbPropName`. Now covers the whole WA Web catalogue. */
13
+ export type AbPropName = WaAbPropName;
14
+ /**
15
+ * @deprecated Use `WaAbProp`, which names the wire id `code` and also carries
16
+ * `debugDefaultValue`.
17
+ */
9
18
  export interface AbPropConfigEntry {
10
19
  readonly configCode: number;
11
20
  readonly type: AbPropType;
12
21
  readonly defaultValue: AbPropValue;
13
22
  }
14
- export declare const AB_PROP_CONFIGS: Readonly<{
15
- readonly syncd_key_max_use_days: AbPropConfigEntry;
16
- readonly syncd_wait_for_key_timeout_days: AbPropConfigEntry;
17
- readonly syncd_sentinel_timeout_seconds: AbPropConfigEntry;
18
- readonly syncd_inline_mutations_max_count: AbPropConfigEntry;
19
- readonly syncd_patch_protobuf_max_size: AbPropConfigEntry;
20
- readonly syncd_additional_mutations_count: AbPropConfigEntry;
21
- readonly syncd_periodic_sync_days: AbPropConfigEntry;
22
- readonly syncd_mutation_and_bundle_logging: AbPropConfigEntry;
23
- readonly wa_web_enable_syncd_key_persistence_only_after_server_ack: AbPropConfigEntry;
24
- readonly web_request_missing_keys_for_removes: AbPropConfigEntry;
25
- readonly web_syncd_max_mutations_to_process_during_resume: AbPropConfigEntry;
26
- readonly web_syncd_fatal_fields_from_L1104589PRV2: AbPropConfigEntry;
27
- readonly web_enable_improved_bulk_merge: AbPropConfigEntry;
28
- readonly snapshot_recovery_max_mutations_count_allowed: AbPropConfigEntry;
29
- readonly md_syncd_logging_spec_enabled: AbPropConfigEntry;
30
- readonly kmp_syncd_engine_crypto_enabled: AbPropConfigEntry;
31
- readonly enable_syncd_debug_data_in_patch: AbPropConfigEntry;
32
- readonly enable_mention_everyone_syncd_sender: AbPropConfigEntry;
33
- readonly username_contact_syncd_support_enable: AbPropConfigEntry;
34
- readonly newsletter_tos_notice_id: AbPropConfigEntry;
35
- readonly newsletter_tos_notice_id_smb_web: AbPropConfigEntry;
36
- readonly newsletter_creation_tos_id: AbPropConfigEntry;
37
- readonly newsletter_creation_tos_id_smb_web: AbPropConfigEntry;
38
- readonly newsletter_admin_invite_tos_id: AbPropConfigEntry;
39
- readonly newsletter_admin_invite_tos_id_smb_web: AbPropConfigEntry;
40
- readonly newsletter_creation_nux_id: AbPropConfigEntry;
41
- readonly newsletter_nux_notice_id: AbPropConfigEntry;
42
- readonly newsletter_admin_invite_nux_id: AbPropConfigEntry;
43
- readonly after_read_sending_enabled: AbPropConfigEntry;
44
- readonly after_read_fallback_duration: AbPropConfigEntry;
45
- readonly after_read_receiver_enabled: AbPropConfigEntry;
46
- readonly privacy_token_sending_on_all_1_on_1_messages: AbPropConfigEntry;
47
- readonly flows_termination_message_v2_sending_enabled: AbPropConfigEntry;
48
- readonly dm_initiator_trigger_groups: AbPropConfigEntry;
49
- readonly placeholder_message_resend_maximum_days_limit: AbPropConfigEntry;
50
- readonly message_edit_to_message_secret_sender_enabled: AbPropConfigEntry;
51
- readonly message_edit_to_message_secret_receiver_enabled: AbPropConfigEntry;
52
- readonly top_level_message_secret_check: AbPropConfigEntry;
53
- readonly parse_encrypted_dsm_msg_fix: AbPropConfigEntry;
54
- readonly rt_sender_dual_encrypted_msg_enabled: AbPropConfigEntry;
55
- readonly rt_receiver_dual_encrypted_msg_enabled: AbPropConfigEntry;
56
- readonly lid_one_to_one_migration_event_response_force_pn_jid: AbPropConfigEntry;
57
- readonly web_anr_async_msg_send_handler: AbPropConfigEntry;
58
- readonly message_keys_async_chunk_size: AbPropConfigEntry;
59
- readonly synced_message_keys_processing_type: AbPropConfigEntry;
60
- readonly limit_sharing_protocol_message_receiver_enabled: AbPropConfigEntry;
61
- readonly web_pnless_stanzas: AbPropConfigEntry;
62
- readonly wa_nct_token_send_enabled: AbPropConfigEntry;
63
- readonly wa_nct_token_syncd_enabled: AbPropConfigEntry;
64
- readonly wa_nct_token_history_sync_enabled: AbPropConfigEntry;
65
- readonly community_announcement_group_size_limit: AbPropConfigEntry;
66
- readonly group_size_limit: AbPropConfigEntry;
67
- readonly group_max_subject: AbPropConfigEntry;
68
- readonly group_description_length: AbPropConfigEntry;
69
- readonly anyone_can_link_to_groups: AbPropConfigEntry;
70
- readonly group_call_max_participants: AbPropConfigEntry;
71
- readonly group_history_receive: AbPropConfigEntry;
72
- readonly group_history_send: AbPropConfigEntry;
73
- readonly group_history_settings: AbPropConfigEntry;
74
- readonly group_history_settings_query: AbPropConfigEntry;
75
- readonly group_history_message_count_limit: AbPropConfigEntry;
76
- readonly group_history_message_count_receiver_upper_limit: AbPropConfigEntry;
77
- readonly group_history_messages_time_limit_receiver_enforcement_secs: AbPropConfigEntry;
78
- readonly group_history_bundle_time_limit_receiver_enforcement_secs: AbPropConfigEntry;
79
- readonly group_history_notice_receive: AbPropConfigEntry;
80
- readonly group_history_out_of_window_pin_sender: AbPropConfigEntry;
81
- readonly group_history_out_of_window_pins_receiver: AbPropConfigEntry;
82
- readonly group_history_reporting: AbPropConfigEntry;
83
- readonly group_create_add_using_lid_jids: AbPropConfigEntry;
84
- readonly group_member_updates_hide_in_thread_enabled: AbPropConfigEntry;
85
- readonly group_status_receiver_enabled: AbPropConfigEntry;
86
- readonly web_send_invisible_msg_max_group_size: AbPropConfigEntry;
87
- readonly web_send_invisible_msg_min_group_size: AbPropConfigEntry;
88
- readonly admin_only_mention_everyone_group_size: AbPropConfigEntry;
89
- readonly web_abprop_drop_full_history_sync: AbPropConfigEntry;
90
- readonly wa_web_history_sync_dynamic_throttling: AbPropConfigEntry;
91
- readonly web_e2e_backfill_expire_time: AbPropConfigEntry;
92
- readonly history_sync_on_demand: AbPropConfigEntry;
93
- readonly history_sync_on_demand_message_count: AbPropConfigEntry;
94
- readonly history_sync_on_demand_failure_limit: AbPropConfigEntry;
95
- readonly history_sync_on_demand_cooldown_sec: AbPropConfigEntry;
96
- readonly history_sync_on_demand_complete_companion: AbPropConfigEntry;
97
- readonly history_sync_on_demand_with_android_beta: AbPropConfigEntry;
98
- readonly web_anr_throttle_history_sync_db_writes: AbPropConfigEntry;
99
- readonly web_force_lid_chats_in_history: AbPropConfigEntry;
100
- readonly web_history_sync_allow_duplicate_in_bulk_error: AbPropConfigEntry;
101
- readonly default_media_limit_mb: AbPropConfigEntry;
102
- readonly web_image_max_edge: AbPropConfigEntry;
103
- readonly web_image_max_hd_edge: AbPropConfigEntry;
104
- readonly web_channel_video_server_transcode_upload: AbPropConfigEntry;
105
- readonly web_deprecate_mms4_hash_based_download: AbPropConfigEntry;
106
- readonly kaleidoscope_thumbnail_validation: AbPropConfigEntry;
107
- readonly web_use_kaleidoscope_media_check_enabled: AbPropConfigEntry;
108
- readonly low_cache_hit_rate_media_types: AbPropConfigEntry;
109
- readonly web_anr_async_media_decryption_enabled: AbPropConfigEntry;
110
- readonly web_anr_media_chunk_enc_delay_enabled: AbPropConfigEntry;
111
- readonly web_media_compute_in_worker_enabled: AbPropConfigEntry;
112
- readonly adv_accept_hosted_devices: AbPropConfigEntry;
113
- readonly num_days_key_index_list_expiration: AbPropConfigEntry;
114
- readonly num_days_before_device_expiry_check: AbPropConfigEntry;
115
- readonly web_adv_logout_on_self_device_list_expired: AbPropConfigEntry;
116
- readonly md_icdc_hash_length: AbPropConfigEntry;
117
- readonly noise_pq_mode: AbPropConfigEntry;
118
- readonly tctoken_duration: AbPropConfigEntry;
119
- readonly tctoken_num_buckets: AbPropConfigEntry;
120
- readonly tctoken_num_buckets_sender: AbPropConfigEntry;
121
- readonly tctoken_duration_sender: AbPropConfigEntry;
122
- readonly heartbeat_interval_s: AbPropConfigEntry;
123
- readonly web_offline_message_processor_timeout_seconds: AbPropConfigEntry;
124
- readonly web_offline_resume_wait_for_ping_response_enabled: AbPropConfigEntry;
125
- readonly web_offline_resume_wait_for_ping_timeout_seconds: AbPropConfigEntry;
126
- readonly web_comms_socket_reconnect_enabled: AbPropConfigEntry;
127
- readonly web_resume_optimized_read_receipt_send_interval: AbPropConfigEntry;
128
- readonly web_reaction_inactive_receipt: AbPropConfigEntry;
129
- readonly lid_status_non_soaked_client_support_enabled: AbPropConfigEntry;
130
- readonly s567418_mitigation_enabled: AbPropConfigEntry;
131
- readonly web_signal_future_messages_max: AbPropConfigEntry;
132
- readonly poll_add_option_enabled: AbPropConfigEntry;
133
- readonly poll_add_option_receiving_enabled: AbPropConfigEntry;
134
- readonly poll_creator_edit_enabled: AbPropConfigEntry;
135
- readonly poll_creator_edit_receiving_version: AbPropConfigEntry;
136
- readonly poll_end_time_enabled: AbPropConfigEntry;
137
- readonly poll_end_time_receiving_enabled: AbPropConfigEntry;
138
- readonly poll_hide_voters_enabled: AbPropConfigEntry;
139
- readonly poll_hide_voters_receiving_enabled: AbPropConfigEntry;
140
- readonly text_status_ttl_seconds_allowlist: AbPropConfigEntry;
141
- readonly username_enabled_on_companion: AbPropConfigEntry;
142
- readonly username_max_length: AbPropConfigEntry;
143
- readonly username_min_length: AbPropConfigEntry;
144
- readonly wa_individual_new_chat_msg_capping_enabled: AbPropConfigEntry;
145
- readonly wa_individual_new_chat_msg_capping_limit: AbPropConfigEntry;
146
- readonly wa_individual_new_chat_msg_capping_fetch_ttl_seconds: AbPropConfigEntry;
147
- readonly enable_web_calling: AbPropConfigEntry;
148
- readonly calling_lid_version: AbPropConfigEntry;
149
- }>;
150
- export type AbPropName = keyof typeof AB_PROP_CONFIGS;
151
- export declare function resolveAbPropNameByCode(configCode: number): AbPropName | undefined;
23
+ /** `WA_ABPROPS` with `code` renamed to `configCode`, literal types preserved. */
24
+ type LegacyAbPropConfigView = {
25
+ readonly [K in AbPropName]: {
26
+ readonly configCode: (typeof WA_ABPROPS)[K]['code'];
27
+ readonly type: (typeof WA_ABPROPS)[K]['type'];
28
+ readonly defaultValue: (typeof WA_ABPROPS)[K]['defaultValue'];
29
+ };
30
+ };
31
+ /**
32
+ * @deprecated Use `WA_ABPROPS`.
33
+ *
34
+ * Covers every user prop rather than the curated subset it replaced, with a
35
+ * handful of config codes corrected. Group props stay in `WA_GROUP_ABPROPS`.
36
+ */
37
+ export declare const AB_PROP_CONFIGS: LegacyAbPropConfigView;
38
+ export {};
@@ -1,173 +1,28 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AB_PROP_CONFIGS = exports.WA_ABPROPS_REFRESH_BOUNDS = exports.WA_ABPROPS_PROTOCOL_VERSION = void 0;
4
- exports.resolveAbPropNameByCode = resolveAbPropNameByCode;
4
+ const _abprops_spec_1 = require("../abprops-spec");
5
5
  exports.WA_ABPROPS_PROTOCOL_VERSION = '1';
6
6
  exports.WA_ABPROPS_REFRESH_BOUNDS = Object.freeze({
7
7
  MIN_S: 600,
8
8
  MAX_S: 604800,
9
9
  DEFAULT_S: 86400
10
10
  });
11
- function prop(configCode, type, defaultValue) {
12
- return { configCode, type, defaultValue };
13
- }
14
- exports.AB_PROP_CONFIGS = Object.freeze({
15
- // --- app state sync (syncd) ---
16
- syncd_key_max_use_days: prop(5498, 'int', 90),
17
- syncd_wait_for_key_timeout_days: prop(5499, 'int', 30),
18
- syncd_sentinel_timeout_seconds: prop(5500, 'int', 60),
19
- syncd_inline_mutations_max_count: prop(5501, 'int', 1000),
20
- syncd_patch_protobuf_max_size: prop(5502, 'int', 1048576),
21
- syncd_additional_mutations_count: prop(2777, 'int', 1),
22
- syncd_periodic_sync_days: prop(1400, 'int', 0),
23
- syncd_mutation_and_bundle_logging: prop(11821, 'string', '{"allowlist": []}'),
24
- wa_web_enable_syncd_key_persistence_only_after_server_ack: prop(27069, 'bool', false),
25
- web_request_missing_keys_for_removes: prop(11695, 'bool', false),
26
- web_syncd_max_mutations_to_process_during_resume: prop(15808, 'int', 10000),
27
- web_syncd_fatal_fields_from_L1104589PRV2: prop(1808, 'bool', false),
28
- web_enable_improved_bulk_merge: prop(19854, 'bool', false),
29
- snapshot_recovery_max_mutations_count_allowed: prop(18786, 'int', 2000),
30
- md_syncd_logging_spec_enabled: prop(14499, 'bool', false),
31
- kmp_syncd_engine_crypto_enabled: prop(15909, 'bool', false),
32
- enable_syncd_debug_data_in_patch: prop(6614, 'bool', false),
33
- enable_mention_everyone_syncd_sender: prop(24244, 'bool', false),
34
- username_contact_syncd_support_enable: prop(17614, 'bool', false),
35
- // --- newsletter ToS / NUX notice ids ---
36
- newsletter_tos_notice_id: prop(3810, 'string', '20601216'),
37
- newsletter_tos_notice_id_smb_web: prop(5597, 'string', '20601216'),
38
- newsletter_creation_tos_id: prop(3834, 'string', '20601217'),
39
- newsletter_creation_tos_id_smb_web: prop(5598, 'string', '20601217'),
40
- newsletter_admin_invite_tos_id: prop(6498, 'string', '20610101'),
41
- newsletter_admin_invite_tos_id_smb_web: prop(6536, 'string', '20610104'),
42
- newsletter_creation_nux_id: prop(3835, 'string', '20601218'),
43
- newsletter_nux_notice_id: prop(15255, 'string', '20610210'),
44
- newsletter_admin_invite_nux_id: prop(15256, 'string', '20610220'),
45
- // --- message sending / encryption ---
46
- after_read_sending_enabled: prop(7293, 'bool', false),
47
- after_read_fallback_duration: prop(7294, 'int', 86400),
48
- after_read_receiver_enabled: prop(7295, 'bool', false),
49
- privacy_token_sending_on_all_1_on_1_messages: prop(9281, 'bool', false),
50
- flows_termination_message_v2_sending_enabled: prop(9157, 'bool', false),
51
- dm_initiator_trigger_groups: prop(7141, 'bool', false),
52
- placeholder_message_resend_maximum_days_limit: prop(3639, 'int', 14),
53
- message_edit_to_message_secret_sender_enabled: prop(16057, 'bool', false),
54
- message_edit_to_message_secret_receiver_enabled: prop(17811, 'bool', false),
55
- top_level_message_secret_check: prop(23796, 'bool', false),
56
- parse_encrypted_dsm_msg_fix: prop(26772, 'bool', false),
57
- rt_sender_dual_encrypted_msg_enabled: prop(12623, 'bool', true),
58
- rt_receiver_dual_encrypted_msg_enabled: prop(15258, 'bool', true),
59
- lid_one_to_one_migration_event_response_force_pn_jid: prop(15791, 'bool', false),
60
- web_anr_async_msg_send_handler: prop(27249, 'bool', false),
61
- message_keys_async_chunk_size: prop(22815, 'int', 50),
62
- synced_message_keys_processing_type: prop(22825, 'string', 'control'),
63
- limit_sharing_protocol_message_receiver_enabled: prop(15129, 'bool', false),
64
- web_pnless_stanzas: prop(26211, 'bool', false),
65
- // --- NCT tokens ---
66
- wa_nct_token_send_enabled: prop(24941, 'bool', false),
67
- wa_nct_token_syncd_enabled: prop(25253, 'bool', false),
68
- wa_nct_token_history_sync_enabled: prop(25189, 'bool', false),
69
- // --- group ---
70
- community_announcement_group_size_limit: prop(2774, 'int', 5000),
71
- group_size_limit: prop(1304, 'int', 257),
72
- group_max_subject: prop(3597, 'int', 100),
73
- group_description_length: prop(14778, 'int', 2048),
74
- anyone_can_link_to_groups: prop(3978, 'bool', false),
75
- group_call_max_participants: prop(4190, 'int', 32),
76
- group_history_receive: prop(15311, 'bool', false),
77
- group_history_send: prop(15313, 'bool', false),
78
- group_history_settings: prop(21261, 'bool', false),
79
- group_history_settings_query: prop(22230, 'bool', false),
80
- group_history_message_count_limit: prop(18405, 'int', 100),
81
- group_history_message_count_receiver_upper_limit: prop(19811, 'int', 100),
82
- group_history_messages_time_limit_receiver_enforcement_secs: prop(21313, 'int', 1209600),
83
- group_history_bundle_time_limit_receiver_enforcement_secs: prop(25910, 'int', 1209600),
84
- group_history_notice_receive: prop(15722, 'bool', false),
85
- group_history_out_of_window_pin_sender: prop(26037, 'bool', false),
86
- group_history_out_of_window_pins_receiver: prop(26039, 'bool', false),
87
- group_history_reporting: prop(22329, 'bool', true),
88
- group_create_add_using_lid_jids: prop(16192, 'bool', false),
89
- group_member_updates_hide_in_thread_enabled: prop(24584, 'bool', false),
90
- group_status_receiver_enabled: prop(13956, 'bool', false),
91
- web_send_invisible_msg_max_group_size: prop(13289, 'int', 256),
92
- web_send_invisible_msg_min_group_size: prop(13290, 'int', 50),
93
- admin_only_mention_everyone_group_size: prop(18500, 'int', 0),
94
- // --- history sync ---
95
- web_abprop_drop_full_history_sync: prop(13034, 'bool', false),
96
- wa_web_history_sync_dynamic_throttling: prop(19110, 'bool', true),
97
- web_e2e_backfill_expire_time: prop(3234, 'int', 5),
98
- history_sync_on_demand: prop(3337, 'bool', false),
99
- history_sync_on_demand_message_count: prop(3811, 'int', 50),
100
- history_sync_on_demand_failure_limit: prop(4364, 'int', 10),
101
- history_sync_on_demand_cooldown_sec: prop(4365, 'int', 7200),
102
- history_sync_on_demand_complete_companion: prop(21024, 'bool', false),
103
- history_sync_on_demand_with_android_beta: prop(4135, 'bool', false),
104
- web_anr_throttle_history_sync_db_writes: prop(19298, 'bool', false),
105
- web_force_lid_chats_in_history: prop(24343, 'bool', false),
106
- web_history_sync_allow_duplicate_in_bulk_error: prop(10842, 'bool', false),
107
- // --- media ---
108
- default_media_limit_mb: prop(3660, 'int', 16),
109
- web_image_max_edge: prop(10371, 'int', 1600),
110
- web_image_max_hd_edge: prop(3204, 'int', 2560),
111
- web_channel_video_server_transcode_upload: prop(19920, 'bool', false),
112
- web_deprecate_mms4_hash_based_download: prop(3152, 'bool', false),
113
- kaleidoscope_thumbnail_validation: prop(18114, 'bool', false),
114
- web_use_kaleidoscope_media_check_enabled: prop(20375, 'bool', false),
115
- low_cache_hit_rate_media_types: prop(4836, 'string', 'ptt,audio,document,ppic'),
116
- web_anr_async_media_decryption_enabled: prop(23200, 'bool', false),
117
- web_anr_media_chunk_enc_delay_enabled: prop(22931, 'bool', false),
118
- web_media_compute_in_worker_enabled: prop(25641, 'bool', false),
119
- // --- device management / auth ---
120
- adv_accept_hosted_devices: prop(6939, 'bool', false),
121
- num_days_key_index_list_expiration: prop(730, 'int', 35),
122
- num_days_before_device_expiry_check: prop(731, 'int', 7),
123
- web_adv_logout_on_self_device_list_expired: prop(11011, 'bool', false),
124
- md_icdc_hash_length: prop(310, 'int', 10),
125
- noise_pq_mode: prop(20161, 'int', 0),
126
- // --- trusted contacts / privacy tokens ---
127
- tctoken_duration: prop(865, 'int', 604800),
128
- tctoken_num_buckets: prop(909, 'int', 4),
129
- tctoken_num_buckets_sender: prop(997, 'int', 4),
130
- tctoken_duration_sender: prop(996, 'int', 604800),
131
- // --- connection / offline ---
132
- heartbeat_interval_s: prop(1430, 'int', 10),
133
- web_offline_message_processor_timeout_seconds: prop(12834, 'int', 15),
134
- web_offline_resume_wait_for_ping_response_enabled: prop(14567, 'bool', false),
135
- web_offline_resume_wait_for_ping_timeout_seconds: prop(14568, 'int', 5),
136
- web_comms_socket_reconnect_enabled: prop(7854, 'bool', false),
137
- // --- receipts ---
138
- web_resume_optimized_read_receipt_send_interval: prop(13978, 'int', 3000),
139
- web_reaction_inactive_receipt: prop(25954, 'bool', false),
140
- lid_status_non_soaked_client_support_enabled: prop(19696, 'bool', true),
141
- // --- signal protocol ---
142
- s567418_mitigation_enabled: prop(22029, 'bool', true),
143
- web_signal_future_messages_max: prop(12509, 'int', 20000),
144
- // --- polls ---
145
- poll_add_option_enabled: prop(24517, 'bool', false),
146
- poll_add_option_receiving_enabled: prop(25758, 'int', 0),
147
- poll_creator_edit_enabled: prop(24887, 'bool', false),
148
- poll_creator_edit_receiving_version: prop(24886, 'int', 0),
149
- poll_end_time_enabled: prop(24405, 'bool', false),
150
- poll_end_time_receiving_enabled: prop(24884, 'bool', false),
151
- poll_hide_voters_enabled: prop(24518, 'bool', false),
152
- poll_hide_voters_receiving_enabled: prop(24885, 'int', 0),
153
- // --- status / ephemeral ---
154
- text_status_ttl_seconds_allowlist: prop(6153, 'string', '1800,3600,7200,14400,28800,86400'),
155
- // --- username ---
156
- username_enabled_on_companion: prop(23817, 'bool', false),
157
- username_max_length: prop(20459, 'int', 35),
158
- username_min_length: prop(20494, 'int', 3),
159
- // --- message capping ---
160
- wa_individual_new_chat_msg_capping_enabled: prop(20865, 'bool', false),
161
- wa_individual_new_chat_msg_capping_limit: prop(17845, 'int', 0),
162
- wa_individual_new_chat_msg_capping_fetch_ttl_seconds: prop(20649, 'int', 3600),
163
- // --- calling ---
164
- enable_web_calling: prop(15461, 'bool', false),
165
- calling_lid_version: prop(3358, 'int', 0)
166
- });
167
- const CONFIG_CODE_TO_NAME = new Map();
168
- for (const [name, entry] of Object.entries(exports.AB_PROP_CONFIGS)) {
169
- CONFIG_CODE_TO_NAME.set(entry.configCode, name);
170
- }
171
- function resolveAbPropNameByCode(configCode) {
172
- return CONFIG_CODE_TO_NAME.get(configCode);
11
+ /**
12
+ * @deprecated Use `WA_ABPROPS`.
13
+ *
14
+ * Covers every user prop rather than the curated subset it replaced, with a
15
+ * handful of config codes corrected. Group props stay in `WA_GROUP_ABPROPS`.
16
+ */
17
+ exports.AB_PROP_CONFIGS = buildLegacyConfigView();
18
+ function buildLegacyConfigView() {
19
+ const view = {};
20
+ for (const [name, entry] of Object.entries(_abprops_spec_1.WA_ABPROPS)) {
21
+ view[name] = Object.freeze({
22
+ configCode: entry.code,
23
+ type: entry.type,
24
+ defaultValue: entry.defaultValue
25
+ });
26
+ }
27
+ return Object.freeze(view);
173
28
  }
@@ -7,7 +7,7 @@ export type { WaConnectionCode, WaConnectionOpenReason, WaDisconnectReason, WaFa
7
7
  export { WA_IQ_TYPES, WA_NODE_TAGS, WA_XMLNS } from './nodes';
8
8
  export { WA_CALL_CHILD_TAGS, WA_CALL_NODE_ATTRS, WA_CALL_PAYLOAD_TAGS, WA_CALL_RECEIPT_PAYLOAD_TAGS } from './call';
9
9
  export type { WaCallPayloadTag } from './call';
10
- export { WA_ADDRESSING_MODES, WA_EDIT_ATTRS, WA_ENC_CIPHERTEXT_TYPES, WA_ENC_MEDIA_TYPES, WA_EVENT_META_TYPES, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_NACK_REASONS, WA_POLL_META_TYPES, WA_RETRYABLE_ACK_CODES, WA_STANZA_MSG_TYPES } from './message';
10
+ export { normalizeEphemeralSettingSeconds, WA_ADDRESSING_MODES, WA_EDIT_ATTRS, WA_ENC_CIPHERTEXT_TYPES, WA_ENC_MEDIA_TYPES, WA_EVENT_META_TYPES, WA_MESSAGE_TAGS, WA_MESSAGE_TYPES, WA_NACK_REASONS, WA_POLL_META_TYPES, WA_RETRYABLE_ACK_CODES, WA_STANZA_MSG_TYPES } from './message';
11
11
  export type { WaAddressingMode, WaEncCiphertextType, WaOutboundReceiptType } from './message';
12
12
  export { WA_APP_STATE_COLLECTIONS, WA_APP_STATE_COLLECTION_STATES, WA_APP_STATE_ERROR_CODES, WA_APP_STATE_KDF_INFO, WA_APP_STATE_KEY_TYPES, WA_APP_STATE_SYNC_DATA_TYPE } from './appstate';
13
13
  export { getWaMediaHkdfInfo, WA_MEDIA_HKDF_INFO, WA_PREVIEW_MEDIA_HKDF_INFO } from './media';
@@ -18,7 +18,7 @@ export type { WaBusinessHoursDay, WaBusinessHoursMode } from './business';
18
18
  export { WA_CHATSTATE_MEDIA, WA_PRESENCE_LAST_SENTINELS, WA_PRESENCE_TYPES } from './presence';
19
19
  export type { WaChatstateMedia, WaPresenceLastSentinel, WaPresenceType } from './presence';
20
20
  export { WA_PRIVACY_TOKEN_NOTIFICATION_TYPE, WA_PRIVACY_TOKEN_TAGS, WA_PRIVACY_TOKEN_TYPES, WA_TC_TOKEN_DEFAULTS } from './privacy-token';
21
- export { WA_PRIVACY_CATEGORIES, WA_PRIVACY_CATEGORY_TO_SETTING, WA_PRIVACY_DISALLOWED_LIST_CATEGORIES, WA_PRIVACY_SETTING_TO_CATEGORY, WA_PRIVACY_TAGS, WA_PRIVACY_VALUES } from './privacy';
21
+ export { WA_PRIVACY_ACCOUNT_SYNC_DISALLOWED_LISTS, WA_PRIVACY_CATEGORIES, WA_PRIVACY_CATEGORY_TO_SETTING, WA_PRIVACY_DHASH_NONE, WA_PRIVACY_DISALLOWED_LIST_CATEGORIES, WA_PRIVACY_LIST_ACTIONS, WA_PRIVACY_SETTING_TO_CATEGORY, WA_PRIVACY_SETTING_VALUES, WA_PRIVACY_TAGS, WA_PRIVACY_VALUES } from './privacy';
22
22
  export type { WaPrivacyCategory, WaPrivacySettingName, WaPrivacyValue } from './privacy';
23
23
  export { WA_DEFAULTS } from './defaults';
24
24
  export { WA_BIZ_BOT_TYPES, WA_BOT_DEFAULT_CAPABILITIES, WA_BOT_HKDF_INFO, WA_BOT_KNOWN_JIDS, WA_BOT_MSG_BODY_TYPES, WA_BOT_MSG_EDIT_TYPES, WA_BOT_MSG_SECRET_BYTES, WA_BOT_NODE_ATTRS, WA_META_NODE_ATTRS_BOT } from './bot';
@@ -27,7 +27,8 @@ export { WA_STATUS_DISTRIBUTION_SETTINGS } from './status';
27
27
  export type { WaStatusDistributionSetting } from './status';
28
28
  export { WA_EMAIL_CONTEXTS, WA_EMAIL_ERROR_CODES, WA_EMAIL_LIMITS, WA_EMAIL_TAGS, WA_EMAIL_XMLNS } from './email';
29
29
  export type { WaEmailContext, WaEmailErrorCode } from './email';
30
- export { AB_PROP_CONFIGS, resolveAbPropNameByCode, WA_ABPROPS_PROTOCOL_VERSION, WA_ABPROPS_REFRESH_BOUNDS } from './abprops';
30
+ export { resolveAbPropNameByCode } from '../abprops-spec';
31
+ export { AB_PROP_CONFIGS, WA_ABPROPS_PROTOCOL_VERSION, WA_ABPROPS_REFRESH_BOUNDS } from './abprops';
31
32
  export type { AbPropConfigEntry, AbPropName, AbPropType, AbPropValue } from './abprops';
32
33
  export { WA_GROUP_MEMBERSHIP_ACTION_TAGS, WA_GROUP_PARTICIPANT_TYPES, type WaGroupSetting } from './group';
33
34
  export { WA_USYNC_CONTEXTS, WA_USYNC_DEFAULTS, WA_USYNC_MODES } from './usync';
@@ -1,7 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WA_BUSINESS_HOURS_DAYS = exports.WA_REGISTRATION_NOTIFICATION_TAGS = exports.WA_NOTIFICATION_TYPES = exports.WA_NEWSLETTER_NOTIFICATION_TAGS = exports.WA_GROUP_NOTIFICATION_TAGS = exports.WA_BUSINESS_NOTIFICATION_TAGS = exports.WA_SUPPORTED_DIRTY_TYPES = exports.WA_DIRTY_TYPES = exports.WA_DIRTY_PROTOCOLS = exports.WA_ACCOUNT_SYNC_PROTOCOLS = exports.WA_PREVIEW_MEDIA_HKDF_INFO = exports.WA_MEDIA_HKDF_INFO = exports.getWaMediaHkdfInfo = exports.WA_APP_STATE_SYNC_DATA_TYPE = exports.WA_APP_STATE_KEY_TYPES = exports.WA_APP_STATE_KDF_INFO = exports.WA_APP_STATE_ERROR_CODES = exports.WA_APP_STATE_COLLECTION_STATES = exports.WA_APP_STATE_COLLECTIONS = exports.WA_STANZA_MSG_TYPES = exports.WA_RETRYABLE_ACK_CODES = exports.WA_POLL_META_TYPES = exports.WA_NACK_REASONS = exports.WA_MESSAGE_TYPES = exports.WA_MESSAGE_TAGS = exports.WA_EVENT_META_TYPES = exports.WA_ENC_MEDIA_TYPES = exports.WA_ENC_CIPHERTEXT_TYPES = exports.WA_EDIT_ATTRS = exports.WA_ADDRESSING_MODES = exports.WA_CALL_RECEIPT_PAYLOAD_TAGS = exports.WA_CALL_PAYLOAD_TAGS = exports.WA_CALL_NODE_ATTRS = exports.WA_CALL_CHILD_TAGS = exports.WA_XMLNS = exports.WA_NODE_TAGS = exports.WA_IQ_TYPES = exports.WA_STREAM_SIGNALING = exports.WA_READY_STATES = exports.WA_LOGOUT_REASONS = exports.WA_FAILURE_REASONS = exports.WA_DISCONNECT_REASONS = exports.WA_CONNECTION_REASONS = exports.WA_PAIRING_KDF_INFO = exports.WA_SIGNALING = exports.resolveWaDeviceIdentity = exports.WA_COMPANION_PLATFORM_IDS = exports.WA_BROWSERS = exports.getWaCompanionPlatformId = exports.getWaBrowserDisplayName = void 0;
4
- exports.WA_NEWSLETTER_VIEW_ROLES = exports.WA_NEWSLETTER_VERIFICATION_STATES = exports.WA_NEWSLETTER_STATE_TYPES = exports.WA_NEWSLETTER_SEND_TYPES = exports.WA_NEWSLETTER_ROLES = exports.WA_NEWSLETTER_RECEIVE_TYPES = exports.WA_NEWSLETTER_PICTURE_TYPES = exports.WA_NEWSLETTER_MUTE_VALUES = exports.WA_NEWSLETTER_MUTE_TYPES = exports.WA_NEWSLETTER_FETCH_KEY_TYPES = exports.WA_USYNC_MODES = exports.WA_USYNC_DEFAULTS = exports.WA_USYNC_CONTEXTS = exports.WA_GROUP_PARTICIPANT_TYPES = exports.WA_GROUP_MEMBERSHIP_ACTION_TAGS = exports.WA_ABPROPS_REFRESH_BOUNDS = exports.WA_ABPROPS_PROTOCOL_VERSION = exports.resolveAbPropNameByCode = exports.AB_PROP_CONFIGS = exports.WA_EMAIL_XMLNS = exports.WA_EMAIL_TAGS = exports.WA_EMAIL_LIMITS = exports.WA_EMAIL_ERROR_CODES = exports.WA_EMAIL_CONTEXTS = exports.WA_STATUS_DISTRIBUTION_SETTINGS = exports.WA_META_NODE_ATTRS_BOT = exports.WA_BOT_NODE_ATTRS = exports.WA_BOT_MSG_SECRET_BYTES = exports.WA_BOT_MSG_EDIT_TYPES = exports.WA_BOT_MSG_BODY_TYPES = exports.WA_BOT_KNOWN_JIDS = exports.WA_BOT_HKDF_INFO = exports.WA_BOT_DEFAULT_CAPABILITIES = exports.WA_BIZ_BOT_TYPES = exports.WA_DEFAULTS = exports.WA_PRIVACY_VALUES = exports.WA_PRIVACY_TAGS = exports.WA_PRIVACY_SETTING_TO_CATEGORY = exports.WA_PRIVACY_DISALLOWED_LIST_CATEGORIES = exports.WA_PRIVACY_CATEGORY_TO_SETTING = exports.WA_PRIVACY_CATEGORIES = exports.WA_TC_TOKEN_DEFAULTS = exports.WA_PRIVACY_TOKEN_TYPES = exports.WA_PRIVACY_TOKEN_TAGS = exports.WA_PRIVACY_TOKEN_NOTIFICATION_TYPE = exports.WA_PRESENCE_TYPES = exports.WA_PRESENCE_LAST_SENTINELS = exports.WA_CHATSTATE_MEDIA = exports.WA_BUSINESS_HOURS_MODES = void 0;
3
+ exports.WA_REGISTRATION_NOTIFICATION_TAGS = exports.WA_NOTIFICATION_TYPES = exports.WA_NEWSLETTER_NOTIFICATION_TAGS = exports.WA_GROUP_NOTIFICATION_TAGS = exports.WA_BUSINESS_NOTIFICATION_TAGS = exports.WA_SUPPORTED_DIRTY_TYPES = exports.WA_DIRTY_TYPES = exports.WA_DIRTY_PROTOCOLS = exports.WA_ACCOUNT_SYNC_PROTOCOLS = exports.WA_PREVIEW_MEDIA_HKDF_INFO = exports.WA_MEDIA_HKDF_INFO = exports.getWaMediaHkdfInfo = exports.WA_APP_STATE_SYNC_DATA_TYPE = exports.WA_APP_STATE_KEY_TYPES = exports.WA_APP_STATE_KDF_INFO = exports.WA_APP_STATE_ERROR_CODES = exports.WA_APP_STATE_COLLECTION_STATES = exports.WA_APP_STATE_COLLECTIONS = exports.WA_STANZA_MSG_TYPES = exports.WA_RETRYABLE_ACK_CODES = exports.WA_POLL_META_TYPES = exports.WA_NACK_REASONS = exports.WA_MESSAGE_TYPES = exports.WA_MESSAGE_TAGS = exports.WA_EVENT_META_TYPES = exports.WA_ENC_MEDIA_TYPES = exports.WA_ENC_CIPHERTEXT_TYPES = exports.WA_EDIT_ATTRS = exports.WA_ADDRESSING_MODES = exports.normalizeEphemeralSettingSeconds = exports.WA_CALL_RECEIPT_PAYLOAD_TAGS = exports.WA_CALL_PAYLOAD_TAGS = exports.WA_CALL_NODE_ATTRS = exports.WA_CALL_CHILD_TAGS = exports.WA_XMLNS = exports.WA_NODE_TAGS = exports.WA_IQ_TYPES = exports.WA_STREAM_SIGNALING = exports.WA_READY_STATES = exports.WA_LOGOUT_REASONS = exports.WA_FAILURE_REASONS = exports.WA_DISCONNECT_REASONS = exports.WA_CONNECTION_REASONS = exports.WA_PAIRING_KDF_INFO = exports.WA_SIGNALING = exports.resolveWaDeviceIdentity = exports.WA_COMPANION_PLATFORM_IDS = exports.WA_BROWSERS = exports.getWaCompanionPlatformId = exports.getWaBrowserDisplayName = void 0;
4
+ exports.WA_NEWSLETTER_ROLES = exports.WA_NEWSLETTER_RECEIVE_TYPES = exports.WA_NEWSLETTER_PICTURE_TYPES = exports.WA_NEWSLETTER_MUTE_VALUES = exports.WA_NEWSLETTER_MUTE_TYPES = exports.WA_NEWSLETTER_FETCH_KEY_TYPES = exports.WA_USYNC_MODES = exports.WA_USYNC_DEFAULTS = exports.WA_USYNC_CONTEXTS = exports.WA_GROUP_PARTICIPANT_TYPES = exports.WA_GROUP_MEMBERSHIP_ACTION_TAGS = exports.WA_ABPROPS_REFRESH_BOUNDS = exports.WA_ABPROPS_PROTOCOL_VERSION = exports.AB_PROP_CONFIGS = exports.resolveAbPropNameByCode = exports.WA_EMAIL_XMLNS = exports.WA_EMAIL_TAGS = exports.WA_EMAIL_LIMITS = exports.WA_EMAIL_ERROR_CODES = exports.WA_EMAIL_CONTEXTS = exports.WA_STATUS_DISTRIBUTION_SETTINGS = exports.WA_META_NODE_ATTRS_BOT = exports.WA_BOT_NODE_ATTRS = exports.WA_BOT_MSG_SECRET_BYTES = exports.WA_BOT_MSG_EDIT_TYPES = exports.WA_BOT_MSG_BODY_TYPES = exports.WA_BOT_KNOWN_JIDS = exports.WA_BOT_HKDF_INFO = exports.WA_BOT_DEFAULT_CAPABILITIES = exports.WA_BIZ_BOT_TYPES = exports.WA_DEFAULTS = exports.WA_PRIVACY_VALUES = exports.WA_PRIVACY_TAGS = exports.WA_PRIVACY_SETTING_VALUES = exports.WA_PRIVACY_SETTING_TO_CATEGORY = exports.WA_PRIVACY_LIST_ACTIONS = exports.WA_PRIVACY_DISALLOWED_LIST_CATEGORIES = exports.WA_PRIVACY_DHASH_NONE = exports.WA_PRIVACY_CATEGORY_TO_SETTING = exports.WA_PRIVACY_CATEGORIES = exports.WA_PRIVACY_ACCOUNT_SYNC_DISALLOWED_LISTS = exports.WA_TC_TOKEN_DEFAULTS = exports.WA_PRIVACY_TOKEN_TYPES = exports.WA_PRIVACY_TOKEN_TAGS = exports.WA_PRIVACY_TOKEN_NOTIFICATION_TYPE = exports.WA_PRESENCE_TYPES = exports.WA_PRESENCE_LAST_SENTINELS = exports.WA_CHATSTATE_MEDIA = exports.WA_BUSINESS_HOURS_MODES = exports.WA_BUSINESS_HOURS_DAYS = void 0;
5
+ exports.WA_NEWSLETTER_VIEW_ROLES = exports.WA_NEWSLETTER_VERIFICATION_STATES = exports.WA_NEWSLETTER_STATE_TYPES = exports.WA_NEWSLETTER_SEND_TYPES = void 0;
5
6
  var browser_1 = require("./browser");
6
7
  Object.defineProperty(exports, "getWaBrowserDisplayName", { enumerable: true, get: function () { return browser_1.getWaBrowserDisplayName; } });
7
8
  Object.defineProperty(exports, "getWaCompanionPlatformId", { enumerable: true, get: function () { return browser_1.getWaCompanionPlatformId; } });
@@ -29,6 +30,7 @@ Object.defineProperty(exports, "WA_CALL_NODE_ATTRS", { enumerable: true, get: fu
29
30
  Object.defineProperty(exports, "WA_CALL_PAYLOAD_TAGS", { enumerable: true, get: function () { return call_1.WA_CALL_PAYLOAD_TAGS; } });
30
31
  Object.defineProperty(exports, "WA_CALL_RECEIPT_PAYLOAD_TAGS", { enumerable: true, get: function () { return call_1.WA_CALL_RECEIPT_PAYLOAD_TAGS; } });
31
32
  var message_1 = require("./message");
33
+ Object.defineProperty(exports, "normalizeEphemeralSettingSeconds", { enumerable: true, get: function () { return message_1.normalizeEphemeralSettingSeconds; } });
32
34
  Object.defineProperty(exports, "WA_ADDRESSING_MODES", { enumerable: true, get: function () { return message_1.WA_ADDRESSING_MODES; } });
33
35
  Object.defineProperty(exports, "WA_EDIT_ATTRS", { enumerable: true, get: function () { return message_1.WA_EDIT_ATTRS; } });
34
36
  Object.defineProperty(exports, "WA_ENC_CIPHERTEXT_TYPES", { enumerable: true, get: function () { return message_1.WA_ENC_CIPHERTEXT_TYPES; } });
@@ -75,10 +77,14 @@ Object.defineProperty(exports, "WA_PRIVACY_TOKEN_TAGS", { enumerable: true, get:
75
77
  Object.defineProperty(exports, "WA_PRIVACY_TOKEN_TYPES", { enumerable: true, get: function () { return privacy_token_1.WA_PRIVACY_TOKEN_TYPES; } });
76
78
  Object.defineProperty(exports, "WA_TC_TOKEN_DEFAULTS", { enumerable: true, get: function () { return privacy_token_1.WA_TC_TOKEN_DEFAULTS; } });
77
79
  var privacy_1 = require("./privacy");
80
+ Object.defineProperty(exports, "WA_PRIVACY_ACCOUNT_SYNC_DISALLOWED_LISTS", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_ACCOUNT_SYNC_DISALLOWED_LISTS; } });
78
81
  Object.defineProperty(exports, "WA_PRIVACY_CATEGORIES", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_CATEGORIES; } });
79
82
  Object.defineProperty(exports, "WA_PRIVACY_CATEGORY_TO_SETTING", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_CATEGORY_TO_SETTING; } });
83
+ Object.defineProperty(exports, "WA_PRIVACY_DHASH_NONE", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_DHASH_NONE; } });
80
84
  Object.defineProperty(exports, "WA_PRIVACY_DISALLOWED_LIST_CATEGORIES", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_DISALLOWED_LIST_CATEGORIES; } });
85
+ Object.defineProperty(exports, "WA_PRIVACY_LIST_ACTIONS", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_LIST_ACTIONS; } });
81
86
  Object.defineProperty(exports, "WA_PRIVACY_SETTING_TO_CATEGORY", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_SETTING_TO_CATEGORY; } });
87
+ Object.defineProperty(exports, "WA_PRIVACY_SETTING_VALUES", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_SETTING_VALUES; } });
82
88
  Object.defineProperty(exports, "WA_PRIVACY_TAGS", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_TAGS; } });
83
89
  Object.defineProperty(exports, "WA_PRIVACY_VALUES", { enumerable: true, get: function () { return privacy_1.WA_PRIVACY_VALUES; } });
84
90
  var defaults_1 = require("./defaults");
@@ -101,9 +107,10 @@ Object.defineProperty(exports, "WA_EMAIL_ERROR_CODES", { enumerable: true, get:
101
107
  Object.defineProperty(exports, "WA_EMAIL_LIMITS", { enumerable: true, get: function () { return email_1.WA_EMAIL_LIMITS; } });
102
108
  Object.defineProperty(exports, "WA_EMAIL_TAGS", { enumerable: true, get: function () { return email_1.WA_EMAIL_TAGS; } });
103
109
  Object.defineProperty(exports, "WA_EMAIL_XMLNS", { enumerable: true, get: function () { return email_1.WA_EMAIL_XMLNS; } });
110
+ var _abprops_spec_1 = require("../abprops-spec");
111
+ Object.defineProperty(exports, "resolveAbPropNameByCode", { enumerable: true, get: function () { return _abprops_spec_1.resolveAbPropNameByCode; } });
104
112
  var abprops_1 = require("./abprops");
105
113
  Object.defineProperty(exports, "AB_PROP_CONFIGS", { enumerable: true, get: function () { return abprops_1.AB_PROP_CONFIGS; } });
106
- Object.defineProperty(exports, "resolveAbPropNameByCode", { enumerable: true, get: function () { return abprops_1.resolveAbPropNameByCode; } });
107
114
  Object.defineProperty(exports, "WA_ABPROPS_PROTOCOL_VERSION", { enumerable: true, get: function () { return abprops_1.WA_ABPROPS_PROTOCOL_VERSION; } });
108
115
  Object.defineProperty(exports, "WA_ABPROPS_REFRESH_BOUNDS", { enumerable: true, get: function () { return abprops_1.WA_ABPROPS_REFRESH_BOUNDS; } });
109
116
  var group_1 = require("./group");
@@ -16,6 +16,12 @@ export declare const WA_DEFAULTS: Readonly<{
16
16
  readonly CHAT_SOCKET_URLS: readonly ["wss://web.whatsapp.com/ws/chat", "wss://web.whatsapp.com:5222/ws/chat"];
17
17
  readonly NOISE_RESUME_FAILURES_BEFORE_FULL_HANDSHAKE: 1;
18
18
  readonly IQ_TIMEOUT_MS: 15000;
19
+ /**
20
+ * Quiet window before an `account_sync` privacy notification triggers the
21
+ * refetch, so flipping several settings in a row on the phone collapses
22
+ * into one refresh instead of one per notification.
23
+ */
24
+ readonly PRIVACY_ACCOUNT_SYNC_DEBOUNCE_MS: 1000;
19
25
  readonly NODE_QUERY_TIMEOUT_MS: 15000;
20
26
  readonly CONNECT_TIMEOUT_MS: 10000;
21
27
  readonly SOCKET_TIMEOUT_MS: 10000;
@@ -20,6 +20,12 @@ exports.WA_DEFAULTS = Object.freeze({
20
20
  CHAT_SOCKET_URLS: ['wss://web.whatsapp.com/ws/chat', 'wss://web.whatsapp.com:5222/ws/chat'],
21
21
  NOISE_RESUME_FAILURES_BEFORE_FULL_HANDSHAKE: 1,
22
22
  IQ_TIMEOUT_MS: 15000,
23
+ /**
24
+ * Quiet window before an `account_sync` privacy notification triggers the
25
+ * refetch, so flipping several settings in a row on the phone collapses
26
+ * into one refresh instead of one per notification.
27
+ */
28
+ PRIVACY_ACCOUNT_SYNC_DEBOUNCE_MS: 1000,
23
29
  NODE_QUERY_TIMEOUT_MS: 15000,
24
30
  CONNECT_TIMEOUT_MS: 10000,
25
31
  SOCKET_TIMEOUT_MS: 10000,
@@ -10,6 +10,7 @@ export declare const WA_MEDIA_HKDF_INFO: Readonly<{
10
10
  readonly 'md-app-state': NodeJS.NonSharedUint8Array;
11
11
  readonly 'md-msg-hist': NodeJS.NonSharedUint8Array;
12
12
  readonly history: NodeJS.NonSharedUint8Array;
13
+ readonly 'group-history': NodeJS.NonSharedUint8Array;
13
14
  readonly 'sticker-pack': NodeJS.NonSharedUint8Array;
14
15
  readonly 'thumbnail-sticker-pack': NodeJS.NonSharedUint8Array;
15
16
  readonly 'thumbnail-link': NodeJS.NonSharedUint8Array;
@@ -19,6 +19,7 @@ exports.WA_MEDIA_HKDF_INFO = Object.freeze({
19
19
  'md-app-state': bytes_1.TEXT_ENCODER.encode('WhatsApp App State Keys'),
20
20
  'md-msg-hist': HISTORY_KEYS,
21
21
  history: HISTORY_KEYS,
22
+ 'group-history': bytes_1.TEXT_ENCODER.encode('Group History'),
22
23
  'sticker-pack': bytes_1.TEXT_ENCODER.encode('WhatsApp Sticker Pack Keys'),
23
24
  'thumbnail-sticker-pack': bytes_1.TEXT_ENCODER.encode('WhatsApp Sticker Pack Thumbnail Keys'),
24
25
  'thumbnail-link': bytes_1.TEXT_ENCODER.encode('WhatsApp Link Thumbnail Keys')
@@ -115,3 +115,9 @@ export declare const WA_ENC_MEDIA_TYPES: Readonly<{
115
115
  readonly NATIVE_FLOW_RESPONSE: "native_flow_response";
116
116
  readonly GROUP_HISTORY: "group_history";
117
117
  }>;
118
+ /**
119
+ * `ephemeralSettingTimestamp` to Unix seconds. `ContextInfo` uses seconds, the
120
+ * history-sync `Conversation` record milliseconds, and both feed one stored
121
+ * field. Anything past ~year 2286 in seconds can only be a millisecond stamp.
122
+ */
123
+ export declare function normalizeEphemeralSettingSeconds(value: number): number;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WA_ENC_MEDIA_TYPES = exports.WA_EVENT_META_TYPES = exports.WA_POLL_META_TYPES = exports.WA_EDIT_ATTRS = exports.WA_STANZA_MSG_TYPES = exports.WA_NACK_REASONS = exports.WA_RETRYABLE_ACK_CODES = exports.WA_MESSAGE_TYPES = exports.WA_ADDRESSING_MODES = exports.WA_ENC_CIPHERTEXT_TYPES = exports.WA_MESSAGE_TAGS = void 0;
4
+ exports.normalizeEphemeralSettingSeconds = normalizeEphemeralSettingSeconds;
4
5
  exports.WA_MESSAGE_TAGS = Object.freeze({
5
6
  MESSAGE: 'message',
6
7
  ENC: 'enc',
@@ -115,3 +116,11 @@ exports.WA_ENC_MEDIA_TYPES = Object.freeze({
115
116
  NATIVE_FLOW_RESPONSE: 'native_flow_response',
116
117
  GROUP_HISTORY: 'group_history'
117
118
  });
119
+ /**
120
+ * `ephemeralSettingTimestamp` to Unix seconds. `ContextInfo` uses seconds, the
121
+ * history-sync `Conversation` record milliseconds, and both feed one stored
122
+ * field. Anything past ~year 2286 in seconds can only be a millisecond stamp.
123
+ */
124
+ function normalizeEphemeralSettingSeconds(value) {
125
+ return value > 10000000000 ? Math.floor(value / 1000) : value;
126
+ }
@@ -2,6 +2,7 @@ export declare const WA_NOTIFICATION_TYPES: Readonly<{
2
2
  readonly GROUP: "w:gp2";
3
3
  readonly ENCRYPT: "encrypt";
4
4
  readonly DEVICES: "devices";
5
+ readonly ACCOUNT_SYNC: "account_sync";
5
6
  readonly SERVER: "server";
6
7
  readonly REGISTRATION: "registration";
7
8
  readonly NEWSLETTER: "newsletter";
@@ -5,6 +5,7 @@ exports.WA_NOTIFICATION_TYPES = Object.freeze({
5
5
  GROUP: 'w:gp2',
6
6
  ENCRYPT: 'encrypt',
7
7
  DEVICES: 'devices',
8
+ ACCOUNT_SYNC: 'account_sync',
8
9
  SERVER: 'server',
9
10
  REGISTRATION: 'registration',
10
11
  NEWSLETTER: 'newsletter',