Skip to main content

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