@layerzerolabs/protocol-stellar-v2 0.2.41 → 0.2.44

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 (42) hide show
  1. package/.turbo/turbo-build.log +146 -144
  2. package/.turbo/turbo-lint.log +165 -96
  3. package/.turbo/turbo-test.log +1810 -1755
  4. package/Cargo.lock +22 -127
  5. package/Cargo.toml +4 -6
  6. package/contracts/macro-integration-tests/tests/runtime/oapp/mod.rs +3 -5
  7. package/contracts/macro-integration-tests/tests/runtime/oapp/sender.rs +2 -1
  8. package/contracts/macro-integration-tests/tests/runtime/ownable/mod.rs +1 -1
  9. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_auth_trait.rs +28 -0
  10. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_auth_trait.stderr +397 -0
  11. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.rs +1 -0
  12. package/contracts/macro-integration-tests/tests/ui/oapp/fail/missing_lz_receive_internal.stderr +10 -10
  13. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_all.rs +1 -0
  14. package/contracts/macro-integration-tests/tests/ui/oapp/pass/custom_single_trait.rs +4 -0
  15. package/contracts/macro-integration-tests/tests/ui/oapp/pass/minimal_contract.rs +5 -4
  16. package/contracts/macro-integration-tests/tests/ui/oapp/pass/struct_with_fields.rs +2 -0
  17. package/contracts/oapps/counter/src/counter.rs +4 -3
  18. package/contracts/oapps/oapp/src/oapp_core.rs +1 -1
  19. package/contracts/oapps/oapp/src/tests/oapp_core.rs +2 -1
  20. package/contracts/oapps/oapp/src/tests/oapp_options_type3.rs +6 -3
  21. package/contracts/oapps/oapp/src/tests/oapp_receiver.rs +2 -1
  22. package/contracts/oapps/oapp/src/tests/oapp_sender.rs +2 -1
  23. package/contracts/oapps/oapp/src/tests/test_macros.rs +10 -0
  24. package/contracts/oapps/oapp-macros/src/generators.rs +6 -9
  25. package/contracts/oapps/oapp-macros/src/lib.rs +1 -1
  26. package/contracts/oapps/oapp-macros/src/tests/snapshots/oapp_macros__tests__oapp__snapshot_generate_oapp.snap +0 -7
  27. package/contracts/oapps/oft/src/oft.rs +2 -1
  28. package/contracts/oapps/oft/src/tests/oft_types/lock_unlock.rs +1 -0
  29. package/contracts/oapps/oft-core/integration-tests/setup.rs +1 -0
  30. package/contracts/oapps/oft-core/src/oft_core.rs +2 -2
  31. package/contracts/oapps/oft-core/src/tests/test_utils.rs +2 -0
  32. package/docs/oapp-guide.md +14 -9
  33. package/package.json +5 -4
  34. package/sdk/.turbo/turbo-test.log +294 -298
  35. package/sdk/dist/generated/counter.d.ts +137 -137
  36. package/sdk/dist/generated/counter.js +27 -27
  37. package/sdk/dist/generated/oft.d.ts +136 -136
  38. package/sdk/dist/generated/oft.js +27 -27
  39. package/sdk/package.json +1 -1
  40. package/ts-bindings-gen.toml +67 -0
  41. package/tools/ts-bindings-gen/Cargo.toml +0 -16
  42. package/tools/ts-bindings-gen/src/main.rs +0 -214
@@ -0,0 +1,397 @@
1
+ error[E0412]: cannot find type `MyOAppClient` in this scope
2
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
3
+ |
4
+ 12 | #[oapp]
5
+ | ^^^^^^^ not found in this scope
6
+ |
7
+ = note: this error originates in the attribute macro `soroban_sdk::contractclient` (in Nightly builds, run with -Z macro-backtrace for more info)
8
+
9
+ error[E0412]: cannot find type `MyOAppArgs` in this scope
10
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
11
+ |
12
+ 12 | #[oapp]
13
+ | ^^^^^^^ not found in this scope
14
+ |
15
+ = note: this error originates in the attribute macro `soroban_sdk::contractargs` (in Nightly builds, run with -Z macro-backtrace for more info)
16
+
17
+ error[E0412]: cannot find type `MyOAppClient` in this scope
18
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
19
+ |
20
+ 12 | #[oapp]
21
+ | ^^^^^^^ not found in this scope
22
+ |
23
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
24
+
25
+ error[E0412]: cannot find type `MyOAppArgs` in this scope
26
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
27
+ |
28
+ 12 | #[oapp]
29
+ | ^^^^^^^ not found in this scope
30
+ |
31
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
32
+
33
+ error[E0412]: cannot find type `MyOAppClient` in this scope
34
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
35
+ |
36
+ 12 | #[oapp]
37
+ | ^^^^^^^ not found in this scope
38
+ |
39
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
40
+
41
+ error[E0412]: cannot find type `MyOAppArgs` in this scope
42
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
43
+ |
44
+ 12 | #[oapp]
45
+ | ^^^^^^^ not found in this scope
46
+ |
47
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
48
+
49
+ error[E0412]: cannot find type `MyOAppClient` in this scope
50
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
51
+ |
52
+ 12 | #[oapp]
53
+ | ^^^^^^^ not found in this scope
54
+ |
55
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
56
+
57
+ error[E0412]: cannot find type `MyOAppArgs` in this scope
58
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
59
+ |
60
+ 12 | #[oapp]
61
+ | ^^^^^^^ not found in this scope
62
+ |
63
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
64
+
65
+ error[E0412]: cannot find type `MyOAppClient` in this scope
66
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
67
+ |
68
+ 12 | #[oapp]
69
+ | ^^^^^^^ not found in this scope
70
+ |
71
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
72
+
73
+ error[E0412]: cannot find type `MyOAppArgs` in this scope
74
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:12:1
75
+ |
76
+ 12 | #[oapp]
77
+ | ^^^^^^^ not found in this scope
78
+ |
79
+ = note: this error originates in the macro `soroban_sdk::contractimpl_trait_default_fns_not_overridden` which comes from the expansion of the attribute macro `oapp` (in Nightly builds, run with -Z macro-backtrace for more info)
80
+
81
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
82
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
83
+ |
84
+ 13 | pub struct MyOApp;
85
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
86
+ |
87
+ = help: the trait `Ownable` is implemented for `EndpointV2`
88
+ note: required by a bound in `OAppCore`
89
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_core.rs
90
+ |
91
+ | pub trait OAppCore: Ownable + RoleBasedAccessControl {
92
+ | ^^^^^^^ required by this bound in `OAppCore`
93
+
94
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
95
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
96
+ |
97
+ 13 | pub struct MyOApp;
98
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
99
+ |
100
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
101
+ note: required by a bound in `RoleBasedAccessControl`
102
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
103
+ |
104
+ | pub trait RoleBasedAccessControl: Auth {
105
+ | ^^^^ required by this bound in `RoleBasedAccessControl`
106
+
107
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
108
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
109
+ |
110
+ 13 | pub struct MyOApp;
111
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
112
+ |
113
+ = help: the trait `Ownable` is implemented for `EndpointV2`
114
+ = note: required for `MyOApp` to implement `OAppCore`
115
+ note: required by a bound in `OAppSenderInternal`
116
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_sender.rs
117
+ |
118
+ | pub trait OAppSenderInternal: OAppCore {
119
+ | ^^^^^^^^ required by this bound in `OAppSenderInternal`
120
+
121
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
122
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
123
+ |
124
+ 13 | pub struct MyOApp;
125
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
126
+ |
127
+ = help: the trait `Ownable` is implemented for `EndpointV2`
128
+ = note: required for `MyOApp` to implement `OAppCore`
129
+ note: required by a bound in `OAppReceiver`
130
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_receiver.rs
131
+ |
132
+ | pub trait OAppReceiver: OAppCore + LzReceiveInternal {
133
+ | ^^^^^^^^ required by this bound in `OAppReceiver`
134
+
135
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
136
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
137
+ |
138
+ 13 | pub struct MyOApp;
139
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
140
+ |
141
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
142
+ = note: required for `MyOApp` to implement `RoleBasedAccessControl`
143
+ note: required by a bound in `OAppOptionsType3`
144
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_options_type3.rs
145
+ |
146
+ | pub trait OAppOptionsType3: RoleBasedAccessControl {
147
+ | ^^^^^^^^^^^^^^^^^^^^^^ required by this bound in `OAppOptionsType3`
148
+
149
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
150
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
151
+ |
152
+ 13 | pub struct MyOApp;
153
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
154
+ |
155
+ = help: the trait `Ownable` is implemented for `EndpointV2`
156
+ note: required by a bound in `oapp_version`
157
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_core.rs
158
+ |
159
+ | pub trait OAppCore: Ownable + RoleBasedAccessControl {
160
+ | ^^^^^^^ required by this bound in `OAppCore::oapp_version`
161
+ ...
162
+ | fn oapp_version(_env: &soroban_sdk::Env) -> (u64, u64) {
163
+ | ------------ required by a bound in this associated function
164
+
165
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
166
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
167
+ |
168
+ 13 | pub struct MyOApp;
169
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
170
+ |
171
+ = help: the trait `Ownable` is implemented for `EndpointV2`
172
+ note: required by a bound in `endpoint`
173
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_core.rs
174
+ |
175
+ | pub trait OAppCore: Ownable + RoleBasedAccessControl {
176
+ | ^^^^^^^ required by this bound in `OAppCore::endpoint`
177
+ ...
178
+ | fn endpoint(env: &soroban_sdk::Env) -> soroban_sdk::Address {
179
+ | -------- required by a bound in this associated function
180
+
181
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
182
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
183
+ |
184
+ 13 | pub struct MyOApp;
185
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
186
+ |
187
+ = help: the trait `Ownable` is implemented for `EndpointV2`
188
+ note: required by a bound in `peer`
189
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_core.rs
190
+ |
191
+ | pub trait OAppCore: Ownable + RoleBasedAccessControl {
192
+ | ^^^^^^^ required by this bound in `OAppCore::peer`
193
+ ...
194
+ | fn peer(env: &soroban_sdk::Env, eid: u32) -> Option<soroban_sdk::BytesN<32>> {
195
+ | ---- required by a bound in this associated function
196
+
197
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
198
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
199
+ |
200
+ 13 | pub struct MyOApp;
201
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
202
+ |
203
+ = help: the trait `Ownable` is implemented for `EndpointV2`
204
+ note: required by a bound in `set_peer`
205
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_core.rs
206
+ |
207
+ | pub trait OAppCore: Ownable + RoleBasedAccessControl {
208
+ | ^^^^^^^ required by this bound in `OAppCore::set_peer`
209
+ ...
210
+ | fn set_peer(
211
+ | -------- required by a bound in this associated function
212
+
213
+ error[E0277]: the trait bound `MyOApp: Ownable` is not satisfied
214
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
215
+ |
216
+ 13 | pub struct MyOApp;
217
+ | ^^^^^^ the trait `Ownable` is not implemented for `MyOApp`
218
+ |
219
+ = help: the trait `Ownable` is implemented for `EndpointV2`
220
+ note: required by a bound in `oapp::oapp_core::OAppCore::set_delegate`
221
+ --> $WORKSPACE/contracts/oapps/oapp/src/oapp_core.rs
222
+ |
223
+ | pub trait OAppCore: Ownable + RoleBasedAccessControl {
224
+ | ^^^^^^^ required by this bound in `OAppCore::set_delegate`
225
+ ...
226
+ | fn set_delegate(env: &soroban_sdk::Env, delegate: &Option<soroban_sdk::Address>, operator: &soroban_sdk::Address) {
227
+ | ------------ required by a bound in this associated function
228
+
229
+ error[E0277]: the trait bound `MyOApp: ContractFunctionRegister` is not satisfied
230
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
231
+ |
232
+ 13 | pub struct MyOApp;
233
+ | ^^^^^^ the trait `ContractFunctionRegister` is not implemented for `MyOApp`
234
+ |
235
+ = help: the following other types implement trait `ContractFunctionRegister`:
236
+ EndpointV2
237
+ MockAuthContract
238
+
239
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
240
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
241
+ |
242
+ 13 | pub struct MyOApp;
243
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
244
+ |
245
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
246
+ note: required by a bound in `grant_role`
247
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
248
+ |
249
+ | pub trait RoleBasedAccessControl: Auth {
250
+ | ^^^^ required by this bound in `RoleBasedAccessControl::grant_role`
251
+ ...
252
+ | fn grant_role(
253
+ | ---------- required by a bound in this associated function
254
+
255
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
256
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
257
+ |
258
+ 13 | pub struct MyOApp;
259
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
260
+ |
261
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
262
+ note: required by a bound in `revoke_role`
263
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
264
+ |
265
+ | pub trait RoleBasedAccessControl: Auth {
266
+ | ^^^^ required by this bound in `RoleBasedAccessControl::revoke_role`
267
+ ...
268
+ | fn revoke_role(
269
+ | ----------- required by a bound in this associated function
270
+
271
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
272
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
273
+ |
274
+ 13 | pub struct MyOApp;
275
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
276
+ |
277
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
278
+ note: required by a bound in `renounce_role`
279
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
280
+ |
281
+ | pub trait RoleBasedAccessControl: Auth {
282
+ | ^^^^ required by this bound in `RoleBasedAccessControl::renounce_role`
283
+ ...
284
+ | fn renounce_role(env: &soroban_sdk::Env, role: &soroban_sdk::Symbol, caller: &soroban_sdk::Address) {
285
+ | ------------- required by a bound in this associated function
286
+
287
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
288
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
289
+ |
290
+ 13 | pub struct MyOApp;
291
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
292
+ |
293
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
294
+ note: required by a bound in `set_role_admin`
295
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
296
+ |
297
+ | pub trait RoleBasedAccessControl: Auth {
298
+ | ^^^^ required by this bound in `RoleBasedAccessControl::set_role_admin`
299
+ ...
300
+ | fn set_role_admin(env: &soroban_sdk::Env, role: &soroban_sdk::Symbol, admin_role: &soroban_sdk::Symbol) {
301
+ | -------------- required by a bound in this associated function
302
+
303
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
304
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
305
+ |
306
+ 13 | pub struct MyOApp;
307
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
308
+ |
309
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
310
+ note: required by a bound in `remove_role_admin`
311
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
312
+ |
313
+ | pub trait RoleBasedAccessControl: Auth {
314
+ | ^^^^ required by this bound in `RoleBasedAccessControl::remove_role_admin`
315
+ ...
316
+ | fn remove_role_admin(env: &soroban_sdk::Env, role: &soroban_sdk::Symbol) {
317
+ | ----------------- required by a bound in this associated function
318
+
319
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
320
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
321
+ |
322
+ 13 | pub struct MyOApp;
323
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
324
+ |
325
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
326
+ note: required by a bound in `has_role`
327
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
328
+ |
329
+ | pub trait RoleBasedAccessControl: Auth {
330
+ | ^^^^ required by this bound in `RoleBasedAccessControl::has_role`
331
+ ...
332
+ | fn has_role(env: &soroban_sdk::Env, account: &soroban_sdk::Address, role: &soroban_sdk::Symbol) -> Option<u32> {
333
+ | -------- required by a bound in this associated function
334
+
335
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
336
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
337
+ |
338
+ 13 | pub struct MyOApp;
339
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
340
+ |
341
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
342
+ note: required by a bound in `get_role_admin`
343
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
344
+ |
345
+ | pub trait RoleBasedAccessControl: Auth {
346
+ | ^^^^ required by this bound in `RoleBasedAccessControl::get_role_admin`
347
+ ...
348
+ | fn get_role_admin(env: &soroban_sdk::Env, role: &soroban_sdk::Symbol) -> Option<soroban_sdk::Symbol> {
349
+ | -------------- required by a bound in this associated function
350
+
351
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
352
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
353
+ |
354
+ 13 | pub struct MyOApp;
355
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
356
+ |
357
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
358
+ note: required by a bound in `get_role_member_count`
359
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
360
+ |
361
+ | pub trait RoleBasedAccessControl: Auth {
362
+ | ^^^^ required by this bound in `RoleBasedAccessControl::get_role_member_count`
363
+ ...
364
+ | fn get_role_member_count(env: &soroban_sdk::Env, role: &soroban_sdk::Symbol) -> u32 {
365
+ | --------------------- required by a bound in this associated function
366
+
367
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
368
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
369
+ |
370
+ 13 | pub struct MyOApp;
371
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
372
+ |
373
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
374
+ note: required by a bound in `get_role_member`
375
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
376
+ |
377
+ | pub trait RoleBasedAccessControl: Auth {
378
+ | ^^^^ required by this bound in `RoleBasedAccessControl::get_role_member`
379
+ ...
380
+ | fn get_role_member(env: &soroban_sdk::Env, role: &soroban_sdk::Symbol, index: u32) -> soroban_sdk::Address {
381
+ | --------------- required by a bound in this associated function
382
+
383
+ error[E0277]: the trait bound `MyOApp: utils::auth::Auth` is not satisfied
384
+ --> tests/ui/oapp/fail/missing_auth_trait.rs:13:12
385
+ |
386
+ 13 | pub struct MyOApp;
387
+ | ^^^^^^ the trait `utils::auth::Auth` is not implemented for `MyOApp`
388
+ |
389
+ = help: the trait `utils::auth::Auth` is implemented for `EndpointV2`
390
+ note: required by a bound in `get_existing_roles`
391
+ --> $WORKSPACE/contracts/utils/src/rbac.rs
392
+ |
393
+ | pub trait RoleBasedAccessControl: Auth {
394
+ | ^^^^ required by this bound in `RoleBasedAccessControl::get_existing_roles`
395
+ ...
396
+ | fn get_existing_roles(env: &soroban_sdk::Env) -> soroban_sdk::Vec<soroban_sdk::Symbol> {
397
+ | ------------------ required by a bound in this associated function
@@ -3,6 +3,7 @@
3
3
  use oapp_macros::oapp;
4
4
 
5
5
  #[oapp]
6
+ #[common_macros::lz_contract]
6
7
  pub struct MyOApp;
7
8
 
8
9
  fn main() {}
@@ -1,7 +1,7 @@
1
1
  error[E0277]: the trait bound `MyOApp: LzReceiveInternal` is not satisfied
2
- --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:6:12
2
+ --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:7:12
3
3
  |
4
- 6 | pub struct MyOApp;
4
+ 7 | pub struct MyOApp;
5
5
  | ^^^^^^ the trait `LzReceiveInternal` is not implemented for `MyOApp`
6
6
  |
7
7
  note: required by a bound in `OAppReceiver`
@@ -11,9 +11,9 @@ note: required by a bound in `OAppReceiver`
11
11
  | ^^^^^^^^^^^^^^^^^ required by this bound in `OAppReceiver`
12
12
 
13
13
  error[E0277]: the trait bound `MyOApp: LzReceiveInternal` is not satisfied
14
- --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:6:12
14
+ --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:7:12
15
15
  |
16
- 6 | pub struct MyOApp;
16
+ 7 | pub struct MyOApp;
17
17
  | ^^^^^^ the trait `LzReceiveInternal` is not implemented for `MyOApp`
18
18
  |
19
19
  note: required by a bound in `oapp::oapp_receiver::OAppReceiver::allow_initialize_path`
@@ -26,9 +26,9 @@ note: required by a bound in `oapp::oapp_receiver::OAppReceiver::allow_initializ
26
26
  | --------------------- required by a bound in this associated function
27
27
 
28
28
  error[E0277]: the trait bound `MyOApp: LzReceiveInternal` is not satisfied
29
- --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:6:12
29
+ --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:7:12
30
30
  |
31
- 6 | pub struct MyOApp;
31
+ 7 | pub struct MyOApp;
32
32
  | ^^^^^^ the trait `LzReceiveInternal` is not implemented for `MyOApp`
33
33
  |
34
34
  note: required by a bound in `oapp::oapp_receiver::OAppReceiver::next_nonce`
@@ -41,9 +41,9 @@ note: required by a bound in `oapp::oapp_receiver::OAppReceiver::next_nonce`
41
41
  | ---------- required by a bound in this associated function
42
42
 
43
43
  error[E0277]: the trait bound `MyOApp: LzReceiveInternal` is not satisfied
44
- --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:6:12
44
+ --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:7:12
45
45
  |
46
- 6 | pub struct MyOApp;
46
+ 7 | pub struct MyOApp;
47
47
  | ^^^^^^ the trait `LzReceiveInternal` is not implemented for `MyOApp`
48
48
  |
49
49
  note: required by a bound in `oapp::oapp_receiver::OAppReceiver::lz_receive`
@@ -56,9 +56,9 @@ note: required by a bound in `oapp::oapp_receiver::OAppReceiver::lz_receive`
56
56
  | ---------- required by a bound in this associated function
57
57
 
58
58
  error[E0277]: the trait bound `MyOApp: LzReceiveInternal` is not satisfied
59
- --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:6:12
59
+ --> tests/ui/oapp/fail/missing_lz_receive_internal.rs:7:12
60
60
  |
61
- 6 | pub struct MyOApp;
61
+ 7 | pub struct MyOApp;
62
62
  | ^^^^^^ the trait `LzReceiveInternal` is not implemented for `MyOApp`
63
63
  |
64
64
  note: required by a bound in `is_compose_msg_sender`
@@ -10,6 +10,7 @@ use soroban_sdk::{contractimpl, Address, Bytes, BytesN, Env};
10
10
  use utils::rbac::RoleBasedAccessControl;
11
11
 
12
12
  #[oapp(custom = [core, sender, receiver, options_type3])]
13
+ #[common_macros::lz_contract]
13
14
  pub struct MyOApp;
14
15
 
15
16
  impl LzReceiveInternal for MyOApp {
@@ -16,6 +16,7 @@ use soroban_sdk::{contractimpl, Address, Bytes, BytesN, Env};
16
16
  use utils::rbac::RoleBasedAccessControl;
17
17
 
18
18
  #[oapp(custom = [core])]
19
+ #[common_macros::lz_contract]
19
20
  pub struct MyOAppCustomCore;
20
21
 
21
22
  impl LzReceiveInternal for MyOAppCustomCore {
@@ -41,6 +42,7 @@ impl OAppCore for MyOAppCustomCore {
41
42
  }
42
43
 
43
44
  #[oapp(custom = [sender])]
45
+ #[common_macros::lz_contract]
44
46
  pub struct MyOAppCustomSender;
45
47
 
46
48
  impl LzReceiveInternal for MyOAppCustomSender {
@@ -59,6 +61,7 @@ impl LzReceiveInternal for MyOAppCustomSender {
59
61
  impl OAppSenderInternal for MyOAppCustomSender {}
60
62
 
61
63
  #[oapp(custom = [receiver])]
64
+ #[common_macros::lz_contract]
62
65
  pub struct MyOAppCustomReceiver;
63
66
 
64
67
  impl LzReceiveInternal for MyOAppCustomReceiver {
@@ -78,6 +81,7 @@ impl LzReceiveInternal for MyOAppCustomReceiver {
78
81
  impl OAppReceiver for MyOAppCustomReceiver {}
79
82
 
80
83
  #[oapp(custom = [options_type3])]
84
+ #[common_macros::lz_contract]
81
85
  pub struct MyOAppCustomOptionsType3;
82
86
 
83
87
  impl LzReceiveInternal for MyOAppCustomOptionsType3 {
@@ -1,9 +1,8 @@
1
1
  // UI (trybuild) test: minimal `#[oapp]` usage compiles.
2
2
  //
3
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.
4
+ // - Verifies `#[oapp]` generates default trait impls. User applies `#[lz_contract]` for contract + TTL + Auth.
5
+ // - Verifies the user must implement `LzReceiveInternal`.
7
6
 
8
7
  use endpoint_v2::Origin;
9
8
  use oapp::oapp_receiver::LzReceiveInternal;
@@ -11,6 +10,7 @@ use oapp_macros::oapp;
11
10
  use soroban_sdk::{contractimpl, Address, Bytes, BytesN, Env};
12
11
 
13
12
  #[oapp]
13
+ #[common_macros::lz_contract]
14
14
  pub struct MyOApp;
15
15
 
16
16
  impl LzReceiveInternal for MyOApp {
@@ -30,7 +30,7 @@ impl LzReceiveInternal for MyOApp {
30
30
  #[contractimpl]
31
31
  impl MyOApp {
32
32
  pub fn init(env: Env, owner: Address, endpoint: Address) {
33
- // `lz_contract` (applied by `#[oapp]`) provides ownable helpers.
33
+ // `#[lz_contract]` (user-provided) provides init_owner and Auth.
34
34
  Self::init_owner(&env, &owner);
35
35
  oapp::oapp_core::OAppCoreStorage::set_endpoint(&env, &endpoint);
36
36
 
@@ -45,6 +45,7 @@ impl MyOApp {
45
45
  }
46
46
 
47
47
  #[oapp(custom = [])]
48
+ #[common_macros::lz_contract]
48
49
  pub struct MyOAppCustomEmpty;
49
50
 
50
51
  impl LzReceiveInternal for MyOAppCustomEmpty {
@@ -6,6 +6,7 @@ use oapp_macros::oapp;
6
6
  use soroban_sdk::{Address, Bytes, BytesN, Env};
7
7
 
8
8
  #[oapp]
9
+ #[common_macros::lz_contract]
9
10
  #[derive(Clone, Debug)]
10
11
  pub struct MyOApp {
11
12
  pub x: u32,
@@ -25,6 +26,7 @@ impl LzReceiveInternal for MyOApp {
25
26
  }
26
27
 
27
28
  #[oapp]
29
+ #[common_macros::lz_contract]
28
30
  pub struct MyOAppTuple(u32, bool);
29
31
 
30
32
  impl LzReceiveInternal for MyOAppTuple {
@@ -4,26 +4,27 @@ use crate::{
4
4
  options,
5
5
  storage::CounterStorage,
6
6
  };
7
- use common_macros::{contract_impl, only_auth};
7
+ use common_macros::{contract_impl, lz_contract, only_auth};
8
8
  use endpoint_v2::{
9
9
  ILayerZeroComposer, LayerZeroEndpointV2Client, MessagingChannelClient, MessagingComposerClient, MessagingFee,
10
10
  Origin,
11
11
  };
12
12
  use oapp::{
13
- oapp_core::{initialize_oapp, OAppCore},
13
+ oapp_core::{init_ownable_oapp, OAppCore},
14
14
  oapp_receiver::{LzReceiveInternal, OAppReceiver},
15
15
  oapp_sender::{FeePayer, OAppSenderInternal},
16
16
  };
17
17
  use oapp_macros::oapp;
18
18
  use soroban_sdk::{assert_with_error, panic_with_error, token::TokenClient, Address, Bytes, BytesN, Env};
19
19
 
20
+ #[lz_contract]
20
21
  #[oapp(custom = [receiver])]
21
22
  pub struct Counter;
22
23
 
23
24
  #[contract_impl]
24
25
  impl Counter {
25
26
  pub fn __constructor(env: &Env, owner: &Address, endpoint: &Address, delegate: &Address) {
26
- initialize_oapp::<Self>(env, owner, endpoint, delegate);
27
+ init_ownable_oapp::<Self>(env, owner, endpoint, delegate);
27
28
  let endpoint_client = LayerZeroEndpointV2Client::new(env, endpoint);
28
29
  CounterStorage::set_eid(env, &endpoint_client.eid());
29
30
  }
@@ -110,7 +110,7 @@ pub trait OAppCore: Ownable + RoleBasedAccessControl {
110
110
  /// * `owner` - The address that will own this OApp
111
111
  /// * `endpoint` - The LayerZero endpoint address to associate with this OApp
112
112
  /// * `delegate` - The delegate address to set on the endpoint for this OApp
113
- pub fn initialize_oapp<T: OAppCore + OwnableInitializer>(
113
+ pub fn init_ownable_oapp<T: OAppCore + OwnableInitializer>(
114
114
  env: &Env,
115
115
  owner: &Address,
116
116
  endpoint: &Address,
@@ -32,6 +32,7 @@ impl DummyEndpoint {
32
32
  }
33
33
 
34
34
  #[oapp_macros::oapp]
35
+ #[common_macros::lz_contract]
35
36
  pub struct DummyOApp;
36
37
 
37
38
  impl LzReceiveInternal for DummyOApp {
@@ -51,7 +52,7 @@ impl LzReceiveInternal for DummyOApp {
51
52
  #[contractimpl]
52
53
  impl DummyOApp {
53
54
  pub fn __constructor(env: &Env, owner: &Address, endpoint: &Address) {
54
- oapp::oapp_core::initialize_oapp::<Self>(env, owner, endpoint, owner);
55
+ oapp::oapp_core::init_ownable_oapp::<Self>(env, owner, endpoint, owner);
55
56
  }
56
57
  }
57
58
 
@@ -30,6 +30,7 @@ impl DummyEndpoint {
30
30
  }
31
31
 
32
32
  #[oapp_macros::oapp(custom = [core, sender, receiver])]
33
+ #[common_macros::lz_contract]
33
34
  pub struct DummyOAppOptionsType3;
34
35
 
35
36
  #[contract_impl(contracttrait)]
@@ -58,7 +59,7 @@ impl OAppReceiver for DummyOAppOptionsType3 {}
58
59
  #[contract_impl]
59
60
  impl DummyOAppOptionsType3 {
60
61
  pub fn __constructor(env: &Env, owner: &Address, endpoint: &Address, delegate: &Address) {
61
- oapp::oapp_core::initialize_oapp::<Self>(env, owner, endpoint, delegate);
62
+ oapp::oapp_core::init_ownable_oapp::<Self>(env, owner, endpoint, delegate);
62
63
  }
63
64
  }
64
65
 
@@ -219,7 +220,8 @@ fn test_combine_options_extra_invalid_type_returns_error_when_enforced_present()
219
220
  let TestSetup { env, owner, oapp_client, .. } = setup();
220
221
 
221
222
  let enforced = create_valid_options(&env, &[1, 2, 3]);
222
- let params = vec![&env, EnforcedOptionParam { eid: REMOTE_EID_1, msg_type: MSG_TYPE_SEND, options: Some(enforced) }];
223
+ let params =
224
+ vec![&env, EnforcedOptionParam { eid: REMOTE_EID_1, msg_type: MSG_TYPE_SEND, options: Some(enforced) }];
223
225
  set_enforced_options_with_auth(&env, &owner, &oapp_client, &params);
224
226
 
225
227
  // extra has wrong option type (not 3) but len >= 2 -> validated and should panic
@@ -234,7 +236,8 @@ fn test_combine_options_extra_too_short_returns_error_when_enforced_present() {
234
236
  let TestSetup { env, owner, oapp_client, .. } = setup();
235
237
 
236
238
  let enforced = create_valid_options(&env, &[1, 2, 3]);
237
- let params = vec![&env, EnforcedOptionParam { eid: REMOTE_EID_1, msg_type: MSG_TYPE_SEND, options: Some(enforced) }];
239
+ let params =
240
+ vec![&env, EnforcedOptionParam { eid: REMOTE_EID_1, msg_type: MSG_TYPE_SEND, options: Some(enforced) }];
238
241
  set_enforced_options_with_auth(&env, &owner, &oapp_client, &params);
239
242
 
240
243
  // extra is non-empty but len < 2 -> should panic
@@ -8,6 +8,7 @@ use soroban_sdk::{
8
8
  };
9
9
 
10
10
  #[oapp_macros::oapp]
11
+ #[common_macros::lz_contract]
11
12
  pub struct DummyOAppReceiver;
12
13
 
13
14
  impl LzReceiveInternal for DummyOAppReceiver {
@@ -27,7 +28,7 @@ impl LzReceiveInternal for DummyOAppReceiver {
27
28
  #[contractimpl]
28
29
  impl DummyOAppReceiver {
29
30
  pub fn __constructor(env: &Env, owner: &Address, endpoint: &Address) {
30
- oapp::oapp_core::initialize_oapp::<Self>(env, owner, endpoint, owner);
31
+ oapp::oapp_core::init_ownable_oapp::<Self>(env, owner, endpoint, owner);
31
32
  }
32
33
  }
33
34