drive/state_transition_action/action_convert_to_operations/
mod.rs1mod address_funds;
7mod batch;
8mod contract;
9mod identity;
10mod shielded;
11mod system;
12
13use crate::error::Error;
14use crate::state_transition_action::StateTransitionAction;
15use crate::util::batch::DriveOperation;
16use dpp::block::epoch::Epoch;
17use dpp::version::PlatformVersion;
18
19pub trait DriveHighLevelOperationConverter {
21 fn into_high_level_drive_operations<'a>(
23 self,
24 epoch: &Epoch,
25 platform_version: &PlatformVersion,
26 ) -> Result<Vec<DriveOperation<'a>>, Error>;
27}
28
29impl DriveHighLevelOperationConverter for StateTransitionAction {
30 fn into_high_level_drive_operations<'a>(
31 self,
32 epoch: &Epoch,
33 platform_version: &PlatformVersion,
34 ) -> Result<Vec<DriveOperation<'a>>, Error> {
35 match self {
36 StateTransitionAction::DataContractCreateAction(data_contract_create_transition) => {
37 data_contract_create_transition
38 .into_high_level_drive_operations(epoch, platform_version)
39 }
40 StateTransitionAction::DataContractUpdateAction(data_contract_update_transition) => {
41 data_contract_update_transition
42 .into_high_level_drive_operations(epoch, platform_version)
43 }
44 StateTransitionAction::BatchAction(documents_batch_transition) => {
45 documents_batch_transition.into_high_level_drive_operations(epoch, platform_version)
46 }
47 StateTransitionAction::IdentityCreateAction(identity_create_transition) => {
48 identity_create_transition.into_high_level_drive_operations(epoch, platform_version)
49 }
50 StateTransitionAction::IdentityTopUpAction(identity_top_up_transition) => {
51 identity_top_up_transition.into_high_level_drive_operations(epoch, platform_version)
52 }
53 StateTransitionAction::IdentityCreditWithdrawalAction(
54 identity_credit_withdrawal_transition,
55 ) => identity_credit_withdrawal_transition
56 .into_high_level_drive_operations(epoch, platform_version),
57 StateTransitionAction::IdentityUpdateAction(identity_update_transition) => {
58 identity_update_transition.into_high_level_drive_operations(epoch, platform_version)
59 }
60 StateTransitionAction::ContractUserModerationAction(
61 contract_user_moderation_transition,
62 ) => contract_user_moderation_transition
63 .into_high_level_drive_operations(epoch, platform_version),
64 StateTransitionAction::ContractFeeClaimAction(contract_fee_claim_transition) => {
65 contract_fee_claim_transition
66 .into_high_level_drive_operations(epoch, platform_version)
67 }
68 StateTransitionAction::IdentityKeyLimitsUpdateAction(
69 identity_key_limits_update_transition,
70 ) => identity_key_limits_update_transition
71 .into_high_level_drive_operations(epoch, platform_version),
72 StateTransitionAction::IdentityCreditTransferAction(
73 identity_credit_transfer_transition,
74 ) => identity_credit_transfer_transition
75 .into_high_level_drive_operations(epoch, platform_version),
76 StateTransitionAction::MasternodeVoteAction(masternode_vote_transition) => {
77 masternode_vote_transition.into_high_level_drive_operations(epoch, platform_version)
78 }
79 StateTransitionAction::BumpIdentityNonceAction(bump_identity_nonce_transition) => {
80 bump_identity_nonce_transition
81 .into_high_level_drive_operations(epoch, platform_version)
82 }
83 StateTransitionAction::BumpIdentityDataContractNonceAction(
84 bump_identity_data_contract_nonce_transition,
85 ) => bump_identity_data_contract_nonce_transition
86 .into_high_level_drive_operations(epoch, platform_version),
87 StateTransitionAction::PartiallyUseAssetLockAction(
88 partially_used_asset_lock_action,
89 ) => partially_used_asset_lock_action
90 .into_high_level_drive_operations(epoch, platform_version),
91 StateTransitionAction::IdentityCreateFromAddressesAction(
92 identity_create_from_addresses_transition,
93 ) => identity_create_from_addresses_transition
94 .into_high_level_drive_operations(epoch, platform_version),
95
96 StateTransitionAction::IdentityTopUpFromAddressesAction(
97 identity_top_up_from_addresses_transition,
98 ) => identity_top_up_from_addresses_transition
99 .into_high_level_drive_operations(epoch, platform_version),
100
101 StateTransitionAction::IdentityCreditTransferToAddressesAction(
102 identity_credit_transfer_to_addresses_transition,
103 ) => identity_credit_transfer_to_addresses_transition
104 .into_high_level_drive_operations(epoch, platform_version),
105
106 StateTransitionAction::AddressFundsTransfer(address_funds_transfer_transition) => {
107 address_funds_transfer_transition
108 .into_high_level_drive_operations(epoch, platform_version)
109 }
110 StateTransitionAction::BumpAddressInputNoncesAction(
111 bump_address_input_nonces_action,
112 ) => bump_address_input_nonces_action
113 .into_high_level_drive_operations(epoch, platform_version),
114 StateTransitionAction::AddressCreditWithdrawal(address_credit_withdrawal) => {
115 address_credit_withdrawal.into_high_level_drive_operations(epoch, platform_version)
116 }
117
118 StateTransitionAction::AddressFundingFromAssetLock(address_funding_from_asset_lock) => {
119 address_funding_from_asset_lock
120 .into_high_level_drive_operations(epoch, platform_version)
121 }
122 StateTransitionAction::ShieldAction(shield_action) => {
123 shield_action.into_high_level_drive_operations(epoch, platform_version)
124 }
125 StateTransitionAction::ShieldFromIdentityAction(action) => {
126 action.into_high_level_drive_operations(epoch, platform_version)
127 }
128 StateTransitionAction::IdentityTopUpFromShieldedPoolAction(action) => {
129 action.into_high_level_drive_operations(epoch, platform_version)
130 }
131 StateTransitionAction::TokenShieldedTransferWithShieldedFeeAction(action) => {
132 action.into_high_level_drive_operations(epoch, platform_version)
133 }
134 StateTransitionAction::TokenUnshieldWithShieldedFeeAction(action) => {
135 action.into_high_level_drive_operations(epoch, platform_version)
136 }
137 StateTransitionAction::TokenPurchaseFromShieldedPoolAction(action) => {
138 action.into_high_level_drive_operations(epoch, platform_version)
139 }
140 StateTransitionAction::ShieldedTransferAction(shielded_transfer_action) => {
141 shielded_transfer_action.into_high_level_drive_operations(epoch, platform_version)
142 }
143 StateTransitionAction::UnshieldAction(unshield_action) => {
144 unshield_action.into_high_level_drive_operations(epoch, platform_version)
145 }
146 StateTransitionAction::ShieldFromAssetLockAction(shield_from_asset_lock_action) => {
147 shield_from_asset_lock_action
148 .into_high_level_drive_operations(epoch, platform_version)
149 }
150 StateTransitionAction::ShieldedWithdrawalAction(shielded_withdrawal_action) => {
151 shielded_withdrawal_action.into_high_level_drive_operations(epoch, platform_version)
152 }
153 StateTransitionAction::IdentityCreateFromShieldedPoolAction(
154 identity_create_from_shielded_pool_action,
155 ) => identity_create_from_shielded_pool_action
156 .into_high_level_drive_operations(epoch, platform_version),
157 }
158 }
159}