blinded_message.rs 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. use std::ops::Deref;
  2. use cashu::nuts::nut00::BlindedMessage;
  3. use wasm_bindgen::prelude::*;
  4. use crate::nuts::nut01::JsPublicKey;
  5. use crate::nuts::nut02::JsId;
  6. use crate::types::amount::JsAmount;
  7. #[wasm_bindgen(js_name = BlindedMessage)]
  8. pub struct JsBlindedMessage {
  9. inner: BlindedMessage,
  10. }
  11. impl Deref for JsBlindedMessage {
  12. type Target = BlindedMessage;
  13. fn deref(&self) -> &Self::Target {
  14. &self.inner
  15. }
  16. }
  17. impl From<BlindedMessage> for JsBlindedMessage {
  18. fn from(inner: BlindedMessage) -> JsBlindedMessage {
  19. JsBlindedMessage { inner }
  20. }
  21. }
  22. #[wasm_bindgen(js_class = BlindedMessage)]
  23. impl JsBlindedMessage {
  24. #[allow(clippy::new_without_default)]
  25. #[wasm_bindgen(constructor)]
  26. pub fn new(keyset_id: JsId, amount: JsAmount, b: JsPublicKey) -> Self {
  27. Self {
  28. inner: BlindedMessage {
  29. keyset_id: *keyset_id.deref(),
  30. amount: *amount.deref(),
  31. b: b.deref().clone(),
  32. },
  33. }
  34. }
  35. /// Amount
  36. #[wasm_bindgen(getter)]
  37. pub fn amount(&self) -> JsAmount {
  38. self.inner.amount.into()
  39. }
  40. /// B
  41. #[wasm_bindgen(getter)]
  42. pub fn b(&self) -> JsPublicKey {
  43. self.inner.b.clone().into()
  44. }
  45. }