1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
use serde::{Deserialize, Serialize};

use crate::ActionMetadataAddLiquidity;
use crate::ActionMetadataRefund;
use crate::ActionMetadataSwap;
use crate::ActionMetadataWithdraw;

/*

*** Action Metadata Scheme ***

{
	"swap": Option<ActionMetadataSwap>,
	"addLiquidity": Option<ActionMetadataAddLiquidity>,
		"withdraw": Option<ActionMetadataWithdraw>,
		"refund": Option<ActionMetadataRefund>,
}
*/

#[derive(Debug, Serialize, Deserialize, Clone, Default)]
pub struct ActionMetadata {
	swap: Option<ActionMetadataSwap>,

	#[serde(rename = "addLiquidity")]
	add_liquidity: Option<ActionMetadataAddLiquidity>,

	withdraw: Option<ActionMetadataWithdraw>,

	refund: Option<ActionMetadataRefund>,
}

impl ActionMetadata {
	#[must_use]
	pub const fn get_swap(&self) -> &Option<ActionMetadataSwap> {
		&self.swap
	}

	#[must_use]
	pub const fn get_add_liquidity(&self) -> &Option<ActionMetadataAddLiquidity> {
		&self.add_liquidity
	}

	#[must_use]
	pub const fn get_withdraw(&self) -> &Option<ActionMetadataWithdraw> {
		&self.withdraw
	}

	#[must_use]
	pub const fn get_refund(&self) -> &Option<ActionMetadataRefund> {
		&self.refund
	}
}