Skip to main content

nil_core/market/
mod.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4pub mod fee;
5pub mod vault;
6
7use crate::market::fee::MarketFee;
8use crate::market::vault::MarketVault;
9use serde::{Deserialize, Serialize};
10
11#[derive(Clone, Debug, Default, Deserialize, Serialize)]
12#[serde(rename_all = "camelCase")]
13#[cfg_attr(feature = "typescript", derive(ts_rs::TS))]
14pub struct Market {
15  vault: MarketVault,
16  fee: MarketFee,
17}
18
19impl Market {
20  pub fn new(fee: MarketFee) -> Self {
21    Self {
22      vault: MarketVault::default(),
23      fee: fee.clamped(),
24    }
25  }
26
27  #[inline]
28  pub fn vault(&self) -> &MarketVault {
29    &self.vault
30  }
31
32  pub(crate) fn vault_mut(&mut self) -> &mut MarketVault {
33    &mut self.vault
34  }
35
36  #[inline]
37  pub fn fee(&self) -> MarketFee {
38    self.fee
39  }
40
41  pub(crate) fn fee_mut(&mut self) -> &mut MarketFee {
42    &mut self.fee
43  }
44}