ex3_node_types/transaction/
types.rsuse num_bigint::BigUint;
use num_traits::ToPrimitive;
use serde::{Deserialize, Serialize};
use crate::impl_from_uint_for;
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, Hash, Copy)]
pub enum TransactionType {
WalletRegister = 100,
Deposit = 200,
Withdrawal = 201,
ForceWithdrawal = 202,
WithdrawalV2 = 203,
Transfer = 300,
ResetMainSecret = 400,
CreateApiSecret = 401,
DestroyApiSecret = 402,
SubmitSpotOrder = 500,
CancelSpotOrder = 501,
AddAmmV2Liquidity = 600,
RemoveAmmV2Liquidity = 601,
RegisterAsset = 700,
UpdateGlobalWithdrawalFeeTo = 701,
UpdateAssetWithdrawalFeeTo = 702,
UpdateChainConfirmationTimes = 800,
RegisterSpotMarket = 900,
UpdateSpotMarketTradingSettings = 901,
UpdateSpotMarketInitialFeeTo = 902,
UpdateSpotMarketFeeTo = 903,
UpdateSpotMarketInitialTradingFee = 904,
UpdateSpotMarketTradingFee = 905,
ClaimSpotMarketTradingFee = 906,
UpdateSpotMarketRoyalty = 907,
ClaimSpotMarketRoyalty = 908,
AssetAccountBinding = 1000,
AssetAccountUnbinding = 1001,
SubmitMemeOrder,
CancelMemeOrder = 1101,
RegisterMemeMarket = 1200,
UpdateMemeMarketInitialTradingSettings = 1201,
UpdateMemeMarketTradingSettings = 1202,
UpdateMemeMarketInitialFeeTo = 1203,
UpdateMemeMarketFeeTo = 1204,
UpdateMemeMarketInitialTradingFee = 1205,
UpdateMemeMarketTradingFee = 1206,
ClaimMemeMarketTradingFee = 1207,
}
impl TransactionType {
pub fn iterator() -> impl Iterator<Item = TransactionType> {
[
TransactionType::WalletRegister,
TransactionType::Deposit,
TransactionType::Withdrawal,
TransactionType::ForceWithdrawal,
TransactionType::WithdrawalV2,
TransactionType::Transfer,
TransactionType::ResetMainSecret,
TransactionType::CreateApiSecret,
TransactionType::DestroyApiSecret,
TransactionType::SubmitSpotOrder,
TransactionType::CancelSpotOrder,
TransactionType::AddAmmV2Liquidity,
TransactionType::RemoveAmmV2Liquidity,
TransactionType::RegisterAsset,
TransactionType::UpdateGlobalWithdrawalFeeTo,
TransactionType::UpdateAssetWithdrawalFeeTo,
TransactionType::UpdateChainConfirmationTimes,
TransactionType::RegisterSpotMarket,
TransactionType::UpdateSpotMarketTradingSettings,
TransactionType::UpdateSpotMarketInitialFeeTo,
TransactionType::UpdateSpotMarketFeeTo,
TransactionType::UpdateSpotMarketInitialTradingFee,
TransactionType::UpdateSpotMarketTradingFee,
TransactionType::ClaimSpotMarketTradingFee,
TransactionType::UpdateSpotMarketRoyalty,
TransactionType::ClaimSpotMarketRoyalty,
TransactionType::AssetAccountBinding,
TransactionType::AssetAccountUnbinding,
TransactionType::SubmitMemeOrder,
TransactionType::CancelMemeOrder,
TransactionType::RegisterMemeMarket,
TransactionType::UpdateMemeMarketInitialTradingSettings,
TransactionType::UpdateMemeMarketTradingSettings,
TransactionType::UpdateMemeMarketInitialFeeTo,
TransactionType::UpdateMemeMarketFeeTo,
TransactionType::UpdateMemeMarketInitialTradingFee,
TransactionType::UpdateMemeMarketTradingFee,
TransactionType::ClaimMemeMarketTradingFee,
]
.iter()
.copied()
}
}
impl From<BigUint> for TransactionType {
fn from(value: BigUint) -> Self {
match value.to_u64().unwrap() {
100 => TransactionType::WalletRegister,
200 => TransactionType::Deposit,
201 => TransactionType::Withdrawal,
202 => TransactionType::ForceWithdrawal,
203 => TransactionType::WithdrawalV2,
300 => TransactionType::Transfer,
400 => TransactionType::ResetMainSecret,
401 => TransactionType::CreateApiSecret,
402 => TransactionType::DestroyApiSecret,
500 => TransactionType::SubmitSpotOrder,
501 => TransactionType::CancelSpotOrder,
600 => TransactionType::AddAmmV2Liquidity,
601 => TransactionType::RemoveAmmV2Liquidity,
700 => TransactionType::RegisterAsset,
701 => TransactionType::UpdateGlobalWithdrawalFeeTo,
702 => TransactionType::UpdateAssetWithdrawalFeeTo,
800 => TransactionType::UpdateChainConfirmationTimes,
900 => TransactionType::RegisterSpotMarket,
901 => TransactionType::UpdateSpotMarketTradingSettings,
902 => TransactionType::UpdateSpotMarketInitialFeeTo,
903 => TransactionType::UpdateSpotMarketFeeTo,
904 => TransactionType::UpdateSpotMarketInitialTradingFee,
905 => TransactionType::UpdateSpotMarketTradingFee,
906 => TransactionType::ClaimSpotMarketTradingFee,
907 => TransactionType::UpdateSpotMarketRoyalty,
908 => TransactionType::ClaimSpotMarketRoyalty,
1000 => TransactionType::AssetAccountBinding,
1001 => TransactionType::AssetAccountUnbinding,
1100 => TransactionType::SubmitMemeOrder,
1101 => TransactionType::CancelMemeOrder,
1200 => TransactionType::RegisterMemeMarket,
1201 => TransactionType::UpdateMemeMarketInitialTradingSettings,
1202 => TransactionType::UpdateMemeMarketTradingSettings,
1203 => TransactionType::UpdateMemeMarketInitialFeeTo,
1204 => TransactionType::UpdateMemeMarketFeeTo,
1205 => TransactionType::UpdateMemeMarketInitialTradingFee,
1206 => TransactionType::UpdateMemeMarketTradingFee,
1207 => TransactionType::ClaimMemeMarketTradingFee,
_ => panic!("Invalid transaction type: {}", value),
}
}
}
impl Into<BigUint> for TransactionType {
fn into(self) -> BigUint {
BigUint::from(self as u128)
}
}
impl_from_uint_for!(TransactionType, u32, u64, u128);