@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
|
@@ -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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
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::
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
//!
|
|
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
|
-
///
|
|
14
|
-
///
|
|
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
|
|
20
|
-
use utils::
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
}
|