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}