Skip to main content

crucible_test_context/
transaction_builder.rs

1use crate::TestContext;
2use anchor_lang::solana_program::instruction::Instruction;
3use solana_keypair::Keypair;
4
5pub struct TransactionBuilder<'a> {
6    pub(crate) ctx: &'a mut TestContext,
7    pub(crate) instructions: Vec<Instruction>,
8    pub(crate) signers: Vec<Keypair>,
9}
10
11impl TransactionBuilder<'_> {
12    pub fn add_instruction<F>(mut self, builder: F) -> Self
13    where
14        F: FnOnce() -> Instruction,
15    {
16        self.instructions.push(builder());
17        self
18    }
19
20    pub fn signers(mut self, signers: &[&Keypair]) -> Self {
21        self.signers = signers.iter().map(|k| k.insecure_clone()).collect();
22        self
23    }
24
25    pub fn send(self) -> anyhow::Result<litesvm::types::TransactionResult> {
26        todo!("Transaction batching not yet implemented")
27    }
28}