@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.21
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 +795 -791
- package/.turbo/turbo-lint.log +325 -155
- package/.turbo/turbo-test.log +1398 -1277
- package/Cargo.lock +122 -111
- package/Cargo.toml +32 -16
- package/contracts/common-macros/Cargo.toml +7 -7
- package/contracts/common-macros/src/auth.rs +18 -37
- package/contracts/common-macros/src/contract_ttl.rs +18 -7
- package/contracts/common-macros/src/lib.rs +31 -14
- package/contracts/common-macros/src/lz_contract.rs +38 -7
- package/contracts/common-macros/src/storage.rs +251 -292
- package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_multisig_code.snap +6 -12
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__auth__snapshot_generated_ownable_code.snap +12 -17
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +2 -7
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +20 -14
- package/contracts/common-macros/src/tests/upgradeable.rs +26 -4
- package/contracts/common-macros/src/ttl_configurable.rs +2 -10
- package/contracts/common-macros/src/ttl_extendable.rs +2 -10
- package/contracts/common-macros/src/upgradeable.rs +61 -26
- package/contracts/common-macros/src/utils.rs +0 -9
- package/contracts/endpoint-v2/src/lib.rs +3 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/clear.rs +2 -2
- package/contracts/endpoint-v2/src/tests/endpoint_v2/lz_receive_alert.rs +3 -3
- package/contracts/endpoint-v2/src/tests/endpoint_v2/send.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_delegate.rs +17 -5
- package/contracts/endpoint-v2/src/tests/endpoint_v2/set_zro.rs +4 -4
- package/contracts/endpoint-v2/src/tests/endpoint_v2/verify.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/register_library.rs +2 -2
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +6 -6
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +67 -37
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_send_library.rs +5 -5
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library.rs +44 -54
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_receive_library_timeout.rs +7 -7
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_send_library.rs +8 -8
- package/contracts/endpoint-v2/src/tests/messaging_channel/burn.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_channel/nilify.rs +4 -4
- package/contracts/endpoint-v2/src/tests/messaging_channel/skip.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/clear_compose.rs +2 -2
- package/contracts/endpoint-v2/src/tests/messaging_composer/lz_compose_alert.rs +3 -3
- package/contracts/endpoint-v2/src/tests/messaging_composer/send_compose.rs +2 -2
- package/contracts/layerzero-views/Cargo.toml +0 -1
- package/contracts/layerzero-views/src/layerzero_view.rs +1 -13
- package/contracts/macro-integration-tests/Cargo.toml +5 -15
- package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +48 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/oapp_core.rs +170 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +154 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +338 -0
- package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +435 -0
- package/contracts/macro-integration-tests/tests/runtime.rs +1 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +71 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.rs +10 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.rs +8 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +38 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +96 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +64 -0
- package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +46 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr +8 -0
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/namespacing_and_imports.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui/ownable/pass/only_auth_env_param_variants.rs +1 -1
- package/contracts/macro-integration-tests/tests/ui_oapp.rs +11 -0
- package/contracts/message-libs/message-lib-common/Cargo.toml +0 -1
- package/contracts/message-libs/message-lib-common/src/errors.rs +1 -1
- package/contracts/message-libs/treasury/Cargo.toml +0 -2
- package/contracts/message-libs/treasury/src/tests/treasury_tests.rs +2 -2
- package/contracts/message-libs/uln-302/src/events.rs +4 -0
- package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/verify.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +21 -67
- 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 +2 -2
- package/contracts/oapps/counter/Cargo.toml +5 -6
- package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
- package/contracts/oapps/counter/integration_tests/utils.rs +19 -12
- package/contracts/oapps/oapp/src/errors.rs +1 -1
- package/contracts/oapps/oapp/src/interfaces/mod.rs +3 -0
- package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +47 -0
- package/contracts/oapps/oapp/src/lib.rs +1 -0
- package/contracts/oapps/oapp/src/macro_tests/test_macros.rs +4 -4
- package/contracts/oapps/oapp/src/oapp_core.rs +5 -5
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +12 -4
- package/contracts/oapps/oapp/src/oapp_receiver.rs +14 -9
- package/contracts/oapps/oapp/src/tests/mod.rs +4 -4
- package/contracts/oapps/oapp/src/tests/oapp_core.rs +223 -0
- package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +240 -0
- package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +381 -0
- package/contracts/oapps/oapp/src/tests/oapp_sender.rs +569 -0
- package/contracts/oapps/oapp-macros/Cargo.toml +8 -4
- package/contracts/oapps/oapp-macros/src/generators.rs +9 -34
- package/contracts/oapps/oapp-macros/src/lib.rs +3 -0
- package/contracts/oapps/oapp-macros/src/tests/mod.rs +2 -0
- package/contracts/oapps/oapp-macros/src/tests/oapp.rs +88 -0
- package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +86 -0
- package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +103 -0
- package/contracts/oapps/oft/integration-tests/utils.rs +28 -8
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +153 -75
- package/contracts/oapps/oft/src/extensions/pausable.rs +61 -12
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +198 -134
- package/contracts/oapps/oft/src/oft.rs +45 -50
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +1 -1
- package/contracts/oapps/oft/src/oft_types/mint_burn.rs +4 -26
- package/contracts/oapps/oft-core/Cargo.toml +1 -4
- package/contracts/oapps/oft-core/integration-tests/setup.rs +3 -3
- package/contracts/oapps/oft-core/integration-tests/utils.rs +21 -3
- package/contracts/oapps/oft-core/src/errors.rs +3 -2
- package/contracts/oapps/oft-core/src/events.rs +6 -0
- package/contracts/oapps/oft-core/src/lib.rs +1 -1
- package/contracts/oapps/oft-core/src/oft_core.rs +341 -246
- package/contracts/oapps/oft-core/src/storage.rs +7 -3
- package/contracts/oapps/oft-core/src/tests/mod.rs +1 -0
- package/contracts/oapps/oft-core/src/tests/test_decimals.rs +37 -2
- package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +323 -0
- package/contracts/oapps/oft-core/src/tests/test_send.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +61 -16
- package/contracts/upgrader/src/lib.rs +30 -57
- 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 +44 -35
- package/contracts/utils/Cargo.toml +0 -1
- package/contracts/utils/src/buffer_reader.rs +1 -0
- package/contracts/utils/src/errors.rs +4 -2
- package/contracts/utils/src/multisig.rs +17 -8
- package/contracts/utils/src/ownable.rs +6 -6
- package/contracts/utils/src/testing_utils.rs +124 -54
- package/contracts/utils/src/tests/multisig.rs +12 -12
- package/contracts/utils/src/tests/ownable.rs +6 -6
- package/contracts/utils/src/tests/testing_utils.rs +50 -167
- package/contracts/utils/src/tests/ttl_configurable.rs +5 -5
- package/contracts/utils/src/tests/upgradeable.rs +372 -175
- package/contracts/utils/src/ttl_configurable.rs +13 -7
- package/contracts/utils/src/upgradeable.rs +48 -23
- package/contracts/workers/dvn/Cargo.toml +6 -6
- package/contracts/workers/dvn/src/auth.rs +12 -42
- package/contracts/workers/dvn/src/dvn.rs +15 -40
- package/contracts/workers/dvn/src/errors.rs +0 -1
- package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
- package/contracts/workers/dvn/src/lib.rs +4 -3
- package/contracts/workers/dvn/src/tests/auth.rs +1 -1
- package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
- package/contracts/workers/dvn/src/tests/setup.rs +5 -9
- package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -2
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +38 -22
- package/contracts/workers/dvn-fee-lib/src/lib.rs +12 -2
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +17 -16
- package/contracts/workers/executor/Cargo.toml +4 -0
- package/contracts/workers/executor/src/executor.rs +15 -36
- package/contracts/workers/executor/src/lib.rs +2 -2
- package/contracts/workers/executor/src/tests/auth.rs +394 -0
- package/contracts/workers/executor/src/tests/executor.rs +410 -0
- package/contracts/workers/executor/src/tests/mod.rs +3 -0
- package/contracts/workers/executor/src/tests/setup.rs +250 -0
- package/contracts/workers/executor-fee-lib/Cargo.toml +7 -1
- package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +62 -15
- package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
- package/contracts/workers/executor-fee-lib/src/lib.rs +11 -2
- package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
- package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
- package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
- package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
- package/contracts/workers/executor-helper/Cargo.toml +0 -1
- package/contracts/workers/executor-helper/src/lib.rs +3 -0
- package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
- package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
- package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
- package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
- package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
- package/contracts/workers/price-feed/Cargo.toml +7 -1
- package/contracts/workers/price-feed/src/events.rs +1 -1
- package/contracts/workers/price-feed/src/lib.rs +12 -4
- package/contracts/workers/price-feed/src/price_feed.rs +5 -21
- package/contracts/workers/price-feed/src/storage.rs +1 -1
- package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
- package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
- package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
- package/contracts/workers/price-feed/src/types.rs +1 -1
- package/contracts/workers/worker/src/errors.rs +1 -4
- package/contracts/workers/worker/src/lib.rs +0 -2
- package/contracts/workers/worker/src/storage.rs +32 -29
- package/contracts/workers/worker/src/tests/setup.rs +2 -8
- package/contracts/workers/worker/src/tests/worker.rs +96 -74
- package/contracts/workers/worker/src/worker.rs +75 -75
- package/docs/error-spec.md +55 -0
- package/docs/layerzero-v2-on-stellar.md +447 -0
- package/docs/oapp-guide.md +212 -0
- package/docs/oft-guide.md +314 -0
- package/package.json +3 -3
- package/sdk/.turbo/turbo-test.log +268 -263
- package/sdk/dist/generated/bml.d.ts +12 -4
- package/sdk/dist/generated/bml.js +9 -7
- package/sdk/dist/generated/counter.d.ts +306 -298
- package/sdk/dist/generated/counter.js +48 -46
- package/sdk/dist/generated/dvn.d.ts +450 -411
- package/sdk/dist/generated/dvn.js +66 -64
- package/sdk/dist/generated/dvn_fee_lib.d.ts +294 -338
- package/sdk/dist/generated/dvn_fee_lib.js +33 -64
- package/sdk/dist/generated/endpoint.d.ts +108 -100
- package/sdk/dist/generated/endpoint.js +21 -19
- package/sdk/dist/generated/executor.d.ts +414 -370
- package/sdk/dist/generated/executor.js +58 -55
- package/sdk/dist/generated/executor_fee_lib.d.ts +333 -377
- package/sdk/dist/generated/executor_fee_lib.js +34 -65
- package/sdk/dist/generated/executor_helper.d.ts +26 -190
- package/sdk/dist/generated/executor_helper.js +23 -28
- package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
- package/sdk/dist/generated/layerzero_view.js +294 -0
- package/sdk/dist/generated/oft.d.ts +408 -385
- package/sdk/dist/generated/oft.js +89 -92
- package/sdk/dist/generated/price_feed.d.ts +385 -429
- package/sdk/dist/generated/price_feed.js +50 -81
- package/sdk/dist/generated/sml.d.ts +108 -100
- package/sdk/dist/generated/sml.js +21 -19
- package/sdk/dist/generated/treasury.d.ts +108 -100
- package/sdk/dist/generated/treasury.js +21 -19
- package/sdk/dist/generated/uln302.d.ts +108 -100
- package/sdk/dist/generated/uln302.js +23 -21
- package/sdk/dist/generated/upgrader.d.ts +189 -18
- package/sdk/dist/generated/upgrader.js +84 -4
- package/sdk/dist/index.d.ts +1 -0
- package/sdk/dist/index.js +2 -0
- package/sdk/package.json +1 -1
- package/sdk/src/index.ts +3 -0
- package/sdk/test/oft-sml.test.ts +4 -4
- package/sdk/test/suites/localnet.ts +84 -20
- package/sdk/test/upgrader.test.ts +2 -3
- package/tools/ts-bindings-gen/src/main.rs +2 -1
- package/contracts/ERROR_SPEC.md +0 -44
- package/contracts/endpoint-v2/ARCHITECTURE.md +0 -233
- package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +0 -175
- package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +0 -212
- package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +0 -153
- package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +0 -294
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
- /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// UI (trybuild) test: each single-trait `custom` option compiles.
|
|
2
|
+
//
|
|
3
|
+
// These are merged into one file to reduce test count while still covering:
|
|
4
|
+
// - `custom = [core]`
|
|
5
|
+
// - `custom = [sender]`
|
|
6
|
+
// - `custom = [receiver]`
|
|
7
|
+
// - `custom = [options_type3]`
|
|
8
|
+
|
|
9
|
+
use endpoint_v2::Origin;
|
|
10
|
+
use oapp::oapp_core::OAppCore;
|
|
11
|
+
use oapp::oapp_options_type3::OAppOptionsType3;
|
|
12
|
+
use oapp::oapp_receiver::{LzReceiveInternal, OAppReceiver};
|
|
13
|
+
use oapp::oapp_sender::OAppSenderInternal;
|
|
14
|
+
use oapp_macros::oapp;
|
|
15
|
+
use soroban_sdk::{contractimpl, Address, Bytes, BytesN, Env};
|
|
16
|
+
|
|
17
|
+
#[oapp(custom = [core])]
|
|
18
|
+
pub struct MyOAppCustomCore;
|
|
19
|
+
|
|
20
|
+
impl LzReceiveInternal for MyOAppCustomCore {
|
|
21
|
+
fn __lz_receive(
|
|
22
|
+
_env: &Env,
|
|
23
|
+
_origin: &Origin,
|
|
24
|
+
_guid: &BytesN<32>,
|
|
25
|
+
_message: &Bytes,
|
|
26
|
+
_extra_data: &Bytes,
|
|
27
|
+
_executor: &Address,
|
|
28
|
+
_value: i128,
|
|
29
|
+
) {
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
#[contractimpl(contracttrait)]
|
|
34
|
+
impl OAppCore for MyOAppCustomCore {
|
|
35
|
+
fn oapp_version(_env: &Env) -> (u64, u64) {
|
|
36
|
+
(9, 9)
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#[oapp(custom = [sender])]
|
|
41
|
+
pub struct MyOAppCustomSender;
|
|
42
|
+
|
|
43
|
+
impl LzReceiveInternal for MyOAppCustomSender {
|
|
44
|
+
fn __lz_receive(
|
|
45
|
+
_env: &Env,
|
|
46
|
+
_origin: &Origin,
|
|
47
|
+
_guid: &BytesN<32>,
|
|
48
|
+
_message: &Bytes,
|
|
49
|
+
_extra_data: &Bytes,
|
|
50
|
+
_executor: &Address,
|
|
51
|
+
_value: i128,
|
|
52
|
+
) {
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
impl OAppSenderInternal for MyOAppCustomSender {}
|
|
57
|
+
|
|
58
|
+
#[oapp(custom = [receiver])]
|
|
59
|
+
pub struct MyOAppCustomReceiver;
|
|
60
|
+
|
|
61
|
+
impl LzReceiveInternal for MyOAppCustomReceiver {
|
|
62
|
+
fn __lz_receive(
|
|
63
|
+
_env: &Env,
|
|
64
|
+
_origin: &Origin,
|
|
65
|
+
_guid: &BytesN<32>,
|
|
66
|
+
_message: &Bytes,
|
|
67
|
+
_extra_data: &Bytes,
|
|
68
|
+
_executor: &Address,
|
|
69
|
+
_value: i128,
|
|
70
|
+
) {
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#[contractimpl(contracttrait)]
|
|
75
|
+
impl OAppReceiver for MyOAppCustomReceiver {}
|
|
76
|
+
|
|
77
|
+
#[oapp(custom = [options_type3])]
|
|
78
|
+
pub struct MyOAppCustomOptionsType3;
|
|
79
|
+
|
|
80
|
+
impl LzReceiveInternal for MyOAppCustomOptionsType3 {
|
|
81
|
+
fn __lz_receive(
|
|
82
|
+
_env: &Env,
|
|
83
|
+
_origin: &Origin,
|
|
84
|
+
_guid: &BytesN<32>,
|
|
85
|
+
_message: &Bytes,
|
|
86
|
+
_extra_data: &Bytes,
|
|
87
|
+
_executor: &Address,
|
|
88
|
+
_value: i128,
|
|
89
|
+
) {
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
#[contractimpl(contracttrait)]
|
|
94
|
+
impl OAppOptionsType3 for MyOAppCustomOptionsType3 {}
|
|
95
|
+
|
|
96
|
+
fn main() {}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
// UI (trybuild) test: minimal `#[oapp]` usage compiles.
|
|
2
|
+
//
|
|
3
|
+
// Purpose:
|
|
4
|
+
// - Verifies `#[oapp]` applies `#[common_macros::lz_contract]` and generates default
|
|
5
|
+
// contract-trait implementations for `OAppCore`, `OAppReceiver`, and `OAppOptionsType3`.
|
|
6
|
+
// - Verifies the user must implement `LzReceiveInternal` and that the implementation is usable.
|
|
7
|
+
|
|
8
|
+
use endpoint_v2::Origin;
|
|
9
|
+
use oapp::oapp_receiver::LzReceiveInternal;
|
|
10
|
+
use oapp_macros::oapp;
|
|
11
|
+
use soroban_sdk::{contractimpl, Address, Bytes, BytesN, Env};
|
|
12
|
+
|
|
13
|
+
#[oapp]
|
|
14
|
+
pub struct MyOApp;
|
|
15
|
+
|
|
16
|
+
impl LzReceiveInternal for MyOApp {
|
|
17
|
+
fn __lz_receive(
|
|
18
|
+
_env: &Env,
|
|
19
|
+
_origin: &Origin,
|
|
20
|
+
_guid: &BytesN<32>,
|
|
21
|
+
_message: &Bytes,
|
|
22
|
+
_extra_data: &Bytes,
|
|
23
|
+
_executor: &Address,
|
|
24
|
+
_value: i128,
|
|
25
|
+
) {
|
|
26
|
+
// No-op.
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#[contractimpl]
|
|
31
|
+
impl MyOApp {
|
|
32
|
+
pub fn init(env: Env, owner: Address, endpoint: Address) {
|
|
33
|
+
// `lz_contract` (applied by `#[oapp]`) provides ownable helpers.
|
|
34
|
+
Self::init_owner(&env, &owner);
|
|
35
|
+
oapp::oapp_core::OAppCoreStorage::set_endpoint(&env, &endpoint);
|
|
36
|
+
|
|
37
|
+
// Type-check: the trait impls exist.
|
|
38
|
+
let _ = <Self as oapp::oapp_core::OAppCore>::oapp_version(&env);
|
|
39
|
+
let _ = <Self as oapp::oapp_receiver::OAppReceiver>::next_nonce(
|
|
40
|
+
&env,
|
|
41
|
+
1,
|
|
42
|
+
&BytesN::<32>::from_array(&env, &[0u8; 32]),
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#[oapp(custom = [])]
|
|
48
|
+
pub struct MyOAppCustomEmpty;
|
|
49
|
+
|
|
50
|
+
impl LzReceiveInternal for MyOAppCustomEmpty {
|
|
51
|
+
fn __lz_receive(
|
|
52
|
+
_env: &Env,
|
|
53
|
+
_origin: &Origin,
|
|
54
|
+
_guid: &BytesN<32>,
|
|
55
|
+
_message: &Bytes,
|
|
56
|
+
_extra_data: &Bytes,
|
|
57
|
+
_executor: &Address,
|
|
58
|
+
_value: i128,
|
|
59
|
+
) {
|
|
60
|
+
// No-op.
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
fn main() {}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// UI (trybuild) test: `#[oapp]` preserves struct attributes + fields.
|
|
2
|
+
|
|
3
|
+
use endpoint_v2::Origin;
|
|
4
|
+
use oapp::oapp_receiver::LzReceiveInternal;
|
|
5
|
+
use oapp_macros::oapp;
|
|
6
|
+
use soroban_sdk::{Address, Bytes, BytesN, Env};
|
|
7
|
+
|
|
8
|
+
#[oapp]
|
|
9
|
+
#[derive(Clone, Debug)]
|
|
10
|
+
pub struct MyOApp {
|
|
11
|
+
pub x: u32,
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
impl LzReceiveInternal for MyOApp {
|
|
15
|
+
fn __lz_receive(
|
|
16
|
+
_env: &Env,
|
|
17
|
+
_origin: &Origin,
|
|
18
|
+
_guid: &BytesN<32>,
|
|
19
|
+
_message: &Bytes,
|
|
20
|
+
_extra_data: &Bytes,
|
|
21
|
+
_executor: &Address,
|
|
22
|
+
_value: i128,
|
|
23
|
+
) {
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#[oapp]
|
|
28
|
+
pub struct MyOAppTuple(u32, bool);
|
|
29
|
+
|
|
30
|
+
impl LzReceiveInternal for MyOAppTuple {
|
|
31
|
+
fn __lz_receive(
|
|
32
|
+
_env: &Env,
|
|
33
|
+
_origin: &Origin,
|
|
34
|
+
_guid: &BytesN<32>,
|
|
35
|
+
_message: &Bytes,
|
|
36
|
+
_extra_data: &Bytes,
|
|
37
|
+
_executor: &Address,
|
|
38
|
+
_value: i128,
|
|
39
|
+
) {
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
fn main() {
|
|
44
|
+
// Ensure tuple fields are preserved by macro expansion.
|
|
45
|
+
let _ = MyOAppTuple(1, true);
|
|
46
|
+
}
|
package/contracts/macro-integration-tests/tests/ui/ownable/fail/only_auth_missing_env.stderr
CHANGED
|
@@ -6,6 +6,14 @@ error: custom attribute panicked
|
|
|
6
6
|
|
|
|
7
7
|
= help: message: function must have an Env argument
|
|
8
8
|
|
|
9
|
+
warning: unused import: `Address`
|
|
10
|
+
--> tests/ui/ownable/fail/only_auth_missing_env.rs:7:43
|
|
11
|
+
|
|
|
12
|
+
7 | use soroban_sdk::{contract, contractimpl, Address};
|
|
13
|
+
| ^^^^^^^
|
|
14
|
+
|
|
|
15
|
+
= note: `#[warn(unused_imports)]` on by default
|
|
16
|
+
|
|
9
17
|
error[E0599]: no function or associated item named `bad` found for struct `MyContract` in the current scope
|
|
10
18
|
--> tests/ui/ownable/fail/only_auth_missing_env.rs:17:12
|
|
11
19
|
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
// - Ensures a downstream crate can use the generated `Ownable` trait impl via a fully-qualified path
|
|
5
5
|
// without importing `utils::ownable::Ownable` into scope.
|
|
6
6
|
|
|
7
|
-
use soroban_sdk::{contract, contractimpl,
|
|
7
|
+
use soroban_sdk::{contract, contractimpl, Env};
|
|
8
8
|
|
|
9
9
|
#[contract]
|
|
10
10
|
#[common_macros::ownable]
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#[test]
|
|
2
|
+
fn ui_oapp() {
|
|
3
|
+
// Important: set this before trybuild::TestCases::new() so each shard has
|
|
4
|
+
// its own trybuild project directory + lock + artifacts.
|
|
5
|
+
let target_dir = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("target/trybuild-shards/ui_oapp");
|
|
6
|
+
std::env::set_var("CARGO_TARGET_DIR", target_dir.as_os_str());
|
|
7
|
+
|
|
8
|
+
let t = trybuild::TestCases::new();
|
|
9
|
+
t.pass("tests/ui/oapp/**/pass/*.rs");
|
|
10
|
+
t.compile_fail("tests/ui/oapp/**/fail/*.rs");
|
|
11
|
+
}
|
|
@@ -18,10 +18,8 @@ cfg-if = { workspace = true }
|
|
|
18
18
|
soroban-sdk = { workspace = true }
|
|
19
19
|
common-macros = { workspace = true }
|
|
20
20
|
utils = { workspace = true }
|
|
21
|
-
endpoint-v2 = { workspace = true, features = ["library"] }
|
|
22
21
|
message-lib-common = { workspace = true }
|
|
23
22
|
|
|
24
23
|
[dev-dependencies]
|
|
25
24
|
soroban-sdk = { workspace = true, features = ["testutils"] }
|
|
26
25
|
utils = { workspace = true, features = ["testutils"] }
|
|
27
|
-
insta = { workspace = true }
|
|
@@ -455,14 +455,14 @@ fn test_withdraw_token_events_emitted() {
|
|
|
455
455
|
setup.mint_tokens(&token, &setup.treasury.address, amount);
|
|
456
456
|
|
|
457
457
|
// Count events before withdrawal
|
|
458
|
-
let events_before = setup.env.events().all().len();
|
|
458
|
+
let events_before = setup.env.events().all().events().len();
|
|
459
459
|
|
|
460
460
|
// Withdraw tokens and check that events are emitted
|
|
461
461
|
setup.mock_owner_auth("withdraw_token", (&token, &recipient, &amount));
|
|
462
462
|
setup.treasury.withdraw_token(&token, &recipient, &amount);
|
|
463
463
|
|
|
464
464
|
// Verify that new events were published
|
|
465
|
-
let events_after = setup.env.events().all().len();
|
|
465
|
+
let events_after = setup.env.events().all().events().len();
|
|
466
466
|
assert!(events_after > events_before, "TokenWithdrawn event should be emitted");
|
|
467
467
|
}
|
|
468
468
|
|
|
@@ -58,12 +58,16 @@ pub struct DefaultReceiveUlnConfigsSet {
|
|
|
58
58
|
pub struct ExecutorFeePaid {
|
|
59
59
|
#[topic]
|
|
60
60
|
pub executor: Address,
|
|
61
|
+
#[topic]
|
|
62
|
+
pub guid: BytesN<32>,
|
|
61
63
|
pub fee: FeeRecipient,
|
|
62
64
|
}
|
|
63
65
|
|
|
64
66
|
#[contractevent]
|
|
65
67
|
#[derive(Clone, Debug, Eq, PartialEq)]
|
|
66
68
|
pub struct DVNFeePaid {
|
|
69
|
+
#[topic]
|
|
70
|
+
pub guid: BytesN<32>,
|
|
67
71
|
pub dvns: Vec<Address>,
|
|
68
72
|
pub fees: Vec<FeeRecipient>,
|
|
69
73
|
}
|
|
@@ -63,12 +63,25 @@ impl ISendLib for Uln302 {
|
|
|
63
63
|
prepare_packet_and_options(env, packet, options);
|
|
64
64
|
|
|
65
65
|
// Executor fee
|
|
66
|
-
let executor_fee_recipient =
|
|
67
|
-
|
|
66
|
+
let executor_fee_recipient = Self::assign_executor(
|
|
67
|
+
env,
|
|
68
|
+
&packet.guid,
|
|
69
|
+
&packet.sender,
|
|
70
|
+
packet.dst_eid,
|
|
71
|
+
packet.message.len(),
|
|
72
|
+
&executor_options,
|
|
73
|
+
);
|
|
68
74
|
|
|
69
75
|
// DVNs fees
|
|
70
|
-
let dvns_fee_recipients =
|
|
71
|
-
|
|
76
|
+
let dvns_fee_recipients = Self::assign_dvns(
|
|
77
|
+
env,
|
|
78
|
+
&packet.guid,
|
|
79
|
+
&packet.sender,
|
|
80
|
+
packet.dst_eid,
|
|
81
|
+
&packet_header,
|
|
82
|
+
&payload_hash,
|
|
83
|
+
&dvn_options,
|
|
84
|
+
);
|
|
72
85
|
|
|
73
86
|
// Collect all worker fees
|
|
74
87
|
let mut native_fee_recipients = vec![env, executor_fee_recipient];
|
|
@@ -257,6 +270,7 @@ impl Uln302 {
|
|
|
257
270
|
/// Assigns an executor job and returns the fee recipient.
|
|
258
271
|
fn assign_executor(
|
|
259
272
|
env: &Env,
|
|
273
|
+
guid: &BytesN<32>,
|
|
260
274
|
sender: &Address,
|
|
261
275
|
dst_eid: u32,
|
|
262
276
|
message_length: u32,
|
|
@@ -270,13 +284,15 @@ impl Uln302 {
|
|
|
270
284
|
let recipient =
|
|
271
285
|
executor_client.assign_job(&env.current_contract_address(), sender, &dst_eid, &message_length, options);
|
|
272
286
|
|
|
273
|
-
ExecutorFeePaid { executor: executor_client.address.clone(), fee: recipient.clone() }
|
|
287
|
+
ExecutorFeePaid { guid: guid.clone(), executor: executor_client.address.clone(), fee: recipient.clone() }
|
|
288
|
+
.publish(env);
|
|
274
289
|
recipient
|
|
275
290
|
}
|
|
276
291
|
|
|
277
292
|
/// Assigns DVN jobs and returns fee recipients for all DVNs.
|
|
278
293
|
fn assign_dvns(
|
|
279
294
|
env: &Env,
|
|
295
|
+
guid: &BytesN<32>,
|
|
280
296
|
sender: &Address,
|
|
281
297
|
dst_eid: u32,
|
|
282
298
|
packet_header: &Bytes,
|
|
@@ -305,7 +321,7 @@ impl Uln302 {
|
|
|
305
321
|
dvns.push_back(dvn_addr);
|
|
306
322
|
}
|
|
307
323
|
|
|
308
|
-
DVNFeePaid { dvns, fees: fees.clone() }.publish(env);
|
|
324
|
+
DVNFeePaid { guid: guid.clone(), dvns, fees: fees.clone() }.publish(env);
|
|
309
325
|
fees
|
|
310
326
|
}
|
|
311
327
|
}
|
package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs
CHANGED
|
@@ -8,7 +8,7 @@ use crate::{
|
|
|
8
8
|
};
|
|
9
9
|
use endpoint_v2::SetConfigParam;
|
|
10
10
|
use soroban_sdk::{log, testutils::Address as _, vec, xdr::ToXdr, Address, Env};
|
|
11
|
-
use utils::testing_utils::
|
|
11
|
+
use utils::testing_utils::assert_eq_event;
|
|
12
12
|
|
|
13
13
|
#[test]
|
|
14
14
|
fn test_effective_receive_uln_config_with_default_only() {
|
|
@@ -57,7 +57,7 @@ fn test_effective_receive_uln_config_with_custom_config() {
|
|
|
57
57
|
endpoint.set_config(&Address::generate(&env), &oapp, &uln302.address, ¶ms);
|
|
58
58
|
|
|
59
59
|
// Assert ReceiveUlnConfigSet event was published immediately after the setter
|
|
60
|
-
|
|
60
|
+
assert_eq_event(
|
|
61
61
|
&env,
|
|
62
62
|
&uln302.address,
|
|
63
63
|
ReceiveUlnConfigSet { config: custom_config.clone(), receiver: oapp.clone(), src_eid: eid },
|
package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs
CHANGED
|
@@ -9,7 +9,7 @@ use soroban_sdk::{
|
|
|
9
9
|
testutils::{MockAuth, MockAuthInvoke},
|
|
10
10
|
vec, IntoVal,
|
|
11
11
|
};
|
|
12
|
-
use utils::testing_utils::
|
|
12
|
+
use utils::testing_utils::assert_eq_event;
|
|
13
13
|
|
|
14
14
|
#[test]
|
|
15
15
|
fn test_set_default_receive_uln_configs() {
|
|
@@ -33,7 +33,7 @@ fn test_set_default_receive_uln_configs() {
|
|
|
33
33
|
uln302.set_default_receive_uln_configs(&oapp_receive_uln_configs);
|
|
34
34
|
|
|
35
35
|
// Assert DefaultReceiveUlnConfigSet event was published with all params
|
|
36
|
-
|
|
36
|
+
assert_eq_event(&env, &uln302.address, DefaultReceiveUlnConfigsSet { params: oapp_receive_uln_configs.clone() });
|
|
37
37
|
|
|
38
38
|
let uln302_receive_client = ReceiveUln302Client::new(&env, &uln302.address);
|
|
39
39
|
for config in oapp_receive_uln_configs.clone() {
|
|
@@ -2,7 +2,7 @@ use soroban_sdk::{
|
|
|
2
2
|
testutils::{Address as _, MockAuth, MockAuthInvoke},
|
|
3
3
|
Address, IntoVal,
|
|
4
4
|
};
|
|
5
|
-
use utils::testing_utils::
|
|
5
|
+
use utils::testing_utils::assert_eq_event;
|
|
6
6
|
|
|
7
7
|
use crate::{
|
|
8
8
|
events::PayloadVerified,
|
|
@@ -165,7 +165,7 @@ fn test_verify_emits_event() {
|
|
|
165
165
|
receive_client.verify(&dvn, &packet_header, &payload_hash, &CONFIRMATIONS);
|
|
166
166
|
|
|
167
167
|
// Verify PayloadVerified event was emitted
|
|
168
|
-
|
|
168
|
+
assert_eq_event(
|
|
169
169
|
&env,
|
|
170
170
|
&uln302.address,
|
|
171
171
|
PayloadVerified { dvn, header: packet_header, proof_hash: payload_hash, confirmations: CONFIRMATIONS },
|
|
@@ -8,7 +8,7 @@ use crate::{
|
|
|
8
8
|
};
|
|
9
9
|
use endpoint_v2::SetConfigParam;
|
|
10
10
|
use soroban_sdk::{log, testutils::Address as _, vec, xdr::ToXdr, Address, Env};
|
|
11
|
-
use utils::testing_utils::
|
|
11
|
+
use utils::testing_utils::assert_eq_event;
|
|
12
12
|
|
|
13
13
|
#[test]
|
|
14
14
|
fn test_effective_executor_config_with_default_only() {
|
|
@@ -57,7 +57,7 @@ fn test_effective_executor_config_with_custom_executor() {
|
|
|
57
57
|
|
|
58
58
|
// Assert ExecutorConfigSet event was published immediately after the setter
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
assert_eq_event(
|
|
61
61
|
&setup.env,
|
|
62
62
|
&setup.uln302.address,
|
|
63
63
|
ExecutorConfigSet { config: custom_config.clone(), dst_eid: eid, sender: oapp.clone() },
|
|
@@ -9,7 +9,7 @@ use crate::{
|
|
|
9
9
|
};
|
|
10
10
|
use endpoint_v2::SetConfigParam;
|
|
11
11
|
use soroban_sdk::{log, testutils::Address as _, vec, xdr::ToXdr, Address, Env};
|
|
12
|
-
use utils::testing_utils::
|
|
12
|
+
use utils::testing_utils::assert_eq_event;
|
|
13
13
|
|
|
14
14
|
#[test]
|
|
15
15
|
fn test_effective_send_uln_config_with_default_only() {
|
|
@@ -65,7 +65,7 @@ fn test_effective_send_uln_config_with_custom_config() {
|
|
|
65
65
|
endpoint.set_config(&Address::generate(&env), &oapp, &uln302.address, ¶ms);
|
|
66
66
|
|
|
67
67
|
// Assert SendUlnConfigSet event was published immediately after the setter
|
|
68
|
-
|
|
68
|
+
assert_eq_event(
|
|
69
69
|
&env,
|
|
70
70
|
&uln302.address,
|
|
71
71
|
SendUlnConfigSet { config: custom_config.clone(), dst_eid: eid, sender: oapp.clone() },
|
|
@@ -14,7 +14,7 @@ use soroban_sdk::{
|
|
|
14
14
|
vec, Bytes, BytesN, IntoVal,
|
|
15
15
|
};
|
|
16
16
|
use soroban_sdk::{Address, Env, Vec};
|
|
17
|
-
use utils::testing_utils::
|
|
17
|
+
use utils::testing_utils::assert_eq_events;
|
|
18
18
|
|
|
19
19
|
// Note that all the hot paths and assertions are covered in the quote test so here we only test the events emittance
|
|
20
20
|
#[test]
|
|
@@ -72,14 +72,12 @@ fn test_send_events_emittance() {
|
|
|
72
72
|
let send_result = setup.uln302.send(&packet, &options, &pay_in_zro);
|
|
73
73
|
let native_fee_recipients = &send_result.native_fee_recipients;
|
|
74
74
|
let zro_fee_recipients = &send_result.zro_fee_recipients;
|
|
75
|
-
|
|
75
|
+
assert_eq_events(
|
|
76
76
|
&setup.env,
|
|
77
77
|
&setup.uln302.address,
|
|
78
78
|
&[
|
|
79
|
-
ExecutorFeePaid { executor: executor.clone(), fee: native_fee_recipients.get(0).unwrap().clone() }
|
|
80
|
-
|
|
81
|
-
DVNFeePaid { dvns: dvns.slice(0..2).clone(), fees: native_fee_recipients.slice(1..3).clone() }
|
|
82
|
-
.expected(&setup.env),
|
|
79
|
+
&ExecutorFeePaid { guid: packet.guid.clone(),executor: executor.clone(), fee: native_fee_recipients.get(0).unwrap().clone() },
|
|
80
|
+
&DVNFeePaid { guid: packet.guid.clone(),dvns: dvns.slice(0..2).clone(), fees: native_fee_recipients.slice(1..3).clone() },
|
|
83
81
|
],
|
|
84
82
|
);
|
|
85
83
|
|
|
@@ -92,17 +90,11 @@ fn test_send_events_emittance() {
|
|
|
92
90
|
);
|
|
93
91
|
assert_eq!(
|
|
94
92
|
native_fee_recipients.get(1).unwrap(),
|
|
95
|
-
FeeRecipient {
|
|
96
|
-
amount: DVN_FEE[0],
|
|
97
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
98
|
-
}
|
|
93
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
99
94
|
);
|
|
100
95
|
assert_eq!(
|
|
101
96
|
native_fee_recipients.get(2).unwrap(),
|
|
102
|
-
FeeRecipient {
|
|
103
|
-
amount: DVN_FEE[1],
|
|
104
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient()
|
|
105
|
-
}
|
|
97
|
+
FeeRecipient { amount: DVN_FEE[1], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient() }
|
|
106
98
|
);
|
|
107
99
|
assert_eq!(
|
|
108
100
|
native_fee_recipients.get(3).unwrap(),
|
|
@@ -168,14 +160,12 @@ fn test_send_events_emittance_with_zro() {
|
|
|
168
160
|
let native_fee_recipients = &send_result.native_fee_recipients;
|
|
169
161
|
let zro_fee_recipients = &send_result.zro_fee_recipients;
|
|
170
162
|
|
|
171
|
-
|
|
163
|
+
assert_eq_events(
|
|
172
164
|
&setup.env,
|
|
173
165
|
&setup.uln302.address,
|
|
174
166
|
&[
|
|
175
|
-
ExecutorFeePaid { executor: executor.clone(), fee: native_fee_recipients.get(0).unwrap().clone() }
|
|
176
|
-
|
|
177
|
-
DVNFeePaid { dvns: dvns.slice(0..2).clone(), fees: native_fee_recipients.slice(1..3).clone() }
|
|
178
|
-
.expected(&setup.env),
|
|
167
|
+
&ExecutorFeePaid { guid: packet.guid.clone(), executor: executor.clone(), fee: native_fee_recipients.get(0).unwrap().clone() },
|
|
168
|
+
&DVNFeePaid { guid: packet.guid.clone(), dvns: dvns.slice(0..2).clone(), fees: native_fee_recipients.slice(1..3).clone() },
|
|
179
169
|
],
|
|
180
170
|
);
|
|
181
171
|
|
|
@@ -188,17 +178,11 @@ fn test_send_events_emittance_with_zro() {
|
|
|
188
178
|
);
|
|
189
179
|
assert_eq!(
|
|
190
180
|
native_fee_recipients.get(1).unwrap(),
|
|
191
|
-
FeeRecipient {
|
|
192
|
-
amount: DVN_FEE[0],
|
|
193
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
194
|
-
}
|
|
181
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
195
182
|
);
|
|
196
183
|
assert_eq!(
|
|
197
184
|
native_fee_recipients.get(2).unwrap(),
|
|
198
|
-
FeeRecipient {
|
|
199
|
-
amount: DVN_FEE[1],
|
|
200
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient()
|
|
201
|
-
}
|
|
185
|
+
FeeRecipient { amount: DVN_FEE[1], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient() }
|
|
202
186
|
);
|
|
203
187
|
assert_eq!(
|
|
204
188
|
zro_fee_recipients.get(0).unwrap(),
|
|
@@ -264,10 +248,7 @@ fn test_send_single_dvn() {
|
|
|
264
248
|
);
|
|
265
249
|
assert_eq!(
|
|
266
250
|
native_fee_recipients.get(1).unwrap(),
|
|
267
|
-
FeeRecipient {
|
|
268
|
-
amount: DVN_FEE[0],
|
|
269
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
270
|
-
}
|
|
251
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
271
252
|
);
|
|
272
253
|
assert_eq!(
|
|
273
254
|
native_fee_recipients.get(2).unwrap(),
|
|
@@ -378,17 +359,11 @@ fn test_send_multiple_dvns() {
|
|
|
378
359
|
);
|
|
379
360
|
assert_eq!(
|
|
380
361
|
native_fee_recipients.get(1).unwrap(),
|
|
381
|
-
FeeRecipient {
|
|
382
|
-
amount: DVN_FEE[0],
|
|
383
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
384
|
-
}
|
|
362
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
385
363
|
);
|
|
386
364
|
assert_eq!(
|
|
387
365
|
native_fee_recipients.get(2).unwrap(),
|
|
388
|
-
FeeRecipient {
|
|
389
|
-
amount: DVN_FEE[1],
|
|
390
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient()
|
|
391
|
-
}
|
|
366
|
+
FeeRecipient { amount: DVN_FEE[1], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient() }
|
|
392
367
|
);
|
|
393
368
|
assert_eq!(
|
|
394
369
|
native_fee_recipients.get(3).unwrap(),
|
|
@@ -454,10 +429,7 @@ fn test_send_with_only_optional_dvns() {
|
|
|
454
429
|
);
|
|
455
430
|
assert_eq!(
|
|
456
431
|
native_fee_recipients.get(1).unwrap(),
|
|
457
|
-
FeeRecipient {
|
|
458
|
-
amount: DVN_FEE[0],
|
|
459
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
460
|
-
}
|
|
432
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
461
433
|
);
|
|
462
434
|
assert_eq!(
|
|
463
435
|
native_fee_recipients.get(2).unwrap(),
|
|
@@ -628,17 +600,11 @@ fn test_send_with_missing_dvn_options() {
|
|
|
628
600
|
);
|
|
629
601
|
assert_eq!(
|
|
630
602
|
native_fee_recipients.get(1).unwrap(),
|
|
631
|
-
FeeRecipient {
|
|
632
|
-
amount: DVN_FEE[0],
|
|
633
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
634
|
-
}
|
|
603
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
635
604
|
);
|
|
636
605
|
assert_eq!(
|
|
637
606
|
native_fee_recipients.get(2).unwrap(),
|
|
638
|
-
FeeRecipient {
|
|
639
|
-
amount: DVN_FEE[1],
|
|
640
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient()
|
|
641
|
-
}
|
|
607
|
+
FeeRecipient { amount: DVN_FEE[1], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient() }
|
|
642
608
|
);
|
|
643
609
|
assert_eq!(
|
|
644
610
|
native_fee_recipients.get(3).unwrap(),
|
|
@@ -703,10 +669,7 @@ fn test_send_with_missing_executor_options() {
|
|
|
703
669
|
);
|
|
704
670
|
assert_eq!(
|
|
705
671
|
native_fee_recipients.get(1).unwrap(),
|
|
706
|
-
FeeRecipient {
|
|
707
|
-
amount: DVN_FEE[0],
|
|
708
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
709
|
-
}
|
|
672
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
710
673
|
);
|
|
711
674
|
assert_eq!(
|
|
712
675
|
native_fee_recipients.get(2).unwrap(),
|
|
@@ -804,26 +767,17 @@ fn test_send_derives_from_quote() {
|
|
|
804
767
|
// DVN 0 (first required)
|
|
805
768
|
assert_eq!(
|
|
806
769
|
native_fee_recipients.get(1).unwrap(),
|
|
807
|
-
FeeRecipient {
|
|
808
|
-
amount: DVN_FEE[0],
|
|
809
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient()
|
|
810
|
-
}
|
|
770
|
+
FeeRecipient { amount: DVN_FEE[0], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(0)).recipient() }
|
|
811
771
|
);
|
|
812
772
|
// DVN 1 (second required)
|
|
813
773
|
assert_eq!(
|
|
814
774
|
native_fee_recipients.get(2).unwrap(),
|
|
815
|
-
FeeRecipient {
|
|
816
|
-
amount: DVN_FEE[1],
|
|
817
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient()
|
|
818
|
-
}
|
|
775
|
+
FeeRecipient { amount: DVN_FEE[1], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(1)).recipient() }
|
|
819
776
|
);
|
|
820
777
|
// DVN 2 (optional)
|
|
821
778
|
assert_eq!(
|
|
822
779
|
native_fee_recipients.get(3).unwrap(),
|
|
823
|
-
FeeRecipient {
|
|
824
|
-
amount: DVN_FEE[2],
|
|
825
|
-
to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(2)).recipient()
|
|
826
|
-
}
|
|
780
|
+
FeeRecipient { amount: DVN_FEE[2], to: DummyDVNClient::new(&setup.env, &dvns.get_unchecked(2)).recipient() }
|
|
827
781
|
);
|
|
828
782
|
|
|
829
783
|
// Treasury fee is last
|