rialo_api_types/
parameters.rs1use serde::{Deserialize, Serialize};
14
15pub use crate::messages::{
16 get_account_info::GetAccountInfoRequest, get_balance::GetBalanceRequest,
17 get_block::GetBlockRequest, get_connected_full_nodes::GetConnectedFullNodesRequest,
18 get_epoch_info::GetEpochInfoRequest, get_fee_for_message::GetFeeForMessageRequest,
19 get_health::GetHealthRequest,
20 get_minimum_balance_for_rent_exemption::GetMinimumBalanceForRentExemptionRequest,
21 get_multiple_accounts::GetMultipleAccountsRequest,
22 get_signature_statuses::GetSignatureStatusesRequest,
23 get_signatures_for_address::GetSignaturesForAddressRequest,
24 get_subscription::GetSubscriptionRequest, get_transaction::GetTransactionRequest,
25 get_transaction_count::GetTransactionCountRequest,
26 get_triggered_transactions::GetTriggeredTransactionsRequest,
27 get_validator_health::GetValidatorHealthRequest,
28 get_workflow_lineage::GetWorkflowLineageRequest, is_blockhash_valid::IsBlockhashValidRequest,
29 request_airdrop::RequestAirdropRequest, send_transaction::SendTransactionRequest,
30};
31
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
34pub struct AddressParam {
35 pub address: String,
36}
37
38impl AddressParam {
39 pub fn new(address: String) -> Self {
40 Self { address }
41 }
42}
43
44#[cfg(test)]
45mod tests {
46 use serde_json::{from_value, json, to_value};
47
48 use super::*;
49
50 #[test]
51 fn test_get_balance_request_serialization() {
52 let request =
53 GetBalanceRequest::new("84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri".to_string());
54 let json = to_value(&request).unwrap();
55 assert_eq!(
56 json,
57 json!({
58 "version": 0,
59 "address": "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri"
60 })
61 );
62
63 let deserialized: GetBalanceRequest = from_value(json).unwrap();
64 assert_eq!(deserialized, request);
65 }
66
67 #[test]
68 fn test_get_account_info_request_serialization() {
69 let request = GetAccountInfoRequest {
70 version: 0,
71 address: "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri".to_string(),
72 config: Some(crate::messages::get_account_info::GetAccountInfoConfig {
73 data_slice: None,
74 min_context_slot: None,
75 }),
76 };
77 let json = to_value(&request).unwrap();
78
79 let deserialized: GetAccountInfoRequest = from_value(json).unwrap();
80 assert_eq!(deserialized.address, request.address);
81 }
82
83 #[test]
84 fn test_request_airdrop_request_serialization() {
85 let request = RequestAirdropRequest::new(
86 "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri".to_string(),
87 1000000000,
88 );
89 let json = to_value(&request).unwrap();
90 assert_eq!(
91 json,
92 json!({"version": 0, "pubkey": "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri", "kelvins": 1000000000})
93 );
94
95 let deserialized: RequestAirdropRequest = from_value(json).unwrap();
96 assert_eq!(deserialized, request);
97 }
98
99 #[test]
100 fn test_get_signature_statuses_request_serialization() {
101 let signatures = vec!["signature1".to_string(), "signature2".to_string()];
102 let request = GetSignatureStatusesRequest {
103 version: 0,
104 signatures: signatures.clone(),
105 config: None,
106 };
107 let json = to_value(&request).unwrap();
108 assert_eq!(json, json!({"version": 0, "signatures": signatures}));
109
110 let deserialized: GetSignatureStatusesRequest = from_value(json).unwrap();
111 assert_eq!(deserialized.signatures, request.signatures);
112 }
113}