@layerzerolabs/protocol-stellar-v2 0.2.12 → 0.2.15

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 (319) hide show
  1. package/.turbo/turbo-build.log +384 -278
  2. package/.turbo/turbo-lint.log +110 -78
  3. package/.turbo/turbo-test.log +1248 -1014
  4. package/Cargo.lock +130 -3
  5. package/Cargo.toml +2 -1
  6. package/contracts/common-macros/src/contract_impl.rs +6 -1
  7. package/contracts/common-macros/src/lib.rs +47 -8
  8. package/contracts/common-macros/src/ownable.rs +7 -25
  9. package/contracts/common-macros/src/storage.rs +1 -1
  10. package/contracts/common-macros/src/tests/contract_impl.rs +5 -0
  11. package/contracts/common-macros/src/tests/mod.rs +1 -0
  12. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +23 -7
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +5 -25
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +48 -48
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -25
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +21 -0
  17. package/contracts/common-macros/src/tests/upgradeable.rs +31 -0
  18. package/contracts/common-macros/src/ttl_configurable.rs +14 -44
  19. package/contracts/common-macros/src/upgradeable.rs +76 -0
  20. package/contracts/endpoint-v2/src/endpoint_v2.rs +25 -1
  21. package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +175 -8
  22. package/contracts/endpoint-v2/src/tests/endpoint_v2/build_outbound_packet.rs +76 -0
  23. package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +342 -159
  24. package/contracts/endpoint-v2/src/tests/endpoint_v2/delegate.rs +3 -15
  25. package/contracts/endpoint-v2/src/tests/endpoint_v2/initializable.rs +20 -31
  26. package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +126 -164
  27. package/contracts/endpoint-v2/src/tests/endpoint_v2/mod.rs +1 -0
  28. package/contracts/endpoint-v2/src/tests/endpoint_v2/native_token.rs +0 -1
  29. package/contracts/endpoint-v2/src/tests/endpoint_v2/owner.rs +0 -1
  30. package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +311 -304
  31. package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +423 -96
  32. package/contracts/endpoint-v2/src/tests/endpoint_v2/recover_token.rs +1 -1
  33. package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +47 -20
  34. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +373 -403
  35. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +96 -22
  36. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +61 -9
  37. package/contracts/endpoint-v2/src/tests/endpoint_v2/transfer_ownership.rs +4 -4
  38. package/contracts/endpoint-v2/src/tests/endpoint_v2/ttl_config.rs +8 -11
  39. package/contracts/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +81 -30
  40. package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +209 -76
  41. package/contracts/endpoint-v2/src/tests/endpoint_v2/zro.rs +0 -1
  42. package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library.rs +24 -0
  43. package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library_timeout.rs +40 -0
  44. package/contracts/endpoint-v2/src/tests/message_lib_manager/default_send_library.rs +24 -0
  45. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_config.rs +108 -0
  46. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_library_index.rs +52 -0
  47. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_receive_library.rs +92 -0
  48. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_registered_libraries.rs +74 -0
  49. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_send_library.rs +83 -0
  50. package/contracts/endpoint-v2/src/tests/message_lib_manager/is_registered_library.rs +32 -0
  51. package/contracts/endpoint-v2/src/tests/message_lib_manager/is_supported_eid.rs +28 -0
  52. package/contracts/endpoint-v2/src/tests/message_lib_manager/is_valid_receive_library.rs +261 -0
  53. package/contracts/endpoint-v2/src/tests/message_lib_manager/mod.rs +16 -0
  54. package/contracts/endpoint-v2/src/tests/message_lib_manager/receive_library_timeout.rs +62 -0
  55. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +65 -43
  56. package/contracts/endpoint-v2/src/tests/message_lib_manager/registered_libraries_count.rs +42 -0
  57. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +61 -0
  58. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +3 -5
  59. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +59 -0
  60. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +15 -1
  61. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_config.rs +155 -51
  62. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +114 -92
  63. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +235 -132
  64. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +93 -87
  65. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +346 -245
  66. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +406 -60
  67. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +252 -78
  68. package/contracts/endpoint-v2/src/tests/message_lib_manager/timeout.rs +102 -0
  69. package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +212 -273
  70. package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +203 -0
  71. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +94 -0
  72. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_nonce.rs +78 -248
  73. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_payload_hash.rs +7 -282
  74. package/contracts/endpoint-v2/src/tests/messaging_channel/lazy_inbound_nonce.rs +6 -274
  75. package/contracts/endpoint-v2/src/tests/messaging_channel/mod.rs +3 -2
  76. package/contracts/endpoint-v2/src/tests/messaging_channel/next_guid.rs +86 -178
  77. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +328 -212
  78. package/contracts/endpoint-v2/src/tests/messaging_channel/outbound.rs +68 -0
  79. package/contracts/endpoint-v2/src/tests/messaging_channel/outbound_nonce.rs +6 -209
  80. package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +207 -159
  81. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +142 -153
  82. package/contracts/endpoint-v2/src/tests/messaging_composer/compose_queue.rs +6 -179
  83. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +163 -221
  84. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +90 -121
  85. package/contracts/endpoint-v2/src/tests/mock.rs +18 -4
  86. package/contracts/endpoint-v2/src/tests/util/build_payload.rs +4 -70
  87. package/contracts/endpoint-v2/src/tests/util/compute_guid.rs +2 -1
  88. package/contracts/endpoint-v2/src/tests/util/keccak256.rs +17 -106
  89. package/contracts/layerzero-views/Cargo.toml +35 -0
  90. package/contracts/layerzero-views/src/errors.rs +10 -0
  91. package/contracts/layerzero-views/src/layerzero_view.rs +229 -0
  92. package/contracts/layerzero-views/src/lib.rs +38 -0
  93. package/contracts/layerzero-views/src/storage.rs +18 -0
  94. package/contracts/layerzero-views/src/tests/layerzero_view_tests.rs +423 -0
  95. package/contracts/layerzero-views/src/tests/mod.rs +4 -0
  96. package/contracts/layerzero-views/src/tests/setup.rs +377 -0
  97. package/contracts/layerzero-views/src/types.rs +50 -0
  98. package/contracts/macro-integration-tests/Cargo.toml +30 -0
  99. package/contracts/macro-integration-tests/src/lib.rs +1 -0
  100. package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +62 -0
  101. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +22 -0
  102. package/contracts/macro-integration-tests/tests/runtime/ownable/only_owner_guard.rs +97 -0
  103. package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +101 -0
  104. package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +225 -0
  105. package/contracts/macro-integration-tests/tests/runtime/storage/mod.rs +4 -0
  106. package/contracts/macro-integration-tests/tests/runtime/storage/name_override_runtime.rs +52 -0
  107. package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +261 -0
  108. package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +137 -0
  109. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +113 -0
  110. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +50 -0
  111. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +139 -0
  112. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +3 -0
  113. package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
  114. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +12 -0
  115. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +7 -0
  116. package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.rs +12 -0
  117. package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.stderr +7 -0
  118. package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.rs +21 -0
  119. package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.stderr +7 -0
  120. package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.rs +13 -0
  121. package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.stderr +7 -0
  122. package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +20 -0
  123. package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +15 -0
  124. package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +16 -0
  125. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.rs +22 -0
  126. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.stderr +16 -0
  127. package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +26 -0
  128. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +22 -0
  129. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_owner_env_param_variants.rs +46 -0
  130. package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.rs +13 -0
  131. package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +7 -0
  132. package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.rs +13 -0
  133. package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +7 -0
  134. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.rs +10 -0
  135. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.stderr +7 -0
  136. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.rs +12 -0
  137. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +7 -0
  138. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.rs +10 -0
  139. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.stderr +7 -0
  140. package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.rs +10 -0
  141. package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.stderr +7 -0
  142. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +12 -0
  143. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +7 -0
  144. package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.rs +13 -0
  145. package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.stderr +7 -0
  146. package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.rs +13 -0
  147. package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.stderr +7 -0
  148. package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +14 -0
  149. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +14 -0
  150. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +16 -0
  151. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +15 -0
  152. package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +14 -0
  153. package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +19 -0
  154. package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +15 -0
  155. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +44 -0
  156. package/contracts/macro-integration-tests/tests/ui_error.rs +11 -0
  157. package/contracts/macro-integration-tests/tests/ui_ownable.rs +11 -0
  158. package/contracts/macro-integration-tests/tests/ui_storage.rs +11 -0
  159. package/contracts/macro-integration-tests/tests/ui_ttl_configurable.rs +12 -0
  160. package/contracts/message-libs/blocked-message-lib/src/lib.rs +17 -17
  161. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +64 -0
  162. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet.rs +58 -0
  163. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet_header.rs +138 -0
  164. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/mod.rs +6 -0
  165. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload.rs +30 -0
  166. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload_hash.rs +15 -0
  167. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/test_helper.rs +39 -0
  168. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_dvn_option.rs +57 -0
  169. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +50 -0
  170. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +74 -0
  171. package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +280 -0
  172. package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +126 -0
  173. package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +48 -0
  174. package/contracts/message-libs/message-lib-common/src/tests/worker_options/mod.rs +7 -0
  175. package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +139 -0
  176. package/contracts/message-libs/message-lib-common/src/worker_options.rs +31 -1
  177. package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +2 -2
  178. package/contracts/message-libs/treasury/src/errors.rs +0 -1
  179. package/contracts/message-libs/treasury/src/lib.rs +3 -3
  180. package/contracts/message-libs/treasury/src/storage.rs +2 -0
  181. package/contracts/message-libs/treasury/src/treasury.rs +12 -13
  182. package/contracts/message-libs/uln-302/Cargo.toml +1 -1
  183. package/contracts/message-libs/uln-302/src/errors.rs +0 -5
  184. package/contracts/message-libs/uln-302/src/events.rs +5 -6
  185. package/contracts/message-libs/uln-302/src/receive_uln.rs +24 -54
  186. package/contracts/message-libs/uln-302/src/send_uln.rs +89 -135
  187. package/contracts/message-libs/uln-302/src/storage.rs +5 -5
  188. package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +5 -7
  189. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +3 -3
  190. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +6 -9
  191. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
  192. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +3 -3
  193. package/contracts/message-libs/uln-302/src/tests/setup.rs +9 -0
  194. package/contracts/message-libs/uln-302/src/tests/testing_utils.rs +5 -0
  195. package/contracts/message-libs/uln-302/src/tests/uln302/get_app_receive_uln_config.rs +1 -2
  196. package/contracts/message-libs/uln-302/src/tests/uln302/get_app_send_uln_config.rs +1 -2
  197. package/contracts/message-libs/uln-302/src/tests/uln302/set_config.rs +37 -55
  198. package/contracts/message-libs/uln-302/src/uln302.rs +8 -5
  199. package/contracts/oapps/counter/src/counter.rs +0 -1
  200. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +306 -224
  201. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -1
  202. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -1
  203. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -1
  204. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -1
  205. package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_core.rs +1 -0
  206. package/contracts/oapps/oft/integration-tests/setup.rs +10 -3
  207. package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
  208. package/contracts/oapps/oft/src/default_oft_impl.rs +9 -3
  209. package/contracts/oapps/oft/src/extensions/oft_fee.rs +5 -5
  210. package/contracts/oapps/oft/src/extensions/pausable.rs +1 -1
  211. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +18 -18
  212. package/contracts/oapps/oft/src/oft.rs +9 -9
  213. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
  214. package/contracts/oapps/oft/src/tests/extensions/setup.rs +26 -11
  215. package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1 -1
  216. package/contracts/oapps/oft/src/tests/test_send.rs +4 -4
  217. package/contracts/oapps/oft/src/tests/test_utils.rs +93 -74
  218. package/contracts/oapps/oft-std/Cargo.toml +6 -0
  219. package/contracts/oapps/oft-std/integration-tests/extensions/mod.rs +3 -0
  220. package/contracts/oapps/oft-std/integration-tests/extensions/test_oft_fee.rs +157 -0
  221. package/contracts/oapps/oft-std/integration-tests/extensions/test_pausable.rs +162 -0
  222. package/contracts/oapps/oft-std/integration-tests/extensions/test_rate_limiter.rs +186 -0
  223. package/contracts/oapps/oft-std/integration-tests/mod.rs +3 -0
  224. package/contracts/oapps/oft-std/integration-tests/setup.rs +245 -0
  225. package/contracts/oapps/oft-std/integration-tests/utils.rs +427 -0
  226. package/contracts/oapps/oft-std/src/lib.rs +12 -1
  227. package/contracts/oapps/oft-std/src/oft.rs +122 -25
  228. package/contracts/upgrader/Cargo.toml +19 -0
  229. package/contracts/upgrader/src/lib.rs +96 -0
  230. package/contracts/upgrader/src/tests/mod.rs +1 -0
  231. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
  232. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
  233. package/contracts/upgrader/src/tests/test_upgrader.rs +120 -0
  234. package/contracts/utils/src/errors.rs +6 -1
  235. package/contracts/utils/src/lib.rs +2 -1
  236. package/contracts/utils/src/ownable.rs +49 -61
  237. package/contracts/utils/src/tests/mod.rs +3 -1
  238. package/contracts/utils/src/tests/option_ext.rs +21 -0
  239. package/contracts/utils/src/tests/ownable.rs +10 -69
  240. package/contracts/utils/src/tests/ttl_configurable.rs +596 -0
  241. package/contracts/utils/src/tests/upgradeable.rs +288 -0
  242. package/contracts/utils/src/{ttl.rs → ttl_configurable.rs} +67 -52
  243. package/contracts/utils/src/upgradeable.rs +54 -0
  244. package/contracts/workers/dvn/Cargo.toml +1 -1
  245. package/contracts/workers/dvn/src/auth.rs +21 -32
  246. package/contracts/workers/dvn/src/dvn.rs +40 -3
  247. package/contracts/workers/dvn/src/errors.rs +1 -0
  248. package/contracts/workers/dvn/src/multisig.rs +10 -6
  249. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -2
  250. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +4 -4
  251. package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -2
  252. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +46 -14
  253. package/contracts/workers/dvn-fee-lib/src/errors.rs +3 -2
  254. package/contracts/workers/dvn-fee-lib/src/lib.rs +5 -11
  255. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +30 -16
  256. package/contracts/workers/executor/src/executor.rs +16 -2
  257. package/contracts/workers/executor-fee-lib/src/errors.rs +9 -7
  258. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +154 -119
  259. package/contracts/workers/executor-helper/Cargo.toml +0 -5
  260. package/contracts/workers/executor-helper/src/lib.rs +1 -7
  261. package/contracts/workers/price-feed/Cargo.toml +0 -1
  262. package/contracts/workers/price-feed/src/errors.rs +3 -2
  263. package/contracts/workers/price-feed/src/lib.rs +5 -6
  264. package/contracts/workers/price-feed/src/price_feed.rs +39 -17
  265. package/contracts/workers/worker/Cargo.toml +4 -0
  266. package/contracts/workers/worker/src/interfaces/price_feed.rs +3 -3
  267. package/contracts/workers/worker/src/lib.rs +2 -2
  268. package/contracts/workers/worker/src/tests/mod.rs +4 -0
  269. package/contracts/workers/worker/src/tests/setup.rs +147 -0
  270. package/contracts/workers/worker/src/tests/worker.rs +501 -0
  271. package/contracts/workers/worker/src/worker.rs +10 -16
  272. package/package.json +3 -3
  273. package/sdk/dist/generated/bml.d.ts +40 -30
  274. package/sdk/dist/generated/bml.js +16 -11
  275. package/sdk/dist/generated/counter.d.ts +168 -134
  276. package/sdk/dist/generated/counter.js +26 -21
  277. package/sdk/dist/generated/dvn.d.ts +1932 -0
  278. package/sdk/dist/generated/dvn.js +288 -0
  279. package/sdk/dist/generated/dvn_fee_lib.d.ts +615 -0
  280. package/sdk/dist/generated/dvn_fee_lib.js +123 -0
  281. package/sdk/dist/generated/endpoint.d.ts +75 -41
  282. package/sdk/dist/generated/endpoint.js +22 -17
  283. package/sdk/dist/generated/executor.d.ts +1809 -0
  284. package/sdk/dist/generated/executor.js +269 -0
  285. package/sdk/dist/generated/executor_fee_lib.d.ts +999 -0
  286. package/sdk/dist/generated/executor_fee_lib.js +208 -0
  287. package/sdk/dist/generated/executor_helper.d.ts +869 -0
  288. package/sdk/dist/generated/executor_helper.js +187 -0
  289. package/sdk/dist/generated/oft_std.d.ts +1544 -0
  290. package/sdk/dist/generated/oft_std.js +271 -0
  291. package/sdk/dist/generated/price_feed.d.ts +1002 -0
  292. package/sdk/dist/generated/price_feed.js +170 -0
  293. package/sdk/dist/generated/sml.d.ts +75 -41
  294. package/sdk/dist/generated/sml.js +22 -17
  295. package/sdk/dist/generated/uln302.d.ts +79 -60
  296. package/sdk/dist/generated/uln302.js +37 -37
  297. package/sdk/dist/generated/upgrader.d.ts +70 -0
  298. package/sdk/dist/generated/upgrader.js +19 -0
  299. package/sdk/dist/index.d.ts +8 -0
  300. package/sdk/dist/index.js +11 -0
  301. package/sdk/package.json +4 -3
  302. package/sdk/src/index.ts +13 -0
  303. package/sdk/test/index.test.ts +0 -1
  304. package/sdk/test/oft.test.ts +12 -23
  305. package/sdk/test/suites/testUpgradeable.ts +169 -0
  306. package/sdk/test/upgrader.test.ts +309 -0
  307. package/tools/ts-bindings-gen/src/main.rs +11 -1
  308. package/contracts/endpoint-v2/src/tests/messaging_channel/clear.rs +0 -316
  309. package/contracts/endpoint-v2/src/tests/messaging_channel/internal.rs +0 -388
  310. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1.rs +0 -162
  311. package/contracts/message-libs/message-lib-common/src/tests/worker_options.rs +0 -319
  312. package/contracts/utils/src/tests/ttl.rs +0 -421
  313. /package/contracts/{oapp-macros → oapps/oapp-macros}/Cargo.toml +0 -0
  314. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/lib.rs +0 -0
  315. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_full.rs +0 -0
  316. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_options_type3.rs +0 -0
  317. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_receiver.rs +0 -0
  318. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_sender.rs +0 -0
  319. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/util.rs +0 -0
@@ -1,12 +1,12 @@
1
1
  use soroban_sdk::{testutils::Address as _, Address, BytesN};
2
2
 
3
- use crate::{endpoint_v2::EndpointV2, storage, tests::endpoint_setup::setup};
3
+ use crate::{endpoint_v2::EndpointV2, tests::endpoint_setup::setup};
4
4
 
5
5
  #[test]
6
6
  fn test_inbound_payload_hash_not_set() {
7
- let test_setup = setup();
8
- let env = &test_setup.env;
9
- let endpoint_client = &test_setup.endpoint_client;
7
+ let context = setup();
8
+ let env = &context.env;
9
+ let endpoint_client = &context.endpoint_client;
10
10
 
11
11
  let receiver = Address::generate(env);
12
12
  let src_eid = 2;
@@ -20,9 +20,9 @@ fn test_inbound_payload_hash_not_set() {
20
20
 
21
21
  #[test]
22
22
  fn test_inbound_payload_hash_after_setting() {
23
- let test_setup = setup();
24
- let env = &test_setup.env;
25
- let endpoint_client = &test_setup.endpoint_client;
23
+ let context = setup();
24
+ let env = &context.env;
25
+ let endpoint_client = &context.endpoint_client;
26
26
 
27
27
  let receiver = Address::generate(env);
28
28
  let src_eid = 2;
@@ -39,278 +39,3 @@ fn test_inbound_payload_hash_after_setting() {
39
39
  let payload_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
40
40
  assert_eq!(payload_hash, Some(expected_hash));
41
41
  }
42
-
43
- #[test]
44
- fn test_inbound_payload_hash_different_nonces() {
45
- let test_setup = setup();
46
- let env = &test_setup.env;
47
- let endpoint_client = &test_setup.endpoint_client;
48
-
49
- let receiver = Address::generate(env);
50
- let src_eid = 2;
51
- let sender = BytesN::from_array(env, &[1u8; 32]);
52
- let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
53
- let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
54
- let hash3 = BytesN::from_array(env, &[0xefu8; 32]);
55
-
56
- // Set payload hashes for different nonces
57
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender, 1, &hash1));
58
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender, 5, &hash2));
59
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender, 10, &hash3));
60
-
61
- // Verify each nonce has its own independent payload hash
62
- let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &1);
63
- let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &5);
64
- let retrieved_hash3 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &10);
65
-
66
- assert_eq!(retrieved_hash1, Some(hash1));
67
- assert_eq!(retrieved_hash2, Some(hash2));
68
- assert_eq!(retrieved_hash3, Some(hash3));
69
-
70
- // Verify unset nonces return None
71
- let unset_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &2);
72
- assert_eq!(unset_hash, None);
73
- }
74
-
75
- #[test]
76
- fn test_inbound_payload_hash_different_receivers() {
77
- let test_setup = setup();
78
- let env = &test_setup.env;
79
- let endpoint_client = &test_setup.endpoint_client;
80
-
81
- let receiver1 = Address::generate(env);
82
- let receiver2 = Address::generate(env);
83
- let src_eid = 2;
84
- let sender = BytesN::from_array(env, &[1u8; 32]);
85
- let nonce = 1;
86
- let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
87
- let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
88
-
89
- // Set payload hashes for different receivers
90
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver1, src_eid, &sender, nonce, &hash1));
91
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver2, src_eid, &sender, nonce, &hash2));
92
-
93
- // Verify each receiver has its own independent payload hash
94
- let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver1, &src_eid, &sender, &nonce);
95
- let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver2, &src_eid, &sender, &nonce);
96
-
97
- assert_eq!(retrieved_hash1, Some(hash1));
98
- assert_eq!(retrieved_hash2, Some(hash2));
99
-
100
- // Verify a third receiver returns None
101
- let receiver3 = Address::generate(env);
102
- let unset_hash = endpoint_client.inbound_payload_hash(&receiver3, &src_eid, &sender, &nonce);
103
- assert_eq!(unset_hash, None);
104
- }
105
-
106
- #[test]
107
- fn test_inbound_payload_hash_different_src_eids() {
108
- let test_setup = setup();
109
- let env = &test_setup.env;
110
- let endpoint_client = &test_setup.endpoint_client;
111
-
112
- let receiver = Address::generate(env);
113
- let src_eid1 = 2;
114
- let src_eid2 = 3;
115
- let sender = BytesN::from_array(env, &[1u8; 32]);
116
- let nonce = 1;
117
- let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
118
- let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
119
-
120
- // Set payload hashes for different source EIDs
121
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid1, &sender, nonce, &hash1));
122
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid2, &sender, nonce, &hash2));
123
-
124
- // Verify each src_eid has its own independent payload hash
125
- let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver, &src_eid1, &sender, &nonce);
126
- let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver, &src_eid2, &sender, &nonce);
127
-
128
- assert_eq!(retrieved_hash1, Some(hash1));
129
- assert_eq!(retrieved_hash2, Some(hash2));
130
-
131
- // Verify a third src_eid returns None
132
- let src_eid3 = 4;
133
- let unset_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid3, &sender, &nonce);
134
- assert_eq!(unset_hash, None);
135
- }
136
-
137
- #[test]
138
- fn test_inbound_payload_hash_different_senders() {
139
- let test_setup = setup();
140
- let env = &test_setup.env;
141
- let endpoint_client = &test_setup.endpoint_client;
142
-
143
- let receiver = Address::generate(env);
144
- let src_eid = 2;
145
- let sender1 = BytesN::from_array(env, &[1u8; 32]);
146
- let sender2 = BytesN::from_array(env, &[2u8; 32]);
147
- let nonce = 1;
148
- let hash1 = BytesN::from_array(env, &[0xabu8; 32]);
149
- let hash2 = BytesN::from_array(env, &[0xcdu8; 32]);
150
-
151
- // Set payload hashes for different senders
152
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender1, nonce, &hash1));
153
- env.as_contract(&endpoint_client.address, || EndpointV2::inbound(env, &receiver, src_eid, &sender2, nonce, &hash2));
154
-
155
- // Verify each sender has its own independent payload hash
156
- let retrieved_hash1 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender1, &nonce);
157
- let retrieved_hash2 = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender2, &nonce);
158
-
159
- assert_eq!(retrieved_hash1, Some(hash1));
160
- assert_eq!(retrieved_hash2, Some(hash2));
161
-
162
- // Verify a third sender returns None
163
- let sender3 = BytesN::from_array(env, &[3u8; 32]);
164
- let unset_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender3, &nonce);
165
- assert_eq!(unset_hash, None);
166
- }
167
-
168
- #[test]
169
- fn test_inbound_payload_hash_after_removal() {
170
- let test_setup = setup();
171
- let env = &test_setup.env;
172
- let endpoint_client = &test_setup.endpoint_client;
173
-
174
- let receiver = Address::generate(env);
175
- let src_eid = 2;
176
- let sender = BytesN::from_array(env, &[1u8; 32]);
177
- let nonce = 1;
178
- let payload_hash = BytesN::from_array(env, &[0xabu8; 32]);
179
-
180
- // Set payload hash
181
- env.as_contract(&endpoint_client.address, || {
182
- EndpointV2::inbound(env, &receiver, src_eid, &sender, nonce, &payload_hash)
183
- });
184
-
185
- // Verify payload hash is set
186
- let retrieved_before = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
187
- assert_eq!(retrieved_before, Some(payload_hash));
188
-
189
- // Remove payload hash
190
- env.as_contract(&endpoint_client.address, || {
191
- storage::EndpointStorage::remove_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce)
192
- });
193
-
194
- // Verify payload hash is removed
195
- let retrieved_after = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
196
- assert_eq!(retrieved_after, None);
197
- }
198
-
199
- #[test]
200
- fn test_inbound_payload_hash_overwrite() {
201
- let test_setup = setup();
202
- let env = &test_setup.env;
203
- let endpoint_client = &test_setup.endpoint_client;
204
-
205
- let receiver = Address::generate(env);
206
- let src_eid = 2;
207
- let sender = BytesN::from_array(env, &[1u8; 32]);
208
- let nonce = 1;
209
- let initial_hash = BytesN::from_array(env, &[0xabu8; 32]);
210
- let new_hash = BytesN::from_array(env, &[0xcdu8; 32]);
211
-
212
- // Set initial payload hash
213
- env.as_contract(&endpoint_client.address, || {
214
- storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &initial_hash)
215
- });
216
-
217
- let retrieved_initial = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
218
- assert_eq!(retrieved_initial, Some(initial_hash));
219
-
220
- // Overwrite with new payload hash
221
- env.as_contract(&endpoint_client.address, || {
222
- storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &new_hash)
223
- });
224
-
225
- let retrieved_new = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
226
- assert_eq!(retrieved_new, Some(new_hash));
227
- }
228
-
229
- #[test]
230
- fn test_inbound_payload_hash_multiple_paths_independence() {
231
- let test_setup = setup();
232
- let env = &test_setup.env;
233
- let endpoint_client = &test_setup.endpoint_client;
234
-
235
- let receiver1 = Address::generate(env);
236
- let receiver2 = Address::generate(env);
237
- let src_eid1 = 2;
238
- let src_eid2 = 3;
239
- let sender1 = BytesN::from_array(env, &[1u8; 32]);
240
- let sender2 = BytesN::from_array(env, &[2u8; 32]);
241
- let nonce = 1;
242
-
243
- let hash_r1_e1_s1 = BytesN::from_array(env, &[0x11u8; 32]);
244
- let hash_r1_e1_s2 = BytesN::from_array(env, &[0x12u8; 32]);
245
- let hash_r1_e2_s1 = BytesN::from_array(env, &[0x13u8; 32]);
246
- let hash_r2_e1_s1 = BytesN::from_array(env, &[0x14u8; 32]);
247
-
248
- // Set payload hashes for different combinations
249
- env.as_contract(&endpoint_client.address, || {
250
- EndpointV2::inbound(env, &receiver1, src_eid1, &sender1, nonce, &hash_r1_e1_s1)
251
- });
252
- env.as_contract(&endpoint_client.address, || {
253
- EndpointV2::inbound(env, &receiver1, src_eid1, &sender2, nonce, &hash_r1_e1_s2)
254
- });
255
- env.as_contract(&endpoint_client.address, || {
256
- EndpointV2::inbound(env, &receiver1, src_eid2, &sender1, nonce, &hash_r1_e2_s1)
257
- });
258
- env.as_contract(&endpoint_client.address, || {
259
- EndpointV2::inbound(env, &receiver2, src_eid1, &sender1, nonce, &hash_r2_e1_s1)
260
- });
261
-
262
- // Verify all paths are independent
263
- assert_eq!(endpoint_client.inbound_payload_hash(&receiver1, &src_eid1, &sender1, &nonce), Some(hash_r1_e1_s1));
264
- assert_eq!(endpoint_client.inbound_payload_hash(&receiver1, &src_eid1, &sender2, &nonce), Some(hash_r1_e1_s2));
265
- assert_eq!(endpoint_client.inbound_payload_hash(&receiver1, &src_eid2, &sender1, &nonce), Some(hash_r1_e2_s1));
266
- assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid1, &sender1, &nonce), Some(hash_r2_e1_s1));
267
-
268
- // Verify unset paths return None
269
- assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid1, &sender2, &nonce), None);
270
- assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid2, &sender1, &nonce), None);
271
- assert_eq!(endpoint_client.inbound_payload_hash(&receiver2, &src_eid2, &sender2, &nonce), None);
272
- }
273
-
274
- #[test]
275
- fn test_inbound_payload_hash_zero_hash() {
276
- let test_setup = setup();
277
- let env = &test_setup.env;
278
- let endpoint_client = &test_setup.endpoint_client;
279
-
280
- let receiver = Address::generate(env);
281
- let src_eid = 2;
282
- let sender = BytesN::from_array(env, &[1u8; 32]);
283
- let nonce = 1;
284
- let zero_hash = BytesN::from_array(env, &[0u8; 32]);
285
-
286
- // Set zero hash (should be allowed by storage, even though inbound function rejects it)
287
- env.as_contract(&endpoint_client.address, || {
288
- storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &zero_hash)
289
- });
290
-
291
- // Verify zero hash is retrieved correctly
292
- let retrieved_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
293
- assert_eq!(retrieved_hash, Some(zero_hash));
294
- }
295
-
296
- #[test]
297
- fn test_inbound_payload_hash_max_hash() {
298
- let test_setup = setup();
299
- let env = &test_setup.env;
300
- let endpoint_client = &test_setup.endpoint_client;
301
-
302
- let receiver = Address::generate(env);
303
- let src_eid = 2;
304
- let sender = BytesN::from_array(env, &[1u8; 32]);
305
- let nonce = 1;
306
- let max_hash = BytesN::from_array(env, &[0xffu8; 32]);
307
-
308
- // Set max hash
309
- env.as_contract(&endpoint_client.address, || {
310
- storage::EndpointStorage::set_inbound_payload_hash(env, &receiver, src_eid, &sender, nonce, &max_hash)
311
- });
312
-
313
- // Verify max hash is retrieved correctly
314
- let retrieved_hash = endpoint_client.inbound_payload_hash(&receiver, &src_eid, &sender, &nonce);
315
- assert_eq!(retrieved_hash, Some(max_hash));
316
- }
@@ -4,9 +4,9 @@ use crate::{storage, tests::endpoint_setup::setup};
4
4
 
5
5
  #[test]
6
6
  fn test_lazy_inbound_nonce_initial_value() {
7
- let test_setup = setup();
8
- let env = &test_setup.env;
9
- let endpoint_client = &test_setup.endpoint_client;
7
+ let context = setup();
8
+ let env = &context.env;
9
+ let endpoint_client = &context.endpoint_client;
10
10
 
11
11
  let receiver = Address::generate(env);
12
12
  let src_eid = 2;
@@ -19,9 +19,9 @@ fn test_lazy_inbound_nonce_initial_value() {
19
19
 
20
20
  #[test]
21
21
  fn test_lazy_inbound_nonce_after_setting() {
22
- let test_setup = setup();
23
- let env = &test_setup.env;
24
- let endpoint_client = &test_setup.endpoint_client;
22
+ let context = setup();
23
+ let env = &context.env;
24
+ let endpoint_client = &context.endpoint_client;
25
25
 
26
26
  let receiver = Address::generate(env);
27
27
  let src_eid = 2;
@@ -37,271 +37,3 @@ fn test_lazy_inbound_nonce_after_setting() {
37
37
  let nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
38
38
  assert_eq!(nonce, expected_nonce);
39
39
  }
40
-
41
- #[test]
42
- fn test_lazy_inbound_nonce_different_receivers() {
43
- let test_setup = setup();
44
- let env = &test_setup.env;
45
- let endpoint_client = &test_setup.endpoint_client;
46
-
47
- let receiver1 = Address::generate(env);
48
- let receiver2 = Address::generate(env);
49
- let src_eid = 2;
50
- let sender = BytesN::from_array(env, &[1u8; 32]);
51
-
52
- // Set different nonces for different receivers
53
- let nonce1 = 10;
54
- let nonce2 = 20;
55
-
56
- env.as_contract(&endpoint_client.address, || {
57
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid, &sender, &nonce1)
58
- });
59
- env.as_contract(&endpoint_client.address, || {
60
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver2, src_eid, &sender, &nonce2)
61
- });
62
-
63
- // Verify each receiver has its own independent lazy nonce
64
- let retrieved_nonce1 = endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid, &sender);
65
- let retrieved_nonce2 = endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid, &sender);
66
-
67
- assert_eq!(retrieved_nonce1, nonce1);
68
- assert_eq!(retrieved_nonce2, nonce2);
69
-
70
- // Verify a third receiver still has initial nonce of 0
71
- let receiver3 = Address::generate(env);
72
- let retrieved_nonce3 = endpoint_client.lazy_inbound_nonce(&receiver3, &src_eid, &sender);
73
- assert_eq!(retrieved_nonce3, 0);
74
- }
75
-
76
- #[test]
77
- fn test_lazy_inbound_nonce_different_src_eids() {
78
- let test_setup = setup();
79
- let env = &test_setup.env;
80
- let endpoint_client = &test_setup.endpoint_client;
81
-
82
- let receiver = Address::generate(env);
83
- let src_eid1 = 2;
84
- let src_eid2 = 3;
85
- let sender = BytesN::from_array(env, &[1u8; 32]);
86
-
87
- // Set different nonces for different source EIDs
88
- let nonce1 = 15;
89
- let nonce2 = 25;
90
-
91
- env.as_contract(&endpoint_client.address, || {
92
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid1, &sender, &nonce1)
93
- });
94
- env.as_contract(&endpoint_client.address, || {
95
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid2, &sender, &nonce2)
96
- });
97
-
98
- // Verify each src_eid has its own independent lazy nonce
99
- let retrieved_nonce1 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid1, &sender);
100
- let retrieved_nonce2 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid2, &sender);
101
-
102
- assert_eq!(retrieved_nonce1, nonce1);
103
- assert_eq!(retrieved_nonce2, nonce2);
104
-
105
- // Verify a third src_eid still has initial nonce of 0
106
- let src_eid3 = 4;
107
- let retrieved_nonce3 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid3, &sender);
108
- assert_eq!(retrieved_nonce3, 0);
109
- }
110
-
111
- #[test]
112
- fn test_lazy_inbound_nonce_different_senders() {
113
- let test_setup = setup();
114
- let env = &test_setup.env;
115
- let endpoint_client = &test_setup.endpoint_client;
116
-
117
- let receiver = Address::generate(env);
118
- let src_eid = 2;
119
- let sender1 = BytesN::from_array(env, &[1u8; 32]);
120
- let sender2 = BytesN::from_array(env, &[2u8; 32]);
121
-
122
- // Set different nonces for different senders
123
- let nonce1 = 30;
124
- let nonce2 = 40;
125
-
126
- env.as_contract(&endpoint_client.address, || {
127
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender1, &nonce1)
128
- });
129
- env.as_contract(&endpoint_client.address, || {
130
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender2, &nonce2)
131
- });
132
-
133
- // Verify each sender has its own independent lazy nonce
134
- let retrieved_nonce1 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender1);
135
- let retrieved_nonce2 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender2);
136
-
137
- assert_eq!(retrieved_nonce1, nonce1);
138
- assert_eq!(retrieved_nonce2, nonce2);
139
-
140
- // Verify a third sender still has initial nonce of 0
141
- let sender3 = BytesN::from_array(env, &[3u8; 32]);
142
- let retrieved_nonce3 = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender3);
143
- assert_eq!(retrieved_nonce3, 0);
144
- }
145
-
146
- #[test]
147
- fn test_lazy_inbound_nonce_large_values() {
148
- let test_setup = setup();
149
- let env = &test_setup.env;
150
- let endpoint_client = &test_setup.endpoint_client;
151
-
152
- let receiver = Address::generate(env);
153
- let src_eid = 2;
154
- let sender = BytesN::from_array(env, &[1u8; 32]);
155
-
156
- // Test with maximum u64 value
157
- let max_nonce = u64::MAX;
158
- env.as_contract(&endpoint_client.address, || {
159
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &max_nonce)
160
- });
161
-
162
- let retrieved_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
163
- assert_eq!(retrieved_nonce, max_nonce);
164
-
165
- // Test with large but not maximum value
166
- let large_nonce = u64::MAX - 1000;
167
- env.as_contract(&endpoint_client.address, || {
168
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &large_nonce)
169
- });
170
-
171
- let retrieved_large_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
172
- assert_eq!(retrieved_large_nonce, large_nonce);
173
- }
174
-
175
- #[test]
176
- fn test_lazy_inbound_nonce_incremental_updates() {
177
- let test_setup = setup();
178
- let env = &test_setup.env;
179
- let endpoint_client = &test_setup.endpoint_client;
180
-
181
- let receiver = Address::generate(env);
182
- let src_eid = 2;
183
- let sender = BytesN::from_array(env, &[1u8; 32]);
184
-
185
- // Start with nonce 0
186
- let initial_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
187
- assert_eq!(initial_nonce, 0);
188
-
189
- // Incrementally update lazy nonce
190
- for expected_nonce in 1..=10 {
191
- env.as_contract(&endpoint_client.address, || {
192
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &expected_nonce)
193
- });
194
-
195
- let retrieved_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
196
- assert_eq!(retrieved_nonce, expected_nonce);
197
- }
198
- }
199
-
200
- #[test]
201
- fn test_lazy_inbound_nonce_overwrite() {
202
- let test_setup = setup();
203
- let env = &test_setup.env;
204
- let endpoint_client = &test_setup.endpoint_client;
205
-
206
- let receiver = Address::generate(env);
207
- let src_eid = 2;
208
- let sender = BytesN::from_array(env, &[1u8; 32]);
209
-
210
- // Set initial nonce
211
- let initial_nonce = 100;
212
- env.as_contract(&endpoint_client.address, || {
213
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &initial_nonce)
214
- });
215
-
216
- let retrieved_initial = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
217
- assert_eq!(retrieved_initial, initial_nonce);
218
-
219
- // Overwrite with a different nonce
220
- let new_nonce = 200;
221
- env.as_contract(&endpoint_client.address, || {
222
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &new_nonce)
223
- });
224
-
225
- let retrieved_new = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
226
- assert_eq!(retrieved_new, new_nonce);
227
-
228
- // Overwrite with a smaller nonce
229
- let smaller_nonce = 50;
230
- env.as_contract(&endpoint_client.address, || {
231
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &smaller_nonce)
232
- });
233
-
234
- let retrieved_smaller = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
235
- assert_eq!(retrieved_smaller, smaller_nonce);
236
- }
237
-
238
- #[test]
239
- fn test_lazy_inbound_nonce_multiple_paths_independence() {
240
- let test_setup = setup();
241
- let env = &test_setup.env;
242
- let endpoint_client = &test_setup.endpoint_client;
243
-
244
- let receiver1 = Address::generate(env);
245
- let receiver2 = Address::generate(env);
246
- let src_eid1 = 2;
247
- let src_eid2 = 3;
248
- let sender1 = BytesN::from_array(env, &[1u8; 32]);
249
- let sender2 = BytesN::from_array(env, &[2u8; 32]);
250
-
251
- // Set nonces for different combinations
252
- let nonce_r1_e1_s1 = 100;
253
- let nonce_r1_e1_s2 = 200;
254
- let nonce_r1_e2_s1 = 300;
255
- let nonce_r2_e1_s1 = 400;
256
-
257
- env.as_contract(&endpoint_client.address, || {
258
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid1, &sender1, &nonce_r1_e1_s1)
259
- });
260
- env.as_contract(&endpoint_client.address, || {
261
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid1, &sender2, &nonce_r1_e1_s2)
262
- });
263
- env.as_contract(&endpoint_client.address, || {
264
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver1, src_eid2, &sender1, &nonce_r1_e2_s1)
265
- });
266
- env.as_contract(&endpoint_client.address, || {
267
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver2, src_eid1, &sender1, &nonce_r2_e1_s1)
268
- });
269
-
270
- // Verify all paths are independent
271
- assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid1, &sender1), nonce_r1_e1_s1);
272
- assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid1, &sender2), nonce_r1_e1_s2);
273
- assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver1, &src_eid2, &sender1), nonce_r1_e2_s1);
274
- assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid1, &sender1), nonce_r2_e1_s1);
275
-
276
- // Verify unset paths still return 0
277
- assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid1, &sender2), 0);
278
- assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid2, &sender1), 0);
279
- assert_eq!(endpoint_client.lazy_inbound_nonce(&receiver2, &src_eid2, &sender2), 0);
280
- }
281
-
282
- #[test]
283
- fn test_lazy_inbound_nonce_zero_value() {
284
- let test_setup = setup();
285
- let env = &test_setup.env;
286
- let endpoint_client = &test_setup.endpoint_client;
287
-
288
- let receiver = Address::generate(env);
289
- let src_eid = 2;
290
- let sender = BytesN::from_array(env, &[1u8; 32]);
291
-
292
- // Set lazy nonce to a non-zero value first
293
- env.as_contract(&endpoint_client.address, || {
294
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &50)
295
- });
296
-
297
- let non_zero_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
298
- assert_eq!(non_zero_nonce, 50);
299
-
300
- // Set lazy nonce back to 0
301
- env.as_contract(&endpoint_client.address, || {
302
- storage::EndpointStorage::set_lazy_inbound_nonce(env, &receiver, src_eid, &sender, &0)
303
- });
304
-
305
- let zero_nonce = endpoint_client.lazy_inbound_nonce(&receiver, &src_eid, &sender);
306
- assert_eq!(zero_nonce, 0);
307
- }
@@ -1,10 +1,11 @@
1
1
  mod burn;
2
- mod clear;
2
+ mod clear_payload;
3
+ mod inbound;
3
4
  mod inbound_nonce;
4
5
  mod inbound_payload_hash;
5
- mod internal;
6
6
  mod lazy_inbound_nonce;
7
7
  mod next_guid;
8
8
  mod nilify;
9
+ mod outbound;
9
10
  mod outbound_nonce;
10
11
  mod skip;