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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
use frame_support::dispatch;
use frame_support::dispatch::DispatchResult;
use frame_support::weights::Weight;
use common::SwapRulesValidation;
use crate::aliases::{AccountIdOf, AssetIdOf, PolySwapActionStructOf, TechAccountIdOf};
use crate::Config;
use crate::operations::*;
impl<T: Config> common::SwapRulesValidation<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>
for PolySwapActionStructOf<T>
where
PairSwapAction<AssetIdOf<T>, AccountIdOf<T>, TechAccountIdOf<T>>:
SwapRulesValidation<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>,
DepositLiquidityAction<AssetIdOf<T>, AccountIdOf<T>, TechAccountIdOf<T>>:
SwapRulesValidation<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>,
WithdrawLiquidityAction<AssetIdOf<T>, AccountIdOf<T>, TechAccountIdOf<T>>:
SwapRulesValidation<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>,
{
fn is_abstract_checking(&self) -> bool {
match self {
PolySwapAction::PairSwap(a) => a.is_abstract_checking(),
PolySwapAction::DepositLiquidity(a) => a.is_abstract_checking(),
PolySwapAction::WithdrawLiquidity(a) => a.is_abstract_checking(),
}
}
fn prepare_and_validate(
&mut self,
source: Option<&AccountIdOf<T>>,
base_asset_id: &AssetIdOf<T>,
) -> DispatchResult {
match self {
PolySwapAction::PairSwap(a) => a.prepare_and_validate(source, base_asset_id),
PolySwapAction::DepositLiquidity(a) => a.prepare_and_validate(source, base_asset_id),
PolySwapAction::WithdrawLiquidity(a) => a.prepare_and_validate(source, base_asset_id),
}
}
fn instant_auto_claim_used(&self) -> bool {
true
}
fn triggered_auto_claim_used(&self) -> bool {
false
}
fn is_able_to_claim(&self) -> bool {
true
}
}
impl<T: Config> common::SwapAction<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>
for PolySwapActionStructOf<T>
where
PairSwapAction<AssetIdOf<T>, AccountIdOf<T>, TechAccountIdOf<T>>:
common::SwapAction<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>,
DepositLiquidityAction<AssetIdOf<T>, AccountIdOf<T>, TechAccountIdOf<T>>:
common::SwapAction<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>,
WithdrawLiquidityAction<AssetIdOf<T>, AccountIdOf<T>, TechAccountIdOf<T>>:
common::SwapAction<AccountIdOf<T>, TechAccountIdOf<T>, AssetIdOf<T>, T>,
{
fn reserve(
&self,
source: &AccountIdOf<T>,
base_asset_id: &AssetIdOf<T>,
) -> dispatch::DispatchResult {
match self {
PolySwapAction::PairSwap(a) => a.reserve(source, base_asset_id),
PolySwapAction::DepositLiquidity(a) => a.reserve(source, base_asset_id),
PolySwapAction::WithdrawLiquidity(a) => a.reserve(source, base_asset_id),
}
}
fn claim(&self, _source: &AccountIdOf<T>) -> bool {
true
}
fn weight(&self) -> Weight {
unimplemented!()
}
fn cancel(&self, _source: &AccountIdOf<T>) {
unimplemented!()
}
}