1use super::args;
2use crate::{
3 commands::global,
4 config::network,
5 rpc,
6 xdr::{
7 self, FeeBumpTransactionInnerTx, Hash, SorobanTransactionMetaExt, TransactionEnvelope,
8 TransactionMeta, TransactionResult,
9 },
10};
11use clap::Parser;
12use prettytable::{
13 format::{FormatBuilder, LinePosition, LineSeparator, TableFormat},
14 Cell, Row, Table,
15};
16use serde::{Deserialize, Serialize};
17use soroban_rpc::GetTransactionResponse;
18
19#[derive(Parser, Debug, Clone)]
20#[group(skip)]
21pub struct Cmd {
22 #[command(flatten)]
23 args: args::Args,
24
25 #[arg(long, default_value = "table")]
27 pub output: FeeOutputFormat,
28}
29
30#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq, clap::ValueEnum, Default)]
31pub enum FeeOutputFormat {
32 Json,
34 JsonFormatted,
36 #[default]
38 Table,
39}
40
41#[derive(thiserror::Error, Debug)]
42pub enum Error {
43 #[error(transparent)]
44 Network(#[from] network::Error),
45 #[error(transparent)]
46 Serde(#[from] serde_json::Error),
47 #[error(transparent)]
48 Xdr(#[from] xdr::Error),
49 #[error(transparent)]
50 Args(#[from] args::Error),
51 #[error("{message}")]
52 NotSupported { message: String },
53 #[error("transaction {tx_hash} not found on {network} network")]
54 NotFound { tx_hash: Hash, network: String },
55 #[error(transparent)]
56 Rpc(#[from] rpc::Error),
57 #[error("{field} is None, expected it to be Some")]
58 None { field: String },
59}
60
61const DEFAULT_RESOURCE_FEE: i64 = 0; const RESOURCE_FEE_TITLE: &str = "Resource Fee";
63
64const FEE_PROPOSED_TITLE: &str = "Fee Proposed";
66const INCLUSION_FEE_TITLE: &str = "Inclusion Fee";
67const NON_REFUNDABLE_TITLE: &str = "Non-Refundable";
68const REFUNDABLE_TITLE: &str = "Refundable";
69const NON_REFUNDABLE_COMPONENTS: &str = "\n\ncpu instructions\nstorage read/write\ntx size";
70const REFUNDABLE_COMPONENTS: &str = "\n\nreturn value\nstorage rent\nevents";
71
72const FEE_CHARGED_TITLE: &str = "Fee Charged";
74const RESOURCE_FEE_CHARGED_TITLE: &str = "Resource Fee Charged";
75const NON_REFUNDABLE_CHARGED_TITLE: &str = "Non-Refundable Charged";
76const REFUNDABLE_CHARGED_TITLE: &str = "Refundable Charged";
77const REFUNDED_TITLE: &str = "Refunded";
78const INCLUSION_FEE_CHARGED_TITLE: &str = "Inclusion Fee Charged";
79
80impl Cmd {
81 pub async fn run(&self, global_args: &global::Args) -> Result<(), Error> {
82 let resp = self.args.fetch_transaction(global_args).await?;
83 let fee_table = FeeTable::new_from_transaction_response(&resp)?;
84 match self.output {
85 FeeOutputFormat::Json => {
86 println!("{}", serde_json::to_string(&fee_table)?);
87 }
88 FeeOutputFormat::JsonFormatted => {
89 args::Args::print_tx_summary(&resp);
90 println!("{}", serde_json::to_string_pretty(&fee_table)?);
91 }
92 FeeOutputFormat::Table => {
93 args::Args::print_tx_summary(&resp);
94 fee_table.print();
95 }
96 }
97
98 Ok(())
99 }
100}
101
102#[derive(Serialize, Deserialize, Debug, PartialEq)]
103pub struct ProposedFees {
104 pub fee: i64,
105 pub resource_fee: i64,
106 pub inclusion_fee: i64,
107}
108
109#[derive(Serialize, Deserialize, Debug, PartialEq)]
110pub struct ChargedFees {
111 pub fee: i64,
112 pub resource_fee: i64,
113 pub inclusion_fee: i64,
114 pub non_refundable_resource_fee: i64,
115 pub refundable_resource_fee: i64,
116}
117
118#[derive(Serialize, Deserialize, Debug)]
119pub struct FeeTable {
120 pub proposed: ProposedFees,
121 pub charged: ChargedFees,
122}
123
124impl FeeTable {
125 pub fn new_from_transaction_response(resp: &GetTransactionResponse) -> Result<Self, Error> {
126 let (tx_result, tx_meta, tx_envelope) = Self::unpack_tx_response(resp)?;
127 let proposed = Self::extract_proposed_fees(&tx_envelope);
128 let charged = Self::extract_charged_fees(&tx_meta, &tx_result);
129
130 Ok(FeeTable { proposed, charged })
131 }
132
133 fn unpack_tx_response(
134 resp: &GetTransactionResponse,
135 ) -> Result<(TransactionResult, TransactionMeta, TransactionEnvelope), Error> {
136 let tx_result = resp.result.clone().ok_or(Error::None {
137 field: "tx_result".to_string(),
138 })?;
139 let tx_meta = resp.result_meta.clone().ok_or(Error::None {
140 field: "tx_meta".to_string(),
141 })?;
142 let tx_envelope = resp.envelope.clone().ok_or(Error::None {
143 field: "tx_envelope".to_string(),
144 })?;
145
146 Ok((tx_result, tx_meta, tx_envelope))
147 }
148
149 fn extract_proposed_fees(tx_envelope: &TransactionEnvelope) -> ProposedFees {
150 match tx_envelope {
151 TransactionEnvelope::TxV0(transaction_v0_envelope) => {
152 let fee: i64 = transaction_v0_envelope.tx.fee.into();
153 ProposedFees {
154 fee,
155 resource_fee: DEFAULT_RESOURCE_FEE,
156 inclusion_fee: fee - DEFAULT_RESOURCE_FEE,
157 }
158 }
159 TransactionEnvelope::Tx(transaction_v1_envelope) => {
160 let tx = transaction_v1_envelope.tx.clone();
161 let fee: i64 = tx.fee.into();
162 let resource_fee = match tx.ext {
163 xdr::TransactionExt::V0 => DEFAULT_RESOURCE_FEE,
164 xdr::TransactionExt::V1(soroban_transaction_data) => {
165 soroban_transaction_data.resource_fee
166 }
167 };
168 ProposedFees {
169 fee,
170 resource_fee,
171 inclusion_fee: fee - resource_fee,
172 }
173 }
174 TransactionEnvelope::TxFeeBump(fee_bump_transaction_envelope) => {
175 let inner_tx_resource_fee = match &fee_bump_transaction_envelope.tx.inner_tx {
176 FeeBumpTransactionInnerTx::Tx(tx_v1_envelope) => match &tx_v1_envelope.tx.ext {
177 xdr::TransactionExt::V0 => DEFAULT_RESOURCE_FEE,
178 xdr::TransactionExt::V1(soroban_transaction_data) => {
179 soroban_transaction_data.resource_fee
180 }
181 },
182 };
183 let fee = fee_bump_transaction_envelope.tx.fee;
185
186 ProposedFees {
187 fee,
188 resource_fee: inner_tx_resource_fee,
189 inclusion_fee: fee - inner_tx_resource_fee,
190 }
191 }
192 }
193 }
194
195 fn extract_charged_fees(
196 tx_meta: &TransactionMeta,
197 tx_result: &TransactionResult,
198 ) -> ChargedFees {
199 let fee = tx_result.fee_charged;
200 let (non_refundable_resource_fee, refundable_resource_fee) =
201 Self::resource_fees_charged(tx_meta);
202 let resource_fee = non_refundable_resource_fee + refundable_resource_fee;
203
204 ChargedFees {
205 fee,
206 resource_fee,
207 inclusion_fee: fee - resource_fee,
208 non_refundable_resource_fee,
209 refundable_resource_fee,
210 }
211 }
212
213 fn resource_fees_charged(tx_meta: &TransactionMeta) -> (i64, i64) {
214 let (non_refundable_resource_fee_charged, refundable_resource_fee_charged) =
215 match tx_meta.clone() {
216 TransactionMeta::V0(_) | TransactionMeta::V1(_) | TransactionMeta::V2(_) => {
217 (DEFAULT_RESOURCE_FEE, DEFAULT_RESOURCE_FEE)
218 }
219 TransactionMeta::V3(meta) => {
220 if let Some(soroban_meta) = meta.soroban_meta {
221 match soroban_meta.ext {
222 SorobanTransactionMetaExt::V0 => {
223 (DEFAULT_RESOURCE_FEE, DEFAULT_RESOURCE_FEE)
224 }
225 SorobanTransactionMetaExt::V1(v1) => (
226 v1.total_non_refundable_resource_fee_charged,
227 v1.total_refundable_resource_fee_charged,
228 ),
229 }
230 } else {
231 (DEFAULT_RESOURCE_FEE, DEFAULT_RESOURCE_FEE)
232 }
233 }
234 TransactionMeta::V4(meta) => {
235 if let Some(soroban_meta) = meta.soroban_meta {
236 match soroban_meta.ext {
237 SorobanTransactionMetaExt::V0 => {
238 (DEFAULT_RESOURCE_FEE, DEFAULT_RESOURCE_FEE)
239 }
240 SorobanTransactionMetaExt::V1(v1) => (
241 v1.total_non_refundable_resource_fee_charged,
242 v1.total_refundable_resource_fee_charged,
243 ),
244 }
245 } else {
246 (DEFAULT_RESOURCE_FEE, DEFAULT_RESOURCE_FEE)
247 }
248 }
249 };
250
251 (
252 non_refundable_resource_fee_charged,
253 refundable_resource_fee_charged,
254 )
255 }
256
257 fn should_include_resource_fees(&self) -> bool {
258 self.charged.resource_fee != 0 || self.proposed.resource_fee != 0
259 }
260
261 fn estimated_refunded_resource_fee(&self) -> i64 {
262 self.proposed.resource_fee - self.charged.non_refundable_resource_fee
263 }
264
265 fn refunded(&self) -> i64 {
266 self.proposed.fee - self.charged.fee
267 }
268
269 pub fn table(&self) -> Table {
270 let mut table = Table::new();
271 table.set_format(Self::table_format());
272
273 table.add_row(Row::new(vec![Cell::new(&format!(
275 "{FEE_PROPOSED_TITLE}: {}",
276 self.proposed.fee
277 ))
278 .with_hspan(4)]));
279
280 table.add_row(Row::new(vec![
281 Cell::new(&format!(
282 "{}: {}",
283 INCLUSION_FEE_TITLE, self.proposed.inclusion_fee
284 )),
285 Cell::new(&format!(
286 "{RESOURCE_FEE_TITLE}: {}",
287 self.proposed.resource_fee
288 ))
289 .with_hspan(3),
290 ]));
291
292 table.add_row(Row::new(vec![
293 Cell::new(&format!(
294 "{}: {}",
295 INCLUSION_FEE_TITLE, self.proposed.inclusion_fee
296 )),
297 Cell::new(&format!(
298 "{NON_REFUNDABLE_TITLE}: {}{}",
299 self.charged.non_refundable_resource_fee, NON_REFUNDABLE_COMPONENTS
300 )),
301 Cell::new(&format!(
302 "{REFUNDABLE_TITLE}: {}{}",
303 self.estimated_refunded_resource_fee(),
304 REFUNDABLE_COMPONENTS
305 ))
306 .with_hspan(2),
307 ]));
308
309 table.add_row(Row::new(vec![Cell::new("👆 Proposed Fee 👇 Final Fee")
311 .style_spec("c")
312 .with_hspan(4)]));
313
314 if self.should_include_resource_fees() {
316 table.add_row(Row::new(vec![
317 Cell::new(&format!(
318 "{INCLUSION_FEE_CHARGED_TITLE}: {}",
319 self.charged.inclusion_fee
320 )),
321 Cell::new(&format!(
322 "{NON_REFUNDABLE_CHARGED_TITLE}: {}",
323 self.charged.non_refundable_resource_fee
324 )),
325 Cell::new(&format!(
326 "{REFUNDABLE_CHARGED_TITLE}: {}",
327 self.charged.refundable_resource_fee
328 )),
329 Cell::new(&format!("{REFUNDED_TITLE}: {}", self.refunded())),
330 ]));
331
332 table.add_row(Row::new(vec![
333 Cell::new(&format!(
334 "{INCLUSION_FEE_CHARGED_TITLE}: {}",
335 self.charged.inclusion_fee
336 )),
337 Cell::new(&format!(
338 "{}: {}",
339 RESOURCE_FEE_CHARGED_TITLE, self.charged.resource_fee
340 ))
341 .with_hspan(2),
342 Cell::new(&format!("{REFUNDED_TITLE}: {}", self.refunded())),
343 ]));
344 }
345
346 table.add_row(Row::new(vec![
347 Cell::new(&format!("{FEE_CHARGED_TITLE}: {}", self.charged.fee)).with_hspan(3),
348 Cell::new(&format!("{REFUNDED_TITLE}: {}", self.refunded())),
349 ]));
350
351 table
352 }
353
354 pub fn print(&self) {
355 self.table().printstd();
356 }
357
358 fn table_format() -> TableFormat {
359 FormatBuilder::new()
360 .column_separator('│')
361 .borders('│')
362 .separators(&[LinePosition::Top], LineSeparator::new('─', '─', '┌', '┐'))
363 .separators(
364 &[LinePosition::Intern],
365 LineSeparator::new('─', '─', '├', '┤'),
366 )
367 .separators(
368 &[LinePosition::Bottom],
369 LineSeparator::new('─', '─', '└', '┘'),
370 )
371 .padding(1, 1)
372 .build()
373 }
374}
375
376#[cfg(test)]
377mod test {
378 use soroban_rpc::GetTransactionResponse;
379
380 use super::*;
381
382 #[test]
383 fn soroban_tx() {
384 let resp = soroban_tx_response().unwrap();
385 let fee_table = FeeTable::new_from_transaction_response(&resp).unwrap();
386
387 let proposed_fee = 105_447;
388 let proposed_resource_fee = 105_347;
389 let expected_proposed_fees = ProposedFees {
390 fee: proposed_fee,
391 resource_fee: proposed_resource_fee,
392 inclusion_fee: proposed_fee - proposed_resource_fee,
393 };
394 assert_eq!(fee_table.proposed, expected_proposed_fees);
395
396 let charged_fee = 60_537;
397 let non_refundable_resource_fee_charged = 60_358;
398 let refundable_resource_fee_charged = 79;
399 let full_resource_fee_charged =
400 non_refundable_resource_fee_charged + refundable_resource_fee_charged;
401 let inclusion_fee_charged = charged_fee - full_resource_fee_charged;
402 let expected_charged_fees = ChargedFees {
403 fee: charged_fee,
404 resource_fee: full_resource_fee_charged,
405 inclusion_fee: inclusion_fee_charged,
406 non_refundable_resource_fee: non_refundable_resource_fee_charged,
407 refundable_resource_fee: refundable_resource_fee_charged,
408 };
409 assert_eq!(fee_table.charged, expected_charged_fees);
410
411 assert!(fee_table.should_include_resource_fees());
412
413 let expected_estimated_refund = proposed_resource_fee - non_refundable_resource_fee_charged;
414 assert_eq!(
415 fee_table.estimated_refunded_resource_fee(),
416 expected_estimated_refund
417 );
418
419 let refund = proposed_fee - charged_fee;
420 assert_eq!(fee_table.refunded(), refund);
421 }
422
423 #[test]
424 fn classic_tx() {
425 let resp = classic_tx_response().unwrap();
426 let fee_table = FeeTable::new_from_transaction_response(&resp).unwrap();
427
428 let proposed_fee = 100;
429 let proposed_resource_fee = DEFAULT_RESOURCE_FEE;
430 let expected_proposed_fees = ProposedFees {
431 fee: proposed_fee,
432 resource_fee: proposed_resource_fee,
433 inclusion_fee: proposed_fee - proposed_resource_fee,
434 };
435 assert_eq!(fee_table.proposed, expected_proposed_fees);
436
437 let charged_fee = 100;
438 let non_refundable_resource_fee_charged = DEFAULT_RESOURCE_FEE;
439 let refundable_resource_fee_charged = DEFAULT_RESOURCE_FEE;
440 let full_resource_fee_charged =
441 non_refundable_resource_fee_charged + refundable_resource_fee_charged;
442 let inclusion_fee_charged = charged_fee - full_resource_fee_charged;
443 let expected_charged_fees = ChargedFees {
444 fee: charged_fee,
445 resource_fee: full_resource_fee_charged,
446 inclusion_fee: inclusion_fee_charged,
447 non_refundable_resource_fee: non_refundable_resource_fee_charged,
448 refundable_resource_fee: refundable_resource_fee_charged,
449 };
450 assert_eq!(fee_table.charged, expected_charged_fees);
451
452 assert!(!fee_table.should_include_resource_fees());
453 }
454
455 #[test]
456 fn fee_bump_wrapping_classic_tx() {
457 let resp = fee_bump_wrapping_classic_tx_response().unwrap();
458 let fee_table = FeeTable::new_from_transaction_response(&resp).unwrap();
459
460 let proposed_fee = 400;
461 let proposed_resource_fee = DEFAULT_RESOURCE_FEE;
462 let expected_proposed_fees = ProposedFees {
463 fee: proposed_fee,
464 resource_fee: proposed_resource_fee,
465 inclusion_fee: proposed_fee - proposed_resource_fee,
466 };
467 assert_eq!(fee_table.proposed, expected_proposed_fees);
468
469 let charged_fee = 200;
470 let non_refundable_resource_fee_charged = DEFAULT_RESOURCE_FEE;
471 let refundable_resource_fee_charged = DEFAULT_RESOURCE_FEE;
472 let full_resource_fee_charged =
473 non_refundable_resource_fee_charged + refundable_resource_fee_charged;
474 let inclusion_fee_charged = charged_fee - full_resource_fee_charged;
475 let expected_charged_fees = ChargedFees {
476 fee: charged_fee,
477 resource_fee: full_resource_fee_charged,
478 inclusion_fee: inclusion_fee_charged,
479 non_refundable_resource_fee: non_refundable_resource_fee_charged,
480 refundable_resource_fee: refundable_resource_fee_charged,
481 };
482 assert_eq!(fee_table.charged, expected_charged_fees);
483
484 assert!(!fee_table.should_include_resource_fees());
485 }
486
487 #[test]
488 fn fee_bump_wrapping_soroban_tx() {
489 let resp = fee_bump_wrapping_soroban_tx_response().unwrap();
490 let fee_table = FeeTable::new_from_transaction_response(&resp).unwrap();
491
492 let proposed_fee = 10_208_876;
493 let proposed_inner_tx_resource_fee = 5_004_438;
494 let expected_proposed_fees = ProposedFees {
495 fee: proposed_fee,
496 resource_fee: proposed_inner_tx_resource_fee,
497 inclusion_fee: proposed_fee - proposed_inner_tx_resource_fee,
498 };
499 assert_eq!(fee_table.proposed, expected_proposed_fees);
500
501 let charged_fee = 3_603_030;
502 let non_refundable_resource_fee_charged = 285_226;
503 let refundable_resource_fee_charged = 3_317_604;
504 let full_resource_fee_charged =
505 non_refundable_resource_fee_charged + refundable_resource_fee_charged;
506 let inclusion_fee_charged = charged_fee - full_resource_fee_charged;
507 let expected_charged_fees = ChargedFees {
508 fee: charged_fee,
509 resource_fee: full_resource_fee_charged,
510 inclusion_fee: inclusion_fee_charged,
511 non_refundable_resource_fee: non_refundable_resource_fee_charged,
512 refundable_resource_fee: refundable_resource_fee_charged,
513 };
514 assert_eq!(fee_table.charged, expected_charged_fees);
515
516 assert!(fee_table.should_include_resource_fees());
517 }
518
519 fn soroban_tx_response() -> Result<GetTransactionResponse, serde_json::Error> {
520 serde_json::from_str(SOROBAN_TX_RESPONSE)
521 }
522
523 fn classic_tx_response() -> Result<GetTransactionResponse, serde_json::Error> {
524 serde_json::from_str(CLASSIC_TX_RESPONSE)
525 }
526
527 fn fee_bump_wrapping_classic_tx_response() -> Result<GetTransactionResponse, serde_json::Error>
528 {
529 serde_json::from_str(FEE_BUMP_WRAPPING_CLASSIC_TX_RESPONSE)
530 }
531
532 fn fee_bump_wrapping_soroban_tx_response() -> Result<GetTransactionResponse, serde_json::Error>
533 {
534 serde_json::from_str(FEE_BUMP_WRAPPING_SOROBAN_TX_RESPONSE)
535 }
536
537 const SOROBAN_TX_RESPONSE: &str = r#"{"status":"SUCCESS","envelope":{"tx":{"tx":{"source_account":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","fee":105447,"seq_num":"2062499130114054","cond":"none","memo":"none","operations":[{"source_account":null,"body":{"invoke_host_function":{"host_function":{"invoke_contract":{"contract_address":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","function_name":"inc","args":[]}},"auth":[]}}}],"ext":{"v1":{"ext":"v0","resources":{"footprint":{"read_only":[{"contract_data":{"contract":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","key":"ledger_key_contract_instance","durability":"persistent"}},{"contract_code":{"hash":"2a41e16cb574fc372ee81f02c1d775365d9d39002cc630bd162a4dcaeb153161"}}],"read_write":[{"contract_data":{"contract":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","key":{"symbol":"COUNTER"},"durability":"persistent"}}]},"instructions":2099865,"disk_read_bytes":8008,"write_bytes":80},"resource_fee":"105347"}}},"signatures":[{"hint":"6ca1bdc0","signature":"b8120310a5db9b5fd295f00d9fd7ebc26e34d14b27a00a5827aa89a18027fb7d69fb1b11e3b6408885602627b228256fde049aee2045fea7d088327302e4ea04"}]}},"result":{"fee_charged":"60537","result":{"tx_success":[{"op_inner":{"invoke_host_function":{"success":"e18456c437deb4d21dceee8db938ac8bcea25405af8df02d9225104e5d53e185"}}}]},"ext":"v0"},"result_meta":{"v3":{"ext":"v0","tx_changes_before":[{"state":{"last_modified_ledger_seq":480745,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907097552","seq_num":"2062499130114053","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480418,"seq_time":"1752671669"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":480745,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907097552","seq_num":"2062499130114054","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480745,"seq_time":"1752673305"}}}}}}}},"ext":"v0"}}],"operations":[{"changes":[{"state":{"last_modified_ledger_seq":480290,"data":{"contract_data":{"ext":"v0","contract":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","key":{"symbol":"COUNTER"},"durability":"persistent","val":{"u32":2}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":480745,"data":{"contract_data":{"ext":"v0","contract":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","key":{"symbol":"COUNTER"},"durability":"persistent","val":{"u32":3}}},"ext":"v0"}}]}],"tx_changes_after":[{"state":{"last_modified_ledger_seq":480745,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907097552","seq_num":"2062499130114054","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480745,"seq_time":"1752673305"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":480745,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907142462","seq_num":"2062499130114054","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480745,"seq_time":"1752673305"}}}}}}}},"ext":"v0"}}],"soroban_meta":{"ext":{"v1":{"ext":"v0","total_non_refundable_resource_fee_charged":"60358","total_refundable_resource_fee_charged":"79","rent_fee_charged":"0"}},"events":[],"return_value":{"u32":3},"diagnostic_events":[{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_call"},{"bytes":"8adcbb7b43bc61cdebb5a29e977ca06e40ba5834a0949aab025ada2e9af0a398"},{"symbol":"inc"}],"data":"void"}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"log"}],"data":{"vec":[{"string":"count: {}"},{"u32":2}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_return"},{"symbol":"inc"}],"data":{"u32":3}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_entry"}],"data":{"u64":"6"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_entry"}],"data":{"u64":"1"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_read_byte"}],"data":{"u64":"8008"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_write_byte"}],"data":{"u64":"80"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_key_byte"}],"data":{"u64":"144"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_key_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_data_byte"}],"data":{"u64":"184"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_data_byte"}],"data":{"u64":"80"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_code_byte"}],"data":{"u64":"7824"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_code_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event_byte"}],"data":{"u64":"8"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"cpu_insn"}],"data":{"u64":"2006689"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"mem_byte"}],"data":{"u64":"1492062"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"invoke_time_nsecs"}],"data":{"u64":"561706"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_key_byte"}],"data":{"u64":"60"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_data_byte"}],"data":{"u64":"104"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_code_byte"}],"data":{"u64":"7824"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_emit_event_byte"}],"data":{"u64":"0"}}}}}]}}},"events":{"contract_events":[],"diagnostic_events":[{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_call"},{"bytes":"8adcbb7b43bc61cdebb5a29e977ca06e40ba5834a0949aab025ada2e9af0a398"},{"symbol":"inc"}],"data":"void"}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"log"}],"data":{"vec":[{"string":"count: {}"},{"u32":2}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCFNZO33IO6GDTPLWWRJ5F34UBXEBOSYGSQJJGVLAJNNULU26CRZR6TM","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_return"},{"symbol":"inc"}],"data":{"u32":3}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_entry"}],"data":{"u64":"6"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_entry"}],"data":{"u64":"1"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_read_byte"}],"data":{"u64":"8008"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_write_byte"}],"data":{"u64":"80"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_key_byte"}],"data":{"u64":"144"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_key_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_data_byte"}],"data":{"u64":"184"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_data_byte"}],"data":{"u64":"80"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_code_byte"}],"data":{"u64":"7824"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_code_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event_byte"}],"data":{"u64":"8"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"cpu_insn"}],"data":{"u64":"2006689"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"mem_byte"}],"data":{"u64":"1492062"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"invoke_time_nsecs"}],"data":{"u64":"561706"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_key_byte"}],"data":{"u64":"60"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_data_byte"}],"data":{"u64":"104"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_code_byte"}],"data":{"u64":"7824"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_emit_event_byte"}],"data":{"u64":"0"}}}}}],"transaction_events":[]}}"#;
538
539 const CLASSIC_TX_RESPONSE: &str = r#"{"status":"SUCCESS","envelope":{"tx":{"tx":{"source_account":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","fee":100,"seq_num":"2062499130114053","cond":"none","memo":"none","operations":[{"source_account":null,"body":{"manage_data":{"data_name":"test","data_value":"abcdef"}}}],"ext":"v0"},"signatures":[{"hint":"6ca1bdc0","signature":"a12761eee624d0a15f731b6e63201c55978d714a28d167e80441092afb11a06549056199e589ff511d376299782cde796169a1781b7ecad93cbe68ac3a768d05"}]}},"result":{"fee_charged":"100","result":{"tx_success":[{"op_inner":{"manage_data":"success"}}]},"ext":"v0"},"result_meta":{"v3":{"ext":"v0","tx_changes_before":[{"state":{"last_modified_ledger_seq":480418,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907202999","seq_num":"2062499130114052","num_sub_entries":0,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480290,"seq_time":"1752671028"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":480418,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907202999","seq_num":"2062499130114053","num_sub_entries":0,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480418,"seq_time":"1752671669"}}}}}}}},"ext":"v0"}}],"operations":[{"changes":[{"created":{"last_modified_ledger_seq":480418,"data":{"data":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","data_name":"test","data_value":"abcdef","ext":"v0"}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":480418,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907202999","seq_num":"2062499130114053","num_sub_entries":0,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480418,"seq_time":"1752671669"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":480418,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"99907202999","seq_num":"2062499130114053","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480418,"seq_time":"1752671669"}}}}}}}},"ext":"v0"}}]}],"tx_changes_after":[],"soroban_meta":null}},"events":{"contract_events":[],"diagnostic_events":[],"transaction_events":[]}}"#;
540
541 const FEE_BUMP_WRAPPING_CLASSIC_TX_RESPONSE: &str = r#"{"status":"SUCCESS","envelope":{"tx_fee_bump":{"tx":{"fee_source":"GD5EJEGJM5PWKZ4WBJFMTHHY3VNUDJDU55N24ODPIPNYKBRRJCCIA44P","fee":"400","inner_tx":{"tx":{"tx":{"source_account":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","fee":100,"seq_num":"2062499130114055","cond":{"time":{"min_time":"0","max_time":"1752675654"}},"memo":"none","operations":[{"source_account":null,"body":{"payment":{"destination":"GDBFMEGF2EVTNISNTYVOOYGXAEP5A353YJCPDRGUH3L6GMIDATR4BWY6","asset":"native","amount":"100000000"}}}],"ext":"v0"},"signatures":[{"hint":"6ca1bdc0","signature":"ce5f19bac1e1a57f6f54a7d4f5729fd2db8755dac425fd61220111e3d4436dfd52e9f0f0098ea0c07fc3e65c69f19f7d1f440adc7fa9937662bd9268fb7cb00c"}]}},"ext":"v0"},"signatures":[{"hint":"31488480","signature":"789b8261c481532c7f8933ed1b32d9fb270d9acc044774dda1986f20aba8248592975f25eec1aabe374978fcc10a19b9797c834d686465a4d225b01d0c57020e"}]}},"result":{"fee_charged":"200","result":{"tx_fee_bump_inner_success":{"transaction_hash":"b6b9591c8c00d1aa9212ef0345e6b1ccd56f9a362e463a1f6237423d09dbcab8","result":{"fee_charged":"100","result":{"tx_success":[{"op_inner":{"payment":"success"}}]},"ext":"v0"}}},"ext":"v0"},"result_meta":{"v3":{"ext":"v0","tx_changes_before":[{"state":{"last_modified_ledger_seq":481209,"data":{"account":{"account_id":"GD5EJEGJM5PWKZ4WBJFMTHHY3VNUDJDU55N24ODPIPNYKBRRJCCIA44P","balance":"99999999800","seq_num":"2065887859310592","num_sub_entries":0,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":"v0"}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":481209,"data":{"account":{"account_id":"GD5EJEGJM5PWKZ4WBJFMTHHY3VNUDJDU55N24ODPIPNYKBRRJCCIA44P","balance":"99999999800","seq_num":"2065887859310592","num_sub_entries":0,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":"v0"}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":481027,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"199907142462","seq_num":"2062499130114054","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":480745,"seq_time":"1752673305"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":481209,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"199907142462","seq_num":"2062499130114055","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":481209,"seq_time":"1752675627"}}}}}}}},"ext":"v0"}}],"operations":[{"changes":[{"state":{"last_modified_ledger_seq":481209,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"199907142462","seq_num":"2062499130114055","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":481209,"seq_time":"1752675627"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":481209,"data":{"account":{"account_id":"GDWREJ5HETNIDTQKXJZPA6LRSJMFUCO4T2DFEJYSZ2XVWRTMUG64AL4B","balance":"199807142462","seq_num":"2062499130114055","num_sub_entries":1,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":0,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":481209,"seq_time":"1752675627"}}}}}}}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":481014,"data":{"account":{"account_id":"GDBFMEGF2EVTNISNTYVOOYGXAEP5A353YJCPDRGUH3L6GMIDATR4BWY6","balance":"100000000000","seq_num":"2065939398918144","num_sub_entries":0,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":"v0"}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":481209,"data":{"account":{"account_id":"GDBFMEGF2EVTNISNTYVOOYGXAEP5A353YJCPDRGUH3L6GMIDATR4BWY6","balance":"100100000000","seq_num":"2065939398918144","num_sub_entries":0,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":"v0"}},"ext":"v0"}}]}],"tx_changes_after":[],"soroban_meta":null}},"events":{"contract_events":[],"diagnostic_events":[],"transaction_events":[]}}"#;
542
543 const FEE_BUMP_WRAPPING_SOROBAN_TX_RESPONSE: &str = r#"{"status":"SUCCESS","envelope":{"tx_fee_bump":{"tx":{"fee_source":"GDJLH2F7DBI6GC22J7YUTPAEFRSWKG5MN5RSE2GOOYUTO4BH66LHENRW","fee":"10208876","inner_tx":{"tx":{"tx":{"source_account":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK","fee":5004538,"seq_num":"244204891193475075","cond":"none","memo":"none","operations":[{"source_account":null,"body":{"invoke_host_function":{"host_function":{"invoke_contract":{"contract_address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","function_name":"submit","args":[{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"vec":[{"map":[{"key":{"symbol":"address"},"val":{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}},{"key":{"symbol":"amount"},"val":{"i128":"10000990"}},{"key":{"symbol":"request_type"},"val":{"u32":3}}]}]}]}},"auth":[{"credentials":"source_account","root_invocation":{"function":{"contract_fn":{"contract_address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","function_name":"submit","args":[{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"vec":[{"map":[{"key":{"symbol":"address"},"val":{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}},{"key":{"symbol":"amount"},"val":{"i128":"10000990"}},{"key":{"symbol":"request_type"},"val":{"u32":3}}]}]}]}},"sub_invocations":[]}}]}}}],"ext":{"v1":{"ext":"v0","resources":{"footprint":{"read_only":[{"contract_data":{"contract":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","key":"ledger_key_contract_instance","durability":"persistent"}},{"contract_data":{"contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"EmisConfig"},{"u32":3}]},"durability":"persistent"}},{"contract_data":{"contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"EmisData"},{"u32":3}]},"durability":"persistent"}},{"contract_data":{"contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"ResConfig"},{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}]},"durability":"persistent"}},{"contract_data":{"contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":"ledger_key_contract_instance","durability":"persistent"}},{"contract_code":{"hash":"baf978f10efdbcd85747868bef8832845ea6809f7643b67a4ac0cd669327fc2c"}}],"read_write":[{"trustline":{"account_id":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK","asset":{"credit_alphanum4":{"asset_code":"USDC","issuer":"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}}}},{"contract_data":{"contract":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","key":{"vec":[{"symbol":"Balance"},{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"}]},"durability":"persistent"}},{"contract_data":{"contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"Positions"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}]},"durability":"persistent"}},{"contract_data":{"contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"ResData"},{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}]},"durability":"persistent"}},{"contract_data":{"contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"UserEmis"},{"map":[{"key":{"symbol":"reserve_id"},"val":{"u32":3}},{"key":{"symbol":"user"},"val":{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}}]}]},"durability":"persistent"}}]},"instructions":9237256,"disk_read_bytes":53060,"write_bytes":1276},"resource_fee":"5004438"}}},"signatures":[{"hint":"f291f849","signature":"3cc2da7de9df730b23ffa8a26ddfe180aa4b8eef3e251c6f05972984a659a729f1cea6396c806cce57dc66d070e588708021dfd6dc510454355bd9ce3be55500"}]}},"ext":"v0"},"signatures":[{"hint":"27f79672","signature":"f5985e8d0d8d1acc1e9862418ad09da9ec9607327362a887ee8fd805d362bcd97dee470c8f604cf5e4acbf161be4e79ece729333ba39f126d64781ecbe763202"}]}},"result":{"fee_charged":"3603030","result":{"tx_fee_bump_inner_success":{"transaction_hash":"0d2bdcf1532b215a81730267d6a7cd444127b19bdb435a568543890951a95d78","result":{"fee_charged":"3602930","result":{"tx_success":[{"op_inner":{"invoke_host_function":{"success":"1437b07cfee492dc5c26ccebe96fcab3c8a96b9a0e29d2b804095d6cc8e2f89d"}}}]},"ext":"v0"}}},"ext":"v0"},"result_meta":{"v3":{"ext":"v0","tx_changes_before":[{"state":{"last_modified_ledger_seq":58166971,"data":{"account":{"account_id":"GDJLH2F7DBI6GC22J7YUTPAEFRSWKG5MN5RSE2GOOYUTO4BH66LHENRW","balance":"22097264303","seq_num":"181263292226863151","num_sub_entries":4,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":2,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":56604244,"seq_time":"1744587782"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"account":{"account_id":"GDJLH2F7DBI6GC22J7YUTPAEFRSWKG5MN5RSE2GOOYUTO4BH66LHENRW","balance":"22097264303","seq_num":"181263292226863151","num_sub_entries":4,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":2,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":56604244,"seq_time":"1744587782"}}}}}}}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":56858638,"data":{"account":{"account_id":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK","balance":"0","seq_num":"244204891193475074","num_sub_entries":4,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"00141414","signers":[{"key":"GCO6RBY3BSJ77Y77TUXV2O5AV5E5WHAKRVMFDBHHX4H4KSKPVMICFKT4","weight":10},{"key":"GDG2THNO7333WXJU2ZMFAIDYEMJHWLHZLAJ6ZEV2QPWPWT7SSH4ETPIW","weight":20},{"key":"GDRWVPEIZK3YDKSLFPY4I4S2FOFZ6SJIRTUHTFN4NZGZTZGOIBRD4CT7","weight":10}],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":6,"num_sponsoring":0,"signer_sponsoring_i_ds":["GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X","GCUISJEWU2TZ4QIJNGNVU4BSZ5CQS3KE6A3N3ETOV7XHCBVO4GLTLGOQ","GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X"],"ext":{"v3":{"ext":"v0","seq_ledger":56858638,"seq_time":"1746041747"}}}}}}}},"ext":{"v1":{"sponsoring_id":"GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X","ext":"v0"}}}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"account":{"account_id":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK","balance":"0","seq_num":"244204891193475075","num_sub_entries":4,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"00141414","signers":[{"key":"GCO6RBY3BSJ77Y77TUXV2O5AV5E5WHAKRVMFDBHHX4H4KSKPVMICFKT4","weight":10},{"key":"GDG2THNO7333WXJU2ZMFAIDYEMJHWLHZLAJ6ZEV2QPWPWT7SSH4ETPIW","weight":20},{"key":"GDRWVPEIZK3YDKSLFPY4I4S2FOFZ6SJIRTUHTFN4NZGZTZGOIBRD4CT7","weight":10}],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":6,"num_sponsoring":0,"signer_sponsoring_i_ds":["GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X","GCUISJEWU2TZ4QIJNGNVU4BSZ5CQS3KE6A3N3ETOV7XHCBVO4GLTLGOQ","GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X"],"ext":{"v3":{"ext":"v0","seq_ledger":58166971,"seq_time":"1753467627"}}}}}}}},"ext":{"v1":{"sponsoring_id":"GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X","ext":"v0"}}}}],"operations":[{"changes":[{"state":{"last_modified_ledger_seq":56858638,"data":{"contract_data":{"ext":"v0","contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"UserEmis"},{"map":[{"key":{"symbol":"reserve_id"},"val":{"u32":3}},{"key":{"symbol":"user"},"val":{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}}]}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"accrued"},"val":{"i128":"0"}},{"key":{"symbol":"index"},"val":{"i128":"16117732"}}]}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"contract_data":{"ext":"v0","contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"UserEmis"},{"map":[{"key":{"symbol":"reserve_id"},"val":{"u32":3}},{"key":{"symbol":"user"},"val":{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}}]}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"accrued"},"val":{"i128":"3595324"}},{"key":{"symbol":"index"},"val":{"i128":"20142282"}}]}}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":58166528,"data":{"contract_data":{"ext":"v0","contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"ResData"},{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"b_rate"},"val":{"i128":"1119495346"}},{"key":{"symbol":"b_supply"},"val":{"i128":"650408667001"}},{"key":{"symbol":"backstop_credit"},"val":{"i128":"1347654276"}},{"key":{"symbol":"d_rate"},"val":{"i128":"1190401998"}},{"key":{"symbol":"d_supply"},"val":{"i128":"58684906655"}},{"key":{"symbol":"ir_mod"},"val":{"i128":"100000000"}},{"key":{"symbol":"last_time"},"val":{"u64":"1753465101"}}]}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"contract_data":{"ext":"v0","contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"ResData"},{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"b_rate"},"val":{"i128":"1119495371"}},{"key":{"symbol":"b_supply"},"val":{"i128":"650399733520"}},{"key":{"symbol":"backstop_credit"},"val":{"i128":"1347658442"}},{"key":{"symbol":"d_rate"},"val":{"i128":"1190402353"}},{"key":{"symbol":"d_supply"},"val":{"i128":"58684906655"}},{"key":{"symbol":"ir_mod"},"val":{"i128":"100000000"}},{"key":{"symbol":"last_time"},"val":{"u64":"1753467627"}}]}}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":56858638,"data":{"ttl":{"key_hash":"ec31d93e482c805046d62dd73b28cca317660a98f88c191a59004c4c3f3f4445","live_until_ledger_seq":58932237}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"ttl":{"key_hash":"ec31d93e482c805046d62dd73b28cca317660a98f88c191a59004c4c3f3f4445","live_until_ledger_seq":60240571}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":56858638,"data":{"contract_data":{"ext":"v0","contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"Positions"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"collateral"},"val":{"map":[{"key":{"u32":1},"val":{"i128":"8933481"}}]}},{"key":{"symbol":"liabilities"},"val":{"map":[]}},{"key":{"symbol":"supply"},"val":{"map":[]}}]}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"contract_data":{"ext":"v0","contract":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","key":{"vec":[{"symbol":"Positions"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"collateral"},"val":{"map":[]}},{"key":{"symbol":"liabilities"},"val":{"map":[]}},{"key":{"symbol":"supply"},"val":{"map":[]}}]}}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":56858638,"data":{"ttl":{"key_hash":"23de831fb42c10fd3e52d2e5273666cc1ae375c7409df2c8c18c8dcbcebbc1d7","live_until_ledger_seq":58932237}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"ttl":{"key_hash":"23de831fb42c10fd3e52d2e5273666cc1ae375c7409df2c8c18c8dcbcebbc1d7","live_until_ledger_seq":60240571}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":58166528,"data":{"contract_data":{"ext":"v0","contract":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","key":{"vec":[{"symbol":"Balance"},{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"amount"},"val":{"i128":"660267264555"}},{"key":{"symbol":"authorized"},"val":{"bool":true}},{"key":{"symbol":"clawback"},"val":{"bool":false}}]}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"contract_data":{"ext":"v0","contract":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","key":{"vec":[{"symbol":"Balance"},{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"}]},"durability":"persistent","val":{"map":[{"key":{"symbol":"amount"},"val":{"i128":"660257263565"}},{"key":{"symbol":"authorized"},"val":{"bool":true}},{"key":{"symbol":"clawback"},"val":{"bool":false}}]}}},"ext":"v0"}},{"state":{"last_modified_ledger_seq":56858638,"data":{"trustline":{"account_id":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK","asset":{"credit_alphanum4":{"asset_code":"USDC","issuer":"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}},"balance":"0","limit":"9223372036854775807","flags":1,"ext":"v0"}},"ext":{"v1":{"sponsoring_id":"GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X","ext":"v0"}}}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"trustline":{"account_id":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK","asset":{"credit_alphanum4":{"asset_code":"USDC","issuer":"GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}},"balance":"10000990","limit":"9223372036854775807","flags":1,"ext":"v0"}},"ext":{"v1":{"sponsoring_id":"GBKAZKU33LRJX47UGDX2YGA7UIJ5BWSVAFQJLBAUYIMOS5KBPVXKGO4X","ext":"v0"}}}}]}],"tx_changes_after":[{"state":{"last_modified_ledger_seq":58166971,"data":{"account":{"account_id":"GDJLH2F7DBI6GC22J7YUTPAEFRSWKG5MN5RSE2GOOYUTO4BH66LHENRW","balance":"22097264303","seq_num":"181263292226863151","num_sub_entries":4,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":2,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":56604244,"seq_time":"1744587782"}}}}}}}},"ext":"v0"}},{"updated":{"last_modified_ledger_seq":58166971,"data":{"account":{"account_id":"GDJLH2F7DBI6GC22J7YUTPAEFRSWKG5MN5RSE2GOOYUTO4BH66LHENRW","balance":"22098665911","seq_num":"181263292226863151","num_sub_entries":4,"inflation_dest":null,"flags":0,"home_domain":"","thresholds":"01000000","signers":[],"ext":{"v1":{"liabilities":{"buying":"0","selling":"0"},"ext":{"v2":{"num_sponsored":0,"num_sponsoring":2,"signer_sponsoring_i_ds":[],"ext":{"v3":{"ext":"v0","seq_ledger":56604244,"seq_time":"1744587782"}}}}}}}},"ext":"v0"}}],"soroban_meta":{"ext":{"v1":{"ext":"v0","total_non_refundable_resource_fee_charged":"285226","total_refundable_resource_fee_charged":"3317604","rent_fee_charged":"3312096"}},"events":[{"ext":"v0","contract_id":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","type_":"contract","body":{"v0":{"topics":[{"symbol":"withdraw_collateral"},{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}],"data":{"vec":[{"i128":"10000990"},{"i128":"8933481"}]}}}},{"ext":"v0","contract_id":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","type_":"contract","body":{"v0":{"topics":[{"symbol":"transfer"},{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"string":"USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}],"data":{"i128":"10000990"}}}}],"return_value":{"map":[{"key":{"symbol":"collateral"},"val":{"map":[]}},{"key":{"symbol":"liabilities"},"val":{"map":[]}},{"key":{"symbol":"supply"},"val":{"map":[]}}]},"diagnostic_events":[{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_call"},{"bytes":"eb0aa9d8d625796902fa9be6341291de077e8dd523a7378e46a4a6152da8183b"},{"symbol":"submit"}],"data":{"vec":[{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"vec":[{"map":[{"key":{"symbol":"address"},"val":{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}},{"key":{"symbol":"amount"},"val":{"i128":"10000990"}},{"key":{"symbol":"request_type"},"val":{"u32":3}}]}]}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","type_":"contract","body":{"v0":{"topics":[{"symbol":"withdraw_collateral"},{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}],"data":{"vec":[{"i128":"10000990"},{"i128":"8933481"}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_call"},{"bytes":"adefce59aee52968f76061d494c2525b75659fa4296a65f499ef29e56477e496"},{"symbol":"transfer"}],"data":{"vec":[{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"i128":"10000990"}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","type_":"contract","body":{"v0":{"topics":[{"symbol":"transfer"},{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"string":"USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}],"data":{"i128":"10000990"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_return"},{"symbol":"transfer"}],"data":"void"}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_return"},{"symbol":"submit"}],"data":{"map":[{"key":{"symbol":"collateral"},"val":{"map":[]}},{"key":{"symbol":"liabilities"},"val":{"map":[]}},{"key":{"symbol":"supply"},"val":{"map":[]}}]}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_entry"}],"data":{"u64":"11"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_entry"}],"data":{"u64":"5"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_read_byte"}],"data":{"u64":"53060"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_write_byte"}],"data":{"u64":"1276"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_key_byte"}],"data":{"u64":"1008"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_key_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_data_byte"}],"data":{"u64":"3028"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_data_byte"}],"data":{"u64":"1276"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_code_byte"}],"data":{"u64":"50032"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_code_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event"}],"data":{"u64":"2"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event_byte"}],"data":{"u64":"460"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"cpu_insn"}],"data":{"u64":"8808582"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"mem_byte"}],"data":{"u64":"3010311"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"invoke_time_nsecs"}],"data":{"u64":"1166673"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_key_byte"}],"data":{"u64":"168"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_data_byte"}],"data":{"u64":"508"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_code_byte"}],"data":{"u64":"50032"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_emit_event_byte"}],"data":{"u64":"244"}}}}}]}}},"events":{"contract_events":[],"diagnostic_events":[{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_call"},{"bytes":"eb0aa9d8d625796902fa9be6341291de077e8dd523a7378e46a4a6152da8183b"},{"symbol":"submit"}],"data":{"vec":[{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"vec":[{"map":[{"key":{"symbol":"address"},"val":{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"}},{"key":{"symbol":"amount"},"val":{"i128":"10000990"}},{"key":{"symbol":"request_type"},"val":{"u32":3}}]}]}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","type_":"contract","body":{"v0":{"topics":[{"symbol":"withdraw_collateral"},{"address":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"}],"data":{"vec":[{"i128":"10000990"},{"i128":"8933481"}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_call"},{"bytes":"adefce59aee52968f76061d494c2525b75659fa4296a65f499ef29e56477e496"},{"symbol":"transfer"}],"data":{"vec":[{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"i128":"10000990"}]}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","type_":"contract","body":{"v0":{"topics":[{"symbol":"transfer"},{"address":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP"},{"address":"GBQUFZ3QRIP6VQ74BV6KJGBEJ7YFE4WGRCB4YCMGTXFEMYLXNI2CC2AK"},{"string":"USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN"}],"data":{"i128":"10000990"}}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_return"},{"symbol":"transfer"}],"data":"void"}}}},{"in_successful_contract_call":true,"event":{"ext":"v0","contract_id":"CDVQVKOY2YSXS2IC7KN6MNASSHPAO7UN2UR2ON4OI2SKMFJNVAMDX6DP","type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"fn_return"},{"symbol":"submit"}],"data":{"map":[{"key":{"symbol":"collateral"},"val":{"map":[]}},{"key":{"symbol":"liabilities"},"val":{"map":[]}},{"key":{"symbol":"supply"},"val":{"map":[]}}]}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_entry"}],"data":{"u64":"11"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_entry"}],"data":{"u64":"5"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_read_byte"}],"data":{"u64":"53060"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"ledger_write_byte"}],"data":{"u64":"1276"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_key_byte"}],"data":{"u64":"1008"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_key_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_data_byte"}],"data":{"u64":"3028"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_data_byte"}],"data":{"u64":"1276"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"read_code_byte"}],"data":{"u64":"50032"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"write_code_byte"}],"data":{"u64":"0"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event"}],"data":{"u64":"2"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"emit_event_byte"}],"data":{"u64":"460"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"cpu_insn"}],"data":{"u64":"8808582"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"mem_byte"}],"data":{"u64":"3010311"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"invoke_time_nsecs"}],"data":{"u64":"1166673"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_key_byte"}],"data":{"u64":"168"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_data_byte"}],"data":{"u64":"508"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_rw_code_byte"}],"data":{"u64":"50032"}}}}},{"in_successful_contract_call":false,"event":{"ext":"v0","contract_id":null,"type_":"diagnostic","body":{"v0":{"topics":[{"symbol":"core_metrics"},{"symbol":"max_emit_event_byte"}],"data":{"u64":"244"}}}}}],"transaction_events":[]}}"#;
544}