@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
@@ -58,7 +58,7 @@ impl StorageKeys {
58
58
  let key = StorageKeys::Message(sender.clone());
59
59
  let value = env.storage().persistent().get::<_, String>(&key);
60
60
  if value.is_some() {
61
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
61
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
62
62
  env,
63
63
  ) {
64
64
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -69,7 +69,7 @@ impl StorageKeys {
69
69
  pub fn set_message(env: &soroban_sdk::Env, sender: &Address, value: &String) {
70
70
  let key = StorageKeys::Message(sender.clone());
71
71
  env.storage().persistent().set(&key, value);
72
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
72
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
73
73
  env,
74
74
  ) {
75
75
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -93,7 +93,7 @@ impl StorageKeys {
93
93
  let key = StorageKeys::Message(sender.clone());
94
94
  let exists = env.storage().persistent().has(&key);
95
95
  if exists {
96
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
96
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
97
97
  env,
98
98
  ) {
99
99
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -150,7 +150,7 @@ impl StorageKeys {
150
150
  let key = StorageKeys::Data(id, name.clone());
151
151
  let value = env.storage().persistent().get::<_, Vec<u8>>(&key);
152
152
  if value.is_some() {
153
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
153
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
154
154
  env,
155
155
  ) {
156
156
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -161,7 +161,7 @@ impl StorageKeys {
161
161
  pub fn set_data(env: &soroban_sdk::Env, id: u64, name: &String, value: &Vec<u8>) {
162
162
  let key = StorageKeys::Data(id, name.clone());
163
163
  env.storage().persistent().set(&key, value);
164
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
164
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
165
165
  env,
166
166
  ) {
167
167
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -186,7 +186,7 @@ impl StorageKeys {
186
186
  let key = StorageKeys::Data(id, name.clone());
187
187
  let exists = env.storage().persistent().has(&key);
188
188
  if exists {
189
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
189
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
190
190
  env,
191
191
  ) {
192
192
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -208,7 +208,7 @@ impl StorageKeys {
208
208
  let key = StorageKeys::Owner;
209
209
  let value = env.storage().persistent().get::<_, Address>(&key);
210
210
  if value.is_some() {
211
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
211
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
212
212
  env,
213
213
  ) {
214
214
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -219,7 +219,7 @@ impl StorageKeys {
219
219
  pub fn set_owner(env: &soroban_sdk::Env, value: &Address) {
220
220
  let key = StorageKeys::Owner;
221
221
  env.storage().persistent().set(&key, value);
222
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
222
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
223
223
  env,
224
224
  ) {
225
225
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -239,7 +239,7 @@ impl StorageKeys {
239
239
  let key = StorageKeys::Owner;
240
240
  let exists = env.storage().persistent().has(&key);
241
241
  if exists {
242
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
242
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
243
243
  env,
244
244
  ) {
245
245
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -258,7 +258,7 @@ impl StorageKeys {
258
258
  let key = StorageKeys::OptionalData(key.clone());
259
259
  let value = env.storage().persistent().get::<_, Option<Address>>(&key);
260
260
  if value.is_some() {
261
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
261
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
262
262
  env,
263
263
  ) {
264
264
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -273,7 +273,7 @@ impl StorageKeys {
273
273
  ) {
274
274
  let key = StorageKeys::OptionalData(key.clone());
275
275
  env.storage().persistent().set(&key, value);
276
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
276
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
277
277
  env,
278
278
  ) {
279
279
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -297,7 +297,7 @@ impl StorageKeys {
297
297
  let key = StorageKeys::OptionalData(key.clone());
298
298
  let exists = env.storage().persistent().has(&key);
299
299
  if exists {
300
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
300
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
301
301
  env,
302
302
  ) {
303
303
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -345,7 +345,7 @@ impl StorageKeys {
345
345
  let key = StorageKeys::UserBalance(user.clone());
346
346
  let value = env.storage().persistent().get::<_, u32>(&key);
347
347
  if value.is_some() {
348
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
348
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
349
349
  env,
350
350
  ) {
351
351
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -356,7 +356,7 @@ impl StorageKeys {
356
356
  pub fn set_user_balance(env: &soroban_sdk::Env, user: &Address, value: &u32) {
357
357
  let key = StorageKeys::UserBalance(user.clone());
358
358
  env.storage().persistent().set(&key, value);
359
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
359
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
360
360
  env,
361
361
  ) {
362
362
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -380,7 +380,7 @@ impl StorageKeys {
380
380
  let key = StorageKeys::UserBalance(user.clone());
381
381
  let exists = env.storage().persistent().has(&key);
382
382
  if exists {
383
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
383
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
384
384
  env,
385
385
  ) {
386
386
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -401,7 +401,7 @@ impl StorageKeys {
401
401
  let key = StorageKeys::AnotherVariant(key.clone());
402
402
  let value = env.storage().persistent().get::<_, u32>(&key);
403
403
  if value.is_some() {
404
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
404
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
405
405
  env,
406
406
  ) {
407
407
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -412,7 +412,7 @@ impl StorageKeys {
412
412
  pub fn set_custom(env: &soroban_sdk::Env, key: &Address, value: &u32) {
413
413
  let key = StorageKeys::AnotherVariant(key.clone());
414
414
  env.storage().persistent().set(&key, value);
415
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
415
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
416
416
  env,
417
417
  ) {
418
418
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -436,7 +436,7 @@ impl StorageKeys {
436
436
  let key = StorageKeys::AnotherVariant(key.clone());
437
437
  let exists = env.storage().persistent().has(&key);
438
438
  if exists {
439
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
439
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
440
440
  env,
441
441
  ) {
442
442
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -457,7 +457,7 @@ impl StorageKeys {
457
457
  let key = StorageKeys::U32Value(key);
458
458
  let value = env.storage().persistent().get::<_, u32>(&key);
459
459
  if value.is_some() {
460
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
460
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
461
461
  env,
462
462
  ) {
463
463
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -468,7 +468,7 @@ impl StorageKeys {
468
468
  pub fn set_u32_value(env: &soroban_sdk::Env, key: u32, value: &u32) {
469
469
  let key = StorageKeys::U32Value(key);
470
470
  env.storage().persistent().set(&key, value);
471
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
471
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
472
472
  env,
473
473
  ) {
474
474
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -492,7 +492,7 @@ impl StorageKeys {
492
492
  let key = StorageKeys::U32Value(key);
493
493
  let exists = env.storage().persistent().has(&key);
494
494
  if exists {
495
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
495
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
496
496
  env,
497
497
  ) {
498
498
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -513,7 +513,7 @@ impl StorageKeys {
513
513
  let key = StorageKeys::I64Value(key);
514
514
  let value = env.storage().persistent().get::<_, i64>(&key);
515
515
  if value.is_some() {
516
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
516
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
517
517
  env,
518
518
  ) {
519
519
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -524,7 +524,7 @@ impl StorageKeys {
524
524
  pub fn set_i64_value(env: &soroban_sdk::Env, key: i64, value: &i64) {
525
525
  let key = StorageKeys::I64Value(key);
526
526
  env.storage().persistent().set(&key, value);
527
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
527
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
528
528
  env,
529
529
  ) {
530
530
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -548,7 +548,7 @@ impl StorageKeys {
548
548
  let key = StorageKeys::I64Value(key);
549
549
  let exists = env.storage().persistent().has(&key);
550
550
  if exists {
551
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
551
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
552
552
  env,
553
553
  ) {
554
554
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -569,7 +569,7 @@ impl StorageKeys {
569
569
  let key = StorageKeys::BoolValue(key);
570
570
  let value = env.storage().persistent().get::<_, bool>(&key);
571
571
  if value.is_some() {
572
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
572
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
573
573
  env,
574
574
  ) {
575
575
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -580,7 +580,7 @@ impl StorageKeys {
580
580
  pub fn set_bool_value(env: &soroban_sdk::Env, key: bool, value: &bool) {
581
581
  let key = StorageKeys::BoolValue(key);
582
582
  env.storage().persistent().set(&key, value);
583
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
583
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
584
584
  env,
585
585
  ) {
586
586
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -604,7 +604,7 @@ impl StorageKeys {
604
604
  let key = StorageKeys::BoolValue(key);
605
605
  let exists = env.storage().persistent().has(&key);
606
606
  if exists {
607
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
607
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
608
608
  env,
609
609
  ) {
610
610
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -625,7 +625,7 @@ impl StorageKeys {
625
625
  let key = StorageKeys::U8Value(key.clone());
626
626
  let value = env.storage().persistent().get::<_, u32>(&key);
627
627
  if value.is_some() {
628
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
628
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
629
629
  env,
630
630
  ) {
631
631
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -636,7 +636,7 @@ impl StorageKeys {
636
636
  pub fn set_u8_value(env: &soroban_sdk::Env, key: &u8, value: &u32) {
637
637
  let key = StorageKeys::U8Value(key.clone());
638
638
  env.storage().persistent().set(&key, value);
639
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
639
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
640
640
  env,
641
641
  ) {
642
642
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -660,7 +660,7 @@ impl StorageKeys {
660
660
  let key = StorageKeys::U8Value(key.clone());
661
661
  let exists = env.storage().persistent().has(&key);
662
662
  if exists {
663
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
663
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
664
664
  env,
665
665
  ) {
666
666
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -681,7 +681,7 @@ impl StorageKeys {
681
681
  let key = StorageKeys::UsizeValue(key.clone());
682
682
  let value = env.storage().persistent().get::<_, u32>(&key);
683
683
  if value.is_some() {
684
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
684
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
685
685
  env,
686
686
  ) {
687
687
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -692,7 +692,7 @@ impl StorageKeys {
692
692
  pub fn set_usize_value(env: &soroban_sdk::Env, key: &usize, value: &u32) {
693
693
  let key = StorageKeys::UsizeValue(key.clone());
694
694
  env.storage().persistent().set(&key, value);
695
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
695
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
696
696
  env,
697
697
  ) {
698
698
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -716,7 +716,7 @@ impl StorageKeys {
716
716
  let key = StorageKeys::UsizeValue(key.clone());
717
717
  let exists = env.storage().persistent().has(&key);
718
718
  if exists {
719
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
719
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
720
720
  env,
721
721
  ) {
722
722
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -737,7 +737,7 @@ impl StorageKeys {
737
737
  let key = StorageKeys::StringValue(key.clone());
738
738
  let value = env.storage().persistent().get::<_, String>(&key);
739
739
  if value.is_some() {
740
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
740
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
741
741
  env,
742
742
  ) {
743
743
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -748,7 +748,7 @@ impl StorageKeys {
748
748
  pub fn set_string_value(env: &soroban_sdk::Env, key: &String, value: &String) {
749
749
  let key = StorageKeys::StringValue(key.clone());
750
750
  env.storage().persistent().set(&key, value);
751
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
751
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
752
752
  env,
753
753
  ) {
754
754
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -772,7 +772,7 @@ impl StorageKeys {
772
772
  let key = StorageKeys::StringValue(key.clone());
773
773
  let exists = env.storage().persistent().has(&key);
774
774
  if exists {
775
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
775
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
776
776
  env,
777
777
  ) {
778
778
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -793,7 +793,7 @@ impl StorageKeys {
793
793
  let key = StorageKeys::VecValue(key.clone());
794
794
  let value = env.storage().persistent().get::<_, Vec<u32>>(&key);
795
795
  if value.is_some() {
796
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
796
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
797
797
  env,
798
798
  ) {
799
799
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -804,7 +804,7 @@ impl StorageKeys {
804
804
  pub fn set_vec_value(env: &soroban_sdk::Env, key: &Vec<u32>, value: &Vec<u32>) {
805
805
  let key = StorageKeys::VecValue(key.clone());
806
806
  env.storage().persistent().set(&key, value);
807
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
807
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
808
808
  env,
809
809
  ) {
810
810
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -828,7 +828,7 @@ impl StorageKeys {
828
828
  let key = StorageKeys::VecValue(key.clone());
829
829
  let exists = env.storage().persistent().has(&key);
830
830
  if exists {
831
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
831
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
832
832
  env,
833
833
  ) {
834
834
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -849,7 +849,7 @@ impl StorageKeys {
849
849
  let key = StorageKeys::AddressValue(key.clone());
850
850
  let value = env.storage().persistent().get::<_, Address>(&key);
851
851
  if value.is_some() {
852
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
852
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
853
853
  env,
854
854
  ) {
855
855
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -860,7 +860,7 @@ impl StorageKeys {
860
860
  pub fn set_address_value(env: &soroban_sdk::Env, key: &Address, value: &Address) {
861
861
  let key = StorageKeys::AddressValue(key.clone());
862
862
  env.storage().persistent().set(&key, value);
863
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
863
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
864
864
  env,
865
865
  ) {
866
866
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -884,7 +884,7 @@ impl StorageKeys {
884
884
  let key = StorageKeys::AddressValue(key.clone());
885
885
  let exists = env.storage().persistent().has(&key);
886
886
  if exists {
887
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
887
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
888
888
  env,
889
889
  ) {
890
890
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -905,7 +905,7 @@ impl StorageKeys {
905
905
  let key = StorageKeys::UnitVariant;
906
906
  let value = env.storage().persistent().get::<_, u32>(&key);
907
907
  if value.is_some() {
908
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
908
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
909
909
  env,
910
910
  ) {
911
911
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -916,7 +916,7 @@ impl StorageKeys {
916
916
  pub fn set_unit_variant(env: &soroban_sdk::Env, value: &u32) {
917
917
  let key = StorageKeys::UnitVariant;
918
918
  env.storage().persistent().set(&key, value);
919
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
919
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
920
920
  env,
921
921
  ) {
922
922
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -936,7 +936,7 @@ impl StorageKeys {
936
936
  let key = StorageKeys::UnitVariant;
937
937
  let exists = env.storage().persistent().has(&key);
938
938
  if exists {
939
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
939
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
940
940
  env,
941
941
  ) {
942
942
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -961,7 +961,7 @@ impl StorageKeys {
961
961
  let key = StorageKeys::NamedVariant(first, second.clone(), third.clone());
962
962
  let value = env.storage().persistent().get::<_, u32>(&key);
963
963
  if value.is_some() {
964
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
964
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
965
965
  env,
966
966
  ) {
967
967
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -978,7 +978,7 @@ impl StorageKeys {
978
978
  ) {
979
979
  let key = StorageKeys::NamedVariant(first, second.clone(), third.clone());
980
980
  env.storage().persistent().set(&key, value);
981
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
981
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
982
982
  env,
983
983
  ) {
984
984
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -1014,7 +1014,7 @@ impl StorageKeys {
1014
1014
  let key = StorageKeys::NamedVariant(first, second.clone(), third.clone());
1015
1015
  let exists = env.storage().persistent().has(&key);
1016
1016
  if exists {
1017
- if let Some(utils::ttl::TtlConfig { threshold, extend_to }) = utils::ttl::TtlConfigStorage::persistent(
1017
+ if let Some(utils::ttl_configurable::TtlConfig { threshold, extend_to }) = utils::ttl_configurable::TtlConfigStorage::persistent(
1018
1018
  env,
1019
1019
  ) {
1020
1020
  env.storage().persistent().extend_ttl(&key, threshold, extend_to);
@@ -3,34 +3,14 @@ source: contracts/common-macros/src/tests/ttl_configurable.rs
3
3
  assertion_line: 20
4
4
  expression: formatted
5
5
  ---
6
- #[common_macros::ownable]
7
6
  pub struct MyContract {
8
7
  some_field: u32,
9
8
  }
10
- use utils::ttl::TtlConfigurable as _;
11
- #[common_macros::contract_impl]
12
- impl utils::ttl::TtlConfigurable for MyContract {
13
- #[common_macros::only_owner]
14
- fn set_ttl_configs(
15
- env: &soroban_sdk::Env,
16
- instance: &Option<utils::ttl::TtlConfig>,
17
- persistent: &Option<utils::ttl::TtlConfig>,
18
- ) {
19
- utils::ttl::DefaultTtlConfigurable::set_ttl_configs(env, instance, persistent);
20
- }
21
- fn ttl_configs(
22
- env: &soroban_sdk::Env,
23
- ) -> (Option<utils::ttl::TtlConfig>, Option<utils::ttl::TtlConfig>) {
24
- utils::ttl::DefaultTtlConfigurable::ttl_configs(env)
25
- }
26
- #[common_macros::only_owner]
27
- fn freeze_ttl_configs(env: &soroban_sdk::Env) {
28
- utils::ttl::DefaultTtlConfigurable::freeze_ttl_configs(env);
29
- }
30
- fn is_ttl_configs_frozen(env: &soroban_sdk::Env) -> bool {
31
- utils::ttl::DefaultTtlConfigurable::is_ttl_configs_frozen(env)
32
- }
33
- }
9
+ use utils::ttl_configurable::{TtlConfig, TtlConfigurable};
10
+ use utils::ownable::Ownable as _;
11
+ /// Implement the `TtlConfigurable` trait for the contract with default implementations.
12
+ #[common_macros::contract_impl(contracttrait)]
13
+ impl TtlConfigurable for MyContract {}
34
14
  /// Uses `soroban_sdk::contractimpl` directly instead of `common_macros::contract_impl`
35
15
  /// because `contract_impl` automatically extends TTL on every invocation. Since this
36
16
  /// impl block provides manual TTL extension control, auto-extension would be redundant
@@ -0,0 +1,21 @@
1
+ ---
2
+ source: contracts/common-macros/src/tests/upgradeable.rs
3
+ assertion_line: 17
4
+ expression: formatted
5
+ ---
6
+ pub struct MyContract;
7
+ use utils::upgradeable::Upgradeable as _;
8
+ soroban_sdk::contractmeta!(key = "binver", val = "0.0.1");
9
+ type MigrationData = <MyContract as utils::upgradeable::UpgradeableInternal>::MigrationData;
10
+ /// Implement the Upgradeable trait for the contract.
11
+ #[common_macros::contract_impl]
12
+ impl utils::upgradeable::Upgradeable for MyContract {
13
+ #[common_macros::only_owner]
14
+ fn upgrade(env: &soroban_sdk::Env, new_wasm_hash: soroban_sdk::BytesN<32>) {
15
+ utils::upgradeable::upgrade(env, new_wasm_hash)
16
+ }
17
+ #[common_macros::only_owner]
18
+ fn migrate(env: &soroban_sdk::Env, migration_data: &MigrationData) {
19
+ utils::upgradeable::migrate::<Self>(env, migration_data)
20
+ }
21
+ }
@@ -0,0 +1,31 @@
1
+ use quote::quote;
2
+
3
+ use crate::tests::test_helpers::{assert_panics_contains, non_struct_item_inputs};
4
+
5
+ // ============================================
6
+ // Snapshot Test: Upgradeable Code Generation
7
+ // ============================================
8
+
9
+ #[test]
10
+ fn snapshot_generated_upgradeable_code() {
11
+ let input = quote! {
12
+ pub struct MyContract;
13
+ };
14
+ let result = crate::upgradeable::generate_upgradeable_impl(input);
15
+ let formatted = prettyplease::unparse(&syn::parse2::<syn::File>(result).expect("failed to parse generated code"));
16
+
17
+ insta::assert_snapshot!(formatted);
18
+ }
19
+
20
+ // ============================================
21
+ // Error Cases: upgradeable macro non-struct input
22
+ // ============================================
23
+
24
+ #[test]
25
+ fn test_upgradeable_rejects_non_struct_inputs() {
26
+ for (case, input) in non_struct_item_inputs() {
27
+ assert_panics_contains(case, "failed to parse struct", || {
28
+ crate::upgradeable::generate_upgradeable_impl(input.clone());
29
+ });
30
+ }
31
+ }
@@ -1,54 +1,26 @@
1
- //! Default implementation macro for Stellar smart contracts.
2
- //!
3
- //! Generates a complete contract setup with:
4
- //! - `#[contract]` attribute
5
- //! - Ownable trait implementation
6
- //! - TtlConfigurable trait implementation with owner auth checks
1
+ //! TtlConfigurable macro for Stellar smart contracts.
7
2
 
8
3
  use proc_macro2::TokenStream;
9
4
  use quote::quote;
10
5
 
11
- /// Generates the TtlConfigurable trait implementation for a contract.
6
+ /// Generates the `TtlConfigurable` trait implementation for a contract.
12
7
  ///
13
- /// The implementation delegates to `DefaultTtlConfigurable` and adds
14
- /// owner authentication checks for mutating functions.
8
+ /// This macro:
9
+ /// - Implements `TtlConfigurable` using the trait's default methods (which include owner auth)
10
+ /// - Adds an `extend_instance_ttl` helper for manual TTL extension
11
+ ///
12
+ /// The contract must also implement `Ownable` (typically via `#[ownable]`).
15
13
  pub fn generate_ttl_configurable_impl(input: TokenStream) -> TokenStream {
16
14
  let item_struct: syn::ItemStruct = syn::parse2(input).unwrap_or_else(|e| panic!("failed to parse struct: {}", e));
17
15
  let name = &item_struct.ident;
18
16
 
19
- let expanded = quote! {
20
- use utils::ttl::TtlConfigurable as _;
21
-
22
- #[common_macros::contract_impl]
23
- impl utils::ttl::TtlConfigurable for #name {
24
-
25
- #[common_macros::only_owner]
26
- fn set_ttl_configs(
27
- env: &soroban_sdk::Env,
28
- instance: &Option<utils::ttl::TtlConfig>,
29
- persistent: &Option<utils::ttl::TtlConfig>,
30
- ) {
31
- utils::ttl::DefaultTtlConfigurable::set_ttl_configs(env, instance, persistent);
32
- }
33
-
34
- fn ttl_configs(
35
- env: &soroban_sdk::Env,
36
- ) -> (
37
- Option<utils::ttl::TtlConfig>,
38
- Option<utils::ttl::TtlConfig>,
39
- ) {
40
- utils::ttl::DefaultTtlConfigurable::ttl_configs(env)
41
- }
17
+ let trait_impl = quote! {
18
+ use utils::ttl_configurable::{TtlConfig, TtlConfigurable};
19
+ use utils::ownable::Ownable as _;
42
20
 
43
- #[common_macros::only_owner]
44
- fn freeze_ttl_configs(env: &soroban_sdk::Env) {
45
- utils::ttl::DefaultTtlConfigurable::freeze_ttl_configs(env);
46
- }
47
-
48
- fn is_ttl_configs_frozen(env: &soroban_sdk::Env) -> bool {
49
- utils::ttl::DefaultTtlConfigurable::is_ttl_configs_frozen(env)
50
- }
51
- }
21
+ /// Implement the `TtlConfigurable` trait for the contract with default implementations.
22
+ #[common_macros::contract_impl(contracttrait)]
23
+ impl TtlConfigurable for #name {}
52
24
  };
53
25
 
54
26
  let inherent_impl = quote! {
@@ -71,10 +43,8 @@ pub fn generate_ttl_configurable_impl(input: TokenStream) -> TokenStream {
71
43
  };
72
44
 
73
45
  quote! {
74
- #[common_macros::ownable]
75
46
  #item_struct
76
-
77
- #expanded
47
+ #trait_impl
78
48
  #inherent_impl
79
49
  }
80
50
  }