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