aptos_network_sdk/
bridge.rs1use crate::{Aptos, types::ContractCall, wallet::Wallet};
2use serde_json::{Value, json};
3use std::sync::Arc;
4
5pub struct SystemBridge;
7
8impl SystemBridge {
9 pub async fn bridge_asset(
11 client: Arc<Aptos>,
12 wallet: Arc<Wallet>,
13 target_chain: &str,
14 token_type: &str,
15 amount: u64,
16 recipient: &str,
17 ) -> Result<Value, String> {
18 let contract_call = ContractCall {
19 module_address: "0x1".to_string(),
20 module_name: "bridge".to_string(),
21 function_name: "transfer_to_chain".to_string(),
22 type_arguments: vec![token_type.to_string()],
23 arguments: vec![
24 json!(target_chain),
25 json!(amount.to_string()),
26 json!(recipient),
27 ],
28 };
29 crate::contract::Contract::write(client, wallet, contract_call)
30 .await
31 .map(|result| json!(result))
32 }
33
34 pub async fn claim_bridged_asset(
36 client: Arc<Aptos>,
37 wallet: Arc<Wallet>,
38 source_chain: &str,
39 transaction_hash: &str,
40 ) -> Result<Value, String> {
41 let contract_call = ContractCall {
42 module_address: "0x1".to_string(),
43 module_name: "bridge".to_string(),
44 function_name: "claim_from_chain".to_string(),
45 type_arguments: vec![],
46 arguments: vec![json!(source_chain), json!(transaction_hash)],
47 };
48 crate::contract::Contract::write(client, wallet, contract_call)
49 .await
50 .map(|result| json!(result))
51 }
52}