1use solana_program::{decode_error::DecodeError, program_error::ProgramError};
2use thiserror::Error;
3
4#[derive(Debug, Error, PartialEq, Eq)]
5pub enum VaultError {
6 #[error("VaultSlashUnderflow")]
7 VaultSlashUnderflow = 1000,
8 #[error("VaultInitialAmountFailed")]
9 VaultInitialAmountFailed,
10 #[error("VaultInsufficientFunds")]
11 VaultInsufficientFunds,
12 #[error("VaultOverflow")]
13 VaultOverflow,
14 #[error("VaultOperatorAdminInvalid")]
15 VaultOperatorAdminInvalid,
16 #[error("VaultAdminInvalid")]
17 VaultAdminInvalid,
18 #[error("VaultCapacityAdminInvalid")]
19 VaultCapacityAdminInvalid,
20 #[error("VaultMintBurnAdminInvalid")]
21 VaultMintBurnAdminInvalid,
22 #[error("VaultDelegationAdminInvalid")]
23 VaultDelegationAdminInvalid,
24 #[error("VaultDelegateAssetAdminInvalid")]
25 VaultDelegateAssetAdminInvalid,
26 #[error("VaultCapacityExceeded")]
27 VaultCapacityExceeded,
28 #[error("VaultSlasherAdminInvalid")]
29 VaultSlasherAdminInvalid,
30 #[error("VaultNcnAdminInvalid")]
31 VaultNcnAdminInvalid,
32 #[error("VaultFeeAdminInvalid")]
33 VaultFeeAdminInvalid,
34 #[error("ConfigAdminInvalid")]
35 ConfigAdminInvalid,
36 #[error("ConfigFeeAdminInvalid")]
37 ConfigFeeAdminInvalid,
38 #[error("VaultFeeCapExceeded")]
39 VaultFeeCapExceeded,
40 #[error("VaultFeeChangeTooSoon")]
41 VaultFeeChangeTooSoon,
42 #[error("VaultFeeBumpTooLarge")]
43 VaultFeeBumpTooLarge,
44 #[error("VaultUnderflow")]
45 VaultUnderflow,
46 #[error("VaultUpdateNeeded")]
47 VaultUpdateNeeded,
48 #[error("VaultIsUpdated")]
49 VaultIsUpdated,
50 #[error("VaultOperatorDelegationUpdateNeeded")]
51 VaultOperatorDelegationUpdateNeeded,
52 #[error("VaultOperatorDelegationIsUpdated")]
53 VaultOperatorDelegationIsUpdated,
54 #[error("VaultUpdateIncorrectIndex")]
55 VaultUpdateIncorrectIndex,
56 #[error("VaultUpdateStateNotFinishedUpdating")]
57 VaultUpdateStateNotFinishedUpdating,
58 #[error("VaultSecurityOverflow")]
59 VaultSecurityOverflow,
60 #[error("VaultSlashIncomplete")]
61 VaultSlashIncomplete,
62 #[error("VaultSecurityUnderflow")]
63 VaultSecurityUnderflow,
64 #[error("SlippageError")]
65 SlippageError,
66 #[error("VaultStakerWithdrawalTicketNotWithdrawable")]
67 VaultStakerWithdrawalTicketNotWithdrawable,
68 #[error("VaultNcnSlasherTicketFailedCooldown")]
69 VaultNcnSlasherTicketFailedCooldown,
70 #[error("VaultNcnSlasherTicketFailedWarmup")]
71 VaultNcnSlasherTicketFailedWarmup,
72 #[error("VaultNcnTicketFailedCooldown")]
73 VaultNcnTicketFailedCooldown,
74 #[error("VaultNcnTicketFailedWarmup")]
75 VaultNcnTicketFailedWarmup,
76 #[error("VaultNcnTicketUnslashable")]
77 VaultNcnTicketUnslashable,
78 #[error("OperatorVaultTicketUnslashable")]
79 OperatorVaultTicketUnslashable,
80 #[error("NcnOperatorStateUnslashable")]
81 NcnOperatorStateUnslashable,
82 #[error("VaultNcnSlasherTicketUnslashable")]
83 VaultNcnSlasherTicketUnslashable,
84 #[error("NcnVaultTicketUnslashable")]
85 NcnVaultTicketUnslashable,
86 #[error("NcnVaultSlasherTicketUnslashable")]
87 NcnVaultSlasherTicketUnslashable,
88 #[error("VaultMaxSlashedPerOperatorExceeded")]
89 VaultMaxSlashedPerOperatorExceeded,
90 #[error("VaultStakerWithdrawalTicketInvalidStaker")]
91 VaultStakerWithdrawalTicketInvalidStaker,
92 #[error("SlasherOverflow")]
93 SlasherOverflow,
94 #[error("NcnOverflow")]
95 NcnOverflow,
96 #[error("OperatorOverflow")]
97 OperatorOverflow,
98 #[error("VaultDelegationZero")]
99 VaultDelegationZero,
100 #[error("VaultCooldownZero")]
101 VaultCooldownZero,
102 #[error("VaultBurnZero")]
103 VaultBurnZero,
104 #[error("VaultEnqueueWithdrawalAmountZero")]
105 VaultEnqueueWithdrawalAmountZero,
106 #[error("VaultMintZero")]
107 VaultMintZero,
108 #[error("VaultIsPaused")]
109 VaultIsPaused,
110 #[error("InvalidDepositor")]
111 InvalidDepositor,
112 #[error("InvalidDepositTokenAccount")]
113 InvalidDepositTokenAccount,
114 #[error("NoSupportedMintBalanceChange")]
115 NoSupportedMintBalanceChange,
116 #[error("InvalidEpochLength")]
117 InvalidEpochLength,
118 #[error("VaultRewardFeeDeltaTooLarge")]
119 VaultRewardFeeDeltaTooLarge,
120 #[error("VaultRewardFeeIsZero")]
121 VaultRewardFeeIsZero,
122 #[error("VrtOutCannotBeZero")]
123 VrtOutCannotBeZero,
124 #[error("NonZeroAdditionalAssetsNeededForWithdrawalAtEndOfUpdate")]
125 NonZeroAdditionalAssetsNeededForWithdrawalAtEndOfUpdate,
126 #[error("ArithmeticOverflow")]
127 ArithmeticOverflow = 3000,
128 #[error("ArithmeticUnderflow")]
129 ArithmeticUnderflow,
130 #[error("DivisionByZero")]
131 DivisionByZero,
132}
133
134impl<T> DecodeError<T> for VaultError {
135 fn type_of() -> &'static str {
136 "jito::vault"
137 }
138}
139
140impl From<VaultError> for ProgramError {
141 fn from(e: VaultError) -> Self {
142 Self::Custom(e as u32)
143 }
144}
145
146impl From<VaultError> for u64 {
147 fn from(e: VaultError) -> Self {
148 e as Self
149 }
150}
151
152impl From<VaultError> for u32 {
153 fn from(e: VaultError) -> Self {
154 e as Self
155 }
156}