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