1pub 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}