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