light_program_test/indexer/
extensions.rs1use 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}