@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.
- package/.turbo/turbo-build.log +384 -278
- package/.turbo/turbo-lint.log +110 -78
- package/.turbo/turbo-test.log +1248 -1014
- package/Cargo.lock +130 -3
- package/Cargo.toml +2 -1
- package/contracts/common-macros/src/contract_impl.rs +6 -1
- package/contracts/common-macros/src/lib.rs +47 -8
- package/contracts/common-macros/src/ownable.rs +7 -25
- package/contracts/common-macros/src/storage.rs +1 -1
- package/contracts/common-macros/src/tests/contract_impl.rs +5 -0
- package/contracts/common-macros/src/tests/mod.rs +1 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +23 -7
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +5 -25
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__storage__snapshot_generated_storage_code.snap +48 -48
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -25
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +21 -0
- package/contracts/common-macros/src/tests/upgradeable.rs +31 -0
- package/contracts/common-macros/src/ttl_configurable.rs +14 -44
- package/contracts/common-macros/src/upgradeable.rs +76 -0
- package/contracts/endpoint-v2/src/endpoint_v2.rs +25 -1
- package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +175 -8
- package/contracts/endpoint-v2/src/tests/endpoint_v2/build_outbound_packet.rs +76 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +342 -159
- package/contracts/endpoint-v2/src/tests/endpoint_v2/delegate.rs +3 -15
- package/contracts/endpoint-v2/src/tests/endpoint_v2/initializable.rs +20 -31
- package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +126 -164
- package/contracts/endpoint-v2/src/tests/endpoint_v2/mod.rs +1 -0
- package/contracts/endpoint-v2/src/tests/endpoint_v2/native_token.rs +0 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/owner.rs +0 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/pay_messaging_fees.rs +311 -304
- package/contracts/endpoint-v2/src/tests/endpoint_v2/quote.rs +423 -96
- package/contracts/endpoint-v2/src/tests/endpoint_v2/recover_token.rs +1 -1
- package/contracts/endpoint-v2/src/tests/endpoint_v2/require_oapp_auth.rs +47 -20
- package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +373 -403
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +96 -22
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +61 -9
- package/contracts/endpoint-v2/src/tests/endpoint_v2/transfer_ownership.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/ttl_config.rs +8 -11
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verifiable.rs +81 -30
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +209 -76
- package/contracts/endpoint-v2/src/tests/endpoint_v2/zro.rs +0 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library.rs +24 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_receive_library_timeout.rs +40 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/default_send_library.rs +24 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_config.rs +108 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_library_index.rs +52 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_receive_library.rs +92 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_registered_libraries.rs +74 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/get_send_library.rs +83 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_registered_library.rs +32 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_supported_eid.rs +28 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/is_valid_receive_library.rs +261 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/mod.rs +16 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/receive_library_timeout.rs +62 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +65 -43
- package/contracts/endpoint-v2/src/tests/message_lib_manager/registered_libraries_count.rs +42 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_receive_lib_for_eid.rs +61 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_registered.rs +3 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_send_lib_for_eid.rs +59 -0
- package/contracts/endpoint-v2/src/tests/message_lib_manager/require_supported_eid.rs +15 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_config.rs +155 -51
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +114 -92
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +235 -132
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +93 -87
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +346 -245
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +406 -60
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +252 -78
- package/contracts/endpoint-v2/src/tests/message_lib_manager/timeout.rs +102 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +212 -273
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +203 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +94 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_nonce.rs +78 -248
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_payload_hash.rs +7 -282
- package/contracts/endpoint-v2/src/tests/messaging_channel/lazy_inbound_nonce.rs +6 -274
- package/contracts/endpoint-v2/src/tests/messaging_channel/mod.rs +3 -2
- package/contracts/endpoint-v2/src/tests/messaging_channel/next_guid.rs +86 -178
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +328 -212
- package/contracts/endpoint-v2/src/tests/messaging_channel/outbound.rs +68 -0
- package/contracts/endpoint-v2/src/tests/messaging_channel/outbound_nonce.rs +6 -209
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +207 -159
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +142 -153
- package/contracts/endpoint-v2/src/tests/messaging_composer/compose_queue.rs +6 -179
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +163 -221
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +90 -121
- package/contracts/endpoint-v2/src/tests/mock.rs +18 -4
- package/contracts/endpoint-v2/src/tests/util/build_payload.rs +4 -70
- package/contracts/endpoint-v2/src/tests/util/compute_guid.rs +2 -1
- package/contracts/endpoint-v2/src/tests/util/keccak256.rs +17 -106
- package/contracts/layerzero-views/Cargo.toml +35 -0
- package/contracts/layerzero-views/src/errors.rs +10 -0
- package/contracts/layerzero-views/src/layerzero_view.rs +229 -0
- package/contracts/layerzero-views/src/lib.rs +38 -0
- package/contracts/layerzero-views/src/storage.rs +18 -0
- package/contracts/layerzero-views/src/tests/layerzero_view_tests.rs +423 -0
- package/contracts/layerzero-views/src/tests/mod.rs +4 -0
- package/contracts/layerzero-views/src/tests/setup.rs +377 -0
- package/contracts/layerzero-views/src/types.rs +50 -0
- package/contracts/macro-integration-tests/Cargo.toml +30 -0
- package/contracts/macro-integration-tests/src/lib.rs +1 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/initialization.rs +62 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +22 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/only_owner_guard.rs +97 -0
- package/contracts/macro-integration-tests/tests/runtime/ownable/ownership_transfer.rs +101 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/keyed_roundtrip.rs +225 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/mod.rs +4 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/name_override_runtime.rs +52 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/ttl_extension.rs +261 -0
- package/contracts/macro-integration-tests/tests/runtime/storage/unkeyed_roundtrip.rs +137 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/configuration.rs +113 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/extend_instance_ttl.rs +50 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/freeze.rs +139 -0
- package/contracts/macro-integration-tests/tests/runtime/ttl_configurable/mod.rs +3 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +5 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/attr_not_empty.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/decreasing_discriminant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.rs +21 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_int_discriminant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/error/fail/non_unit_variant.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/attr_on_variant_allowed.rs +20 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/basic_auto_discriminants.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/error/pass/mixed_discriminants.rs +16 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_owner_missing_env.stderr +16 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/minimal_contract.rs +26 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +22 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_owner_env_param_variants.rs +46 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/invalid_storage_type_param.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/missing_storage_type_param.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_storage_kinds.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/multiple_type_params.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/no_ttl_extension_on_non_persistent.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/non_enum_input.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.rs +12 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/storage_attr_rejects_args.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/tuple_variant_rejected.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.rs +13 -0
- package/contracts/macro-integration-tests/tests/ui/storage/fail/unknown_variant_attr.stderr +7 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/default_value_on_variant.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_instance_unit_basic.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_persistent_named_fields_keyed.rs +16 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/enum_temporary_unit_option.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/name_override.rs +14 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/no_auto_ttl_extension.rs +19 -0
- package/contracts/macro-integration-tests/tests/ui/storage/pass/ttl_provider_basic.rs +15 -0
- package/contracts/macro-integration-tests/tests/ui/ttl_configurable/pass/minimal_contract.rs +44 -0
- package/contracts/macro-integration-tests/tests/ui_error.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ownable.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_storage.rs +11 -0
- package/contracts/macro-integration-tests/tests/ui_ttl_configurable.rs +12 -0
- package/contracts/message-libs/blocked-message-lib/src/lib.rs +17 -17
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/decode_packet_header.rs +64 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet.rs +58 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/encode_packet_header.rs +138 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/mod.rs +6 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload.rs +30 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/payload_hash.rs +15 -0
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1/test_helper.rs +39 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_dvn_option.rs +57 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_lz_receive_option.rs +50 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/append_native_drop_option.rs +74 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/convert_legacy_options.rs +280 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +126 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/left_pad_to_bytes32.rs +48 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/mod.rs +7 -0
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/split_worker_options.rs +139 -0
- package/contracts/message-libs/message-lib-common/src/worker_options.rs +31 -1
- package/contracts/message-libs/simple-message-lib/src/simple_message_lib.rs +2 -2
- package/contracts/message-libs/treasury/src/errors.rs +0 -1
- package/contracts/message-libs/treasury/src/lib.rs +3 -3
- package/contracts/message-libs/treasury/src/storage.rs +2 -0
- package/contracts/message-libs/treasury/src/treasury.rs +12 -13
- package/contracts/message-libs/uln-302/Cargo.toml +1 -1
- package/contracts/message-libs/uln-302/src/errors.rs +0 -5
- package/contracts/message-libs/uln-302/src/events.rs +5 -6
- package/contracts/message-libs/uln-302/src/receive_uln.rs +24 -54
- package/contracts/message-libs/uln-302/src/send_uln.rs +89 -135
- package/contracts/message-libs/uln-302/src/storage.rs +5 -5
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +5 -7
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +3 -3
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +6 -9
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_executor_configs.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +3 -3
- package/contracts/message-libs/uln-302/src/tests/setup.rs +9 -0
- package/contracts/message-libs/uln-302/src/tests/testing_utils.rs +5 -0
- package/contracts/message-libs/uln-302/src/tests/uln302/get_app_receive_uln_config.rs +1 -2
- package/contracts/message-libs/uln-302/src/tests/uln302/get_app_send_uln_config.rs +1 -2
- package/contracts/message-libs/uln-302/src/tests/uln302/set_config.rs +37 -55
- package/contracts/message-libs/uln-302/src/uln302.rs +8 -5
- package/contracts/oapps/counter/src/counter.rs +0 -1
- package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +306 -224
- package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -1
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -1
- package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_core.rs +1 -0
- package/contracts/oapps/oft/integration-tests/setup.rs +10 -3
- package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
- package/contracts/oapps/oft/src/default_oft_impl.rs +9 -3
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +5 -5
- package/contracts/oapps/oft/src/extensions/pausable.rs +1 -1
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +18 -18
- package/contracts/oapps/oft/src/oft.rs +9 -9
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
- package/contracts/oapps/oft/src/tests/extensions/setup.rs +26 -11
- package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1 -1
- package/contracts/oapps/oft/src/tests/test_send.rs +4 -4
- package/contracts/oapps/oft/src/tests/test_utils.rs +93 -74
- package/contracts/oapps/oft-std/Cargo.toml +6 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/mod.rs +3 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_oft_fee.rs +157 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_pausable.rs +162 -0
- package/contracts/oapps/oft-std/integration-tests/extensions/test_rate_limiter.rs +186 -0
- package/contracts/oapps/oft-std/integration-tests/mod.rs +3 -0
- package/contracts/oapps/oft-std/integration-tests/setup.rs +245 -0
- package/contracts/oapps/oft-std/integration-tests/utils.rs +427 -0
- package/contracts/oapps/oft-std/src/lib.rs +12 -1
- package/contracts/oapps/oft-std/src/oft.rs +122 -25
- package/contracts/upgrader/Cargo.toml +19 -0
- package/contracts/upgrader/src/lib.rs +96 -0
- package/contracts/upgrader/src/tests/mod.rs +1 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
- package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
- package/contracts/upgrader/src/tests/test_upgrader.rs +120 -0
- package/contracts/utils/src/errors.rs +6 -1
- package/contracts/utils/src/lib.rs +2 -1
- package/contracts/utils/src/ownable.rs +49 -61
- package/contracts/utils/src/tests/mod.rs +3 -1
- package/contracts/utils/src/tests/option_ext.rs +21 -0
- package/contracts/utils/src/tests/ownable.rs +10 -69
- package/contracts/utils/src/tests/ttl_configurable.rs +596 -0
- package/contracts/utils/src/tests/upgradeable.rs +288 -0
- package/contracts/utils/src/{ttl.rs → ttl_configurable.rs} +67 -52
- package/contracts/utils/src/upgradeable.rs +54 -0
- package/contracts/workers/dvn/Cargo.toml +1 -1
- package/contracts/workers/dvn/src/auth.rs +21 -32
- package/contracts/workers/dvn/src/dvn.rs +40 -3
- package/contracts/workers/dvn/src/errors.rs +1 -0
- package/contracts/workers/dvn/src/multisig.rs +10 -6
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -2
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +4 -4
- package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -2
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +46 -14
- package/contracts/workers/dvn-fee-lib/src/errors.rs +3 -2
- package/contracts/workers/dvn-fee-lib/src/lib.rs +5 -11
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +30 -16
- package/contracts/workers/executor/src/executor.rs +16 -2
- package/contracts/workers/executor-fee-lib/src/errors.rs +9 -7
- package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +154 -119
- package/contracts/workers/executor-helper/Cargo.toml +0 -5
- package/contracts/workers/executor-helper/src/lib.rs +1 -7
- package/contracts/workers/price-feed/Cargo.toml +0 -1
- package/contracts/workers/price-feed/src/errors.rs +3 -2
- package/contracts/workers/price-feed/src/lib.rs +5 -6
- package/contracts/workers/price-feed/src/price_feed.rs +39 -17
- package/contracts/workers/worker/Cargo.toml +4 -0
- package/contracts/workers/worker/src/interfaces/price_feed.rs +3 -3
- package/contracts/workers/worker/src/lib.rs +2 -2
- package/contracts/workers/worker/src/tests/mod.rs +4 -0
- package/contracts/workers/worker/src/tests/setup.rs +147 -0
- package/contracts/workers/worker/src/tests/worker.rs +501 -0
- package/contracts/workers/worker/src/worker.rs +10 -16
- package/package.json +3 -3
- package/sdk/dist/generated/bml.d.ts +40 -30
- package/sdk/dist/generated/bml.js +16 -11
- package/sdk/dist/generated/counter.d.ts +168 -134
- package/sdk/dist/generated/counter.js +26 -21
- package/sdk/dist/generated/dvn.d.ts +1932 -0
- package/sdk/dist/generated/dvn.js +288 -0
- package/sdk/dist/generated/dvn_fee_lib.d.ts +615 -0
- package/sdk/dist/generated/dvn_fee_lib.js +123 -0
- package/sdk/dist/generated/endpoint.d.ts +75 -41
- package/sdk/dist/generated/endpoint.js +22 -17
- package/sdk/dist/generated/executor.d.ts +1809 -0
- package/sdk/dist/generated/executor.js +269 -0
- package/sdk/dist/generated/executor_fee_lib.d.ts +999 -0
- package/sdk/dist/generated/executor_fee_lib.js +208 -0
- package/sdk/dist/generated/executor_helper.d.ts +869 -0
- package/sdk/dist/generated/executor_helper.js +187 -0
- package/sdk/dist/generated/oft_std.d.ts +1544 -0
- package/sdk/dist/generated/oft_std.js +271 -0
- package/sdk/dist/generated/price_feed.d.ts +1002 -0
- package/sdk/dist/generated/price_feed.js +170 -0
- package/sdk/dist/generated/sml.d.ts +75 -41
- package/sdk/dist/generated/sml.js +22 -17
- package/sdk/dist/generated/uln302.d.ts +79 -60
- package/sdk/dist/generated/uln302.js +37 -37
- package/sdk/dist/generated/upgrader.d.ts +70 -0
- package/sdk/dist/generated/upgrader.js +19 -0
- package/sdk/dist/index.d.ts +8 -0
- package/sdk/dist/index.js +11 -0
- package/sdk/package.json +4 -3
- package/sdk/src/index.ts +13 -0
- package/sdk/test/index.test.ts +0 -1
- package/sdk/test/oft.test.ts +12 -23
- package/sdk/test/suites/testUpgradeable.ts +169 -0
- package/sdk/test/upgrader.test.ts +309 -0
- package/tools/ts-bindings-gen/src/main.rs +11 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear.rs +0 -316
- package/contracts/endpoint-v2/src/tests/messaging_channel/internal.rs +0 -388
- package/contracts/message-libs/message-lib-common/src/tests/packet_codec_v1.rs +0 -162
- package/contracts/message-libs/message-lib-common/src/tests/worker_options.rs +0 -319
- package/contracts/utils/src/tests/ttl.rs +0 -421
- /package/contracts/{oapp-macros → oapps/oapp-macros}/Cargo.toml +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/lib.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_full.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_options_type3.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_receiver.rs +0 -0
- /package/contracts/{oapp-macros → oapps/oapp-macros}/src/oapp_sender.rs +0 -0
- /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::
|
|
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
|
|
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
|
-
///
|
|
191
|
-
///
|
|
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::
|
|
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
|
-
|
|
16
|
-
impl utils::ownable::OwnableInitializer for #name {
|
|
17
|
-
|
|
18
|
-
|
|
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::
|
|
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
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
source: contracts/common-macros/src/tests/contract_impl.rs
|
|
3
|
-
assertion_line:
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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
|
-
|
|
10
|
-
impl utils::ownable::OwnableInitializer for MyContract {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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 {}
|