@layerzerolabs/protocol-stellar-v2 0.2.12 → 0.2.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (319) hide show
  1. package/.turbo/turbo-build.log +384 -278
  2. package/.turbo/turbo-lint.log +110 -78
  3. package/.turbo/turbo-test.log +1248 -1014
  4. package/Cargo.lock +130 -3
  5. package/Cargo.toml +2 -1
  6. package/contracts/common-macros/src/contract_impl.rs +6 -1
  7. package/contracts/common-macros/src/lib.rs +47 -8
  8. package/contracts/common-macros/src/ownable.rs +7 -25
  9. package/contracts/common-macros/src/storage.rs +1 -1
  10. package/contracts/common-macros/src/tests/contract_impl.rs +5 -0
  11. package/contracts/common-macros/src/tests/mod.rs +1 -0
  12. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +23 -7
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +5 -25
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +48 -48
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -25
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +21 -0
  17. package/contracts/common-macros/src/tests/upgradeable.rs +31 -0
  18. package/contracts/common-macros/src/ttl_configurable.rs +14 -44
  19. package/contracts/common-macros/src/upgradeable.rs +76 -0
  20. package/contracts/endpoint-v2/src/endpoint_v2.rs +25 -1
  21. package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +175 -8
  22. package/contracts/endpoint-v2/src/tests/endpoint_v2/build_outbound_packet.rs +76 -0
  23. package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +342 -159
  24. package/contracts/endpoint-v2/src/tests/endpoint_v2/delegate.rs +3 -15
  25. package/contracts/endpoint-v2/src/tests/endpoint_v2/initializable.rs +20 -31
  26. package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +126 -164
  27. package/contracts/endpoint-v2/src/tests/endpoint_v2/mod.rs +1 -0
  28. package/contracts/endpoint-v2/src/tests/endpoint_v2/native_token.rs +0 -1
  29. package/contracts/endpoint-v2/src/tests/endpoint_v2/owner.rs +0 -1
  30. package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +311 -304
  31. package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +423 -96
  32. package/contracts/endpoint-v2/src/tests/endpoint_v2/recover_token.rs +1 -1
  33. package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +47 -20
  34. package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +373 -403
  35. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +96 -22
  36. package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +61 -9
  37. package/contracts/endpoint-v2/src/tests/endpoint_v2/transfer_ownership.rs +4 -4
  38. package/contracts/endpoint-v2/src/tests/endpoint_v2/ttl_config.rs +8 -11
  39. package/contracts/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +81 -30
  40. package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +209 -76
  41. package/contracts/endpoint-v2/src/tests/endpoint_v2/zro.rs +0 -1
  42. package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library.rs +24 -0
  43. package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library_timeout.rs +40 -0
  44. package/contracts/endpoint-v2/src/tests/message_lib_manager/default_send_library.rs +24 -0
  45. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_config.rs +108 -0
  46. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_library_index.rs +52 -0
  47. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_receive_library.rs +92 -0
  48. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_registered_libraries.rs +74 -0
  49. package/contracts/endpoint-v2/src/tests/message_lib_manager/get_send_library.rs +83 -0
  50. package/contracts/endpoint-v2/src/tests/message_lib_manager/is_registered_library.rs +32 -0
  51. package/contracts/endpoint-v2/src/tests/message_lib_manager/is_supported_eid.rs +28 -0
  52. package/contracts/endpoint-v2/src/tests/message_lib_manager/is_valid_receive_library.rs +261 -0
  53. package/contracts/endpoint-v2/src/tests/message_lib_manager/mod.rs +16 -0
  54. package/contracts/endpoint-v2/src/tests/message_lib_manager/receive_library_timeout.rs +62 -0
  55. package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +65 -43
  56. package/contracts/endpoint-v2/src/tests/message_lib_manager/registered_libraries_count.rs +42 -0
  57. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +61 -0
  58. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +3 -5
  59. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +59 -0
  60. package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +15 -1
  61. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_config.rs +155 -51
  62. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +114 -92
  63. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +235 -132
  64. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +93 -87
  65. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +346 -245
  66. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +406 -60
  67. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +252 -78
  68. package/contracts/endpoint-v2/src/tests/message_lib_manager/timeout.rs +102 -0
  69. package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +212 -273
  70. package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +203 -0
  71. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +94 -0
  72. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_nonce.rs +78 -248
  73. package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_payload_hash.rs +7 -282
  74. package/contracts/endpoint-v2/src/tests/messaging_channel/lazy_inbound_nonce.rs +6 -274
  75. package/contracts/endpoint-v2/src/tests/messaging_channel/mod.rs +3 -2
  76. package/contracts/endpoint-v2/src/tests/messaging_channel/next_guid.rs +86 -178
  77. package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +328 -212
  78. package/contracts/endpoint-v2/src/tests/messaging_channel/outbound.rs +68 -0
  79. package/contracts/endpoint-v2/src/tests/messaging_channel/outbound_nonce.rs +6 -209
  80. package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +207 -159
  81. package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +142 -153
  82. package/contracts/endpoint-v2/src/tests/messaging_composer/compose_queue.rs +6 -179
  83. package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +163 -221
  84. package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +90 -121
  85. package/contracts/endpoint-v2/src/tests/mock.rs +18 -4
  86. package/contracts/endpoint-v2/src/tests/util/build_payload.rs +4 -70
  87. package/contracts/endpoint-v2/src/tests/util/compute_guid.rs +2 -1
  88. package/contracts/endpoint-v2/src/tests/util/keccak256.rs +17 -106
  89. package/contracts/layerzero-views/Cargo.toml +35 -0
  90. package/contracts/layerzero-views/src/errors.rs +10 -0
  91. package/contracts/layerzero-views/src/layerzero_view.rs +229 -0
  92. package/contracts/layerzero-views/src/lib.rs +38 -0
  93. package/contracts/layerzero-views/src/storage.rs +18 -0
  94. package/contracts/layerzero-views/src/tests/layerzero_view_tests.rs +423 -0
  95. package/contracts/layerzero-views/src/tests/mod.rs +4 -0
  96. package/contracts/layerzero-views/src/tests/setup.rs +377 -0
  97. package/contracts/layerzero-views/src/types.rs +50 -0
  98. package/contracts/macro-integration-tests/Cargo.toml +30 -0
  99. package/contracts/macro-integration-tests/src/lib.rs +1 -0
  100. package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +62 -0
  101. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +22 -0
  102. package/contracts/macro-integration-tests/tests/runtime/ownable/only_owner_guard.rs +97 -0
  103. package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +101 -0
  104. package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +225 -0
  105. package/contracts/macro-integration-tests/tests/runtime/storage/mod.rs +4 -0
  106. package/contracts/macro-integration-tests/tests/runtime/storage/name_override_runtime.rs +52 -0
  107. package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +261 -0
  108. package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +137 -0
  109. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +113 -0
  110. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +50 -0
  111. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +139 -0
  112. package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +3 -0
  113. package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
  114. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +12 -0
  115. package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +7 -0
  116. package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.rs +12 -0
  117. package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.stderr +7 -0
  118. package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.rs +21 -0
  119. package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.stderr +7 -0
  120. package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.rs +13 -0
  121. package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.stderr +7 -0
  122. package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +20 -0
  123. package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +15 -0
  124. package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +16 -0
  125. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.rs +22 -0
  126. package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.stderr +16 -0
  127. package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +26 -0
  128. package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +22 -0
  129. package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_owner_env_param_variants.rs +46 -0
  130. package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.rs +13 -0
  131. package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +7 -0
  132. package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.rs +13 -0
  133. package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +7 -0
  134. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.rs +10 -0
  135. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.stderr +7 -0
  136. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.rs +12 -0
  137. package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +7 -0
  138. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.rs +10 -0
  139. package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.stderr +7 -0
  140. package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.rs +10 -0
  141. package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.stderr +7 -0
  142. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +12 -0
  143. package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +7 -0
  144. package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.rs +13 -0
  145. package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.stderr +7 -0
  146. package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.rs +13 -0
  147. package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.stderr +7 -0
  148. package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +14 -0
  149. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +14 -0
  150. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +16 -0
  151. package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +15 -0
  152. package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +14 -0
  153. package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +19 -0
  154. package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +15 -0
  155. package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +44 -0
  156. package/contracts/macro-integration-tests/tests/ui_error.rs +11 -0
  157. package/contracts/macro-integration-tests/tests/ui_ownable.rs +11 -0
  158. package/contracts/macro-integration-tests/tests/ui_storage.rs +11 -0
  159. package/contracts/macro-integration-tests/tests/ui_ttl_configurable.rs +12 -0
  160. package/contracts/message-libs/blocked-message-lib/src/lib.rs +17 -17
  161. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +64 -0
  162. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet.rs +58 -0
  163. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet_header.rs +138 -0
  164. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/mod.rs +6 -0
  165. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload.rs +30 -0
  166. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload_hash.rs +15 -0
  167. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/test_helper.rs +39 -0
  168. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_dvn_option.rs +57 -0
  169. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +50 -0
  170. package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +74 -0
  171. package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +280 -0
  172. package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +126 -0
  173. package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +48 -0
  174. package/contracts/message-libs/message-lib-common/src/tests/worker_options/mod.rs +7 -0
  175. package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +139 -0
  176. package/contracts/message-libs/message-lib-common/src/worker_options.rs +31 -1
  177. package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +2 -2
  178. package/contracts/message-libs/treasury/src/errors.rs +0 -1
  179. package/contracts/message-libs/treasury/src/lib.rs +3 -3
  180. package/contracts/message-libs/treasury/src/storage.rs +2 -0
  181. package/contracts/message-libs/treasury/src/treasury.rs +12 -13
  182. package/contracts/message-libs/uln-302/Cargo.toml +1 -1
  183. package/contracts/message-libs/uln-302/src/errors.rs +0 -5
  184. package/contracts/message-libs/uln-302/src/events.rs +5 -6
  185. package/contracts/message-libs/uln-302/src/receive_uln.rs +24 -54
  186. package/contracts/message-libs/uln-302/src/send_uln.rs +89 -135
  187. package/contracts/message-libs/uln-302/src/storage.rs +5 -5
  188. package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +5 -7
  189. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +3 -3
  190. package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +6 -9
  191. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
  192. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +3 -3
  193. package/contracts/message-libs/uln-302/src/tests/setup.rs +9 -0
  194. package/contracts/message-libs/uln-302/src/tests/testing_utils.rs +5 -0
  195. package/contracts/message-libs/uln-302/src/tests/uln302/get_app_receive_uln_config.rs +1 -2
  196. package/contracts/message-libs/uln-302/src/tests/uln302/get_app_send_uln_config.rs +1 -2
  197. package/contracts/message-libs/uln-302/src/tests/uln302/set_config.rs +37 -55
  198. package/contracts/message-libs/uln-302/src/uln302.rs +8 -5
  199. package/contracts/oapps/counter/src/counter.rs +0 -1
  200. package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +306 -224
  201. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -1
  202. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -1
  203. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -1
  204. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -1
  205. package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_core.rs +1 -0
  206. package/contracts/oapps/oft/integration-tests/setup.rs +10 -3
  207. package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
  208. package/contracts/oapps/oft/src/default_oft_impl.rs +9 -3
  209. package/contracts/oapps/oft/src/extensions/oft_fee.rs +5 -5
  210. package/contracts/oapps/oft/src/extensions/pausable.rs +1 -1
  211. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +18 -18
  212. package/contracts/oapps/oft/src/oft.rs +9 -9
  213. package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
  214. package/contracts/oapps/oft/src/tests/extensions/setup.rs +26 -11
  215. package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1 -1
  216. package/contracts/oapps/oft/src/tests/test_send.rs +4 -4
  217. package/contracts/oapps/oft/src/tests/test_utils.rs +93 -74
  218. package/contracts/oapps/oft-std/Cargo.toml +6 -0
  219. package/contracts/oapps/oft-std/integration-tests/extensions/mod.rs +3 -0
  220. package/contracts/oapps/oft-std/integration-tests/extensions/test_oft_fee.rs +157 -0
  221. package/contracts/oapps/oft-std/integration-tests/extensions/test_pausable.rs +162 -0
  222. package/contracts/oapps/oft-std/integration-tests/extensions/test_rate_limiter.rs +186 -0
  223. package/contracts/oapps/oft-std/integration-tests/mod.rs +3 -0
  224. package/contracts/oapps/oft-std/integration-tests/setup.rs +245 -0
  225. package/contracts/oapps/oft-std/integration-tests/utils.rs +427 -0
  226. package/contracts/oapps/oft-std/src/lib.rs +12 -1
  227. package/contracts/oapps/oft-std/src/oft.rs +122 -25
  228. package/contracts/upgrader/Cargo.toml +19 -0
  229. package/contracts/upgrader/src/lib.rs +96 -0
  230. package/contracts/upgrader/src/tests/mod.rs +1 -0
  231. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
  232. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
  233. package/contracts/upgrader/src/tests/test_upgrader.rs +120 -0
  234. package/contracts/utils/src/errors.rs +6 -1
  235. package/contracts/utils/src/lib.rs +2 -1
  236. package/contracts/utils/src/ownable.rs +49 -61
  237. package/contracts/utils/src/tests/mod.rs +3 -1
  238. package/contracts/utils/src/tests/option_ext.rs +21 -0
  239. package/contracts/utils/src/tests/ownable.rs +10 -69
  240. package/contracts/utils/src/tests/ttl_configurable.rs +596 -0
  241. package/contracts/utils/src/tests/upgradeable.rs +288 -0
  242. package/contracts/utils/src/{ttl.rs → ttl_configurable.rs} +67 -52
  243. package/contracts/utils/src/upgradeable.rs +54 -0
  244. package/contracts/workers/dvn/Cargo.toml +1 -1
  245. package/contracts/workers/dvn/src/auth.rs +21 -32
  246. package/contracts/workers/dvn/src/dvn.rs +40 -3
  247. package/contracts/workers/dvn/src/errors.rs +1 -0
  248. package/contracts/workers/dvn/src/multisig.rs +10 -6
  249. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -2
  250. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +4 -4
  251. package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -2
  252. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +46 -14
  253. package/contracts/workers/dvn-fee-lib/src/errors.rs +3 -2
  254. package/contracts/workers/dvn-fee-lib/src/lib.rs +5 -11
  255. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +30 -16
  256. package/contracts/workers/executor/src/executor.rs +16 -2
  257. package/contracts/workers/executor-fee-lib/src/errors.rs +9 -7
  258. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +154 -119
  259. package/contracts/workers/executor-helper/Cargo.toml +0 -5
  260. package/contracts/workers/executor-helper/src/lib.rs +1 -7
  261. package/contracts/workers/price-feed/Cargo.toml +0 -1
  262. package/contracts/workers/price-feed/src/errors.rs +3 -2
  263. package/contracts/workers/price-feed/src/lib.rs +5 -6
  264. package/contracts/workers/price-feed/src/price_feed.rs +39 -17
  265. package/contracts/workers/worker/Cargo.toml +4 -0
  266. package/contracts/workers/worker/src/interfaces/price_feed.rs +3 -3
  267. package/contracts/workers/worker/src/lib.rs +2 -2
  268. package/contracts/workers/worker/src/tests/mod.rs +4 -0
  269. package/contracts/workers/worker/src/tests/setup.rs +147 -0
  270. package/contracts/workers/worker/src/tests/worker.rs +501 -0
  271. package/contracts/workers/worker/src/worker.rs +10 -16
  272. package/package.json +3 -3
  273. package/sdk/dist/generated/bml.d.ts +40 -30
  274. package/sdk/dist/generated/bml.js +16 -11
  275. package/sdk/dist/generated/counter.d.ts +168 -134
  276. package/sdk/dist/generated/counter.js +26 -21
  277. package/sdk/dist/generated/dvn.d.ts +1932 -0
  278. package/sdk/dist/generated/dvn.js +288 -0
  279. package/sdk/dist/generated/dvn_fee_lib.d.ts +615 -0
  280. package/sdk/dist/generated/dvn_fee_lib.js +123 -0
  281. package/sdk/dist/generated/endpoint.d.ts +75 -41
  282. package/sdk/dist/generated/endpoint.js +22 -17
  283. package/sdk/dist/generated/executor.d.ts +1809 -0
  284. package/sdk/dist/generated/executor.js +269 -0
  285. package/sdk/dist/generated/executor_fee_lib.d.ts +999 -0
  286. package/sdk/dist/generated/executor_fee_lib.js +208 -0
  287. package/sdk/dist/generated/executor_helper.d.ts +869 -0
  288. package/sdk/dist/generated/executor_helper.js +187 -0
  289. package/sdk/dist/generated/oft_std.d.ts +1544 -0
  290. package/sdk/dist/generated/oft_std.js +271 -0
  291. package/sdk/dist/generated/price_feed.d.ts +1002 -0
  292. package/sdk/dist/generated/price_feed.js +170 -0
  293. package/sdk/dist/generated/sml.d.ts +75 -41
  294. package/sdk/dist/generated/sml.js +22 -17
  295. package/sdk/dist/generated/uln302.d.ts +79 -60
  296. package/sdk/dist/generated/uln302.js +37 -37
  297. package/sdk/dist/generated/upgrader.d.ts +70 -0
  298. package/sdk/dist/generated/upgrader.js +19 -0
  299. package/sdk/dist/index.d.ts +8 -0
  300. package/sdk/dist/index.js +11 -0
  301. package/sdk/package.json +4 -3
  302. package/sdk/src/index.ts +13 -0
  303. package/sdk/test/index.test.ts +0 -1
  304. package/sdk/test/oft.test.ts +12 -23
  305. package/sdk/test/suites/testUpgradeable.ts +169 -0
  306. package/sdk/test/upgrader.test.ts +309 -0
  307. package/tools/ts-bindings-gen/src/main.rs +11 -1
  308. package/contracts/endpoint-v2/src/tests/messaging_channel/clear.rs +0 -316
  309. package/contracts/endpoint-v2/src/tests/messaging_channel/internal.rs +0 -388
  310. package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1.rs +0 -162
  311. package/contracts/message-libs/message-lib-common/src/tests/worker_options.rs +0 -319
  312. package/contracts/utils/src/tests/ttl.rs +0 -421
  313. /package/contracts/{oapp-macros → oapps/oapp-macros}/Cargo.toml +0 -0
  314. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/lib.rs +0 -0
  315. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_full.rs +0 -0
  316. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_options_type3.rs +0 -0
  317. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_receiver.rs +0 -0
  318. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_sender.rs +0 -0
  319. /package/contracts/{oapp-macros → oapps/oapp-macros}/src/util.rs +0 -0
package/Cargo.lock CHANGED
@@ -609,7 +609,6 @@ dependencies = [
609
609
  name = "dvn-fee-lib"
610
610
  version = "0.0.1"
611
611
  dependencies = [
612
- "cfg-if",
613
612
  "common-macros",
614
613
  "message-lib-common",
615
614
  "soroban-sdk",
@@ -750,7 +749,6 @@ dependencies = [
750
749
  name = "executor-helper"
751
750
  version = "0.0.1"
752
751
  dependencies = [
753
- "cfg-if",
754
752
  "common-macros",
755
753
  "endpoint-v2",
756
754
  "executor",
@@ -1038,6 +1036,19 @@ dependencies = [
1038
1036
  "cpufeatures",
1039
1037
  ]
1040
1038
 
1039
+ [[package]]
1040
+ name = "layerzero-views"
1041
+ version = "0.0.1"
1042
+ dependencies = [
1043
+ "cfg-if",
1044
+ "common-macros",
1045
+ "endpoint-v2",
1046
+ "message-lib-common",
1047
+ "soroban-sdk",
1048
+ "uln302",
1049
+ "utils",
1050
+ ]
1051
+
1041
1052
  [[package]]
1042
1053
  name = "libc"
1043
1054
  version = "0.2.177"
@@ -1056,6 +1067,19 @@ version = "0.4.28"
1056
1067
  source = "registry+https://github.com/rust-lang/crates.io-index"
1057
1068
  checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
1058
1069
 
1070
+ [[package]]
1071
+ name = "macro-integration-tests"
1072
+ version = "0.0.1"
1073
+ dependencies = [
1074
+ "common-macros",
1075
+ "endpoint-v2",
1076
+ "oapp",
1077
+ "oapp-macros",
1078
+ "soroban-sdk",
1079
+ "trybuild",
1080
+ "utils",
1081
+ ]
1082
+
1059
1083
  [[package]]
1060
1084
  name = "macro-string"
1061
1085
  version = "0.1.4"
@@ -1182,9 +1206,11 @@ version = "0.0.1"
1182
1206
  dependencies = [
1183
1207
  "common-macros",
1184
1208
  "endpoint-v2",
1209
+ "message-lib-common",
1185
1210
  "oapp",
1186
1211
  "oapp-macros",
1187
1212
  "oft",
1213
+ "simple-message-lib",
1188
1214
  "soroban-sdk",
1189
1215
  "utils",
1190
1216
  ]
@@ -1259,7 +1285,6 @@ name = "price-feed"
1259
1285
  version = "0.0.1"
1260
1286
  dependencies = [
1261
1287
  "common-macros",
1262
- "endpoint-v2",
1263
1288
  "soroban-sdk",
1264
1289
  "utils",
1265
1290
  "worker",
@@ -1471,6 +1496,15 @@ dependencies = [
1471
1496
  "serde_core",
1472
1497
  ]
1473
1498
 
1499
+ [[package]]
1500
+ name = "serde_spanned"
1501
+ version = "1.0.4"
1502
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1503
+ checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776"
1504
+ dependencies = [
1505
+ "serde_core",
1506
+ ]
1507
+
1474
1508
  [[package]]
1475
1509
  name = "serde_with"
1476
1510
  version = "3.15.1"
@@ -1910,6 +1944,21 @@ dependencies = [
1910
1944
  "unicode-ident",
1911
1945
  ]
1912
1946
 
1947
+ [[package]]
1948
+ name = "target-triple"
1949
+ version = "1.0.0"
1950
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1951
+ checksum = "591ef38edfb78ca4771ee32cf494cb8771944bee237a9b91fc9c1424ac4b777b"
1952
+
1953
+ [[package]]
1954
+ name = "termcolor"
1955
+ version = "1.4.1"
1956
+ source = "registry+https://github.com/rust-lang/crates.io-index"
1957
+ checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
1958
+ dependencies = [
1959
+ "winapi-util",
1960
+ ]
1961
+
1913
1962
  [[package]]
1914
1963
  name = "thiserror"
1915
1964
  version = "1.0.69"
@@ -1961,6 +2010,45 @@ dependencies = [
1961
2010
  "time-core",
1962
2011
  ]
1963
2012
 
2013
+ [[package]]
2014
+ name = "toml"
2015
+ version = "0.9.10+spec-1.1.0"
2016
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2017
+ checksum = "0825052159284a1a8b4d6c0c86cbc801f2da5afd2b225fa548c72f2e74002f48"
2018
+ dependencies = [
2019
+ "indexmap 2.12.0",
2020
+ "serde_core",
2021
+ "serde_spanned",
2022
+ "toml_datetime",
2023
+ "toml_parser",
2024
+ "toml_writer",
2025
+ "winnow",
2026
+ ]
2027
+
2028
+ [[package]]
2029
+ name = "toml_datetime"
2030
+ version = "0.7.5+spec-1.1.0"
2031
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2032
+ checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347"
2033
+ dependencies = [
2034
+ "serde_core",
2035
+ ]
2036
+
2037
+ [[package]]
2038
+ name = "toml_parser"
2039
+ version = "1.0.6+spec-1.1.0"
2040
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2041
+ checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44"
2042
+ dependencies = [
2043
+ "winnow",
2044
+ ]
2045
+
2046
+ [[package]]
2047
+ name = "toml_writer"
2048
+ version = "1.0.6+spec-1.1.0"
2049
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2050
+ checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607"
2051
+
1964
2052
  [[package]]
1965
2053
  name = "treasury"
1966
2054
  version = "0.0.1"
@@ -1974,6 +2062,21 @@ dependencies = [
1974
2062
  "utils",
1975
2063
  ]
1976
2064
 
2065
+ [[package]]
2066
+ name = "trybuild"
2067
+ version = "1.0.114"
2068
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2069
+ checksum = "3e17e807bff86d2a06b52bca4276746584a78375055b6e45843925ce2802b335"
2070
+ dependencies = [
2071
+ "glob",
2072
+ "serde",
2073
+ "serde_derive",
2074
+ "serde_json",
2075
+ "target-triple",
2076
+ "termcolor",
2077
+ "toml",
2078
+ ]
2079
+
1977
2080
  [[package]]
1978
2081
  name = "ts-bindings-gen"
1979
2082
  version = "0.0.1"
@@ -2006,6 +2109,15 @@ version = "1.0.22"
2006
2109
  source = "registry+https://github.com/rust-lang/crates.io-index"
2007
2110
  checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
2008
2111
 
2112
+ [[package]]
2113
+ name = "upgrader"
2114
+ version = "0.0.1"
2115
+ dependencies = [
2116
+ "common-macros",
2117
+ "soroban-sdk",
2118
+ "utils",
2119
+ ]
2120
+
2009
2121
  [[package]]
2010
2122
  name = "utils"
2011
2123
  version = "0.0.1"
@@ -2136,6 +2248,15 @@ version = "0.4.0"
2136
2248
  source = "registry+https://github.com/rust-lang/crates.io-index"
2137
2249
  checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
2138
2250
 
2251
+ [[package]]
2252
+ name = "winapi-util"
2253
+ version = "0.1.11"
2254
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2255
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
2256
+ dependencies = [
2257
+ "windows-sys",
2258
+ ]
2259
+
2139
2260
  [[package]]
2140
2261
  name = "winapi-x86_64-pc-windows-gnu"
2141
2262
  version = "0.4.0"
@@ -2274,6 +2395,12 @@ version = "0.52.6"
2274
2395
  source = "registry+https://github.com/rust-lang/crates.io-index"
2275
2396
  checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
2276
2397
 
2398
+ [[package]]
2399
+ name = "winnow"
2400
+ version = "0.7.14"
2401
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2402
+ checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829"
2403
+
2277
2404
  [[package]]
2278
2405
  name = "worker"
2279
2406
  version = "0.0.1"
package/Cargo.toml CHANGED
@@ -20,8 +20,9 @@ hex-literal = "1.0.0"
20
20
  endpoint-v2 = { path = "contracts/endpoint-v2", default-features = false }
21
21
  utils = { path = "contracts/utils" }
22
22
  common-macros = { path = "contracts/common-macros" }
23
- oapp-macros = { path = "contracts/oapp-macros" }
23
+ oapp-macros = { path = "contracts/oapps/oapp-macros" }
24
24
  message-lib-common = { path = "contracts/message-libs/message-lib-common" }
25
+ uln302 = { path = "contracts/message-libs/uln-302", default-features = false }
25
26
  oapp = { path = "contracts/oapps/oapp" }
26
27
  simple-message-lib = { path = "contracts/message-libs/simple-message-lib" }
27
28
  treasury = { path = "contracts/message-libs/treasury" }
@@ -17,6 +17,11 @@ pub fn contract_impl(attr: TokenStream, input: TokenStream) -> TokenStream {
17
17
  continue;
18
18
  }
19
19
 
20
+ // Skip the constructor as TTL config is typically not set during initialization
21
+ if method.sig.ident == "__constructor" {
22
+ continue;
23
+ }
24
+
20
25
  // Skip methods without Env parameter
21
26
  let Some(env_param) = utils::find_env_param(&method.sig.inputs) else { continue };
22
27
 
@@ -26,7 +31,7 @@ pub fn contract_impl(attr: TokenStream, input: TokenStream) -> TokenStream {
26
31
 
27
32
  // Use fully qualified syntax to call ttl_configs from TtlConfigurable trait
28
33
  let extend_ttl_stmt = parse_quote! {
29
- if let Some(instance_ttl) = utils::ttl::TtlConfigStorage::instance(#env_ref) {
34
+ if let Some(instance_ttl) = utils::ttl_configurable::TtlConfigStorage::instance(#env_ref) {
30
35
  #env_ident.storage().instance().extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
31
36
  }
32
37
  };
@@ -13,6 +13,8 @@
13
13
  //! - [`only_owner`] - Owner-only access control attribute macro
14
14
  //! - [`ttl_configurable`] - TTL configuration with freeze support
15
15
  //! - [`contract_impl`] - Contract impl with automatic instance TTL extension
16
+ //! - [`upgradeable`] - Upgradeable trait implementation macro
17
+ //!
16
18
  //!
17
19
  use proc_macro::TokenStream;
18
20
 
@@ -21,6 +23,7 @@ mod error;
21
23
  mod ownable;
22
24
  mod storage;
23
25
  mod ttl_configurable;
26
+ mod upgradeable;
24
27
  mod utils;
25
28
 
26
29
  #[cfg(test)]
@@ -185,14 +188,17 @@ pub fn only_owner(_attr: TokenStream, item: TokenStream) -> TokenStream {
185
188
  // TTL Configuration Macro
186
189
  // ============================================================================
187
190
 
188
- /// Generates TtlConfigurable trait implementation with ownable support.
191
+ /// Generates TtlConfigurable trait implementation.
192
+ ///
193
+ /// This macro implements the `TtlConfigurable` trait for a contract struct,
194
+ /// providing TTL configuration management with owner-only access control.
189
195
  ///
190
- /// This macro automatically applies `#[ownable]` for owner management.:
191
- /// - `#[ownable]` - Applies the ownable macro for owner management
192
- /// - TtlConfigurable trait implementation - TTL configuration with freeze support
196
+ /// # Requirements
197
+ /// The contract must implement the `Ownable` trait (typically via `#[ownable]`).
193
198
  ///
194
199
  /// # Example
195
200
  /// ```ignore
201
+ /// #[ownable]
196
202
  /// #[ttl_configurable]
197
203
  /// pub struct MyContract;
198
204
  ///
@@ -205,13 +211,10 @@ pub fn only_owner(_attr: TokenStream, item: TokenStream) -> TokenStream {
205
211
  /// ```
206
212
  ///
207
213
  /// Generated code includes:
208
- /// - `#[ownable]` attribute on the struct (provides owner management)
209
214
  /// - `set_ttl_configs(env, instance, persistent)` - Set TTL configs (owner only)
210
215
  /// - `ttl_configs(env)` - Get current TTL configs (instance, persistent)
211
216
  /// - `freeze_ttl_configs(env)` - Permanently freeze TTL configs (owner only)
212
217
  /// - `is_ttl_configs_frozen(env)` - Check if TTL configs are frozen
213
- ///
214
- /// See [`ownable`] for the owner management methods also generated.
215
218
  #[proc_macro_attribute]
216
219
  pub fn ttl_configurable(_attr: TokenStream, item: TokenStream) -> TokenStream {
217
220
  ttl_configurable::generate_ttl_configurable_impl(item.into()).into()
@@ -255,7 +258,7 @@ pub fn ttl_configurable(_attr: TokenStream, item: TokenStream) -> TokenStream {
255
258
  /// #[soroban_sdk::contractimpl]
256
259
  /// impl MyContract {
257
260
  /// pub fn my_method(env: &Env) {
258
- /// if let Some(ttl) = <Self as ::utils::ttl::TtlConfigurable>::ttl_config(env).0 {
261
+ /// if let Some(ttl) = <Self as ::utils::ttl_configurable::TtlConfigurable>::ttl_config(env).0 {
259
262
  /// env.storage().instance().extend_ttl(ttl.threshold, ttl.extend_to);
260
263
  /// }
261
264
  /// // ... your code
@@ -266,3 +269,39 @@ pub fn ttl_configurable(_attr: TokenStream, item: TokenStream) -> TokenStream {
266
269
  pub fn contract_impl(attr: TokenStream, item: TokenStream) -> TokenStream {
267
270
  contract_impl::contract_impl(attr.into(), item.into()).into()
268
271
  }
272
+
273
+ // ============================================================================
274
+ // Upgradeable Macro
275
+ // ============================================================================
276
+
277
+ /// Generates upgradeable implementation with owner-based access control.
278
+ ///
279
+ /// Implements the `Upgradeable` trait for contract upgrade and migration functionality.
280
+ ///
281
+ /// # Requirements
282
+ /// - The contract must have `#[ownable]` applied for owner management
283
+ /// - The contract must implement `UpgradeableInternal` trait with migration logic
284
+ ///
285
+ /// # Example
286
+ /// ```ignore
287
+ /// #[ownable]
288
+ /// #[upgradeable]
289
+ /// pub struct MyContract;
290
+ ///
291
+ /// impl utils::upgradeable::UpgradeableInternal for MyContract {
292
+ /// type MigrationData = ();
293
+ ///
294
+ /// fn _migrate(env: &Env, migration_data: &Self::MigrationData) {
295
+ /// // Migration logic here
296
+ /// }
297
+ /// }
298
+ /// ```
299
+ ///
300
+ /// Generated code includes:
301
+ /// - `upgrade(env, new_wasm_hash)` - Upgrades the contract WASM (owner only)
302
+ /// - `migrate(env, migration_data)` - Runs migration after upgrade (owner only)
303
+ /// - `contractmeta!` with `binver` set to the Cargo package version (if not 0.0.0)
304
+ #[proc_macro_attribute]
305
+ pub fn upgradeable(_attr: TokenStream, item: TokenStream) -> TokenStream {
306
+ upgradeable::generate_upgradeable_impl(item.into()).into()
307
+ }
@@ -9,33 +9,15 @@ pub fn generate_ownable_impl(input: TokenStream) -> TokenStream {
9
9
  let name = &item_struct.ident;
10
10
 
11
11
  let ownable_impl = quote! {
12
- use utils::ownable::Ownable as _;
13
12
  use utils::ownable::OwnableInitializer as _;
13
+ use utils::ownable::Ownable;
14
14
 
15
- /// Implement the OwnableInitializer trait for the contract.
16
- impl utils::ownable::OwnableInitializer for #name {
17
- fn init_owner(env: &soroban_sdk::Env, owner: &soroban_sdk::Address) {
18
- <utils::ownable::DefaultOwnable as utils::ownable::OwnableInitializer>::init_owner(env, owner)
19
- }
20
- }
21
-
22
- /// Implement the Ownable trait for the contract.
23
- #[common_macros::contract_impl]
24
- impl utils::ownable::Ownable for #name {
25
- fn owner(env: &soroban_sdk::Env) -> Option<soroban_sdk::Address> {
26
- utils::ownable::DefaultOwnable::owner(env)
27
- }
28
-
29
- #[common_macros::only_owner]
30
- fn transfer_ownership(env: &soroban_sdk::Env, new_owner: &soroban_sdk::Address) {
31
- utils::ownable::DefaultOwnable::transfer_ownership(env, new_owner)
32
- }
33
-
34
- #[common_macros::only_owner]
35
- fn renounce_ownership(env: &soroban_sdk::Env) {
36
- utils::ownable::DefaultOwnable::renounce_ownership(env)
37
- }
38
- }
15
+ // Import OwnableInitializer at module level so user code can call Self::init_owner()
16
+ impl utils::ownable::OwnableInitializer for #name {}
17
+
18
+ /// Implement the Ownable trait for the contract with default implementations.
19
+ #[common_macros::contract_impl(contracttrait)]
20
+ impl Ownable for #name {}
39
21
  };
40
22
 
41
23
  quote! {
@@ -306,7 +306,7 @@ fn gen_ttl_extension(storage_type: &StorageType, use_stored_config: bool) -> Tok
306
306
  if use_stored_config {
307
307
  let method = format_ident!("{}", storage_type.accessor_name());
308
308
  quote! {
309
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::#method(env) {
309
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::#method(env) {
310
310
  #extend_call
311
311
  }
312
312
  }
@@ -48,6 +48,11 @@ fn snapshot_generated_contract_impl_code() {
48
48
  pub(crate) fn pub_crate_with_env(env: Env, value: u32) -> u32 {
49
49
  value * 7
50
50
  }
51
+
52
+ /// Constructor method - should NOT have TTL extension
53
+ pub fn __constructor(env: &Env, value: u32) {
54
+ let _ = value * 2;
55
+ }
51
56
  }
52
57
  };
53
58
 
@@ -4,4 +4,5 @@ mod ownable;
4
4
  mod storage;
5
5
  mod test_helpers;
6
6
  mod ttl_configurable;
7
+ mod upgradeable;
7
8
  mod utils;
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  source: contracts/common-macros/src/tests/contract_impl.rs
3
- assertion_line: 104
3
+ assertion_line: 109
4
4
  expression: combined
5
5
  ---
6
6
  // === Inherent Impl (no attr) ===
@@ -9,7 +9,9 @@ expression: combined
9
9
  impl MyContract {
10
10
  /// Public method with Env - should have TTL extension
11
11
  pub fn public_with_env(env: Env, value: u32) -> u32 {
12
- if let Some(instance_ttl) = utils::ttl::TtlConfigStorage::instance(&env) {
12
+ if let Some(instance_ttl) = utils::ttl_configurable::TtlConfigStorage::instance(
13
+ &env,
14
+ ) {
13
15
  env.storage()
14
16
  .instance()
15
17
  .extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
@@ -18,7 +20,9 @@ impl MyContract {
18
20
  }
19
21
  /// Public method with qualified Env path - should have TTL extension
20
22
  pub fn with_qualified_env(env: soroban_sdk::Env) -> u32 {
21
- if let Some(instance_ttl) = utils::ttl::TtlConfigStorage::instance(&env) {
23
+ if let Some(instance_ttl) = utils::ttl_configurable::TtlConfigStorage::instance(
24
+ &env,
25
+ ) {
22
26
  env.storage()
23
27
  .instance()
24
28
  .extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
@@ -27,7 +31,9 @@ impl MyContract {
27
31
  }
28
32
  /// Public method with Env not as first parameter - should have TTL extension
29
33
  pub fn env_second(value: u32, env: &Env) -> u32 {
30
- if let Some(instance_ttl) = utils::ttl::TtlConfigStorage::instance(env) {
34
+ if let Some(instance_ttl) = utils::ttl_configurable::TtlConfigStorage::instance(
35
+ env,
36
+ ) {
31
37
  env.storage()
32
38
  .instance()
33
39
  .extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
@@ -46,6 +52,10 @@ impl MyContract {
46
52
  pub(crate) fn pub_crate_with_env(env: Env, value: u32) -> u32 {
47
53
  value * 7
48
54
  }
55
+ /// Constructor method - should NOT have TTL extension
56
+ pub fn __constructor(env: &Env, value: u32) {
57
+ let _ = value * 2;
58
+ }
49
59
  }
50
60
 
51
61
 
@@ -55,7 +65,9 @@ impl MyContract {
55
65
  impl SomeTrait for MyContract {
56
66
  /// Trait method with Env - should have TTL extension
57
67
  fn trait_method_with_env(env: Env, value: u32) -> u32 {
58
- if let Some(instance_ttl) = utils::ttl::TtlConfigStorage::instance(&env) {
68
+ if let Some(instance_ttl) = utils::ttl_configurable::TtlConfigStorage::instance(
69
+ &env,
70
+ ) {
59
71
  env.storage()
60
72
  .instance()
61
73
  .extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
@@ -69,7 +81,9 @@ impl SomeTrait for MyContract {
69
81
  /// Trait method with macro attribute - should have TTL extension
70
82
  #[common_macros::only_owner]
71
83
  fn trait_method_with_only_owner_attribute(env: Env, value: u32) -> u32 {
72
- if let Some(instance_ttl) = utils::ttl::TtlConfigStorage::instance(&env) {
84
+ if let Some(instance_ttl) = utils::ttl_configurable::TtlConfigStorage::instance(
85
+ &env,
86
+ ) {
73
87
  env.storage()
74
88
  .instance()
75
89
  .extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
@@ -85,7 +99,9 @@ impl SomeTrait for MyContract {
85
99
  impl AnotherTrait for MyContract {
86
100
  /// Trait method with contracttrait attr - should have TTL extension
87
101
  fn contracttrait_method(env: &Env, value: u32) -> u32 {
88
- if let Some(instance_ttl) = utils::ttl::TtlConfigStorage::instance(env) {
102
+ if let Some(instance_ttl) = utils::ttl_configurable::TtlConfigStorage::instance(
103
+ env,
104
+ ) {
89
105
  env.storage()
90
106
  .instance()
91
107
  .extend_ttl(instance_ttl.threshold, instance_ttl.extend_to);
@@ -4,29 +4,9 @@ assertion_line: 17
4
4
  expression: formatted
5
5
  ---
6
6
  pub struct MyContract;
7
- use utils::ownable::Ownable as _;
8
7
  use utils::ownable::OwnableInitializer as _;
9
- /// Implement the OwnableInitializer trait for the contract.
10
- impl utils::ownable::OwnableInitializer for MyContract {
11
- fn init_owner(env: &soroban_sdk::Env, owner: &soroban_sdk::Address) {
12
- <utils::ownable::DefaultOwnable as utils::ownable::OwnableInitializer>::init_owner(
13
- env,
14
- owner,
15
- )
16
- }
17
- }
18
- /// Implement the Ownable trait for the contract.
19
- #[common_macros::contract_impl]
20
- impl utils::ownable::Ownable for MyContract {
21
- fn owner(env: &soroban_sdk::Env) -> Option<soroban_sdk::Address> {
22
- utils::ownable::DefaultOwnable::owner(env)
23
- }
24
- #[common_macros::only_owner]
25
- fn transfer_ownership(env: &soroban_sdk::Env, new_owner: &soroban_sdk::Address) {
26
- utils::ownable::DefaultOwnable::transfer_ownership(env, new_owner)
27
- }
28
- #[common_macros::only_owner]
29
- fn renounce_ownership(env: &soroban_sdk::Env) {
30
- utils::ownable::DefaultOwnable::renounce_ownership(env)
31
- }
32
- }
8
+ use utils::ownable::Ownable;
9
+ impl utils::ownable::OwnableInitializer for MyContract {}
10
+ /// Implement the Ownable trait for the contract with default implementations.
11
+ #[common_macros::contract_impl(contracttrait)]
12
+ impl Ownable for MyContract {}