use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum Side {
#[serde(rename = "BUY")]
Buy,
#[serde(rename = "SELL")]
Sell,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ActiveSessionInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub api_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub client_ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conn_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub connected_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pushed_tx_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stream_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_agent: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CreateAPIKeyRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteKeyResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeleteStreamResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DepositItem {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deposit_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub first_deposit_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub first_trade_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_deposit_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_trade_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pusd_balance: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pusd_trade_balance: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recent_deposits: Option<Vec<RecentDeposit>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_deposit: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DepositQueryResult {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub items: Option<Vec<DepositItem>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ErrorResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub error: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct HistoryMarket {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icon: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub outcomes: Option<[String; 2]>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub question: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resolved_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub result: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series_slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct HourlyStat {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cost_basis: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hour: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maker_volume: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub market_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pnl: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub taker_volume: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub win_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LeaderboardResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub traders: Option<Vec<TraderSummary>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LiveOrder {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order: Option<OrderInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub outcome: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shares: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub side: Option<Side>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub token_ids_index: Option<u8>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub usdc: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user: Option<MonitorTrader>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct LiveTransaction {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub makers: Option<Vec<LiveOrder>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub market: Option<Market>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub taker: Option<LiveOrder>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tx_hash: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Market {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub condition_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub event_slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group_item_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub neg_risk: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub outcomes: Option<[String; 2]>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub question: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series_slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sports_market_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags_slug: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub token_ids: Option<[String; 2]>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MarketDetailResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub market: Option<MarketMetadata>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub top_earners: Option<Vec<MarketEarner>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_fees: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_pnl_distributed: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_traders: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_volume: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_winners: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MarketEarner {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub orders: Option<Vec<UserOrder>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pnl: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub profile: Option<TraderIdentity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rank: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub roi: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volume: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MarketMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub condition_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub end_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub event_slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee_schedule: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fees_enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group_item_threshold: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group_item_title: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub icon: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub neg_risk: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub outcomes: Option<[String; 2]>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub question: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resolution_source: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub resolved_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub result: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series_slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sports_market_type: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub start_date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags_slug: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub token_ids: Option<[String; 2]>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MarketSettlementDetail {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_trade_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub market: Option<HistoryMarket>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub orders: Option<Vec<UserOrder>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pnl: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub roi: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volume: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MonitorTrader {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct OrderInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order_hash: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shares: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub signature_type: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timestamp: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub usdc: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct QuoteSubscriptionRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub billing_cycle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub promo_code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tier: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct QuoteSubscriptionResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount_to_pay: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub billing_cycle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub can_afford: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current_balance: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current_billing_cycle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current_license: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current_tier: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount_amount: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration_days: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_active: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub license: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub original_price: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prorated_credit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tier: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RecentDeposit {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tx_hash: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SubscribeRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub billing_cycle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub idempotency_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub promo_code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tier: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SubscribeResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub subscription: Option<UserSubscription>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user: Option<UserProfile>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TagStat {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub maker_volume: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub markets_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pnl: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub roi: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slug: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub taker_volume: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volume: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub win_rate: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub wins_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Tier {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allow_rest_api: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allow_stream: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub allow_trial: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub level: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub license: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_daily_requests: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_daily_stream_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_filter_addrs: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_filter_series: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_filter_tags: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_keys: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_naked_streams: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_qps: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_sessions: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_streams: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub monthly_credits: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub price_monthly: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub price_quarterly: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub price_trial: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub price_yearly: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub trial_duration_days: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TraderHistoryResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub history: Option<Vec<MarketSettlementDetail>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TraderHourlyStatsResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stats: Option<Vec<HourlyStat>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TraderIdentity {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub profile_created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub profile_image: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub x_username: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TraderProfileResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_trade_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub profile: Option<TraderIdentity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pusd_balance: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub taker_tier: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub taker_tier_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub top_tags: Option<Vec<TagStat>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub weighted_volume: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TraderSummary {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_trade_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub markets_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub profile: Option<TraderIdentity>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rank: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub roi: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_pnl: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_volume: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub win_rate: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub wins_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UpdateSubscriptionRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub addresses: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserAPIKey {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserActiveSessionsResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<ActiveSessionInfo>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserCreateStreamRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub addresses: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserDisconnectSessionResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conn_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserKeysResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<UserAPIKey>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserLedgerEntry {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub balance_after: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reference_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserLedgerResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<UserLedgerEntry>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserOrder {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub fee: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_taker: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub outcome: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shares: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub side: Option<Side>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub time: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub usdc: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserOrdersResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub orders: Option<Vec<UserOrder>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserProfile {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub billing_cycle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deposit_address: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deposit_balance: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub is_expired: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub telegram_id: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tier: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tier_expires_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserSessionHistoryResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<UserSessionRecord>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserSessionRecord {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub api_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub client_ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub close_reason: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub connected_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub disconnected_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration_seconds: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pushed_tx_count: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stream_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub user_agent: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserStreamResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub active_sessions: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub addresses: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub updated_at: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserStreamsResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub data: Option<Vec<UserStreamResponse>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_count: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserSubscription {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount_paid: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub billing_cycle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub created_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount_amount: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub duration_days: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub expires_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub original_price: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub plan_tier: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub promo_code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prorated_credit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub starts_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserTelemetryResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub endpoints: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub total_requests: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserUpdateKeyRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<i64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserUpdateStreamMetadataRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ValidatePromoCodeRequest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub billing_cycle: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tier: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ValidatePromoCodeResponse {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub amount_to_pay: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub discount_amount: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub message: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub original_price: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prorated_credit: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub valid: Option<bool>,
}