gmsol_sdk/js/simulation/
deposit.rs1use serde::{Deserialize, Serialize};
4use tsify_next::Tsify;
5use wasm_bindgen::prelude::*;
6
7use crate::{
8 js::{instructions::create_deposit::CreateDepositParamsJs, simulation::encode_borsh_base64},
9 simulation::deposit::DepositSimulationOutput,
10};
11
12#[derive(Debug, Serialize, Deserialize, Tsify)]
14#[tsify(into_wasm_abi, from_wasm_abi)]
15pub struct SimulateDepositArgs {
16 pub(crate) params: CreateDepositParamsJs,
17}
18
19#[wasm_bindgen(js_name = DepositSimulationOutput)]
21pub struct JsDepositSimulationOutput {
22 pub(crate) output: DepositSimulationOutput,
23}
24
25#[wasm_bindgen(js_class = DepositSimulationOutput)]
26impl JsDepositSimulationOutput {
27 pub fn report(&self) -> crate::Result<String> {
29 encode_borsh_base64(self.output.report())
30 }
31
32 pub fn long_swaps(&self) -> crate::Result<Vec<String>> {
34 self.output
35 .long_swaps()
36 .iter()
37 .map(encode_borsh_base64)
38 .collect()
39 }
40
41 pub fn short_swaps(&self) -> crate::Result<Vec<String>> {
43 self.output
44 .short_swaps()
45 .iter()
46 .map(encode_borsh_base64)
47 .collect()
48 }
49}