@layerzerolabs/protocol-stellar-v2 0.2.19 → 0.2.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/.turbo/turbo-build.log +245 -222
  2. package/.turbo/turbo-lint.log +77 -70
  3. package/.turbo/turbo-test.log +1385 -1221
  4. package/Cargo.lock +13 -3
  5. package/Cargo.toml +2 -0
  6. package/contracts/ERROR_SPEC.md +8 -1
  7. package/contracts/common-macros/src/contract_ttl.rs +18 -7
  8. package/contracts/common-macros/src/lib.rs +4 -4
  9. package/contracts/common-macros/src/tests/contract_ttl.rs +1 -1
  10. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_ttl__snapshot_generated_contractimpl_code.snap +2 -1
  11. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__upgradeable__snapshot_generated_upgradeable_code.snap +7 -12
  12. package/contracts/common-macros/src/upgradeable.rs +15 -21
  13. package/contracts/message-libs/uln-302/src/events.rs +4 -0
  14. package/contracts/message-libs/uln-302/src/send_uln.rs +22 -6
  15. package/contracts/message-libs/uln-302/src/tests/send_uln302/send.rs +38 -64
  16. package/contracts/oapps/counter/Cargo.toml +1 -0
  17. package/contracts/oapps/counter/integration_tests/setup_uln.rs +1 -1
  18. package/contracts/oapps/oapp/src/tests/test_oapp_core.rs +113 -65
  19. package/contracts/oapps/oapp/src/tests/test_oapp_options_type3.rs +111 -82
  20. package/contracts/oapps/oapp/src/tests/test_oapp_receiver.rs +293 -65
  21. package/contracts/oapps/oapp/src/tests/test_oapp_sender.rs +331 -56
  22. package/contracts/oapps/oft/src/extensions/oft_fee.rs +18 -2
  23. package/contracts/oapps/oft/src/extensions/pausable.rs +19 -4
  24. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +52 -28
  25. package/contracts/oapps/oft/src/oft.rs +29 -41
  26. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +3 -25
  27. package/contracts/oapps/oft-core/integration-tests/setup.rs +2 -2
  28. package/contracts/oapps/oft-core/src/oft_core.rs +247 -207
  29. package/contracts/oapps/oft-core/src/tests/test_utils.rs +4 -4
  30. package/contracts/upgrader/src/lib.rs +30 -57
  31. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract1.wasm +0 -0
  32. package/contracts/upgrader/src/tests/test_data/test_upgradeable_contract2.wasm +0 -0
  33. package/contracts/upgrader/src/tests/test_upgrader.rs +44 -35
  34. package/contracts/utils/src/buffer_reader.rs +1 -0
  35. package/contracts/utils/src/errors.rs +3 -1
  36. package/contracts/utils/src/tests/upgradeable.rs +372 -175
  37. package/contracts/utils/src/ttl_configurable.rs +3 -3
  38. package/contracts/utils/src/upgradeable.rs +48 -23
  39. package/contracts/workers/dvn/Cargo.toml +1 -0
  40. package/contracts/workers/dvn/src/auth.rs +12 -42
  41. package/contracts/workers/dvn/src/dvn.rs +16 -31
  42. package/contracts/workers/dvn/src/errors.rs +0 -1
  43. package/contracts/workers/dvn/src/interfaces/dvn.rs +35 -0
  44. package/contracts/workers/dvn/src/lib.rs +4 -3
  45. package/contracts/workers/dvn/src/tests/auth.rs +1 -1
  46. package/contracts/workers/dvn/src/tests/dvn.rs +19 -15
  47. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +2 -4
  48. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +1 -3
  49. package/contracts/workers/dvn/src/tests/setup.rs +5 -9
  50. package/contracts/workers/dvn-fee-lib/Cargo.toml +1 -1
  51. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +3 -5
  52. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +2 -3
  53. package/contracts/workers/executor/Cargo.toml +1 -0
  54. package/contracts/workers/executor/src/executor.rs +15 -26
  55. package/contracts/workers/executor-fee-lib/Cargo.toml +2 -1
  56. package/contracts/workers/executor-fee-lib/src/executor_fee_lib.rs +63 -5
  57. package/contracts/workers/executor-fee-lib/src/executor_option.rs +28 -1
  58. package/contracts/workers/executor-fee-lib/src/lib.rs +3 -0
  59. package/contracts/workers/executor-fee-lib/src/tests/executor_fee_lib.rs +701 -0
  60. package/contracts/workers/executor-fee-lib/src/tests/executor_option.rs +370 -0
  61. package/contracts/workers/executor-fee-lib/src/tests/mod.rs +4 -0
  62. package/contracts/workers/executor-fee-lib/src/tests/setup.rs +60 -0
  63. package/contracts/workers/executor-helper/src/lib.rs +3 -0
  64. package/contracts/workers/executor-helper/src/tests/executor_helper.rs +184 -0
  65. package/contracts/workers/executor-helper/src/tests/mod.rs +2 -0
  66. package/contracts/workers/executor-helper/src/tests/setup.rs +366 -0
  67. package/contracts/workers/fee-lib-interfaces/Cargo.toml +14 -0
  68. package/contracts/workers/{worker/src/interfaces/mod.rs → fee-lib-interfaces/src/lib.rs} +4 -3
  69. package/contracts/workers/price-feed/Cargo.toml +2 -1
  70. package/contracts/workers/price-feed/src/events.rs +1 -1
  71. package/contracts/workers/price-feed/src/lib.rs +3 -0
  72. package/contracts/workers/price-feed/src/price_feed.rs +6 -12
  73. package/contracts/workers/price-feed/src/storage.rs +1 -1
  74. package/contracts/workers/price-feed/src/tests/mod.rs +2 -0
  75. package/contracts/workers/price-feed/src/tests/price_feed.rs +869 -0
  76. package/contracts/workers/price-feed/src/tests/setup.rs +70 -0
  77. package/contracts/workers/price-feed/src/types.rs +1 -1
  78. package/contracts/workers/worker/src/errors.rs +0 -3
  79. package/contracts/workers/worker/src/lib.rs +0 -2
  80. package/contracts/workers/worker/src/storage.rs +32 -29
  81. package/contracts/workers/worker/src/tests/setup.rs +1 -7
  82. package/contracts/workers/worker/src/tests/worker.rs +50 -42
  83. package/contracts/workers/worker/src/worker.rs +49 -58
  84. package/package.json +3 -3
  85. package/sdk/.turbo/turbo-test.log +220 -218
  86. package/sdk/dist/generated/bml.d.ts +12 -4
  87. package/sdk/dist/generated/bml.js +8 -6
  88. package/sdk/dist/generated/counter.d.ts +12 -4
  89. package/sdk/dist/generated/counter.js +8 -6
  90. package/sdk/dist/generated/dvn.d.ts +404 -365
  91. package/sdk/dist/generated/dvn.js +55 -53
  92. package/sdk/dist/generated/dvn_fee_lib.d.ts +224 -268
  93. package/sdk/dist/generated/dvn_fee_lib.js +22 -53
  94. package/sdk/dist/generated/endpoint.d.ts +12 -4
  95. package/sdk/dist/generated/endpoint.js +8 -6
  96. package/sdk/dist/generated/executor.d.ts +370 -326
  97. package/sdk/dist/generated/executor.js +47 -44
  98. package/sdk/dist/generated/executor_fee_lib.d.ts +258 -302
  99. package/sdk/dist/generated/executor_fee_lib.js +21 -52
  100. package/sdk/dist/generated/executor_helper.d.ts +26 -190
  101. package/sdk/dist/generated/executor_helper.js +22 -27
  102. package/sdk/dist/generated/layerzero_view.d.ts +1271 -0
  103. package/sdk/dist/generated/layerzero_view.js +294 -0
  104. package/sdk/dist/generated/oft.d.ts +49 -40
  105. package/sdk/dist/generated/oft.js +25 -23
  106. package/sdk/dist/generated/price_feed.d.ts +225 -269
  107. package/sdk/dist/generated/price_feed.js +22 -53
  108. package/sdk/dist/generated/sml.d.ts +12 -4
  109. package/sdk/dist/generated/sml.js +8 -6
  110. package/sdk/dist/generated/treasury.d.ts +12 -4
  111. package/sdk/dist/generated/treasury.js +8 -6
  112. package/sdk/dist/generated/uln302.d.ts +12 -4
  113. package/sdk/dist/generated/uln302.js +10 -8
  114. package/sdk/dist/generated/upgrader.d.ts +189 -18
  115. package/sdk/dist/generated/upgrader.js +84 -4
  116. package/sdk/dist/index.d.ts +1 -0
  117. package/sdk/dist/index.js +2 -0
  118. package/sdk/package.json +1 -1
  119. package/sdk/src/index.ts +3 -0
  120. package/sdk/test/oft-sml.test.ts +4 -4
  121. package/sdk/test/upgrader.test.ts +2 -3
  122. package/tools/ts-bindings-gen/src/main.rs +2 -1
  123. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/dvn_fee_lib.rs +0 -0
  124. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/executor_fee_lib.rs +0 -0
  125. /package/contracts/workers/{worker/src/interfaces → fee-lib-interfaces/src}/price_feed.rs +0 -0
@@ -2,6 +2,10 @@ use common_macros::{contract_error, contract_trait, only_auth, storage};
2
2
  use soroban_sdk::{assert_with_error, contractevent, contracttype, panic_with_error, Env};
3
3
  use utils::ownable::Ownable;
4
4
 
5
+ // =========================================================================
6
+ // Types
7
+ // =========================================================================
8
+
5
9
  #[contracttype]
6
10
  #[derive(Clone, Debug, Eq, PartialEq)]
7
11
  #[repr(u8)]
@@ -19,21 +23,33 @@ pub struct RateLimit {
19
23
  last_update: u64,
20
24
  }
21
25
 
26
+ // =========================================================================
27
+ // Storage
28
+ // =========================================================================
29
+
22
30
  #[storage]
23
31
  pub enum RateLimitStorage {
24
32
  #[persistent(RateLimit)]
25
33
  RateLimit { direction: Direction, eid: u32 },
26
34
  }
27
35
 
36
+ // =========================================================================
37
+ // Errors
38
+ // =========================================================================
39
+
28
40
  #[contract_error]
29
41
  pub enum RateLimitError {
30
- ExceededRateLimit = 2400,
42
+ ExceededRateLimit = 3120,
31
43
  InvalidTimestamp,
32
44
  InvalidWindowSeconds,
33
45
  InvalidLimit,
34
46
  SameValue,
35
47
  }
36
48
 
49
+ // =========================================================================
50
+ // Events
51
+ // =========================================================================
52
+
37
53
  #[contractevent]
38
54
  #[derive(Clone, Debug, Eq, PartialEq)]
39
55
  pub struct RateLimitSet {
@@ -59,33 +75,9 @@ pub struct RateLimitUnset {
59
75
  pub eid: u32,
60
76
  }
61
77
 
62
- /// Helper function to calculate the current in-flight amount with decay.
63
- /// Used by both public trait methods and internal implementations.
64
- fn calculate_in_flight(env: &Env, direction: &Direction, eid: u32) -> i128 {
65
- if !RateLimitStorage::has_rate_limit(env, direction, eid) {
66
- return 0;
67
- }
68
- let rate_limit = RateLimitStorage::rate_limit(env, direction, eid).unwrap();
69
- let timestamp = env.ledger().timestamp();
70
- assert_with_error!(env, timestamp >= rate_limit.last_update, RateLimitError::InvalidTimestamp);
71
- let elapsed = timestamp - rate_limit.last_update;
72
- let decay = (elapsed as i128) * rate_limit.limit / (rate_limit.window_seconds as i128);
73
- if decay < rate_limit.in_flight_on_last_update {
74
- rate_limit.in_flight_on_last_update - decay
75
- } else {
76
- 0
77
- }
78
- }
79
-
80
- /// Checkpoints the current in-flight amount by applying decay and updating timestamp.
81
- /// Used internally before modifying rate limit state.
82
- fn checkpoint_rate_limit_in_flight(env: &Env, direction: &Direction, eid: u32) {
83
- let in_flight = calculate_in_flight(env, direction, eid);
84
- let mut rate_limit = RateLimitStorage::rate_limit(env, direction, eid).unwrap();
85
- rate_limit.in_flight_on_last_update = in_flight;
86
- rate_limit.last_update = env.ledger().timestamp();
87
- RateLimitStorage::set_rate_limit(env, direction, eid, &rate_limit);
88
- }
78
+ // =========================================================================
79
+ // Trait With Default Implementations
80
+ // =========================================================================
89
81
 
90
82
  #[contract_trait]
91
83
  pub trait RateLimiter: RateLimiterInternal + Ownable + Sized {
@@ -198,3 +190,35 @@ pub trait RateLimiterInternal {
198
190
  RateLimitStorage::set_rate_limit(env, direction, eid, &rate_limit);
199
191
  }
200
192
  }
193
+
194
+ // =========================================================================
195
+ // Helper Functions
196
+ // =========================================================================
197
+
198
+ /// Helper function to calculate the current in-flight amount with decay.
199
+ /// Used by both public trait methods and internal implementations.
200
+ fn calculate_in_flight(env: &Env, direction: &Direction, eid: u32) -> i128 {
201
+ if !RateLimitStorage::has_rate_limit(env, direction, eid) {
202
+ return 0;
203
+ }
204
+ let rate_limit = RateLimitStorage::rate_limit(env, direction, eid).unwrap();
205
+ let timestamp = env.ledger().timestamp();
206
+ assert_with_error!(env, timestamp >= rate_limit.last_update, RateLimitError::InvalidTimestamp);
207
+ let elapsed = timestamp - rate_limit.last_update;
208
+ let decay = (elapsed as i128) * rate_limit.limit / (rate_limit.window_seconds as i128);
209
+ if decay < rate_limit.in_flight_on_last_update {
210
+ rate_limit.in_flight_on_last_update - decay
211
+ } else {
212
+ 0
213
+ }
214
+ }
215
+
216
+ /// Checkpoints the current in-flight amount by applying decay and updating timestamp.
217
+ /// Used internally before modifying rate limit state.
218
+ fn checkpoint_rate_limit_in_flight(env: &Env, direction: &Direction, eid: u32) {
219
+ let in_flight = calculate_in_flight(env, direction, eid);
220
+ let mut rate_limit = RateLimitStorage::rate_limit(env, direction, eid).unwrap();
221
+ rate_limit.in_flight_on_last_update = in_flight;
222
+ rate_limit.last_update = env.ledger().timestamp();
223
+ RateLimitStorage::set_rate_limit(env, direction, eid, &rate_limit);
224
+ }
@@ -7,25 +7,36 @@ use crate::{
7
7
  oft_types::{lock_unlock, mint_burn, OftType},
8
8
  };
9
9
  use common_macros::{contract_impl, storage};
10
- use endpoint_v2::{MessagingFee, Origin};
11
- use oapp::oapp_receiver::LzReceiveInternal;
10
+ use endpoint_v2::Origin;
12
11
  use oapp_macros::oapp;
13
12
  use oft_core::{
14
13
  errors::OFTError,
14
+ impl_oft_lz_receive,
15
15
  types::{OFTFeeDetail, OFTLimit, OFTReceipt, SendParam},
16
16
  utils as oft_utils, OFTCore, OFTInternal,
17
17
  };
18
18
  use soroban_sdk::{assert_with_error, vec, Address, Bytes, BytesN, Env, Vec};
19
19
 
20
+ // =========================================================================
21
+ // Storage
22
+ // =========================================================================
23
+
20
24
  #[storage]
21
25
  enum OFTStorage {
22
26
  #[instance(OftType)]
23
27
  OftType,
24
28
  }
25
29
 
30
+ // =========================================================================
31
+ // OFT Contract
32
+ // =========================================================================
33
+
26
34
  #[oapp]
27
35
  pub struct OFT;
28
36
 
37
+ // LzReceiveInternal implementation using default OFT receive logic
38
+ impl_oft_lz_receive!(OFT);
39
+
29
40
  #[contract_impl]
30
41
  impl OFT {
31
42
  pub fn __constructor(
@@ -37,7 +48,7 @@ impl OFT {
37
48
  shared_decimals: u32,
38
49
  oft_type: OftType,
39
50
  ) {
40
- oft_core::initialize_oft::<Self>(env, owner, token, endpoint, delegate, shared_decimals);
51
+ Self::__initialize_oft(env, owner, token, endpoint, delegate, shared_decimals);
41
52
  OFTStorage::set_oft_type(env, &oft_type);
42
53
  }
43
54
 
@@ -51,9 +62,7 @@ impl OFT {
51
62
  #[contract_impl(contracttrait)]
52
63
  impl OFTCore for OFT {
53
64
  fn quote_oft(env: &Env, send_param: &SendParam) -> (OFTLimit, Vec<OFTFeeDetail>, OFTReceipt) {
54
- Self::__assert_not_paused(env);
55
-
56
- let oft_receipt = Self::__debit_view(env, send_param.amount_ld, send_param.min_amount_ld, send_param.dst_eid);
65
+ let (_, _, oft_receipt) = Self::__quote_oft(env, send_param);
57
66
 
58
67
  // fee details (only include if there's an actual fee)
59
68
  let fee_amount_ld = oft_receipt.amount_sent_ld - oft_receipt.amount_received_ld;
@@ -69,17 +78,15 @@ impl OFTCore for OFT {
69
78
 
70
79
  (oft_limit, fee_details, oft_receipt)
71
80
  }
72
-
73
- fn quote_send(env: &Env, sender: &Address, send_param: &SendParam, pay_in_zro: bool) -> MessagingFee {
74
- Self::__assert_not_paused(env);
75
- oft_core::quote_send::<Self>(env, sender, send_param, pay_in_zro)
76
- }
77
81
  }
78
82
 
79
83
  /// OFT behavior for standard OFT with extension hooks
80
84
  impl OFTInternal for OFT {
85
+ /// Overrides default to add pausable check and fee calculation.
81
86
  fn __debit_view(env: &Env, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) -> OFTReceipt {
82
- let conversion_rate = Self::decimal_conversion_rate(env);
87
+ Self::__assert_not_paused(env);
88
+
89
+ let conversion_rate = Self::__decimal_conversion_rate(env);
83
90
 
84
91
  // Apply the fee before dust removal to ensure the fee is calculated on the full amount and dust is not transferred
85
92
  let fee = Self::__fee_view(env, dst_eid, amount_ld);
@@ -96,37 +103,34 @@ impl OFTInternal for OFT {
96
103
  }
97
104
 
98
105
  fn __debit(env: &Env, sender: &Address, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) -> OFTReceipt {
99
- // 1. Pausable check
100
- Self::__assert_not_paused(env);
101
-
102
- // 2. Core debit logic (based on oft_type)
106
+ // Core debit logic (based on oft_type)
103
107
  let oft_receipt = match Self::oft_type(env) {
104
108
  OftType::LockUnlock => lock_unlock::debit::<Self>(env, sender, amount_ld, min_amount_ld, dst_eid),
105
109
  OftType::MintBurn => mint_burn::debit::<Self>(env, sender, amount_ld, min_amount_ld, dst_eid),
106
110
  };
107
111
 
108
- // 3. Rate limit checks (using amount_received_ld - the actual cross-chain amount)
112
+ // Rate limit checks (using amount_received_ld - the actual cross-chain amount)
109
113
  Self::__consume_rate_limit_capacity(env, &Direction::Outbound, dst_eid, oft_receipt.amount_received_ld);
110
114
  Self::__release_rate_limit_capacity(env, &Direction::Inbound, dst_eid, oft_receipt.amount_received_ld);
111
115
 
112
- // 4. Charge fee
116
+ // Charge fee
113
117
  let fee = oft_receipt.amount_sent_ld - oft_receipt.amount_received_ld;
114
- Self::__charge_fee(env, &Self::token(env), sender, fee);
118
+ Self::__charge_fee(env, &Self::__token(env), sender, fee);
115
119
 
116
120
  oft_receipt
117
121
  }
118
122
 
119
123
  fn __credit(env: &Env, to: &Address, amount_ld: i128, src_eid: u32) -> i128 {
120
- // 1. Pausable check
124
+ // Pausable check
121
125
  Self::__assert_not_paused(env);
122
126
 
123
- // 2. Core credit logic (based on mode)
127
+ // Core credit logic (based on mode)
124
128
  let amount_credited = match Self::oft_type(env) {
125
129
  OftType::LockUnlock => lock_unlock::credit::<Self>(env, to, amount_ld, src_eid),
126
130
  OftType::MintBurn => mint_burn::credit::<Self>(env, to, amount_ld, src_eid),
127
131
  };
128
132
 
129
- // 3. Rate limit checks (using amount_credited - the actual credited amount)
133
+ // Rate limit checks (using amount_credited - the actual credited amount)
130
134
  Self::__consume_rate_limit_capacity(env, &Direction::Inbound, src_eid, amount_credited);
131
135
  Self::__release_rate_limit_capacity(env, &Direction::Outbound, src_eid, amount_credited);
132
136
 
@@ -134,40 +138,24 @@ impl OFTInternal for OFT {
134
138
  }
135
139
  }
136
140
 
137
- /// LzReceiveInternal implementation using default OFT receive logic
138
- impl LzReceiveInternal for OFT {
139
- fn __lz_receive(
140
- env: &Env,
141
- origin: &Origin,
142
- guid: &BytesN<32>,
143
- message: &Bytes,
144
- extra_data: &Bytes,
145
- executor: &Address,
146
- value: i128,
147
- ) {
148
- oft_core::lz_receive::<Self>(env, executor, origin, guid, message, extra_data, value)
149
- }
150
- }
151
-
152
- // ==================== Extension Trait Implementations ====================
141
+ // =========================================================================
142
+ // Extension Trait Implementations
143
+ // =========================================================================
153
144
 
154
145
  /// Pausable extension - allows pausing/unpausing the OFT
155
146
  /// Default state: unpaused (all operations allowed)
156
147
  #[contract_impl(contracttrait)]
157
148
  impl OFTPausable for OFT {}
158
-
159
149
  impl OFTPausableInternal for OFT {}
160
150
 
161
151
  /// OFT Fee extension - allows collecting fees on transfers
162
152
  /// Default state: 0 BPS (no fee collected)
163
153
  #[contract_impl(contracttrait)]
164
154
  impl OFTFee for OFT {}
165
-
166
155
  impl OFTFeeInternal for OFT {}
167
156
 
168
157
  /// Rate Limiter extension - allows rate limiting transfers
169
158
  /// Default state: not set (rate_limit_capacity returns i128::MAX)
170
159
  #[contract_impl(contracttrait)]
171
160
  impl RateLimiter for OFT {}
172
-
173
161
  impl RateLimiterInternal for OFT {}
@@ -4,29 +4,7 @@
4
4
  //! Used when the OFT contract has mint/burn authority over the token.
5
5
 
6
6
  use oft_core::{oft_core::OFTCore, types::OFTReceipt};
7
- use soroban_sdk::{contractclient, Address, Env};
8
-
9
- /// Contract interface for mint and burn token operations.
10
- ///
11
- /// This interface abstracts the token mint/burn functionality, allowing different
12
- /// token implementations (e.g., StellarAssetContract, custom tokens) to be used
13
- /// with the MintBurn OFT.
14
- #[contractclient(name = "MintBurnTokenClient")]
15
- pub trait MintBurnToken {
16
- /// Mints tokens to the specified address.
17
- ///
18
- /// # Parameters
19
- /// * `to` - The address to mint tokens to
20
- /// * `amount` - The amount of tokens to mint (must be non-negative)
21
- fn mint(env: Env, to: Address, amount: i128);
22
-
23
- /// Burns tokens from the specified address.
24
- ///
25
- /// # Parameters
26
- /// * `from` - The address to burn tokens from
27
- /// * `amount` - The amount of tokens to burn (must be non-negative)
28
- fn burn(env: Env, from: Address, amount: i128);
29
- }
7
+ use soroban_sdk::{token::StellarAssetClient, Address, Env};
30
8
 
31
9
  /// Debit tokens using MintBurn OFT type (burns tokens from sender).
32
10
  ///
@@ -47,7 +25,7 @@ pub fn debit<T: OFTCore>(
47
25
  dst_eid: u32,
48
26
  ) -> OFTReceipt {
49
27
  let receipt = T::__debit_view(env, amount_ld, min_amount_ld, dst_eid);
50
- MintBurnTokenClient::new(env, &T::token(env)).burn(sender, &receipt.amount_received_ld);
28
+ StellarAssetClient::new(env, &T::token(env)).burn(sender, &receipt.amount_received_ld);
51
29
  receipt
52
30
  }
53
31
 
@@ -62,6 +40,6 @@ pub fn debit<T: OFTCore>(
62
40
  /// # Returns
63
41
  /// The amount credited
64
42
  pub fn credit<T: OFTCore>(env: &Env, to: &Address, amount_ld: i128, _src_eid: u32) -> i128 {
65
- MintBurnTokenClient::new(env, &T::token(env)).mint(to, &amount_ld);
43
+ StellarAssetClient::new(env, &T::token(env)).mint(to, &amount_ld);
66
44
  amount_ld
67
45
  }
@@ -7,7 +7,7 @@ extern crate std;
7
7
  use crate::{
8
8
  self as oft_core,
9
9
  integration_tests::utils::{address_to_peer_bytes32, peer_bytes32_to_address},
10
- oft_core::{initialize_oft, lz_receive, OFTClient, OFTCore, OFTInternal},
10
+ oft_core::{lz_receive, OFTClient, OFTCore, OFTInternal},
11
11
  storage::OFTStorage,
12
12
  types::OFTReceipt,
13
13
  };
@@ -53,7 +53,7 @@ impl TestOFT {
53
53
  delegate: &Option<Address>,
54
54
  shared_decimals: u32,
55
55
  ) {
56
- initialize_oft::<Self>(env, owner, token, endpoint, delegate, shared_decimals)
56
+ Self::__initialize_oft(env, owner, token, endpoint, delegate, shared_decimals)
57
57
  }
58
58
  }
59
59