Skip to content

Commit

Permalink
meteora dlmm: generate cpi interfaces (#457)
Browse files Browse the repository at this point in the history
  • Loading branch information
yurushao authored Mar 3, 2025
1 parent 6d4a1de commit b805e8e
Show file tree
Hide file tree
Showing 12 changed files with 1,635 additions and 66 deletions.
Binary file added anchor/fixtures/programs/meteora_dlmm.so
Binary file not shown.
45 changes: 36 additions & 9 deletions anchor/programs/glam/src/cpi_autogen/config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -200,31 +200,58 @@ marinade:
#
meteora_amm:
- ix_name: swap
permission: MeteoraSwap
permission: MeteoraAmmSwap
integration: MeteoraAmm
vault_aliases: ["user"]
signed_by_vault: true
mutable_vault: true
- ix_name: addImbalanceLiquidity
permission: MeteoraLiquidity
permission: MeteoraAmmLiquidity
integration: MeteoraAmm
vault_aliases: ["user"]
signed_by_vault: true
mutable_vault: true
- ix_name: removeBalanceLiquidity
permission: MeteoraLiquidity
permission: MeteoraAmmLiquidity
integration: MeteoraAmm
vault_aliases: ["user"]
signed_by_vault: true
mutable_vault: true

meteora_dlmm:
- ix_name: initializePosition
permission: MeteoraSwap
permission: MeteoraDlmmInitPosition
integration: MeteoraDlmm
vault_aliases: ["owner"]
signed_by_vault: true
mutable_vault: true
- ix_name: addLiquidityByStrategy
permission: MeteoraLiquidity
permission: MeteoraDlmmLiquidity
integration: MeteoraDlmm
vault_aliases: ["sender"]
signed_by_vault: true
mutable_vault: true
- ix_name: removeLiquidityByRange
permission: MeteoraLiquidity
permission: MeteoraDlmmLiquidity
integration: MeteoraDlmm
vault_aliases: ["sender"]
signed_by_vault: true
mutable_vault: true
- ix_name: claimFee
permission: MeteoraLiquidity
permission: MeteoraDlmmLiquidity
integration: MeteoraDlmm
vault_aliases: ["sender"]
signed_by_vault: true
mutable_vault: true
- ix_name: closePosition
permission: MeteoraLiquidity
permission: MeteoraDlmmClosePosition
integration: MeteoraDlmm
vault_aliases: ["sender", "rent_receiver"]
signed_by_vault: true
mutable_vault: true
- ix_name: swap
permission: MeteoraLiquidity
permission: MeteoraDlmmSwap
integration: MeteoraDlmm
vault_aliases: ["user"]
signed_by_vault: true
mutable_vault: true
30 changes: 18 additions & 12 deletions anchor/programs/glam/src/cpi_autogen/meteora_amm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ use meteora_amm::typedefs::*;
pub struct MeteoraAmmSwap<'info> {
pub glam_state: Box<Account<'info, StateAccount>>,
#[account(
mut,
seeds = [crate::constants::SEED_VAULT.as_bytes(),
glam_state.key().as_ref()],
bump
Expand Down Expand Up @@ -53,7 +54,6 @@ pub struct MeteoraAmmSwap<'info> {
/// CHECK: should be validated by target program
#[account(mut)]
pub protocol_token_fee: AccountInfo<'info>,
pub user: Signer<'info>,
/// CHECK: should be validated by target program
pub vault_program: AccountInfo<'info>,
/// CHECK: should be validated by target program
Expand All @@ -63,6 +63,7 @@ pub struct MeteoraAmmSwap<'info> {
pub struct MeteoraAmmAddImbalanceLiquidity<'info> {
pub glam_state: Box<Account<'info, StateAccount>>,
#[account(
mut,
seeds = [crate::constants::SEED_VAULT.as_bytes(),
glam_state.key().as_ref()],
bump
Expand Down Expand Up @@ -110,7 +111,6 @@ pub struct MeteoraAmmAddImbalanceLiquidity<'info> {
/// CHECK: should be validated by target program
#[account(mut)]
pub user_b_token: AccountInfo<'info>,
pub user: Signer<'info>,
/// CHECK: should be validated by target program
pub vault_program: AccountInfo<'info>,
/// CHECK: should be validated by target program
Expand All @@ -120,6 +120,7 @@ pub struct MeteoraAmmAddImbalanceLiquidity<'info> {
pub struct MeteoraAmmRemoveBalanceLiquidity<'info> {
pub glam_state: Box<Account<'info, StateAccount>>,
#[account(
mut,
seeds = [crate::constants::SEED_VAULT.as_bytes(),
glam_state.key().as_ref()],
bump
Expand Down Expand Up @@ -167,7 +168,6 @@ pub struct MeteoraAmmRemoveBalanceLiquidity<'info> {
/// CHECK: should be validated by target program
#[account(mut)]
pub user_b_token: AccountInfo<'info>,
pub user: Signer<'info>,
/// CHECK: should be validated by target program
pub vault_program: AccountInfo<'info>,
/// CHECK: should be validated by target program
Expand All @@ -177,19 +177,20 @@ pub struct MeteoraAmmRemoveBalanceLiquidity<'info> {
acl::check_access(
&ctx.accounts.glam_state,
&ctx.accounts.glam_signer.key,
Permission::MeteoraSwap
Permission::MeteoraAmmSwap
)
)]
#[access_control(
acl::check_integration(&ctx.accounts.glam_state, Integration::MeteoraAmm)
)]
#[glam_macros::glam_vault_signer_seeds]
pub fn meteora_amm_swap(
ctx: Context<MeteoraAmmSwap>,
in_amount: u64,
minimum_out_amount: u64,
) -> Result<()> {
meteora_amm::cpi::swap(
CpiContext::new(
CpiContext::new_with_signer(
ctx.accounts.cpi_program.to_account_info(),
meteora_amm::cpi::accounts::Swap {
pool: ctx.accounts.pool.to_account_info(),
Expand All @@ -207,10 +208,11 @@ pub fn meteora_amm_swap(
a_vault_lp: ctx.accounts.a_vault_lp.to_account_info(),
b_vault_lp: ctx.accounts.b_vault_lp.to_account_info(),
protocol_token_fee: ctx.accounts.protocol_token_fee.to_account_info(),
user: ctx.accounts.user.to_account_info(),
user: ctx.accounts.glam_vault.to_account_info(),
vault_program: ctx.accounts.vault_program.to_account_info(),
token_program: ctx.accounts.token_program.to_account_info(),
},
glam_vault_signer_seeds,
),
in_amount,
minimum_out_amount,
Expand All @@ -220,20 +222,21 @@ pub fn meteora_amm_swap(
acl::check_access(
&ctx.accounts.glam_state,
&ctx.accounts.glam_signer.key,
Permission::MeteoraLiquidity
Permission::MeteoraAmmLiquidity
)
)]
#[access_control(
acl::check_integration(&ctx.accounts.glam_state, Integration::MeteoraAmm)
)]
#[glam_macros::glam_vault_signer_seeds]
pub fn meteora_amm_add_imbalance_liquidity(
ctx: Context<MeteoraAmmAddImbalanceLiquidity>,
minimum_pool_token_amount: u64,
token_a_amount: u64,
token_b_amount: u64,
) -> Result<()> {
meteora_amm::cpi::add_imbalance_liquidity(
CpiContext::new(
CpiContext::new_with_signer(
ctx.accounts.cpi_program.to_account_info(),
meteora_amm::cpi::accounts::AddImbalanceLiquidity {
pool: ctx.accounts.pool.to_account_info(),
Expand All @@ -249,10 +252,11 @@ pub fn meteora_amm_add_imbalance_liquidity(
b_token_vault: ctx.accounts.b_token_vault.to_account_info(),
user_a_token: ctx.accounts.user_a_token.to_account_info(),
user_b_token: ctx.accounts.user_b_token.to_account_info(),
user: ctx.accounts.user.to_account_info(),
user: ctx.accounts.glam_vault.to_account_info(),
vault_program: ctx.accounts.vault_program.to_account_info(),
token_program: ctx.accounts.token_program.to_account_info(),
},
glam_vault_signer_seeds,
),
minimum_pool_token_amount,
token_a_amount,
Expand All @@ -263,20 +267,21 @@ pub fn meteora_amm_add_imbalance_liquidity(
acl::check_access(
&ctx.accounts.glam_state,
&ctx.accounts.glam_signer.key,
Permission::MeteoraLiquidity
Permission::MeteoraAmmLiquidity
)
)]
#[access_control(
acl::check_integration(&ctx.accounts.glam_state, Integration::MeteoraAmm)
)]
#[glam_macros::glam_vault_signer_seeds]
pub fn meteora_amm_remove_balance_liquidity(
ctx: Context<MeteoraAmmRemoveBalanceLiquidity>,
pool_token_amount: u64,
minimum_a_token_out: u64,
minimum_b_token_out: u64,
) -> Result<()> {
meteora_amm::cpi::remove_balance_liquidity(
CpiContext::new(
CpiContext::new_with_signer(
ctx.accounts.cpi_program.to_account_info(),
meteora_amm::cpi::accounts::RemoveBalanceLiquidity {
pool: ctx.accounts.pool.to_account_info(),
Expand All @@ -292,10 +297,11 @@ pub fn meteora_amm_remove_balance_liquidity(
b_token_vault: ctx.accounts.b_token_vault.to_account_info(),
user_a_token: ctx.accounts.user_a_token.to_account_info(),
user_b_token: ctx.accounts.user_b_token.to_account_info(),
user: ctx.accounts.user.to_account_info(),
user: ctx.accounts.glam_vault.to_account_info(),
vault_program: ctx.accounts.vault_program.to_account_info(),
token_program: ctx.accounts.token_program.to_account_info(),
},
glam_vault_signer_seeds,
),
pool_token_amount,
minimum_a_token_out,
Expand Down
Loading

0 comments on commit b805e8e

Please sign in to comment.