account_compression/utils/
queue.rs

1use std::collections::HashMap;
2
3use anchor_lang::prelude::{AccountInfo, Pubkey};
4
5/// Mapping of address queue public keys to a bundle containing:
6///
7/// * The queue.
8/// * Associated Merkle tree.
9/// * Addresses to insert.
10pub type QueueMap<'info> = HashMap<Pubkey, QueueBundle<'info>>;
11
12/// A bundle containing:
13///
14/// * Address queue.
15/// * Merkle tree associated with that queue.
16/// * Addresses to insert to that queue.
17pub struct QueueBundle<'info> {
18    pub queue: &'info AccountInfo<'info>,
19    pub merkle_tree: &'info AccountInfo<'info>,
20    pub elements: Vec<[u8; 32]>,
21}
22
23impl<'info> QueueBundle<'info> {
24    pub fn new(queue: &'info AccountInfo<'info>, merkle_tree: &'info AccountInfo<'info>) -> Self {
25        Self {
26            queue,
27            merkle_tree,
28            elements: Vec::new(),
29        }
30    }
31}