1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
5pub struct DataSlice {
6 pub offset: usize,
8 pub length: usize,
10}
11
12#[derive(Debug, Serialize, Eq, Deserialize, Clone, PartialEq)]
14#[serde(untagged)]
15pub enum ProgramAccountFilter {
16 DataSize {
18 #[serde(rename = "dataSize")]
19 data_size: u64,
21 },
22 Memcmp {
24 memcmp: MemcmpFilter,
26 },
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
31pub struct MemcmpFilter {
32 pub offset: usize,
34 pub bytes: String,
36}
37
38#[derive(Debug, Serialize, Deserialize, Clone)]
40pub struct GetProgramAccountsConfig {
41 #[serde(rename = "skipData", skip_serializing_if = "Option::is_none")]
43 pub skip_data: Option<bool>,
44 #[serde(rename = "dataSlice", skip_serializing_if = "Option::is_none")]
46 pub data_slice: Option<DataSlice>,
47 #[serde(skip_serializing_if = "Option::is_none")]
49 pub filters: Option<Vec<ProgramAccountFilter>>,
50}
51
52#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
54#[serde(rename_all = "lowercase")]
55pub enum ProofType {
56 Creating,
58 Updating,
60 Existing,
62}
63
64#[derive(Debug, Serialize, Deserialize, Clone)]
66pub struct MakeStateProofConfig {
67 pub proof_type: ProofType,
69 #[serde(skip_serializing_if = "Option::is_none")]
71 pub slot: Option<u64>,
72}