dloom_flow/instructions/
update_fee_preference.rs

1// FILE: programs/dloom_flow/src/instructions/update_fee_preference.rs
2
3use crate::amm::{state::{AmmPool, AmmPosition, FeePreference}};
4use anchor_lang::prelude::*;
5
6pub fn handle_update_fee_preference(
7    ctx: Context<UpdateFeePreference>,
8    new_preference: FeePreference,
9) -> Result<()> {
10    ctx.accounts.amm_position.fee_preference = new_preference;
11    Ok(())
12}
13
14#[derive(Accounts)]
15pub struct UpdateFeePreference<'info> {
16    pub owner: Signer<'info>,
17
18    // This is needed just to validate the position PDA seeds
19    pub amm_pool: Box<Account<'info, AmmPool>>,
20
21    #[account(
22        mut,
23        has_one = owner,
24        seeds = [b"amm_position", owner.key().as_ref(), amm_pool.key().as_ref()],
25        bump
26    )]
27    pub amm_position: Box<Account<'info, AmmPosition>>,
28}