polyte_clob/api/
account.rs1use alloy::primitives::Address;
2use reqwest::Client;
3use serde::{Deserialize, Serialize};
4use url::Url;
5
6use crate::{
7 request::{AuthMode, QueryBuilder, Request},
8 signer::Signer,
9 types::{Credentials, OrderSide},
10 wallet::Wallet,
11};
12
13#[derive(Clone)]
15pub struct Account {
16 pub(crate) client: Client,
17 pub(crate) base_url: Url,
18 pub(crate) wallet: Wallet,
19 pub(crate) credentials: Credentials,
20 pub(crate) signer: Signer,
21 pub(crate) chain_id: u64,
22}
23
24impl Account {
25 pub fn balance_allowance(
27 &self,
28 token_id: impl Into<String>,
29 ) -> Request<BalanceAllowanceResponse> {
30 Request::get(
31 self.client.clone(),
32 self.base_url.clone(),
33 "/balance-allowance",
34 AuthMode::L2 {
35 address: self.wallet.clone().address(),
36 credentials: self.credentials.clone(),
37 signer: self.signer.clone(),
38 },
39 self.chain_id,
40 )
41 .query("token_id", token_id.into())
42 }
43
44 pub fn trades(&self) -> Request<Vec<Trade>> {
46 Request::get(
47 self.client.clone(),
48 self.base_url.clone(),
49 "/trades",
50 AuthMode::L2 {
51 address: self.wallet.clone().address(),
52 credentials: self.credentials.clone(),
53 signer: self.signer.clone(),
54 },
55 self.chain_id,
56 )
57 }
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize)]
62pub struct Trade {
63 pub id: String,
64 pub taker_order_id: String,
65 pub market: String,
66 pub asset_id: String,
67 pub side: OrderSide,
68 pub size: String,
69 pub fee_rate_bps: String,
70 pub price: String,
71 pub status: String,
72 pub match_time: String,
73 #[serde(default)]
74 pub last_update: Option<String>,
75 pub outcome: String,
76 #[serde(default)]
77 pub bucket_index: Option<u32>,
78 pub owner: Address,
79 pub transaction_hash: String,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize)]
84pub struct BalanceAllowanceResponse {
85 pub balance: String,
86 pub allowance: String,
87}