/*
 * photon-indexer
 *
 * Solana indexer for general compression
 *
 * The version of the OpenAPI document: 0.50.0
 *
 * Generated by: https://openapi-generator.tech
 */

#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
#[allow(clippy::too_many_arguments)]
pub struct AddressQueueDataV2 {
    #[serde(rename = "addresses")]
    pub addresses: Vec<String>,
    #[serde(rename = "queueIndices")]
    pub queue_indices: Vec<u64>,
    /// Deduplicated tree nodes for address tree non-inclusion proofs
    /// node_index encoding: (level << 56) | position
    #[serde(rename = "nodes")]
    pub nodes: Vec<u64>,
    #[serde(rename = "nodeHashes")]
    pub node_hashes: Vec<String>,
    #[serde(rename = "lowElementIndices")]
    pub low_element_indices: Vec<u64>,
    #[serde(rename = "lowElementValues")]
    pub low_element_values: Vec<String>,
    #[serde(rename = "lowElementNextIndices")]
    pub low_element_next_indices: Vec<u64>,
    #[serde(rename = "lowElementNextValues")]
    pub low_element_next_values: Vec<String>,
    #[serde(rename = "lowElementProofs", default)]
    pub low_element_proofs: Vec<Vec<String>>,
    #[serde(rename = "leavesHashChains", default)]
    pub leaves_hash_chains: Vec<String>,
    #[serde(rename = "initialRoot")]
    pub initial_root: String,
    #[serde(rename = "startIndex")]
    pub start_index: u64,
    #[serde(rename = "subtrees", default)]
    pub subtrees: Vec<String>,
}

impl AddressQueueDataV2 {
    #[allow(clippy::too_many_arguments)]
    pub fn new(
        addresses: Vec<String>,
        queue_indices: Vec<u64>,
        nodes: Vec<u64>,
        node_hashes: Vec<String>,
        low_element_indices: Vec<u64>,
        low_element_values: Vec<String>,
        low_element_next_indices: Vec<u64>,
        low_element_next_values: Vec<String>,
        low_element_proofs: Vec<Vec<String>>,
        leaves_hash_chains: Vec<String>,
        initial_root: String,
        start_index: u64,
        subtrees: Vec<String>,
    ) -> AddressQueueDataV2 {
        AddressQueueDataV2 {
            addresses,
            queue_indices,
            nodes,
            node_hashes,
            low_element_indices,
            low_element_values,
            low_element_next_indices,
            low_element_next_values,
            low_element_proofs,
            leaves_hash_chains,
            initial_root,
            start_index,
            subtrees,
        }
    }
}
