@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.
- package/.turbo/turbo-build.log +273 -219
- package/.turbo/turbo-lint.log +79 -107
- package/.turbo/turbo-test.log +1016 -840
- package/Cargo.lock +14 -6
- package/contracts/common-macros/src/contract_impl.rs +6 -3
- package/contracts/common-macros/src/error.rs +9 -17
- package/contracts/common-macros/src/lib.rs +4 -37
- package/contracts/common-macros/src/ownable.rs +9 -5
- package/contracts/common-macros/src/tests/contract_impl.rs +178 -86
- package/contracts/common-macros/src/tests/error.rs +168 -0
- package/contracts/common-macros/src/tests/mod.rs +2 -4
- package/contracts/common-macros/src/tests/ownable.rs +37 -60
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__contract_impl__snapshot_generated_contract_impl_code.snap +16 -6
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__error__snapshot_generated_contract_error_code.snap +20 -0
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_generated_ownable_code.snap +3 -1
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ownable__snapshot_only_owner_preserves_function_signature.snap +12 -2
- package/contracts/common-macros/src/tests/snapshots/common_macros__tests__ttl_configurable__snapshot_generated_ttl_configurable_code.snap +5 -1
- package/contracts/common-macros/src/tests/utils.rs +267 -0
- package/contracts/common-macros/src/ttl_configurable.rs +15 -12
- package/contracts/common-macros/src/utils.rs +35 -6
- package/contracts/endpoint-v2/src/endpoint_v2.rs +4 -4
- package/contracts/endpoint-v2/src/events.rs +40 -22
- package/contracts/endpoint-v2/src/interfaces/message_lib.rs +2 -2
- package/contracts/endpoint-v2/src/interfaces/message_lib_manager.rs +2 -2
- package/contracts/endpoint-v2/src/interfaces/messaging_channel.rs +2 -2
- package/contracts/endpoint-v2/src/interfaces/messaging_composer.rs +2 -2
- package/contracts/endpoint-v2/src/interfaces/send_lib.rs +2 -2
- package/contracts/endpoint-v2/src/message_lib_manager.rs +3 -3
- package/contracts/endpoint-v2/src/messaging_channel.rs +1 -1
- package/contracts/endpoint-v2/src/messaging_composer.rs +1 -1
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_lib_timeout.rs +4 -8
- package/contracts/endpoint-v2/src/tests/message_lib_manager/set_default_receive_library.rs +3 -7
- package/contracts/message-libs/{block-message-lib → blocked-message-lib}/Cargo.toml +1 -1
- package/contracts/message-libs/treasury/src/events.rs +9 -6
- package/contracts/message-libs/uln-302/src/events.rs +19 -11
- package/contracts/message-libs/uln-302/src/interfaces/receive_uln.rs +2 -2
- package/contracts/message-libs/uln-302/src/interfaces/send_uln.rs +2 -2
- package/contracts/message-libs/uln-302/src/receive_uln.rs +2 -2
- package/contracts/message-libs/uln-302/src/send_uln.rs +3 -3
- package/contracts/message-libs/uln-302/src/tests/receive_uln302/set_default_receive_uln_configs.rs +5 -5
- package/contracts/message-libs/uln-302/src/tests/send_uln302/set_default_send_uln_configs.rs +5 -5
- package/contracts/message-libs/uln-302/src/tests/setup.rs +3 -3
- package/contracts/message-libs/uln-302/src/types.rs +24 -24
- package/contracts/message-libs/uln-302/src/uln302.rs +2 -2
- package/contracts/oapp-macros/src/oapp_core.rs +1 -1
- package/contracts/oapps/counter/integration_tests/utils.rs +1 -1
- package/contracts/oapps/oapp/src/oapp_core.rs +4 -3
- package/contracts/oapps/oapp/src/oapp_options_type3.rs +4 -3
- package/contracts/oapps/oft/integration-tests/setup.rs +4 -3
- package/contracts/oapps/oft/integration-tests/utils.rs +1 -1
- package/contracts/oapps/oft/src/default_oft_impl.rs +146 -0
- package/contracts/oapps/oft/src/events.rs +5 -4
- package/contracts/oapps/oft/src/extensions/mod.rs +3 -0
- package/contracts/oapps/oft/src/extensions/oft_fee.rs +168 -0
- package/contracts/oapps/oft/src/extensions/pausable.rs +50 -0
- package/contracts/oapps/oft/src/extensions/rate_limiter.rs +200 -0
- package/contracts/oapps/oft/src/lib.rs +2 -3
- package/contracts/oapps/oft/src/oft.rs +16 -85
- package/contracts/oapps/oft/src/oft_types/mint_burn.rs +1 -1
- package/contracts/oapps/oft/src/tests/extensions/mod.rs +11 -0
- package/contracts/oapps/oft/src/tests/extensions/setup.rs +888 -0
- package/contracts/oapps/oft/src/tests/extensions/test_oft_fee.rs +749 -0
- package/contracts/oapps/oft/src/tests/extensions/test_pausable.rs +432 -0
- package/contracts/oapps/oft/src/tests/extensions/test_rate_limiter.rs +1078 -0
- package/contracts/oapps/oft/src/tests/mod.rs +2 -0
- package/contracts/oapps/oft/src/tests/test_utils.rs +24 -6
- package/contracts/oapps/{oft-mint-burn → oft-std}/Cargo.toml +1 -8
- package/contracts/oapps/oft-std/src/lib.rs +5 -0
- package/contracts/oapps/oft-std/src/oft.rs +59 -0
- package/contracts/utils/src/ownable.rs +8 -6
- package/contracts/utils/src/tests/ownable.rs +0 -63
- package/contracts/utils/src/tests/testing_utils.rs +7 -5
- package/contracts/utils/src/ttl.rs +21 -2
- package/contracts/workers/dvn/src/auth.rs +108 -30
- package/contracts/workers/dvn/src/dvn.rs +103 -33
- package/contracts/workers/dvn/src/errors.rs +10 -13
- package/contracts/workers/dvn/src/events.rs +7 -5
- package/contracts/workers/dvn/src/interfaces/dvn.rs +76 -3
- package/contracts/workers/dvn/src/interfaces/multisig.rs +41 -0
- package/contracts/workers/dvn/src/lib.rs +6 -8
- package/contracts/workers/dvn/src/multisig.rs +98 -72
- package/contracts/workers/dvn/src/storage.rs +9 -12
- package/contracts/workers/dvn/src/tests/auth.rs +56 -26
- package/contracts/workers/dvn/src/tests/dvn.rs +40 -41
- package/contracts/workers/dvn/src/tests/multisig/set_signer.rs +8 -8
- package/contracts/workers/dvn/src/tests/multisig/set_threshold.rs +9 -9
- package/contracts/workers/dvn/src/tests/multisig/verify_signatures.rs +6 -6
- package/contracts/workers/dvn/src/tests/setup.rs +5 -5
- package/contracts/workers/dvn-fee-lib/Cargo.toml +2 -1
- package/contracts/workers/dvn-fee-lib/src/dvn_fee_lib.rs +4 -3
- package/contracts/workers/dvn-fee-lib/src/tests/dvn_fee_lib.rs +8 -6
- package/contracts/workers/executor/src/auth.rs +93 -0
- package/contracts/workers/executor/src/events.rs +5 -4
- package/contracts/workers/executor/src/{lz_executor.rs → executor.rs} +30 -103
- package/contracts/workers/executor/src/interfaces/executor.rs +5 -2
- package/contracts/workers/executor/src/interfaces/mod.rs +1 -1
- package/contracts/workers/executor/src/lib.rs +6 -5
- package/contracts/workers/price-feed/Cargo.toml +21 -0
- package/contracts/workers/price-feed/src/errors.rs +9 -0
- package/contracts/workers/price-feed/src/events.rs +30 -0
- package/contracts/workers/price-feed/src/lib.rs +11 -0
- package/contracts/workers/price-feed/src/price_feed.rs +265 -0
- package/contracts/workers/price-feed/src/storage.rs +42 -0
- package/contracts/workers/price-feed/src/types.rs +59 -0
- package/contracts/workers/worker/src/events.rs +23 -13
- package/contracts/workers/worker/src/interfaces/dvn_fee_lib.rs +2 -1
- package/contracts/workers/worker/src/worker.rs +32 -21
- package/package.json +3 -3
- package/sdk/dist/generated/bml.js +24 -22
- package/sdk/dist/generated/counter.d.ts +102 -0
- package/sdk/dist/generated/counter.js +36 -24
- package/sdk/dist/generated/endpoint.js +24 -22
- package/sdk/dist/generated/sml.js +24 -22
- package/sdk/dist/generated/uln302.d.ts +1 -1
- package/sdk/dist/generated/uln302.js +34 -32
- package/sdk/package.json +1 -1
- package/sdk/test/index.test.ts +1 -1
- package/sdk/test/oft.test.ts +847 -0
- package/sdk/test/suites/scan.ts +20 -4
- package/tools/ts-bindings-gen/src/main.rs +2 -1
- package/contracts/common-macros/src/event.rs +0 -16
- package/contracts/oapps/oft/src/macro_tests/mod.rs +0 -2
- package/contracts/oapps/oft/src/macro_tests/test_all_default.rs +0 -41
- package/contracts/oapps/oft/src/macro_tests/test_override.rs +0 -83
- package/contracts/oapps/oft-mint-burn/src/lib.rs +0 -3
- package/contracts/oapps/oft-mint-burn/src/oft.rs +0 -28
- package/contracts/oapps/oft-mint-burn/src/tests/mod.rs +0 -1
- package/contracts/workers/dvn/src/types.rs +0 -26
- /package/contracts/message-libs/{block-message-lib → blocked-message-lib}/src/lib.rs +0 -0
package/sdk/test/suites/scan.ts
CHANGED
|
@@ -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
|
-
|
|
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',
|
|
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:
|
|
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 === '
|
|
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
|
-
("
|
|
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,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,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 +0,0 @@
|
|
|
1
|
-
|
|
@@ -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
|
-
}
|
|
File without changes
|