dloom_flow/instructions/
initialize_dlmm_parameters.rs

1// FILE: programs/dloom_flow/src/instructions/initialize_dlmm_parameters.rs
2
3use crate::state::{DlmmParameter, DlmmParameters};
4use anchor_lang::prelude::*;
5
6pub fn handle_initialize_dlmm_parameters(
7    ctx: Context<InitializeDlmmParameters>,
8    official_params: Vec<DlmmParameter>,
9    community_params: Vec<DlmmParameter>,
10) -> Result<()> {
11    let params_account = &mut ctx.accounts.dlmm_parameters;
12    params_account.authority = ctx.accounts.authority.key();
13
14    params_account.official_parameters = official_params;
15    params_account.community_parameters = community_params;
16
17    Ok(())
18}
19
20#[derive(Accounts)]
21pub struct InitializeDlmmParameters<'info> {
22    #[account(
23        init,
24        payer = authority,
25        space = 8 + 32 + 4 + (20 * (2 + 2)) + 4 + (20 * (2 + 2)), // Max 20 params per list
26        seeds = [b"dlmm_parameters"],
27        bump
28    )]
29    pub dlmm_parameters: Account<'info, DlmmParameters>,
30
31    #[account(mut)]
32    pub authority: Signer<'info>,
33    pub system_program: Program<'info, System>,
34}