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_topup::IdentityTopUpTransitionAction;
29use crate::state_transition_action::identity::identity_topup_from_addresses::IdentityTopUpFromAddressesTransitionAction;
30use crate::state_transition_action::identity::identity_update::IdentityUpdateTransitionAction;
31use crate::state_transition_action::identity::masternode_vote::MasternodeVoteTransitionAction;
32use crate::state_transition_action::shielded::shield::ShieldTransitionAction;
33use crate::state_transition_action::shielded::shield_from_asset_lock::ShieldFromAssetLockTransitionAction;
34use crate::state_transition_action::shielded::shielded_transfer::ShieldedTransferTransitionAction;
35use crate::state_transition_action::shielded::shielded_withdrawal::ShieldedWithdrawalTransitionAction;
36use crate::state_transition_action::shielded::unshield::UnshieldTransitionAction;
37use crate::state_transition_action::system::bump_address_input_nonces_action::{
38 BumpAddressInputNonceActionAccessorsV0, BumpAddressInputNoncesAction,
39};
40use crate::state_transition_action::system::bump_identity_data_contract_nonce_action::{
41 BumpIdentityDataContractNonceAction, BumpIdentityDataContractNonceActionAccessorsV0,
42};
43use crate::state_transition_action::system::bump_identity_nonce_action::{
44 BumpIdentityNonceAction, BumpIdentityNonceActionAccessorsV0,
45};
46use crate::state_transition_action::system::partially_use_asset_lock_action::{
47 PartiallyUseAssetLockAction, PartiallyUseAssetLockActionAccessorsV0,
48};
49use derive_more::From;
50use dpp::prelude::UserFeeIncrease;
51
52#[allow(clippy::large_enum_variant)]
54#[derive(Debug, Clone, From)]
55pub enum StateTransitionAction {
56 DataContractCreateAction(DataContractCreateTransitionAction),
58 DataContractUpdateAction(DataContractUpdateTransitionAction),
60 BatchAction(BatchTransitionAction),
62 IdentityCreateAction(IdentityCreateTransitionAction),
64 IdentityCreateFromAddressesAction(IdentityCreateFromAddressesTransitionAction),
66 IdentityTopUpAction(IdentityTopUpTransitionAction),
68 IdentityTopUpFromAddressesAction(IdentityTopUpFromAddressesTransitionAction),
70 IdentityCreditWithdrawalAction(IdentityCreditWithdrawalTransitionAction),
72 IdentityUpdateAction(IdentityUpdateTransitionAction),
74 IdentityCreditTransferAction(IdentityCreditTransferTransitionAction),
76 IdentityCreditTransferToAddressesAction(IdentityCreditTransferToAddressesTransitionAction),
78 AddressFundsTransfer(AddressFundsTransferTransitionAction),
80 AddressCreditWithdrawal(AddressCreditWithdrawalTransitionAction),
82 AddressFundingFromAssetLock(AddressFundingFromAssetLockTransitionAction),
84 MasternodeVoteAction(MasternodeVoteTransitionAction),
86 BumpIdentityNonceAction(BumpIdentityNonceAction),
90 BumpIdentityDataContractNonceAction(BumpIdentityDataContractNonceAction),
94 PartiallyUseAssetLockAction(PartiallyUseAssetLockAction),
97 BumpAddressInputNoncesAction(BumpAddressInputNoncesAction),
100 ShieldAction(ShieldTransitionAction),
102 ShieldedTransferAction(ShieldedTransferTransitionAction),
104 UnshieldAction(UnshieldTransitionAction),
106 ShieldFromAssetLockAction(ShieldFromAssetLockTransitionAction),
108 ShieldedWithdrawalAction(ShieldedWithdrawalTransitionAction),
110}
111
112impl StateTransitionAction {
113 pub fn user_fee_increase(&self) -> UserFeeIncrease {
115 match self {
116 StateTransitionAction::DataContractCreateAction(action) => action.user_fee_increase(),
117 StateTransitionAction::DataContractUpdateAction(action) => action.user_fee_increase(),
118 StateTransitionAction::BatchAction(action) => action.user_fee_increase(),
119 StateTransitionAction::IdentityCreateAction(action) => action.user_fee_increase(),
120 StateTransitionAction::IdentityTopUpAction(action) => action.user_fee_increase(),
121 StateTransitionAction::IdentityCreditWithdrawalAction(action) => {
122 action.user_fee_increase()
123 }
124 StateTransitionAction::IdentityUpdateAction(action) => action.user_fee_increase(),
125 StateTransitionAction::IdentityCreditTransferAction(action) => {
126 action.user_fee_increase()
127 }
128 StateTransitionAction::BumpIdentityNonceAction(action) => action.user_fee_increase(),
129 StateTransitionAction::BumpIdentityDataContractNonceAction(action) => {
130 action.user_fee_increase()
131 }
132 StateTransitionAction::PartiallyUseAssetLockAction(action) => {
133 action.user_fee_increase()
134 }
135 StateTransitionAction::MasternodeVoteAction(_) => {
136 UserFeeIncrease::default() }
138 StateTransitionAction::IdentityCreateFromAddressesAction(action) => {
139 action.user_fee_increase()
140 }
141 StateTransitionAction::IdentityTopUpFromAddressesAction(action) => {
142 action.user_fee_increase()
143 }
144 StateTransitionAction::IdentityCreditTransferToAddressesAction(action) => {
145 action.user_fee_increase()
146 }
147 StateTransitionAction::AddressFundsTransfer(action) => action.user_fee_increase(),
148 StateTransitionAction::AddressCreditWithdrawal(action) => action.user_fee_increase(),
149 StateTransitionAction::AddressFundingFromAssetLock(action) => {
150 action.user_fee_increase()
151 }
152 StateTransitionAction::BumpAddressInputNoncesAction(action) => {
153 action.user_fee_increase()
154 }
155 StateTransitionAction::ShieldAction(action) => action.user_fee_increase(),
156 StateTransitionAction::ShieldedTransferAction(_) => {
157 UserFeeIncrease::default() }
159 StateTransitionAction::UnshieldAction(_) => {
160 UserFeeIncrease::default() }
162 StateTransitionAction::ShieldFromAssetLockAction(_) => {
163 UserFeeIncrease::default() }
165 StateTransitionAction::ShieldedWithdrawalAction(_) => {
166 UserFeeIncrease::default() }
168 }
169 }
170}