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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//! This code was AUTOGENERATED using the Codama library.
use crate::types::{MarketType, OrderStatus, OrderTriggerCondition, OrderType, PositionDirection};
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[derive(Debug, Clone, borsh::BorshSerialize, borsh::BorshDeserialize, PartialEq)]
pub struct Order {
/// The slot the order was placed
pub slot: u64,
/// The limit price for the order (can be 0 for market orders)
/// For orders with an auction, this price isn't used until the auction is
/// complete precision: PRICE_PRECISION
pub price: u64,
/// The size of the order
/// precision for perps: BASE_PRECISION
/// precision for spot: token mint precision
pub base_asset_amount: u64,
/// The amount of the order filled
/// precision for perps: BASE_PRECISION
/// precision for spot: token mint precision
pub base_asset_amount_filled: u64,
/// The amount of quote filled for the order
/// precision: QUOTE_PRECISION
pub quote_asset_amount_filled: u64,
/// At what price the order will be triggered. Only relevant for trigger
/// orders precision: PRICE_PRECISION
pub trigger_price: u64,
/// The start price for the auction. Only relevant for market/oracle orders
/// precision: PRICE_PRECISION
pub auction_start_price: i64,
/// The end price for the auction. Only relevant for market/oracle orders
/// precision: PRICE_PRECISION
pub auction_end_price: i64,
/// The time when the order will expire
pub max_ts: i64,
/// If set, the order limit price is the oracle price + this offset
/// precision: PRICE_PRECISION
pub oracle_price_offset: i32,
/// The id for the order. Each users has their own order id space
pub order_id: u32,
/// The perp/spot market index
pub market_index: u16,
/// Whether the order is open or unused
pub status: OrderStatus,
/// The type of order
pub order_type: OrderType,
/// Whether market is spot or perp
pub market_type: MarketType,
/// User generated order id. Can make it easier to place/cancel orders
pub user_order_id: u8,
/// What the users position was when the order was placed
pub existing_position_direction: PositionDirection,
/// Whether the user is going long or short. LONG = bid, SHORT = ask
pub direction: PositionDirection,
/// Whether the order is allowed to only reduce position size
pub reduce_only: bool,
/// Whether the order must be a maker
pub post_only: bool,
/// Whether the order must be canceled the same slot it is placed
pub immediate_or_cancel: bool,
/// Whether the order is triggered above or below the trigger price. Only
/// relevant for trigger orders
pub trigger_condition: OrderTriggerCondition,
/// How many slots the auction lasts
pub auction_duration: u8,
/// Last 8 bits of the slot the order was posted on-chain (not order slot
/// for signed msg orders)
pub posted_slot_tail: u8,
/// Bitflags for further classification
/// 0: is_signed_message
pub bit_flags: u8,
pub padding: [u8; 1],
}