@layerzerolabs/protocol-stellar-v2 0.2.22 → 0.2.23

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 (328) hide show
  1. package/.turbo/turbo-build.log +347 -271
  2. package/.turbo/turbo-lint.log +277 -208
  3. package/.turbo/turbo-test.log +1700 -1370
  4. package/Cargo.lock +22 -51
  5. package/Cargo.toml +6 -1
  6. package/contracts/common-macros/src/auth.rs +10 -9
  7. package/contracts/common-macros/src/contract_ttl.rs +1 -4
  8. package/contracts/common-macros/src/error.rs +1 -3
  9. package/contracts/common-macros/src/lib.rs +65 -61
  10. package/contracts/common-macros/src/storage.rs +212 -65
  11. package/contracts/common-macros/src/tests/auth.rs +75 -6
  12. package/contracts/common-macros/src/tests/contract_ttl.rs +383 -350
  13. package/contracts/common-macros/src/tests/error.rs +9 -21
  14. package/contracts/common-macros/src/tests/lz_contract.rs +80 -0
  15. package/contracts/common-macros/src/tests/mod.rs +2 -0
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +20 -3
  17. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +28 -1
  18. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +8 -43
  19. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contracttrait_code.snap +6 -29
  20. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__lz_contract__snapshot_generated_lz_contract_code.snap +31 -0
  21. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_extendable__snapshot_generated_ttl_extendable_code.snap +8 -0
  22. package/contracts/common-macros/src/tests/storage/extract_fields.rs +87 -0
  23. package/contracts/common-macros/src/tests/storage/gen_accessor_methods.rs +223 -0
  24. package/contracts/common-macros/src/tests/storage/gen_args.rs +65 -0
  25. package/contracts/common-macros/src/tests/storage/gen_enum_variant.rs +78 -0
  26. package/contracts/common-macros/src/tests/storage/gen_key.rs +108 -0
  27. package/contracts/common-macros/src/tests/storage/gen_params.rs +105 -0
  28. package/contracts/common-macros/src/tests/{storage.rs → storage/generate_storage.rs} +54 -129
  29. package/contracts/common-macros/src/tests/storage/is_primitive_type.rs +48 -0
  30. package/contracts/common-macros/src/tests/storage/mod.rs +16 -0
  31. package/contracts/common-macros/src/tests/storage/parse_default.rs +164 -0
  32. package/contracts/common-macros/src/tests/storage/parse_name.rs +159 -0
  33. package/contracts/common-macros/src/tests/storage/parse_no_ttl_extension.rs +124 -0
  34. package/contracts/common-macros/src/tests/storage/parse_storage_type.rs +174 -0
  35. package/contracts/common-macros/src/tests/storage/snapshots/common_macros__tests__storage__generate_storage__snapshot_generated_storage_code.snap +412 -0
  36. package/contracts/common-macros/src/tests/storage/storage_kind.rs +39 -0
  37. package/contracts/common-macros/src/tests/storage/test_setup.rs +25 -0
  38. package/contracts/common-macros/src/tests/storage/validate_attrs.rs +138 -0
  39. package/contracts/common-macros/src/tests/storage/variant_config.rs +226 -0
  40. package/contracts/common-macros/src/tests/test_helpers.rs +4 -10
  41. package/contracts/common-macros/src/tests/ttl_configurable.rs +2 -2
  42. package/contracts/common-macros/src/tests/ttl_extendable.rs +32 -0
  43. package/contracts/common-macros/src/tests/upgradeable.rs +118 -2
  44. package/contracts/common-macros/src/ttl_configurable.rs +1 -4
  45. package/contracts/common-macros/src/upgradeable.rs +21 -3
  46. package/contracts/endpoint-v2/Cargo.toml +0 -4
  47. package/contracts/endpoint-v2/src/endpoint_v2.rs +37 -17
  48. package/contracts/endpoint-v2/src/errors.rs +26 -1
  49. package/contracts/endpoint-v2/src/interfaces/layerzero_endpoint_v2.rs +1 -1
  50. package/contracts/endpoint-v2/src/interfaces/message_lib_manager.rs +4 -4
  51. package/contracts/endpoint-v2/src/interfaces/messaging_composer.rs +2 -2
  52. package/contracts/endpoint-v2/src/lib.rs +0 -1
  53. package/contracts/endpoint-v2/src/message_lib_manager.rs +39 -8
  54. package/contracts/endpoint-v2/src/messaging_channel.rs +36 -4
  55. package/contracts/endpoint-v2/src/messaging_composer.rs +18 -4
  56. package/contracts/endpoint-v2/src/storage.rs +9 -1
  57. package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +2 -2
  58. package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +1 -1
  59. package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +2 -2
  60. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +3 -3
  61. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +5 -5
  62. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +2 -2
  63. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +5 -5
  64. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +3 -3
  65. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +1 -1
  66. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +4 -3
  67. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +7 -2
  68. package/contracts/endpoint-v2/src/tests/messaging_composer/mod.rs +4 -0
  69. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +7 -2
  70. package/contracts/layerzero-views/src/layerzero_view.rs +0 -1
  71. package/contracts/layerzero-views/src/tests/mod.rs +1 -0
  72. package/contracts/layerzero-views/src/tests/types_tests.rs +31 -0
  73. package/contracts/layerzero-views/src/types.rs +2 -3
  74. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/constructor.rs +61 -0
  75. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_impl_ttl_extension.rs +97 -0
  76. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/contract_trait_ttl_extension.rs +99 -0
  77. package/contracts/macro-integration-tests/tests/runtime/contract_ttl/mod.rs +3 -0
  78. package/contracts/macro-integration-tests/tests/runtime/lz_contract/mod.rs +5 -0
  79. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_default.rs +86 -0
  80. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig.rs +47 -0
  81. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_multisig_upgradeable.rs +77 -0
  82. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable.rs +114 -0
  83. package/contracts/macro-integration-tests/tests/runtime/lz_contract/wrapper_upgradeable_no_migration.rs +105 -0
  84. package/contracts/macro-integration-tests/tests/runtime/multisig/admin_entrypoints.rs +242 -0
  85. package/contracts/macro-integration-tests/tests/runtime/multisig/mod.rs +9 -0
  86. package/contracts/macro-integration-tests/tests/runtime/multisig/self_auth.rs +54 -0
  87. package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +13 -0
  88. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +1 -0
  89. package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +70 -1
  90. package/contracts/macro-integration-tests/tests/runtime/ownable/two_step_transfer.rs +219 -0
  91. package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +41 -0
  92. package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +48 -16
  93. package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +10 -0
  94. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +96 -3
  95. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +4 -0
  96. package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/extend_instance_ttl.rs +64 -0
  97. package/contracts/macro-integration-tests/tests/runtime/ttl_extendable/mod.rs +16 -0
  98. package/contracts/macro-integration-tests/tests/runtime/upgradeable/migrate_guard_and_state.rs +305 -0
  99. package/contracts/macro-integration-tests/tests/runtime/upgradeable/mod.rs +3 -0
  100. package/contracts/macro-integration-tests/tests/runtime/upgradeable/no_migration.rs +59 -0
  101. package/contracts/macro-integration-tests/tests/runtime/upgradeable/upgrade_then_migrate.rs +88 -0
  102. package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
  103. package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.rs +6 -0
  104. package/contracts/macro-integration-tests/tests/ui/contract_impl/fail/not_impl_item.stderr +7 -0
  105. package/contracts/macro-integration-tests/tests/ui/contract_impl/pass/basic.rs +102 -0
  106. package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.rs +6 -0
  107. package/contracts/macro-integration-tests/tests/ui/contract_trait/fail/not_a_trait.stderr +7 -0
  108. package/contracts/macro-integration-tests/tests/ui/contract_trait/pass/basic.rs +83 -0
  109. package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.rs +11 -0
  110. package/contracts/macro-integration-tests/tests/ui/error/fail/discriminant_too_large.stderr +7 -0
  111. package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.rs +11 -0
  112. package/contracts/macro-integration-tests/tests/ui/error/fail/non_enum_input.stderr +7 -0
  113. package/contracts/macro-integration-tests/tests/ui/error/pass/basic.rs +22 -0
  114. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.rs +6 -0
  115. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/invalid_option.stderr +7 -0
  116. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.rs +20 -0
  117. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/multisig_rejects_ownable_api.stderr +20 -0
  118. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.rs +8 -0
  119. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/not_a_struct.stderr +7 -0
  120. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.rs +10 -0
  121. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_invalid_inner_option.stderr +7 -0
  122. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.rs +20 -0
  123. package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.stderr +86 -0
  124. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/basic.rs +45 -0
  125. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig.rs +34 -0
  126. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/multisig_upgradeable.rs +30 -0
  127. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable.rs +39 -0
  128. package/contracts/macro-integration-tests/tests/ui/lz_contract/pass/upgradeable_no_migration.rs +28 -0
  129. package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.rs +8 -0
  130. package/contracts/macro-integration-tests/tests/ui/multisig/fail/non_struct_input.stderr +7 -0
  131. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.rs +20 -0
  132. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_api.stderr +12 -0
  133. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.rs +20 -0
  134. package/contracts/macro-integration-tests/tests/ui/multisig/fail/rejects_ownable_trait.stderr +5 -0
  135. package/contracts/macro-integration-tests/tests/ui/multisig/pass/basic.rs +49 -0
  136. package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.rs +8 -0
  137. package/contracts/macro-integration-tests/tests/ui/ownable/fail/non_struct_input.stderr +7 -0
  138. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.rs +19 -0
  139. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_auth.stderr +12 -0
  140. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.rs +1 -1
  141. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +0 -8
  142. package/contracts/macro-integration-tests/tests/ui/ownable/pass/basic.rs +39 -0
  143. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +7 -1
  144. package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +1 -1
  145. package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +1 -1
  146. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.rs +11 -0
  147. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_default_values.stderr +7 -0
  148. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.rs +11 -0
  149. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_name_attrs.stderr +7 -0
  150. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.rs +11 -0
  151. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_no_ttl_extension.stderr +7 -0
  152. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +1 -1
  153. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.rs +13 -0
  154. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_rejects_args.stderr +7 -0
  155. package/contracts/macro-integration-tests/tests/ui/storage/pass/api_surface.rs +102 -0
  156. package/contracts/macro-integration-tests/tests/ui/storage/pass/basic.rs +43 -0
  157. package/contracts/macro-integration-tests/tests/ui/storage/pass/multi_key.rs +38 -0
  158. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.rs +14 -0
  159. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/missing_auth_trait.stderr +71 -0
  160. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.rs +8 -0
  161. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/fail/non_struct_input.stderr +7 -0
  162. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/{minimal_contract.rs → basic.rs} +2 -0
  163. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/multisig_contract.rs +28 -0
  164. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/ownable_contract.rs +32 -0
  165. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.rs +8 -0
  166. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/fail/non_struct_input.stderr +7 -0
  167. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/basic.rs +23 -0
  168. package/contracts/macro-integration-tests/tests/ui/ttl_extendable/pass/no_user_contractimpl.rs +21 -0
  169. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.rs +11 -0
  170. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/attr_args.stderr +29 -0
  171. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.rs +20 -0
  172. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.stderr +71 -0
  173. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.rs +10 -0
  174. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.stderr +79 -0
  175. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.rs +8 -0
  176. package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/non_struct_input.stderr +7 -0
  177. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/basic.rs +43 -0
  178. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/multisig_contract.rs +35 -0
  179. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_migration.rs +30 -0
  180. package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_user_contractimpl.rs +29 -0
  181. package/contracts/macro-integration-tests/tests/ui_contract_impl.rs +12 -0
  182. package/contracts/macro-integration-tests/tests/ui_contract_trait.rs +12 -0
  183. package/contracts/macro-integration-tests/tests/ui_lz_contract.rs +11 -0
  184. package/contracts/macro-integration-tests/tests/ui_multisig.rs +11 -0
  185. package/contracts/macro-integration-tests/tests/ui_ttl_extendable.rs +12 -0
  186. package/contracts/macro-integration-tests/tests/ui_upgradeable.rs +11 -0
  187. package/contracts/message-libs/blocked-message-lib/Cargo.toml +1 -1
  188. package/contracts/message-libs/blocked-message-lib/src/lib.rs +4 -1
  189. package/contracts/message-libs/blocked-message-lib/src/tests/blocked_message_lib_tests.rs +108 -0
  190. package/contracts/message-libs/blocked-message-lib/src/tests/mod.rs +4 -0
  191. package/contracts/message-libs/blocked-message-lib/src/tests/setup.rs +40 -0
  192. package/contracts/message-libs/simple-message-lib/src/lib.rs +1 -1
  193. package/contracts/message-libs/simple-message-lib/src/tests/mod.rs +2 -0
  194. package/contracts/message-libs/simple-message-lib/src/tests/setup.rs +124 -0
  195. package/contracts/message-libs/simple-message-lib/src/tests/simple_message_lib_tests.rs +309 -0
  196. package/contracts/message-libs/uln-302/src/errors.rs +21 -0
  197. package/contracts/message-libs/uln-302/src/interfaces/receive_uln.rs +1 -1
  198. package/contracts/message-libs/uln-302/src/receive_uln.rs +6 -4
  199. package/contracts/message-libs/uln-302/src/send_uln.rs +15 -6
  200. package/contracts/message-libs/uln-302/src/storage.rs +5 -5
  201. package/contracts/message-libs/uln-302/src/tests/uln302/get_config.rs +71 -0
  202. package/contracts/message-libs/uln-302/src/tests/uln302/mod.rs +1 -0
  203. package/contracts/message-libs/uln-302/src/uln302.rs +3 -0
  204. package/contracts/oapps/counter/Cargo.toml +2 -0
  205. package/contracts/oapps/counter/integration_tests/mod.rs +1 -0
  206. package/contracts/oapps/counter/integration_tests/setup_sml.rs +6 -4
  207. package/contracts/oapps/counter/integration_tests/setup_uln.rs +12 -5
  208. package/contracts/oapps/counter/integration_tests/test_with_blocked.rs +67 -0
  209. package/contracts/oapps/counter/src/tests/mod.rs +1 -0
  210. package/contracts/oapps/counter/src/tests/test_u256_ext.rs +48 -0
  211. package/contracts/oapps/oapp/src/lib.rs +0 -3
  212. package/contracts/oapps/oapp/src/tests/mod.rs +1 -0
  213. package/contracts/oapps/oft/integration-tests/setup.rs +2 -3
  214. package/contracts/oapps/oft/src/lib.rs +3 -0
  215. package/contracts/oapps/oft/src/tests/extensions/mod.rs +3 -0
  216. package/contracts/oapps/oft/src/tests/extensions/oft_fee.rs +240 -0
  217. package/contracts/oapps/oft/src/tests/extensions/pausable.rs +141 -0
  218. package/contracts/oapps/oft/src/tests/extensions/rate_limiter.rs +447 -0
  219. package/contracts/oapps/oft/src/tests/mod.rs +2 -0
  220. package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +180 -0
  221. package/contracts/oapps/oft/src/tests/oft_types/mod.rs +1 -0
  222. package/contracts/oapps/oft-core/integration-tests/setup.rs +2 -3
  223. package/contracts/oapps/oft-core/src/lib.rs +2 -2
  224. package/contracts/oapps/oft-core/src/tests/mod.rs +1 -1
  225. package/contracts/oapps/oft-core/src/tests/{test_oft_version.rs → test_oft_version_and_approval.rs} +9 -0
  226. package/contracts/oapps/oft-core/src/tests/test_utils.rs +0 -43
  227. package/contracts/upgrader/src/tests/test_upgrader.rs +18 -0
  228. package/contracts/utils/src/auth.rs +2 -2
  229. package/contracts/utils/src/buffer_reader.rs +61 -10
  230. package/contracts/utils/src/buffer_writer.rs +35 -20
  231. package/contracts/utils/src/bytes_ext.rs +1 -2
  232. package/contracts/utils/src/errors.rs +5 -3
  233. package/contracts/utils/src/multisig.rs +59 -36
  234. package/contracts/utils/src/option_ext.rs +3 -3
  235. package/contracts/utils/src/ownable.rs +12 -6
  236. package/contracts/utils/src/tests/auth.rs +179 -0
  237. package/contracts/utils/src/tests/buffer_reader.rs +203 -1
  238. package/contracts/utils/src/tests/buffer_writer.rs +176 -5
  239. package/contracts/utils/src/tests/mod.rs +2 -0
  240. package/contracts/utils/src/tests/multisig.rs +170 -141
  241. package/contracts/utils/src/tests/option_ext.rs +1 -1
  242. package/contracts/utils/src/tests/ownable.rs +156 -161
  243. package/contracts/utils/src/tests/test_helper.rs +21 -1
  244. package/contracts/utils/src/tests/testing_utils.rs +84 -2
  245. package/contracts/utils/src/tests/ttl_configurable.rs +66 -86
  246. package/contracts/utils/src/tests/ttl_extendable.rs +64 -0
  247. package/contracts/utils/src/tests/upgradeable.rs +115 -6
  248. package/contracts/utils/src/ttl_configurable.rs +22 -12
  249. package/contracts/utils/src/ttl_extendable.rs +1 -3
  250. package/contracts/utils/src/upgradeable.rs +21 -24
  251. package/contracts/workers/dvn/src/auth.rs +1 -1
  252. package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
  253. package/contracts/workers/dvn/src/storage.rs +1 -1
  254. package/contracts/workers/dvn/src/tests/auth.rs +136 -3
  255. package/contracts/workers/dvn/src/tests/mod.rs +0 -1
  256. package/contracts/workers/dvn/src/tests/setup.rs +4 -10
  257. package/contracts/workers/executor-helper/src/tests/executor_helper.rs +279 -0
  258. package/contracts/workers/executor-helper/src/tests/setup.rs +106 -1
  259. package/contracts/workers/worker/src/worker.rs +1 -1
  260. package/docs/oft-guide.md +5 -5
  261. package/package.json +5 -7
  262. package/sdk/.turbo/turbo-test.log +662 -466
  263. package/sdk/LICENSE +23 -0
  264. package/sdk/dist/generated/bml.d.ts +101 -106
  265. package/sdk/dist/generated/bml.js +108 -26
  266. package/sdk/dist/generated/counter.d.ts +123 -484
  267. package/sdk/dist/generated/counter.js +103 -25
  268. package/sdk/dist/generated/dvn.d.ts +141 -699
  269. package/sdk/dist/generated/dvn.js +106 -28
  270. package/sdk/dist/generated/dvn_fee_lib.d.ts +31 -248
  271. package/sdk/dist/generated/dvn_fee_lib.js +27 -24
  272. package/sdk/dist/generated/endpoint.d.ts +158 -836
  273. package/sdk/dist/generated/endpoint.js +107 -29
  274. package/sdk/dist/generated/executor.d.ts +139 -671
  275. package/sdk/dist/generated/executor.js +106 -28
  276. package/sdk/dist/generated/executor_fee_lib.d.ts +109 -264
  277. package/sdk/dist/generated/executor_fee_lib.js +106 -28
  278. package/sdk/dist/generated/executor_helper.d.ts +95 -92
  279. package/sdk/dist/generated/executor_helper.js +103 -25
  280. package/sdk/dist/generated/layerzero_view.d.ts +178 -335
  281. package/sdk/dist/generated/layerzero_view.js +172 -33
  282. package/sdk/dist/generated/oft.d.ts +137 -680
  283. package/sdk/dist/generated/oft.js +103 -25
  284. package/sdk/dist/generated/price_feed.d.ts +45 -444
  285. package/sdk/dist/generated/price_feed.js +27 -24
  286. package/sdk/dist/generated/sml.d.ts +119 -428
  287. package/sdk/dist/generated/sml.js +103 -25
  288. package/sdk/dist/generated/treasury.d.ts +109 -288
  289. package/sdk/dist/generated/treasury.js +103 -25
  290. package/sdk/dist/generated/uln302.d.ts +190 -527
  291. package/sdk/dist/generated/uln302.js +170 -31
  292. package/sdk/dist/generated/upgrader.d.ts +14 -34
  293. package/sdk/dist/generated/upgrader.js +24 -21
  294. package/sdk/package.json +3 -4
  295. package/sdk/test/counter-sml.test.ts +218 -142
  296. package/sdk/test/counter-uln.test.ts +189 -145
  297. package/sdk/test/oft-sml.test.ts +173 -156
  298. package/sdk/test/suites/constants.ts +7 -1
  299. package/sdk/test/suites/globalSetup.ts +140 -74
  300. package/sdk/turbo.json +1 -1
  301. package/tools/ts-bindings-gen/Cargo.toml +4 -4
  302. package/tools/ts-bindings-gen/src/main.rs +4 -0
  303. package/turbo.json +3 -0
  304. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +0 -1072
  305. package/contracts/endpoint-v2/src/constants.rs +0 -52
  306. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +0 -12
  307. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +0 -7
  308. package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +0 -20
  309. package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +0 -15
  310. package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +0 -16
  311. package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +0 -26
  312. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +0 -21
  313. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +0 -12
  314. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +0 -7
  315. package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +0 -14
  316. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +0 -14
  317. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +0 -16
  318. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +0 -15
  319. package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +0 -14
  320. package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +0 -19
  321. package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +0 -15
  322. package/contracts/message-libs/simple-message-lib/src/test.rs +0 -280
  323. package/contracts/oapps/oapp/src/macro_tests/mod.rs +0 -1
  324. package/contracts/workers/dvn/src/tests/multisig/mod.rs +0 -3
  325. package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +0 -132
  326. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +0 -109
  327. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +0 -106
  328. /package/contracts/oapps/oapp/src/{macro_tests → tests}/test_macros.rs +0 -0
@@ -27,7 +27,13 @@ export const DVN_SIGNER = new Secp256k1KeyPair(
27
27
  // DVN configuration
28
28
  export const DVN_VID = 1;
29
29
 
30
- export const EID = 30400;
30
+ // Two-chain EIDs for cross-chain testing
31
+ export const EID_A = 30401; // Chain A
32
+ export const EID_B = 30402; // Chain B
33
+
34
+ // Legacy single EID (kept for backwards compatibility)
35
+ export const EID = EID_A;
36
+
31
37
  export const NATIVE_TOKEN_ADDRESS = Asset.native().contractId(NETWORK_PASSPHRASE);
32
38
  export const ZRO_ASSET = new Asset('ZRO', DEFAULT_DEPLOYER.publicKey());
33
39
  export const ZRO_TOKEN_ADDRESS = ZRO_ASSET.contractId(NETWORK_PASSPHRASE);
@@ -17,7 +17,8 @@ import {
17
17
  DEFAULT_DEPLOYER,
18
18
  DVN_SIGNER,
19
19
  DVN_VID,
20
- EID,
20
+ EID_A,
21
+ EID_B,
21
22
  EXECUTOR_ADMIN,
22
23
  NATIVE_TOKEN_ADDRESS,
23
24
  ZRO_TOKEN_ADDRESS,
@@ -25,7 +26,11 @@ import {
25
26
  import { deployContract } from './deploy';
26
27
  import { startStellarLocalnet, stopStellarLocalnet } from './localnet';
27
28
 
28
- export interface ProtocolAddresses {
29
+ /**
30
+ * Addresses for a single chain's protocol contracts
31
+ */
32
+ export interface ChainAddresses {
33
+ eid: number;
29
34
  endpointV2: string;
30
35
  uln302: string;
31
36
  sml: string;
@@ -38,7 +43,10 @@ export interface ProtocolAddresses {
38
43
  dvn: string;
39
44
  }
40
45
 
41
- export interface ProtocolClients {
46
+ /**
47
+ * Clients for a single chain's protocol contracts
48
+ */
49
+ interface ChainClients {
42
50
  endpointClient: EndpointClient;
43
51
  uln302Client: Uln302Client;
44
52
  smlClient: SMLClient;
@@ -51,21 +59,26 @@ export interface ProtocolClients {
51
59
  dvnClient: DvnClient;
52
60
  }
53
61
 
62
+ /**
63
+ * Complete chain setup with addresses and clients
64
+ */
65
+ interface ChainSetup {
66
+ addresses: ChainAddresses;
67
+ clients: ChainClients;
68
+ }
69
+
54
70
  // Declare the injection key type for vitest
55
71
  declare module 'vitest' {
56
72
  export interface ProvidedContext {
57
- protocolAddresses: ProtocolAddresses;
73
+ chainA: ChainAddresses;
74
+ chainB: ChainAddresses;
58
75
  }
59
76
  }
60
77
 
61
78
  /**
62
- * Deploy all protocol contracts and wire them together
63
- * Returns the deployed contract addresses
79
+ * Deploy all protocol contracts for a single chain
64
80
  */
65
- async function deployProtocolContracts(): Promise<{
66
- addresses: ProtocolAddresses;
67
- clients: ProtocolClients;
68
- }> {
81
+ async function deployChainContracts(eid: number, chainLabel: string): Promise<ChainSetup> {
69
82
  const repoRoot = await getFullyQualifiedRepoRootPath();
70
83
  const wasmDir = path.join(
71
84
  repoRoot,
@@ -77,7 +90,8 @@ async function deployProtocolContracts(): Promise<{
77
90
  'release',
78
91
  );
79
92
 
80
- const addresses: ProtocolAddresses = {
93
+ const addresses: ChainAddresses = {
94
+ eid,
81
95
  endpointV2: '',
82
96
  uln302: '',
83
97
  sml: '',
@@ -91,22 +105,22 @@ async function deployProtocolContracts(): Promise<{
91
105
  };
92
106
 
93
107
  // 1. Deploy Endpoint
94
- console.log('🚀 Deploying Endpoint...');
108
+ console.log(`🚀 [${chainLabel}] Deploying Endpoint (EID: ${eid})...`);
95
109
  const endpointClient = await deployContract<EndpointClient>(
96
110
  EndpointClient,
97
111
  path.join(wasmDir, 'endpoint_v2.wasm'),
98
112
  {
99
- eid: EID,
113
+ eid: eid,
100
114
  owner: DEFAULT_DEPLOYER.publicKey(),
101
115
  native_token: NATIVE_TOKEN_ADDRESS,
102
116
  },
103
117
  DEFAULT_DEPLOYER,
104
118
  );
105
119
  addresses.endpointV2 = endpointClient.options.contractId;
106
- console.log('✅ Endpoint deployed:', addresses.endpointV2);
120
+ console.log(`✅ [${chainLabel}] Endpoint deployed:`, addresses.endpointV2);
107
121
 
108
122
  // 2. Deploy Treasury
109
- console.log('🚀 Deploying Treasury...');
123
+ console.log(`🚀 [${chainLabel}] Deploying Treasury...`);
110
124
  const treasuryClient = await deployContract<TreasuryClient>(
111
125
  TreasuryClient,
112
126
  path.join(wasmDir, 'treasury.wasm'),
@@ -114,10 +128,10 @@ async function deployProtocolContracts(): Promise<{
114
128
  DEFAULT_DEPLOYER,
115
129
  );
116
130
  addresses.treasury = treasuryClient.options.contractId;
117
- console.log('✅ Treasury deployed:', addresses.treasury);
131
+ console.log(`✅ [${chainLabel}] Treasury deployed:`, addresses.treasury);
118
132
 
119
133
  // 3. Deploy ULN302
120
- console.log('🚀 Deploying ULN302...');
134
+ console.log(`🚀 [${chainLabel}] Deploying ULN302...`);
121
135
  const uln302Client = await deployContract<Uln302Client>(
122
136
  Uln302Client,
123
137
  path.join(wasmDir, 'uln302.wasm'),
@@ -129,10 +143,10 @@ async function deployProtocolContracts(): Promise<{
129
143
  DEFAULT_DEPLOYER,
130
144
  );
131
145
  addresses.uln302 = uln302Client.options.contractId;
132
- console.log('✅ ULN302 deployed:', addresses.uln302);
146
+ console.log(`✅ [${chainLabel}] ULN302 deployed:`, addresses.uln302);
133
147
 
134
148
  // 4. Deploy SML (SimpleMessageLib)
135
- console.log('🚀 Deploying SimpleMessageLib...');
149
+ console.log(`🚀 [${chainLabel}] Deploying SimpleMessageLib...`);
136
150
  const smlClient = await deployContract<SMLClient>(
137
151
  SMLClient,
138
152
  path.join(wasmDir, 'simple_message_lib.wasm'),
@@ -144,10 +158,10 @@ async function deployProtocolContracts(): Promise<{
144
158
  DEFAULT_DEPLOYER,
145
159
  );
146
160
  addresses.sml = smlClient.options.contractId;
147
- console.log('✅ SimpleMessageLib deployed:', addresses.sml);
161
+ console.log(`✅ [${chainLabel}] SimpleMessageLib deployed:`, addresses.sml);
148
162
 
149
163
  // 5. Deploy Price Feed
150
- console.log('🚀 Deploying Price Feed...');
164
+ console.log(`🚀 [${chainLabel}] Deploying Price Feed...`);
151
165
  const priceFeedClient = await deployContract<PriceFeedClient>(
152
166
  PriceFeedClient,
153
167
  path.join(wasmDir, 'price_feed.wasm'),
@@ -158,10 +172,10 @@ async function deployProtocolContracts(): Promise<{
158
172
  DEFAULT_DEPLOYER,
159
173
  );
160
174
  addresses.priceFeed = priceFeedClient.options.contractId;
161
- console.log('✅ Price Feed deployed:', addresses.priceFeed);
175
+ console.log(`✅ [${chainLabel}] Price Feed deployed:`, addresses.priceFeed);
162
176
 
163
177
  // 6. Deploy Executor Fee Lib
164
- console.log('🚀 Deploying Executor Fee Lib...');
178
+ console.log(`🚀 [${chainLabel}] Deploying Executor Fee Lib...`);
165
179
  const executorFeeLibClient = await deployContract<ExecutorFeeLibClient>(
166
180
  ExecutorFeeLibClient,
167
181
  path.join(wasmDir, 'executor_fee_lib.wasm'),
@@ -169,10 +183,10 @@ async function deployProtocolContracts(): Promise<{
169
183
  DEFAULT_DEPLOYER,
170
184
  );
171
185
  addresses.executorFeeLib = executorFeeLibClient.options.contractId;
172
- console.log('✅ Executor Fee Lib deployed:', addresses.executorFeeLib);
186
+ console.log(`✅ [${chainLabel}] Executor Fee Lib deployed:`, addresses.executorFeeLib);
173
187
 
174
188
  // 7. Deploy DVN Fee Lib
175
- console.log('🚀 Deploying DVN Fee Lib...');
189
+ console.log(`🚀 [${chainLabel}] Deploying DVN Fee Lib...`);
176
190
  const dvnFeeLibClient = await deployContract<DvnFeeLibClient>(
177
191
  DvnFeeLibClient,
178
192
  path.join(wasmDir, 'dvn_fee_lib.wasm'),
@@ -180,10 +194,10 @@ async function deployProtocolContracts(): Promise<{
180
194
  DEFAULT_DEPLOYER,
181
195
  );
182
196
  addresses.dvnFeeLib = dvnFeeLibClient.options.contractId;
183
- console.log('✅ DVN Fee Lib deployed:', addresses.dvnFeeLib);
197
+ console.log(`✅ [${chainLabel}] DVN Fee Lib deployed:`, addresses.dvnFeeLib);
184
198
 
185
- // 8. Deploy DVN
186
- console.log('🚀 Deploying DVN...');
199
+ // 8. Deploy DVN (same signer for both chains)
200
+ console.log(`🚀 [${chainLabel}] Deploying DVN...`);
187
201
  const dvnClient = await deployContract<DvnClient>(
188
202
  DvnClient,
189
203
  path.join(wasmDir, 'dvn.wasm'),
@@ -201,10 +215,10 @@ async function deployProtocolContracts(): Promise<{
201
215
  DEFAULT_DEPLOYER,
202
216
  );
203
217
  addresses.dvn = dvnClient.options.contractId;
204
- console.log('✅ DVN deployed:', addresses.dvn);
218
+ console.log(`✅ [${chainLabel}] DVN deployed:`, addresses.dvn);
205
219
 
206
220
  // 9. Deploy Executor Helper
207
- console.log('🚀 Deploying Executor Helper...');
221
+ console.log(`🚀 [${chainLabel}] Deploying Executor Helper...`);
208
222
  const executorHelperClient = await deployContract<ExecutorHelperClient>(
209
223
  ExecutorHelperClient,
210
224
  path.join(wasmDir, 'executor_helper.wasm'),
@@ -212,10 +226,10 @@ async function deployProtocolContracts(): Promise<{
212
226
  DEFAULT_DEPLOYER,
213
227
  );
214
228
  addresses.executorHelper = executorHelperClient.options.contractId;
215
- console.log('✅ Executor Helper deployed:', addresses.executorHelper);
229
+ console.log(`✅ [${chainLabel}] Executor Helper deployed:`, addresses.executorHelper);
216
230
 
217
231
  // 10. Deploy Executor (supports both ULN302 and SML)
218
- console.log('🚀 Deploying Executor...');
232
+ console.log(`🚀 [${chainLabel}] Deploying Executor...`);
219
233
  const whitelist = [
220
234
  [addresses.executorHelper, 'native_drop_and_execute'],
221
235
  [addresses.executorHelper, 'execute'],
@@ -238,9 +252,9 @@ async function deployProtocolContracts(): Promise<{
238
252
  DEFAULT_DEPLOYER,
239
253
  );
240
254
  addresses.executor = executorClient.options.contractId;
241
- console.log('✅ Executor deployed:', addresses.executor);
255
+ console.log(`✅ [${chainLabel}] Executor deployed:`, addresses.executor);
242
256
 
243
- const clients: ProtocolClients = {
257
+ const clients: ChainClients = {
244
258
  endpointClient,
245
259
  uln302Client,
246
260
  smlClient,
@@ -257,47 +271,63 @@ async function deployProtocolContracts(): Promise<{
257
271
  }
258
272
 
259
273
  /**
260
- * Wire protocol contracts (register libraries, set defaults, configure workers)
274
+ * Wire a single chain's protocol contracts for cross-chain communication
275
+ *
276
+ * @param chain - The chain to wire (this chain)
277
+ * @param otherChain - The other chain (for cross-references)
278
+ * @param chainLabel - Label for logging
261
279
  */
262
- async function wireProtocolContracts(
263
- addresses: ProtocolAddresses,
264
- clients: ProtocolClients,
280
+ async function wireChainContracts(
281
+ chain: ChainSetup,
282
+ otherChain: ChainSetup,
283
+ chainLabel: string,
265
284
  ): Promise<void> {
285
+ const { addresses, clients } = chain;
266
286
  const { endpointClient, uln302Client, priceFeedClient, executorClient, dvnClient } = clients;
267
287
 
268
- console.log('🔗 Wiring protocol contracts...');
288
+ const thisEid = addresses.eid;
289
+ const otherEid = otherChain.addresses.eid;
290
+
291
+ console.log(
292
+ `\n🔗 [${chainLabel}] Wiring protocol contracts (EID: ${thisEid} ↔ ${otherEid})...`,
293
+ );
269
294
 
270
295
  // Register libraries
271
296
  await (await endpointClient.register_library({ new_lib: addresses.uln302 })).signAndSend();
272
297
  await (await endpointClient.register_library({ new_lib: addresses.sml })).signAndSend();
273
- console.log('✅ Libraries registered (ULN302 + SML)');
298
+ console.log(`✅ [${chainLabel}] Libraries registered (ULN302 + SML)`);
274
299
 
275
300
  // Set ZRO token
276
301
  await (await endpointClient.set_zro({ zro: ZRO_TOKEN_ADDRESS })).signAndSend();
277
- console.log('✅ ZRO token set');
302
+ console.log(`✅ [${chainLabel}] ZRO token set`);
303
+
304
+ // ========================================================================
305
+ // Configure for SENDING to the other chain (dst_eid = otherEid)
306
+ // ========================================================================
278
307
 
279
- // Configure ULN302 executor config FIRST (so is_supported_eid returns true)
308
+ // ULN302 executor config for sending to other chain
280
309
  await (
281
310
  await uln302Client.set_default_executor_configs({
282
311
  params: [
283
312
  {
284
- dst_eid: EID,
313
+ dst_eid: otherEid,
285
314
  config: { executor: addresses.executor, max_message_size: 10000 },
286
315
  },
287
316
  ],
288
317
  })
289
318
  ).signAndSend();
290
- console.log('✅ ULN302 executor config set');
319
+ console.log(`✅ [${chainLabel}] ULN302 executor config set for dst_eid=${otherEid}`);
291
320
 
292
- // Configure ULN302 send/receive configs
321
+ // ULN302 send config: when sending to otherEid, use THIS chain's DVN for fee quoting
322
+ // (The DVN needs dst_config for the destination EID to calculate fees)
293
323
  await (
294
324
  await uln302Client.set_default_send_uln_configs({
295
325
  params: [
296
326
  {
297
- eid: EID,
327
+ eid: otherEid,
298
328
  config: {
299
329
  confirmations: 1n,
300
- required_dvns: [addresses.dvn],
330
+ required_dvns: [addresses.dvn], // THIS chain's DVN (has dst_config for otherEid)
301
331
  optional_dvns: [],
302
332
  optional_dvn_threshold: 0,
303
333
  },
@@ -305,15 +335,23 @@ async function wireProtocolContracts(
305
335
  ],
306
336
  })
307
337
  ).signAndSend();
338
+ console.log(
339
+ `✅ [${chainLabel}] ULN302 send config set for eid=${otherEid} (DVN: ${addresses.dvn})`,
340
+ );
341
+
342
+ // ========================================================================
343
+ // Configure for RECEIVING from the other chain (src_eid = otherEid)
344
+ // ========================================================================
308
345
 
346
+ // ULN302 receive config: when receiving from otherEid, THIS chain's DVN verifies
309
347
  await (
310
348
  await uln302Client.set_default_receive_uln_configs({
311
349
  params: [
312
350
  {
313
- eid: EID,
351
+ eid: otherEid,
314
352
  config: {
315
353
  confirmations: 1n,
316
- required_dvns: [addresses.dvn],
354
+ required_dvns: [addresses.dvn], // THIS chain's DVN verifies incoming
317
355
  optional_dvns: [],
318
356
  optional_dvn_threshold: 0,
319
357
  },
@@ -321,22 +359,30 @@ async function wireProtocolContracts(
321
359
  ],
322
360
  })
323
361
  ).signAndSend();
324
- console.log('✅ ULN302 send/receive configs set');
362
+ console.log(
363
+ `✅ [${chainLabel}] ULN302 receive config set for eid=${otherEid} (DVN: ${addresses.dvn})`,
364
+ );
325
365
 
326
- // NOW set default send/receive libraries to ULN302 (after configs are set)
366
+ // Set default send/receive libraries for the other chain
327
367
  await (
328
- await endpointClient.set_default_send_library({ dst_eid: EID, new_lib: addresses.uln302 })
368
+ await endpointClient.set_default_send_library({
369
+ dst_eid: otherEid,
370
+ new_lib: addresses.uln302,
371
+ })
329
372
  ).signAndSend();
330
373
  await (
331
374
  await endpointClient.set_default_receive_library({
332
- src_eid: EID,
375
+ src_eid: otherEid,
333
376
  new_lib: addresses.uln302,
334
377
  grace_period: 0n,
335
378
  })
336
379
  ).signAndSend();
337
- console.log('✅ Default libraries set to ULN302');
380
+ console.log(`✅ [${chainLabel}] Default libraries set to ULN302 for eid=${otherEid}`);
381
+
382
+ // ========================================================================
383
+ // Configure Price Feed for both chains
384
+ // ========================================================================
338
385
 
339
- // Configure Price Feed
340
386
  await (
341
387
  await priceFeedClient.set_price_ratio_denominator({ denominator: 100000000000000000000n })
342
388
  ).signAndSend();
@@ -347,13 +393,14 @@ async function wireProtocolContracts(
347
393
  })
348
394
  ).signAndSend();
349
395
 
350
- const NORMALIZED_EID = EID % 30000;
396
+ // Set prices for the other chain
397
+ const NORMALIZED_OTHER_EID = otherEid % 30000;
351
398
  await (
352
399
  await priceFeedClient.set_price({
353
400
  price_updater: DEFAULT_DEPLOYER.publicKey(),
354
401
  prices: [
355
402
  {
356
- eid: NORMALIZED_EID,
403
+ eid: NORMALIZED_OTHER_EID,
357
404
  price: {
358
405
  gas_per_byte: 1,
359
406
  gas_price_in_unit: 1n,
@@ -363,15 +410,18 @@ async function wireProtocolContracts(
363
410
  ],
364
411
  })
365
412
  ).signAndSend();
366
- console.log('✅ Price Feed configured');
413
+ console.log(`✅ [${chainLabel}] Price Feed configured for eid=${otherEid}`);
414
+
415
+ // ========================================================================
416
+ // Configure Executor for sending to other chain
417
+ // ========================================================================
367
418
 
368
- // Configure Executor
369
419
  await (
370
420
  await executorClient.set_dst_config({
371
421
  admin: DEFAULT_DEPLOYER.publicKey(),
372
422
  params: [
373
423
  {
374
- dst_eid: EID,
424
+ dst_eid: otherEid,
375
425
  dst_config: {
376
426
  floor_margin_usd: 0n,
377
427
  lz_compose_base_gas: 50000n,
@@ -383,15 +433,18 @@ async function wireProtocolContracts(
383
433
  ],
384
434
  })
385
435
  ).signAndSend();
386
- console.log('✅ Executor configured');
436
+ console.log(`✅ [${chainLabel}] Executor configured for dst_eid=${otherEid}`);
437
+
438
+ // ========================================================================
439
+ // Configure DVN for verifying packets going to other chain
440
+ // ========================================================================
387
441
 
388
- // Configure DVN
389
442
  await (
390
443
  await dvnClient.set_dst_config({
391
444
  admin: DEFAULT_DEPLOYER.publicKey(),
392
445
  params: [
393
446
  {
394
- dst_eid: EID,
447
+ dst_eid: otherEid,
395
448
  config: {
396
449
  floor_margin_usd: 0n,
397
450
  gas: 100000n,
@@ -401,14 +454,14 @@ async function wireProtocolContracts(
401
454
  ],
402
455
  })
403
456
  ).signAndSend();
404
- console.log('✅ DVN configured');
457
+ console.log(`✅ [${chainLabel}] DVN configured for dst_eid=${otherEid}`);
405
458
 
406
- console.log('🎉 Protocol wiring complete!');
459
+ console.log(`🎉 [${chainLabel}] Protocol wiring complete!`);
407
460
  }
408
461
 
409
462
  /**
410
463
  * Vitest Global Setup - runs ONCE before all test files
411
- * Uses vitest's provide() to share data in memory with test files
464
+ * Deploys two complete protocol stacks (Chain A and Chain B) for cross-chain testing
412
465
  */
413
466
  export default async function globalSetup({
414
467
  provide,
@@ -420,23 +473,36 @@ export default async function globalSetup({
420
473
  await startStellarLocalnet();
421
474
 
422
475
  console.log('\n========================================');
423
- console.log('📦 GLOBAL SETUP: Deploying Protocol Contracts');
476
+ console.log('📦 GLOBAL SETUP: Deploying Protocol Contracts (Two Chains)');
424
477
  console.log('========================================\n');
425
478
 
426
- const { addresses, clients } = await deployProtocolContracts();
479
+ // Deploy Chain A
480
+ console.log('\n--- CHAIN A (EID: ' + EID_A + ') ---');
481
+ const chainA = await deployChainContracts(EID_A, 'Chain A');
482
+
483
+ // Deploy Chain B
484
+ console.log('\n--- CHAIN B (EID: ' + EID_B + ') ---');
485
+ const chainB = await deployChainContracts(EID_B, 'Chain B');
427
486
 
428
487
  console.log('\n========================================');
429
- console.log('🔗 GLOBAL SETUP: Wiring Protocol Contracts');
488
+ console.log('🔗 GLOBAL SETUP: Wiring Protocol Contracts (Cross-Chain)');
430
489
  console.log('========================================\n');
431
490
 
432
- await wireProtocolContracts(addresses, clients);
491
+ // Wire Chain A to communicate with Chain B
492
+ await wireChainContracts(chainA, chainB, 'Chain A');
493
+
494
+ // Wire Chain B to communicate with Chain A
495
+ await wireChainContracts(chainB, chainA, 'Chain B');
433
496
 
434
- // Provide addresses in memory for test files to access via inject()
435
- provide('protocolAddresses', addresses);
436
- console.log('\n✅ Protocol addresses provided to tests (in-memory)');
497
+ // Provide addresses for both chains to tests
498
+ provide('chainA', chainA.addresses);
499
+ provide('chainB', chainB.addresses);
500
+ console.log('\n✅ Chain addresses provided to tests (in-memory)');
501
+ console.log(' Chain A (EID ' + EID_A + '):', chainA.addresses.endpointV2);
502
+ console.log(' Chain B (EID ' + EID_B + '):', chainB.addresses.endpointV2);
437
503
 
438
504
  console.log('\n========================================');
439
- console.log('✅ GLOBAL SETUP COMPLETE');
505
+ console.log('✅ GLOBAL SETUP COMPLETE (Two-Chain Cross-Chain Ready)');
440
506
  console.log('========================================\n');
441
507
 
442
508
  // Return teardown function
package/sdk/turbo.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "extends": ["//"],
3
3
  "tasks": {
4
4
  "build": {
5
- "dependsOn": ["@layerzerolabs/protocol-stellar-v2#build", "^build"]
5
+ "dependsOn": ["^build"]
6
6
  }
7
7
  }
8
8
  }
@@ -9,8 +9,8 @@ name = "ts-bindings-gen"
9
9
  path = "src/main.rs"
10
10
 
11
11
  [dependencies]
12
- anyhow = "1.0"
13
- soroban-spec-typescript = "23.0.3"
14
- sha2 = "0.10"
15
- base64 = "0.22"
12
+ soroban-spec-typescript = { workspace = true }
13
+ anyhow = { workspace = true }
14
+ sha2 = { workspace = true }
15
+ base64 = { workspace = true }
16
16
 
@@ -180,6 +180,10 @@ fn main() -> Result<()> {
180
180
  }"#,
181
181
  );
182
182
 
183
+ // Also replace 'options?: MethodOptions' with 'txnOptions?: MethodOptions' for the same reason
184
+ // This handles functions that use the MethodOptions type alias instead of inline options
185
+ let ts_code = ts_code.replace(", options?: MethodOptions)", ", txnOptions?: MethodOptions)");
186
+
183
187
  // Combine imports header + embedded WASM + generated code
184
188
  let complete_code = format!("{}{}{}", generate_imports_header(), wasm_embed, ts_code);
185
189
 
package/turbo.json CHANGED
@@ -7,6 +7,9 @@
7
7
  "target/wasm32v1-none/release/*.wasm",
8
8
  "target/wasm32v1-none/release/*.d"
9
9
  ]
10
+ },
11
+ "test": {
12
+ "dependsOn": ["build", "lint"]
10
13
  }
11
14
  }
12
15
  }