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 "address": "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri"
59 })
60 );
61
62 let deserialized: GetBalanceRequest = from_value(json).unwrap();
63 assert_eq!(deserialized, request);
64 }
65
66 #[test]
67 fn test_get_account_info_request_serialization() {
68 let request = GetAccountInfoRequest {
69 address: "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri".to_string(),
70 config: Some(crate::messages::get_account_info::GetAccountInfoConfig {
71 data_slice: None,
72 min_context_slot: None,
73 }),
74 };
75 let json = to_value(&request).unwrap();
76
77 let deserialized: GetAccountInfoRequest = from_value(json).unwrap();
78 assert_eq!(deserialized.address, request.address);
79 }
80
81 #[test]
82 fn test_request_airdrop_request_serialization() {
83 let request = RequestAirdropRequest::new(
84 "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri".to_string(),
85 1000000000,
86 );
87 let json = to_value(&request).unwrap();
88 assert_eq!(
89 json,
90 json!({"pubkey": "84astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDVcgri", "kelvins": 1000000000})
91 );
92
93 let deserialized: RequestAirdropRequest = from_value(json).unwrap();
94 assert_eq!(deserialized, request);
95 }
96
97 #[test]
98 fn test_get_signature_statuses_request_serialization() {
99 let signatures = vec!["signature1".to_string(), "signature2".to_string()];
100 let request = GetSignatureStatusesRequest {
101 signatures: signatures.clone(),
102 config: None,
103 };
104 let json = to_value(&request).unwrap();
105 assert_eq!(json, json!({"signatures": signatures}));
106
107 let deserialized: GetSignatureStatusesRequest = from_value(json).unwrap();
108 assert_eq!(deserialized.signatures, request.signatures);
109 }
110}