xrpl/models/requests/
account_objects.rs1use alloc::borrow::Cow;
2use serde::{Deserialize, Serialize};
3use serde_with::skip_serializing_none;
4use strum_macros::{Display, EnumString};
5
6use crate::models::{requests::RequestMethod, Model};
7
8use super::{CommonFields, LedgerIndex, LookupByLedgerRequest, Marker, Request};
9
10#[derive(Debug, Eq, PartialEq, Clone, Serialize, Deserialize, Display, EnumString)]
13#[strum(serialize_all = "snake_case")]
14#[serde(rename_all = "snake_case")]
15#[serde(tag = "type")]
16pub enum AccountObjectType {
17 Check,
18 DepositPreauth,
19 Escrow,
20 Offer,
21 PaymentChannel,
22 SignerList,
23 State,
24 Ticket,
25}
26
27#[skip_serializing_none]
34#[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Clone)]
35pub struct AccountObjects<'a> {
36 #[serde(flatten)]
38 pub common_fields: CommonFields<'a>,
39 pub account: Cow<'a, str>,
42 #[serde(flatten)]
44 pub ledger_lookup: Option<LookupByLedgerRequest<'a>>,
45 pub r#type: Option<AccountObjectType>,
50 pub deletion_blockers_only: Option<bool>,
53 pub limit: Option<u16>,
57 pub marker: Option<Marker<'a>>,
60}
61
62impl<'a> Model for AccountObjects<'a> {}
63
64impl<'a> Request<'a> for AccountObjects<'a> {
65 fn get_common_fields(&self) -> &CommonFields<'a> {
66 &self.common_fields
67 }
68
69 fn get_common_fields_mut(&mut self) -> &mut CommonFields<'a> {
70 &mut self.common_fields
71 }
72}
73
74impl<'a> AccountObjects<'a> {
75 pub fn new(
76 id: Option<Cow<'a, str>>,
77 account: Cow<'a, str>,
78 ledger_hash: Option<Cow<'a, str>>,
79 ledger_index: Option<LedgerIndex<'a>>,
80 r#type: Option<AccountObjectType>,
81 deletion_blockers_only: Option<bool>,
82 limit: Option<u16>,
83 marker: Option<Marker<'a>>,
84 ) -> Self {
85 Self {
86 common_fields: CommonFields {
87 command: RequestMethod::AccountObjects,
88 id,
89 },
90 account,
91 ledger_lookup: Some(LookupByLedgerRequest {
92 ledger_hash,
93 ledger_index,
94 }),
95 r#type,
96 deletion_blockers_only,
97 limit,
98 marker,
99 }
100 }
101}