use alloy_primitives::B256;
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use super::primitives::{OrderType, Side};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserLimitOrder {
#[serde(rename = "tokenID")]
pub token_id: String,
pub price: f64,
pub size: f64,
pub side: Side,
#[serde(skip_serializing_if = "Option::is_none")]
pub expiration: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<B256>,
#[serde(skip_serializing_if = "Option::is_none")]
pub builder: Option<B256>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserMarketOrder {
#[serde(rename = "tokenID")]
pub token_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<f64>,
pub amount: f64,
pub side: Side,
#[serde(rename = "orderType", skip_serializing_if = "Option::is_none")]
pub order_type: Option<OrderType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timestamp: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<B256>,
#[serde(skip_serializing_if = "Option::is_none")]
pub builder: Option<B256>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct OrderPayload {
pub order_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OrderMarketCancelParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub market: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub asset_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PostOrdersArgs {
pub order: serde_json::Value,
pub order_type: OrderType,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OpenOrder {
pub id: String,
pub status: String,
pub owner: String,
pub maker_address: String,
pub market: String,
pub asset_id: String,
pub side: String,
pub original_size: String,
pub size_matched: String,
pub price: String,
pub associate_trades: Vec<String>,
pub outcome: String,
pub created_at: u64,
pub expiration: String,
pub order_type: String,
}
pub type OpenOrdersResponse = Vec<OpenOrder>;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PreMigrationOrdersPaginatedResponse {
pub data: Vec<OpenOrder>,
pub next_cursor: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct OpenOrderParams {
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub market: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub asset_id: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MakerOrder {
pub order_id: String,
pub owner: String,
pub maker_address: String,
pub matched_amount: String,
pub price: String,
pub fee_rate_bps: String,
pub asset_id: String,
pub outcome: String,
pub side: Side,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OrderScoringParams {
pub order_id: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OrderScoring {
pub scoring: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct OrdersScoringParams {
pub order_ids: Vec<String>,
}
pub type OrdersScoring = HashMap<String, bool>;