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::contract_fee_claim::ContractFeeClaimTransitionAction;
22use crate::state_transition_action::contract::contract_user_moderation::ContractUserModerationTransitionAction;
23use crate::state_transition_action::contract::data_contract_create::DataContractCreateTransitionAction;
24use crate::state_transition_action::contract::data_contract_update::DataContractUpdateTransitionAction;
25use crate::state_transition_action::identity::identity_create::IdentityCreateTransitionAction;
26use crate::state_transition_action::identity::identity_create_from_addresses::IdentityCreateFromAddressesTransitionAction;
27use crate::state_transition_action::identity::identity_credit_transfer::IdentityCreditTransferTransitionAction;
28use crate::state_transition_action::identity::identity_credit_transfer_to_addresses::IdentityCreditTransferToAddressesTransitionAction;
29use crate::state_transition_action::identity::identity_credit_withdrawal::IdentityCreditWithdrawalTransitionAction;
30use crate::state_transition_action::identity::identity_key_limits_update::IdentityKeyLimitsUpdateTransitionAction;
31use crate::state_transition_action::identity::identity_topup::IdentityTopUpTransitionAction;
32use crate::state_transition_action::identity::identity_topup_from_addresses::IdentityTopUpFromAddressesTransitionAction;
33use crate::state_transition_action::identity::identity_update::IdentityUpdateTransitionAction;
34use crate::state_transition_action::identity::masternode_vote::MasternodeVoteTransitionAction;
35use crate::state_transition_action::shielded::identity_create_from_shielded_pool::IdentityCreateFromShieldedPoolTransitionAction;
36use crate::state_transition_action::shielded::identity_top_up_from_shielded_pool::IdentityTopUpFromShieldedPoolTransitionAction;
37use crate::state_transition_action::shielded::shield::ShieldTransitionAction;
38use crate::state_transition_action::shielded::shield_from_asset_lock::ShieldFromAssetLockTransitionAction;
39use crate::state_transition_action::shielded::shield_from_identity::ShieldFromIdentityTransitionAction;
40use crate::state_transition_action::shielded::shielded_transfer::ShieldedTransferTransitionAction;
41use crate::state_transition_action::shielded::shielded_withdrawal::ShieldedWithdrawalTransitionAction;
42use crate::state_transition_action::shielded::token_purchase_from_shielded_pool::TokenPurchaseFromShieldedPoolTransitionAction;
43use crate::state_transition_action::shielded::token_shielded_transfer_with_shielded_fee::TokenShieldedTransferWithShieldedFeeTransitionAction;
44use crate::state_transition_action::shielded::token_unshield_with_shielded_fee::TokenUnshieldWithShieldedFeeTransitionAction;
45use crate::state_transition_action::shielded::unshield::UnshieldTransitionAction;
46use crate::state_transition_action::system::bump_address_input_nonces_action::{
47 BumpAddressInputNonceActionAccessorsV0, BumpAddressInputNoncesAction,
48};
49use crate::state_transition_action::system::bump_identity_data_contract_nonce_action::{
50 BumpIdentityDataContractNonceAction, BumpIdentityDataContractNonceActionAccessorsV0,
51};
52use crate::state_transition_action::system::bump_identity_nonce_action::{
53 BumpIdentityNonceAction, BumpIdentityNonceActionAccessorsV0,
54};
55use crate::state_transition_action::system::partially_use_asset_lock_action::{
56 PartiallyUseAssetLockAction, PartiallyUseAssetLockActionAccessorsV0,
57};
58use derive_more::From;
59use dpp::prelude::UserFeeIncrease;
60
61#[allow(clippy::large_enum_variant)]
63#[derive(Debug, Clone, From)]
64pub enum StateTransitionAction {
65 DataContractCreateAction(DataContractCreateTransitionAction),
67 DataContractUpdateAction(DataContractUpdateTransitionAction),
69 BatchAction(BatchTransitionAction),
71 IdentityCreateAction(IdentityCreateTransitionAction),
73 IdentityCreateFromAddressesAction(IdentityCreateFromAddressesTransitionAction),
75 IdentityTopUpAction(IdentityTopUpTransitionAction),
77 IdentityTopUpFromAddressesAction(IdentityTopUpFromAddressesTransitionAction),
79 IdentityCreditWithdrawalAction(IdentityCreditWithdrawalTransitionAction),
81 IdentityUpdateAction(IdentityUpdateTransitionAction),
83 IdentityKeyLimitsUpdateAction(IdentityKeyLimitsUpdateTransitionAction),
85 IdentityCreditTransferAction(IdentityCreditTransferTransitionAction),
87 IdentityCreditTransferToAddressesAction(IdentityCreditTransferToAddressesTransitionAction),
89 AddressFundsTransfer(AddressFundsTransferTransitionAction),
91 AddressCreditWithdrawal(AddressCreditWithdrawalTransitionAction),
93 AddressFundingFromAssetLock(AddressFundingFromAssetLockTransitionAction),
95 MasternodeVoteAction(MasternodeVoteTransitionAction),
97 BumpIdentityNonceAction(BumpIdentityNonceAction),
101 BumpIdentityDataContractNonceAction(BumpIdentityDataContractNonceAction),
105 PartiallyUseAssetLockAction(PartiallyUseAssetLockAction),
108 BumpAddressInputNoncesAction(BumpAddressInputNoncesAction),
111 ShieldAction(ShieldTransitionAction),
113 ShieldedTransferAction(ShieldedTransferTransitionAction),
115 UnshieldAction(UnshieldTransitionAction),
117 ShieldFromAssetLockAction(ShieldFromAssetLockTransitionAction),
119 ShieldedWithdrawalAction(ShieldedWithdrawalTransitionAction),
121 IdentityCreateFromShieldedPoolAction(IdentityCreateFromShieldedPoolTransitionAction),
123 ShieldFromIdentityAction(ShieldFromIdentityTransitionAction),
125 IdentityTopUpFromShieldedPoolAction(IdentityTopUpFromShieldedPoolTransitionAction),
127 ContractUserModerationAction(ContractUserModerationTransitionAction),
129 ContractFeeClaimAction(ContractFeeClaimTransitionAction),
131 TokenShieldedTransferWithShieldedFeeAction(
133 TokenShieldedTransferWithShieldedFeeTransitionAction,
134 ),
135 TokenUnshieldWithShieldedFeeAction(TokenUnshieldWithShieldedFeeTransitionAction),
137 TokenPurchaseFromShieldedPoolAction(TokenPurchaseFromShieldedPoolTransitionAction),
139}
140
141impl StateTransitionAction {
142 pub fn user_fee_increase(&self) -> UserFeeIncrease {
144 match self {
145 StateTransitionAction::DataContractCreateAction(action) => action.user_fee_increase(),
146 StateTransitionAction::DataContractUpdateAction(action) => action.user_fee_increase(),
147 StateTransitionAction::ContractUserModerationAction(action) => {
148 action.user_fee_increase()
149 }
150 StateTransitionAction::ContractFeeClaimAction(action) => action.user_fee_increase(),
151 StateTransitionAction::BatchAction(action) => action.user_fee_increase(),
152 StateTransitionAction::IdentityCreateAction(action) => action.user_fee_increase(),
153 StateTransitionAction::IdentityTopUpAction(action) => action.user_fee_increase(),
154 StateTransitionAction::IdentityCreditWithdrawalAction(action) => {
155 action.user_fee_increase()
156 }
157 StateTransitionAction::IdentityUpdateAction(action) => action.user_fee_increase(),
158 StateTransitionAction::IdentityKeyLimitsUpdateAction(action) => {
159 action.user_fee_increase()
160 }
161 StateTransitionAction::IdentityCreditTransferAction(action) => {
162 action.user_fee_increase()
163 }
164 StateTransitionAction::BumpIdentityNonceAction(action) => action.user_fee_increase(),
165 StateTransitionAction::BumpIdentityDataContractNonceAction(action) => {
166 action.user_fee_increase()
167 }
168 StateTransitionAction::PartiallyUseAssetLockAction(action) => {
169 action.user_fee_increase()
170 }
171 StateTransitionAction::MasternodeVoteAction(_) => {
172 UserFeeIncrease::default() }
174 StateTransitionAction::IdentityCreateFromAddressesAction(action) => {
175 action.user_fee_increase()
176 }
177 StateTransitionAction::IdentityTopUpFromAddressesAction(action) => {
178 action.user_fee_increase()
179 }
180 StateTransitionAction::IdentityCreditTransferToAddressesAction(action) => {
181 action.user_fee_increase()
182 }
183 StateTransitionAction::AddressFundsTransfer(action) => action.user_fee_increase(),
184 StateTransitionAction::AddressCreditWithdrawal(action) => action.user_fee_increase(),
185 StateTransitionAction::AddressFundingFromAssetLock(action) => {
186 action.user_fee_increase()
187 }
188 StateTransitionAction::BumpAddressInputNoncesAction(action) => {
189 action.user_fee_increase()
190 }
191 StateTransitionAction::ShieldAction(action) => action.user_fee_increase(),
192 StateTransitionAction::ShieldedTransferAction(_) => {
193 UserFeeIncrease::default() }
195 StateTransitionAction::UnshieldAction(_) => {
196 UserFeeIncrease::default() }
198 StateTransitionAction::ShieldFromAssetLockAction(_) => {
199 UserFeeIncrease::default() }
201 StateTransitionAction::ShieldedWithdrawalAction(_) => {
202 UserFeeIncrease::default() }
204 StateTransitionAction::IdentityCreateFromShieldedPoolAction(_) => {
205 UserFeeIncrease::default() }
207 StateTransitionAction::ShieldFromIdentityAction(action) => action.user_fee_increase(),
208 StateTransitionAction::IdentityTopUpFromShieldedPoolAction(_) => {
209 UserFeeIncrease::default() }
211 StateTransitionAction::TokenShieldedTransferWithShieldedFeeAction(_)
212 | StateTransitionAction::TokenUnshieldWithShieldedFeeAction(_)
213 | StateTransitionAction::TokenPurchaseFromShieldedPoolAction(_) => {
214 UserFeeIncrease::default() }
216 }
217 }
218}