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::IdentityKeyLimitsUpdateAction(
61 identity_key_limits_update_transition,
62 ) => identity_key_limits_update_transition
63 .into_high_level_drive_operations(epoch, platform_version),
64 StateTransitionAction::IdentityCreditTransferAction(
65 identity_credit_transfer_transition,
66 ) => identity_credit_transfer_transition
67 .into_high_level_drive_operations(epoch, platform_version),
68 StateTransitionAction::MasternodeVoteAction(masternode_vote_transition) => {
69 masternode_vote_transition.into_high_level_drive_operations(epoch, platform_version)
70 }
71 StateTransitionAction::BumpIdentityNonceAction(bump_identity_nonce_transition) => {
72 bump_identity_nonce_transition
73 .into_high_level_drive_operations(epoch, platform_version)
74 }
75 StateTransitionAction::BumpIdentityDataContractNonceAction(
76 bump_identity_data_contract_nonce_transition,
77 ) => bump_identity_data_contract_nonce_transition
78 .into_high_level_drive_operations(epoch, platform_version),
79 StateTransitionAction::PartiallyUseAssetLockAction(
80 partially_used_asset_lock_action,
81 ) => partially_used_asset_lock_action
82 .into_high_level_drive_operations(epoch, platform_version),
83 StateTransitionAction::IdentityCreateFromAddressesAction(
84 identity_create_from_addresses_transition,
85 ) => identity_create_from_addresses_transition
86 .into_high_level_drive_operations(epoch, platform_version),
87
88 StateTransitionAction::IdentityTopUpFromAddressesAction(
89 identity_top_up_from_addresses_transition,
90 ) => identity_top_up_from_addresses_transition
91 .into_high_level_drive_operations(epoch, platform_version),
92
93 StateTransitionAction::IdentityCreditTransferToAddressesAction(
94 identity_credit_transfer_to_addresses_transition,
95 ) => identity_credit_transfer_to_addresses_transition
96 .into_high_level_drive_operations(epoch, platform_version),
97
98 StateTransitionAction::AddressFundsTransfer(address_funds_transfer_transition) => {
99 address_funds_transfer_transition
100 .into_high_level_drive_operations(epoch, platform_version)
101 }
102 StateTransitionAction::BumpAddressInputNoncesAction(
103 bump_address_input_nonces_action,
104 ) => bump_address_input_nonces_action
105 .into_high_level_drive_operations(epoch, platform_version),
106 StateTransitionAction::AddressCreditWithdrawal(address_credit_withdrawal) => {
107 address_credit_withdrawal.into_high_level_drive_operations(epoch, platform_version)
108 }
109
110 StateTransitionAction::AddressFundingFromAssetLock(address_funding_from_asset_lock) => {
111 address_funding_from_asset_lock
112 .into_high_level_drive_operations(epoch, platform_version)
113 }
114 StateTransitionAction::ShieldAction(shield_action) => {
115 shield_action.into_high_level_drive_operations(epoch, platform_version)
116 }
117 StateTransitionAction::ShieldFromIdentityAction(action) => {
118 action.into_high_level_drive_operations(epoch, platform_version)
119 }
120 StateTransitionAction::IdentityTopUpFromShieldedPoolAction(action) => {
121 action.into_high_level_drive_operations(epoch, platform_version)
122 }
123 StateTransitionAction::ShieldedTransferAction(shielded_transfer_action) => {
124 shielded_transfer_action.into_high_level_drive_operations(epoch, platform_version)
125 }
126 StateTransitionAction::UnshieldAction(unshield_action) => {
127 unshield_action.into_high_level_drive_operations(epoch, platform_version)
128 }
129 StateTransitionAction::ShieldFromAssetLockAction(shield_from_asset_lock_action) => {
130 shield_from_asset_lock_action
131 .into_high_level_drive_operations(epoch, platform_version)
132 }
133 StateTransitionAction::ShieldedWithdrawalAction(shielded_withdrawal_action) => {
134 shielded_withdrawal_action.into_high_level_drive_operations(epoch, platform_version)
135 }
136 StateTransitionAction::IdentityCreateFromShieldedPoolAction(
137 identity_create_from_shielded_pool_action,
138 ) => identity_create_from_shielded_pool_action
139 .into_high_level_drive_operations(epoch, platform_version),
140 }
141 }
142}