#[allow(unused_imports)]
use crate::Timestamp;
#[allow(unused_imports)]
use crate::ids::*;
#[allow(unused_imports)]
use crate::models::*;
#[allow(unused_imports)]
use crate::{Client, Result};
#[allow(unused_imports)]
use reqwest::Method;
#[allow(unused_imports)]
use rust_decimal::Decimal;
#[allow(unused_imports)]
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListAccountsResponse {
#[serde(rename = "accounts", default, skip_serializing_if = "Option::is_none")]
pub accounts: Option<Vec<AccountProperties>>,
}
impl Client {
pub async fn list_accounts(
&self,
) -> std::result::Result<
crate::ApiResponse<ListAccountsResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let path = "/v3/accounts".to_owned();
self.execute(Method::GET, &path, None::<&()>, None::<&()>, None, None)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountDetailsResponse {
#[serde(rename = "account", default, skip_serializing_if = "Option::is_none")]
pub account: Option<Account>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn account_details(
&self,
account_id: &AccountID,
) -> std::result::Result<
crate::ApiResponse<AccountDetailsResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}");
self.execute(Method::GET, &path, None::<&()>, None::<&()>, None, None)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountSummaryResponse {
#[serde(rename = "account", default, skip_serializing_if = "Option::is_none")]
pub account: Option<AccountSummary>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn account_summary(
&self,
account_id: &AccountID,
) -> std::result::Result<
crate::ApiResponse<AccountSummaryResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}/summary");
self.execute(Method::GET, &path, None::<&()>, None::<&()>, None, None)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AccountInstrumentsQuery {
#[serde(
rename = "instruments",
default,
skip_serializing_if = "Option::is_none"
)]
pub instruments: Option<Vec<InstrumentName>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountInstrumentsResponse {
#[serde(
rename = "instruments",
default,
skip_serializing_if = "Option::is_none"
)]
pub instruments: Option<Vec<Instrument>>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn account_instruments(
&self,
account_id: &AccountID,
query: Option<&AccountInstrumentsQuery>,
) -> std::result::Result<
crate::ApiResponse<AccountInstrumentsResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}/instruments");
self.execute(Method::GET, &path, query, None::<&()>, None, None)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigureAccountBody {
#[serde(rename = "alias", default, skip_serializing_if = "Option::is_none")]
pub alias: Option<String>,
#[serde(
rename = "marginRate",
default,
skip_serializing_if = "Option::is_none"
)]
#[serde(deserialize_with = "crate::decimal_wire::optional_number_or_string")]
pub margin_rate: Option<Decimal>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ConfigureAccountResponse {
#[serde(
rename = "clientConfigureTransaction",
default,
skip_serializing_if = "Option::is_none"
)]
pub client_configure_transaction: Option<ClientConfigureTransaction>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct ConfigureAccountRejection {
#[serde(
rename = "clientConfigureRejectTransaction",
default,
skip_serializing_if = "Option::is_none"
)]
pub client_configure_reject_transaction: Option<ClientConfigureRejectTransaction>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
#[serde(rename = "errorCode", default, skip_serializing_if = "Option::is_none")]
pub error_code: Option<String>,
#[serde(
rename = "errorMessage",
default,
skip_serializing_if = "Option::is_none"
)]
pub error_message: Option<String>,
}
impl Client {
pub async fn configure_account(
&self,
account_id: &AccountID,
body: &ConfigureAccountBody,
) -> std::result::Result<
crate::ApiResponse<ConfigureAccountResponse>,
crate::OperationError<ConfigureAccountRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}/configuration");
self.execute(
Method::PATCH,
&path,
None::<&()>,
Some(body),
Some(crate::client::MutationAdmission::Ordinary(account_id)),
None,
)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
#[serde(rename_all = "camelCase")]
pub struct AccountChangesQuery {
#[serde(
rename = "sinceTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub since_transaction_id: Option<TransactionID>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountChangesResponse {
#[serde(rename = "changes", default, skip_serializing_if = "Option::is_none")]
pub changes: Option<AccountChanges>,
#[serde(rename = "state", default, skip_serializing_if = "Option::is_none")]
pub state: Option<AccountChangesState>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn account_changes(
&self,
account_id: &AccountID,
query: Option<&AccountChangesQuery>,
) -> std::result::Result<
crate::ApiResponse<AccountChangesResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}/changes");
self.execute(Method::GET, &path, query, None::<&()>, None, None)
.await
}
}