Skip to main content

satrush_client/generated/instructions/
close_one_btc_iteration.rs

1//! This code was AUTOGENERATED using the codama library.
2//! Please DO NOT EDIT THIS FILE, instead use visitors
3//! to add features, then rerun codama to update it.
4//!
5//! <https://github.com/codama-idl/codama>
6//!
7
8use borsh::BorshSerialize;
9use borsh::BorshDeserialize;
10
11pub const CLOSE_ONE_BTC_ITERATION_DISCRIMINATOR: [u8; 8] = [181, 42, 174, 200, 192, 21, 27, 187];
12
13/// Accounts.
14#[derive(Debug)]
15pub struct CloseOneBtcIteration {
16      
17              
18          pub authority: solana_address::Address,
19          
20              
21          pub satrush_config: solana_address::Address,
22          
23              
24          pub one_btc_vault_iteration: solana_address::Address,
25      }
26
27impl CloseOneBtcIteration {
28  pub fn instruction(&self) -> solana_instruction::Instruction {
29    self.instruction_with_remaining_accounts(&[])
30  }
31  #[allow(clippy::arithmetic_side_effects)]
32  #[allow(clippy::vec_init_then_push)]
33  pub fn instruction_with_remaining_accounts(&self, remaining_accounts: &[solana_instruction::AccountMeta]) -> solana_instruction::Instruction {
34    let mut accounts = Vec::with_capacity(3+ remaining_accounts.len());
35                            accounts.push(solana_instruction::AccountMeta::new(
36            self.authority,
37            true
38          ));
39                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
40            self.satrush_config,
41            false
42          ));
43                                          accounts.push(solana_instruction::AccountMeta::new(
44            self.one_btc_vault_iteration,
45            false
46          ));
47                      accounts.extend_from_slice(remaining_accounts);
48    let data = CloseOneBtcIterationInstructionData::new().try_to_vec().unwrap();
49    
50    solana_instruction::Instruction {
51      program_id: crate::SATRUSH_ID,
52      accounts,
53      data,
54    }
55  }
56}
57
58#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
59 pub struct CloseOneBtcIterationInstructionData {
60            discriminator: [u8; 8],
61      }
62
63impl CloseOneBtcIterationInstructionData {
64  pub fn new() -> Self {
65    Self {
66                        discriminator: [181, 42, 174, 200, 192, 21, 27, 187],
67                  }
68  }
69
70    pub(crate) fn try_to_vec(&self) -> Result<Vec<u8>, std::io::Error> {
71    borsh::to_vec(self)
72  }
73  }
74
75impl Default for CloseOneBtcIterationInstructionData {
76  fn default() -> Self {
77    Self::new()
78  }
79}
80
81
82
83/// Instruction builder for `CloseOneBtcIteration`.
84///
85/// ### Accounts:
86///
87                      ///   0. `[writable, signer]` authority
88          ///   1. `[]` satrush_config
89                ///   2. `[writable]` one_btc_vault_iteration
90#[derive(Clone, Debug, Default)]
91pub struct CloseOneBtcIterationBuilder {
92            authority: Option<solana_address::Address>,
93                satrush_config: Option<solana_address::Address>,
94                one_btc_vault_iteration: Option<solana_address::Address>,
95                __remaining_accounts: Vec<solana_instruction::AccountMeta>,
96}
97
98impl CloseOneBtcIterationBuilder {
99  pub fn new() -> Self {
100    Self::default()
101  }
102            #[inline(always)]
103    pub fn authority(&mut self, authority: solana_address::Address) -> &mut Self {
104                        self.authority = Some(authority);
105                    self
106    }
107            #[inline(always)]
108    pub fn satrush_config(&mut self, satrush_config: solana_address::Address) -> &mut Self {
109                        self.satrush_config = Some(satrush_config);
110                    self
111    }
112            #[inline(always)]
113    pub fn one_btc_vault_iteration(&mut self, one_btc_vault_iteration: solana_address::Address) -> &mut Self {
114                        self.one_btc_vault_iteration = Some(one_btc_vault_iteration);
115                    self
116    }
117            /// Add an additional account to the instruction.
118  #[inline(always)]
119  pub fn add_remaining_account(&mut self, account: solana_instruction::AccountMeta) -> &mut Self {
120    self.__remaining_accounts.push(account);
121    self
122  }
123  /// Add additional accounts to the instruction.
124  #[inline(always)]
125  pub fn add_remaining_accounts(&mut self, accounts: &[solana_instruction::AccountMeta]) -> &mut Self {
126    self.__remaining_accounts.extend_from_slice(accounts);
127    self
128  }
129  #[allow(clippy::clone_on_copy)]
130  pub fn instruction(&self) -> solana_instruction::Instruction {
131    let accounts = CloseOneBtcIteration {
132                              authority: self.authority.expect("authority is not set"),
133                                        satrush_config: self.satrush_config.expect("satrush_config is not set"),
134                                        one_btc_vault_iteration: self.one_btc_vault_iteration.expect("one_btc_vault_iteration is not set"),
135                      };
136    
137    accounts.instruction_with_remaining_accounts(&self.__remaining_accounts)
138  }
139}
140
141  /// `close_one_btc_iteration` CPI accounts.
142  pub struct CloseOneBtcIterationCpiAccounts<'a, 'b> {
143          
144                    
145              pub authority: &'b solana_account_info::AccountInfo<'a>,
146                
147                    
148              pub satrush_config: &'b solana_account_info::AccountInfo<'a>,
149                
150                    
151              pub one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
152            }
153
154/// `close_one_btc_iteration` CPI instruction.
155pub struct CloseOneBtcIterationCpi<'a, 'b> {
156  /// The program to invoke.
157  pub __program: &'b solana_account_info::AccountInfo<'a>,
158      
159              
160          pub authority: &'b solana_account_info::AccountInfo<'a>,
161          
162              
163          pub satrush_config: &'b solana_account_info::AccountInfo<'a>,
164          
165              
166          pub one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
167        }
168
169impl<'a, 'b> CloseOneBtcIterationCpi<'a, 'b> {
170  pub fn new(
171    program: &'b solana_account_info::AccountInfo<'a>,
172          accounts: CloseOneBtcIterationCpiAccounts<'a, 'b>,
173          ) -> Self {
174    Self {
175      __program: program,
176              authority: accounts.authority,
177              satrush_config: accounts.satrush_config,
178              one_btc_vault_iteration: accounts.one_btc_vault_iteration,
179                }
180  }
181  #[inline(always)]
182  pub fn invoke(&self) -> solana_program_error::ProgramResult {
183    self.invoke_signed_with_remaining_accounts(&[], &[])
184  }
185  #[inline(always)]
186  pub fn invoke_with_remaining_accounts(&self, remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]) -> solana_program_error::ProgramResult {
187    self.invoke_signed_with_remaining_accounts(&[], remaining_accounts)
188  }
189  #[inline(always)]
190  pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program_error::ProgramResult {
191    self.invoke_signed_with_remaining_accounts(signers_seeds, &[])
192  }
193  #[allow(clippy::arithmetic_side_effects)]
194  #[allow(clippy::clone_on_copy)]
195  #[allow(clippy::vec_init_then_push)]
196  pub fn invoke_signed_with_remaining_accounts(
197    &self,
198    signers_seeds: &[&[&[u8]]],
199    remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]
200  ) -> solana_program_error::ProgramResult {
201    let mut accounts = Vec::with_capacity(3+ remaining_accounts.len());
202                            accounts.push(solana_instruction::AccountMeta::new(
203            *self.authority.key,
204            true
205          ));
206                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
207            *self.satrush_config.key,
208            false
209          ));
210                                          accounts.push(solana_instruction::AccountMeta::new(
211            *self.one_btc_vault_iteration.key,
212            false
213          ));
214                      remaining_accounts.iter().for_each(|remaining_account| {
215      accounts.push(solana_instruction::AccountMeta {
216          pubkey: *remaining_account.0.key,
217          is_signer: remaining_account.1,
218          is_writable: remaining_account.2,
219      })
220    });
221    let data = CloseOneBtcIterationInstructionData::new().try_to_vec().unwrap();
222    
223    let instruction = solana_instruction::Instruction {
224      program_id: crate::SATRUSH_ID,
225      accounts,
226      data,
227    };
228    let mut account_infos = Vec::with_capacity(4 + remaining_accounts.len());
229    account_infos.push(self.__program.clone());
230                  account_infos.push(self.authority.clone());
231                        account_infos.push(self.satrush_config.clone());
232                        account_infos.push(self.one_btc_vault_iteration.clone());
233              remaining_accounts.iter().for_each(|remaining_account| account_infos.push(remaining_account.0.clone()));
234
235    if signers_seeds.is_empty() {
236      solana_cpi::invoke(&instruction, &account_infos)
237    } else {
238      solana_cpi::invoke_signed(&instruction, &account_infos, signers_seeds)
239    }
240  }
241}
242
243/// Instruction builder for `CloseOneBtcIteration` via CPI.
244///
245/// ### Accounts:
246///
247                      ///   0. `[writable, signer]` authority
248          ///   1. `[]` satrush_config
249                ///   2. `[writable]` one_btc_vault_iteration
250#[derive(Clone, Debug)]
251pub struct CloseOneBtcIterationCpiBuilder<'a, 'b> {
252  instruction: Box<CloseOneBtcIterationCpiBuilderInstruction<'a, 'b>>,
253}
254
255impl<'a, 'b> CloseOneBtcIterationCpiBuilder<'a, 'b> {
256  pub fn new(program: &'b solana_account_info::AccountInfo<'a>) -> Self {
257    let instruction = Box::new(CloseOneBtcIterationCpiBuilderInstruction {
258      __program: program,
259              authority: None,
260              satrush_config: None,
261              one_btc_vault_iteration: None,
262                                __remaining_accounts: Vec::new(),
263    });
264    Self { instruction }
265  }
266      #[inline(always)]
267    pub fn authority(&mut self, authority: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
268                        self.instruction.authority = Some(authority);
269                    self
270    }
271      #[inline(always)]
272    pub fn satrush_config(&mut self, satrush_config: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
273                        self.instruction.satrush_config = Some(satrush_config);
274                    self
275    }
276      #[inline(always)]
277    pub fn one_btc_vault_iteration(&mut self, one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
278                        self.instruction.one_btc_vault_iteration = Some(one_btc_vault_iteration);
279                    self
280    }
281            /// Add an additional account to the instruction.
282  #[inline(always)]
283  pub fn add_remaining_account(&mut self, account: &'b solana_account_info::AccountInfo<'a>, is_writable: bool, is_signer: bool) -> &mut Self {
284    self.instruction.__remaining_accounts.push((account, is_writable, is_signer));
285    self
286  }
287  /// Add additional accounts to the instruction.
288  ///
289  /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not,
290  /// and a `bool` indicating whether the account is a signer or not.
291  #[inline(always)]
292  pub fn add_remaining_accounts(&mut self, accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]) -> &mut Self {
293    self.instruction.__remaining_accounts.extend_from_slice(accounts);
294    self
295  }
296  #[inline(always)]
297  pub fn invoke(&self) -> solana_program_error::ProgramResult {
298    self.invoke_signed(&[])
299  }
300  #[allow(clippy::clone_on_copy)]
301  #[allow(clippy::vec_init_then_push)]
302  pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program_error::ProgramResult {
303        let instruction = CloseOneBtcIterationCpi {
304        __program: self.instruction.__program,
305                  
306          authority: self.instruction.authority.expect("authority is not set"),
307                  
308          satrush_config: self.instruction.satrush_config.expect("satrush_config is not set"),
309                  
310          one_btc_vault_iteration: self.instruction.one_btc_vault_iteration.expect("one_btc_vault_iteration is not set"),
311                    };
312    instruction.invoke_signed_with_remaining_accounts(signers_seeds, &self.instruction.__remaining_accounts)
313  }
314}
315
316#[derive(Clone, Debug)]
317struct CloseOneBtcIterationCpiBuilderInstruction<'a, 'b> {
318  __program: &'b solana_account_info::AccountInfo<'a>,
319            authority: Option<&'b solana_account_info::AccountInfo<'a>>,
320                satrush_config: Option<&'b solana_account_info::AccountInfo<'a>>,
321                one_btc_vault_iteration: Option<&'b solana_account_info::AccountInfo<'a>>,
322                /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`.
323  __remaining_accounts: Vec<(&'b solana_account_info::AccountInfo<'a>, bool, bool)>,
324}
325