Skip to main content

gmsol_sdk/js/simulation/
shift.rs

1//! Shift simulation.
2
3use serde::{Deserialize, Serialize};
4use tsify_next::Tsify;
5use wasm_bindgen::prelude::*;
6
7use crate::{
8    js::{instructions::create_shift::CreateShiftParamsJs, simulation::encode_borsh_base64},
9    simulation::shift::ShiftSimulationOutput,
10};
11
12/// Arguments for shift simulation.
13#[derive(Debug, Serialize, Deserialize, Tsify)]
14#[tsify(into_wasm_abi, from_wasm_abi)]
15pub struct SimulateShiftArgs {
16    pub(crate) params: CreateShiftParamsJs,
17}
18
19/// Simulation output for shift.
20#[wasm_bindgen(js_name = ShiftSimulationOutput)]
21pub struct JsShiftSimulationOutput {
22    pub(crate) output: ShiftSimulationOutput,
23}
24
25#[wasm_bindgen(js_class = ShiftSimulationOutput)]
26impl JsShiftSimulationOutput {
27    /// Returns the deposit report.
28    pub fn deposit_report(&self) -> crate::Result<String> {
29        encode_borsh_base64(self.output.deposit_report())
30    }
31
32    /// Returns the withdraw report.
33    pub fn withdraw_report(&self) -> crate::Result<String> {
34        encode_borsh_base64(self.output.withdraw_report())
35    }
36}