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