Skip to main content

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