orca_sol/instructions/
set_initialize_pool_authority.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::BorshDeserialize;
9use borsh::BorshSerialize;
10
11/// Accounts.
12#[derive(Debug)]
13pub struct SetInitializePoolAuthority {
14    pub whirlpools_config: solana_pubkey::Pubkey,
15
16    pub adaptive_fee_tier: solana_pubkey::Pubkey,
17
18    pub fee_authority: solana_pubkey::Pubkey,
19
20    pub new_initialize_pool_authority: solana_pubkey::Pubkey,
21}
22
23impl SetInitializePoolAuthority {
24    pub fn instruction(&self) -> solana_instruction::Instruction {
25        self.instruction_with_remaining_accounts(&[])
26    }
27    #[allow(clippy::arithmetic_side_effects)]
28    #[allow(clippy::vec_init_then_push)]
29    pub fn instruction_with_remaining_accounts(
30        &self,
31        remaining_accounts: &[solana_instruction::AccountMeta],
32    ) -> solana_instruction::Instruction {
33        let mut accounts = Vec::with_capacity(4 + remaining_accounts.len());
34        accounts.push(solana_instruction::AccountMeta::new_readonly(
35            self.whirlpools_config,
36            false,
37        ));
38        accounts.push(solana_instruction::AccountMeta::new(
39            self.adaptive_fee_tier,
40            false,
41        ));
42        accounts.push(solana_instruction::AccountMeta::new_readonly(
43            self.fee_authority,
44            true,
45        ));
46        accounts.push(solana_instruction::AccountMeta::new_readonly(
47            self.new_initialize_pool_authority,
48            false,
49        ));
50        accounts.extend_from_slice(remaining_accounts);
51        let data = borsh::to_vec(&SetInitializePoolAuthorityInstructionData::new()).unwrap();
52
53        solana_instruction::Instruction {
54            program_id: crate::WHIRLPOOL_ID,
55            accounts,
56            data,
57        }
58    }
59}
60
61#[derive(BorshSerialize, BorshDeserialize, Clone, Debug, Eq, PartialEq)]
62#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
63pub struct SetInitializePoolAuthorityInstructionData {
64    discriminator: [u8; 8],
65}
66
67impl SetInitializePoolAuthorityInstructionData {
68    pub fn new() -> Self {
69        Self {
70            discriminator: [125, 43, 127, 235, 149, 26, 106, 236],
71        }
72    }
73}
74
75impl Default for SetInitializePoolAuthorityInstructionData {
76    fn default() -> Self {
77        Self::new()
78    }
79}
80
81/// Instruction builder for `SetInitializePoolAuthority`.
82///
83/// ### Accounts:
84///
85///   0. `[]` whirlpools_config
86///   1. `[writable]` adaptive_fee_tier
87///   2. `[signer]` fee_authority
88///   3. `[]` new_initialize_pool_authority
89#[derive(Clone, Debug, Default)]
90pub struct SetInitializePoolAuthorityBuilder {
91    whirlpools_config: Option<solana_pubkey::Pubkey>,
92    adaptive_fee_tier: Option<solana_pubkey::Pubkey>,
93    fee_authority: Option<solana_pubkey::Pubkey>,
94    new_initialize_pool_authority: Option<solana_pubkey::Pubkey>,
95    __remaining_accounts: Vec<solana_instruction::AccountMeta>,
96}
97
98impl SetInitializePoolAuthorityBuilder {
99    pub fn new() -> Self {
100        Self::default()
101    }
102    #[inline(always)]
103    pub fn whirlpools_config(&mut self, whirlpools_config: solana_pubkey::Pubkey) -> &mut Self {
104        self.whirlpools_config = Some(whirlpools_config);
105        self
106    }
107    #[inline(always)]
108    pub fn adaptive_fee_tier(&mut self, adaptive_fee_tier: solana_pubkey::Pubkey) -> &mut Self {
109        self.adaptive_fee_tier = Some(adaptive_fee_tier);
110        self
111    }
112    #[inline(always)]
113    pub fn fee_authority(&mut self, fee_authority: solana_pubkey::Pubkey) -> &mut Self {
114        self.fee_authority = Some(fee_authority);
115        self
116    }
117    #[inline(always)]
118    pub fn new_initialize_pool_authority(
119        &mut self,
120        new_initialize_pool_authority: solana_pubkey::Pubkey,
121    ) -> &mut Self {
122        self.new_initialize_pool_authority = Some(new_initialize_pool_authority);
123        self
124    }
125    /// Add an additional account to the instruction.
126    #[inline(always)]
127    pub fn add_remaining_account(&mut self, account: solana_instruction::AccountMeta) -> &mut Self {
128        self.__remaining_accounts.push(account);
129        self
130    }
131    /// Add additional accounts to the instruction.
132    #[inline(always)]
133    pub fn add_remaining_accounts(
134        &mut self,
135        accounts: &[solana_instruction::AccountMeta],
136    ) -> &mut Self {
137        self.__remaining_accounts.extend_from_slice(accounts);
138        self
139    }
140    #[allow(clippy::clone_on_copy)]
141    pub fn instruction(&self) -> solana_instruction::Instruction {
142        let accounts = SetInitializePoolAuthority {
143            whirlpools_config: self
144                .whirlpools_config
145                .expect("whirlpools_config is not set"),
146            adaptive_fee_tier: self
147                .adaptive_fee_tier
148                .expect("adaptive_fee_tier is not set"),
149            fee_authority: self.fee_authority.expect("fee_authority is not set"),
150            new_initialize_pool_authority: self
151                .new_initialize_pool_authority
152                .expect("new_initialize_pool_authority is not set"),
153        };
154
155        accounts.instruction_with_remaining_accounts(&self.__remaining_accounts)
156    }
157}
158
159/// `set_initialize_pool_authority` CPI accounts.
160pub struct SetInitializePoolAuthorityCpiAccounts<'a, 'b> {
161    pub whirlpools_config: &'b solana_account_info::AccountInfo<'a>,
162
163    pub adaptive_fee_tier: &'b solana_account_info::AccountInfo<'a>,
164
165    pub fee_authority: &'b solana_account_info::AccountInfo<'a>,
166
167    pub new_initialize_pool_authority: &'b solana_account_info::AccountInfo<'a>,
168}
169
170/// `set_initialize_pool_authority` CPI instruction.
171pub struct SetInitializePoolAuthorityCpi<'a, 'b> {
172    /// The program to invoke.
173    pub __program: &'b solana_account_info::AccountInfo<'a>,
174
175    pub whirlpools_config: &'b solana_account_info::AccountInfo<'a>,
176
177    pub adaptive_fee_tier: &'b solana_account_info::AccountInfo<'a>,
178
179    pub fee_authority: &'b solana_account_info::AccountInfo<'a>,
180
181    pub new_initialize_pool_authority: &'b solana_account_info::AccountInfo<'a>,
182}
183
184impl<'a, 'b> SetInitializePoolAuthorityCpi<'a, 'b> {
185    pub fn new(
186        program: &'b solana_account_info::AccountInfo<'a>,
187        accounts: SetInitializePoolAuthorityCpiAccounts<'a, 'b>,
188    ) -> Self {
189        Self {
190            __program: program,
191            whirlpools_config: accounts.whirlpools_config,
192            adaptive_fee_tier: accounts.adaptive_fee_tier,
193            fee_authority: accounts.fee_authority,
194            new_initialize_pool_authority: accounts.new_initialize_pool_authority,
195        }
196    }
197    #[inline(always)]
198    pub fn invoke(&self) -> solana_program_entrypoint::ProgramResult {
199        self.invoke_signed_with_remaining_accounts(&[], &[])
200    }
201    #[inline(always)]
202    pub fn invoke_with_remaining_accounts(
203        &self,
204        remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)],
205    ) -> solana_program_entrypoint::ProgramResult {
206        self.invoke_signed_with_remaining_accounts(&[], remaining_accounts)
207    }
208    #[inline(always)]
209    pub fn invoke_signed(
210        &self,
211        signers_seeds: &[&[&[u8]]],
212    ) -> solana_program_entrypoint::ProgramResult {
213        self.invoke_signed_with_remaining_accounts(signers_seeds, &[])
214    }
215    #[allow(clippy::arithmetic_side_effects)]
216    #[allow(clippy::clone_on_copy)]
217    #[allow(clippy::vec_init_then_push)]
218    pub fn invoke_signed_with_remaining_accounts(
219        &self,
220        signers_seeds: &[&[&[u8]]],
221        remaining_accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)],
222    ) -> solana_program_entrypoint::ProgramResult {
223        let mut accounts = Vec::with_capacity(4 + remaining_accounts.len());
224        accounts.push(solana_instruction::AccountMeta::new_readonly(
225            *self.whirlpools_config.key,
226            false,
227        ));
228        accounts.push(solana_instruction::AccountMeta::new(
229            *self.adaptive_fee_tier.key,
230            false,
231        ));
232        accounts.push(solana_instruction::AccountMeta::new_readonly(
233            *self.fee_authority.key,
234            true,
235        ));
236        accounts.push(solana_instruction::AccountMeta::new_readonly(
237            *self.new_initialize_pool_authority.key,
238            false,
239        ));
240        remaining_accounts.iter().for_each(|remaining_account| {
241            accounts.push(solana_instruction::AccountMeta {
242                pubkey: *remaining_account.0.key,
243                is_signer: remaining_account.1,
244                is_writable: remaining_account.2,
245            })
246        });
247        let data = borsh::to_vec(&SetInitializePoolAuthorityInstructionData::new()).unwrap();
248
249        let instruction = solana_instruction::Instruction {
250            program_id: crate::WHIRLPOOL_ID,
251            accounts,
252            data,
253        };
254        let mut account_infos = Vec::with_capacity(5 + remaining_accounts.len());
255        account_infos.push(self.__program.clone());
256        account_infos.push(self.whirlpools_config.clone());
257        account_infos.push(self.adaptive_fee_tier.clone());
258        account_infos.push(self.fee_authority.clone());
259        account_infos.push(self.new_initialize_pool_authority.clone());
260        remaining_accounts
261            .iter()
262            .for_each(|remaining_account| account_infos.push(remaining_account.0.clone()));
263
264        if signers_seeds.is_empty() {
265            solana_cpi::invoke(&instruction, &account_infos)
266        } else {
267            solana_cpi::invoke_signed(&instruction, &account_infos, signers_seeds)
268        }
269    }
270}
271
272/// Instruction builder for `SetInitializePoolAuthority` via CPI.
273///
274/// ### Accounts:
275///
276///   0. `[]` whirlpools_config
277///   1. `[writable]` adaptive_fee_tier
278///   2. `[signer]` fee_authority
279///   3. `[]` new_initialize_pool_authority
280#[derive(Clone, Debug)]
281pub struct SetInitializePoolAuthorityCpiBuilder<'a, 'b> {
282    instruction: Box<SetInitializePoolAuthorityCpiBuilderInstruction<'a, 'b>>,
283}
284
285impl<'a, 'b> SetInitializePoolAuthorityCpiBuilder<'a, 'b> {
286    pub fn new(program: &'b solana_account_info::AccountInfo<'a>) -> Self {
287        let instruction = Box::new(SetInitializePoolAuthorityCpiBuilderInstruction {
288            __program: program,
289            whirlpools_config: None,
290            adaptive_fee_tier: None,
291            fee_authority: None,
292            new_initialize_pool_authority: None,
293            __remaining_accounts: Vec::new(),
294        });
295        Self { instruction }
296    }
297    #[inline(always)]
298    pub fn whirlpools_config(
299        &mut self,
300        whirlpools_config: &'b solana_account_info::AccountInfo<'a>,
301    ) -> &mut Self {
302        self.instruction.whirlpools_config = Some(whirlpools_config);
303        self
304    }
305    #[inline(always)]
306    pub fn adaptive_fee_tier(
307        &mut self,
308        adaptive_fee_tier: &'b solana_account_info::AccountInfo<'a>,
309    ) -> &mut Self {
310        self.instruction.adaptive_fee_tier = Some(adaptive_fee_tier);
311        self
312    }
313    #[inline(always)]
314    pub fn fee_authority(
315        &mut self,
316        fee_authority: &'b solana_account_info::AccountInfo<'a>,
317    ) -> &mut Self {
318        self.instruction.fee_authority = Some(fee_authority);
319        self
320    }
321    #[inline(always)]
322    pub fn new_initialize_pool_authority(
323        &mut self,
324        new_initialize_pool_authority: &'b solana_account_info::AccountInfo<'a>,
325    ) -> &mut Self {
326        self.instruction.new_initialize_pool_authority = Some(new_initialize_pool_authority);
327        self
328    }
329    /// Add an additional account to the instruction.
330    #[inline(always)]
331    pub fn add_remaining_account(
332        &mut self,
333        account: &'b solana_account_info::AccountInfo<'a>,
334        is_writable: bool,
335        is_signer: bool,
336    ) -> &mut Self {
337        self.instruction
338            .__remaining_accounts
339            .push((account, is_writable, is_signer));
340        self
341    }
342    /// Add additional accounts to the instruction.
343    ///
344    /// Each account is represented by a tuple of the `AccountInfo`, a `bool` indicating whether the account is writable or not,
345    /// and a `bool` indicating whether the account is a signer or not.
346    #[inline(always)]
347    pub fn add_remaining_accounts(
348        &mut self,
349        accounts: &[(&'b solana_account_info::AccountInfo<'a>, bool, bool)],
350    ) -> &mut Self {
351        self.instruction
352            .__remaining_accounts
353            .extend_from_slice(accounts);
354        self
355    }
356    #[inline(always)]
357    pub fn invoke(&self) -> solana_program_entrypoint::ProgramResult {
358        self.invoke_signed(&[])
359    }
360    #[allow(clippy::clone_on_copy)]
361    #[allow(clippy::vec_init_then_push)]
362    pub fn invoke_signed(
363        &self,
364        signers_seeds: &[&[&[u8]]],
365    ) -> solana_program_entrypoint::ProgramResult {
366        let instruction = SetInitializePoolAuthorityCpi {
367            __program: self.instruction.__program,
368
369            whirlpools_config: self
370                .instruction
371                .whirlpools_config
372                .expect("whirlpools_config is not set"),
373
374            adaptive_fee_tier: self
375                .instruction
376                .adaptive_fee_tier
377                .expect("adaptive_fee_tier is not set"),
378
379            fee_authority: self
380                .instruction
381                .fee_authority
382                .expect("fee_authority is not set"),
383
384            new_initialize_pool_authority: self
385                .instruction
386                .new_initialize_pool_authority
387                .expect("new_initialize_pool_authority is not set"),
388        };
389        instruction.invoke_signed_with_remaining_accounts(
390            signers_seeds,
391            &self.instruction.__remaining_accounts,
392        )
393    }
394}
395
396#[derive(Clone, Debug)]
397struct SetInitializePoolAuthorityCpiBuilderInstruction<'a, 'b> {
398    __program: &'b solana_account_info::AccountInfo<'a>,
399    whirlpools_config: Option<&'b solana_account_info::AccountInfo<'a>>,
400    adaptive_fee_tier: Option<&'b solana_account_info::AccountInfo<'a>>,
401    fee_authority: Option<&'b solana_account_info::AccountInfo<'a>>,
402    new_initialize_pool_authority: Option<&'b solana_account_info::AccountInfo<'a>>,
403    /// Additional instruction accounts `(AccountInfo, is_writable, is_signer)`.
404    __remaining_accounts: Vec<(&'b solana_account_info::AccountInfo<'a>, bool, bool)>,
405}