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