@layerzerolabs/protocol-stellar-v2 0.2.10 → 0.2.12

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 (129) hide show
  1. package/.turbo/turbo-build.log +273 -219
  2. package/.turbo/turbo-lint.log +79 -107
  3. package/.turbo/turbo-test.log +1016 -840
  4. package/Cargo.lock +14 -6
  5. package/contracts/common-macros/src/contract_impl.rs +6 -3
  6. package/contracts/common-macros/src/error.rs +9 -17
  7. package/contracts/common-macros/src/lib.rs +4 -37
  8. package/contracts/common-macros/src/ownable.rs +9 -5
  9. package/contracts/common-macros/src/tests/contract_impl.rs +178 -86
  10. package/contracts/common-macros/src/tests/error.rs +168 -0
  11. package/contracts/common-macros/src/tests/mod.rs +2 -4
  12. package/contracts/common-macros/src/tests/ownable.rs +37 -60
  13. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +16 -6
  14. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__error__snapshot_generated_contract_error_code.snap +20 -0
  15. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +3 -1
  16. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_only_owner_preserves_function_signature.snap +12 -2
  17. package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -1
  18. package/contracts/common-macros/src/tests/utils.rs +267 -0
  19. package/contracts/common-macros/src/ttl_configurable.rs +15 -12
  20. package/contracts/common-macros/src/utils.rs +35 -6
  21. package/contracts/endpoint-v2/src/endpoint_v2.rs +4 -4
  22. package/contracts/endpoint-v2/src/events.rs +40 -22
  23. package/contracts/endpoint-v2/src/interfaces/message_lib.rs +2 -2
  24. package/contracts/endpoint-v2/src/interfaces/message_lib_manager.rs +2 -2
  25. package/contracts/endpoint-v2/src/interfaces/messaging_channel.rs +2 -2
  26. package/contracts/endpoint-v2/src/interfaces/messaging_composer.rs +2 -2
  27. package/contracts/endpoint-v2/src/interfaces/send_lib.rs +2 -2
  28. package/contracts/endpoint-v2/src/message_lib_manager.rs +3 -3
  29. package/contracts/endpoint-v2/src/messaging_channel.rs +1 -1
  30. package/contracts/endpoint-v2/src/messaging_composer.rs +1 -1
  31. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +4 -8
  32. package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +3 -7
  33. package/contracts/message-libs/{block-message-lib → blocked-message-lib}/Cargo.toml +1 -1
  34. package/contracts/message-libs/treasury/src/events.rs +9 -6
  35. package/contracts/message-libs/uln-302/src/events.rs +19 -11
  36. package/contracts/message-libs/uln-302/src/interfaces/receive_uln.rs +2 -2
  37. package/contracts/message-libs/uln-302/src/interfaces/send_uln.rs +2 -2
  38. package/contracts/message-libs/uln-302/src/receive_uln.rs +2 -2
  39. package/contracts/message-libs/uln-302/src/send_uln.rs +3 -3
  40. package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +5 -5
  41. package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +5 -5
  42. package/contracts/message-libs/uln-302/src/tests/setup.rs +3 -3
  43. package/contracts/message-libs/uln-302/src/types.rs +24 -24
  44. package/contracts/message-libs/uln-302/src/uln302.rs +2 -2
  45. package/contracts/oapp-macros/src/oapp_core.rs +1 -1
  46. package/contracts/oapps/counter/integration_tests/utils.rs +1 -1
  47. package/contracts/oapps/oapp/src/oapp_core.rs +4 -3
  48. package/contracts/oapps/oapp/src/oapp_options_type3.rs +4 -3
  49. package/contracts/oapps/oft/integration-tests/setup.rs +4 -3
  50. package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
  51. package/contracts/oapps/oft/src/default_oft_impl.rs +146 -0
  52. package/contracts/oapps/oft/src/events.rs +5 -4
  53. package/contracts/oapps/oft/src/extensions/mod.rs +3 -0
  54. package/contracts/oapps/oft/src/extensions/oft_fee.rs +168 -0
  55. package/contracts/oapps/oft/src/extensions/pausable.rs +50 -0
  56. package/contracts/oapps/oft/src/extensions/rate_limiter.rs +200 -0
  57. package/contracts/oapps/oft/src/lib.rs +2 -3
  58. package/contracts/oapps/oft/src/oft.rs +16 -85
  59. package/contracts/oapps/oft/src/oft_types/mint_burn.rs +1 -1
  60. package/contracts/oapps/oft/src/tests/extensions/mod.rs +11 -0
  61. package/contracts/oapps/oft/src/tests/extensions/setup.rs +888 -0
  62. package/contracts/oapps/oft/src/tests/extensions/test_oft_fee.rs +749 -0
  63. package/contracts/oapps/oft/src/tests/extensions/test_pausable.rs +432 -0
  64. package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1078 -0
  65. package/contracts/oapps/oft/src/tests/mod.rs +2 -0
  66. package/contracts/oapps/oft/src/tests/test_utils.rs +24 -6
  67. package/contracts/oapps/{oft-mint-burn → oft-std}/Cargo.toml +1 -8
  68. package/contracts/oapps/oft-std/src/lib.rs +5 -0
  69. package/contracts/oapps/oft-std/src/oft.rs +59 -0
  70. package/contracts/utils/src/ownable.rs +8 -6
  71. package/contracts/utils/src/tests/ownable.rs +0 -63
  72. package/contracts/utils/src/tests/testing_utils.rs +7 -5
  73. package/contracts/utils/src/ttl.rs +21 -2
  74. package/contracts/workers/dvn/src/auth.rs +108 -30
  75. package/contracts/workers/dvn/src/dvn.rs +103 -33
  76. package/contracts/workers/dvn/src/errors.rs +10 -13
  77. package/contracts/workers/dvn/src/events.rs +7 -5
  78. package/contracts/workers/dvn/src/interfaces/dvn.rs +76 -3
  79. package/contracts/workers/dvn/src/interfaces/multisig.rs +41 -0
  80. package/contracts/workers/dvn/src/lib.rs +6 -8
  81. package/contracts/workers/dvn/src/multisig.rs +98 -72
  82. package/contracts/workers/dvn/src/storage.rs +9 -12
  83. package/contracts/workers/dvn/src/tests/auth.rs +56 -26
  84. package/contracts/workers/dvn/src/tests/dvn.rs +40 -41
  85. package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +8 -8
  86. package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +9 -9
  87. package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +6 -6
  88. package/contracts/workers/dvn/src/tests/setup.rs +5 -5
  89. package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -1
  90. package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +4 -3
  91. package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +8 -6
  92. package/contracts/workers/executor/src/auth.rs +93 -0
  93. package/contracts/workers/executor/src/events.rs +5 -4
  94. package/contracts/workers/executor/src/{lz_executor.rs → executor.rs} +30 -103
  95. package/contracts/workers/executor/src/interfaces/executor.rs +5 -2
  96. package/contracts/workers/executor/src/interfaces/mod.rs +1 -1
  97. package/contracts/workers/executor/src/lib.rs +6 -5
  98. package/contracts/workers/price-feed/Cargo.toml +21 -0
  99. package/contracts/workers/price-feed/src/errors.rs +9 -0
  100. package/contracts/workers/price-feed/src/events.rs +30 -0
  101. package/contracts/workers/price-feed/src/lib.rs +11 -0
  102. package/contracts/workers/price-feed/src/price_feed.rs +265 -0
  103. package/contracts/workers/price-feed/src/storage.rs +42 -0
  104. package/contracts/workers/price-feed/src/types.rs +59 -0
  105. package/contracts/workers/worker/src/events.rs +23 -13
  106. package/contracts/workers/worker/src/interfaces/dvn_fee_lib.rs +2 -1
  107. package/contracts/workers/worker/src/worker.rs +32 -21
  108. package/package.json +3 -3
  109. package/sdk/dist/generated/bml.js +24 -22
  110. package/sdk/dist/generated/counter.d.ts +102 -0
  111. package/sdk/dist/generated/counter.js +36 -24
  112. package/sdk/dist/generated/endpoint.js +24 -22
  113. package/sdk/dist/generated/sml.js +24 -22
  114. package/sdk/dist/generated/uln302.d.ts +1 -1
  115. package/sdk/dist/generated/uln302.js +34 -32
  116. package/sdk/package.json +1 -1
  117. package/sdk/test/index.test.ts +1 -1
  118. package/sdk/test/oft.test.ts +847 -0
  119. package/sdk/test/suites/scan.ts +20 -4
  120. package/tools/ts-bindings-gen/src/main.rs +2 -1
  121. package/contracts/common-macros/src/event.rs +0 -16
  122. package/contracts/oapps/oft/src/macro_tests/mod.rs +0 -2
  123. package/contracts/oapps/oft/src/macro_tests/test_all_default.rs +0 -41
  124. package/contracts/oapps/oft/src/macro_tests/test_override.rs +0 -83
  125. package/contracts/oapps/oft-mint-burn/src/lib.rs +0 -3
  126. package/contracts/oapps/oft-mint-burn/src/oft.rs +0 -28
  127. package/contracts/oapps/oft-mint-burn/src/tests/mod.rs +0 -1
  128. package/contracts/workers/dvn/src/types.rs +0 -26
  129. /package/contracts/message-libs/{block-message-lib → blocked-message-lib}/src/lib.rs +0 -0
@@ -34,17 +34,33 @@ export interface PacketSentEvent {
34
34
  * Scan for contract events within a ledger range
35
35
  */
36
36
  export async function scanEvents(
37
- startLedger: number,
37
+ startLedgerSequence: number,
38
38
  filter: EventFilter,
39
39
  ): Promise<ParsedContractEvent[]> {
40
40
  const server = new rpc.Server(RPC_URL, { allowHttp: true });
41
+ const latestLedger = await server.getLatestLedger();
41
42
 
42
- console.log('🔍 Scanning events from ledger', startLedger);
43
+ console.log('🔍 Scanning events from ledger', startLedgerSequence);
43
44
 
44
45
  try {
46
+ // Wait for at least one new ledger to ensure events are indexed
47
+ let endLedger = latestLedger.sequence;
48
+ if (endLedger <= startLedgerSequence) {
49
+ console.log(' Waiting for next ledger...');
50
+ for (let i = 0; i < 10; i++) {
51
+ await new Promise((resolve) => setTimeout(resolve, 1000));
52
+ const newLedger = await server.getLatestLedger();
53
+ if (newLedger.sequence > startLedgerSequence) {
54
+ endLedger = newLedger.sequence;
55
+ break;
56
+ }
57
+ }
58
+ }
59
+
45
60
  const events = await server.getEvents({
46
- startLedger: startLedger,
61
+ startLedger: startLedgerSequence,
47
62
  filters: [{ type: 'contract', contractIds: [filter.contractId] }],
63
+ endLedger: endLedger,
48
64
  });
49
65
 
50
66
  const parsedEvents: ParsedContractEvent[] = [];
@@ -107,7 +123,7 @@ export async function scanPacketSentEvents(
107
123
  eventName = firstTopic.value()?.toString() || '';
108
124
  }
109
125
 
110
- if (eventName === 'PacketSent') {
126
+ if (eventName === 'packet_sent') {
111
127
  // Parse the event data
112
128
  // PacketSent { encoded_packet, options, send_library }
113
129
  const eventData = event.data;
@@ -47,11 +47,12 @@ fn main() -> Result<()> {
47
47
  let contracts = vec![
48
48
  ("endpoint_v2", "endpoint.ts"),
49
49
  ("simple_message_lib", "sml.ts"),
50
- ("block_message_lib", "bml.ts"),
50
+ ("blocked_message_lib", "bml.ts"),
51
51
  ("uln302", "uln302.ts"),
52
52
  ("counter", "counter.ts"),
53
53
  ("executor", "executor.ts"),
54
54
  ("executor_helper", "executor_helper.ts"),
55
+ ("oft_std", "oft_std.ts"),
55
56
  // Add more contracts here as needed:
56
57
  ];
57
58
 
@@ -1,16 +0,0 @@
1
- use proc_macro::TokenStream;
2
- use quote::quote;
3
- use syn::{parse_macro_input, DeriveInput};
4
-
5
- pub fn generate_event(_attr: TokenStream, item: TokenStream) -> TokenStream {
6
- let input = parse_macro_input!(item as DeriveInput);
7
- let struct_name = input.ident.to_string();
8
-
9
- let expanded = quote! {
10
- #[soroban_sdk::contractevent(topics = [#struct_name])]
11
- #[derive(Clone, Debug, Eq, PartialEq)]
12
- #input
13
- };
14
-
15
- TokenStream::from(expanded)
16
- }
@@ -1,2 +0,0 @@
1
- pub mod test_all_default;
2
- pub mod test_override;
@@ -1,41 +0,0 @@
1
- //! Test OFT with default `__lz_receive` pattern.
2
- //!
3
- //! This demonstrates the simplest OFT usage where:
4
- //! - `#[oapp]` provides OApp functionality (including OAppOptionsType3)
5
- //! - User implements `OFTInner` trait for internal methods (`__debit`, `__credit`)
6
- //! - User implements `OFT` trait (with default implementations)
7
- //! - Default `__lz_receive` is provided by `OFTInner` trait
8
-
9
- extern crate self as oft;
10
-
11
- use oft::oft::{OFTInner, OFT};
12
- use oft::types::OFTReceipt;
13
- use soroban_sdk::{contractimpl, Address};
14
-
15
- #[oapp_macros::oapp]
16
- pub struct TestOFT;
17
-
18
- #[contractimpl(contracttrait)]
19
- impl OFT for TestOFT {}
20
-
21
- // Internal methods - NOT exposed as contract endpoints
22
- impl OFTInner for TestOFT {
23
- fn __debit(
24
- _env: &soroban_sdk::Env,
25
- _sender: &Address,
26
- amount_ld: i128,
27
- _min_amount_ld: i128,
28
- _dst_eid: u32,
29
- ) -> OFTReceipt {
30
- OFTReceipt { amount_sent_ld: amount_ld, amount_received_ld: amount_ld }
31
- }
32
-
33
- fn __credit(_env: &soroban_sdk::Env, _to: &Address, amount_ld: i128, _src_eid: u32) -> i128 {
34
- amount_ld
35
- }
36
- }
37
-
38
- #[test]
39
- fn test_all_default() {
40
- assert!(true);
41
- }
@@ -1,83 +0,0 @@
1
- //! Test OFT with manual OApp implementations.
2
- //!
3
- //! This demonstrates overriding OApp traits while using the OFT pattern.
4
-
5
- extern crate self as oft;
6
-
7
- use endpoint_v2::{EndpointV2, Origin};
8
- use oapp::{
9
- oapp_core::{oapp_initialize, OAppCore},
10
- oapp_options_type3::{EnforcedOptionParam, OAppOptionsType3},
11
- oapp_receiver::OAppReceiver,
12
- };
13
- use common_macros::contract_impl;
14
- use oapp_macros::oapp_manual_impl;
15
- use oft::oft::{OFTInner, OFT};
16
- use oft::types::OFTReceipt;
17
- use soroban_sdk::{contractimpl, testutils::Address as _, Address, Bytes, BytesN, Env, Vec};
18
-
19
- #[oapp_macros::oapp]
20
- #[oapp_manual_impl(core, options_type3, receiver)]
21
- pub struct TestOFT;
22
-
23
- #[contract_impl]
24
- impl TestOFT {
25
- pub fn __constructor(env: &Env, owner: &Address, endpoint: &Address, delegate: &Option<Address>) {
26
- oapp_initialize::<Self>(env, owner, endpoint, delegate);
27
- }
28
- }
29
-
30
- // Implement OAppReceiver trait with custom behavior
31
- #[contractimpl(contracttrait)]
32
- impl OAppReceiver for TestOFT {
33
- fn lz_receive(
34
- env: &Env,
35
- executor: &Address,
36
- origin: &Origin,
37
- guid: &BytesN<32>,
38
- message: &Bytes,
39
- extra_data: &Bytes,
40
- value: i128,
41
- ) {
42
- oapp::oapp_receiver::verify_and_clear_payload::<Self>(env, executor, origin, guid, message, value);
43
- Self::__lz_receive(env, executor, origin, guid, message, extra_data, value);
44
- }
45
- }
46
-
47
- // Implement OFTInner trait - NOT exposed as contract endpoints
48
- impl OFTInner for TestOFT {
49
- fn __debit(_env: &Env, _sender: &Address, amount_ld: i128, _min_amount_ld: i128, _dst_eid: u32) -> OFTReceipt {
50
- OFTReceipt { amount_sent_ld: amount_ld, amount_received_ld: amount_ld }
51
- }
52
-
53
- fn __credit(_env: &Env, _to: &Address, amount_ld: i128, _src_eid: u32) -> i128 {
54
- amount_ld
55
- }
56
- }
57
-
58
- #[contractimpl(contracttrait)]
59
- impl OAppCore for TestOFT {
60
- fn oapp_version(_env: &Env) -> (u64, u64) {
61
- (100, 1)
62
- }
63
- }
64
-
65
- #[contractimpl(contracttrait)]
66
- impl OAppOptionsType3 for TestOFT {}
67
-
68
- #[contractimpl(contracttrait)]
69
- impl OFT for TestOFT {}
70
-
71
- #[test]
72
- fn test_macro_compiles() {
73
- let env = Env::default();
74
- let owner = Address::generate(&env);
75
- let endpoint = env.register(EndpointV2, (&owner,));
76
- let delegate: Option<Address> = None;
77
- let oft = env.register(TestOFT, (&owner, &endpoint, &delegate));
78
-
79
- let oft_client = TestOFTClient::new(&env, &oft);
80
- let (major, minor) = oft_client.oapp_version();
81
- assert_eq!(major, 100);
82
- assert_eq!(minor, 1);
83
- }
@@ -1,3 +0,0 @@
1
- #![no_std]
2
-
3
- pub mod oft;
@@ -1,28 +0,0 @@
1
- use oapp_macros::oapp;
2
- use oft::oft::{oft_initialize, OFTInner, OFT};
3
- use oft::oft_types::mint_burn;
4
- use oft::types::OFTReceipt;
5
- use soroban_sdk::{contractimpl, Address, Env};
6
-
7
- #[oapp]
8
- pub struct OFTMintBurn;
9
-
10
- #[contractimpl]
11
- impl OFTMintBurn {
12
- pub fn __constructor(env: &Env, token: &Address, owner: &Address, endpoint: &Address, delegate: &Option<Address>) {
13
- oft_initialize::<Self>(env, owner, token, endpoint, delegate)
14
- }
15
- }
16
-
17
- #[contractimpl(contracttrait)]
18
- impl OFT for OFTMintBurn {}
19
-
20
- impl OFTInner for OFTMintBurn {
21
- fn __debit(env: &Env, sender: &Address, amount_ld: i128, min_amount_ld: i128, dst_eid: u32) -> OFTReceipt {
22
- mint_burn::debit::<Self>(env, sender, amount_ld, min_amount_ld, dst_eid)
23
- }
24
-
25
- fn __credit(env: &Env, to: &Address, amount_ld: i128, src_eid: u32) -> i128 {
26
- mint_burn::credit::<Self>(env, to, amount_ld, src_eid)
27
- }
28
- }
@@ -1,26 +0,0 @@
1
- use soroban_sdk::{contracttype, BytesN, Vec};
2
-
3
- #[contracttype]
4
- #[derive(Clone, Debug, Eq, PartialEq)]
5
- pub struct DstConfig {
6
- pub gas: u128,
7
- pub multiplier_bps: u32,
8
- pub floor_margin_usd: u128,
9
- }
10
-
11
- #[contracttype]
12
- #[derive(Clone, Debug, Eq, PartialEq)]
13
- pub struct DstConfigParam {
14
- pub dst_eid: u32,
15
- pub config: DstConfig,
16
- }
17
-
18
- #[contracttype]
19
- #[derive(Clone, Debug, Eq, PartialEq)]
20
- pub struct TransactionAuthData {
21
- pub vid: u32,
22
- pub expiration: u64,
23
- pub signatures: Vec<BytesN<65>>,
24
- pub admin: BytesN<32>,
25
- pub admin_signature: BytesN<64>,
26
- }