diff --git a/src/client.rs b/src/client.rs index 93b5087..4c35183 100644 --- a/src/client.rs +++ b/src/client.rs @@ -141,20 +141,6 @@ impl ClobClient { Ok(timestamp) } - /// Get sampling markets - pub async fn get_sampling_markets(&self, _limit: Option) -> Result { - let response = self.http_client - .get(&format!("{}/sampling-markets", self.base_url)) - .send() - .await?; - - if !response.status().is_success() { - return Err(PolyfillError::api(response.status().as_u16(), "Failed to get sampling markets")); - } - - let markets_response: MarketsResponse = response.json().await?; - Ok(markets_response) - } /// Get order book for a token pub async fn get_order_book(&self, token_id: &str) -> Result { @@ -301,7 +287,7 @@ impl ClobClient { .headers(headers.into_iter().map(|(k, v)| (HeaderName::from_static(k), v.parse().unwrap())).collect()) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; let api_keys_response: crate::types::ApiKeysResponse = response.json().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None))?; @@ -325,7 +311,7 @@ impl ClobClient { .headers(headers.into_iter().map(|(k, v)| (HeaderName::from_static(k), v.parse().unwrap())).collect()) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.text().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -635,7 +621,7 @@ impl ClobClient { .fold(req, |r, (k, v)| r.header(HeaderName::from_static(k), v)); let resp = r.send().await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))? + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))? .json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None))?; @@ -695,7 +681,7 @@ impl ClobClient { .fold(req, |r, (k, v)| r.header(HeaderName::from_static(k), v)); let resp = r.send().await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))? + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))? .json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None))?; @@ -748,7 +734,7 @@ impl ClobClient { .query(&query_params) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -785,7 +771,7 @@ impl ClobClient { )]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -870,7 +856,7 @@ impl ClobClient { .json(&request_data) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::>().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -892,7 +878,7 @@ impl ClobClient { .headers(headers.into_iter().map(|(k, v)| (HeaderName::from_static(k), v.parse().unwrap())).collect()) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -905,7 +891,7 @@ impl ClobClient { .query(&[("token_id", token_id)]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -927,7 +913,7 @@ impl ClobClient { .json(&request_data) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -955,7 +941,7 @@ impl ClobClient { .json(&body) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -978,7 +964,7 @@ impl ClobClient { .query(&[("ids", ids.join(","))]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1013,7 +999,7 @@ impl ClobClient { .query(&query_params) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1036,7 +1022,7 @@ impl ClobClient { .query(&[("order_id", order_id)]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; let result: Value = response.json().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None))?; @@ -1061,7 +1047,7 @@ impl ClobClient { .json(order_ids) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::>().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1076,7 +1062,7 @@ impl ClobClient { .query(&[("next_cursor", next_cursor)]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1091,7 +1077,7 @@ impl ClobClient { .query(&[("next_cursor", next_cursor)]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1106,7 +1092,7 @@ impl ClobClient { .query(&[("next_cursor", next_cursor)]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1121,7 +1107,7 @@ impl ClobClient { .query(&[("next_cursor", next_cursor)]) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1133,7 +1119,7 @@ impl ClobClient { .get(&format!("{}/markets/{}", self.base_url, condition_id)) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) @@ -1145,7 +1131,7 @@ impl ClobClient { .get(&format!("{}/live-activity/events/{}", self.base_url, condition_id)) .send() .await - .map_err(|e| PolyfillError::network(format!("Request failed: {}", e)))?; + .map_err(|e| PolyfillError::network(format!("Request failed: {}", e), e))?; response.json::().await .map_err(|e| PolyfillError::parse(format!("Failed to parse response: {}", e), None)) diff --git a/src/lib.rs b/src/lib.rs index d39e8de..e47b2fd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -102,6 +102,7 @@ pub use crate::types::{ ApiKeysResponse, MidpointResponse, PriceResponse, SpreadResponse, TickSizeResponse, NegRiskResponse, BookParams, MarketsResponse, SimplifiedMarketsResponse, Market, SimplifiedMarket, Token, Rewards, ClientResult, OrderBookSummary, OrderSummary, + BalanceAllowanceParams, AssetType, }; // Re-export client @@ -109,7 +110,7 @@ pub use crate::client::{ClobClient, PolyfillClient}; // Re-export compatibility types (for easy migration from polymarket-rs-client) pub use crate::client::{ - OrderArgs, OrderBookSummary, + OrderArgs, }; // Re-export error types diff --git a/src/types.rs b/src/types.rs index d99c1e2..0cba05f 100644 --- a/src/types.rs +++ b/src/types.rs @@ -1031,8 +1031,33 @@ pub struct SimplifiedMarketsResponse { pub data: Vec, } -// Note: Market, Token, Rewards, and SimplifiedMarket are already defined above in this file -// These duplicate definitions have been removed to avoid conflicts +/// Simplified market structure for batch operations +#[derive(Debug, Serialize, Deserialize)] +pub struct SimplifiedMarket { + pub condition_id: String, + pub tokens: [Token; 2], + pub rewards: Rewards, + pub min_incentive_size: Option, + pub max_incentive_spread: Option, + pub active: bool, + pub closed: bool, +} + +/// Rewards structure for markets +#[derive(Debug, Serialize, Deserialize)] +pub struct Rewards { + pub rates: Option, + #[serde(with = "rust_decimal::serde::str")] + pub min_size: Decimal, + #[serde(with = "rust_decimal::serde::str")] + pub max_spread: Decimal, + pub event_start_date: Option, + pub event_end_date: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub in_game_multiplier: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub reward_epoch: Option, +} // For compatibility with reference implementation pub type ClientResult = anyhow::Result;