stellar_asset_spec/
lib.rs1#![no_std]
2
3mod tests;
4
5use soroban_sdk::{contractevent, Address};
6
7#[contractevent(topics = ["set_admin"], data_format = "single-value", export = false)]
11pub(crate) struct SetAdmin {
12 #[topic]
13 pub admin: Address,
14 pub new_admin: Address,
15}
16
17#[contractevent(topics = ["set_authorized"], data_format = "single-value", export = false)]
18pub(crate) struct SetAuthorized {
19 #[topic]
20 pub id: Address,
21 pub authorize: bool,
22}
23
24pub(crate) const XDR_INPUT: &[&[u8]] = &[
25 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_allowance(),
26 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_authorized(),
27 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_approve(),
28 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_balance(),
29 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_burn(),
30 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_burn_from(),
31 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_clawback(),
32 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_decimals(),
33 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_mint(),
34 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_name(),
35 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_set_admin(),
36 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_admin(),
37 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_set_authorized(),
38 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_symbol(),
39 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_transfer(),
40 &soroban_sdk::token::StellarAssetFnSpec::spec_xdr_transfer_from(),
41 &soroban_token_sdk::events::Approve::spec_xdr(),
42 &soroban_token_sdk::events::TransferWithAmountOnly::spec_xdr(),
43 &soroban_token_sdk::events::Transfer::spec_xdr(),
44 &soroban_token_spec::TransferWithMuxedString::spec_xdr(),
45 &soroban_token_spec::TransferWithMuxedBytes::spec_xdr(),
46 &soroban_token_sdk::events::Burn::spec_xdr(),
47 &soroban_token_sdk::events::MintWithAmountOnly::spec_xdr(),
48 &soroban_token_sdk::events::Mint::spec_xdr(),
49 &soroban_token_spec::MintWithMuxedString::spec_xdr(),
50 &soroban_token_spec::MintWithMuxedBytes::spec_xdr(),
51 &soroban_token_sdk::events::Clawback::spec_xdr(),
52 &SetAdmin::spec_xdr(),
53 &SetAuthorized::spec_xdr(),
54];
55
56pub(crate) const XDR_LEN: usize = 8560;
57
58pub const fn xdr() -> &'static [u8] {
60 &XDR
61}
62
63const XDR: [u8; XDR_LEN] = {
65 let input = XDR_INPUT;
66 let mut output = [0u8; XDR_LEN];
68 let mut input_i = 0;
69 let mut output_i = 0;
70 while input_i < input.len() {
71 let subinput = input[input_i];
72 let mut subinput_i = 0;
73 while subinput_i < subinput.len() {
74 output[output_i] = subinput[subinput_i];
75 output_i += 1;
76 subinput_i += 1;
77 }
78 input_i += 1;
79 }
80
81 if output_i != output.len() {
84 panic!("unexpected output length",);
85 }
86
87 output
88};