1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use num_derive::FromPrimitive;
use thiserror::Error;
use solana_program::{decode_error::DecodeError, program_error::ProgramError};
pub type AoResult<T = ()> = Result<T, AoError>;
#[derive(Clone, Debug, Error, FromPrimitive)]
pub enum AoError {
#[error("This account is already initialized")]
AlreadyInitialized,
#[error("An invalid bids account has been provided.")]
WrongBidsAccount,
#[error("An invalid asks account has been provided.")]
WrongAsksAccount,
#[error("An invalid event queue account has been provided.")]
WrongEventQueueAccount,
#[error("An invalid caller authority account has been provided.")]
WrongCallerAuthority,
#[error("The event queue is full.")]
EventQueueFull,
#[error("The order could not be found.")]
OrderNotFound,
#[error("The order would self trade.")]
WouldSelfTrade,
#[error("The market's memory is full.")]
SlabOutOfSpace,
#[error("The due fee was not payed.")]
FeeNotPayed,
#[error("This instruction is a No-op.")]
NoOperations,
#[error("The market is still active")]
MarketStillActive,
#[error("The base quantity must be > 0")]
InvalidBaseQuantity,
}
impl From<AoError> for ProgramError {
fn from(e: AoError) -> Self {
ProgramError::Custom(e as u32)
}
}
impl<T> DecodeError<T> for AoError {
fn type_of() -> &'static str {
"AOError"
}
}