use alloc::string::String;
use keetanetwork_client::SwapExpectation as Core;
use wasm_bindgen::prelude::wasm_bindgen;
use crate::account::Account;
use crate::convert::{parse_amount, JsResult};
#[wasm_bindgen]
#[derive(Default)]
pub struct SwapExpectation {
inner: Core,
}
#[wasm_bindgen]
impl SwapExpectation {
#[wasm_bindgen(constructor)]
pub fn new() -> SwapExpectation {
Self::default()
}
#[wasm_bindgen(js_name = setReceiveToken)]
pub fn set_receive_token(&mut self, token: &Account) {
self.inner
.receive
.get_or_insert_with(Default::default)
.token = Some(token.inner());
}
#[wasm_bindgen(js_name = setReceiveAmount)]
pub fn set_receive_amount(&mut self, amount: String) -> JsResult<()> {
self.inner
.receive
.get_or_insert_with(Default::default)
.amount = Some(parse_amount(&amount)?);
Ok(())
}
#[wasm_bindgen(js_name = setSendToken)]
pub fn set_send_token(&mut self, token: &Account) {
self.inner.send.get_or_insert_with(Default::default).token = Some(token.inner());
}
#[wasm_bindgen(js_name = setSendAmount)]
pub fn set_send_amount(&mut self, amount: String) -> JsResult<()> {
self.inner.send.get_or_insert_with(Default::default).amount = Some(parse_amount(&amount)?);
Ok(())
}
}
impl SwapExpectation {
pub(crate) fn to_core(&self) -> Core {
self.inner.clone()
}
}