dpp/errors/consensus/state/
state_error.rs

1use crate::errors::ProtocolError;
2use bincode::{Decode, Encode};
3use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize};
4use thiserror::Error;
5
6use crate::consensus::state::address_funds::{AddressDoesNotExistError, AddressInvalidNonceError, AddressNotEnoughFundsError, AddressesNotEnoughFundsError};
7use crate::consensus::state::shielded::insufficient_pool_notes_error::InsufficientPoolNotesError;
8use crate::consensus::state::shielded::insufficient_shielded_fee_error::InsufficientShieldedFeeError;
9use crate::consensus::state::shielded::invalid_anchor_error::InvalidAnchorError;
10use crate::consensus::state::shielded::invalid_shielded_proof_error::InvalidShieldedProofError;
11use crate::consensus::state::shielded::nullifier_already_spent_error::NullifierAlreadySpentError;
12use crate::consensus::state::data_contract::data_contract_already_present_error::DataContractAlreadyPresentError;
13use crate::consensus::state::data_contract::data_contract_config_update_error::DataContractConfigUpdateError;
14use crate::consensus::state::data_contract::data_contract_is_readonly_error::DataContractIsReadonlyError;
15use crate::consensus::state::data_trigger::DataTriggerError;
16use crate::consensus::state::document::document_already_present_error::DocumentAlreadyPresentError;
17use crate::consensus::state::document::document_not_found_error::DocumentNotFoundError;
18use crate::consensus::state::document::document_owner_id_mismatch_error::DocumentOwnerIdMismatchError;
19use crate::consensus::state::document::document_timestamp_window_violation_error::DocumentTimestampWindowViolationError;
20use crate::consensus::state::document::document_timestamps_mismatch_error::DocumentTimestampsMismatchError;
21use crate::consensus::state::document::duplicate_unique_index_error::DuplicateUniqueIndexError;
22use crate::consensus::state::document::invalid_document_revision_error::InvalidDocumentRevisionError;
23use crate::consensus::state::identity::duplicated_identity_public_key_id_state_error::DuplicatedIdentityPublicKeyIdStateError;
24use crate::consensus::state::identity::duplicated_identity_public_key_state_error::DuplicatedIdentityPublicKeyStateError;
25use crate::consensus::state::identity::identity_public_key_is_disabled_error::IdentityPublicKeyIsDisabledError;
26use crate::consensus::state::identity::identity_public_key_is_read_only_error::IdentityPublicKeyIsReadOnlyError;
27use crate::consensus::state::identity::invalid_identity_public_key_id_error::InvalidIdentityPublicKeyIdError;
28use crate::consensus::state::identity::invalid_identity_revision_error::InvalidIdentityRevisionError;
29use crate::consensus::state::identity::max_identity_public_key_limit_reached_error::MaxIdentityPublicKeyLimitReachedError;
30use crate::consensus::state::identity::missing_identity_public_key_ids_error::MissingIdentityPublicKeyIdsError;
31use crate::consensus::state::identity::{IdentityAlreadyExistsError, IdentityInsufficientBalanceError, RecipientIdentityDoesNotExistError};
32use crate::consensus::ConsensusError;
33use crate::consensus::state::data_contract::data_contract_not_found_error::DataContractNotFoundError;
34use crate::consensus::state::data_contract::data_contract_update_action_not_allowed_error::DataContractUpdateActionNotAllowedError;
35use crate::consensus::state::data_contract::data_contract_update_permission_error::DataContractUpdatePermissionError;
36use crate::consensus::state::data_contract::document_type_update_error::DocumentTypeUpdateError;
37use crate::consensus::state::document::document_contest_currently_locked_error::DocumentContestCurrentlyLockedError;
38use crate::consensus::state::document::document_contest_document_with_same_id_already_present_error::DocumentContestDocumentWithSameIdAlreadyPresentError;
39use crate::consensus::state::document::document_contest_identity_already_contestant::DocumentContestIdentityAlreadyContestantError;
40use crate::consensus::state::document::document_contest_not_joinable_error::DocumentContestNotJoinableError;
41use crate::consensus::state::document::document_contest_not_paid_for_error::DocumentContestNotPaidForError;
42use crate::consensus::state::document::document_incorrect_purchase_price_error::DocumentIncorrectPurchasePriceError;
43use crate::consensus::state::document::document_not_for_sale_error::DocumentNotForSaleError;
44use crate::consensus::state::group::{GroupActionAlreadyCompletedError, GroupActionAlreadySignedByIdentityError, GroupActionDoesNotExistError, IdentityMemberOfGroupNotFoundError, IdentityNotMemberOfGroupError, ModificationOfGroupActionMainParametersNotPermittedError};
45use crate::consensus::state::identity::identity_for_token_configuration_not_found_error::IdentityInTokenConfigurationNotFoundError;
46use crate::consensus::state::identity::identity_public_key_already_exists_for_unique_contract_bounds_error::IdentityPublicKeyAlreadyExistsForUniqueContractBoundsError;
47use crate::consensus::state::identity::identity_to_freeze_does_not_exist_error::IdentityToFreezeDoesNotExistError;
48use crate::consensus::state::identity::invalid_identity_contract_nonce_error::InvalidIdentityNonceError;
49use crate::consensus::state::identity::missing_transfer_key_error::MissingTransferKeyError;
50use crate::consensus::state::identity::no_transfer_key_for_core_withdrawal_available_error::NoTransferKeyForCoreWithdrawalAvailableError;
51use crate::consensus::state::prefunded_specialized_balances::prefunded_specialized_balance_insufficient_error::PrefundedSpecializedBalanceInsufficientError;
52use crate::consensus::state::prefunded_specialized_balances::prefunded_specialized_balance_not_found_error::PrefundedSpecializedBalanceNotFoundError;
53use crate::consensus::state::token::{IdentityDoesNotHaveEnoughTokenBalanceError, IdentityTokenAccountFrozenError, IdentityTokenAccountNotFrozenError, InvalidGroupPositionError, NewAuthorizedActionTakerGroupDoesNotExistError, NewAuthorizedActionTakerIdentityDoesNotExistError, NewAuthorizedActionTakerMainGroupNotSetError, NewTokensDestinationIdentityDoesNotExistError, TokenMintPastMaxSupplyError, TokenSettingMaxSupplyToLessThanCurrentSupplyError, UnauthorizedTokenActionError, IdentityTokenAccountAlreadyFrozenError, TokenAlreadyPausedError, TokenIsPausedError, TokenNotPausedError, InvalidTokenClaimPropertyMismatch, InvalidTokenClaimNoCurrentRewards, InvalidTokenClaimWrongClaimant, PreProgrammedDistributionTimestampInPastError, TokenTransferRecipientIdentityNotExistError, IdentityHasNotAgreedToPayRequiredTokenAmountError, RequiredTokenPaymentInfoNotSetError, IdentityTryingToPayWithWrongTokenError, TokenDirectPurchaseUserPriceTooLow, TokenAmountUnderMinimumSaleAmount, TokenNotForDirectSale, InvalidTokenPositionStateError};
54use crate::consensus::state::voting::masternode_incorrect_voter_identity_id_error::MasternodeIncorrectVoterIdentityIdError;
55use crate::consensus::state::voting::masternode_incorrect_voting_address_error::MasternodeIncorrectVotingAddressError;
56use crate::consensus::state::voting::masternode_not_found_error::MasternodeNotFoundError;
57use crate::consensus::state::voting::masternode_vote_already_present_error::MasternodeVoteAlreadyPresentError;
58use crate::consensus::state::voting::masternode_voted_too_many_times::MasternodeVotedTooManyTimesError;
59use crate::consensus::state::voting::vote_poll_not_available_for_voting_error::VotePollNotAvailableForVotingError;
60use crate::consensus::state::voting::vote_poll_not_found_error::VotePollNotFoundError;
61
62use super::document::document_timestamps_are_equal_error::DocumentTimestampsAreEqualError;
63
64#[derive(
65    Error, Debug, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, Clone,
66)]
67pub enum StateError {
68    /*
69
70    DO NOT CHANGE ORDER OF VARIANTS WITHOUT INTRODUCING OF NEW VERSION
71
72    */
73    #[error(transparent)]
74    DataContractAlreadyPresentError(DataContractAlreadyPresentError),
75
76    #[error(transparent)]
77    DataTriggerError(DataTriggerError),
78
79    #[error(transparent)]
80    DocumentAlreadyPresentError(DocumentAlreadyPresentError),
81
82    #[error(transparent)]
83    DocumentContestCurrentlyLockedError(DocumentContestCurrentlyLockedError),
84
85    #[error(transparent)]
86    DocumentContestNotJoinableError(DocumentContestNotJoinableError),
87
88    #[error(transparent)]
89    DocumentContestIdentityAlreadyContestantError(DocumentContestIdentityAlreadyContestantError),
90
91    #[error(transparent)]
92    DocumentContestNotPaidForError(DocumentContestNotPaidForError),
93
94    #[error(transparent)]
95    DocumentContestDocumentWithSameIdAlreadyPresentError(
96        DocumentContestDocumentWithSameIdAlreadyPresentError,
97    ),
98
99    #[error(transparent)]
100    DocumentNotFoundError(DocumentNotFoundError),
101
102    #[error(transparent)]
103    DocumentNotForSaleError(DocumentNotForSaleError),
104
105    #[error(transparent)]
106    DocumentIncorrectPurchasePriceError(DocumentIncorrectPurchasePriceError),
107
108    #[error(transparent)]
109    DocumentOwnerIdMismatchError(DocumentOwnerIdMismatchError),
110
111    #[error(transparent)]
112    DocumentTimestampsMismatchError(DocumentTimestampsMismatchError),
113
114    #[error(transparent)]
115    DocumentTimestampWindowViolationError(DocumentTimestampWindowViolationError),
116
117    #[error(transparent)]
118    DuplicateUniqueIndexError(DuplicateUniqueIndexError),
119
120    #[error(transparent)]
121    InvalidDocumentRevisionError(InvalidDocumentRevisionError),
122
123    #[error(transparent)]
124    IdentityAlreadyExistsError(IdentityAlreadyExistsError),
125
126    #[error(transparent)]
127    IdentityPublicKeyAlreadyExistsForUniqueContractBoundsError(
128        IdentityPublicKeyAlreadyExistsForUniqueContractBoundsError,
129    ),
130
131    #[error(transparent)]
132    IdentityPublicKeyIsReadOnlyError(IdentityPublicKeyIsReadOnlyError),
133
134    #[error(transparent)]
135    MissingIdentityPublicKeyIdsError(MissingIdentityPublicKeyIdsError),
136
137    #[error(transparent)]
138    MissingTransferKeyError(MissingTransferKeyError),
139
140    #[error(transparent)]
141    NoTransferKeyForCoreWithdrawalAvailableError(NoTransferKeyForCoreWithdrawalAvailableError),
142
143    #[error(transparent)]
144    InvalidIdentityPublicKeyIdError(InvalidIdentityPublicKeyIdError),
145
146    #[error(transparent)]
147    InvalidIdentityRevisionError(InvalidIdentityRevisionError),
148
149    #[error(transparent)]
150    InvalidIdentityNonceError(InvalidIdentityNonceError),
151
152    #[error(transparent)]
153    MaxIdentityPublicKeyLimitReachedError(MaxIdentityPublicKeyLimitReachedError),
154
155    #[error(transparent)]
156    DuplicatedIdentityPublicKeyStateError(DuplicatedIdentityPublicKeyStateError),
157
158    #[error(transparent)]
159    DuplicatedIdentityPublicKeyIdStateError(DuplicatedIdentityPublicKeyIdStateError),
160
161    #[error(transparent)]
162    IdentityPublicKeyIsDisabledError(IdentityPublicKeyIsDisabledError),
163
164    #[error(transparent)]
165    IdentityInsufficientBalanceError(IdentityInsufficientBalanceError),
166
167    #[error(transparent)]
168    DocumentTimestampsAreEqualError(DocumentTimestampsAreEqualError),
169
170    #[error(transparent)]
171    DataContractIsReadonlyError(DataContractIsReadonlyError),
172
173    #[error(transparent)]
174    DataContractConfigUpdateError(DataContractConfigUpdateError),
175
176    #[error(transparent)]
177    DocumentTypeUpdateError(DocumentTypeUpdateError),
178
179    #[error(transparent)]
180    PrefundedSpecializedBalanceInsufficientError(PrefundedSpecializedBalanceInsufficientError),
181
182    #[error(transparent)]
183    PrefundedSpecializedBalanceNotFoundError(PrefundedSpecializedBalanceNotFoundError),
184
185    #[error(transparent)]
186    DataContractUpdatePermissionError(DataContractUpdatePermissionError),
187
188    #[error(transparent)]
189    MasternodeNotFoundError(MasternodeNotFoundError),
190
191    #[error(transparent)]
192    MasternodeIncorrectVoterIdentityIdError(MasternodeIncorrectVoterIdentityIdError),
193
194    #[error(transparent)]
195    MasternodeIncorrectVotingAddressError(MasternodeIncorrectVotingAddressError),
196
197    #[error(transparent)]
198    VotePollNotFoundError(VotePollNotFoundError),
199
200    #[error(transparent)]
201    VotePollNotAvailableForVotingError(VotePollNotAvailableForVotingError),
202
203    #[error(transparent)]
204    MasternodeVotedTooManyTimesError(MasternodeVotedTooManyTimesError),
205
206    #[error(transparent)]
207    MasternodeVoteAlreadyPresentError(MasternodeVoteAlreadyPresentError),
208
209    #[error(transparent)]
210    RecipientIdentityDoesNotExistError(RecipientIdentityDoesNotExistError),
211
212    #[error(transparent)]
213    IdentityDoesNotHaveEnoughTokenBalanceError(IdentityDoesNotHaveEnoughTokenBalanceError),
214
215    #[error(transparent)]
216    UnauthorizedTokenActionError(UnauthorizedTokenActionError),
217
218    #[error(transparent)]
219    IdentityTokenAccountFrozenError(IdentityTokenAccountFrozenError),
220
221    #[error(transparent)]
222    IdentityTokenAccountNotFrozenError(IdentityTokenAccountNotFrozenError),
223
224    #[error(transparent)]
225    IdentityNotMemberOfGroupError(IdentityNotMemberOfGroupError),
226
227    #[error(transparent)]
228    GroupActionDoesNotExistError(GroupActionDoesNotExistError),
229
230    #[error(transparent)]
231    GroupActionAlreadyCompletedError(GroupActionAlreadyCompletedError),
232
233    #[error(transparent)]
234    GroupActionAlreadySignedByIdentityError(GroupActionAlreadySignedByIdentityError),
235
236    #[error(transparent)]
237    DataContractUpdateActionNotAllowedError(DataContractUpdateActionNotAllowedError),
238
239    #[error(transparent)]
240    TokenSettingMaxSupplyToLessThanCurrentSupplyError(
241        TokenSettingMaxSupplyToLessThanCurrentSupplyError,
242    ),
243
244    #[error(transparent)]
245    TokenMintPastMaxSupplyError(TokenMintPastMaxSupplyError),
246
247    #[error(transparent)]
248    InvalidTokenClaimPropertyMismatch(InvalidTokenClaimPropertyMismatch),
249
250    #[error(transparent)]
251    InvalidTokenClaimNoCurrentRewards(InvalidTokenClaimNoCurrentRewards),
252
253    #[error(transparent)]
254    InvalidTokenClaimWrongClaimant(InvalidTokenClaimWrongClaimant),
255
256    #[error(transparent)]
257    NewTokensDestinationIdentityDoesNotExistError(NewTokensDestinationIdentityDoesNotExistError),
258
259    #[error(transparent)]
260    NewAuthorizedActionTakerIdentityDoesNotExistError(
261        NewAuthorizedActionTakerIdentityDoesNotExistError,
262    ),
263
264    #[error(transparent)]
265    NewAuthorizedActionTakerGroupDoesNotExistError(NewAuthorizedActionTakerGroupDoesNotExistError),
266
267    #[error(transparent)]
268    NewAuthorizedActionTakerMainGroupNotSetError(NewAuthorizedActionTakerMainGroupNotSetError),
269
270    #[error(transparent)]
271    InvalidGroupPositionError(InvalidGroupPositionError),
272
273    #[error(transparent)]
274    TokenIsPausedError(TokenIsPausedError),
275
276    #[error(transparent)]
277    IdentityTokenAccountAlreadyFrozenError(IdentityTokenAccountAlreadyFrozenError),
278
279    #[error(transparent)]
280    TokenAlreadyPausedError(TokenAlreadyPausedError),
281
282    #[error(transparent)]
283    TokenNotPausedError(TokenNotPausedError),
284
285    #[error(transparent)]
286    TokenTransferRecipientIdentityNotExistError(TokenTransferRecipientIdentityNotExistError),
287
288    #[error(transparent)]
289    PreProgrammedDistributionTimestampInPastError(PreProgrammedDistributionTimestampInPastError),
290
291    #[error(transparent)]
292    IdentityHasNotAgreedToPayRequiredTokenAmountError(
293        IdentityHasNotAgreedToPayRequiredTokenAmountError,
294    ),
295
296    #[error(transparent)]
297    RequiredTokenPaymentInfoNotSetError(RequiredTokenPaymentInfoNotSetError),
298
299    #[error(transparent)]
300    IdentityTryingToPayWithWrongTokenError(IdentityTryingToPayWithWrongTokenError),
301
302    #[error(transparent)]
303    TokenDirectPurchaseUserPriceTooLow(TokenDirectPurchaseUserPriceTooLow),
304
305    #[error(transparent)]
306    TokenAmountUnderMinimumSaleAmount(TokenAmountUnderMinimumSaleAmount),
307
308    #[error(transparent)]
309    TokenNotForDirectSale(TokenNotForDirectSale),
310
311    #[error(transparent)]
312    IdentityInTokenConfigurationNotFoundError(IdentityInTokenConfigurationNotFoundError),
313
314    #[error(transparent)]
315    IdentityMemberOfGroupNotFoundError(IdentityMemberOfGroupNotFoundError),
316
317    #[error(transparent)]
318    ModificationOfGroupActionMainParametersNotPermittedError(
319        ModificationOfGroupActionMainParametersNotPermittedError,
320    ),
321
322    #[error(transparent)]
323    IdentityToFreezeDoesNotExistError(IdentityToFreezeDoesNotExistError),
324
325    #[error(transparent)]
326    DataContractNotFoundError(DataContractNotFoundError),
327
328    #[error(transparent)]
329    InvalidTokenPositionStateError(InvalidTokenPositionStateError),
330
331    #[error(transparent)]
332    AddressDoesNotExistError(AddressDoesNotExistError),
333
334    #[error(transparent)]
335    AddressNotEnoughFundsError(AddressNotEnoughFundsError),
336
337    #[error(transparent)]
338    AddressesNotEnoughFundsError(AddressesNotEnoughFundsError),
339
340    #[error(transparent)]
341    AddressInvalidNonceError(AddressInvalidNonceError),
342
343    #[error(transparent)]
344    InvalidAnchorError(InvalidAnchorError),
345
346    #[error(transparent)]
347    NullifierAlreadySpentError(NullifierAlreadySpentError),
348
349    #[error(transparent)]
350    InvalidShieldedProofError(InvalidShieldedProofError),
351
352    #[error(transparent)]
353    InsufficientPoolNotesError(InsufficientPoolNotesError),
354
355    #[error(transparent)]
356    InsufficientShieldedFeeError(InsufficientShieldedFeeError),
357}
358
359impl From<StateError> for ConsensusError {
360    fn from(error: StateError) -> Self {
361        Self::StateError(error)
362    }
363}