Skip to main content

lightcone_sdk/api/types/
position.rs

1//! Position-related types for the Lightcone REST API.
2
3use serde::{Deserialize, Serialize};
4
5/// Outcome balance in a position.
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct OutcomeBalance {
8    /// Outcome index
9    pub outcome_index: u32,
10    /// Conditional token address
11    pub conditional_token: String,
12    /// Total balance as decimal string
13    pub balance: String,
14    /// Idle balance (not on book) as decimal string
15    pub balance_idle: String,
16    /// Balance on order book as decimal string
17    pub balance_on_book: String,
18}
19
20/// User position in a market.
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct Position {
23    /// Database ID
24    pub id: i64,
25    /// Position PDA address
26    pub position_pubkey: String,
27    /// Position owner
28    pub owner: String,
29    /// Market pubkey
30    pub market_pubkey: String,
31    /// Outcome balances
32    pub outcomes: Vec<OutcomeBalance>,
33    /// Creation timestamp
34    pub created_at: String,
35    /// Last update timestamp
36    pub updated_at: String,
37}
38
39/// Response for GET /api/users/{user_pubkey}/positions.
40#[derive(Debug, Clone, Serialize, Deserialize)]
41pub struct PositionsResponse {
42    /// Position owner
43    pub owner: String,
44    /// Total markets with positions
45    pub total_markets: u64,
46    /// User positions
47    pub positions: Vec<Position>,
48}
49
50/// Response for GET /api/users/{user_pubkey}/markets/{market_pubkey}/positions.
51#[derive(Debug, Clone, Serialize, Deserialize)]
52pub struct MarketPositionsResponse {
53    /// Position owner
54    pub owner: String,
55    /// Market pubkey
56    pub market_pubkey: String,
57    /// Positions in this market
58    pub positions: Vec<Position>,
59}