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