use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Account {
pub id: String,
pub account_number: String,
pub account_type: AccountType,
pub status: AccountStatus,
pub created_at: DateTime<Utc>,
pub currency: String,
pub paper_trading: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum AccountType {
Cash,
Margin,
Ira,
Other,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "UPPERCASE")]
pub enum AccountStatus {
Active,
Closed,
Pending,
Suspended,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountBalance {
pub cash: f64,
pub buying_power: f64,
pub market_value: f64,
pub total_value: f64,
pub unrealized_profit_loss: f64,
pub unrealized_profit_loss_percentage: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Position {
pub symbol: String,
pub quantity: f64,
pub cost_basis: f64,
pub market_value: f64,
pub unrealized_profit_loss: f64,
pub unrealized_profit_loss_percentage: f64,
pub current_price: f64,
pub opened_at: DateTime<Utc>,
}