pyth_solana_receiver_sdk/cpi/
accounts.rs

1#![allow(clippy::vec_init_then_push)]
2
3// This file was populated with the expanded macros of programs/pyth-solana-receiver/src/lib.rs
4
5pub struct PostUpdateAtomic<'info> {
6    pub payer: anchor_lang::solana_program::account_info::AccountInfo<'info>,
7    ///Instead we do the same steps in deserialize_guardian_set_checked.
8    pub guardian_set: anchor_lang::solana_program::account_info::AccountInfo<'info>,
9    pub config: anchor_lang::solana_program::account_info::AccountInfo<'info>,
10    pub treasury: anchor_lang::solana_program::account_info::AccountInfo<'info>,
11    ///The constraint is such that either the price_update_account is uninitialized or the write_authority is the write_authority.
12    ///Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized
13    pub price_update_account: anchor_lang::solana_program::account_info::AccountInfo<'info>,
14    pub system_program: anchor_lang::solana_program::account_info::AccountInfo<'info>,
15    pub write_authority: anchor_lang::solana_program::account_info::AccountInfo<'info>,
16}
17#[automatically_derived]
18impl<'info> anchor_lang::ToAccountMetas for PostUpdateAtomic<'info> {
19    fn to_account_metas(
20        &self,
21        is_signer: Option<bool>,
22    ) -> Vec<anchor_lang::solana_program::instruction::AccountMeta> {
23        let mut account_metas = vec![];
24        account_metas.push(anchor_lang::solana_program::instruction::AccountMeta::new(
25            anchor_lang::Key::key(&self.payer),
26            true,
27        ));
28        account_metas.push(
29            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
30                anchor_lang::Key::key(&self.guardian_set),
31                false,
32            ),
33        );
34        account_metas.push(
35            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
36                anchor_lang::Key::key(&self.config),
37                false,
38            ),
39        );
40        account_metas.push(anchor_lang::solana_program::instruction::AccountMeta::new(
41            anchor_lang::Key::key(&self.treasury),
42            false,
43        ));
44        account_metas.push(anchor_lang::solana_program::instruction::AccountMeta::new(
45            anchor_lang::Key::key(&self.price_update_account),
46            true,
47        ));
48        account_metas.push(
49            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
50                anchor_lang::Key::key(&self.system_program),
51                false,
52            ),
53        );
54        account_metas.push(
55            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
56                anchor_lang::Key::key(&self.write_authority),
57                true,
58            ),
59        );
60        account_metas
61    }
62}
63#[automatically_derived]
64impl<'info> anchor_lang::ToAccountInfos<'info> for PostUpdateAtomic<'info> {
65    fn to_account_infos(
66        &self,
67    ) -> Vec<anchor_lang::solana_program::account_info::AccountInfo<'info>> {
68        let mut account_infos = vec![];
69        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(&self.payer));
70        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
71            &self.guardian_set,
72        ));
73        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(&self.config));
74        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
75            &self.treasury,
76        ));
77        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
78            &self.price_update_account,
79        ));
80        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
81            &self.system_program,
82        ));
83        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
84            &self.write_authority,
85        ));
86        account_infos
87    }
88}
89
90pub struct PostUpdate<'info> {
91    pub payer: anchor_lang::solana_program::account_info::AccountInfo<'info>,
92    pub encoded_vaa: anchor_lang::solana_program::account_info::AccountInfo<'info>,
93    pub config: anchor_lang::solana_program::account_info::AccountInfo<'info>,
94    pub treasury: anchor_lang::solana_program::account_info::AccountInfo<'info>,
95    ///The constraint is such that either the price_update_account is uninitialized or the write_authority is the write_authority.
96    ///Pubkey::default() is the SystemProgram on Solana and it can't sign so it's impossible that price_update_account.write_authority == Pubkey::default() once the account is initialized
97    pub price_update_account: anchor_lang::solana_program::account_info::AccountInfo<'info>,
98    pub system_program: anchor_lang::solana_program::account_info::AccountInfo<'info>,
99    pub write_authority: anchor_lang::solana_program::account_info::AccountInfo<'info>,
100}
101#[automatically_derived]
102impl<'info> anchor_lang::ToAccountMetas for PostUpdate<'info> {
103    fn to_account_metas(
104        &self,
105        is_signer: Option<bool>,
106    ) -> Vec<anchor_lang::solana_program::instruction::AccountMeta> {
107        let mut account_metas = vec![];
108        account_metas.push(anchor_lang::solana_program::instruction::AccountMeta::new(
109            anchor_lang::Key::key(&self.payer),
110            true,
111        ));
112        account_metas.push(
113            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
114                anchor_lang::Key::key(&self.encoded_vaa),
115                false,
116            ),
117        );
118        account_metas.push(
119            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
120                anchor_lang::Key::key(&self.config),
121                false,
122            ),
123        );
124        account_metas.push(anchor_lang::solana_program::instruction::AccountMeta::new(
125            anchor_lang::Key::key(&self.treasury),
126            false,
127        ));
128        account_metas.push(anchor_lang::solana_program::instruction::AccountMeta::new(
129            anchor_lang::Key::key(&self.price_update_account),
130            true,
131        ));
132        account_metas.push(
133            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
134                anchor_lang::Key::key(&self.system_program),
135                false,
136            ),
137        );
138        account_metas.push(
139            anchor_lang::solana_program::instruction::AccountMeta::new_readonly(
140                anchor_lang::Key::key(&self.write_authority),
141                true,
142            ),
143        );
144        account_metas
145    }
146}
147#[automatically_derived]
148impl<'info> anchor_lang::ToAccountInfos<'info> for PostUpdate<'info> {
149    fn to_account_infos(
150        &self,
151    ) -> Vec<anchor_lang::solana_program::account_info::AccountInfo<'info>> {
152        let mut account_infos = vec![];
153        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(&self.payer));
154        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
155            &self.encoded_vaa,
156        ));
157        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(&self.config));
158        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
159            &self.treasury,
160        ));
161        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
162            &self.price_update_account,
163        ));
164        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
165            &self.system_program,
166        ));
167        account_infos.extend(anchor_lang::ToAccountInfos::to_account_infos(
168            &self.write_authority,
169        ));
170        account_infos
171    }
172}