1use light_hasher::HasherError;
2use thiserror::Error;
3
4pub type Result<T> = std::result::Result<T, LightSdkTypesError>;
5
6#[derive(Debug, Error, PartialEq)]
7pub enum LightSdkTypesError {
8 #[error("Address is none during initialization")]
9 InitAddressIsNone,
10 #[error("Address is none during initialization with address")]
11 InitWithAddressIsNone,
12 #[error("Output is none during initialization with address")]
13 InitWithAddressOutputIsNone,
14 #[error("Address is none during meta mutation")]
15 MetaMutAddressIsNone,
16 #[error("Input is none during meta mutation")]
17 MetaMutInputIsNone,
18 #[error("Output lamports is none during meta mutation")]
19 MetaMutOutputLamportsIsNone,
20 #[error("Output is none during meta mutation")]
21 MetaMutOutputIsNone,
22 #[error("Address is none during meta close")]
23 MetaCloseAddressIsNone,
24 #[error("Input is none during meta close")]
25 MetaCloseInputIsNone,
26 #[error("Fewer accounts than system accounts")]
27 FewerAccountsThanSystemAccounts,
28 #[error("CPI accounts index out of bounds: {0}")]
29 CpiAccountsIndexOutOfBounds(usize),
30 #[error(transparent)]
31 Hasher(#[from] HasherError),
32}
33
34impl From<LightSdkTypesError> for u32 {
35 fn from(e: LightSdkTypesError) -> Self {
36 match e {
37 LightSdkTypesError::InitAddressIsNone => 14021,
38 LightSdkTypesError::InitWithAddressIsNone => 14022,
39 LightSdkTypesError::InitWithAddressOutputIsNone => 14023,
40 LightSdkTypesError::MetaMutAddressIsNone => 14024,
41 LightSdkTypesError::MetaMutInputIsNone => 14025,
42 LightSdkTypesError::MetaMutOutputLamportsIsNone => 14026,
43 LightSdkTypesError::MetaMutOutputIsNone => 14027,
44 LightSdkTypesError::MetaCloseAddressIsNone => 14028,
45 LightSdkTypesError::MetaCloseInputIsNone => 14029,
46 LightSdkTypesError::FewerAccountsThanSystemAccounts => 14017,
47 LightSdkTypesError::CpiAccountsIndexOutOfBounds(_) => 14031,
48 LightSdkTypesError::Hasher(e) => e.into(),
49 }
50 }
51}