|
@@ -2,7 +2,7 @@ use std::ops::Deref;
|
|
|
use std::str::FromStr;
|
|
|
use std::sync::Arc;
|
|
|
|
|
|
-use cdk::nuts::SigningKey;
|
|
|
+use cdk::nuts::{Proofs, SigningKey};
|
|
|
use cdk::url::UncheckedUrl;
|
|
|
use cdk::wallet::Wallet;
|
|
|
use cdk::{Amount, HttpClient};
|
|
@@ -12,7 +12,7 @@ use wasm_bindgen::prelude::*;
|
|
|
use crate::error::{into_err, Result};
|
|
|
use crate::nuts::nut11::JsP2PKSpendingConditions;
|
|
|
use crate::nuts::nut14::JsHTLCSpendingConditions;
|
|
|
-use crate::nuts::{JsCurrencyUnit, JsMintInfo};
|
|
|
+use crate::nuts::{JsCurrencyUnit, JsMintInfo, JsProof};
|
|
|
use crate::types::melt_quote::JsMeltQuote;
|
|
|
use crate::types::{JsAmount, JsMelted, JsMintQuote};
|
|
|
|
|
@@ -184,4 +184,44 @@ impl JsWallet {
|
|
|
.await
|
|
|
.map_err(into_err)
|
|
|
}
|
|
|
+
|
|
|
+ #[wasm_bindgen(js_name = swap)]
|
|
|
+ pub async fn swap(
|
|
|
+ &mut self,
|
|
|
+ mint_url: String,
|
|
|
+ unit: JsCurrencyUnit,
|
|
|
+ amount: u64,
|
|
|
+ input_proofs: Vec<JsProof>,
|
|
|
+ p2pk_condition: Option<JsP2PKSpendingConditions>,
|
|
|
+ htlc_condition: Option<JsHTLCSpendingConditions>,
|
|
|
+ ) -> Result<JsValue> {
|
|
|
+ let conditions = match (p2pk_condition, htlc_condition) {
|
|
|
+ (Some(_), Some(_)) => {
|
|
|
+ return Err(JsValue::from_str(
|
|
|
+ "Cannot define both p2pk and htlc conditions",
|
|
|
+ ));
|
|
|
+ }
|
|
|
+ (None, Some(htlc_condition)) => Some(htlc_condition.deref().clone()),
|
|
|
+ (Some(p2pk_condition), None) => Some(p2pk_condition.deref().clone()),
|
|
|
+ (None, None) => None,
|
|
|
+ };
|
|
|
+
|
|
|
+ let mint_url = UncheckedUrl::from_str(&mint_url).map_err(into_err)?;
|
|
|
+
|
|
|
+ let proofs: Proofs = input_proofs.iter().map(|p| p.deref()).cloned().collect();
|
|
|
+
|
|
|
+ let post_swap_proofs = self
|
|
|
+ .inner
|
|
|
+ .swap(
|
|
|
+ &mint_url,
|
|
|
+ &unit.into(),
|
|
|
+ Some(Amount::from(amount)),
|
|
|
+ proofs,
|
|
|
+ conditions,
|
|
|
+ )
|
|
|
+ .await
|
|
|
+ .map_err(into_err)?;
|
|
|
+
|
|
|
+ Ok(serde_wasm_bindgen::to_value(&post_swap_proofs)?)
|
|
|
+ }
|
|
|
}
|