Skip to main content

satrush_client/generated/instructions/
claim_one_btc_reward.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 CLAIM_ONE_BTC_REWARD_DISCRIMINATOR: [u8; 8] = [53, 168, 61, 211, 206, 81, 133, 175];
12
13/// Accounts.
14#[derive(Debug)]
15pub struct ClaimOneBtcReward {
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                /// The winning receipt: must belong to this iteration; its owner is the
29/// prize recipient regardless of who signs.
30
31    
32              
33          pub ticket: solana_address::Address,
34                /// cannot redirect the prize.
35
36    
37              
38          pub winner: solana_address::Address,
39          
40              
41          pub btc_mint: solana_address::Address,
42          
43              
44          pub one_btc_vault_btc_ata: solana_address::Address,
45          
46              
47          pub winner_btc_ata: solana_address::Address,
48          
49              
50          pub token_program: solana_address::Address,
51          
52              
53          pub associated_token_program: solana_address::Address,
54          
55              
56          pub system_program: solana_address::Address,
57      }
58
59impl ClaimOneBtcReward {
60  pub fn instruction(&self) -> solana_instruction::Instruction {
61    self.instruction_with_remaining_accounts(&[])
62  }
63  #[allow(clippy::arithmetic_side_effects)]
64  #[allow(clippy::vec_init_then_push)]
65  pub fn instruction_with_remaining_accounts(&self, remaining_accounts: &[solana_instruction::AccountMeta]) -> solana_instruction::Instruction {
66    let mut accounts = Vec::with_capacity(12+ remaining_accounts.len());
67                            accounts.push(solana_instruction::AccountMeta::new(
68            self.authority,
69            true
70          ));
71                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
72            self.satrush_config,
73            false
74          ));
75                                          accounts.push(solana_instruction::AccountMeta::new(
76            self.one_btc_vault,
77            false
78          ));
79                                          accounts.push(solana_instruction::AccountMeta::new(
80            self.one_btc_vault_iteration,
81            false
82          ));
83                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
84            self.ticket,
85            false
86          ));
87                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
88            self.winner,
89            false
90          ));
91                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
92            self.btc_mint,
93            false
94          ));
95                                          accounts.push(solana_instruction::AccountMeta::new(
96            self.one_btc_vault_btc_ata,
97            false
98          ));
99                                          accounts.push(solana_instruction::AccountMeta::new(
100            self.winner_btc_ata,
101            false
102          ));
103                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
104            self.token_program,
105            false
106          ));
107                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
108            self.associated_token_program,
109            false
110          ));
111                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
112            self.system_program,
113            false
114          ));
115                      accounts.extend_from_slice(remaining_accounts);
116    let data = ClaimOneBtcRewardInstructionData::new().try_to_vec().unwrap();
117    
118    solana_instruction::Instruction {
119      program_id: crate::SATRUSH_ID,
120      accounts,
121      data,
122    }
123  }
124}
125
126#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
127 pub struct ClaimOneBtcRewardInstructionData {
128            discriminator: [u8; 8],
129      }
130
131impl ClaimOneBtcRewardInstructionData {
132  pub fn new() -> Self {
133    Self {
134                        discriminator: [53, 168, 61, 211, 206, 81, 133, 175],
135                  }
136  }
137
138    pub(crate) fn try_to_vec(&self) -> Result<Vec<u8>, std::io::Error> {
139    borsh::to_vec(self)
140  }
141  }
142
143impl Default for ClaimOneBtcRewardInstructionData {
144  fn default() -> Self {
145    Self::new()
146  }
147}
148
149
150
151/// Instruction builder for `ClaimOneBtcReward`.
152///
153/// ### Accounts:
154///
155                      ///   0. `[writable, signer]` authority
156          ///   1. `[]` satrush_config
157                ///   2. `[writable]` one_btc_vault
158                ///   3. `[writable]` one_btc_vault_iteration
159          ///   4. `[]` ticket
160          ///   5. `[]` winner
161          ///   6. `[]` btc_mint
162                ///   7. `[writable]` one_btc_vault_btc_ata
163                ///   8. `[writable]` winner_btc_ata
164                ///   9. `[optional]` token_program (default to `TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA`)
165                ///   10. `[optional]` associated_token_program (default to `ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL`)
166                ///   11. `[optional]` system_program (default to `11111111111111111111111111111111`)
167#[derive(Clone, Debug, Default)]
168pub struct ClaimOneBtcRewardBuilder {
169            authority: Option<solana_address::Address>,
170                satrush_config: Option<solana_address::Address>,
171                one_btc_vault: Option<solana_address::Address>,
172                one_btc_vault_iteration: Option<solana_address::Address>,
173                ticket: Option<solana_address::Address>,
174                winner: Option<solana_address::Address>,
175                btc_mint: Option<solana_address::Address>,
176                one_btc_vault_btc_ata: Option<solana_address::Address>,
177                winner_btc_ata: Option<solana_address::Address>,
178                token_program: Option<solana_address::Address>,
179                associated_token_program: Option<solana_address::Address>,
180                system_program: Option<solana_address::Address>,
181                __remaining_accounts: Vec<solana_instruction::AccountMeta>,
182}
183
184impl ClaimOneBtcRewardBuilder {
185  pub fn new() -> Self {
186    Self::default()
187  }
188            #[inline(always)]
189    pub fn authority(&mut self, authority: solana_address::Address) -> &mut Self {
190                        self.authority = Some(authority);
191                    self
192    }
193            #[inline(always)]
194    pub fn satrush_config(&mut self, satrush_config: solana_address::Address) -> &mut Self {
195                        self.satrush_config = Some(satrush_config);
196                    self
197    }
198            #[inline(always)]
199    pub fn one_btc_vault(&mut self, one_btc_vault: solana_address::Address) -> &mut Self {
200                        self.one_btc_vault = Some(one_btc_vault);
201                    self
202    }
203            #[inline(always)]
204    pub fn one_btc_vault_iteration(&mut self, one_btc_vault_iteration: solana_address::Address) -> &mut Self {
205                        self.one_btc_vault_iteration = Some(one_btc_vault_iteration);
206                    self
207    }
208            /// The winning receipt: must belong to this iteration; its owner is the
209/// prize recipient regardless of who signs.
210#[inline(always)]
211    pub fn ticket(&mut self, ticket: solana_address::Address) -> &mut Self {
212                        self.ticket = Some(ticket);
213                    self
214    }
215            /// cannot redirect the prize.
216#[inline(always)]
217    pub fn winner(&mut self, winner: solana_address::Address) -> &mut Self {
218                        self.winner = Some(winner);
219                    self
220    }
221            #[inline(always)]
222    pub fn btc_mint(&mut self, btc_mint: solana_address::Address) -> &mut Self {
223                        self.btc_mint = Some(btc_mint);
224                    self
225    }
226            #[inline(always)]
227    pub fn one_btc_vault_btc_ata(&mut self, one_btc_vault_btc_ata: solana_address::Address) -> &mut Self {
228                        self.one_btc_vault_btc_ata = Some(one_btc_vault_btc_ata);
229                    self
230    }
231            #[inline(always)]
232    pub fn winner_btc_ata(&mut self, winner_btc_ata: solana_address::Address) -> &mut Self {
233                        self.winner_btc_ata = Some(winner_btc_ata);
234                    self
235    }
236            /// `[optional account, default to 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA']`
237#[inline(always)]
238    pub fn token_program(&mut self, token_program: solana_address::Address) -> &mut Self {
239                        self.token_program = Some(token_program);
240                    self
241    }
242            /// `[optional account, default to 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL']`
243#[inline(always)]
244    pub fn associated_token_program(&mut self, associated_token_program: solana_address::Address) -> &mut Self {
245                        self.associated_token_program = Some(associated_token_program);
246                    self
247    }
248            /// `[optional account, default to '11111111111111111111111111111111']`
249#[inline(always)]
250    pub fn system_program(&mut self, system_program: solana_address::Address) -> &mut Self {
251                        self.system_program = Some(system_program);
252                    self
253    }
254            /// Add an additional account to the instruction.
255  #[inline(always)]
256  pub fn add_remaining_account(&mut self, account: solana_instruction::AccountMeta) -> &mut Self {
257    self.__remaining_accounts.push(account);
258    self
259  }
260  /// Add additional accounts to the instruction.
261  #[inline(always)]
262  pub fn add_remaining_accounts(&mut self, accounts: &[solana_instruction::AccountMeta]) -> &mut Self {
263    self.__remaining_accounts.extend_from_slice(accounts);
264    self
265  }
266  #[allow(clippy::clone_on_copy)]
267  pub fn instruction(&self) -> solana_instruction::Instruction {
268    let accounts = ClaimOneBtcReward {
269                              authority: self.authority.expect("authority is not set"),
270                                        satrush_config: self.satrush_config.expect("satrush_config is not set"),
271                                        one_btc_vault: self.one_btc_vault.expect("one_btc_vault is not set"),
272                                        one_btc_vault_iteration: self.one_btc_vault_iteration.expect("one_btc_vault_iteration is not set"),
273                                        ticket: self.ticket.expect("ticket is not set"),
274                                        winner: self.winner.expect("winner is not set"),
275                                        btc_mint: self.btc_mint.expect("btc_mint is not set"),
276                                        one_btc_vault_btc_ata: self.one_btc_vault_btc_ata.expect("one_btc_vault_btc_ata is not set"),
277                                        winner_btc_ata: self.winner_btc_ata.expect("winner_btc_ata is not set"),
278                                        token_program: self.token_program.unwrap_or(solana_address::address!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA")),
279                                        associated_token_program: self.associated_token_program.unwrap_or(solana_address::address!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL")),
280                                        system_program: self.system_program.unwrap_or(solana_address::address!("11111111111111111111111111111111")),
281                      };
282    
283    accounts.instruction_with_remaining_accounts(&self.__remaining_accounts)
284  }
285}
286
287  /// `claim_one_btc_reward` CPI accounts.
288  pub struct ClaimOneBtcRewardCpiAccounts<'a, 'b> {
289          
290                    
291              pub authority: &'b solana_account_info::AccountInfo<'a>,
292                
293                    
294              pub satrush_config: &'b solana_account_info::AccountInfo<'a>,
295                
296                    
297              pub one_btc_vault: &'b solana_account_info::AccountInfo<'a>,
298                
299                    
300              pub one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
301                        /// The winning receipt: must belong to this iteration; its owner is the
302/// prize recipient regardless of who signs.
303
304      
305                    
306              pub ticket: &'b solana_account_info::AccountInfo<'a>,
307                        /// cannot redirect the prize.
308
309      
310                    
311              pub winner: &'b solana_account_info::AccountInfo<'a>,
312                
313                    
314              pub btc_mint: &'b solana_account_info::AccountInfo<'a>,
315                
316                    
317              pub one_btc_vault_btc_ata: &'b solana_account_info::AccountInfo<'a>,
318                
319                    
320              pub winner_btc_ata: &'b solana_account_info::AccountInfo<'a>,
321                
322                    
323              pub token_program: &'b solana_account_info::AccountInfo<'a>,
324                
325                    
326              pub associated_token_program: &'b solana_account_info::AccountInfo<'a>,
327                
328                    
329              pub system_program: &'b solana_account_info::AccountInfo<'a>,
330            }
331
332/// `claim_one_btc_reward` CPI instruction.
333pub struct ClaimOneBtcRewardCpi<'a, 'b> {
334  /// The program to invoke.
335  pub __program: &'b solana_account_info::AccountInfo<'a>,
336      
337              
338          pub authority: &'b solana_account_info::AccountInfo<'a>,
339          
340              
341          pub satrush_config: &'b solana_account_info::AccountInfo<'a>,
342          
343              
344          pub one_btc_vault: &'b solana_account_info::AccountInfo<'a>,
345          
346              
347          pub one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>,
348                /// The winning receipt: must belong to this iteration; its owner is the
349/// prize recipient regardless of who signs.
350
351    
352              
353          pub ticket: &'b solana_account_info::AccountInfo<'a>,
354                /// cannot redirect the prize.
355
356    
357              
358          pub winner: &'b solana_account_info::AccountInfo<'a>,
359          
360              
361          pub btc_mint: &'b solana_account_info::AccountInfo<'a>,
362          
363              
364          pub one_btc_vault_btc_ata: &'b solana_account_info::AccountInfo<'a>,
365          
366              
367          pub winner_btc_ata: &'b solana_account_info::AccountInfo<'a>,
368          
369              
370          pub token_program: &'b solana_account_info::AccountInfo<'a>,
371          
372              
373          pub associated_token_program: &'b solana_account_info::AccountInfo<'a>,
374          
375              
376          pub system_program: &'b solana_account_info::AccountInfo<'a>,
377        }
378
379impl<'a, 'b> ClaimOneBtcRewardCpi<'a, 'b> {
380  pub fn new(
381    program: &'b solana_account_info::AccountInfo<'a>,
382          accounts: ClaimOneBtcRewardCpiAccounts<'a, 'b>,
383          ) -> Self {
384    Self {
385      __program: program,
386              authority: accounts.authority,
387              satrush_config: accounts.satrush_config,
388              one_btc_vault: accounts.one_btc_vault,
389              one_btc_vault_iteration: accounts.one_btc_vault_iteration,
390              ticket: accounts.ticket,
391              winner: accounts.winner,
392              btc_mint: accounts.btc_mint,
393              one_btc_vault_btc_ata: accounts.one_btc_vault_btc_ata,
394              winner_btc_ata: accounts.winner_btc_ata,
395              token_program: accounts.token_program,
396              associated_token_program: accounts.associated_token_program,
397              system_program: accounts.system_program,
398                }
399  }
400  #[inline(always)]
401  pub fn invoke(&self) -> solana_program_error::ProgramResult {
402    self.invoke_signed_with_remaining_accounts(&[], &[])
403  }
404  #[inline(always)]
405  pub fn invoke_with_remaining_accounts(&self, remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]) -> solana_program_error::ProgramResult {
406    self.invoke_signed_with_remaining_accounts(&[], remaining_accounts)
407  }
408  #[inline(always)]
409  pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program_error::ProgramResult {
410    self.invoke_signed_with_remaining_accounts(signers_seeds, &[])
411  }
412  #[allow(clippy::arithmetic_side_effects)]
413  #[allow(clippy::clone_on_copy)]
414  #[allow(clippy::vec_init_then_push)]
415  pub fn invoke_signed_with_remaining_accounts(
416    &self,
417    signers_seeds: &[&[&[u8]]],
418    remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]
419  ) -> solana_program_error::ProgramResult {
420    let mut accounts = Vec::with_capacity(12+ remaining_accounts.len());
421                            accounts.push(solana_instruction::AccountMeta::new(
422            *self.authority.key,
423            true
424          ));
425                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
426            *self.satrush_config.key,
427            false
428          ));
429                                          accounts.push(solana_instruction::AccountMeta::new(
430            *self.one_btc_vault.key,
431            false
432          ));
433                                          accounts.push(solana_instruction::AccountMeta::new(
434            *self.one_btc_vault_iteration.key,
435            false
436          ));
437                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
438            *self.ticket.key,
439            false
440          ));
441                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
442            *self.winner.key,
443            false
444          ));
445                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
446            *self.btc_mint.key,
447            false
448          ));
449                                          accounts.push(solana_instruction::AccountMeta::new(
450            *self.one_btc_vault_btc_ata.key,
451            false
452          ));
453                                          accounts.push(solana_instruction::AccountMeta::new(
454            *self.winner_btc_ata.key,
455            false
456          ));
457                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
458            *self.token_program.key,
459            false
460          ));
461                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
462            *self.associated_token_program.key,
463            false
464          ));
465                                          accounts.push(solana_instruction::AccountMeta::new_readonly(
466            *self.system_program.key,
467            false
468          ));
469                      remaining_accounts.iter().for_each(|remaining_account| {
470      accounts.push(solana_instruction::AccountMeta {
471          pubkey: *remaining_account.0.key,
472          is_signer: remaining_account.1,
473          is_writable: remaining_account.2,
474      })
475    });
476    let data = ClaimOneBtcRewardInstructionData::new().try_to_vec().unwrap();
477    
478    let instruction = solana_instruction::Instruction {
479      program_id: crate::SATRUSH_ID,
480      accounts,
481      data,
482    };
483    let mut account_infos = Vec::with_capacity(13 + remaining_accounts.len());
484    account_infos.push(self.__program.clone());
485                  account_infos.push(self.authority.clone());
486                        account_infos.push(self.satrush_config.clone());
487                        account_infos.push(self.one_btc_vault.clone());
488                        account_infos.push(self.one_btc_vault_iteration.clone());
489                        account_infos.push(self.ticket.clone());
490                        account_infos.push(self.winner.clone());
491                        account_infos.push(self.btc_mint.clone());
492                        account_infos.push(self.one_btc_vault_btc_ata.clone());
493                        account_infos.push(self.winner_btc_ata.clone());
494                        account_infos.push(self.token_program.clone());
495                        account_infos.push(self.associated_token_program.clone());
496                        account_infos.push(self.system_program.clone());
497              remaining_accounts.iter().for_each(|remaining_account| account_infos.push(remaining_account.0.clone()));
498
499    if signers_seeds.is_empty() {
500      solana_cpi::invoke(&instruction, &account_infos)
501    } else {
502      solana_cpi::invoke_signed(&instruction, &account_infos, signers_seeds)
503    }
504  }
505}
506
507/// Instruction builder for `ClaimOneBtcReward` via CPI.
508///
509/// ### Accounts:
510///
511                      ///   0. `[writable, signer]` authority
512          ///   1. `[]` satrush_config
513                ///   2. `[writable]` one_btc_vault
514                ///   3. `[writable]` one_btc_vault_iteration
515          ///   4. `[]` ticket
516          ///   5. `[]` winner
517          ///   6. `[]` btc_mint
518                ///   7. `[writable]` one_btc_vault_btc_ata
519                ///   8. `[writable]` winner_btc_ata
520          ///   9. `[]` token_program
521          ///   10. `[]` associated_token_program
522          ///   11. `[]` system_program
523#[derive(Clone, Debug)]
524pub struct ClaimOneBtcRewardCpiBuilder<'a, 'b> {
525  instruction: Box<ClaimOneBtcRewardCpiBuilderInstruction<'a, 'b>>,
526}
527
528impl<'a, 'b> ClaimOneBtcRewardCpiBuilder<'a, 'b> {
529  pub fn new(program: &'b solana_account_info::AccountInfo<'a>) -> Self {
530    let instruction = Box::new(ClaimOneBtcRewardCpiBuilderInstruction {
531      __program: program,
532              authority: None,
533              satrush_config: None,
534              one_btc_vault: None,
535              one_btc_vault_iteration: None,
536              ticket: None,
537              winner: None,
538              btc_mint: None,
539              one_btc_vault_btc_ata: None,
540              winner_btc_ata: None,
541              token_program: None,
542              associated_token_program: None,
543              system_program: None,
544                                __remaining_accounts: Vec::new(),
545    });
546    Self { instruction }
547  }
548      #[inline(always)]
549    pub fn authority(&mut self, authority: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
550                        self.instruction.authority = Some(authority);
551                    self
552    }
553      #[inline(always)]
554    pub fn satrush_config(&mut self, satrush_config: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
555                        self.instruction.satrush_config = Some(satrush_config);
556                    self
557    }
558      #[inline(always)]
559    pub fn one_btc_vault(&mut self, one_btc_vault: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
560                        self.instruction.one_btc_vault = Some(one_btc_vault);
561                    self
562    }
563      #[inline(always)]
564    pub fn one_btc_vault_iteration(&mut self, one_btc_vault_iteration: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
565                        self.instruction.one_btc_vault_iteration = Some(one_btc_vault_iteration);
566                    self
567    }
568      /// The winning receipt: must belong to this iteration; its owner is the
569/// prize recipient regardless of who signs.
570#[inline(always)]
571    pub fn ticket(&mut self, ticket: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
572                        self.instruction.ticket = Some(ticket);
573                    self
574    }
575      /// cannot redirect the prize.
576#[inline(always)]
577    pub fn winner(&mut self, winner: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
578                        self.instruction.winner = Some(winner);
579                    self
580    }
581      #[inline(always)]
582    pub fn btc_mint(&mut self, btc_mint: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
583                        self.instruction.btc_mint = Some(btc_mint);
584                    self
585    }
586      #[inline(always)]
587    pub fn one_btc_vault_btc_ata(&mut self, one_btc_vault_btc_ata: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
588                        self.instruction.one_btc_vault_btc_ata = Some(one_btc_vault_btc_ata);
589                    self
590    }
591      #[inline(always)]
592    pub fn winner_btc_ata(&mut self, winner_btc_ata: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
593                        self.instruction.winner_btc_ata = Some(winner_btc_ata);
594                    self
595    }
596      #[inline(always)]
597    pub fn token_program(&mut self, token_program: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
598                        self.instruction.token_program = Some(token_program);
599                    self
600    }
601      #[inline(always)]
602    pub fn associated_token_program(&mut self, associated_token_program: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
603                        self.instruction.associated_token_program = Some(associated_token_program);
604                    self
605    }
606      #[inline(always)]
607    pub fn system_program(&mut self, system_program: &'b solana_account_info::AccountInfo<'a>) -> &mut Self {
608                        self.instruction.system_program = Some(system_program);
609                    self
610    }
611            /// Add an additional account to the instruction.
612  #[inline(always)]
613  pub fn add_remaining_account(&mut self, account: &'b solana_account_info::AccountInfo<'a>, is_writable: bool, is_signer: bool) -> &mut Self {
614    self.instruction.__remaining_accounts.push((account, is_writable, is_signer));
615    self
616  }
617  /// Add additional accounts to the instruction.
618  ///
619  /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not,
620  /// and a `bool` indicating whether the account is a signer or not.
621  #[inline(always)]
622  pub fn add_remaining_accounts(&mut self, accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)]) -> &mut Self {
623    self.instruction.__remaining_accounts.extend_from_slice(accounts);
624    self
625  }
626  #[inline(always)]
627  pub fn invoke(&self) -> solana_program_error::ProgramResult {
628    self.invoke_signed(&[])
629  }
630  #[allow(clippy::clone_on_copy)]
631  #[allow(clippy::vec_init_then_push)]
632  pub fn invoke_signed(&self, signers_seeds: &[&[&[u8]]]) -> solana_program_error::ProgramResult {
633        let instruction = ClaimOneBtcRewardCpi {
634        __program: self.instruction.__program,
635                  
636          authority: self.instruction.authority.expect("authority is not set"),
637                  
638          satrush_config: self.instruction.satrush_config.expect("satrush_config is not set"),
639                  
640          one_btc_vault: self.instruction.one_btc_vault.expect("one_btc_vault is not set"),
641                  
642          one_btc_vault_iteration: self.instruction.one_btc_vault_iteration.expect("one_btc_vault_iteration is not set"),
643                  
644          ticket: self.instruction.ticket.expect("ticket is not set"),
645                  
646          winner: self.instruction.winner.expect("winner is not set"),
647                  
648          btc_mint: self.instruction.btc_mint.expect("btc_mint is not set"),
649                  
650          one_btc_vault_btc_ata: self.instruction.one_btc_vault_btc_ata.expect("one_btc_vault_btc_ata is not set"),
651                  
652          winner_btc_ata: self.instruction.winner_btc_ata.expect("winner_btc_ata is not set"),
653                  
654          token_program: self.instruction.token_program.expect("token_program is not set"),
655                  
656          associated_token_program: self.instruction.associated_token_program.expect("associated_token_program is not set"),
657                  
658          system_program: self.instruction.system_program.expect("system_program is not set"),
659                    };
660    instruction.invoke_signed_with_remaining_accounts(signers_seeds, &self.instruction.__remaining_accounts)
661  }
662}
663
664#[derive(Clone, Debug)]
665struct ClaimOneBtcRewardCpiBuilderInstruction<'a, 'b> {
666  __program: &'b solana_account_info::AccountInfo<'a>,
667            authority: Option<&'b solana_account_info::AccountInfo<'a>>,
668                satrush_config: Option<&'b solana_account_info::AccountInfo<'a>>,
669                one_btc_vault: Option<&'b solana_account_info::AccountInfo<'a>>,
670                one_btc_vault_iteration: Option<&'b solana_account_info::AccountInfo<'a>>,
671                ticket: Option<&'b solana_account_info::AccountInfo<'a>>,
672                winner: Option<&'b solana_account_info::AccountInfo<'a>>,
673                btc_mint: Option<&'b solana_account_info::AccountInfo<'a>>,
674                one_btc_vault_btc_ata: Option<&'b solana_account_info::AccountInfo<'a>>,
675                winner_btc_ata: Option<&'b solana_account_info::AccountInfo<'a>>,
676                token_program: Option<&'b solana_account_info::AccountInfo<'a>>,
677                associated_token_program: Option<&'b solana_account_info::AccountInfo<'a>>,
678                system_program: Option<&'b solana_account_info::AccountInfo<'a>>,
679                /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`.
680  __remaining_accounts: Vec<(&'b solana_account_info::AccountInfo<'a>, bool, bool)>,
681}
682