perpl_sdk/state/l3_book/
error.rs1use fastnum::UD64;
4use thiserror::Error;
5
6use crate::types::{OrderId, OrderSide};
7
8#[derive(Debug, Clone, PartialEq, Error)]
10pub enum OrderBookError {
11 #[error("order #{order_id} already exists at price {existing_price}")]
13 OrderAlreadyExists { order_id: OrderId, existing_price: UD64 },
14
15 #[error("order #{order_id} not found in book")]
17 OrderNotFound { order_id: OrderId },
18
19 #[error("order #{order_id} not found at expected {side:?} level price {expected_price}")]
22 OrderNotAtExpectedLevel { order_id: OrderId, expected_price: UD64, side: OrderSide },
23
24 #[error("order ID mismatch: expected {expected}, got {actual}")]
26 OrderIdMismatch { expected: OrderId, actual: OrderId },
27
28 #[error("order #{order_id} has invalid size: {size}")]
30 InvalidOrderSize { order_id: OrderId, size: UD64 },
31
32 #[error("order #{order_id} has invalid price: {price}")]
34 InvalidOrderPrice { order_id: OrderId, price: UD64 },
35
36 #[error("level not found at price {price} ({side:?} side)")]
38 LevelNotFound { price: UD64, side: OrderSide },
39
40 #[error(
43 "order #{order_id} has dangling {pointer} reference to non-existent order #{referenced_id}"
44 )]
45 DanglingOrderReference { order_id: OrderId, referenced_id: OrderId, pointer: &'static str },
46}
47
48pub type OrderBookResult<T> = Result<T, OrderBookError>;