1use borsh::BorshDeserialize;
9use borsh::BorshSerialize;
10
11pub struct BuyWnsSpl {
13 pub fee_vault: solana_program::pubkey::Pubkey,
14
15 pub fee_vault_currency_ta: solana_program::pubkey::Pubkey,
16
17 pub buyer: solana_program::pubkey::Pubkey,
18
19 pub buyer_ta: solana_program::pubkey::Pubkey,
20
21 pub list_ta: solana_program::pubkey::Pubkey,
22
23 pub list_state: solana_program::pubkey::Pubkey,
24 pub mint: solana_program::pubkey::Pubkey,
26 pub currency: solana_program::pubkey::Pubkey,
28
29 pub owner: solana_program::pubkey::Pubkey,
30
31 pub owner_currency_ta: solana_program::pubkey::Pubkey,
32
33 pub payer: solana_program::pubkey::Pubkey,
34
35 pub payer_currency_ta: solana_program::pubkey::Pubkey,
36
37 pub taker_broker: Option<solana_program::pubkey::Pubkey>,
38
39 pub taker_broker_currency_ta: Option<solana_program::pubkey::Pubkey>,
40
41 pub maker_broker: Option<solana_program::pubkey::Pubkey>,
42
43 pub maker_broker_currency_ta: Option<solana_program::pubkey::Pubkey>,
44
45 pub rent_destination: solana_program::pubkey::Pubkey,
46
47 pub token_program: solana_program::pubkey::Pubkey,
48
49 pub currency_token_program: solana_program::pubkey::Pubkey,
50
51 pub associated_token_program: solana_program::pubkey::Pubkey,
52
53 pub marketplace_program: solana_program::pubkey::Pubkey,
54
55 pub system_program: solana_program::pubkey::Pubkey,
56
57 pub approve: solana_program::pubkey::Pubkey,
58
59 pub distribution: solana_program::pubkey::Pubkey,
60
61 pub distribution_currency_ta: solana_program::pubkey::Pubkey,
62
63 pub wns_program: solana_program::pubkey::Pubkey,
64
65 pub distribution_program: solana_program::pubkey::Pubkey,
66
67 pub extra_metas: solana_program::pubkey::Pubkey,
68
69 pub cosigner: Option<solana_program::pubkey::Pubkey>,
70}
71
72impl BuyWnsSpl {
73 pub fn instruction(
74 &self,
75 args: BuyWnsSplInstructionArgs,
76 ) -> solana_program::instruction::Instruction {
77 self.instruction_with_remaining_accounts(args, &[])
78 }
79 #[allow(clippy::vec_init_then_push)]
80 pub fn instruction_with_remaining_accounts(
81 &self,
82 args: BuyWnsSplInstructionArgs,
83 remaining_accounts: &[solana_program::instruction::AccountMeta],
84 ) -> solana_program::instruction::Instruction {
85 let mut accounts = Vec::with_capacity(29 + remaining_accounts.len());
86 accounts.push(solana_program::instruction::AccountMeta::new(
87 self.fee_vault,
88 false,
89 ));
90 accounts.push(solana_program::instruction::AccountMeta::new(
91 self.fee_vault_currency_ta,
92 false,
93 ));
94 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
95 self.buyer, false,
96 ));
97 accounts.push(solana_program::instruction::AccountMeta::new(
98 self.buyer_ta,
99 false,
100 ));
101 accounts.push(solana_program::instruction::AccountMeta::new(
102 self.list_ta,
103 false,
104 ));
105 accounts.push(solana_program::instruction::AccountMeta::new(
106 self.list_state,
107 false,
108 ));
109 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
110 self.mint, false,
111 ));
112 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
113 self.currency,
114 false,
115 ));
116 accounts.push(solana_program::instruction::AccountMeta::new(
117 self.owner, false,
118 ));
119 accounts.push(solana_program::instruction::AccountMeta::new(
120 self.owner_currency_ta,
121 false,
122 ));
123 accounts.push(solana_program::instruction::AccountMeta::new(
124 self.payer, true,
125 ));
126 accounts.push(solana_program::instruction::AccountMeta::new(
127 self.payer_currency_ta,
128 false,
129 ));
130 if let Some(taker_broker) = self.taker_broker {
131 accounts.push(solana_program::instruction::AccountMeta::new(
132 taker_broker,
133 false,
134 ));
135 } else {
136 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
137 crate::TENSOR_MARKETPLACE_ID,
138 false,
139 ));
140 }
141 if let Some(taker_broker_currency_ta) = self.taker_broker_currency_ta {
142 accounts.push(solana_program::instruction::AccountMeta::new(
143 taker_broker_currency_ta,
144 false,
145 ));
146 } else {
147 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
148 crate::TENSOR_MARKETPLACE_ID,
149 false,
150 ));
151 }
152 if let Some(maker_broker) = self.maker_broker {
153 accounts.push(solana_program::instruction::AccountMeta::new(
154 maker_broker,
155 false,
156 ));
157 } else {
158 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
159 crate::TENSOR_MARKETPLACE_ID,
160 false,
161 ));
162 }
163 if let Some(maker_broker_currency_ta) = self.maker_broker_currency_ta {
164 accounts.push(solana_program::instruction::AccountMeta::new(
165 maker_broker_currency_ta,
166 false,
167 ));
168 } else {
169 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
170 crate::TENSOR_MARKETPLACE_ID,
171 false,
172 ));
173 }
174 accounts.push(solana_program::instruction::AccountMeta::new(
175 self.rent_destination,
176 false,
177 ));
178 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
179 self.token_program,
180 false,
181 ));
182 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
183 self.currency_token_program,
184 false,
185 ));
186 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
187 self.associated_token_program,
188 false,
189 ));
190 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
191 self.marketplace_program,
192 false,
193 ));
194 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
195 self.system_program,
196 false,
197 ));
198 accounts.push(solana_program::instruction::AccountMeta::new(
199 self.approve,
200 false,
201 ));
202 accounts.push(solana_program::instruction::AccountMeta::new(
203 self.distribution,
204 false,
205 ));
206 accounts.push(solana_program::instruction::AccountMeta::new(
207 self.distribution_currency_ta,
208 false,
209 ));
210 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
211 self.wns_program,
212 false,
213 ));
214 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
215 self.distribution_program,
216 false,
217 ));
218 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
219 self.extra_metas,
220 false,
221 ));
222 if let Some(cosigner) = self.cosigner {
223 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
224 cosigner, true,
225 ));
226 } else {
227 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
228 crate::TENSOR_MARKETPLACE_ID,
229 false,
230 ));
231 }
232 accounts.extend_from_slice(remaining_accounts);
233 let mut data = BuyWnsSplInstructionData::new().try_to_vec().unwrap();
234 let mut args = args.try_to_vec().unwrap();
235 data.append(&mut args);
236
237 solana_program::instruction::Instruction {
238 program_id: crate::TENSOR_MARKETPLACE_ID,
239 accounts,
240 data,
241 }
242 }
243}
244
245#[derive(BorshDeserialize, BorshSerialize)]
246pub struct BuyWnsSplInstructionData {
247 discriminator: [u8; 8],
248}
249
250impl BuyWnsSplInstructionData {
251 pub fn new() -> Self {
252 Self {
253 discriminator: [113, 137, 57, 23, 186, 196, 217, 210],
254 }
255 }
256}
257
258impl Default for BuyWnsSplInstructionData {
259 fn default() -> Self {
260 Self::new()
261 }
262}
263
264#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
265#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
266pub struct BuyWnsSplInstructionArgs {
267 pub max_amount: u64,
268}
269
270#[derive(Clone, Debug, Default)]
304pub struct BuyWnsSplBuilder {
305 fee_vault: Option<solana_program::pubkey::Pubkey>,
306 fee_vault_currency_ta: Option<solana_program::pubkey::Pubkey>,
307 buyer: Option<solana_program::pubkey::Pubkey>,
308 buyer_ta: Option<solana_program::pubkey::Pubkey>,
309 list_ta: Option<solana_program::pubkey::Pubkey>,
310 list_state: Option<solana_program::pubkey::Pubkey>,
311 mint: Option<solana_program::pubkey::Pubkey>,
312 currency: Option<solana_program::pubkey::Pubkey>,
313 owner: Option<solana_program::pubkey::Pubkey>,
314 owner_currency_ta: Option<solana_program::pubkey::Pubkey>,
315 payer: Option<solana_program::pubkey::Pubkey>,
316 payer_currency_ta: Option<solana_program::pubkey::Pubkey>,
317 taker_broker: Option<solana_program::pubkey::Pubkey>,
318 taker_broker_currency_ta: Option<solana_program::pubkey::Pubkey>,
319 maker_broker: Option<solana_program::pubkey::Pubkey>,
320 maker_broker_currency_ta: Option<solana_program::pubkey::Pubkey>,
321 rent_destination: Option<solana_program::pubkey::Pubkey>,
322 token_program: Option<solana_program::pubkey::Pubkey>,
323 currency_token_program: Option<solana_program::pubkey::Pubkey>,
324 associated_token_program: Option<solana_program::pubkey::Pubkey>,
325 marketplace_program: Option<solana_program::pubkey::Pubkey>,
326 system_program: Option<solana_program::pubkey::Pubkey>,
327 approve: Option<solana_program::pubkey::Pubkey>,
328 distribution: Option<solana_program::pubkey::Pubkey>,
329 distribution_currency_ta: Option<solana_program::pubkey::Pubkey>,
330 wns_program: Option<solana_program::pubkey::Pubkey>,
331 distribution_program: Option<solana_program::pubkey::Pubkey>,
332 extra_metas: Option<solana_program::pubkey::Pubkey>,
333 cosigner: Option<solana_program::pubkey::Pubkey>,
334 max_amount: Option<u64>,
335 __remaining_accounts: Vec<solana_program::instruction::AccountMeta>,
336}
337
338impl BuyWnsSplBuilder {
339 pub fn new() -> Self {
340 Self::default()
341 }
342 #[inline(always)]
343 pub fn fee_vault(&mut self, fee_vault: solana_program::pubkey::Pubkey) -> &mut Self {
344 self.fee_vault = Some(fee_vault);
345 self
346 }
347 #[inline(always)]
348 pub fn fee_vault_currency_ta(
349 &mut self,
350 fee_vault_currency_ta: solana_program::pubkey::Pubkey,
351 ) -> &mut Self {
352 self.fee_vault_currency_ta = Some(fee_vault_currency_ta);
353 self
354 }
355 #[inline(always)]
356 pub fn buyer(&mut self, buyer: solana_program::pubkey::Pubkey) -> &mut Self {
357 self.buyer = Some(buyer);
358 self
359 }
360 #[inline(always)]
361 pub fn buyer_ta(&mut self, buyer_ta: solana_program::pubkey::Pubkey) -> &mut Self {
362 self.buyer_ta = Some(buyer_ta);
363 self
364 }
365 #[inline(always)]
366 pub fn list_ta(&mut self, list_ta: solana_program::pubkey::Pubkey) -> &mut Self {
367 self.list_ta = Some(list_ta);
368 self
369 }
370 #[inline(always)]
371 pub fn list_state(&mut self, list_state: solana_program::pubkey::Pubkey) -> &mut Self {
372 self.list_state = Some(list_state);
373 self
374 }
375 #[inline(always)]
377 pub fn mint(&mut self, mint: solana_program::pubkey::Pubkey) -> &mut Self {
378 self.mint = Some(mint);
379 self
380 }
381 #[inline(always)]
383 pub fn currency(&mut self, currency: solana_program::pubkey::Pubkey) -> &mut Self {
384 self.currency = Some(currency);
385 self
386 }
387 #[inline(always)]
388 pub fn owner(&mut self, owner: solana_program::pubkey::Pubkey) -> &mut Self {
389 self.owner = Some(owner);
390 self
391 }
392 #[inline(always)]
393 pub fn owner_currency_ta(
394 &mut self,
395 owner_currency_ta: solana_program::pubkey::Pubkey,
396 ) -> &mut Self {
397 self.owner_currency_ta = Some(owner_currency_ta);
398 self
399 }
400 #[inline(always)]
401 pub fn payer(&mut self, payer: solana_program::pubkey::Pubkey) -> &mut Self {
402 self.payer = Some(payer);
403 self
404 }
405 #[inline(always)]
406 pub fn payer_currency_ta(
407 &mut self,
408 payer_currency_ta: solana_program::pubkey::Pubkey,
409 ) -> &mut Self {
410 self.payer_currency_ta = Some(payer_currency_ta);
411 self
412 }
413 #[inline(always)]
415 pub fn taker_broker(
416 &mut self,
417 taker_broker: Option<solana_program::pubkey::Pubkey>,
418 ) -> &mut Self {
419 self.taker_broker = taker_broker;
420 self
421 }
422 #[inline(always)]
424 pub fn taker_broker_currency_ta(
425 &mut self,
426 taker_broker_currency_ta: Option<solana_program::pubkey::Pubkey>,
427 ) -> &mut Self {
428 self.taker_broker_currency_ta = taker_broker_currency_ta;
429 self
430 }
431 #[inline(always)]
433 pub fn maker_broker(
434 &mut self,
435 maker_broker: Option<solana_program::pubkey::Pubkey>,
436 ) -> &mut Self {
437 self.maker_broker = maker_broker;
438 self
439 }
440 #[inline(always)]
442 pub fn maker_broker_currency_ta(
443 &mut self,
444 maker_broker_currency_ta: Option<solana_program::pubkey::Pubkey>,
445 ) -> &mut Self {
446 self.maker_broker_currency_ta = maker_broker_currency_ta;
447 self
448 }
449 #[inline(always)]
450 pub fn rent_destination(
451 &mut self,
452 rent_destination: solana_program::pubkey::Pubkey,
453 ) -> &mut Self {
454 self.rent_destination = Some(rent_destination);
455 self
456 }
457 #[inline(always)]
459 pub fn token_program(&mut self, token_program: solana_program::pubkey::Pubkey) -> &mut Self {
460 self.token_program = Some(token_program);
461 self
462 }
463 #[inline(always)]
465 pub fn currency_token_program(
466 &mut self,
467 currency_token_program: solana_program::pubkey::Pubkey,
468 ) -> &mut Self {
469 self.currency_token_program = Some(currency_token_program);
470 self
471 }
472 #[inline(always)]
474 pub fn associated_token_program(
475 &mut self,
476 associated_token_program: solana_program::pubkey::Pubkey,
477 ) -> &mut Self {
478 self.associated_token_program = Some(associated_token_program);
479 self
480 }
481 #[inline(always)]
483 pub fn marketplace_program(
484 &mut self,
485 marketplace_program: solana_program::pubkey::Pubkey,
486 ) -> &mut Self {
487 self.marketplace_program = Some(marketplace_program);
488 self
489 }
490 #[inline(always)]
492 pub fn system_program(&mut self, system_program: solana_program::pubkey::Pubkey) -> &mut Self {
493 self.system_program = Some(system_program);
494 self
495 }
496 #[inline(always)]
497 pub fn approve(&mut self, approve: solana_program::pubkey::Pubkey) -> &mut Self {
498 self.approve = Some(approve);
499 self
500 }
501 #[inline(always)]
502 pub fn distribution(&mut self, distribution: solana_program::pubkey::Pubkey) -> &mut Self {
503 self.distribution = Some(distribution);
504 self
505 }
506 #[inline(always)]
507 pub fn distribution_currency_ta(
508 &mut self,
509 distribution_currency_ta: solana_program::pubkey::Pubkey,
510 ) -> &mut Self {
511 self.distribution_currency_ta = Some(distribution_currency_ta);
512 self
513 }
514 #[inline(always)]
516 pub fn wns_program(&mut self, wns_program: solana_program::pubkey::Pubkey) -> &mut Self {
517 self.wns_program = Some(wns_program);
518 self
519 }
520 #[inline(always)]
522 pub fn distribution_program(
523 &mut self,
524 distribution_program: solana_program::pubkey::Pubkey,
525 ) -> &mut Self {
526 self.distribution_program = Some(distribution_program);
527 self
528 }
529 #[inline(always)]
530 pub fn extra_metas(&mut self, extra_metas: solana_program::pubkey::Pubkey) -> &mut Self {
531 self.extra_metas = Some(extra_metas);
532 self
533 }
534 #[inline(always)]
536 pub fn cosigner(&mut self, cosigner: Option<solana_program::pubkey::Pubkey>) -> &mut Self {
537 self.cosigner = cosigner;
538 self
539 }
540 #[inline(always)]
541 pub fn max_amount(&mut self, max_amount: u64) -> &mut Self {
542 self.max_amount = Some(max_amount);
543 self
544 }
545 #[inline(always)]
547 pub fn add_remaining_account(
548 &mut self,
549 account: solana_program::instruction::AccountMeta,
550 ) -> &mut Self {
551 self.__remaining_accounts.push(account);
552 self
553 }
554 #[inline(always)]
556 pub fn add_remaining_accounts(
557 &mut self,
558 accounts: &[solana_program::instruction::AccountMeta],
559 ) -> &mut Self {
560 self.__remaining_accounts.extend_from_slice(accounts);
561 self
562 }
563 #[allow(clippy::clone_on_copy)]
564 pub fn instruction(&self) -> solana_program::instruction::Instruction {
565 let accounts =
566 BuyWnsSpl {
567 fee_vault: self.fee_vault.expect("fee_vault is not set"),
568 fee_vault_currency_ta: self
569 .fee_vault_currency_ta
570 .expect("fee_vault_currency_ta is not set"),
571 buyer: self.buyer.expect("buyer is not set"),
572 buyer_ta: self.buyer_ta.expect("buyer_ta is not set"),
573 list_ta: self.list_ta.expect("list_ta is not set"),
574 list_state: self.list_state.expect("list_state is not set"),
575 mint: self.mint.expect("mint is not set"),
576 currency: self.currency.expect("currency is not set"),
577 owner: self.owner.expect("owner is not set"),
578 owner_currency_ta: self
579 .owner_currency_ta
580 .expect("owner_currency_ta is not set"),
581 payer: self.payer.expect("payer is not set"),
582 payer_currency_ta: self
583 .payer_currency_ta
584 .expect("payer_currency_ta is not set"),
585 taker_broker: self.taker_broker,
586 taker_broker_currency_ta: self.taker_broker_currency_ta,
587 maker_broker: self.maker_broker,
588 maker_broker_currency_ta: self.maker_broker_currency_ta,
589 rent_destination: self.rent_destination.expect("rent_destination is not set"),
590 token_program: self.token_program.unwrap_or(solana_program::pubkey!(
591 "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
592 )),
593 currency_token_program: self.currency_token_program.unwrap_or(
594 solana_program::pubkey!("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),
595 ),
596 associated_token_program: self.associated_token_program.unwrap_or(
597 solana_program::pubkey!("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),
598 ),
599 marketplace_program: self.marketplace_program.unwrap_or(solana_program::pubkey!(
600 "TCMPhJdwDryooaGtiocG1u3xcYbRpiJzb283XfCZsDp"
601 )),
602 system_program: self
603 .system_program
604 .unwrap_or(solana_program::pubkey!("11111111111111111111111111111111")),
605 approve: self.approve.expect("approve is not set"),
606 distribution: self.distribution.expect("distribution is not set"),
607 distribution_currency_ta: self
608 .distribution_currency_ta
609 .expect("distribution_currency_ta is not set"),
610 wns_program: self.wns_program.unwrap_or(solana_program::pubkey!(
611 "wns1gDLt8fgLcGhWi5MqAqgXpwEP1JftKE9eZnXS1HM"
612 )),
613 distribution_program: self.distribution_program.unwrap_or(solana_program::pubkey!(
614 "diste3nXmK7ddDTs1zb6uday6j4etCa9RChD8fJ1xay"
615 )),
616 extra_metas: self.extra_metas.expect("extra_metas is not set"),
617 cosigner: self.cosigner,
618 };
619 let args = BuyWnsSplInstructionArgs {
620 max_amount: self.max_amount.clone().expect("max_amount is not set"),
621 };
622
623 accounts.instruction_with_remaining_accounts(args, &self.__remaining_accounts)
624 }
625}
626
627pub struct BuyWnsSplCpiAccounts<'a, 'b> {
629 pub fee_vault: &'b solana_program::account_info::AccountInfo<'a>,
630
631 pub fee_vault_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
632
633 pub buyer: &'b solana_program::account_info::AccountInfo<'a>,
634
635 pub buyer_ta: &'b solana_program::account_info::AccountInfo<'a>,
636
637 pub list_ta: &'b solana_program::account_info::AccountInfo<'a>,
638
639 pub list_state: &'b solana_program::account_info::AccountInfo<'a>,
640 pub mint: &'b solana_program::account_info::AccountInfo<'a>,
642 pub currency: &'b solana_program::account_info::AccountInfo<'a>,
644
645 pub owner: &'b solana_program::account_info::AccountInfo<'a>,
646
647 pub owner_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
648
649 pub payer: &'b solana_program::account_info::AccountInfo<'a>,
650
651 pub payer_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
652
653 pub taker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
654
655 pub taker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
656
657 pub maker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
658
659 pub maker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
660
661 pub rent_destination: &'b solana_program::account_info::AccountInfo<'a>,
662
663 pub token_program: &'b solana_program::account_info::AccountInfo<'a>,
664
665 pub currency_token_program: &'b solana_program::account_info::AccountInfo<'a>,
666
667 pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>,
668
669 pub marketplace_program: &'b solana_program::account_info::AccountInfo<'a>,
670
671 pub system_program: &'b solana_program::account_info::AccountInfo<'a>,
672
673 pub approve: &'b solana_program::account_info::AccountInfo<'a>,
674
675 pub distribution: &'b solana_program::account_info::AccountInfo<'a>,
676
677 pub distribution_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
678
679 pub wns_program: &'b solana_program::account_info::AccountInfo<'a>,
680
681 pub distribution_program: &'b solana_program::account_info::AccountInfo<'a>,
682
683 pub extra_metas: &'b solana_program::account_info::AccountInfo<'a>,
684
685 pub cosigner: Option<&'b solana_program::account_info::AccountInfo<'a>>,
686}
687
688pub struct BuyWnsSplCpi<'a, 'b> {
690 pub __program: &'b solana_program::account_info::AccountInfo<'a>,
692
693 pub fee_vault: &'b solana_program::account_info::AccountInfo<'a>,
694
695 pub fee_vault_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
696
697 pub buyer: &'b solana_program::account_info::AccountInfo<'a>,
698
699 pub buyer_ta: &'b solana_program::account_info::AccountInfo<'a>,
700
701 pub list_ta: &'b solana_program::account_info::AccountInfo<'a>,
702
703 pub list_state: &'b solana_program::account_info::AccountInfo<'a>,
704 pub mint: &'b solana_program::account_info::AccountInfo<'a>,
706 pub currency: &'b solana_program::account_info::AccountInfo<'a>,
708
709 pub owner: &'b solana_program::account_info::AccountInfo<'a>,
710
711 pub owner_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
712
713 pub payer: &'b solana_program::account_info::AccountInfo<'a>,
714
715 pub payer_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
716
717 pub taker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
718
719 pub taker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
720
721 pub maker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
722
723 pub maker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
724
725 pub rent_destination: &'b solana_program::account_info::AccountInfo<'a>,
726
727 pub token_program: &'b solana_program::account_info::AccountInfo<'a>,
728
729 pub currency_token_program: &'b solana_program::account_info::AccountInfo<'a>,
730
731 pub associated_token_program: &'b solana_program::account_info::AccountInfo<'a>,
732
733 pub marketplace_program: &'b solana_program::account_info::AccountInfo<'a>,
734
735 pub system_program: &'b solana_program::account_info::AccountInfo<'a>,
736
737 pub approve: &'b solana_program::account_info::AccountInfo<'a>,
738
739 pub distribution: &'b solana_program::account_info::AccountInfo<'a>,
740
741 pub distribution_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
742
743 pub wns_program: &'b solana_program::account_info::AccountInfo<'a>,
744
745 pub distribution_program: &'b solana_program::account_info::AccountInfo<'a>,
746
747 pub extra_metas: &'b solana_program::account_info::AccountInfo<'a>,
748
749 pub cosigner: Option<&'b solana_program::account_info::AccountInfo<'a>>,
750 pub __args: BuyWnsSplInstructionArgs,
752}
753
754impl<'a, 'b> BuyWnsSplCpi<'a, 'b> {
755 pub fn new(
756 program: &'b solana_program::account_info::AccountInfo<'a>,
757 accounts: BuyWnsSplCpiAccounts<'a, 'b>,
758 args: BuyWnsSplInstructionArgs,
759 ) -> Self {
760 Self {
761 __program: program,
762 fee_vault: accounts.fee_vault,
763 fee_vault_currency_ta: accounts.fee_vault_currency_ta,
764 buyer: accounts.buyer,
765 buyer_ta: accounts.buyer_ta,
766 list_ta: accounts.list_ta,
767 list_state: accounts.list_state,
768 mint: accounts.mint,
769 currency: accounts.currency,
770 owner: accounts.owner,
771 owner_currency_ta: accounts.owner_currency_ta,
772 payer: accounts.payer,
773 payer_currency_ta: accounts.payer_currency_ta,
774 taker_broker: accounts.taker_broker,
775 taker_broker_currency_ta: accounts.taker_broker_currency_ta,
776 maker_broker: accounts.maker_broker,
777 maker_broker_currency_ta: accounts.maker_broker_currency_ta,
778 rent_destination: accounts.rent_destination,
779 token_program: accounts.token_program,
780 currency_token_program: accounts.currency_token_program,
781 associated_token_program: accounts.associated_token_program,
782 marketplace_program: accounts.marketplace_program,
783 system_program: accounts.system_program,
784 approve: accounts.approve,
785 distribution: accounts.distribution,
786 distribution_currency_ta: accounts.distribution_currency_ta,
787 wns_program: accounts.wns_program,
788 distribution_program: accounts.distribution_program,
789 extra_metas: accounts.extra_metas,
790 cosigner: accounts.cosigner,
791 __args: args,
792 }
793 }
794 #[inline(always)]
795 pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult {
796 self.invoke_signed_with_remaining_accounts(&[], &[])
797 }
798 #[inline(always)]
799 pub fn invoke_with_remaining_accounts(
800 &self,
801 remaining_accounts: &[(
802 &'b solana_program::account_info::AccountInfo<'a>,
803 bool,
804 bool,
805 )],
806 ) -> solana_program::entrypoint::ProgramResult {
807 self.invoke_signed_with_remaining_accounts(&[], remaining_accounts)
808 }
809 #[inline(always)]
810 pub fn invoke_signed(
811 &self,
812 signers_seeds: &[&[&[u8]]],
813 ) -> solana_program::entrypoint::ProgramResult {
814 self.invoke_signed_with_remaining_accounts(signers_seeds, &[])
815 }
816 #[allow(clippy::clone_on_copy)]
817 #[allow(clippy::vec_init_then_push)]
818 pub fn invoke_signed_with_remaining_accounts(
819 &self,
820 signers_seeds: &[&[&[u8]]],
821 remaining_accounts: &[(
822 &'b solana_program::account_info::AccountInfo<'a>,
823 bool,
824 bool,
825 )],
826 ) -> solana_program::entrypoint::ProgramResult {
827 let mut accounts = Vec::with_capacity(29 + remaining_accounts.len());
828 accounts.push(solana_program::instruction::AccountMeta::new(
829 *self.fee_vault.key,
830 false,
831 ));
832 accounts.push(solana_program::instruction::AccountMeta::new(
833 *self.fee_vault_currency_ta.key,
834 false,
835 ));
836 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
837 *self.buyer.key,
838 false,
839 ));
840 accounts.push(solana_program::instruction::AccountMeta::new(
841 *self.buyer_ta.key,
842 false,
843 ));
844 accounts.push(solana_program::instruction::AccountMeta::new(
845 *self.list_ta.key,
846 false,
847 ));
848 accounts.push(solana_program::instruction::AccountMeta::new(
849 *self.list_state.key,
850 false,
851 ));
852 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
853 *self.mint.key,
854 false,
855 ));
856 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
857 *self.currency.key,
858 false,
859 ));
860 accounts.push(solana_program::instruction::AccountMeta::new(
861 *self.owner.key,
862 false,
863 ));
864 accounts.push(solana_program::instruction::AccountMeta::new(
865 *self.owner_currency_ta.key,
866 false,
867 ));
868 accounts.push(solana_program::instruction::AccountMeta::new(
869 *self.payer.key,
870 true,
871 ));
872 accounts.push(solana_program::instruction::AccountMeta::new(
873 *self.payer_currency_ta.key,
874 false,
875 ));
876 if let Some(taker_broker) = self.taker_broker {
877 accounts.push(solana_program::instruction::AccountMeta::new(
878 *taker_broker.key,
879 false,
880 ));
881 } else {
882 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
883 crate::TENSOR_MARKETPLACE_ID,
884 false,
885 ));
886 }
887 if let Some(taker_broker_currency_ta) = self.taker_broker_currency_ta {
888 accounts.push(solana_program::instruction::AccountMeta::new(
889 *taker_broker_currency_ta.key,
890 false,
891 ));
892 } else {
893 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
894 crate::TENSOR_MARKETPLACE_ID,
895 false,
896 ));
897 }
898 if let Some(maker_broker) = self.maker_broker {
899 accounts.push(solana_program::instruction::AccountMeta::new(
900 *maker_broker.key,
901 false,
902 ));
903 } else {
904 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
905 crate::TENSOR_MARKETPLACE_ID,
906 false,
907 ));
908 }
909 if let Some(maker_broker_currency_ta) = self.maker_broker_currency_ta {
910 accounts.push(solana_program::instruction::AccountMeta::new(
911 *maker_broker_currency_ta.key,
912 false,
913 ));
914 } else {
915 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
916 crate::TENSOR_MARKETPLACE_ID,
917 false,
918 ));
919 }
920 accounts.push(solana_program::instruction::AccountMeta::new(
921 *self.rent_destination.key,
922 false,
923 ));
924 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
925 *self.token_program.key,
926 false,
927 ));
928 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
929 *self.currency_token_program.key,
930 false,
931 ));
932 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
933 *self.associated_token_program.key,
934 false,
935 ));
936 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
937 *self.marketplace_program.key,
938 false,
939 ));
940 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
941 *self.system_program.key,
942 false,
943 ));
944 accounts.push(solana_program::instruction::AccountMeta::new(
945 *self.approve.key,
946 false,
947 ));
948 accounts.push(solana_program::instruction::AccountMeta::new(
949 *self.distribution.key,
950 false,
951 ));
952 accounts.push(solana_program::instruction::AccountMeta::new(
953 *self.distribution_currency_ta.key,
954 false,
955 ));
956 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
957 *self.wns_program.key,
958 false,
959 ));
960 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
961 *self.distribution_program.key,
962 false,
963 ));
964 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
965 *self.extra_metas.key,
966 false,
967 ));
968 if let Some(cosigner) = self.cosigner {
969 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
970 *cosigner.key,
971 true,
972 ));
973 } else {
974 accounts.push(solana_program::instruction::AccountMeta::new_readonly(
975 crate::TENSOR_MARKETPLACE_ID,
976 false,
977 ));
978 }
979 remaining_accounts.iter().for_each(|remaining_account| {
980 accounts.push(solana_program::instruction::AccountMeta {
981 pubkey: *remaining_account.0.key,
982 is_signer: remaining_account.1,
983 is_writable: remaining_account.2,
984 })
985 });
986 let mut data = BuyWnsSplInstructionData::new().try_to_vec().unwrap();
987 let mut args = self.__args.try_to_vec().unwrap();
988 data.append(&mut args);
989
990 let instruction = solana_program::instruction::Instruction {
991 program_id: crate::TENSOR_MARKETPLACE_ID,
992 accounts,
993 data,
994 };
995 let mut account_infos = Vec::with_capacity(29 + 1 + remaining_accounts.len());
996 account_infos.push(self.__program.clone());
997 account_infos.push(self.fee_vault.clone());
998 account_infos.push(self.fee_vault_currency_ta.clone());
999 account_infos.push(self.buyer.clone());
1000 account_infos.push(self.buyer_ta.clone());
1001 account_infos.push(self.list_ta.clone());
1002 account_infos.push(self.list_state.clone());
1003 account_infos.push(self.mint.clone());
1004 account_infos.push(self.currency.clone());
1005 account_infos.push(self.owner.clone());
1006 account_infos.push(self.owner_currency_ta.clone());
1007 account_infos.push(self.payer.clone());
1008 account_infos.push(self.payer_currency_ta.clone());
1009 if let Some(taker_broker) = self.taker_broker {
1010 account_infos.push(taker_broker.clone());
1011 }
1012 if let Some(taker_broker_currency_ta) = self.taker_broker_currency_ta {
1013 account_infos.push(taker_broker_currency_ta.clone());
1014 }
1015 if let Some(maker_broker) = self.maker_broker {
1016 account_infos.push(maker_broker.clone());
1017 }
1018 if let Some(maker_broker_currency_ta) = self.maker_broker_currency_ta {
1019 account_infos.push(maker_broker_currency_ta.clone());
1020 }
1021 account_infos.push(self.rent_destination.clone());
1022 account_infos.push(self.token_program.clone());
1023 account_infos.push(self.currency_token_program.clone());
1024 account_infos.push(self.associated_token_program.clone());
1025 account_infos.push(self.marketplace_program.clone());
1026 account_infos.push(self.system_program.clone());
1027 account_infos.push(self.approve.clone());
1028 account_infos.push(self.distribution.clone());
1029 account_infos.push(self.distribution_currency_ta.clone());
1030 account_infos.push(self.wns_program.clone());
1031 account_infos.push(self.distribution_program.clone());
1032 account_infos.push(self.extra_metas.clone());
1033 if let Some(cosigner) = self.cosigner {
1034 account_infos.push(cosigner.clone());
1035 }
1036 remaining_accounts
1037 .iter()
1038 .for_each(|remaining_account| account_infos.push(remaining_account.0.clone()));
1039
1040 if signers_seeds.is_empty() {
1041 solana_program::program::invoke(&instruction, &account_infos)
1042 } else {
1043 solana_program::program::invoke_signed(&instruction, &account_infos, signers_seeds)
1044 }
1045 }
1046}
1047
1048#[derive(Clone, Debug)]
1082pub struct BuyWnsSplCpiBuilder<'a, 'b> {
1083 instruction: Box<BuyWnsSplCpiBuilderInstruction<'a, 'b>>,
1084}
1085
1086impl<'a, 'b> BuyWnsSplCpiBuilder<'a, 'b> {
1087 pub fn new(program: &'b solana_program::account_info::AccountInfo<'a>) -> Self {
1088 let instruction = Box::new(BuyWnsSplCpiBuilderInstruction {
1089 __program: program,
1090 fee_vault: None,
1091 fee_vault_currency_ta: None,
1092 buyer: None,
1093 buyer_ta: None,
1094 list_ta: None,
1095 list_state: None,
1096 mint: None,
1097 currency: None,
1098 owner: None,
1099 owner_currency_ta: None,
1100 payer: None,
1101 payer_currency_ta: None,
1102 taker_broker: None,
1103 taker_broker_currency_ta: None,
1104 maker_broker: None,
1105 maker_broker_currency_ta: None,
1106 rent_destination: None,
1107 token_program: None,
1108 currency_token_program: None,
1109 associated_token_program: None,
1110 marketplace_program: None,
1111 system_program: None,
1112 approve: None,
1113 distribution: None,
1114 distribution_currency_ta: None,
1115 wns_program: None,
1116 distribution_program: None,
1117 extra_metas: None,
1118 cosigner: None,
1119 max_amount: None,
1120 __remaining_accounts: Vec::new(),
1121 });
1122 Self { instruction }
1123 }
1124 #[inline(always)]
1125 pub fn fee_vault(
1126 &mut self,
1127 fee_vault: &'b solana_program::account_info::AccountInfo<'a>,
1128 ) -> &mut Self {
1129 self.instruction.fee_vault = Some(fee_vault);
1130 self
1131 }
1132 #[inline(always)]
1133 pub fn fee_vault_currency_ta(
1134 &mut self,
1135 fee_vault_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
1136 ) -> &mut Self {
1137 self.instruction.fee_vault_currency_ta = Some(fee_vault_currency_ta);
1138 self
1139 }
1140 #[inline(always)]
1141 pub fn buyer(&mut self, buyer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self {
1142 self.instruction.buyer = Some(buyer);
1143 self
1144 }
1145 #[inline(always)]
1146 pub fn buyer_ta(
1147 &mut self,
1148 buyer_ta: &'b solana_program::account_info::AccountInfo<'a>,
1149 ) -> &mut Self {
1150 self.instruction.buyer_ta = Some(buyer_ta);
1151 self
1152 }
1153 #[inline(always)]
1154 pub fn list_ta(
1155 &mut self,
1156 list_ta: &'b solana_program::account_info::AccountInfo<'a>,
1157 ) -> &mut Self {
1158 self.instruction.list_ta = Some(list_ta);
1159 self
1160 }
1161 #[inline(always)]
1162 pub fn list_state(
1163 &mut self,
1164 list_state: &'b solana_program::account_info::AccountInfo<'a>,
1165 ) -> &mut Self {
1166 self.instruction.list_state = Some(list_state);
1167 self
1168 }
1169 #[inline(always)]
1171 pub fn mint(&mut self, mint: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self {
1172 self.instruction.mint = Some(mint);
1173 self
1174 }
1175 #[inline(always)]
1177 pub fn currency(
1178 &mut self,
1179 currency: &'b solana_program::account_info::AccountInfo<'a>,
1180 ) -> &mut Self {
1181 self.instruction.currency = Some(currency);
1182 self
1183 }
1184 #[inline(always)]
1185 pub fn owner(&mut self, owner: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self {
1186 self.instruction.owner = Some(owner);
1187 self
1188 }
1189 #[inline(always)]
1190 pub fn owner_currency_ta(
1191 &mut self,
1192 owner_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
1193 ) -> &mut Self {
1194 self.instruction.owner_currency_ta = Some(owner_currency_ta);
1195 self
1196 }
1197 #[inline(always)]
1198 pub fn payer(&mut self, payer: &'b solana_program::account_info::AccountInfo<'a>) -> &mut Self {
1199 self.instruction.payer = Some(payer);
1200 self
1201 }
1202 #[inline(always)]
1203 pub fn payer_currency_ta(
1204 &mut self,
1205 payer_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
1206 ) -> &mut Self {
1207 self.instruction.payer_currency_ta = Some(payer_currency_ta);
1208 self
1209 }
1210 #[inline(always)]
1212 pub fn taker_broker(
1213 &mut self,
1214 taker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1215 ) -> &mut Self {
1216 self.instruction.taker_broker = taker_broker;
1217 self
1218 }
1219 #[inline(always)]
1221 pub fn taker_broker_currency_ta(
1222 &mut self,
1223 taker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1224 ) -> &mut Self {
1225 self.instruction.taker_broker_currency_ta = taker_broker_currency_ta;
1226 self
1227 }
1228 #[inline(always)]
1230 pub fn maker_broker(
1231 &mut self,
1232 maker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1233 ) -> &mut Self {
1234 self.instruction.maker_broker = maker_broker;
1235 self
1236 }
1237 #[inline(always)]
1239 pub fn maker_broker_currency_ta(
1240 &mut self,
1241 maker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1242 ) -> &mut Self {
1243 self.instruction.maker_broker_currency_ta = maker_broker_currency_ta;
1244 self
1245 }
1246 #[inline(always)]
1247 pub fn rent_destination(
1248 &mut self,
1249 rent_destination: &'b solana_program::account_info::AccountInfo<'a>,
1250 ) -> &mut Self {
1251 self.instruction.rent_destination = Some(rent_destination);
1252 self
1253 }
1254 #[inline(always)]
1255 pub fn token_program(
1256 &mut self,
1257 token_program: &'b solana_program::account_info::AccountInfo<'a>,
1258 ) -> &mut Self {
1259 self.instruction.token_program = Some(token_program);
1260 self
1261 }
1262 #[inline(always)]
1263 pub fn currency_token_program(
1264 &mut self,
1265 currency_token_program: &'b solana_program::account_info::AccountInfo<'a>,
1266 ) -> &mut Self {
1267 self.instruction.currency_token_program = Some(currency_token_program);
1268 self
1269 }
1270 #[inline(always)]
1271 pub fn associated_token_program(
1272 &mut self,
1273 associated_token_program: &'b solana_program::account_info::AccountInfo<'a>,
1274 ) -> &mut Self {
1275 self.instruction.associated_token_program = Some(associated_token_program);
1276 self
1277 }
1278 #[inline(always)]
1279 pub fn marketplace_program(
1280 &mut self,
1281 marketplace_program: &'b solana_program::account_info::AccountInfo<'a>,
1282 ) -> &mut Self {
1283 self.instruction.marketplace_program = Some(marketplace_program);
1284 self
1285 }
1286 #[inline(always)]
1287 pub fn system_program(
1288 &mut self,
1289 system_program: &'b solana_program::account_info::AccountInfo<'a>,
1290 ) -> &mut Self {
1291 self.instruction.system_program = Some(system_program);
1292 self
1293 }
1294 #[inline(always)]
1295 pub fn approve(
1296 &mut self,
1297 approve: &'b solana_program::account_info::AccountInfo<'a>,
1298 ) -> &mut Self {
1299 self.instruction.approve = Some(approve);
1300 self
1301 }
1302 #[inline(always)]
1303 pub fn distribution(
1304 &mut self,
1305 distribution: &'b solana_program::account_info::AccountInfo<'a>,
1306 ) -> &mut Self {
1307 self.instruction.distribution = Some(distribution);
1308 self
1309 }
1310 #[inline(always)]
1311 pub fn distribution_currency_ta(
1312 &mut self,
1313 distribution_currency_ta: &'b solana_program::account_info::AccountInfo<'a>,
1314 ) -> &mut Self {
1315 self.instruction.distribution_currency_ta = Some(distribution_currency_ta);
1316 self
1317 }
1318 #[inline(always)]
1319 pub fn wns_program(
1320 &mut self,
1321 wns_program: &'b solana_program::account_info::AccountInfo<'a>,
1322 ) -> &mut Self {
1323 self.instruction.wns_program = Some(wns_program);
1324 self
1325 }
1326 #[inline(always)]
1327 pub fn distribution_program(
1328 &mut self,
1329 distribution_program: &'b solana_program::account_info::AccountInfo<'a>,
1330 ) -> &mut Self {
1331 self.instruction.distribution_program = Some(distribution_program);
1332 self
1333 }
1334 #[inline(always)]
1335 pub fn extra_metas(
1336 &mut self,
1337 extra_metas: &'b solana_program::account_info::AccountInfo<'a>,
1338 ) -> &mut Self {
1339 self.instruction.extra_metas = Some(extra_metas);
1340 self
1341 }
1342 #[inline(always)]
1344 pub fn cosigner(
1345 &mut self,
1346 cosigner: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1347 ) -> &mut Self {
1348 self.instruction.cosigner = cosigner;
1349 self
1350 }
1351 #[inline(always)]
1352 pub fn max_amount(&mut self, max_amount: u64) -> &mut Self {
1353 self.instruction.max_amount = Some(max_amount);
1354 self
1355 }
1356 #[inline(always)]
1358 pub fn add_remaining_account(
1359 &mut self,
1360 account: &'b solana_program::account_info::AccountInfo<'a>,
1361 is_writable: bool,
1362 is_signer: bool,
1363 ) -> &mut Self {
1364 self.instruction
1365 .__remaining_accounts
1366 .push((account, is_writable, is_signer));
1367 self
1368 }
1369 #[inline(always)]
1374 pub fn add_remaining_accounts(
1375 &mut self,
1376 accounts: &[(
1377 &'b solana_program::account_info::AccountInfo<'a>,
1378 bool,
1379 bool,
1380 )],
1381 ) -> &mut Self {
1382 self.instruction
1383 .__remaining_accounts
1384 .extend_from_slice(accounts);
1385 self
1386 }
1387 #[inline(always)]
1388 pub fn invoke(&self) -> solana_program::entrypoint::ProgramResult {
1389 self.invoke_signed(&[])
1390 }
1391 #[allow(clippy::clone_on_copy)]
1392 #[allow(clippy::vec_init_then_push)]
1393 pub fn invoke_signed(
1394 &self,
1395 signers_seeds: &[&[&[u8]]],
1396 ) -> solana_program::entrypoint::ProgramResult {
1397 let args = BuyWnsSplInstructionArgs {
1398 max_amount: self
1399 .instruction
1400 .max_amount
1401 .clone()
1402 .expect("max_amount is not set"),
1403 };
1404 let instruction = BuyWnsSplCpi {
1405 __program: self.instruction.__program,
1406
1407 fee_vault: self.instruction.fee_vault.expect("fee_vault is not set"),
1408
1409 fee_vault_currency_ta: self
1410 .instruction
1411 .fee_vault_currency_ta
1412 .expect("fee_vault_currency_ta is not set"),
1413
1414 buyer: self.instruction.buyer.expect("buyer is not set"),
1415
1416 buyer_ta: self.instruction.buyer_ta.expect("buyer_ta is not set"),
1417
1418 list_ta: self.instruction.list_ta.expect("list_ta is not set"),
1419
1420 list_state: self.instruction.list_state.expect("list_state is not set"),
1421
1422 mint: self.instruction.mint.expect("mint is not set"),
1423
1424 currency: self.instruction.currency.expect("currency is not set"),
1425
1426 owner: self.instruction.owner.expect("owner is not set"),
1427
1428 owner_currency_ta: self
1429 .instruction
1430 .owner_currency_ta
1431 .expect("owner_currency_ta is not set"),
1432
1433 payer: self.instruction.payer.expect("payer is not set"),
1434
1435 payer_currency_ta: self
1436 .instruction
1437 .payer_currency_ta
1438 .expect("payer_currency_ta is not set"),
1439
1440 taker_broker: self.instruction.taker_broker,
1441
1442 taker_broker_currency_ta: self.instruction.taker_broker_currency_ta,
1443
1444 maker_broker: self.instruction.maker_broker,
1445
1446 maker_broker_currency_ta: self.instruction.maker_broker_currency_ta,
1447
1448 rent_destination: self
1449 .instruction
1450 .rent_destination
1451 .expect("rent_destination is not set"),
1452
1453 token_program: self
1454 .instruction
1455 .token_program
1456 .expect("token_program is not set"),
1457
1458 currency_token_program: self
1459 .instruction
1460 .currency_token_program
1461 .expect("currency_token_program is not set"),
1462
1463 associated_token_program: self
1464 .instruction
1465 .associated_token_program
1466 .expect("associated_token_program is not set"),
1467
1468 marketplace_program: self
1469 .instruction
1470 .marketplace_program
1471 .expect("marketplace_program is not set"),
1472
1473 system_program: self
1474 .instruction
1475 .system_program
1476 .expect("system_program is not set"),
1477
1478 approve: self.instruction.approve.expect("approve is not set"),
1479
1480 distribution: self
1481 .instruction
1482 .distribution
1483 .expect("distribution is not set"),
1484
1485 distribution_currency_ta: self
1486 .instruction
1487 .distribution_currency_ta
1488 .expect("distribution_currency_ta is not set"),
1489
1490 wns_program: self
1491 .instruction
1492 .wns_program
1493 .expect("wns_program is not set"),
1494
1495 distribution_program: self
1496 .instruction
1497 .distribution_program
1498 .expect("distribution_program is not set"),
1499
1500 extra_metas: self
1501 .instruction
1502 .extra_metas
1503 .expect("extra_metas is not set"),
1504
1505 cosigner: self.instruction.cosigner,
1506 __args: args,
1507 };
1508 instruction.invoke_signed_with_remaining_accounts(
1509 signers_seeds,
1510 &self.instruction.__remaining_accounts,
1511 )
1512 }
1513}
1514
1515#[derive(Clone, Debug)]
1516struct BuyWnsSplCpiBuilderInstruction<'a, 'b> {
1517 __program: &'b solana_program::account_info::AccountInfo<'a>,
1518 fee_vault: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1519 fee_vault_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1520 buyer: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1521 buyer_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1522 list_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1523 list_state: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1524 mint: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1525 currency: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1526 owner: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1527 owner_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1528 payer: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1529 payer_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1530 taker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1531 taker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1532 maker_broker: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1533 maker_broker_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1534 rent_destination: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1535 token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1536 currency_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1537 associated_token_program: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1538 marketplace_program: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1539 system_program: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1540 approve: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1541 distribution: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1542 distribution_currency_ta: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1543 wns_program: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1544 distribution_program: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1545 extra_metas: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1546 cosigner: Option<&'b solana_program::account_info::AccountInfo<'a>>,
1547 max_amount: Option<u64>,
1548 __remaining_accounts: Vec<(
1550 &'b solana_program::account_info::AccountInfo<'a>,
1551 bool,
1552 bool,
1553 )>,
1554}