Skip to main content

satrush_client/generated/instructions/
trigger_one_btc_draw.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 TRIGGER_ONE_BTC_DRAW_DISCRIMINATOR: [u8; 8] = [252, 210, 238, 28, 169, 118, 28, 11];
12
13/// Accounts.
14#[derive(Debug)]
15pub struct TriggerOneBtcDraw {
16      
17              
18          pub authority: solana_address::Address,
19          
20              
21          pub satrush_config: solana_address::Address,
22                /// The btc rotor's registered rearm authority: signs the arm CPI.
23
24    
25              
26          pub one_btc_vault: solana_address::Address,
27          
28              
29          pub one_btc_vault_iteration: solana_address::Address,
30          
31              
32          pub next_one_btc_vault_iteration: solana_address::Address,
33          
34              
35          pub system_program: solana_address::Address,
36      }
37
38impl TriggerOneBtcDraw {
39  pub fn instruction(&self) -> solana_instruction::Instruction {
40    self.instruction_with_remaining_accounts(&[])
41  }
42  #[allow(clippy::arithmetic_side_effects)]
43  #[allow(clippy::vec_init_then_push)]
44  pub fn instruction_with_remaining_accounts(&self, remaining_accounts: &[solana_instruction::AccountMeta]) -> solana_instruction::Instruction {
45    let mut accounts = Vec::with_capacity(6+ remaining_accounts.len());
46                            accounts.push(solana_instruction::AccountMeta::new(
47            self.authority,
48            true
49          ));
50                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
51            self.satrush_config,
52            false
53          ));
54                                          accounts.push(solana_instruction::AccountMeta::new(
55            self.one_btc_vault,
56            false
57          ));
58                                          accounts.push(solana_instruction::AccountMeta::new(
59            self.one_btc_vault_iteration,
60            false
61          ));
62                                          accounts.push(solana_instruction::AccountMeta::new(
63            self.next_one_btc_vault_iteration,
64            false
65          ));
66                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
67            self.system_program,
68            false
69          ));
70                      accounts.extend_from_slice(remaining_accounts);
71    let data = TriggerOneBtcDrawInstructionData::new().try_to_vec().unwrap();
72    
73    solana_instruction::Instruction {
74      program_id: crate::SATRUSH_ID,
75      accounts,
76      data,
77    }
78  }
79}
80
81#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
82 pub struct TriggerOneBtcDrawInstructionData {
83            discriminator: [u8; 8],
84      }
85
86impl TriggerOneBtcDrawInstructionData {
87  pub fn new() -> Self {
88    Self {
89                        discriminator: [252, 210, 238, 28, 169, 118, 28, 11],
90                  }
91  }
92
93    pub(crate) fn try_to_vec(&self) -> Result<Vec<u8>, std::io::Error> {
94    borsh::to_vec(self)
95  }
96  }
97
98impl Default for TriggerOneBtcDrawInstructionData {
99  fn default() -> Self {
100    Self::new()
101  }
102}
103
104
105
106/// Instruction builder for `TriggerOneBtcDraw`.
107///
108/// ### Accounts:
109///
110                      ///   0. `[writable, signer]` authority
111          ///   1. `[]` satrush_config
112                ///   2. `[writable]` one_btc_vault
113                ///   3. `[writable]` one_btc_vault_iteration
114                ///   4. `[writable]` next_one_btc_vault_iteration
115                ///   5. `[optional]` system_program (default to `11111111111111111111111111111111`)
116#[derive(Clone, Debug, Default)]
117pub struct TriggerOneBtcDrawBuilder {
118            authority: Option<solana_address::Address>,
119                satrush_config: Option<solana_address::Address>,
120                one_btc_vault: Option<solana_address::Address>,
121                one_btc_vault_iteration: Option<solana_address::Address>,
122                next_one_btc_vault_iteration: Option<solana_address::Address>,
123                system_program: Option<solana_address::Address>,
124                __remaining_accounts: Vec<solana_instruction::AccountMeta>,
125}
126
127impl TriggerOneBtcDrawBuilder {
128  pub fn new() -> Self {
129    Self::default()
130  }
131            #[inline(always)]
132    pub fn authority(&mut self, authority: solana_address::Address) -> &mut Self {
133                        self.authority = Some(authority);
134                    self
135    }
136            #[inline(always)]
137    pub fn satrush_config(&mut self, satrush_config: solana_address::Address) -> &mut Self {
138                        self.satrush_config = Some(satrush_config);
139                    self
140    }
141            /// The btc rotor's registered rearm authority: signs the arm CPI.
142#[inline(always)]
143    pub fn one_btc_vault(&mut self, one_btc_vault: solana_address::Address) -> &mut Self {
144                        self.one_btc_vault = Some(one_btc_vault);
145                    self
146    }
147            #[inline(always)]
148    pub fn one_btc_vault_iteration(&mut self, one_btc_vault_iteration: solana_address::Address) -> &mut Self {
149                        self.one_btc_vault_iteration = Some(one_btc_vault_iteration);
150                    self
151    }
152            #[inline(always)]
153    pub fn next_one_btc_vault_iteration(&mut self, next_one_btc_vault_iteration: solana_address::Address) -> &mut Self {
154                        self.next_one_btc_vault_iteration = Some(next_one_btc_vault_iteration);
155                    self
156    }
157            /// `[optional account, default to '11111111111111111111111111111111']`
158#[inline(always)]
159    pub fn system_program(&mut self, system_program: solana_address::Address) -> &mut Self {
160                        self.system_program = Some(system_program);
161                    self
162    }
163            /// Add an additional account to the instruction.
164  #[inline(always)]
165  pub fn add_remaining_account(&mut self, account: solana_instruction::AccountMeta) -> &mut Self {
166    self.__remaining_accounts.push(account);
167    self
168  }
169  /// Add additional accounts to the instruction.
170  #[inline(always)]
171  pub fn add_remaining_accounts(&mut self, accounts: &[solana_instruction::AccountMeta]) -> &mut Self {
172    self.__remaining_accounts.extend_from_slice(accounts);
173    self
174  }
175  #[allow(clippy::clone_on_copy)]
176  pub fn instruction(&self) -> solana_instruction::Instruction {
177    let accounts = TriggerOneBtcDraw {
178                              authority: self.authority.expect("authority is not set"),
179                                        satrush_config: self.satrush_config.expect("satrush_config is not set"),
180                                        one_btc_vault: self.one_btc_vault.expect("one_btc_vault is not set"),
181                                        one_btc_vault_iteration: self.one_btc_vault_iteration.expect("one_btc_vault_iteration is not set"),
182                                        next_one_btc_vault_iteration: self.next_one_btc_vault_iteration.expect("next_one_btc_vault_iteration is not set"),
183                                        system_program: self.system_program.unwrap_or(solana_address::address!("11111111111111111111111111111111")),
184                      };
185    
186    accounts.instruction_with_remaining_accounts(&self.__remaining_accounts)
187  }
188}
189
190  /// `trigger_one_btc_draw` CPI accounts.
191  pub struct TriggerOneBtcDrawCpiAccounts<'a, 'b> {
192          
193                    
194              pub authority: &'b solana_account_info::AccountInfo<'a>,
195                
196                    
197              pub satrush_config: &'b solana_account_info::AccountInfo<'a>,
198                        /// The btc rotor's registered rearm authority: signs the arm CPI.
199
200      
201                    
202              pub one_btc_vault: &'b solana_account_info::AccountInfo<'a>,
203                
204                    
205              pub one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
206                
207                    
208              pub next_one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
209                
210                    
211              pub system_program: &'b solana_account_info::AccountInfo<'a>,
212            }
213
214/// `trigger_one_btc_draw` CPI instruction.
215pub struct TriggerOneBtcDrawCpi<'a, 'b> {
216  /// The program to invoke.
217  pub __program: &'b solana_account_info::AccountInfo<'a>,
218      
219              
220          pub authority: &'b solana_account_info::AccountInfo<'a>,
221          
222              
223          pub satrush_config: &'b solana_account_info::AccountInfo<'a>,
224                /// The btc rotor's registered rearm authority: signs the arm CPI.
225
226    
227              
228          pub one_btc_vault: &'b solana_account_info::AccountInfo<'a>,
229          
230              
231          pub one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
232          
233              
234          pub next_one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
235          
236              
237          pub system_program: &'b solana_account_info::AccountInfo<'a>,
238        }
239
240impl<'a, 'b> TriggerOneBtcDrawCpi<'a, 'b> {
241  pub fn new(
242    program: &'b solana_account_info::AccountInfo<'a>,
243          accounts: TriggerOneBtcDrawCpiAccounts<'a, 'b>,
244          ) -> Self {
245    Self {
246      __program: program,
247              authority: accounts.authority,
248              satrush_config: accounts.satrush_config,
249              one_btc_vault: accounts.one_btc_vault,
250              one_btc_vault_iteration: accounts.one_btc_vault_iteration,
251              next_one_btc_vault_iteration: accounts.next_one_btc_vault_iteration,
252              system_program: accounts.system_program,
253                }
254  }
255  #[inline(always)]
256  pub fn invoke(&self) -> solana_program_error::ProgramResult {
257    self.invoke_signed_with_remaining_accounts(&[], &[])
258  }
259  #[inline(always)]
260  pub fn invoke_with_remaining_accounts(&self, remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]) -> solana_program_error::ProgramResult {
261    self.invoke_signed_with_remaining_accounts(&[], remaining_accounts)
262  }
263  #[inline(always)]
264  pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program_error::ProgramResult {
265    self.invoke_signed_with_remaining_accounts(signers_seeds, &[])
266  }
267  #[allow(clippy::arithmetic_side_effects)]
268  #[allow(clippy::clone_on_copy)]
269  #[allow(clippy::vec_init_then_push)]
270  pub fn invoke_signed_with_remaining_accounts(
271    &self,
272    signers_seeds: &[&[&[u8]]],
273    remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]
274  ) -> solana_program_error::ProgramResult {
275    let mut accounts = Vec::with_capacity(6+ remaining_accounts.len());
276                            accounts.push(solana_instruction::AccountMeta::new(
277            *self.authority.key,
278            true
279          ));
280                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
281            *self.satrush_config.key,
282            false
283          ));
284                                          accounts.push(solana_instruction::AccountMeta::new(
285            *self.one_btc_vault.key,
286            false
287          ));
288                                          accounts.push(solana_instruction::AccountMeta::new(
289            *self.one_btc_vault_iteration.key,
290            false
291          ));
292                                          accounts.push(solana_instruction::AccountMeta::new(
293            *self.next_one_btc_vault_iteration.key,
294            false
295          ));
296                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
297            *self.system_program.key,
298            false
299          ));
300                      remaining_accounts.iter().for_each(|remaining_account| {
301      accounts.push(solana_instruction::AccountMeta {
302          pubkey: *remaining_account.0.key,
303          is_signer: remaining_account.1,
304          is_writable: remaining_account.2,
305      })
306    });
307    let data = TriggerOneBtcDrawInstructionData::new().try_to_vec().unwrap();
308    
309    let instruction = solana_instruction::Instruction {
310      program_id: crate::SATRUSH_ID,
311      accounts,
312      data,
313    };
314    let mut account_infos = Vec::with_capacity(7 + remaining_accounts.len());
315    account_infos.push(self.__program.clone());
316                  account_infos.push(self.authority.clone());
317                        account_infos.push(self.satrush_config.clone());
318                        account_infos.push(self.one_btc_vault.clone());
319                        account_infos.push(self.one_btc_vault_iteration.clone());
320                        account_infos.push(self.next_one_btc_vault_iteration.clone());
321                        account_infos.push(self.system_program.clone());
322              remaining_accounts.iter().for_each(|remaining_account| account_infos.push(remaining_account.0.clone()));
323
324    if signers_seeds.is_empty() {
325      solana_cpi::invoke(&instruction, &account_infos)
326    } else {
327      solana_cpi::invoke_signed(&instruction, &account_infos, signers_seeds)
328    }
329  }
330}
331
332/// Instruction builder for `TriggerOneBtcDraw` via CPI.
333///
334/// ### Accounts:
335///
336                      ///   0. `[writable, signer]` authority
337          ///   1. `[]` satrush_config
338                ///   2. `[writable]` one_btc_vault
339                ///   3. `[writable]` one_btc_vault_iteration
340                ///   4. `[writable]` next_one_btc_vault_iteration
341          ///   5. `[]` system_program
342#[derive(Clone, Debug)]
343pub struct TriggerOneBtcDrawCpiBuilder<'a, 'b> {
344  instruction: Box<TriggerOneBtcDrawCpiBuilderInstruction<'a, 'b>>,
345}
346
347impl<'a, 'b> TriggerOneBtcDrawCpiBuilder<'a, 'b> {
348  pub fn new(program: &'b solana_account_info::AccountInfo<'a>) -> Self {
349    let instruction = Box::new(TriggerOneBtcDrawCpiBuilderInstruction {
350      __program: program,
351              authority: None,
352              satrush_config: None,
353              one_btc_vault: None,
354              one_btc_vault_iteration: None,
355              next_one_btc_vault_iteration: None,
356              system_program: None,
357                                __remaining_accounts: Vec::new(),
358    });
359    Self { instruction }
360  }
361      #[inline(always)]
362    pub fn authority(&mut self, authority: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
363                        self.instruction.authority = Some(authority);
364                    self
365    }
366      #[inline(always)]
367    pub fn satrush_config(&mut self, satrush_config: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
368                        self.instruction.satrush_config = Some(satrush_config);
369                    self
370    }
371      /// The btc rotor's registered rearm authority: signs the arm CPI.
372#[inline(always)]
373    pub fn one_btc_vault(&mut self, one_btc_vault: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
374                        self.instruction.one_btc_vault = Some(one_btc_vault);
375                    self
376    }
377      #[inline(always)]
378    pub fn one_btc_vault_iteration(&mut self, one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
379                        self.instruction.one_btc_vault_iteration = Some(one_btc_vault_iteration);
380                    self
381    }
382      #[inline(always)]
383    pub fn next_one_btc_vault_iteration(&mut self, next_one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
384                        self.instruction.next_one_btc_vault_iteration = Some(next_one_btc_vault_iteration);
385                    self
386    }
387      #[inline(always)]
388    pub fn system_program(&mut self, system_program: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
389                        self.instruction.system_program = Some(system_program);
390                    self
391    }
392            /// Add an additional account to the instruction.
393  #[inline(always)]
394  pub fn add_remaining_account(&mut self, account: &'b solana_account_info::AccountInfo<'a>, is_writable: bool, is_signer: bool) -> &mut Self {
395    self.instruction.__remaining_accounts.push((account, is_writable, is_signer));
396    self
397  }
398  /// Add additional accounts to the instruction.
399  ///
400  /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not,
401  /// and a `bool` indicating whether the account is a signer or not.
402  #[inline(always)]
403  pub fn add_remaining_accounts(&mut self, accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]) -> &mut Self {
404    self.instruction.__remaining_accounts.extend_from_slice(accounts);
405    self
406  }
407  #[inline(always)]
408  pub fn invoke(&self) -> solana_program_error::ProgramResult {
409    self.invoke_signed(&[])
410  }
411  #[allow(clippy::clone_on_copy)]
412  #[allow(clippy::vec_init_then_push)]
413  pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program_error::ProgramResult {
414        let instruction = TriggerOneBtcDrawCpi {
415        __program: self.instruction.__program,
416                  
417          authority: self.instruction.authority.expect("authority is not set"),
418                  
419          satrush_config: self.instruction.satrush_config.expect("satrush_config is not set"),
420                  
421          one_btc_vault: self.instruction.one_btc_vault.expect("one_btc_vault is not set"),
422                  
423          one_btc_vault_iteration: self.instruction.one_btc_vault_iteration.expect("one_btc_vault_iteration is not set"),
424                  
425          next_one_btc_vault_iteration: self.instruction.next_one_btc_vault_iteration.expect("next_one_btc_vault_iteration is not set"),
426                  
427          system_program: self.instruction.system_program.expect("system_program is not set"),
428                    };
429    instruction.invoke_signed_with_remaining_accounts(signers_seeds, &self.instruction.__remaining_accounts)
430  }
431}
432
433#[derive(Clone, Debug)]
434struct TriggerOneBtcDrawCpiBuilderInstruction<'a, 'b> {
435  __program: &'b solana_account_info::AccountInfo<'a>,
436            authority: Option<&'b solana_account_info::AccountInfo<'a>>,
437                satrush_config: Option<&'b solana_account_info::AccountInfo<'a>>,
438                one_btc_vault: Option<&'b solana_account_info::AccountInfo<'a>>,
439                one_btc_vault_iteration: Option<&'b solana_account_info::AccountInfo<'a>>,
440                next_one_btc_vault_iteration: Option<&'b solana_account_info::AccountInfo<'a>>,
441                system_program: Option<&'b solana_account_info::AccountInfo<'a>>,
442                /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`.
443  __remaining_accounts: Vec<(&'b solana_account_info::AccountInfo<'a>, bool, bool)>,
444}
445