light_program_test/indexer/
extensions.rs

1use anchor_lang::solana_program::pubkey::Pubkey;
2use async_trait::async_trait;
3use light_client::indexer::{
4    AddressMerkleTreeAccounts, MerkleProof, NewAddressProofWithContext, StateMerkleTreeAccounts,
5};
6use light_compressed_account::{
7    compressed_account::CompressedAccountWithMerkleContext,
8    indexer_event::event::PublicTransactionEvent,
9};
10use light_sdk::token::TokenDataWithMerkleContext;
11use solana_sdk::signature::Keypair;
12
13use super::{address_tree::AddressMerkleTreeBundle, state_tree::StateMerkleTreeBundle};
14
15#[async_trait]
16pub trait TestIndexerExtensions {
17    fn get_address_merkle_trees(&self) -> &Vec<AddressMerkleTreeBundle>;
18
19    fn get_address_merkle_tree(
20        &self,
21        merkle_tree_pubkey: Pubkey,
22    ) -> Option<&AddressMerkleTreeBundle>;
23
24    fn add_compressed_accounts_with_token_data(
25        &mut self,
26        slot: u64,
27        event: &PublicTransactionEvent,
28    );
29
30    fn account_nullified(&mut self, merkle_tree_pubkey: Pubkey, account_hash: &str);
31
32    fn address_tree_updated(
33        &mut self,
34        merkle_tree_pubkey: Pubkey,
35        context: &NewAddressProofWithContext,
36    );
37
38    fn get_state_merkle_tree_accounts(&self, pubkeys: &[Pubkey]) -> Vec<StateMerkleTreeAccounts>;
39
40    fn get_state_merkle_trees(&self) -> &Vec<StateMerkleTreeBundle>;
41
42    fn get_state_merkle_trees_mut(&mut self) -> &mut Vec<StateMerkleTreeBundle>;
43
44    fn get_address_merkle_trees_mut(&mut self) -> &mut Vec<AddressMerkleTreeBundle>;
45
46    fn get_token_compressed_accounts(&self) -> &Vec<TokenDataWithMerkleContext>;
47
48    fn get_group_pda(&self) -> &Pubkey;
49
50    fn add_address_merkle_tree_accounts(
51        &mut self,
52        merkle_tree_keypair: &Keypair,
53        queue_keypair: &Keypair,
54        owning_program_id: Option<Pubkey>,
55    ) -> AddressMerkleTreeAccounts;
56
57    fn get_compressed_accounts_with_merkle_context_by_owner(
58        &self,
59        owner: &Pubkey,
60    ) -> Vec<CompressedAccountWithMerkleContext>;
61
62    fn add_state_bundle(&mut self, state_bundle: StateMerkleTreeBundle);
63
64    fn add_event_and_compressed_accounts(
65        &mut self,
66        slot: u64,
67        event: &PublicTransactionEvent,
68    ) -> (
69        Vec<CompressedAccountWithMerkleContext>,
70        Vec<TokenDataWithMerkleContext>,
71    );
72
73    fn get_proof_by_index(&mut self, merkle_tree_pubkey: Pubkey, index: u64) -> MerkleProof;
74
75    async fn finalize_batched_address_tree_update(
76        &mut self,
77        merkle_tree_pubkey: Pubkey,
78        account_data: &mut [u8],
79    );
80}