drive/state_transition_action/
mod.rs1pub mod contract;
3pub mod identity;
5
6pub mod system;
8pub mod action_convert_to_operations;
10pub mod address_funds;
12pub mod batch;
14pub mod shielded;
16
17use crate::state_transition_action::address_funds::address_credit_withdrawal::AddressCreditWithdrawalTransitionAction;
18use crate::state_transition_action::address_funds::address_funding_from_asset_lock::AddressFundingFromAssetLockTransitionAction;
19use crate::state_transition_action::address_funds::address_funds_transfer::AddressFundsTransferTransitionAction;
20use crate::state_transition_action::batch::BatchTransitionAction;
21use crate::state_transition_action::contract::data_contract_create::DataContractCreateTransitionAction;
22use crate::state_transition_action::contract::data_contract_update::DataContractUpdateTransitionAction;
23use crate::state_transition_action::identity::identity_create::IdentityCreateTransitionAction;
24use crate::state_transition_action::identity::identity_create_from_addresses::IdentityCreateFromAddressesTransitionAction;
25use crate::state_transition_action::identity::identity_credit_transfer::IdentityCreditTransferTransitionAction;
26use crate::state_transition_action::identity::identity_credit_transfer_to_addresses::IdentityCreditTransferToAddressesTransitionAction;
27use crate::state_transition_action::identity::identity_credit_withdrawal::IdentityCreditWithdrawalTransitionAction;
28use crate::state_transition_action::identity::identity_key_limits_update::IdentityKeyLimitsUpdateTransitionAction;
29use crate::state_transition_action::identity::identity_topup::IdentityTopUpTransitionAction;
30use crate::state_transition_action::identity::identity_topup_from_addresses::IdentityTopUpFromAddressesTransitionAction;
31use crate::state_transition_action::identity::identity_update::IdentityUpdateTransitionAction;
32use crate::state_transition_action::identity::masternode_vote::MasternodeVoteTransitionAction;
33use crate::state_transition_action::shielded::identity_create_from_shielded_pool::IdentityCreateFromShieldedPoolTransitionAction;
34use crate::state_transition_action::shielded::identity_top_up_from_shielded_pool::IdentityTopUpFromShieldedPoolTransitionAction;
35use crate::state_transition_action::shielded::shield::ShieldTransitionAction;
36use crate::state_transition_action::shielded::shield_from_asset_lock::ShieldFromAssetLockTransitionAction;
37use crate::state_transition_action::shielded::shield_from_identity::ShieldFromIdentityTransitionAction;
38use crate::state_transition_action::shielded::shielded_transfer::ShieldedTransferTransitionAction;
39use crate::state_transition_action::shielded::shielded_withdrawal::ShieldedWithdrawalTransitionAction;
40use crate::state_transition_action::shielded::unshield::UnshieldTransitionAction;
41use crate::state_transition_action::system::bump_address_input_nonces_action::{
42 BumpAddressInputNonceActionAccessorsV0, BumpAddressInputNoncesAction,
43};
44use crate::state_transition_action::system::bump_identity_data_contract_nonce_action::{
45 BumpIdentityDataContractNonceAction, BumpIdentityDataContractNonceActionAccessorsV0,
46};
47use crate::state_transition_action::system::bump_identity_nonce_action::{
48 BumpIdentityNonceAction, BumpIdentityNonceActionAccessorsV0,
49};
50use crate::state_transition_action::system::partially_use_asset_lock_action::{
51 PartiallyUseAssetLockAction, PartiallyUseAssetLockActionAccessorsV0,
52};
53use derive_more::From;
54use dpp::prelude::UserFeeIncrease;
55
56#[allow(clippy::large_enum_variant)]
58#[derive(Debug, Clone, From)]
59pub enum StateTransitionAction {
60 DataContractCreateAction(DataContractCreateTransitionAction),
62 DataContractUpdateAction(DataContractUpdateTransitionAction),
64 BatchAction(BatchTransitionAction),
66 IdentityCreateAction(IdentityCreateTransitionAction),
68 IdentityCreateFromAddressesAction(IdentityCreateFromAddressesTransitionAction),
70 IdentityTopUpAction(IdentityTopUpTransitionAction),
72 IdentityTopUpFromAddressesAction(IdentityTopUpFromAddressesTransitionAction),
74 IdentityCreditWithdrawalAction(IdentityCreditWithdrawalTransitionAction),
76 IdentityUpdateAction(IdentityUpdateTransitionAction),
78 IdentityKeyLimitsUpdateAction(IdentityKeyLimitsUpdateTransitionAction),
80 IdentityCreditTransferAction(IdentityCreditTransferTransitionAction),
82 IdentityCreditTransferToAddressesAction(IdentityCreditTransferToAddressesTransitionAction),
84 AddressFundsTransfer(AddressFundsTransferTransitionAction),
86 AddressCreditWithdrawal(AddressCreditWithdrawalTransitionAction),
88 AddressFundingFromAssetLock(AddressFundingFromAssetLockTransitionAction),
90 MasternodeVoteAction(MasternodeVoteTransitionAction),
92 BumpIdentityNonceAction(BumpIdentityNonceAction),
96 BumpIdentityDataContractNonceAction(BumpIdentityDataContractNonceAction),
100 PartiallyUseAssetLockAction(PartiallyUseAssetLockAction),
103 BumpAddressInputNoncesAction(BumpAddressInputNoncesAction),
106 ShieldAction(ShieldTransitionAction),
108 ShieldedTransferAction(ShieldedTransferTransitionAction),
110 UnshieldAction(UnshieldTransitionAction),
112 ShieldFromAssetLockAction(ShieldFromAssetLockTransitionAction),
114 ShieldedWithdrawalAction(ShieldedWithdrawalTransitionAction),
116 IdentityCreateFromShieldedPoolAction(IdentityCreateFromShieldedPoolTransitionAction),
118 ShieldFromIdentityAction(ShieldFromIdentityTransitionAction),
120 IdentityTopUpFromShieldedPoolAction(IdentityTopUpFromShieldedPoolTransitionAction),
122}
123
124impl StateTransitionAction {
125 pub fn user_fee_increase(&self) -> UserFeeIncrease {
127 match self {
128 StateTransitionAction::DataContractCreateAction(action) => action.user_fee_increase(),
129 StateTransitionAction::DataContractUpdateAction(action) => action.user_fee_increase(),
130 StateTransitionAction::BatchAction(action) => action.user_fee_increase(),
131 StateTransitionAction::IdentityCreateAction(action) => action.user_fee_increase(),
132 StateTransitionAction::IdentityTopUpAction(action) => action.user_fee_increase(),
133 StateTransitionAction::IdentityCreditWithdrawalAction(action) => {
134 action.user_fee_increase()
135 }
136 StateTransitionAction::IdentityUpdateAction(action) => action.user_fee_increase(),
137 StateTransitionAction::IdentityKeyLimitsUpdateAction(action) => {
138 action.user_fee_increase()
139 }
140 StateTransitionAction::IdentityCreditTransferAction(action) => {
141 action.user_fee_increase()
142 }
143 StateTransitionAction::BumpIdentityNonceAction(action) => action.user_fee_increase(),
144 StateTransitionAction::BumpIdentityDataContractNonceAction(action) => {
145 action.user_fee_increase()
146 }
147 StateTransitionAction::PartiallyUseAssetLockAction(action) => {
148 action.user_fee_increase()
149 }
150 StateTransitionAction::MasternodeVoteAction(_) => {
151 UserFeeIncrease::default() }
153 StateTransitionAction::IdentityCreateFromAddressesAction(action) => {
154 action.user_fee_increase()
155 }
156 StateTransitionAction::IdentityTopUpFromAddressesAction(action) => {
157 action.user_fee_increase()
158 }
159 StateTransitionAction::IdentityCreditTransferToAddressesAction(action) => {
160 action.user_fee_increase()
161 }
162 StateTransitionAction::AddressFundsTransfer(action) => action.user_fee_increase(),
163 StateTransitionAction::AddressCreditWithdrawal(action) => action.user_fee_increase(),
164 StateTransitionAction::AddressFundingFromAssetLock(action) => {
165 action.user_fee_increase()
166 }
167 StateTransitionAction::BumpAddressInputNoncesAction(action) => {
168 action.user_fee_increase()
169 }
170 StateTransitionAction::ShieldAction(action) => action.user_fee_increase(),
171 StateTransitionAction::ShieldedTransferAction(_) => {
172 UserFeeIncrease::default() }
174 StateTransitionAction::UnshieldAction(_) => {
175 UserFeeIncrease::default() }
177 StateTransitionAction::ShieldFromAssetLockAction(_) => {
178 UserFeeIncrease::default() }
180 StateTransitionAction::ShieldedWithdrawalAction(_) => {
181 UserFeeIncrease::default() }
183 StateTransitionAction::IdentityCreateFromShieldedPoolAction(_) => {
184 UserFeeIncrease::default() }
186 StateTransitionAction::ShieldFromIdentityAction(action) => action.user_fee_increase(),
187 StateTransitionAction::IdentityTopUpFromShieldedPoolAction(_) => {
188 UserFeeIncrease::default() }
190 }
191 }
192}