@layerzerolabs/protocol-stellar-v2 0.2.21 → 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
@@ -17,7 +17,9 @@ use message_lib_common::{
17
17
  interfaces::{LayerZeroDVNClient, LayerZeroExecutorClient, LayerZeroTreasuryClient},
18
18
  packet_codec_v1, worker_options,
19
19
  };
20
- use soroban_sdk::{assert_with_error, bytes, vec, Address, Bytes, BytesN, Env, Map, Vec};
20
+ use soroban_sdk::{
21
+ address_payload::AddressPayload, assert_with_error, bytes, vec, Address, Bytes, BytesN, Env, Map, Vec,
22
+ };
21
23
  use utils::option_ext::OptionExt;
22
24
 
23
25
  // ==============================================================================
@@ -101,11 +103,11 @@ impl ISendLib for Uln302 {
101
103
  let mut zro_fee_recipients = vec![env];
102
104
  if treasury_fee != 0 {
103
105
  // The treasury contract address is used as the fixed fee recipient (rather than allowing
104
- // the treasury admin to configure a custom receiver). This is because ZRO may be issued
105
- // as a Stellar Classic Asset, which requires the recipient to have an established trustline.
106
- // If an arbitrary receiver could be configured, a malicious treasury admin could set it to
107
- // an address without a trustline, causing all token transfers to fail and effectively
108
- // DOSing the OApp. Using the contract address ensures the recipient is always valid.
106
+ // the treasury admin to configure a custom receiver). This is because a malicious treasury
107
+ // admin could set the recipient to an address that has not been created/initialized on Stellar.
108
+ // On Stellar, uninitialized accounts cannot receive any tokens, including native XLM. This
109
+ // would cause all fee payments to fail, effectively DOSing the OApp. Using the contract
110
+ // address ensures the recipient is always valid and can receive tokens.
109
111
  let treasury_fee_recipient = FeeRecipient { to: treasury_addr, amount: treasury_fee };
110
112
  if pay_in_zro {
111
113
  zro_fee_recipients.push_back(treasury_fee_recipient);
@@ -338,6 +340,13 @@ fn prepare_packet_and_options(
338
340
  packet: &OutboundPacket,
339
341
  options: &Bytes,
340
342
  ) -> (Bytes, Map<u32, Bytes>, Bytes, BytesN<32>) {
343
+ // Only allow contract addresses (C-addresses) as senders
344
+ assert_with_error!(
345
+ env,
346
+ matches!(packet.sender.to_payload(), Some(AddressPayload::ContractIdHash(_))),
347
+ Uln302Error::InvalidSenderAddress
348
+ );
349
+
341
350
  let (executor_options, dvn_options) = worker_options::split_worker_options(env, options);
342
351
  let packet_header = packet_codec_v1::encode_packet_header(env, packet);
343
352
  let payload_hash = packet_codec_v1::payload_hash(env, packet);
@@ -5,23 +5,23 @@ use soroban_sdk::{Address, BytesN};
5
5
  /// Storage for the Uln302 message library.
6
6
  #[storage]
7
7
  pub enum UlnStorage {
8
- /// The endpoint address
8
+ /// The endpoint address (set in constructor)
9
9
  #[instance(Address)]
10
10
  Endpoint,
11
11
 
12
- /// The treasury address
12
+ /// The treasury address for fee collection (set in constructor)
13
13
  #[instance(Address)]
14
14
  Treasury,
15
15
 
16
- /// The default executor configurations for a destination endpoint
16
+ /// The default executor configurations for a destination endpoint.
17
17
  #[persistent(ExecutorConfig)]
18
18
  DefaultExecutorConfigs { dst_eid: u32 },
19
19
 
20
- /// The default send ULN configurations for a destination endpoint
20
+ /// The default send ULN configurations for a destination endpoint.
21
21
  #[persistent(UlnConfig)]
22
22
  DefaultSendUlnConfigs { dst_eid: u32 },
23
23
 
24
- /// The default receive ULN configurations for a source endpoint
24
+ /// The default receive ULN configurations for a source endpoint.
25
25
  #[persistent(UlnConfig)]
26
26
  DefaultReceiveUlnConfigs { src_eid: u32 },
27
27
 
@@ -0,0 +1,71 @@
1
+ extern crate std;
2
+
3
+ use soroban_sdk::{testutils::Address as _, xdr::FromXdr, Address};
4
+
5
+ use crate::{
6
+ errors::Uln302Error,
7
+ interfaces::{ExecutorConfig, UlnConfig},
8
+ tests::setup::{setup, TestSetup},
9
+ uln302::{CONFIG_TYPE_EXECUTOR, CONFIG_TYPE_RECEIVE_ULN, CONFIG_TYPE_SEND_ULN},
10
+ };
11
+
12
+ #[test]
13
+ fn test_get_config_invalid_config_type_should_fail() {
14
+ let setup = setup();
15
+ let eid = 100u32;
16
+
17
+ // Must set defaults so the EID is considered supported.
18
+ setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
19
+
20
+ let TestSetup { env, uln302, .. } = setup;
21
+ let oapp = Address::generate(&env);
22
+
23
+ let invalid_config_type = 999u32;
24
+ let res = uln302.try_get_config(&eid, &oapp, &invalid_config_type);
25
+ assert_eq!(res.err().unwrap().ok().unwrap(), Uln302Error::InvalidConfigType.into());
26
+ }
27
+
28
+ #[test]
29
+ fn test_get_config_executor_returns_effective_executor_config_xdr() {
30
+ let setup = setup();
31
+ let eid = 100u32;
32
+ setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
33
+
34
+ let TestSetup { env, uln302, .. } = setup;
35
+ let oapp = Address::generate(&env);
36
+
37
+ let xdr = uln302.get_config(&eid, &oapp, &CONFIG_TYPE_EXECUTOR);
38
+ let decoded = ExecutorConfig::from_xdr(&env, &xdr).ok().unwrap();
39
+
40
+ assert_eq!(decoded, uln302.effective_executor_config(&oapp, &eid));
41
+ }
42
+
43
+ #[test]
44
+ fn test_get_config_send_uln_returns_effective_send_uln_config_xdr() {
45
+ let setup = setup();
46
+ let eid = 100u32;
47
+ setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
48
+
49
+ let TestSetup { env, uln302, .. } = setup;
50
+ let oapp = Address::generate(&env);
51
+
52
+ let xdr = uln302.get_config(&eid, &oapp, &CONFIG_TYPE_SEND_ULN);
53
+ let decoded = UlnConfig::from_xdr(&env, &xdr).ok().unwrap();
54
+
55
+ assert_eq!(decoded, uln302.effective_send_uln_config(&oapp, &eid));
56
+ }
57
+
58
+ #[test]
59
+ fn test_get_config_receive_uln_returns_effective_receive_uln_config_xdr() {
60
+ let setup = setup();
61
+ let eid = 100u32;
62
+ setup.set_default_configs(eid, UlnConfig::generate(&setup.env, 10, 1, 0, 0));
63
+
64
+ let TestSetup { env, uln302, .. } = setup;
65
+ let oapp = Address::generate(&env);
66
+
67
+ let xdr = uln302.get_config(&eid, &oapp, &CONFIG_TYPE_RECEIVE_ULN);
68
+ let decoded = UlnConfig::from_xdr(&env, &xdr).ok().unwrap();
69
+
70
+ assert_eq!(decoded, uln302.effective_receive_uln_config(&oapp, &eid));
71
+ }
@@ -1,4 +1,5 @@
1
1
  mod get_app_receive_uln_config;
2
2
  mod get_app_send_uln_config;
3
+ mod get_config;
3
4
  mod get_oapp_executor_config;
4
5
  mod set_config;
@@ -12,8 +12,11 @@ use soroban_sdk::{
12
12
  };
13
13
  use utils::option_ext::OptionExt;
14
14
 
15
+ /// Configuration type for executor settings (max message size, executor address)
15
16
  pub const CONFIG_TYPE_EXECUTOR: u32 = 1;
17
+ /// Configuration type for send-side ULN settings (DVNs, confirmations)
16
18
  pub const CONFIG_TYPE_SEND_ULN: u32 = 2;
19
+ /// Configuration type for receive-side ULN settings (DVNs, confirmations)
17
20
  pub const CONFIG_TYPE_RECEIVE_ULN: u32 = 3;
18
21
 
19
22
  #[lz_contract]
@@ -18,7 +18,9 @@ oapp-macros = { workspace = true }
18
18
 
19
19
  [dev-dependencies]
20
20
  soroban-sdk = { workspace = true, features = ["testutils"] }
21
+ utils = { workspace = true, features = ["testutils"] }
21
22
  simple-message-lib = { workspace = true }
23
+ blocked-message-lib = { workspace = true }
22
24
  message-lib-common = { workspace = true, features = ["testutils"] }
23
25
  endpoint-v2 = { workspace = true, features = ["testutils"] }
24
26
  executor = { workspace = true, features = ["testutils"] }
@@ -1,6 +1,7 @@
1
1
  mod setup_sml;
2
2
  mod setup_uln;
3
3
  mod signing;
4
+ mod test_with_blocked;
4
5
  mod test_with_sml;
5
6
  mod test_with_uln;
6
7
  mod utils;
@@ -63,11 +63,16 @@ pub struct TestSetup<'a> {
63
63
  }
64
64
 
65
65
  fn setup_chain<'a>(env: &Env, owner: &Address) -> ChainSetup<'a> {
66
+ // Create native token for endpoint fees
67
+ let native_sac = env.register_stellar_asset_contract_v2(owner.clone());
68
+ let native_token = native_sac.address();
69
+
66
70
  // Create ZRO token for endpoint fees
67
71
  let zro_sac = env.register_stellar_asset_contract_v2(owner.clone());
68
72
  let zro_token = zro_sac.address();
69
73
 
70
- let endpoint_address = env.register(EndpointV2, (owner,));
74
+ let eid: u32 = 30400; // Test EID
75
+ let endpoint_address = env.register(EndpointV2, (owner, eid, &native_token));
71
76
  let fee_recipient = Address::generate(env);
72
77
  let sml_address = env.register(SimpleMessageLib, (owner, &endpoint_address, &fee_recipient));
73
78
  let counter_address = env.register(Counter, (owner, &endpoint_address, owner));
@@ -78,9 +83,6 @@ fn setup_chain<'a>(env: &Env, owner: &Address) -> ChainSetup<'a> {
78
83
 
79
84
  set_zro(env, owner, &endpoint, &zro_token);
80
85
  register_library(env, owner, &endpoint, &sml.address);
81
-
82
- let eid = endpoint.eid();
83
- let native_token = endpoint.native_token();
84
86
  ChainSetup { owner: owner.clone(), endpoint, sml, counter, eid, native_token }
85
87
  }
86
88
 
@@ -352,6 +352,7 @@ pub struct TestSetup<'a> {
352
352
 
353
353
  /// Intermediate structure to hold chain infrastructure before DVN/Executor creation
354
354
  struct ChainInfra {
355
+ eid: u32,
355
356
  endpoint_address: Address,
356
357
  uln302_address: Address,
357
358
  #[allow(dead_code)]
@@ -359,6 +360,7 @@ struct ChainInfra {
359
360
  price_feed_address: Address,
360
361
  dvn_fee_lib_address: Address,
361
362
  executor_fee_lib_address: Address,
363
+ native_token: Address,
362
364
  zro_token: Address,
363
365
  admin: Address,
364
366
  deposit_address: Address,
@@ -368,12 +370,17 @@ struct ChainInfra {
368
370
 
369
371
  /// Phase 1: Create basic chain infrastructure (Endpoint, ULN302, Treasury, etc.)
370
372
  fn setup_chain_infrastructure(env: &Env, owner: &Address) -> ChainInfra {
373
+ // Create native token for endpoint fees
374
+ let native_sac = env.register_stellar_asset_contract_v2(owner.clone());
375
+ let native_token = native_sac.address();
376
+
371
377
  // Create ZRO token
372
378
  let zro_sac = env.register_stellar_asset_contract_v2(owner.clone());
373
379
  let zro_token = zro_sac.address();
374
380
 
375
381
  // Register endpoint
376
- let endpoint_address = env.register(EndpointV2, (owner,));
382
+ let eid: u32 = 30400; // Test EID
383
+ let endpoint_address = env.register(EndpointV2, (owner, eid, &native_token));
377
384
 
378
385
  // Register Treasury (real)
379
386
  let treasury_address = env.register(Treasury, (owner,));
@@ -399,12 +406,14 @@ fn setup_chain_infrastructure(env: &Env, owner: &Address) -> ChainInfra {
399
406
  let dvn_credentials = DvnCredentials::generate(1);
400
407
 
401
408
  ChainInfra {
409
+ eid,
402
410
  endpoint_address,
403
411
  uln302_address,
404
412
  treasury_address: treasury_address.clone(),
405
413
  price_feed_address,
406
414
  dvn_fee_lib_address,
407
415
  executor_fee_lib_address,
416
+ native_token,
408
417
  zro_token,
409
418
  admin,
410
419
  deposit_address,
@@ -502,16 +511,14 @@ fn finalize_chain_setup<'a>(
502
511
 
503
512
  // Create clients
504
513
  let endpoint = EndpointV2Client::new(env, &infra.endpoint_address);
505
-
506
- let native_token = endpoint.native_token();
507
-
508
514
  let uln302 = Uln302Client::new(env, &infra.uln302_address);
509
515
  let counter = CounterClient::new(env, &counter_address);
510
516
 
511
517
  set_zro(env, owner, &endpoint, &infra.zro_token);
512
518
  register_library(env, owner, &endpoint, &uln302.address);
513
519
 
514
- let eid = endpoint.eid();
520
+ let eid = infra.eid;
521
+ let native_token = infra.native_token.clone();
515
522
 
516
523
  // Set up price feed with initial prices for this chain's eid
517
524
  setup_price_feed(env, owner, &infra.price_feed_address, eid);
@@ -0,0 +1,67 @@
1
+ use crate::{
2
+ codec::MsgType,
3
+ integration_tests::{setup_sml::*, utils::*},
4
+ };
5
+ use blocked_message_lib::{BlockedMessageLib, BlockedMessageLibError};
6
+ use endpoint_v2::MessagingFee;
7
+ use soroban_sdk::{
8
+ testutils::{Address as _, MockAuth, MockAuthInvoke},
9
+ Address, Bytes, IntoVal,
10
+ };
11
+
12
+ #[test]
13
+ fn test_blocked_message_lib_quote_fails() {
14
+ let TestSetup { env, chain_a, chain_b } = wired_setup();
15
+
16
+ // Deploy and configure BlockedMessageLib as Chain A's send library to Chain B.
17
+ let blocked_lib = env.register(BlockedMessageLib, ());
18
+ register_library(&env, &chain_a.owner, &chain_a.endpoint, &blocked_lib);
19
+ set_default_send_library(&env, &chain_a.owner, &chain_a.endpoint, chain_b.eid, &blocked_lib);
20
+
21
+ let options = Bytes::new(&env);
22
+ let msg_type = MsgType::Vanilla as u32;
23
+
24
+ let result = chain_a.counter.try_quote(&chain_b.eid, &msg_type, &options, &false);
25
+ assert_eq!(result.unwrap_err().unwrap(), BlockedMessageLibError::NotImplemented.into());
26
+ }
27
+
28
+ #[test]
29
+ fn test_blocked_message_lib_send_fails() {
30
+ let TestSetup { env, chain_a, chain_b } = wired_setup();
31
+
32
+ // Deploy and configure BlockedMessageLib as Chain A's send library to Chain B.
33
+ let blocked_lib = env.register(BlockedMessageLib, ());
34
+ register_library(&env, &chain_a.owner, &chain_a.endpoint, &blocked_lib);
35
+ set_default_send_library(&env, &chain_a.owner, &chain_a.endpoint, chain_b.eid, &blocked_lib);
36
+
37
+ let sender = Address::generate(&env);
38
+ let options = Bytes::new(&env);
39
+ let msg_type = MsgType::Vanilla as u32;
40
+
41
+ // We can't quote (blocked), so pass a zero-fee payment. The send should still fail inside the send library.
42
+ let fee = MessagingFee { native_fee: 0, zro_fee: 0 };
43
+
44
+ env.mock_auths(&[MockAuth {
45
+ address: &sender,
46
+ invoke: &MockAuthInvoke {
47
+ contract: &chain_a.counter.address,
48
+ fn_name: "increment",
49
+ args: (&sender, &chain_b.eid, &msg_type, &options, &fee).into_val(&env),
50
+ sub_invokes: &[MockAuthInvoke {
51
+ contract: &chain_a.native_token,
52
+ fn_name: "transfer",
53
+ args: (&sender, &chain_a.endpoint.address, &fee.native_fee).into_val(&env),
54
+ sub_invokes: &[],
55
+ }],
56
+ },
57
+ }]);
58
+
59
+ let result = chain_a.counter.try_increment(&sender, &chain_b.eid, &msg_type, &options, &fee);
60
+ assert_eq!(result.unwrap_err().unwrap(), BlockedMessageLibError::NotImplemented.into());
61
+
62
+ // Ensure no packet was emitted.
63
+ assert!(scan_packet_sent_event(&env, &chain_a.endpoint.address).is_none());
64
+
65
+ // State should be rolled back (outbound count unchanged).
66
+ assert_eq!(chain_a.counter.outbound_count(&chain_b.eid), 0);
67
+ }
@@ -6,6 +6,7 @@ use soroban_sdk::{
6
6
 
7
7
  pub mod test_codec;
8
8
  pub mod test_counter;
9
+ pub mod test_u256_ext;
9
10
 
10
11
  pub fn mint_to(env: &Env, owner: &Address, native_token: &Address, to: &Address, amount: i128) {
11
12
  env.mock_auths(&[MockAuth {
@@ -0,0 +1,48 @@
1
+ use crate::u256_ext::U256Ext;
2
+ use soroban_sdk::{Env, U256};
3
+
4
+ #[test]
5
+ fn test_to_i128_with_small_value() {
6
+ let env = Env::default();
7
+ let val = U256::from_u128(&env, 100);
8
+ assert_eq!(val.to_i128(), Some(100i128));
9
+ }
10
+
11
+ #[test]
12
+ fn test_to_i128_with_zero() {
13
+ let env = Env::default();
14
+ let val = U256::from_u128(&env, 0);
15
+ assert_eq!(val.to_i128(), Some(0i128));
16
+ }
17
+
18
+ #[test]
19
+ fn test_to_i128_with_i128_max() {
20
+ let env = Env::default();
21
+ let val = U256::from_u128(&env, i128::MAX as u128);
22
+ assert_eq!(val.to_i128(), Some(i128::MAX));
23
+ }
24
+
25
+ #[test]
26
+ fn test_to_i128_with_value_larger_than_i128_max_returns_none() {
27
+ let env = Env::default();
28
+ // i128::MAX + 1 should not fit in i128
29
+ let val = U256::from_u128(&env, (i128::MAX as u128) + 1);
30
+ assert_eq!(val.to_i128(), None);
31
+ }
32
+
33
+ #[test]
34
+ fn test_to_i128_with_u128_max_returns_none() {
35
+ let env = Env::default();
36
+ let val = U256::from_u128(&env, u128::MAX);
37
+ assert_eq!(val.to_i128(), None);
38
+ }
39
+
40
+ #[test]
41
+ fn test_to_i128_with_high_bits_set_returns_none() {
42
+ let env = Env::default();
43
+ // Create a U256 with high 128 bits set (value > u128::MAX)
44
+ // from_parts takes (hi_hi, hi_lo, lo_hi, lo_lo) where each is u64
45
+ // Setting hi_hi or hi_lo to non-zero makes it > u128::MAX
46
+ let val = U256::from_parts(&env, 1, 0, 0, 0); // Sets bits 192-255
47
+ assert_eq!(val.to_i128(), None);
48
+ }
@@ -7,8 +7,5 @@ pub mod oapp_options_type3;
7
7
  pub mod oapp_receiver;
8
8
  pub mod oapp_sender;
9
9
 
10
- #[cfg(test)]
11
- mod macro_tests;
12
-
13
10
  #[cfg(test)]
14
11
  mod tests;
@@ -2,3 +2,4 @@ mod oapp_core;
2
2
  mod oapp_options_type3;
3
3
  mod oapp_receiver;
4
4
  mod oapp_sender;
5
+ mod test_macros;
@@ -76,7 +76,8 @@ fn setup_chain<'a>(env: &Env) -> ChainSetup<'a> {
76
76
  let oft_sac = env.register_stellar_asset_contract_v2(owner.clone());
77
77
  let oft_token = oft_sac.address();
78
78
 
79
- let endpoint_address = env.register(EndpointV2, (&owner,));
79
+ let eid: u32 = 30400; // Test EID
80
+ let endpoint_address = env.register(EndpointV2, (&owner, eid, &native_token));
80
81
  let fee_recipient = Address::generate(env);
81
82
  let sml_address = env.register(SimpleMessageLib, (&owner, &endpoint_address, &fee_recipient));
82
83
  let delegate: Option<Address> = Some(owner.clone());
@@ -101,8 +102,6 @@ fn setup_chain<'a>(env: &Env) -> ChainSetup<'a> {
101
102
  endpoint.set_zro(&zro_token);
102
103
 
103
104
  register_library(env, &owner, &endpoint, &sml.address);
104
-
105
- let eid = endpoint.eid();
106
105
  ChainSetup { eid, owner, native_token, zro_token, oft_token, endpoint, sml, oft, fee_collector }
107
106
  }
108
107
 
@@ -17,3 +17,6 @@ cfg_if::cfg_if! {
17
17
  #[cfg(test)]
18
18
  #[path = "../integration-tests/mod.rs"]
19
19
  pub mod integration_tests;
20
+
21
+ #[cfg(test)]
22
+ mod tests;
@@ -0,0 +1,3 @@
1
+ mod oft_fee;
2
+ mod pausable;
3
+ mod rate_limiter;