use rust_decimal::Decimal;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct OutcomeBalance {
pub outcome_index: i16,
pub conditional_token: String,
pub balance: String,
pub balance_idle: String,
pub balance_on_book: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct VaultBalance {
pub deposit_mint: String,
pub vault: String,
pub balance: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct GlobalDeposit {
pub deposit_mint: String,
pub symbol: String,
pub balance: Decimal,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PositionEntry {
pub id: i32,
pub position_pubkey: String,
pub owner: String,
pub market_pubkey: String,
pub outcomes: Vec<OutcomeBalance>,
#[serde(default)]
pub vault_balances: Vec<VaultBalance>,
pub created_at: String,
pub updated_at: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct PositionsResponse {
pub owner: String,
pub total_markets: usize,
pub positions: Vec<PositionEntry>,
#[serde(default)]
pub global_deposits: Vec<GlobalDeposit>,
pub decimals: HashMap<String, u8>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct MarketPositionsResponse {
pub owner: String,
pub market_pubkey: String,
pub positions: Vec<PositionEntry>,
#[serde(default)]
pub global_deposits: Vec<GlobalDeposit>,
pub decimals: HashMap<String, u8>,
}