@layerzerolabs/protocol-stellar-v2 0.2.29 → 0.2.30
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 +371 -321
- package/.turbo/turbo-lint.log +211 -202
- package/.turbo/turbo-test.log +1766 -1673
- package/Cargo.lock +11 -1
- package/contracts/common-macros/src/lib.rs +0 -2
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +1 -0
- package/contracts/endpoint-v2/src/messaging_channel.rs +32 -3
- package/contracts/endpoint-v2/src/tests/endpoint_setup.rs +1 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/clear_payload.rs +1 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound.rs +6 -6
- package/contracts/endpoint-v2/src/tests/messaging_channel/inbound_payload_hash.rs +1 -1
- package/contracts/endpoint-v2/src/tests/messaging_channel/outbound.rs +16 -10
- package/contracts/macro-integration-tests/tests/runtime/oapp/options_type3.rs +10 -10
- package/contracts/macro-integration-tests/tests/runtime/oapp/receiver.rs +3 -3
- package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +4 -3
- package/contracts/macro-integration-tests/tests/runtime/upgradeable/migrate_guard_and_state.rs +1 -57
- package/contracts/macro-integration-tests/tests/ui/lz_contract/fail/upgradeable_missing_internal.stderr +0 -30
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/custom_wrong_value.stderr +5 -3
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/non_struct_input.stderr +6 -4
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/unknown_custom_option.stderr +5 -3
- package/contracts/macro-integration-tests/tests/ui/oapp/fail/wrong_key.stderr +5 -3
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_auth_trait.stderr +0 -30
- package/contracts/macro-integration-tests/tests/ui/upgradeable/fail/missing_upgradeable_internal.stderr +0 -30
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/basic.rs +0 -2
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/multisig_contract.rs +0 -2
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_migration.rs +0 -2
- package/contracts/macro-integration-tests/tests/ui/upgradeable/pass/no_user_contractimpl.rs +1 -3
- package/contracts/message-libs/message-lib-common/src/packet_codec_v1.rs +3 -6
- package/contracts/message-libs/message-lib-common/src/tests/worker_options/extract_type_3_options.rs +10 -0
- package/contracts/message-libs/message-lib-common/src/worker_options.rs +6 -2
- package/contracts/message-libs/treasury/src/interfaces/zro_fee_lib.rs +3 -3
- package/contracts/message-libs/treasury/src/lib.rs +2 -1
- package/contracts/message-libs/treasury/src/tests/setup.rs +1 -1
- package/contracts/message-libs/treasury/src/treasury.rs +5 -2
- package/contracts/message-libs/uln-302/src/errors.rs +2 -0
- package/contracts/message-libs/uln-302/src/events.rs +3 -3
- package/contracts/message-libs/uln-302/src/interfaces/receive_uln.rs +8 -0
- package/contracts/message-libs/uln-302/src/lib.rs +2 -1
- package/contracts/message-libs/uln-302/src/receive_uln.rs +16 -13
- package/contracts/message-libs/uln-302/src/send_uln.rs +51 -24
- package/contracts/message-libs/uln-302/src/storage.rs +2 -2
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/effective_receive_uln_config.rs +45 -1
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/verifiable.rs +63 -0
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_executor_config.rs +47 -2
- package/contracts/message-libs/uln-302/src/tests/send_uln302/effective_send_uln_config.rs +50 -1
- package/contracts/message-libs/uln-302/src/uln302.rs +0 -8
- package/contracts/oapps/counter/Cargo.toml +4 -4
- package/contracts/oapps/counter/integration_tests/setup_uln.rs +22 -2
- package/contracts/oapps/counter/src/counter.rs +8 -8
- package/contracts/oapps/oapp/src/interfaces/oapp_msg_inspector.rs +33 -10
- package/contracts/oapps/oapp/src/lib.rs +6 -2
- package/contracts/oapps/oapp/src/oapp_core.rs +49 -24
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +21 -14
- package/contracts/oapps/oapp/src/oapp_receiver.rs +17 -16
- package/contracts/oapps/oapp/src/oapp_sender.rs +66 -15
- package/contracts/oapps/oapp/src/tests/oapp_core.rs +5 -5
- package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +18 -18
- package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +4 -4
- package/contracts/oapps/oapp/src/tests/oapp_sender.rs +3 -3
- package/contracts/oapps/oapp-macros/Cargo.toml +0 -1
- package/contracts/oapps/oapp-macros/src/generators.rs +87 -46
- package/contracts/oapps/oapp-macros/src/lib.rs +3 -61
- package/contracts/oapps/oapp-macros/src/tests/oapp.rs +9 -23
- package/contracts/oapps/oapp-macros/src/tests/parse_custom_impls.rs +15 -11
- package/contracts/oapps/oft/Cargo.toml +1 -1
- package/contracts/oapps/oft/integration-tests/extensions/test_oft_fee.rs +3 -3
- package/contracts/oapps/oft/integration-tests/extensions/test_pausable.rs +4 -4
- package/contracts/oapps/oft/integration-tests/extensions/test_rate_limiter.rs +144 -8
- package/contracts/oapps/oft/integration-tests/setup.rs +4 -2
- package/contracts/oapps/oft/integration-tests/utils.rs +25 -11
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +65 -63
- package/contracts/oapps/oft/src/extensions/pausable.rs +2 -3
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +22 -5
- package/contracts/oapps/oft/src/interfaces/mint_burnable.rs +18 -0
- package/contracts/oapps/oft/src/interfaces/mod.rs +3 -0
- package/contracts/oapps/oft/src/lib.rs +4 -2
- package/contracts/oapps/oft/src/oft.rs +35 -36
- package/contracts/oapps/oft/src/oft_types/lock_unlock.rs +13 -9
- package/contracts/oapps/oft/src/oft_types/mint_burn.rs +14 -9
- package/contracts/oapps/oft/src/oft_types/mod.rs +14 -12
- package/contracts/oapps/oft/src/tests/extensions/oft_fee.rs +28 -20
- package/contracts/oapps/oft/src/tests/extensions/rate_limiter.rs +136 -2
- package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +12 -8
- package/contracts/oapps/oft-core/integration-tests/setup.rs +8 -9
- package/contracts/oapps/oft-core/integration-tests/test_with_sml.rs +7 -6
- package/contracts/oapps/oft-core/integration-tests/utils.rs +5 -4
- package/contracts/oapps/oft-core/src/codec/oft_compose_msg_codec.rs +2 -2
- package/contracts/oapps/oft-core/src/codec/oft_msg_codec.rs +33 -37
- package/contracts/oapps/oft-core/src/errors.rs +2 -1
- package/contracts/oapps/oft-core/src/events.rs +6 -0
- package/contracts/oapps/oft-core/src/lib.rs +8 -4
- package/contracts/oapps/oft-core/src/oft_core.rs +205 -148
- package/contracts/oapps/oft-core/src/storage.rs +4 -2
- package/contracts/oapps/oft-core/src/tests/test_decimals.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_lz_receive.rs +6 -6
- package/contracts/oapps/oft-core/src/tests/test_msg_inspector.rs +7 -6
- package/contracts/oapps/oft-core/src/tests/test_oft_msg_codec.rs +11 -82
- package/contracts/oapps/oft-core/src/tests/test_quote_oft.rs +13 -13
- package/contracts/oapps/oft-core/src/tests/test_quote_send.rs +1 -1
- package/contracts/oapps/oft-core/src/tests/test_resolve_address.rs +2 -2
- package/contracts/oapps/oft-core/src/tests/test_send.rs +22 -22
- package/contracts/oapps/oft-core/src/tests/test_utils.rs +20 -22
- package/contracts/oapps/oft-core/src/utils.rs +12 -8
- package/contracts/sac-manager/Cargo.toml +25 -0
- package/contracts/sac-manager/src/errors.rs +18 -0
- package/contracts/sac-manager/src/extensions/mod.rs +6 -0
- package/contracts/sac-manager/src/extensions/redistribution.rs +109 -0
- package/contracts/sac-manager/src/extensions/supply_control/mod.rs +488 -0
- package/contracts/sac-manager/src/extensions/supply_control/rate_limit.rs +126 -0
- package/contracts/sac-manager/src/interfaces/mod.rs +3 -0
- package/contracts/sac-manager/src/interfaces/sac_manager.rs +52 -0
- package/contracts/sac-manager/src/lib.rs +23 -0
- package/contracts/sac-manager/src/sac_manager.rs +193 -0
- package/contracts/sac-manager/src/storage.rs +20 -0
- package/contracts/sac-manager/src/tests/mod.rs +14 -0
- package/contracts/sac-manager/src/tests/redistribution/mod.rs +1 -0
- package/contracts/sac-manager/src/tests/redistribution/redistribute_funds.rs +82 -0
- package/contracts/sac-manager/src/tests/sac_manager/admin_mint.rs +206 -0
- package/contracts/sac-manager/src/tests/sac_manager/burn.rs +215 -0
- package/contracts/sac-manager/src/tests/sac_manager/clawback.rs +209 -0
- package/contracts/sac-manager/src/tests/sac_manager/mint.rs +252 -0
- package/contracts/sac-manager/src/tests/sac_manager/mod.rs +9 -0
- package/contracts/sac-manager/src/tests/sac_manager/set_admin.rs +36 -0
- package/contracts/sac-manager/src/tests/sac_manager/set_authorized.rs +43 -0
- package/contracts/sac-manager/src/tests/sac_manager/set_oft_address.rs +47 -0
- package/contracts/sac-manager/src/tests/sac_manager/test_helper.rs +75 -0
- package/contracts/sac-manager/src/tests/sac_manager/view_functions.rs +60 -0
- package/contracts/sac-manager/src/tests/supply_control/enumerable_set.rs +256 -0
- package/contracts/sac-manager/src/tests/supply_control/mod.rs +8 -0
- package/contracts/sac-manager/src/tests/supply_control/refill.rs +90 -0
- package/contracts/sac-manager/src/tests/supply_control/set_mint_whitelist.rs +245 -0
- package/contracts/sac-manager/src/tests/supply_control/set_supply_controller.rs +267 -0
- package/contracts/sac-manager/src/tests/supply_control/set_supply_controller_manager.rs +122 -0
- package/contracts/sac-manager/src/tests/supply_control/test_helper.rs +38 -0
- package/contracts/sac-manager/src/tests/supply_control/update_allow_any_mint_burn.rs +114 -0
- package/contracts/sac-manager/src/tests/supply_control/update_limit_config.rs +257 -0
- package/contracts/sac-manager/src/tests/test_helper.rs +190 -0
- package/contracts/upgrader/src/lib.rs +2 -1
- package/contracts/utils/src/errors.rs +0 -1
- package/contracts/utils/src/tests/upgradeable.rs +0 -66
- package/contracts/utils/src/upgradeable.rs +0 -18
- package/contracts/workers/dvn/src/dvn.rs +2 -2
- package/contracts/workers/dvn/src/interfaces/dvn.rs +2 -2
- package/contracts/workers/dvn/src/lib.rs +2 -1
- package/contracts/workers/dvn-fee-lib/src/lib.rs +3 -1
- package/contracts/workers/executor/src/auth.rs +42 -26
- package/contracts/workers/executor/src/executor.rs +28 -3
- package/contracts/workers/executor/src/lib.rs +4 -2
- package/contracts/workers/executor/src/storage.rs +21 -1
- package/contracts/workers/executor/src/tests/auth.rs +64 -20
- package/contracts/workers/executor/src/tests/executor.rs +1 -1
- package/contracts/workers/executor/src/tests/setup.rs +18 -0
- package/contracts/workers/executor-fee-lib/src/lib.rs +4 -1
- package/contracts/workers/executor-helper/src/executor_helper.rs +24 -10
- package/contracts/workers/executor-helper/src/tests/setup.rs +147 -34
- package/contracts/workers/price-feed/src/lib.rs +3 -1
- package/contracts/workers/worker/src/lib.rs +2 -1
- package/contracts/workers/worker/src/worker.rs +31 -17
- package/docs/oapp-guide.md +17 -8
- package/docs/oft-guide.md +3 -3
- package/package.json +3 -3
- package/sdk/.turbo/turbo-test.log +512 -351
- package/sdk/dist/generated/bml.d.ts +3 -9
- package/sdk/dist/generated/bml.js +6 -7
- package/sdk/dist/generated/counter.d.ts +22 -28
- package/sdk/dist/generated/counter.js +11 -12
- package/sdk/dist/generated/dvn.d.ts +36 -54
- package/sdk/dist/generated/dvn.js +10 -15
- package/sdk/dist/generated/dvn_fee_lib.d.ts +3 -21
- package/sdk/dist/generated/dvn_fee_lib.js +6 -11
- package/sdk/dist/generated/endpoint.d.ts +3 -9
- package/sdk/dist/generated/endpoint.js +6 -7
- package/sdk/dist/generated/executor.d.ts +80 -54
- package/sdk/dist/generated/executor.js +16 -16
- package/sdk/dist/generated/executor_fee_lib.d.ts +3 -21
- package/sdk/dist/generated/executor_fee_lib.js +6 -11
- package/sdk/dist/generated/executor_helper.d.ts +36 -42
- package/sdk/dist/generated/executor_helper.js +9 -10
- package/sdk/dist/generated/layerzero_view.d.ts +20 -32
- package/sdk/dist/generated/layerzero_view.js +25 -26
- package/sdk/dist/generated/oft.d.ts +147 -79
- package/sdk/dist/generated/oft.js +47 -54
- package/sdk/dist/generated/price_feed.d.ts +20 -38
- package/sdk/dist/generated/price_feed.js +15 -20
- package/sdk/dist/generated/sac_manager.d.ts +1309 -0
- package/sdk/dist/generated/sac_manager.js +484 -0
- package/sdk/dist/generated/sml.d.ts +3 -9
- package/sdk/dist/generated/sml.js +6 -7
- package/sdk/dist/generated/treasury.d.ts +3 -9
- package/sdk/dist/generated/treasury.js +8 -9
- package/sdk/dist/generated/uln302.d.ts +20 -20
- package/sdk/dist/generated/uln302.js +25 -22
- package/sdk/dist/generated/upgrader.d.ts +3 -9
- package/sdk/dist/generated/upgrader.js +6 -7
- package/sdk/dist/index.d.ts +1 -0
- package/sdk/dist/index.js +1 -0
- package/sdk/package.json +1 -1
- package/sdk/src/index.ts +1 -0
- package/sdk/test/oft-sml.test.ts +7 -5
- package/sdk/test/sac-manager-redistribution.test.ts +578 -0
- package/sdk/test/suites/globalSetup.ts +11 -6
- package/sdk/test/test_data/test_upgradeable_dvn.wasm +0 -0
- package/sdk/test/upgrader.test.ts +75 -202
- package/sdk/test/utils.ts +40 -0
- package/tools/ts-bindings-gen/src/main.rs +1 -0
|
@@ -26,7 +26,7 @@ fn run_lz_receive_test(setup: &OFTTestSetup, recipient: &Address, amount_sd: u64
|
|
|
26
26
|
if setup.is_lock_unlock() { Some(setup.token_client.balance(&setup.oft.address)) } else { None };
|
|
27
27
|
|
|
28
28
|
// Create OFT message
|
|
29
|
-
let recipient_bytes32 = address_payload(recipient);
|
|
29
|
+
let recipient_bytes32 = address_payload(env, recipient);
|
|
30
30
|
let message = encode_oft_message(env, &recipient_bytes32, amount_sd);
|
|
31
31
|
|
|
32
32
|
let guid = BytesN::from_array(env, &[1u8; 32]);
|
|
@@ -111,8 +111,8 @@ fn test_mint_burn_lz_receive_with_compose() {
|
|
|
111
111
|
setup.set_peer(src_eid, &peer);
|
|
112
112
|
|
|
113
113
|
// Create OFT message with compose
|
|
114
|
-
let recipient_bytes32 = address_payload(&recipient);
|
|
115
|
-
let compose_from = address_payload(&sender_on_src);
|
|
114
|
+
let recipient_bytes32 = address_payload(&env, &recipient);
|
|
115
|
+
let compose_from = address_payload(&env, &sender_on_src);
|
|
116
116
|
let compose_msg = Bytes::from_array(&env, b"test compose payload");
|
|
117
117
|
let amount_sd = 1000000u64;
|
|
118
118
|
let message = encode_oft_message_with_compose(&env, &recipient_bytes32, amount_sd, &compose_from, &compose_msg);
|
|
@@ -204,8 +204,8 @@ fn test_lock_unlock_lz_receive_with_compose() {
|
|
|
204
204
|
setup.set_peer(src_eid, &peer);
|
|
205
205
|
|
|
206
206
|
// Create OFT message with compose
|
|
207
|
-
let recipient_bytes32 = address_payload(&recipient);
|
|
208
|
-
let compose_from = address_payload(&sender_on_src);
|
|
207
|
+
let recipient_bytes32 = address_payload(&env, &recipient);
|
|
208
|
+
let compose_from = address_payload(&env, &sender_on_src);
|
|
209
209
|
let compose_msg = Bytes::from_array(&env, b"test compose payload");
|
|
210
210
|
let amount_sd = 1000000u64;
|
|
211
211
|
let message = encode_oft_message_with_compose(&env, &recipient_bytes32, amount_sd, &compose_from, &compose_msg);
|
|
@@ -261,7 +261,7 @@ fn test_lz_receive_without_giving_authorization() {
|
|
|
261
261
|
assert_eq!(setup.token_client.balance(&recipient), 0);
|
|
262
262
|
|
|
263
263
|
// Create OFT message
|
|
264
|
-
let recipient_bytes32 = address_payload(&recipient);
|
|
264
|
+
let recipient_bytes32 = address_payload(&env, &recipient);
|
|
265
265
|
let amount_sd = 1000000u64; // 1 token in shared decimals
|
|
266
266
|
let message = encode_oft_message(&env, &recipient_bytes32, amount_sd);
|
|
267
267
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
use crate::tests::test_utils::{create_send_param, OFTTestSetup};
|
|
4
4
|
use common_macros::contract_error;
|
|
5
5
|
use endpoint_v2::MessagingFee;
|
|
6
|
-
use oapp::
|
|
6
|
+
use oapp::IOAppMsgInspector;
|
|
7
7
|
use soroban_sdk::{
|
|
8
8
|
contract, contractimpl, panic_with_error,
|
|
9
9
|
testutils::{Address as _, MockAuth, MockAuthInvoke},
|
|
@@ -18,8 +18,9 @@ pub struct PassingInspector;
|
|
|
18
18
|
|
|
19
19
|
#[contractimpl]
|
|
20
20
|
impl IOAppMsgInspector for PassingInspector {
|
|
21
|
-
fn inspect(_env: &Env, _oapp: &Address, _message: &Bytes, _options: &Bytes) {
|
|
21
|
+
fn inspect(_env: &Env, _oapp: &Address, _message: &Bytes, _options: &Bytes) -> bool {
|
|
22
22
|
// Do nothing - inspection passes
|
|
23
|
+
true
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
|
|
@@ -34,7 +35,7 @@ pub struct FailingInspector;
|
|
|
34
35
|
|
|
35
36
|
#[contractimpl]
|
|
36
37
|
impl IOAppMsgInspector for FailingInspector {
|
|
37
|
-
fn inspect(env: &Env, _oapp: &Address, _message: &Bytes, _options: &Bytes) {
|
|
38
|
+
fn inspect(env: &Env, _oapp: &Address, _message: &Bytes, _options: &Bytes) -> bool {
|
|
38
39
|
panic_with_error!(env, InspectorError::InspectionFailed);
|
|
39
40
|
}
|
|
40
41
|
}
|
|
@@ -162,7 +163,7 @@ fn test_send_without_inspector_succeeds() {
|
|
|
162
163
|
|
|
163
164
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
164
165
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
165
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
166
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
166
167
|
|
|
167
168
|
// Send without inspector set - should succeed
|
|
168
169
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, &oft_receipt);
|
|
@@ -202,7 +203,7 @@ fn test_send_with_passing_inspector() {
|
|
|
202
203
|
|
|
203
204
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
204
205
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
205
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
206
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
206
207
|
|
|
207
208
|
// Send with passing inspector - should succeed
|
|
208
209
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, &oft_receipt);
|
|
@@ -242,7 +243,7 @@ fn test_send_with_failing_inspector() {
|
|
|
242
243
|
|
|
243
244
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
244
245
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
245
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
246
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
246
247
|
|
|
247
248
|
// Send with failing inspector - should fail
|
|
248
249
|
let result = setup.try_send(&sender, &send_param, &fee, &sender, &oft_receipt);
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
use crate::
|
|
1
|
+
use crate::codec::oft_msg_codec::{ComposeData, OFTMessage};
|
|
2
|
+
use crate::utils::address_payload;
|
|
2
3
|
use soroban_sdk::{testutils::Address as _, Address, Bytes, BytesN, Env};
|
|
3
4
|
|
|
4
5
|
#[test]
|
|
@@ -7,19 +8,14 @@ fn test_encode_and_decode_without_compose() {
|
|
|
7
8
|
let send_to_addr = BytesN::from_array(&env, &[1u8; 32]);
|
|
8
9
|
let amount_sd_val = 1000u64;
|
|
9
10
|
|
|
10
|
-
let msg =
|
|
11
|
-
|
|
12
|
-
let (encoded, has_compose) = msg.encode(&env);
|
|
13
|
-
|
|
14
|
-
assert_eq!(has_compose, false);
|
|
11
|
+
let msg = OFTMessage { send_to: send_to_addr.clone(), amount_sd: amount_sd_val, compose: None };
|
|
12
|
+
let encoded = msg.encode(&env);
|
|
15
13
|
|
|
16
14
|
// Test decode function
|
|
17
15
|
let decoded = OFTMessage::decode(&encoded);
|
|
18
16
|
assert_eq!(decoded.send_to, send_to_addr);
|
|
19
17
|
assert_eq!(decoded.amount_sd, amount_sd_val);
|
|
20
|
-
|
|
21
|
-
assert_eq!(decoded.compose_msg.is_none(), true);
|
|
22
|
-
assert_eq!(decoded.is_composed(), false);
|
|
18
|
+
assert!(decoded.compose.is_none());
|
|
23
19
|
}
|
|
24
20
|
|
|
25
21
|
#[test]
|
|
@@ -33,90 +29,23 @@ fn test_encode_and_decode_with_compose() {
|
|
|
33
29
|
let msg = OFTMessage {
|
|
34
30
|
send_to: send_to_addr.clone(),
|
|
35
31
|
amount_sd: amount_sd_val,
|
|
36
|
-
|
|
37
|
-
compose_msg: Some(compose_msg_val),
|
|
32
|
+
compose: Some(ComposeData { from: address_payload(&env, &sender), msg: compose_msg_val }),
|
|
38
33
|
};
|
|
39
|
-
let
|
|
40
|
-
|
|
41
|
-
assert_eq!(has_compose, true);
|
|
34
|
+
let encoded = msg.encode(&env);
|
|
42
35
|
|
|
43
36
|
// Test decode function
|
|
44
37
|
let decoded = OFTMessage::decode(&encoded);
|
|
45
38
|
assert_eq!(decoded.send_to, send_to_addr);
|
|
46
39
|
assert_eq!(decoded.amount_sd, amount_sd_val);
|
|
47
|
-
|
|
48
|
-
assert_eq!(
|
|
49
|
-
assert_eq!(decoded.compose_msg.as_ref().unwrap().len(), 4);
|
|
50
|
-
assert_eq!(decoded.is_composed(), true);
|
|
40
|
+
let compose = decoded.compose.as_ref().unwrap();
|
|
41
|
+
assert_eq!(compose.msg.len(), 4);
|
|
51
42
|
|
|
52
43
|
// Verify compose message structure: sender's bytes32 (32 bytes) + compose_msg (4 bytes)
|
|
53
|
-
let compose_from_len =
|
|
54
|
-
let compose_msg_len =
|
|
44
|
+
let compose_from_len = compose.from.to_array().len() as u32;
|
|
45
|
+
let compose_msg_len = compose.msg.len();
|
|
55
46
|
assert_eq!(compose_from_len + compose_msg_len, 36);
|
|
56
47
|
}
|
|
57
48
|
|
|
58
|
-
#[test]
|
|
59
|
-
fn test_is_composed_false_when_only_compose_from() {
|
|
60
|
-
let env = Env::default();
|
|
61
|
-
let sender = Address::generate(&env);
|
|
62
|
-
let send_to_addr = BytesN::from_array(&env, &[1u8; 32]);
|
|
63
|
-
let amount_sd_val = 100u64;
|
|
64
|
-
|
|
65
|
-
// Manually construct invalid state: only compose_from, no compose_msg
|
|
66
|
-
let msg = OFTMessage {
|
|
67
|
-
send_to: send_to_addr,
|
|
68
|
-
amount_sd: amount_sd_val,
|
|
69
|
-
compose_from: Some(address_payload(&sender)),
|
|
70
|
-
compose_msg: None,
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
// Should return false - both fields are required for compose
|
|
74
|
-
assert_eq!(msg.is_composed(), false);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
#[test]
|
|
78
|
-
fn test_is_composed_false_when_only_compose_msg() {
|
|
79
|
-
let env = Env::default();
|
|
80
|
-
let send_to_addr = BytesN::from_array(&env, &[1u8; 32]);
|
|
81
|
-
let amount_sd_val = 100u64;
|
|
82
|
-
let compose_msg_val = Bytes::from_array(&env, &[1u8, 2u8, 3u8]);
|
|
83
|
-
|
|
84
|
-
// Manually construct invalid state: only compose_msg, no compose_from
|
|
85
|
-
let msg = OFTMessage {
|
|
86
|
-
send_to: send_to_addr,
|
|
87
|
-
amount_sd: amount_sd_val,
|
|
88
|
-
compose_from: None,
|
|
89
|
-
compose_msg: Some(compose_msg_val),
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
// Should return false - both fields are required for compose
|
|
93
|
-
assert_eq!(msg.is_composed(), false);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
#[test]
|
|
97
|
-
fn test_is_composed_false_when_compose_msg_empty() {
|
|
98
|
-
let env = Env::default();
|
|
99
|
-
let sender = Address::generate(&env);
|
|
100
|
-
let send_to_addr = BytesN::from_array(&env, &[1u8; 32]);
|
|
101
|
-
let amount_sd_val = 100u64;
|
|
102
|
-
let empty_compose_msg = Bytes::new(&env); // Empty bytes, not None
|
|
103
|
-
|
|
104
|
-
// Manually construct state with empty compose_msg
|
|
105
|
-
let msg = OFTMessage {
|
|
106
|
-
send_to: send_to_addr.clone(),
|
|
107
|
-
amount_sd: amount_sd_val,
|
|
108
|
-
compose_from: Some(address_payload(&sender)),
|
|
109
|
-
compose_msg: Some(empty_compose_msg),
|
|
110
|
-
};
|
|
111
|
-
|
|
112
|
-
// Should return false - compose_msg must have data
|
|
113
|
-
assert_eq!(msg.is_composed(), false);
|
|
114
|
-
|
|
115
|
-
// Verify encoding also treats it as non-composed
|
|
116
|
-
let (_, has_compose) = msg.encode(&env);
|
|
117
|
-
assert_eq!(has_compose, false);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
49
|
#[test]
|
|
121
50
|
#[should_panic]
|
|
122
51
|
fn test_decode_panic_on_empty_data() {
|
|
@@ -15,11 +15,11 @@ fn test_quote_oft_basic() {
|
|
|
15
15
|
let dust_removed = (amount_ld / conversion_rate) * conversion_rate; // No dust with last digit 0
|
|
16
16
|
let send_param = create_send_param(&env, 1, amount_ld, dust_removed);
|
|
17
17
|
|
|
18
|
-
let (limit, fees, receipt) = setup.oft.quote_oft(&send_param);
|
|
18
|
+
let (limit, fees, receipt) = setup.oft.quote_oft(&setup.owner, &send_param);
|
|
19
19
|
|
|
20
20
|
// Check limits
|
|
21
21
|
assert_eq!(limit.min_amount_ld, 0);
|
|
22
|
-
assert_eq!(limit.max_amount_ld,
|
|
22
|
+
assert_eq!(limit.max_amount_ld, u64::MAX as i128);
|
|
23
23
|
|
|
24
24
|
// Check fees (should be empty for basic OFT)
|
|
25
25
|
assert_eq!(fees.len(), 0);
|
|
@@ -40,11 +40,11 @@ fn test_quote_oft_with_dust_removal() {
|
|
|
40
40
|
let dust_removed = (amount_ld / conversion_rate) * conversion_rate;
|
|
41
41
|
let send_param = create_send_param(&env, 1, amount_ld, dust_removed);
|
|
42
42
|
|
|
43
|
-
let (limit, fees, receipt) = setup.oft.quote_oft(&send_param);
|
|
43
|
+
let (limit, fees, receipt) = setup.oft.quote_oft(&setup.owner, &send_param);
|
|
44
44
|
|
|
45
45
|
// Check limits
|
|
46
46
|
assert_eq!(limit.min_amount_ld, 0);
|
|
47
|
-
assert_eq!(limit.max_amount_ld,
|
|
47
|
+
assert_eq!(limit.max_amount_ld, u64::MAX as i128);
|
|
48
48
|
|
|
49
49
|
// Check fees (should be empty for basic OFT)
|
|
50
50
|
assert_eq!(fees.len(), 0);
|
|
@@ -61,12 +61,12 @@ fn test_quote_oft_zero_amount() {
|
|
|
61
61
|
|
|
62
62
|
let send_param = create_send_param(&env, 1, 0, 0);
|
|
63
63
|
|
|
64
|
-
let (limit, fees, receipt) = setup.oft.quote_oft(&send_param);
|
|
64
|
+
let (limit, fees, receipt) = setup.oft.quote_oft(&setup.owner, &send_param);
|
|
65
65
|
|
|
66
66
|
assert_eq!(receipt.amount_sent_ld, 0);
|
|
67
67
|
assert_eq!(receipt.amount_received_ld, 0);
|
|
68
68
|
assert_eq!(limit.min_amount_ld, 0);
|
|
69
|
-
assert_eq!(limit.max_amount_ld,
|
|
69
|
+
assert_eq!(limit.max_amount_ld, u64::MAX as i128);
|
|
70
70
|
assert_eq!(fees.len(), 0);
|
|
71
71
|
}
|
|
72
72
|
|
|
@@ -80,7 +80,7 @@ fn test_quote_oft_dust_only_amount() {
|
|
|
80
80
|
let amount_ld = conversion_rate - 1; // Less than conversion rate
|
|
81
81
|
let send_param = create_send_param(&env, 1, amount_ld, 0);
|
|
82
82
|
|
|
83
|
-
let (_, _, receipt) = setup.oft.quote_oft(&send_param);
|
|
83
|
+
let (_, _, receipt) = setup.oft.quote_oft(&setup.owner, &send_param);
|
|
84
84
|
|
|
85
85
|
// All dust should be removed
|
|
86
86
|
assert_eq!(receipt.amount_sent_ld, 0);
|
|
@@ -97,11 +97,11 @@ fn test_quote_oft_different_dst_eids() {
|
|
|
97
97
|
// Test with different destination EIDs
|
|
98
98
|
for dst_eid in [1u32, 100, 10000, u32::MAX] {
|
|
99
99
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
100
|
-
let (limit, fees, receipt) = setup.oft.quote_oft(&send_param);
|
|
100
|
+
let (limit, fees, receipt) = setup.oft.quote_oft(&setup.owner, &send_param);
|
|
101
101
|
|
|
102
102
|
// Results should be the same regardless of dst_eid
|
|
103
103
|
assert_eq!(limit.min_amount_ld, 0);
|
|
104
|
-
assert_eq!(limit.max_amount_ld,
|
|
104
|
+
assert_eq!(limit.max_amount_ld, u64::MAX as i128);
|
|
105
105
|
assert_eq!(fees.len(), 0);
|
|
106
106
|
assert_eq!(receipt.amount_sent_ld, amount_ld);
|
|
107
107
|
assert_eq!(receipt.amount_received_ld, amount_ld);
|
|
@@ -117,10 +117,10 @@ fn test_quote_oft_large_amounts() {
|
|
|
117
117
|
let amount_ld = 1_000_000_000_000_000_000i128;
|
|
118
118
|
let send_param = create_send_param(&env, 1, amount_ld, amount_ld);
|
|
119
119
|
|
|
120
|
-
let (limit, fees, receipt) = setup.oft.quote_oft(&send_param);
|
|
120
|
+
let (limit, fees, receipt) = setup.oft.quote_oft(&setup.owner, &send_param);
|
|
121
121
|
|
|
122
122
|
assert_eq!(limit.min_amount_ld, 0);
|
|
123
|
-
assert_eq!(limit.max_amount_ld,
|
|
123
|
+
assert_eq!(limit.max_amount_ld, u64::MAX as i128);
|
|
124
124
|
assert_eq!(fees.len(), 0);
|
|
125
125
|
assert_eq!(receipt.amount_sent_ld, amount_ld);
|
|
126
126
|
assert_eq!(receipt.amount_received_ld, amount_ld);
|
|
@@ -139,7 +139,7 @@ fn test_quote_oft_slippage_less_than_received() {
|
|
|
139
139
|
// min_amount_ld is less than what will be received
|
|
140
140
|
let send_param = create_send_param(&env, 1, amount_ld, dust_removed - conversion_rate);
|
|
141
141
|
|
|
142
|
-
let (_, _, receipt) = setup.oft.quote_oft(&send_param);
|
|
142
|
+
let (_, _, receipt) = setup.oft.quote_oft(&setup.owner, &send_param);
|
|
143
143
|
|
|
144
144
|
assert_eq!(receipt.amount_sent_ld, dust_removed);
|
|
145
145
|
assert_eq!(receipt.amount_received_ld, dust_removed);
|
|
@@ -154,6 +154,6 @@ fn test_quote_oft_slippage_exceeded() {
|
|
|
154
154
|
// min_amount_ld is higher than what can be received after dust removal
|
|
155
155
|
let send_param = create_send_param(&env, 1, amount_ld, amount_ld);
|
|
156
156
|
|
|
157
|
-
let result = setup.oft.try_quote_oft(&send_param);
|
|
157
|
+
let result = setup.oft.try_quote_oft(&setup.owner, &send_param);
|
|
158
158
|
assert_eq!(result.err().unwrap().ok().unwrap(), OFTError::SlippageExceeded.into());
|
|
159
159
|
}
|
|
@@ -12,7 +12,7 @@ fn test_resolve_address_contract_exists() {
|
|
|
12
12
|
let contract_address = create_recipient_address(&env);
|
|
13
13
|
|
|
14
14
|
// Convert to bytes32
|
|
15
|
-
let bytes32 = address_payload(&contract_address);
|
|
15
|
+
let bytes32 = address_payload(&env, &contract_address);
|
|
16
16
|
|
|
17
17
|
// Resolve back - should return the same contract address
|
|
18
18
|
let resolved = resolve_address(&env, &bytes32);
|
|
@@ -28,7 +28,7 @@ fn test_resolve_address_contract_not_exists_fallback_to_g_address() {
|
|
|
28
28
|
let g_address = generate_g_address(&env);
|
|
29
29
|
|
|
30
30
|
// Convert to bytes32
|
|
31
|
-
let bytes32 = address_payload(&g_address);
|
|
31
|
+
let bytes32 = address_payload(&env, &g_address);
|
|
32
32
|
|
|
33
33
|
// Resolve - should fallback to G-address since contract doesn't exist
|
|
34
34
|
let resolved = resolve_address(&env, &bytes32);
|
|
@@ -5,7 +5,7 @@ use crate::{
|
|
|
5
5
|
types::{OFTReceipt, SendParam},
|
|
6
6
|
};
|
|
7
7
|
use endpoint_v2::MessagingFee;
|
|
8
|
-
use oapp::
|
|
8
|
+
use oapp::OAppError;
|
|
9
9
|
use soroban_sdk::{
|
|
10
10
|
bytes,
|
|
11
11
|
testutils::{Address as _, MockAuth, MockAuthInvoke},
|
|
@@ -41,7 +41,7 @@ fn test_send_basic() {
|
|
|
41
41
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
42
42
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
43
43
|
let refund_address = sender.clone();
|
|
44
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
44
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
45
45
|
|
|
46
46
|
// Send tokens
|
|
47
47
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &refund_address, &oft_receipt);
|
|
@@ -81,7 +81,7 @@ fn test_send_burns_tokens() {
|
|
|
81
81
|
|
|
82
82
|
let send_param = create_send_param(&env, dst_eid, send_amount, send_amount);
|
|
83
83
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
84
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
84
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
85
85
|
|
|
86
86
|
setup.send(&sender, &send_param, &fee, &sender, &oft_receipt);
|
|
87
87
|
|
|
@@ -111,7 +111,7 @@ fn test_send_with_dust_removal() {
|
|
|
111
111
|
// min_amount_ld should be the dust-removed amount
|
|
112
112
|
let send_param = create_send_param(&env, dst_eid, amount_with_dust, expected_dust_removed);
|
|
113
113
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
114
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
114
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
115
115
|
|
|
116
116
|
let (_, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
117
117
|
|
|
@@ -143,7 +143,7 @@ fn test_send_slippage_exactly_met() {
|
|
|
143
143
|
// min_amount_ld exactly equals amount after dust removal
|
|
144
144
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
145
145
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
146
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
146
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
147
147
|
|
|
148
148
|
let (_, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
149
149
|
|
|
@@ -172,7 +172,7 @@ fn test_send_slippage_exceeded() {
|
|
|
172
172
|
let send_param = create_send_param(&env, dst_eid, amount_with_dust, min_amount_too_high);
|
|
173
173
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
174
174
|
// Use a receipt with dust-removed amount for auth (even though it will fail slippage check)
|
|
175
|
-
let quoted_receipt = setup.quote_oft(&create_send_param(&env, dst_eid, amount_with_dust, 0));
|
|
175
|
+
let quoted_receipt = setup.quote_oft(&sender, &create_send_param(&env, dst_eid, amount_with_dust, 0));
|
|
176
176
|
|
|
177
177
|
// Should fail due to slippage
|
|
178
178
|
let result = setup.try_send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
@@ -199,7 +199,7 @@ fn test_send_slippage_less_than_received() {
|
|
|
199
199
|
|
|
200
200
|
let send_param = create_send_param(&env, dst_eid, amount_ld, min_amount_low);
|
|
201
201
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
202
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
202
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
203
203
|
|
|
204
204
|
let (_, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
205
205
|
|
|
@@ -247,7 +247,7 @@ fn test_send_zero_amount() {
|
|
|
247
247
|
// Send zero tokens
|
|
248
248
|
let send_param = create_send_param(&env, dst_eid, 0, 0);
|
|
249
249
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
250
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
250
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
251
251
|
|
|
252
252
|
let (_, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
253
253
|
|
|
@@ -313,7 +313,7 @@ fn test_send_with_compose_msg() {
|
|
|
313
313
|
};
|
|
314
314
|
|
|
315
315
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
316
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
316
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
317
317
|
|
|
318
318
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
319
319
|
|
|
@@ -344,7 +344,7 @@ fn test_send_emits_oft_sent_event() {
|
|
|
344
344
|
|
|
345
345
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
346
346
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
347
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
347
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
348
348
|
|
|
349
349
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
350
350
|
|
|
@@ -387,7 +387,7 @@ fn test_send_multiple_times() {
|
|
|
387
387
|
for amount in send_amounts.iter() {
|
|
388
388
|
let send_param = create_send_param(&env, dst_eid, *amount, *amount);
|
|
389
389
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
390
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
390
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
391
391
|
|
|
392
392
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
393
393
|
|
|
@@ -426,7 +426,7 @@ fn test_send_to_multiple_destinations() {
|
|
|
426
426
|
for dst_eid in dst_eids.iter() {
|
|
427
427
|
let send_param = create_send_param(&env, *dst_eid, amount_per_send, amount_per_send);
|
|
428
428
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
429
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
429
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
430
430
|
|
|
431
431
|
let (_, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
432
432
|
|
|
@@ -462,7 +462,7 @@ fn test_send_different_amounts() {
|
|
|
462
462
|
|
|
463
463
|
let send_param = create_send_param(&env, dst_eid, *amount, *amount);
|
|
464
464
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
465
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
465
|
+
let quoted_receipt = setup.quote_oft(&test_sender, &send_param);
|
|
466
466
|
|
|
467
467
|
let (_, oft_receipt) = setup.send(&test_sender, &send_param, &fee, &test_sender, "ed_receipt);
|
|
468
468
|
|
|
@@ -493,7 +493,7 @@ fn test_send_large_amount() {
|
|
|
493
493
|
|
|
494
494
|
let send_param = create_send_param(&env, dst_eid, large_amount, large_amount);
|
|
495
495
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
496
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
496
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
497
497
|
|
|
498
498
|
let (_, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
499
499
|
|
|
@@ -522,7 +522,7 @@ fn test_send_with_zro_fee() {
|
|
|
522
522
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
523
523
|
// Include ZRO fee
|
|
524
524
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: setup.zro_fee };
|
|
525
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
525
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
526
526
|
|
|
527
527
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
528
528
|
|
|
@@ -552,7 +552,7 @@ fn test_send_with_custom_fees() {
|
|
|
552
552
|
|
|
553
553
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
554
554
|
let fee = MessagingFee { native_fee: custom_native_fee, zro_fee: custom_zro_fee };
|
|
555
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
555
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
556
556
|
|
|
557
557
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &sender, "ed_receipt);
|
|
558
558
|
|
|
@@ -583,7 +583,7 @@ fn test_send_with_different_refund_address() {
|
|
|
583
583
|
|
|
584
584
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
585
585
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
586
|
-
let quoted_receipt = setup.quote_oft(&send_param);
|
|
586
|
+
let quoted_receipt = setup.quote_oft(&sender, &send_param);
|
|
587
587
|
|
|
588
588
|
// Use different refund address
|
|
589
589
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &refund_address, "ed_receipt);
|
|
@@ -620,7 +620,7 @@ fn test_send_lock_unlock_strategy() {
|
|
|
620
620
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
621
621
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
622
622
|
let refund_address = sender.clone();
|
|
623
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
623
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
624
624
|
|
|
625
625
|
// Send tokens
|
|
626
626
|
let (msg_receipt, oft_receipt) = setup.send(&sender, &send_param, &fee, &refund_address, &oft_receipt);
|
|
@@ -737,7 +737,7 @@ fn test_giving_partial_authorization_with_burn_wrong_arguments() {
|
|
|
737
737
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
738
738
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
739
739
|
let refund_address = sender.clone();
|
|
740
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
740
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
741
741
|
|
|
742
742
|
// Send tokens
|
|
743
743
|
env.mock_auths(&[MockAuth {
|
|
@@ -782,7 +782,7 @@ fn test_giving_partial_authorization_without_native_fee_authorizations() {
|
|
|
782
782
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
783
783
|
let fee = MessagingFee { native_fee: setup.native_fee, zro_fee: 0 };
|
|
784
784
|
let refund_address = sender.clone();
|
|
785
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
785
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
786
786
|
|
|
787
787
|
// Send tokens
|
|
788
788
|
env.mock_auths(&[MockAuth {
|
|
@@ -826,7 +826,7 @@ fn test_giving_partial_authorization_without_zro_fee_authorizations() {
|
|
|
826
826
|
|
|
827
827
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
828
828
|
let refund_address = sender.clone();
|
|
829
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
829
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
830
830
|
let fee = setup.oft.quote_send(&sender, &send_param, &true);
|
|
831
831
|
|
|
832
832
|
// Send tokens
|
|
@@ -879,7 +879,7 @@ fn test_giving_full_authorization() {
|
|
|
879
879
|
|
|
880
880
|
let send_param = create_send_param(&env, dst_eid, amount_ld, amount_ld);
|
|
881
881
|
let refund_address = sender.clone();
|
|
882
|
-
let oft_receipt = setup.quote_oft(&send_param);
|
|
882
|
+
let oft_receipt = setup.quote_oft(&sender, &send_param);
|
|
883
883
|
let fee = setup.oft.quote_send(&sender, &send_param, &true);
|
|
884
884
|
|
|
885
885
|
// Send tokens
|
|
@@ -75,8 +75,8 @@ pub fn generate_g_address(env: &Env) -> Address {
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
pub fn encode_oft_message(env: &Env, send_to: &BytesN<32>, amount_sd: u64) -> Bytes {
|
|
78
|
-
let msg = OFTMessage { send_to: send_to.clone(), amount_sd,
|
|
79
|
-
msg.encode(env)
|
|
78
|
+
let msg = OFTMessage { send_to: send_to.clone(), amount_sd, compose: None };
|
|
79
|
+
msg.encode(env)
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
pub fn encode_oft_message_with_compose(
|
|
@@ -86,13 +86,13 @@ pub fn encode_oft_message_with_compose(
|
|
|
86
86
|
compose_from: &BytesN<32>,
|
|
87
87
|
compose_msg: &Bytes,
|
|
88
88
|
) -> Bytes {
|
|
89
|
+
use crate::codec::oft_msg_codec::ComposeData;
|
|
89
90
|
let msg = OFTMessage {
|
|
90
91
|
send_to: send_to.clone(),
|
|
91
92
|
amount_sd,
|
|
92
|
-
|
|
93
|
-
compose_msg: Some(compose_msg.clone()),
|
|
93
|
+
compose: Some(ComposeData { from: compose_from.clone(), msg: compose_msg.clone() }),
|
|
94
94
|
};
|
|
95
|
-
msg.encode(env)
|
|
95
|
+
msg.encode(env)
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
pub fn create_origin(src_eid: u32, sender: &BytesN<32>, nonce: u64) -> Origin {
|
|
@@ -105,7 +105,6 @@ mod test_mint_burn_oft {
|
|
|
105
105
|
use crate::{
|
|
106
106
|
self as oft_core,
|
|
107
107
|
oft_core::{OFTCore, OFTInternal},
|
|
108
|
-
types::OFTReceipt,
|
|
109
108
|
};
|
|
110
109
|
use endpoint_v2::Origin;
|
|
111
110
|
use oapp::oapp_receiver::LzReceiveInternal;
|
|
@@ -128,10 +127,10 @@ mod test_mint_burn_oft {
|
|
|
128
127
|
token: &Address,
|
|
129
128
|
owner: &Address,
|
|
130
129
|
endpoint: &Address,
|
|
131
|
-
delegate: &
|
|
130
|
+
delegate: &Address,
|
|
132
131
|
shared_decimals: u32,
|
|
133
132
|
) {
|
|
134
|
-
Self::__initialize_oft(env,
|
|
133
|
+
Self::__initialize_oft(env, token, shared_decimals, owner, endpoint, delegate)
|
|
135
134
|
}
|
|
136
135
|
}
|
|
137
136
|
|
|
@@ -153,11 +152,11 @@ mod test_mint_burn_oft {
|
|
|
153
152
|
}
|
|
154
153
|
|
|
155
154
|
impl OFTInternal for TestMintBurnOFT {
|
|
156
|
-
fn __debit(env: &Env, sender: &Address, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) ->
|
|
155
|
+
fn __debit(env: &Env, sender: &Address, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) -> (i128, i128) {
|
|
157
156
|
// Inline mint_burn::debit implementation
|
|
158
|
-
let
|
|
159
|
-
MintBurnTokenClient::new(env, &Self::token(env)).burn(sender, &
|
|
160
|
-
|
|
157
|
+
let (amount_sent_ld, amount_received_ld) = Self::__debit_view(env, amount_ld, min_amount_ld, dst_eid);
|
|
158
|
+
MintBurnTokenClient::new(env, &Self::token(env)).burn(sender, &amount_received_ld);
|
|
159
|
+
(amount_sent_ld, amount_received_ld)
|
|
161
160
|
}
|
|
162
161
|
|
|
163
162
|
fn __credit(env: &Env, to: &Address, amount_ld: i128, _src_eid: u32) -> i128 {
|
|
@@ -173,7 +172,6 @@ mod test_lock_unlock_oft {
|
|
|
173
172
|
use crate::{
|
|
174
173
|
self as oft_core,
|
|
175
174
|
oft_core::{OFTCore, OFTInternal},
|
|
176
|
-
types::OFTReceipt,
|
|
177
175
|
};
|
|
178
176
|
use endpoint_v2::Origin;
|
|
179
177
|
use oapp::oapp_receiver::{LzReceiveInternal, OAppReceiver};
|
|
@@ -189,10 +187,10 @@ mod test_lock_unlock_oft {
|
|
|
189
187
|
token: &Address,
|
|
190
188
|
owner: &Address,
|
|
191
189
|
endpoint: &Address,
|
|
192
|
-
delegate: &
|
|
190
|
+
delegate: &Address,
|
|
193
191
|
shared_decimals: u32,
|
|
194
192
|
) {
|
|
195
|
-
Self::__initialize_oft(env,
|
|
193
|
+
Self::__initialize_oft(env, token, shared_decimals, owner, endpoint, delegate)
|
|
196
194
|
}
|
|
197
195
|
}
|
|
198
196
|
|
|
@@ -218,15 +216,15 @@ mod test_lock_unlock_oft {
|
|
|
218
216
|
impl OAppReceiver for TestLockUnlockOFT {}
|
|
219
217
|
|
|
220
218
|
impl OFTInternal for TestLockUnlockOFT {
|
|
221
|
-
fn __debit(env: &Env, sender: &Address, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) ->
|
|
219
|
+
fn __debit(env: &Env, sender: &Address, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) -> (i128, i128) {
|
|
222
220
|
// Inline lock_unlock::debit implementation
|
|
223
|
-
let
|
|
221
|
+
let (amount_sent_ld, amount_received_ld) = Self::__debit_view(env, amount_ld, min_amount_ld, dst_eid);
|
|
224
222
|
TokenClient::new(env, &Self::token(env)).transfer(
|
|
225
223
|
sender,
|
|
226
224
|
env.current_contract_address(),
|
|
227
|
-
&
|
|
225
|
+
&amount_received_ld,
|
|
228
226
|
);
|
|
229
|
-
|
|
227
|
+
(amount_sent_ld, amount_received_ld)
|
|
230
228
|
}
|
|
231
229
|
|
|
232
230
|
fn __credit(env: &Env, to: &Address, amount_ld: i128, _src_eid: u32) -> i128 {
|
|
@@ -582,7 +580,7 @@ impl<'a> OFTTestSetupBuilder<'a> {
|
|
|
582
580
|
let endpoint_client = MockEndpointWithComposeClient::new(env, &endpoint_address);
|
|
583
581
|
|
|
584
582
|
// Register OFT based on type
|
|
585
|
-
let delegate
|
|
583
|
+
let delegate = owner.clone();
|
|
586
584
|
let oft_address = match oft_type {
|
|
587
585
|
OFTType::MintBurn => {
|
|
588
586
|
env.register(TestMintBurnOFT, (&token, &owner, &endpoint_address, &delegate, &self.shared_decimals))
|
|
@@ -732,8 +730,8 @@ impl<'a> OFTTestSetup<'a> {
|
|
|
732
730
|
}
|
|
733
731
|
|
|
734
732
|
/// Quote OFT to get the receipt for authorization
|
|
735
|
-
pub fn quote_oft(&self, send_param: &SendParam) -> OFTReceipt {
|
|
736
|
-
let (_, _, receipt) = self.oft.quote_oft(send_param);
|
|
733
|
+
pub fn quote_oft(&self, from: &Address, send_param: &SendParam) -> OFTReceipt {
|
|
734
|
+
let (_, _, receipt) = self.oft.quote_oft(from, send_param);
|
|
737
735
|
receipt
|
|
738
736
|
}
|
|
739
737
|
|