use crate::{types::Meta, types::Transaction, Request};
use serde::{Deserialize, Serialize};
use xrpl_types::LedgerIndex;
#[derive(Default, Debug, Clone, Serialize)]
pub struct TransactionEntryRequest {
#[serde(skip_serializing_if = "Option::is_none")]
ledger_hash: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
ledger_index: Option<LedgerIndex>,
tx_hash: String,
}
impl Request for TransactionEntryRequest {
type Response = TransactionEntryResponse;
fn method(&self) -> String {
"transaction_entry".to_owned()
}
}
impl TransactionEntryRequest {
pub fn new(tx_hash: impl Into<String>) -> Self {
Self {
tx_hash: tx_hash.into(),
..Default::default()
}
}
pub fn ledger_index(self, ledger_index: LedgerIndex) -> Self {
Self {
ledger_index: Some(ledger_index),
..self
}
}
}
#[derive(Debug, Deserialize)]
pub struct TransactionEntryResponse {
pub ledger_index: u32,
pub ledger_hash: Option<String>,
pub metadata: Meta,
pub tx_json: Transaction,
}