nut05.rs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. use std::ops::Deref;
  2. use cashu::nuts::nut05::{CheckFeesRequest, CheckFeesResponse};
  3. use wasm_bindgen::prelude::*;
  4. use crate::error::Result;
  5. use crate::types::{JsAmount, JsBolt11Invoice};
  6. #[wasm_bindgen(js_name = CheckFeesRequest)]
  7. pub struct JsCheckFeesRequest {
  8. inner: CheckFeesRequest,
  9. }
  10. impl Deref for JsCheckFeesRequest {
  11. type Target = CheckFeesRequest;
  12. fn deref(&self) -> &Self::Target {
  13. &self.inner
  14. }
  15. }
  16. impl From<CheckFeesRequest> for JsCheckFeesRequest {
  17. fn from(inner: CheckFeesRequest) -> JsCheckFeesRequest {
  18. JsCheckFeesRequest { inner }
  19. }
  20. }
  21. #[wasm_bindgen(js_class = CheckFeesRequest)]
  22. impl JsCheckFeesRequest {
  23. #[wasm_bindgen(constructor)]
  24. pub fn new(invoice: JsBolt11Invoice) -> Result<JsCheckFeesRequest> {
  25. Ok(JsCheckFeesRequest {
  26. inner: CheckFeesRequest {
  27. pr: invoice.clone(),
  28. },
  29. })
  30. }
  31. /// Get Amount
  32. #[wasm_bindgen(getter)]
  33. pub fn invoice(&self) -> JsBolt11Invoice {
  34. self.inner.pr.clone().into()
  35. }
  36. }
  37. #[wasm_bindgen(js_name = CheckFeesResponse)]
  38. pub struct JsCheckFeesResponse {
  39. inner: CheckFeesResponse,
  40. }
  41. impl Deref for JsCheckFeesResponse {
  42. type Target = CheckFeesResponse;
  43. fn deref(&self) -> &Self::Target {
  44. &self.inner
  45. }
  46. }
  47. impl From<CheckFeesResponse> for JsCheckFeesResponse {
  48. fn from(inner: CheckFeesResponse) -> JsCheckFeesResponse {
  49. JsCheckFeesResponse { inner }
  50. }
  51. }
  52. #[wasm_bindgen(js_class = CheckFeesResponse)]
  53. impl JsCheckFeesResponse {
  54. #[wasm_bindgen(constructor)]
  55. pub fn new(amount: JsAmount) -> Result<JsCheckFeesResponse> {
  56. Ok(JsCheckFeesResponse {
  57. inner: CheckFeesResponse {
  58. fee: *amount.deref(),
  59. },
  60. })
  61. }
  62. /// Get Amount
  63. #[wasm_bindgen(getter)]
  64. pub fn amount(&self) -> JsAmount {
  65. self.inner.fee.into()
  66. }
  67. }