#[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, Default)]
#[serde(rename_all = "camelCase")]
pub struct ListTransactionsQuery {
#[serde(rename = "from", default, skip_serializing_if = "Option::is_none")]
pub from: Option<Timestamp>,
#[serde(rename = "to", default, skip_serializing_if = "Option::is_none")]
pub to: Option<Timestamp>,
#[serde(rename = "pageSize", default, skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<Vec<TransactionFilter>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListTransactionsResponse {
#[serde(rename = "from", default, skip_serializing_if = "Option::is_none")]
pub from: Option<Timestamp>,
#[serde(rename = "to", default, skip_serializing_if = "Option::is_none")]
pub to: Option<Timestamp>,
#[serde(rename = "pageSize", default, skip_serializing_if = "Option::is_none")]
pub page_size: Option<i64>,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<Vec<TransactionFilter>>,
#[serde(rename = "count", default, skip_serializing_if = "Option::is_none")]
pub count: Option<i64>,
#[serde(rename = "pages", default, skip_serializing_if = "Option::is_none")]
pub pages: Option<Vec<String>>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn list_transactions(
&self,
account_id: &AccountID,
query: Option<&ListTransactionsQuery>,
) -> std::result::Result<
crate::ApiResponse<ListTransactionsResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}/transactions");
self.execute(Method::GET, &path, query, None::<&()>, None, None)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionDetailsResponse {
#[serde(
rename = "transaction",
default,
skip_serializing_if = "Option::is_none"
)]
pub transaction: Option<Transaction>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn transaction_details(
&self,
account_id: &AccountID,
transaction_id: &TransactionID,
) -> std::result::Result<
crate::ApiResponse<TransactionDetailsResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let transaction_id_encoded = crate::client::segment(transaction_id.as_str());
let path =
format!("/v3/accounts/{account_id_encoded}/transactions/{transaction_id_encoded}");
self.execute(Method::GET, &path, None::<&()>, None::<&()>, None, None)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionsByIdRangeQuery {
#[serde(rename = "from")]
pub from: TransactionID,
#[serde(rename = "to")]
pub to: TransactionID,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<Vec<TransactionFilter>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionsByIdRangeResponse {
#[serde(
rename = "transactions",
default,
skip_serializing_if = "Option::is_none"
)]
pub transactions: Option<Vec<Transaction>>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn transactions_by_id_range(
&self,
account_id: &AccountID,
query: &TransactionsByIdRangeQuery,
) -> std::result::Result<
crate::ApiResponse<TransactionsByIdRangeResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}/transactions/idrange");
self.execute(Method::GET, &path, Some(query), None::<&()>, None, None)
.await
}
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionsSinceIdQuery {
#[serde(rename = "id")]
pub id: TransactionID,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub r#type: Option<Vec<TransactionFilter>>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionsSinceIdResponse {
#[serde(
rename = "transactions",
default,
skip_serializing_if = "Option::is_none"
)]
pub transactions: Option<Vec<Transaction>>,
#[serde(
rename = "lastTransactionID",
default,
skip_serializing_if = "Option::is_none"
)]
pub last_transaction_id: Option<TransactionID>,
}
impl Client {
pub async fn transactions_since_id(
&self,
account_id: &AccountID,
query: &TransactionsSinceIdQuery,
) -> std::result::Result<
crate::ApiResponse<TransactionsSinceIdResponse>,
crate::OperationError<crate::GenericRejection>,
> {
let account_id_encoded = crate::client::segment(account_id.as_str());
let path = format!("/v3/accounts/{account_id_encoded}/transactions/sinceid");
self.execute(Method::GET, &path, Some(query), None::<&()>, None, None)
.await
}
}