From 5384381642620a8804c17a1ef0348be4d5808f58 Mon Sep 17 00:00:00 2001 From: bangyro <229454856+bangyro@users.noreply.github.com> Date: Thu, 18 Dec 2025 19:26:36 +0800 Subject: [PATCH 1/9] feat: bump damm-v2 to 0.1.6 --- Cargo.lock | 40 ++++++++++++++++++++++++++++++++++++++-- programs/zap/Cargo.toml | 2 +- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7538b16..748d688 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -729,8 +729,8 @@ checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "cp-amm" -version = "0.1.5" -source = "git+https://github.com/MeteoraAg/damm-v2?rev=689a3264484799d833c505523f4ff4e4990690aa#689a3264484799d833c505523f4ff4e4990690aa" +version = "0.1.6" +source = "git+https://github.com/MeteoraAg/damm-v2?branch=fix%2Ffeature-cpi-no-entrypoint-not-working#3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc" dependencies = [ "anchor-lang", "anchor-spl", @@ -739,6 +739,9 @@ dependencies = [ "num", "num-traits", "num_enum", + "pinocchio", + "pinocchio-token", + "pinocchio-token-2022", "ruint", "spl-token-metadata-interface", "static_assertions", @@ -1428,6 +1431,39 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "pinocchio" +version = "0.9.0" +source = "git+https://github.com/anza-xyz/pinocchio.git?rev=17b0e862c01a868ea07ef81a2f8a9b4a504bdfed#17b0e862c01a868ea07ef81a2f8a9b4a504bdfed" + +[[package]] +name = "pinocchio-pubkey" +version = "0.3.0" +source = "git+https://github.com/anza-xyz/pinocchio.git?rev=17b0e862c01a868ea07ef81a2f8a9b4a504bdfed#17b0e862c01a868ea07ef81a2f8a9b4a504bdfed" +dependencies = [ + "five8_const", + "pinocchio", + "sha2-const-stable", +] + +[[package]] +name = "pinocchio-token" +version = "0.4.0" +source = "git+https://github.com/anza-xyz/pinocchio.git?rev=17b0e862c01a868ea07ef81a2f8a9b4a504bdfed#17b0e862c01a868ea07ef81a2f8a9b4a504bdfed" +dependencies = [ + "pinocchio", + "pinocchio-pubkey", +] + +[[package]] +name = "pinocchio-token-2022" +version = "0.1.0" +source = "git+https://github.com/anza-xyz/pinocchio.git?rev=17b0e862c01a868ea07ef81a2f8a9b4a504bdfed#17b0e862c01a868ea07ef81a2f8a9b4a504bdfed" +dependencies = [ + "pinocchio", + "pinocchio-pubkey", +] + [[package]] name = "polyval" version = "0.6.2" diff --git a/programs/zap/Cargo.toml b/programs/zap/Cargo.toml index 580a97b..72ec05a 100644 --- a/programs/zap/Cargo.toml +++ b/programs/zap/Cargo.toml @@ -26,5 +26,5 @@ dlmm = { path = "../../libs/dlmm" } damm-v2 = { git = "https://github.com/MeteoraAg/damm-v2", features = [ "cpi", "no-entrypoint", -], rev = "689a3264484799d833c505523f4ff4e4990690aa", package="cp-amm" } +], branch = "fix/feature-cpi-no-entrypoint-not-working", package="cp-amm" } ruint = "1.3.0" \ No newline at end of file From 09bcd036ec283aacd56d938512f84e58c17cbfb7 Mon Sep 17 00:00:00 2001 From: bangyro <229454856+bangyro@users.noreply.github.com> Date: Thu, 18 Dec 2025 19:26:49 +0800 Subject: [PATCH 2/9] fix: type expected by calculate_transfer_fee_excluded_amount --- ...ix_zap_in_dlmm_for_initialized_position.rs | 22 ++++++++++++++----- ..._zap_in_dlmm_for_uninitialized_position.rs | 22 ++++++++++++++----- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_initialized_position.rs b/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_initialized_position.rs index e9be5c6..a4e6fd1 100644 --- a/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_initialized_position.rs +++ b/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_initialized_position.rs @@ -86,12 +86,22 @@ pub fn handle_zap_in_dlmm_for_initialized_position<'c: 'info, 'info>( let pre_user_amount_x = accessor::amount(&token_x_account_ai)?; let pre_user_amount_y = accessor::amount(&token_y_account_ai)?; - let amount_x = - calculate_transfer_fee_excluded_amount(&ctx.accounts.token_x_mint, max_deposit_x_amount)? - .amount; - let amount_y = - calculate_transfer_fee_excluded_amount(&ctx.accounts.token_y_mint, max_deposit_y_amount)? - .amount; + let amount_x = calculate_transfer_fee_excluded_amount( + &ctx.accounts + .token_x_mint + .to_account_info() + .try_borrow_data()?, + max_deposit_x_amount, + )? + .amount; + let amount_y = calculate_transfer_fee_excluded_amount( + &ctx.accounts + .token_y_mint + .to_account_info() + .try_borrow_data()?, + max_deposit_y_amount, + )? + .amount; let lb_pair = ctx.accounts.lb_pair.load()?; diff --git a/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_uninitialized_position.rs b/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_uninitialized_position.rs index ce5593d..37af6d3 100644 --- a/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_uninitialized_position.rs +++ b/programs/zap/src/instructions/zap_in_dlmm/ix_zap_in_dlmm_for_uninitialized_position.rs @@ -132,12 +132,22 @@ pub fn handle_zap_in_dlmm_for_uninitialized_position<'c: 'info, 'info>( let lb_pair = ctx.accounts.lb_pair.load()?; let lb_pair_active_id = lb_pair.active_id; - let amount_x = - calculate_transfer_fee_excluded_amount(&ctx.accounts.token_x_mint, max_deposit_x_amount)? - .amount; - let amount_y = - calculate_transfer_fee_excluded_amount(&ctx.accounts.token_y_mint, max_deposit_y_amount)? - .amount; + let amount_x = calculate_transfer_fee_excluded_amount( + &ctx.accounts + .token_x_mint + .to_account_info() + .try_borrow_data()?, + max_deposit_x_amount, + )? + .amount; + let amount_y = calculate_transfer_fee_excluded_amount( + &ctx.accounts + .token_y_mint + .to_account_info() + .try_borrow_data()?, + max_deposit_y_amount, + )? + .amount; let params = ZapInRebalancingParams { amount_x, From 8a9c0d4e9f1413667381919c6156918da91ff11f Mon Sep 17 00:00:00 2001 From: bangyro <229454856+bangyro@users.noreply.github.com> Date: Thu, 18 Dec 2025 19:55:05 +0800 Subject: [PATCH 3/9] feat: market cap fee mode --- .../zap/src/instructions/ix_zap_in_damm_v2.rs | 2 + programs/zap/src/utils/damm_v2_utils.rs | 48 +++++++++++++++---- 2 files changed, 42 insertions(+), 8 deletions(-) diff --git a/programs/zap/src/instructions/ix_zap_in_damm_v2.rs b/programs/zap/src/instructions/ix_zap_in_damm_v2.rs index 06544f8..47b3750 100644 --- a/programs/zap/src/instructions/ix_zap_in_damm_v2.rs +++ b/programs/zap/src/instructions/ix_zap_in_damm_v2.rs @@ -200,6 +200,8 @@ pub fn handle_zap_in_damm_v2( remaining_amount, trade_direction, current_point, + pool.pool_fees.init_sqrt_price, + pool.sqrt_price, ); match swap_result { Ok((swap_in_amount, swap_out_amount)) => { diff --git a/programs/zap/src/utils/damm_v2_utils.rs b/programs/zap/src/utils/damm_v2_utils.rs index 6db2e11..8dfcea0 100644 --- a/programs/zap/src/utils/damm_v2_utils.rs +++ b/programs/zap/src/utils/damm_v2_utils.rs @@ -1,6 +1,9 @@ use anchor_lang::prelude::*; use damm_v2::{ - base_fee::{BaseFeeHandler, FeeRateLimiter}, + base_fee::{ + fee_rate_limiter::PodAlignedFeeRateLimiter, BaseFeeEnumReader, BaseFeeHandler, + BaseFeeHandlerBuilder, + }, constants::fee::get_max_fee_numerator, curve::{ get_delta_amount_a_unsigned, get_delta_amount_b_unsigned, get_next_sqrt_price_from_input, @@ -127,6 +130,8 @@ fn calculate_swap_result( trade_direction: TradeDirection, fee_handler: &FeeHandler, fee_mode: &FeeMode, + init_sqrt_price: u128, + current_sqrt_price: u128, ) -> Result { let excluded_fee_amount_in = if trade_direction == TradeDirection::AtoB { token_a_transfer_fee_calculator @@ -142,6 +147,8 @@ fn calculate_swap_result( current_point, pool.activation_point, trade_direction, + init_sqrt_price, + current_sqrt_price, )?; let actual_amount_in = if fee_mode.fees_on_input { let FeeOnAmountResult { amount, .. } = pool.pool_fees.get_fee_on_amount( @@ -245,7 +252,7 @@ fn validate_swap_result( } struct FeeHandler { - pub rate_limiter_handler: FeeRateLimiter, // avoid copy + pub rate_limiter_handler: PodAlignedFeeRateLimiter, // avoid copy pub variable_fee_numerator: u128, pub max_fee_numerator: u64, pub total_fee_numerator: u64, @@ -259,6 +266,8 @@ impl FeeHandler { current_point: u64, activation_point: u64, trade_direction: TradeDirection, + init_sqrt_price: u128, + current_sqrt_price: u128, ) -> Result { if self.is_rate_limiter { let base_fee_numerator = self @@ -268,6 +277,8 @@ impl FeeHandler { activation_point, trade_direction, input_amount, + init_sqrt_price, + current_sqrt_price, )?; get_total_fee_numerator( @@ -285,16 +296,25 @@ fn get_fee_handler( pool: &Pool, current_point: u64, trade_direction: TradeDirection, + init_sqrt_price: u128, + current_sqrt_price: u128, ) -> Result { let variable_fee_numerator = pool.pool_fees.dynamic_fee.get_variable_fee()?; let max_fee_numerator = get_max_fee_numerator(pool.version)?; - let base_fee_mode = pool.pool_fees.base_fee.base_fee_mode; + let base_fee_mode = pool.pool_fees.base_fee.base_fee_info.get_base_fee_mode()?; match BaseFeeMode::try_from(base_fee_mode) { Ok(value) => { match value { - BaseFeeMode::FeeSchedulerLinear | BaseFeeMode::FeeSchedulerExponential => { - let base_fee_handler = pool.pool_fees.base_fee.get_base_fee_handler()?; + BaseFeeMode::FeeTimeSchedulerLinear + | BaseFeeMode::FeeTimeSchedulerExponential + | BaseFeeMode::FeeMarketCapSchedulerLinear + | BaseFeeMode::FeeMarketCapSchedulerExponential => { + let base_fee_handler = pool + .pool_fees + .base_fee + .base_fee_info + .get_base_fee_handler()?; // fee scheduler doesn't care for amount let base_fee_numerator = base_fee_handler .get_base_fee_numerator_from_included_fee_amount( @@ -302,6 +322,8 @@ fn get_fee_handler( pool.activation_point, trade_direction, 0, + init_sqrt_price, + current_sqrt_price, )?; let total_fee_numerator = get_total_fee_numerator( @@ -310,7 +332,7 @@ fn get_fee_handler( max_fee_numerator, )?; Ok(FeeHandler { - rate_limiter_handler: FeeRateLimiter::default(), + rate_limiter_handler: PodAlignedFeeRateLimiter::default(), variable_fee_numerator, max_fee_numerator, total_fee_numerator, @@ -318,7 +340,7 @@ fn get_fee_handler( }) } BaseFeeMode::RateLimiter => { - let rate_limiter_handler = pool.pool_fees.base_fee.get_fee_rate_limiter()?; + let rate_limiter_handler = pool.pool_fees.base_fee.to_fee_rate_limiter()?; Ok(FeeHandler { rate_limiter_handler, total_fee_numerator: 0, @@ -357,13 +379,21 @@ pub fn calculate_swap_amount( remaining_amount: u64, trade_direction: TradeDirection, current_point: u64, + init_sqrt_price: u128, + current_sqrt_price: u128, ) -> Result<(u64, u64)> { let mut max_swap_amount = remaining_amount; let mut min_swap_amount = 0; let mut swap_in_amount = 0; let mut swap_out_amount = 0; - let fee_handler = get_fee_handler(pool, current_point, trade_direction)?; + let fee_handler = get_fee_handler( + pool, + current_point, + trade_direction, + init_sqrt_price, + current_sqrt_price, + )?; let fee_mode = FeeMode::get_fee_mode(pool.collect_fee_mode, trade_direction, false)?; @@ -389,6 +419,8 @@ pub fn calculate_swap_amount( trade_direction, &fee_handler, &fee_mode, + init_sqrt_price, + current_sqrt_price, )?; // update swap amount From a3a431b73fdc6b18f9d87306a7e899287d7e2aa4 Mon Sep 17 00:00:00 2001 From: bangyro <229454856+bangyro@users.noreply.github.com> Date: Fri, 19 Dec 2025 12:49:25 +0800 Subject: [PATCH 4/9] fix: use rev instead of branch --- Cargo.lock | 2 +- programs/zap/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 748d688..0bafa86 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -730,7 +730,7 @@ checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "cp-amm" version = "0.1.6" -source = "git+https://github.com/MeteoraAg/damm-v2?branch=fix%2Ffeature-cpi-no-entrypoint-not-working#3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc" +source = "git+https://github.com/MeteoraAg/damm-v2?rev=3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc#3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc" dependencies = [ "anchor-lang", "anchor-spl", diff --git a/programs/zap/Cargo.toml b/programs/zap/Cargo.toml index 72ec05a..9aaeb01 100644 --- a/programs/zap/Cargo.toml +++ b/programs/zap/Cargo.toml @@ -26,5 +26,5 @@ dlmm = { path = "../../libs/dlmm" } damm-v2 = { git = "https://github.com/MeteoraAg/damm-v2", features = [ "cpi", "no-entrypoint", -], branch = "fix/feature-cpi-no-entrypoint-not-working", package="cp-amm" } +], rev = "3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc", package="cp-amm" } ruint = "1.3.0" \ No newline at end of file From 9ef8fc7d8e99ee6e007f809cba9de014a8131ad9 Mon Sep 17 00:00:00 2001 From: bangyro <229454856+bangyro@users.noreply.github.com> Date: Fri, 19 Dec 2025 15:39:44 +0800 Subject: [PATCH 5/9] fix: take sqrt_price from pool instead of passing in --- .../zap/src/instructions/ix_zap_in_damm_v2.rs | 2 -- programs/zap/src/utils/damm_v2_utils.rs | 24 ++++--------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/programs/zap/src/instructions/ix_zap_in_damm_v2.rs b/programs/zap/src/instructions/ix_zap_in_damm_v2.rs index 47b3750..06544f8 100644 --- a/programs/zap/src/instructions/ix_zap_in_damm_v2.rs +++ b/programs/zap/src/instructions/ix_zap_in_damm_v2.rs @@ -200,8 +200,6 @@ pub fn handle_zap_in_damm_v2( remaining_amount, trade_direction, current_point, - pool.pool_fees.init_sqrt_price, - pool.sqrt_price, ); match swap_result { Ok((swap_in_amount, swap_out_amount)) => { diff --git a/programs/zap/src/utils/damm_v2_utils.rs b/programs/zap/src/utils/damm_v2_utils.rs index 8dfcea0..94820b9 100644 --- a/programs/zap/src/utils/damm_v2_utils.rs +++ b/programs/zap/src/utils/damm_v2_utils.rs @@ -130,8 +130,6 @@ fn calculate_swap_result( trade_direction: TradeDirection, fee_handler: &FeeHandler, fee_mode: &FeeMode, - init_sqrt_price: u128, - current_sqrt_price: u128, ) -> Result { let excluded_fee_amount_in = if trade_direction == TradeDirection::AtoB { token_a_transfer_fee_calculator @@ -147,8 +145,8 @@ fn calculate_swap_result( current_point, pool.activation_point, trade_direction, - init_sqrt_price, - current_sqrt_price, + pool.pool_fees.init_sqrt_price, + pool.sqrt_price, )?; let actual_amount_in = if fee_mode.fees_on_input { let FeeOnAmountResult { amount, .. } = pool.pool_fees.get_fee_on_amount( @@ -296,8 +294,6 @@ fn get_fee_handler( pool: &Pool, current_point: u64, trade_direction: TradeDirection, - init_sqrt_price: u128, - current_sqrt_price: u128, ) -> Result { let variable_fee_numerator = pool.pool_fees.dynamic_fee.get_variable_fee()?; let max_fee_numerator = get_max_fee_numerator(pool.version)?; @@ -322,8 +318,8 @@ fn get_fee_handler( pool.activation_point, trade_direction, 0, - init_sqrt_price, - current_sqrt_price, + pool.pool_fees.init_sqrt_price, + pool.sqrt_price, )?; let total_fee_numerator = get_total_fee_numerator( @@ -379,21 +375,13 @@ pub fn calculate_swap_amount( remaining_amount: u64, trade_direction: TradeDirection, current_point: u64, - init_sqrt_price: u128, - current_sqrt_price: u128, ) -> Result<(u64, u64)> { let mut max_swap_amount = remaining_amount; let mut min_swap_amount = 0; let mut swap_in_amount = 0; let mut swap_out_amount = 0; - let fee_handler = get_fee_handler( - pool, - current_point, - trade_direction, - init_sqrt_price, - current_sqrt_price, - )?; + let fee_handler = get_fee_handler(pool, current_point, trade_direction)?; let fee_mode = FeeMode::get_fee_mode(pool.collect_fee_mode, trade_direction, false)?; @@ -419,8 +407,6 @@ pub fn calculate_swap_amount( trade_direction, &fee_handler, &fee_mode, - init_sqrt_price, - current_sqrt_price, )?; // update swap amount From 1bc7423411ccb572bf5d5c64780a704fa0222b84 Mon Sep 17 00:00:00 2001 From: Andrew Nguyen Date: Sat, 20 Dec 2025 10:59:28 +0700 Subject: [PATCH 6/9] fix damm v2 no-entrypoint package --- .github/workflows/ci.yml | 3 +-- Cargo.lock | 2 +- programs/zap/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a9dfbe1..0a53fa0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,8 +4,7 @@ on: pull_request: branches: - main - - release_0.2.0 - - zap_in + - release_0.2.1 env: SOLANA_CLI_VERSION: 2.1.0 diff --git a/Cargo.lock b/Cargo.lock index 0bafa86..0d0db0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -730,7 +730,7 @@ checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "cp-amm" version = "0.1.6" -source = "git+https://github.com/MeteoraAg/damm-v2?rev=3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc#3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc" +source = "git+https://github.com/MeteoraAg/damm-v2?rev=6def8801bbc98a12b7e2d19e2a9ff723203263cc#6def8801bbc98a12b7e2d19e2a9ff723203263cc" dependencies = [ "anchor-lang", "anchor-spl", diff --git a/programs/zap/Cargo.toml b/programs/zap/Cargo.toml index 9aaeb01..6d4d4e2 100644 --- a/programs/zap/Cargo.toml +++ b/programs/zap/Cargo.toml @@ -26,5 +26,5 @@ dlmm = { path = "../../libs/dlmm" } damm-v2 = { git = "https://github.com/MeteoraAg/damm-v2", features = [ "cpi", "no-entrypoint", -], rev = "3f35fe1a8cef7b34b7e1adfe6c456f195ef3b8bc", package="cp-amm" } +], rev = "6def8801bbc98a12b7e2d19e2a9ff723203263cc", package="cp-amm" } ruint = "1.3.0" \ No newline at end of file From ac2fe7c799c1f0284c4f9a7e8376d78bdd8bb420 Mon Sep 17 00:00:00 2001 From: Andrew Nguyen Date: Sun, 21 Dec 2025 10:40:29 +0700 Subject: [PATCH 7/9] update damm v2 package --- Cargo.lock | 2 +- programs/zap/Cargo.toml | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0d0db0f..ebe94d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -730,7 +730,7 @@ checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" [[package]] name = "cp-amm" version = "0.1.6" -source = "git+https://github.com/MeteoraAg/damm-v2?rev=6def8801bbc98a12b7e2d19e2a9ff723203263cc#6def8801bbc98a12b7e2d19e2a9ff723203263cc" +source = "git+https://github.com/MeteoraAg/damm-v2?rev=d9cef5aaec9cfa1a6d3b0b28d213c87c285127de#d9cef5aaec9cfa1a6d3b0b28d213c87c285127de" dependencies = [ "anchor-lang", "anchor-spl", diff --git a/programs/zap/Cargo.toml b/programs/zap/Cargo.toml index 6d4d4e2..c38b181 100644 --- a/programs/zap/Cargo.toml +++ b/programs/zap/Cargo.toml @@ -25,6 +25,5 @@ bytemuck = { workspace = true, features = ["derive", "min_const_generics"] } dlmm = { path = "../../libs/dlmm" } damm-v2 = { git = "https://github.com/MeteoraAg/damm-v2", features = [ "cpi", - "no-entrypoint", -], rev = "6def8801bbc98a12b7e2d19e2a9ff723203263cc", package="cp-amm" } +], rev = "d9cef5aaec9cfa1a6d3b0b28d213c87c285127de", package="cp-amm" } ruint = "1.3.0" \ No newline at end of file From 167e7d91ec6cf62b46bbe9572b8a9f780b944028 Mon Sep 17 00:00:00 2001 From: bangyro <229454856+bangyro@users.noreply.github.com> Date: Sun, 21 Dec 2025 17:51:34 +0800 Subject: [PATCH 8/9] feat: update damm_v2 artifacts --- idls/damm_v2.json | 3960 ++++++++++------------------------- tests/common/idl/damm_v2.ts | 1011 ++++++--- tests/fixtures/damm_v2.so | Bin 1343368 -> 1387872 bytes 3 files changed, 1761 insertions(+), 3210 deletions(-) diff --git a/idls/damm_v2.json b/idls/damm_v2.json index a7bf2f7..fee333e 100644 --- a/idls/damm_v2.json +++ b/idls/damm_v2.json @@ -2,30 +2,19 @@ "address": "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG", "metadata": { "name": "cp_amm", - "version": "0.1.5", + "version": "0.1.6", "spec": "0.1.0", "description": "Created with Anchor" }, "instructions": [ { "name": "add_liquidity", - "discriminator": [ - 181, - 157, - 89, - 67, - 143, - 182, - 52, - 72 - ], + "discriminator": [181, 157, 89, 67, 143, 182, 52, 72], "accounts": [ { "name": "pool", "writable": true, - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -33,80 +22,52 @@ }, { "name": "token_a_account", - "docs": [ - "The user token a account" - ], + "docs": ["The user token a account"], "writable": true }, { "name": "token_b_account", - "docs": [ - "The user token b account" - ], + "docs": ["The user token b account"], "writable": true }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token a"], + "relations": ["pool"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token b"], + "relations": ["pool"] }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner", - "docs": [ - "owner of position" - ], + "docs": ["owner of position"], "signer": true }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "event_authority", @@ -115,23 +76,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -154,16 +100,7 @@ }, { "name": "claim_partner_fee", - "discriminator": [ - 97, - 206, - 39, - 105, - 94, - 94, - 126, - 148 - ], + "discriminator": [97, 206, 39, 105, 94, 94, 126, 148], "accounts": [ { "name": "pool_authority", @@ -175,74 +112,48 @@ }, { "name": "token_a_account", - "docs": [ - "The treasury token a account" - ], + "docs": ["The treasury token a account"], "writable": true }, { "name": "token_b_account", - "docs": [ - "The treasury token b account" - ], + "docs": ["The treasury token b account"], "writable": true }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token a"], + "relations": ["pool"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token b"], + "relations": ["pool"] }, { "name": "partner", "signer": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "event_authority", @@ -251,23 +162,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -290,16 +186,7 @@ }, { "name": "claim_position_fee", - "discriminator": [ - 180, - 38, - 154, - 17, - 133, - 33, - 162, - 211 - ], + "discriminator": [180, 38, 154, 17, 133, 33, 162, 211], "accounts": [ { "name": "pool_authority", @@ -307,9 +194,7 @@ }, { "name": "pool", - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -317,80 +202,52 @@ }, { "name": "token_a_account", - "docs": [ - "The user token a account" - ], + "docs": ["The user token a account"], "writable": true }, { "name": "token_b_account", - "docs": [ - "The user token b account" - ], + "docs": ["The user token b account"], "writable": true }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token a"], + "relations": ["pool"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token b"], + "relations": ["pool"] }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner", - "docs": [ - "owner of position" - ], + "docs": ["owner of position"], "signer": true }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "event_authority", @@ -399,23 +256,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -429,16 +271,7 @@ }, { "name": "claim_protocol_fee", - "discriminator": [ - 165, - 228, - 133, - 48, - 99, - 249, - 255, - 33 - ], + "discriminator": [165, 228, 133, 48, 99, 249, 255, 33], "accounts": [ { "name": "pool_authority", @@ -450,85 +283,38 @@ }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token a"], + "relations": ["pool"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token b"], + "relations": ["pool"] }, { "name": "token_a_account", - "docs": [ - "The treasury token a account" - ], + "docs": ["The treasury token a account"], "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ - 48, - 9, - 89, - 123, - 106, - 114, - 131, - 251, - 50, - 173, - 254, - 250, - 10, - 80, - 160, - 84, - 143, - 100, - 81, - 249, - 134, - 112, - 30, - 213, - 50, - 166, - 239, - 78, - 53, - 175, - 188, - 85 + 48, 9, 89, 123, 106, 114, 131, 251, 50, 173, 254, 250, 10, 80, + 160, 84, 143, 100, 81, 249, 134, 112, 30, 213, 50, 166, 239, + 78, 53, 175, 188, 85 ] }, { @@ -543,85 +329,25 @@ "program": { "kind": "const", "value": [ - 140, - 151, - 37, - 143, - 78, - 36, - 137, - 241, - 187, - 61, - 16, - 41, - 20, - 142, - 13, - 131, - 11, - 90, - 19, - 153, - 218, - 255, - 16, - 132, - 4, - 142, - 123, - 216, - 219, - 233, - 248, - 89 + 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, + 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, + 219, 233, 248, 89 ] } } }, { "name": "token_b_account", - "docs": [ - "The treasury token b account" - ], + "docs": ["The treasury token b account"], "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ - 48, - 9, - 89, - 123, - 106, - 114, - 131, - 251, - 50, - 173, - 254, - 250, - 10, - 80, - 160, - 84, - 143, - 100, - 81, - 249, - 134, - 112, - 30, - 213, - 50, - 166, - 239, - 78, - 53, - 175, - 188, - 85 + 48, 9, 89, 123, 106, 114, 131, 251, 50, 173, 254, 250, 10, 80, + 160, 84, 143, 100, 81, 249, 134, 112, 30, 213, 50, 166, 239, + 78, 53, 175, 188, 85 ] }, { @@ -636,69 +362,30 @@ "program": { "kind": "const", "value": [ - 140, - 151, - 37, - 143, - 78, - 36, - 137, - 241, - 187, - 61, - 16, - 41, - 20, - 142, - 13, - 131, - 11, - 90, - 19, - 153, - 218, - 255, - 16, - 132, - 4, - 142, - 123, - 216, - 219, - 233, - 248, - 89 + 140, 151, 37, 143, 78, 36, 137, 241, 187, 61, 16, 41, 20, 142, + 13, 131, 11, 90, 19, 153, 218, 255, 16, 132, 4, 142, 123, 216, + 219, 233, 248, 89 ] } } }, { - "name": "claim_fee_operator", - "docs": [ - "Claim fee operator" - ] + "name": "operator", + "docs": ["Claim fee operator"] }, { - "name": "operator", - "docs": [ - "Operator" - ], + "name": "whitelisted_address", + "docs": ["Operator"], "signer": true, - "relations": [ - "claim_fee_operator" - ] + "relations": ["operator"] }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "event_authority", @@ -707,23 +394,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -746,16 +418,7 @@ }, { "name": "claim_reward", - "discriminator": [ - 149, - 95, - 181, - 242, - 94, - 90, - 158, - 162 - ], + "discriminator": [149, 95, 181, 242, 94, 90, 158, 162], "accounts": [ { "name": "pool_authority", @@ -764,9 +427,7 @@ { "name": "pool", "writable": true, - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -774,9 +435,7 @@ }, { "name": "reward_vault", - "docs": [ - "The vault token account for reward token" - ], + "docs": ["The vault token account for reward token"], "writable": true }, { @@ -788,15 +447,11 @@ }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner", - "docs": [ - "owner of position" - ], + "docs": ["owner of position"], "signer": true }, { @@ -809,23 +464,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -847,29 +487,24 @@ ] }, { - "name": "close_claim_fee_operator", - "discriminator": [ - 38, - 134, - 82, - 216, - 95, - 124, - 17, - 99 - ], + "name": "close_config", + "discriminator": [145, 9, 72, 157, 95, 125, 61, 85], "accounts": [ { - "name": "claim_fee_operator", + "name": "config", "writable": true }, { - "name": "rent_receiver", - "writable": true + "name": "operator" }, { - "name": "admin", - "signer": true + "name": "whitelisted_address", + "signer": true, + "relations": ["operator"] + }, + { + "name": "rent_receiver", + "writable": true }, { "name": "event_authority", @@ -878,23 +513,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -907,25 +527,15 @@ "args": [] }, { - "name": "close_config", - "discriminator": [ - 145, - 9, - 72, - 157, - 95, - 125, - 61, - 85 - ], + "name": "close_operator_account", + "discriminator": [171, 9, 213, 74, 120, 23, 3, 29], "accounts": [ { - "name": "config", + "name": "operator", "writable": true }, { "name": "admin", - "writable": true, "signer": true }, { @@ -939,23 +549,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -969,37 +564,22 @@ }, { "name": "close_position", - "discriminator": [ - 123, - 134, - 81, - 0, - 49, - 68, - 98, - 98 - ], + "discriminator": [123, 134, 81, 0, 49, 68, 98, 98], "accounts": [ { "name": "position_nft_mint", - "docs": [ - "position_nft_mint" - ], + "docs": ["position_nft_mint"], "writable": true }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ], + "docs": ["The token account for nft"], "writable": true }, { "name": "pool", "writable": true, - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -1015,9 +595,7 @@ }, { "name": "owner", - "docs": [ - "Owner of position" - ], + "docs": ["Owner of position"], "signer": true }, { @@ -1034,23 +612,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1064,25 +627,19 @@ }, { "name": "close_token_badge", - "discriminator": [ - 108, - 146, - 86, - 110, - 179, - 254, - 10, - 104 - ], + "discriminator": [108, 146, 86, 110, 179, 254, 10, 104], "accounts": [ { "name": "token_badge", "writable": true }, { - "name": "admin", - "writable": true, - "signer": true + "name": "operator" + }, + { + "name": "whitelisted_address", + "signer": true, + "relations": ["operator"] }, { "name": "rent_receiver", @@ -1095,23 +652,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1124,42 +666,22 @@ "args": [] }, { - "name": "create_claim_fee_operator", - "discriminator": [ - 169, - 62, - 207, - 107, - 58, - 187, - 162, - 109 - ], + "name": "create_config", + "docs": ["OPERATOR FUNCTIONS /////"], + "discriminator": [201, 207, 243, 114, 75, 111, 47, 189], "accounts": [ { - "name": "claim_fee_operator", + "name": "config", "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 99, - 102, - 95, - 111, - 112, - 101, - 114, - 97, - 116, - 111, - 114 - ] + "value": [99, 111, 110, 102, 105, 103] }, { - "kind": "account", - "path": "operator" + "kind": "arg", + "path": "index" } ] } @@ -1168,7 +690,12 @@ "name": "operator" }, { - "name": "admin", + "name": "whitelisted_address", + "signer": true, + "relations": ["operator"] + }, + { + "name": "payer", "writable": true, "signer": true }, @@ -1183,23 +710,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1209,23 +721,24 @@ "name": "program" } ], - "args": [] + "args": [ + { + "name": "index", + "type": "u64" + }, + { + "name": "config_parameters", + "type": { + "defined": { + "name": "StaticConfigParameters" + } + } + } + ] }, { - "name": "create_config", - "docs": [ - "ADMIN FUNCTIONS /////" - ], - "discriminator": [ - 201, - 207, - 243, - 114, - 75, - 111, - 47, - 189 - ], + "name": "create_dynamic_config", + "discriminator": [81, 251, 122, 78, 66, 57, 208, 82], "accounts": [ { "name": "config", @@ -1234,14 +747,7 @@ "seeds": [ { "kind": "const", - "value": [ - 99, - 111, - 110, - 102, - 105, - 103 - ] + "value": [99, 111, 110, 102, 105, 103] }, { "kind": "arg", @@ -1251,7 +757,15 @@ } }, { - "name": "admin", + "name": "operator" + }, + { + "name": "whitelisted_address", + "signer": true, + "relations": ["operator"] + }, + { + "name": "payer", "writable": true, "signer": true }, @@ -1266,23 +780,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1301,50 +800,42 @@ "name": "config_parameters", "type": { "defined": { - "name": "StaticConfigParameters" + "name": "DynamicConfigParameters" } } } ] }, { - "name": "create_dynamic_config", - "discriminator": [ - 81, - 251, - 122, - 78, - 66, - 57, - 208, - 82 - ], + "name": "create_operator_account", + "docs": ["ADMIN FUNCTIONS /////"], + "discriminator": [221, 64, 246, 149, 240, 153, 229, 163], "accounts": [ { - "name": "config", + "name": "operator", "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 99, - 111, - 110, - 102, - 105, - 103 - ] + "value": [111, 112, 101, 114, 97, 116, 111, 114] }, { - "kind": "arg", - "path": "index" + "kind": "account", + "path": "whitelisted_address" } ] } }, + { + "name": "whitelisted_address" + }, { "name": "admin", + "signer": true + }, + { + "name": "payer", "writable": true, "signer": true }, @@ -1359,23 +850,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1387,74 +863,35 @@ ], "args": [ { - "name": "index", - "type": "u64" - }, - { - "name": "config_parameters", - "type": { - "defined": { - "name": "DynamicConfigParameters" - } - } + "name": "permission", + "type": "u128" } ] }, { "name": "create_position", - "discriminator": [ - 48, - 215, - 197, - 153, - 96, - 203, - 180, - 133 - ], + "discriminator": [48, 215, 197, 153, 96, 203, 180, 133], "accounts": [ { "name": "owner" }, { "name": "position_nft_mint", - "docs": [ - "position_nft_mint" - ], + "docs": ["position_nft_mint"], "writable": true, "signer": true }, { "name": "position_nft_account", - "docs": [ - "position nft account" - ], + "docs": ["position nft account"], "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110, - 95, - 110, - 102, - 116, - 95, - 97, - 99, - 99, - 111, - 117, - 110, - 116 + 112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, + 97, 99, 99, 111, 117, 110, 116 ] }, { @@ -1475,16 +912,7 @@ "seeds": [ { "kind": "const", - "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110 - ] + "value": [112, 111, 115, 105, 116, 105, 111, 110] }, { "kind": "account", @@ -1499,9 +927,7 @@ }, { "name": "payer", - "docs": [ - "Address paying to create the position. Can be anyone" - ], + "docs": ["Address paying to create the position. Can be anyone"], "writable": true, "signer": true }, @@ -1523,23 +949,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1553,16 +964,7 @@ }, { "name": "create_token_badge", - "discriminator": [ - 88, - 206, - 0, - 91, - 60, - 175, - 151, - 118 - ], + "discriminator": [88, 206, 0, 91, 60, 175, 151, 118], "accounts": [ { "name": "token_badge", @@ -1571,19 +973,7 @@ "seeds": [ { "kind": "const", - "value": [ - 116, - 111, - 107, - 101, - 110, - 95, - 98, - 97, - 100, - 103, - 101 - ] + "value": [116, 111, 107, 101, 110, 95, 98, 97, 100, 103, 101] }, { "kind": "account", @@ -1596,7 +986,15 @@ "name": "token_mint" }, { - "name": "admin", + "name": "operator" + }, + { + "name": "whitelisted_address", + "signer": true, + "relations": ["operator"] + }, + { + "name": "payer", "writable": true, "signer": true }, @@ -1611,23 +1009,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1640,17 +1023,33 @@ "args": [] }, { - "name": "fund_reward", - "discriminator": [ - 188, - 50, - 249, - 165, - 93, - 151, - 38, - 63 + "name": "dummy_ix", + "discriminator": [234, 95, 176, 185, 7, 42, 35, 159], + "accounts": [ + { + "name": "pod_aligned_fee_time_scheduler" + }, + { + "name": "pod_aligned_fee_rate_limiter" + }, + { + "name": "pod_aligned_fee_market_cap_scheduler" + } ], + "args": [ + { + "name": "_ixs", + "type": { + "defined": { + "name": "DummyParams" + } + } + } + ] + }, + { + "name": "fund_reward", + "discriminator": [188, 50, 249, 165, 93, 151, 38, 63], "accounts": [ { "name": "pool", @@ -1681,23 +1080,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1724,59 +1108,28 @@ }, { "name": "initialize_customizable_pool", - "discriminator": [ - 20, - 161, - 241, - 24, - 189, - 221, - 180, - 2 - ], + "discriminator": [20, 161, 241, 24, 189, 221, 180, 2], "accounts": [ { "name": "creator" }, { "name": "position_nft_mint", - "docs": [ - "position_nft_mint" - ], + "docs": ["position_nft_mint"], "writable": true, "signer": true }, { "name": "position_nft_account", - "docs": [ - "position nft account" - ], + "docs": ["position nft account"], "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110, - 95, - 110, - 102, - 116, - 95, - 97, - 99, - 99, - 111, - 117, - 110, - 116 + 112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, + 97, 99, 99, 111, 117, 110, 116 ] }, { @@ -1788,9 +1141,7 @@ }, { "name": "payer", - "docs": [ - "Address paying to create the pool. Can be anyone" - ], + "docs": ["Address paying to create the pool. Can be anyone"], "writable": true, "signer": true }, @@ -1800,9 +1151,7 @@ }, { "name": "pool", - "docs": [ - "Initialize an account to store the pool state" - ], + "docs": ["Initialize an account to store the pool state"], "writable": true }, { @@ -1812,16 +1161,7 @@ "seeds": [ { "kind": "const", - "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110 - ] + "value": [112, 111, 115, 105, 116, 105, 111, 110] }, { "kind": "account", @@ -1832,39 +1172,21 @@ }, { "name": "token_a_mint", - "docs": [ - "Token a mint" - ] + "docs": ["Token a mint"] }, { "name": "token_b_mint", - "docs": [ - "Token b mint" - ] + "docs": ["Token b mint"] }, { "name": "token_a_vault", - "docs": [ - "Token a vault for the pool" - ], + "docs": ["Token a vault for the pool"], "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 116, - 111, - 107, - 101, - 110, - 95, - 118, - 97, - 117, - 108, - 116 - ] + "value": [116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116] }, { "kind": "account", @@ -1879,27 +1201,13 @@ }, { "name": "token_b_vault", - "docs": [ - "Token b vault for the pool" - ], + "docs": ["Token b vault for the pool"], "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 116, - 111, - 107, - 101, - 110, - 95, - 118, - 97, - 117, - 108, - 116 - ] + "value": [116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116] }, { "kind": "account", @@ -1914,29 +1222,21 @@ }, { "name": "payer_token_a", - "docs": [ - "payer token a account" - ], + "docs": ["payer token a account"], "writable": true }, { "name": "payer_token_b", - "docs": [ - "creator token b account" - ], + "docs": ["creator token b account"], "writable": true }, { "name": "token_a_program", - "docs": [ - "Program to create mint account and mint tokens" - ] + "docs": ["Program to create mint account and mint tokens"] }, { "name": "token_b_program", - "docs": [ - "Program to create mint account and mint tokens" - ] + "docs": ["Program to create mint account and mint tokens"] }, { "name": "token_2022_program", @@ -1956,23 +1256,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -1995,62 +1280,29 @@ }, { "name": "initialize_pool", - "docs": [ - "USER FUNCTIONS ////" - ], - "discriminator": [ - 95, - 180, - 10, - 172, - 84, - 174, - 232, - 40 - ], + "docs": ["USER FUNCTIONS ////"], + "discriminator": [95, 180, 10, 172, 84, 174, 232, 40], "accounts": [ { "name": "creator" }, { "name": "position_nft_mint", - "docs": [ - "position_nft_mint" - ], + "docs": ["position_nft_mint"], "writable": true, "signer": true }, { "name": "position_nft_account", - "docs": [ - "position nft account" - ], + "docs": ["position nft account"], "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110, - 95, - 110, - 102, - 116, - 95, - 97, - 99, - 99, - 111, - 117, - 110, - 116 + 112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, + 97, 99, 99, 111, 117, 110, 116 ] }, { @@ -2062,17 +1314,13 @@ }, { "name": "payer", - "docs": [ - "Address paying to create the pool. Can be anyone" - ], + "docs": ["Address paying to create the pool. Can be anyone"], "writable": true, "signer": true }, { "name": "config", - "docs": [ - "Which config the pool belongs to." - ] + "docs": ["Which config the pool belongs to."] }, { "name": "pool_authority", @@ -2080,9 +1328,7 @@ }, { "name": "pool", - "docs": [ - "Initialize an account to store the pool state" - ], + "docs": ["Initialize an account to store the pool state"], "writable": true }, { @@ -2092,16 +1338,7 @@ "seeds": [ { "kind": "const", - "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110 - ] + "value": [112, 111, 115, 105, 116, 105, 111, 110] }, { "kind": "account", @@ -2112,39 +1349,21 @@ }, { "name": "token_a_mint", - "docs": [ - "Token a mint" - ] + "docs": ["Token a mint"] }, { "name": "token_b_mint", - "docs": [ - "Token b mint" - ] + "docs": ["Token b mint"] }, { "name": "token_a_vault", - "docs": [ - "Token a vault for the pool" - ], + "docs": ["Token a vault for the pool"], "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 116, - 111, - 107, - 101, - 110, - 95, - 118, - 97, - 117, - 108, - 116 - ] + "value": [116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116] }, { "kind": "account", @@ -2159,27 +1378,13 @@ }, { "name": "token_b_vault", - "docs": [ - "Token b vault for the pool" - ], + "docs": ["Token b vault for the pool"], "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 116, - 111, - 107, - 101, - 110, - 95, - 118, - 97, - 117, - 108, - 116 - ] + "value": [116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116] }, { "kind": "account", @@ -2194,29 +1399,21 @@ }, { "name": "payer_token_a", - "docs": [ - "payer token a account" - ], + "docs": ["payer token a account"], "writable": true }, { "name": "payer_token_b", - "docs": [ - "creator token b account" - ], + "docs": ["creator token b account"], "writable": true }, { "name": "token_a_program", - "docs": [ - "Program to create mint account and mint tokens" - ] + "docs": ["Program to create mint account and mint tokens"] }, { "name": "token_b_program", - "docs": [ - "Program to create mint account and mint tokens" - ] + "docs": ["Program to create mint account and mint tokens"] }, { "name": "token_2022_program", @@ -2236,23 +1433,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -2275,59 +1457,28 @@ }, { "name": "initialize_pool_with_dynamic_config", - "discriminator": [ - 149, - 82, - 72, - 197, - 253, - 252, - 68, - 15 - ], + "discriminator": [149, 82, 72, 197, 253, 252, 68, 15], "accounts": [ { "name": "creator" }, { "name": "position_nft_mint", - "docs": [ - "position_nft_mint" - ], + "docs": ["position_nft_mint"], "writable": true, "signer": true }, { "name": "position_nft_account", - "docs": [ - "position nft account" - ], + "docs": ["position nft account"], "writable": true, "pda": { "seeds": [ { "kind": "const", "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110, - 95, - 110, - 102, - 116, - 95, - 97, - 99, - 99, - 111, - 117, - 110, - 116 + 112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, + 97, 99, 99, 111, 117, 110, 116 ] }, { @@ -2339,24 +1490,18 @@ }, { "name": "payer", - "docs": [ - "Address paying to create the pool. Can be anyone" - ], + "docs": ["Address paying to create the pool. Can be anyone"], "writable": true, "signer": true }, { "name": "pool_creator_authority", "signer": true, - "relations": [ - "config" - ] + "relations": ["config"] }, { "name": "config", - "docs": [ - "Which config the pool belongs to." - ] + "docs": ["Which config the pool belongs to."] }, { "name": "pool_authority", @@ -2364,9 +1509,7 @@ }, { "name": "pool", - "docs": [ - "Initialize an account to store the pool state" - ], + "docs": ["Initialize an account to store the pool state"], "writable": true }, { @@ -2376,16 +1519,7 @@ "seeds": [ { "kind": "const", - "value": [ - 112, - 111, - 115, - 105, - 116, - 105, - 111, - 110 - ] + "value": [112, 111, 115, 105, 116, 105, 111, 110] }, { "kind": "account", @@ -2396,39 +1530,21 @@ }, { "name": "token_a_mint", - "docs": [ - "Token a mint" - ] + "docs": ["Token a mint"] }, { "name": "token_b_mint", - "docs": [ - "Token b mint" - ] + "docs": ["Token b mint"] }, { "name": "token_a_vault", - "docs": [ - "Token a vault for the pool" - ], + "docs": ["Token a vault for the pool"], "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 116, - 111, - 107, - 101, - 110, - 95, - 118, - 97, - 117, - 108, - 116 - ] + "value": [116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116] }, { "kind": "account", @@ -2443,27 +1559,13 @@ }, { "name": "token_b_vault", - "docs": [ - "Token b vault for the pool" - ], + "docs": ["Token b vault for the pool"], "writable": true, "pda": { "seeds": [ { "kind": "const", - "value": [ - 116, - 111, - 107, - 101, - 110, - 95, - 118, - 97, - 117, - 108, - 116 - ] + "value": [116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116] }, { "kind": "account", @@ -2478,29 +1580,21 @@ }, { "name": "payer_token_a", - "docs": [ - "payer token a account" - ], + "docs": ["payer token a account"], "writable": true }, { "name": "payer_token_b", - "docs": [ - "creator token b account" - ], + "docs": ["creator token b account"], "writable": true }, { "name": "token_a_program", - "docs": [ - "Program to create mint account and mint tokens" - ] + "docs": ["Program to create mint account and mint tokens"] }, { "name": "token_b_program", - "docs": [ - "Program to create mint account and mint tokens" - ] + "docs": ["Program to create mint account and mint tokens"] }, { "name": "token_2022_program", @@ -2520,23 +1614,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -2559,16 +1638,7 @@ }, { "name": "initialize_reward", - "discriminator": [ - 95, - 135, - 192, - 196, - 242, - 129, - 230, - 68 - ], + "discriminator": [95, 135, 192, 196, 242, 129, 230, 68], "accounts": [ { "name": "pool_authority", @@ -2586,18 +1656,7 @@ { "kind": "const", "value": [ - 114, - 101, - 119, - 97, - 114, - 100, - 95, - 118, - 97, - 117, - 108, - 116 + 114, 101, 119, 97, 114, 100, 95, 118, 97, 117, 108, 116 ] }, { @@ -2637,23 +1696,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -2680,22 +1724,11 @@ }, { "name": "lock_position", - "discriminator": [ - 227, - 62, - 2, - 252, - 247, - 10, - 171, - 185 - ], + "discriminator": [227, 62, 2, 252, 247, 10, 171, 185], "accounts": [ { "name": "pool", - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -2708,15 +1741,11 @@ }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner", - "docs": [ - "owner of position" - ], + "docs": ["owner of position"], "signer": true }, { @@ -2735,23 +1764,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -2774,23 +1788,12 @@ }, { "name": "permanent_lock_position", - "discriminator": [ - 165, - 176, - 125, - 6, - 231, - 171, - 186, - 213 - ], + "discriminator": [165, 176, 125, 6, 231, 171, 186, 213], "accounts": [ { "name": "pool", "writable": true, - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -2798,15 +1801,11 @@ }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner", - "docs": [ - "owner of position" - ], + "docs": ["owner of position"], "signer": true }, { @@ -2816,23 +1815,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -2851,22 +1835,11 @@ }, { "name": "refresh_vesting", - "discriminator": [ - 9, - 94, - 216, - 14, - 116, - 204, - 247, - 0 - ], + "discriminator": [9, 94, 216, 14, 116, 204, 247, 0], "accounts": [ { "name": "pool", - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -2874,9 +1847,7 @@ }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner" @@ -2886,16 +1857,7 @@ }, { "name": "remove_all_liquidity", - "discriminator": [ - 10, - 51, - 61, - 35, - 112, - 105, - 24, - 85 - ], + "discriminator": [10, 51, 61, 35, 112, 105, 24, 85], "accounts": [ { "name": "pool_authority", @@ -2904,9 +1866,7 @@ { "name": "pool", "writable": true, - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -2914,80 +1874,52 @@ }, { "name": "token_a_account", - "docs": [ - "The user token a account" - ], + "docs": ["The user token a account"], "writable": true }, { "name": "token_b_account", - "docs": [ - "The user token b account" - ], + "docs": ["The user token b account"], "writable": true }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token a"], + "relations": ["pool"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token b"], + "relations": ["pool"] }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner", - "docs": [ - "owner of position" - ], + "docs": ["owner of position"], "signer": true }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "event_authority", @@ -2996,23 +1928,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3035,16 +1952,7 @@ }, { "name": "remove_liquidity", - "discriminator": [ - 80, - 85, - 209, - 72, - 24, - 206, - 177, - 108 - ], + "discriminator": [80, 85, 209, 72, 24, 206, 177, 108], "accounts": [ { "name": "pool_authority", @@ -3053,9 +1961,7 @@ { "name": "pool", "writable": true, - "relations": [ - "position" - ] + "relations": ["position"] }, { "name": "position", @@ -3063,80 +1969,52 @@ }, { "name": "token_a_account", - "docs": [ - "The user token a account" - ], + "docs": ["The user token a account"], "writable": true }, { "name": "token_b_account", - "docs": [ - "The user token b account" - ], + "docs": ["The user token b account"], "writable": true }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token a"], + "relations": ["pool"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ], - "relations": [ - "pool" - ] + "docs": ["The mint of token b"], + "relations": ["pool"] }, { "name": "position_nft_account", - "docs": [ - "The token account for nft" - ] + "docs": ["The token account for nft"] }, { "name": "owner", - "docs": [ - "owner of position" - ], + "docs": ["owner of position"], "signer": true }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "event_authority", @@ -3145,23 +2023,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3184,24 +2047,19 @@ }, { "name": "set_pool_status", - "discriminator": [ - 112, - 87, - 135, - 223, - 83, - 204, - 132, - 53 - ], + "discriminator": [112, 87, 135, 223, 83, 204, 132, 53], "accounts": [ { "name": "pool", "writable": true }, { - "name": "admin", - "signer": true + "name": "operator" + }, + { + "name": "whitelisted_address", + "signer": true, + "relations": ["operator"] }, { "name": "event_authority", @@ -3210,23 +2068,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3245,63 +2088,39 @@ }, { "name": "split_position", - "discriminator": [ - 172, - 241, - 221, - 138, - 161, - 29, - 253, - 42 - ], + "discriminator": [172, 241, 221, 138, 161, 29, 253, 42], "accounts": [ { "name": "pool", "writable": true, - "relations": [ - "first_position", - "second_position" - ] + "relations": ["first_position", "second_position"] }, { "name": "first_position", - "docs": [ - "The first position" - ], + "docs": ["The first position"], "writable": true }, { "name": "first_position_nft_account", - "docs": [ - "The token account for position nft" - ] + "docs": ["The token account for position nft"] }, { "name": "second_position", - "docs": [ - "The second position" - ], + "docs": ["The second position"], "writable": true }, { "name": "second_position_nft_account", - "docs": [ - "The token account for position nft" - ] + "docs": ["The token account for position nft"] }, { "name": "first_owner", - "docs": [ - "Owner of first position" - ], + "docs": ["Owner of first position"], "signer": true }, { "name": "second_owner", - "docs": [ - "Owner of second position" - ], + "docs": ["Owner of second position"], "signer": true }, { @@ -3311,23 +2130,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3350,63 +2154,39 @@ }, { "name": "split_position2", - "discriminator": [ - 221, - 147, - 228, - 207, - 140, - 212, - 17, - 119 - ], + "discriminator": [221, 147, 228, 207, 140, 212, 17, 119], "accounts": [ { "name": "pool", "writable": true, - "relations": [ - "first_position", - "second_position" - ] + "relations": ["first_position", "second_position"] }, { "name": "first_position", - "docs": [ - "The first position" - ], + "docs": ["The first position"], "writable": true }, { "name": "first_position_nft_account", - "docs": [ - "The token account for position nft" - ] + "docs": ["The token account for position nft"] }, { "name": "second_position", - "docs": [ - "The second position" - ], + "docs": ["The second position"], "writable": true }, { "name": "second_position_nft_account", - "docs": [ - "The token account for position nft" - ] + "docs": ["The token account for position nft"] }, { "name": "first_owner", - "docs": [ - "Owner of first position" - ], + "docs": ["Owner of first position"], "signer": true }, { "name": "second_owner", - "docs": [ - "Owner of second position" - ], + "docs": ["Owner of second position"], "signer": true }, { @@ -3416,23 +2196,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3451,16 +2216,7 @@ }, { "name": "swap", - "discriminator": [ - 248, - 198, - 158, - 145, - 225, - 117, - 135, - 200 - ], + "discriminator": [248, 198, 158, 145, 225, 117, 135, 200], "accounts": [ { "name": "pool_authority", @@ -3468,81 +2224,55 @@ }, { "name": "pool", - "docs": [ - "Pool account" - ], + "docs": ["Pool account"], "writable": true }, { "name": "input_token_account", - "docs": [ - "The user token account for input token" - ], + "docs": ["The user token account for input token"], "writable": true }, { "name": "output_token_account", - "docs": [ - "The user token account for output token" - ], + "docs": ["The user token account for output token"], "writable": true }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ] + "docs": ["The mint of token a"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ] + "docs": ["The mint of token b"] }, { "name": "payer", - "docs": [ - "The user performing the swap" - ], + "docs": ["The user performing the swap"], "signer": true }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "referral_token_account", - "docs": [ - "referral token account" - ], + "docs": ["referral token account"], "writable": true, "optional": true }, @@ -3553,23 +2283,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3581,7 +2296,7 @@ ], "args": [ { - "name": "params", + "name": "_params", "type": { "defined": { "name": "SwapParameters" @@ -3592,16 +2307,7 @@ }, { "name": "swap2", - "discriminator": [ - 65, - 75, - 63, - 76, - 235, - 91, - 91, - 136 - ], + "discriminator": [65, 75, 63, 76, 235, 91, 91, 136], "accounts": [ { "name": "pool_authority", @@ -3609,81 +2315,55 @@ }, { "name": "pool", - "docs": [ - "Pool account" - ], + "docs": ["Pool account"], "writable": true }, { "name": "input_token_account", - "docs": [ - "The user token account for input token" - ], + "docs": ["The user token account for input token"], "writable": true }, { "name": "output_token_account", - "docs": [ - "The user token account for output token" - ], + "docs": ["The user token account for output token"], "writable": true }, { "name": "token_a_vault", - "docs": [ - "The vault token account for input token" - ], + "docs": ["The vault token account for input token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_b_vault", - "docs": [ - "The vault token account for output token" - ], + "docs": ["The vault token account for output token"], "writable": true, - "relations": [ - "pool" - ] + "relations": ["pool"] }, { "name": "token_a_mint", - "docs": [ - "The mint of token a" - ] + "docs": ["The mint of token a"] }, { "name": "token_b_mint", - "docs": [ - "The mint of token b" - ] + "docs": ["The mint of token b"] }, { "name": "payer", - "docs": [ - "The user performing the swap" - ], + "docs": ["The user performing the swap"], "signer": true }, { "name": "token_a_program", - "docs": [ - "Token a program" - ] + "docs": ["Token a program"] }, { "name": "token_b_program", - "docs": [ - "Token b program" - ] + "docs": ["Token b program"] }, { "name": "referral_token_account", - "docs": [ - "referral token account" - ], + "docs": ["referral token account"], "writable": true, "optional": true }, @@ -3694,23 +2374,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3722,7 +2387,7 @@ ], "args": [ { - "name": "params", + "name": "_params", "type": { "defined": { "name": "SwapParameters2" @@ -3732,17 +2397,53 @@ ] }, { - "name": "update_reward_duration", - "discriminator": [ - 138, - 174, - 196, - 169, - 213, - 235, - 254, - 107 + "name": "update_pool_fees", + "discriminator": [118, 217, 203, 179, 60, 8, 70, 89], + "accounts": [ + { + "name": "pool", + "writable": true + }, + { + "name": "operator" + }, + { + "name": "whitelisted_address", + "signer": true, + "relations": ["operator"] + }, + { + "name": "event_authority", + "pda": { + "seeds": [ + { + "kind": "const", + "value": [ + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 + ] + } + ] + } + }, + { + "name": "program" + } ], + "args": [ + { + "name": "params", + "type": { + "defined": { + "name": "UpdatePoolFeesParameters" + } + } + } + ] + }, + { + "name": "update_reward_duration", + "discriminator": [138, 174, 196, 169, 213, 235, 254, 107], "accounts": [ { "name": "pool", @@ -3759,23 +2460,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3798,16 +2484,7 @@ }, { "name": "update_reward_funder", - "discriminator": [ - 211, - 28, - 48, - 32, - 215, - 160, - 35, - 23 - ], + "discriminator": [211, 28, 48, 32, 215, 160, 35, 23], "accounts": [ { "name": "pool", @@ -3824,23 +2501,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3863,16 +2525,7 @@ }, { "name": "withdraw_ineligible_reward", - "discriminator": [ - 148, - 206, - 42, - 195, - 247, - 49, - 103, - 8 - ], + "discriminator": [148, 206, 42, 195, 247, 49, 103, 8], "accounts": [ { "name": "pool_authority", @@ -3907,23 +2560,8 @@ { "kind": "const", "value": [ - 95, - 95, - 101, - 118, - 101, - 110, - 116, - 95, - 97, - 117, - 116, - 104, - 111, - 114, - 105, - 116, - 121 + 95, 95, 101, 118, 101, 110, 116, 95, 97, 117, 116, 104, 111, + 114, 105, 116, 121 ] } ] @@ -3943,435 +2581,134 @@ ], "accounts": [ { - "name": "ClaimFeeOperator", - "discriminator": [ - 166, - 48, - 134, - 86, - 34, - 200, - 188, - 150 - ] + "name": "Config", + "discriminator": [155, 12, 170, 224, 30, 250, 204, 130] }, { - "name": "Config", - "discriminator": [ - 155, - 12, - 170, - 224, - 30, - 250, - 204, - 130 - ] + "name": "Operator", + "discriminator": [219, 31, 188, 145, 69, 139, 204, 117] + }, + { + "name": "PodAlignedFeeMarketCapScheduler", + "discriminator": [251, 130, 208, 253, 245, 27, 145, 203] + }, + { + "name": "PodAlignedFeeRateLimiter", + "discriminator": [160, 219, 8, 251, 179, 7, 16, 117] + }, + { + "name": "PodAlignedFeeTimeScheduler", + "discriminator": [239, 132, 138, 213, 67, 154, 130, 70] }, { "name": "Pool", - "discriminator": [ - 241, - 154, - 109, - 4, - 17, - 177, - 109, - 188 - ] + "discriminator": [241, 154, 109, 4, 17, 177, 109, 188] }, { "name": "Position", - "discriminator": [ - 170, - 188, - 143, - 228, - 122, - 64, - 247, - 208 - ] + "discriminator": [170, 188, 143, 228, 122, 64, 247, 208] }, { "name": "TokenBadge", - "discriminator": [ - 116, - 219, - 204, - 229, - 249, - 116, - 255, - 150 - ] + "discriminator": [116, 219, 204, 229, 249, 116, 255, 150] }, { "name": "Vesting", - "discriminator": [ - 100, - 149, - 66, - 138, - 95, - 200, - 128, - 241 - ] + "discriminator": [100, 149, 66, 138, 95, 200, 128, 241] } ], "events": [ - { - "name": "EvtAddLiquidity", - "discriminator": [ - 175, - 242, - 8, - 157, - 30, - 247, - 185, - 169 - ] - }, { "name": "EvtClaimPartnerFee", - "discriminator": [ - 118, - 99, - 77, - 10, - 226, - 1, - 1, - 87 - ] + "discriminator": [118, 99, 77, 10, 226, 1, 1, 87] }, { "name": "EvtClaimPositionFee", - "discriminator": [ - 198, - 182, - 183, - 52, - 97, - 12, - 49, - 56 - ] + "discriminator": [198, 182, 183, 52, 97, 12, 49, 56] }, { "name": "EvtClaimProtocolFee", - "discriminator": [ - 186, - 244, - 75, - 251, - 188, - 13, - 25, - 33 - ] + "discriminator": [186, 244, 75, 251, 188, 13, 25, 33] }, { "name": "EvtClaimReward", - "discriminator": [ - 218, - 86, - 147, - 200, - 235, - 188, - 215, - 231 - ] - }, - { - "name": "EvtCloseClaimFeeOperator", - "discriminator": [ - 111, - 39, - 37, - 55, - 110, - 216, - 194, - 23 - ] + "discriminator": [218, 86, 147, 200, 235, 188, 215, 231] }, { "name": "EvtCloseConfig", - "discriminator": [ - 36, - 30, - 239, - 45, - 58, - 132, - 14, - 5 - ] + "discriminator": [36, 30, 239, 45, 58, 132, 14, 5] }, { "name": "EvtClosePosition", - "discriminator": [ - 20, - 145, - 144, - 68, - 143, - 142, - 214, - 178 - ] - }, - { - "name": "EvtCreateClaimFeeOperator", - "discriminator": [ - 21, - 6, - 153, - 120, - 68, - 116, - 28, - 177 - ] + "discriminator": [20, 145, 144, 68, 143, 142, 214, 178] }, { "name": "EvtCreateConfig", - "discriminator": [ - 131, - 207, - 180, - 174, - 180, - 73, - 165, - 54 - ] + "discriminator": [131, 207, 180, 174, 180, 73, 165, 54] }, { "name": "EvtCreateDynamicConfig", - "discriminator": [ - 231, - 197, - 13, - 164, - 248, - 213, - 133, - 152 - ] + "discriminator": [231, 197, 13, 164, 248, 213, 133, 152] }, { "name": "EvtCreatePosition", - "discriminator": [ - 156, - 15, - 119, - 198, - 29, - 181, - 221, - 55 - ] + "discriminator": [156, 15, 119, 198, 29, 181, 221, 55] }, { "name": "EvtCreateTokenBadge", - "discriminator": [ - 141, - 120, - 134, - 116, - 34, - 28, - 114, - 160 - ] + "discriminator": [141, 120, 134, 116, 34, 28, 114, 160] }, { "name": "EvtFundReward", - "discriminator": [ - 104, - 233, - 237, - 122, - 199, - 191, - 121, - 85 - ] + "discriminator": [104, 233, 237, 122, 199, 191, 121, 85] }, { "name": "EvtInitializePool", - "discriminator": [ - 228, - 50, - 246, - 85, - 203, - 66, - 134, - 37 - ] + "discriminator": [228, 50, 246, 85, 203, 66, 134, 37] }, { "name": "EvtInitializeReward", - "discriminator": [ - 129, - 91, - 188, - 3, - 246, - 52, - 185, - 249 - ] + "discriminator": [129, 91, 188, 3, 246, 52, 185, 249] }, { "name": "EvtLiquidityChange", - "discriminator": [ - 197, - 171, - 78, - 127, - 224, - 211, - 87, - 13 - ] + "discriminator": [197, 171, 78, 127, 224, 211, 87, 13] }, { "name": "EvtLockPosition", - "discriminator": [ - 168, - 63, - 108, - 83, - 219, - 82, - 2, - 200 - ] + "discriminator": [168, 63, 108, 83, 219, 82, 2, 200] }, { "name": "EvtPermanentLockPosition", - "discriminator": [ - 145, - 143, - 162, - 218, - 218, - 80, - 67, - 11 - ] - }, - { - "name": "EvtRemoveLiquidity", - "discriminator": [ - 87, - 46, - 88, - 98, - 175, - 96, - 34, - 91 - ] + "discriminator": [145, 143, 162, 218, 218, 80, 67, 11] }, { "name": "EvtSetPoolStatus", - "discriminator": [ - 100, - 213, - 74, - 3, - 95, - 91, - 228, - 146 - ] + "discriminator": [100, 213, 74, 3, 95, 91, 228, 146] }, { "name": "EvtSplitPosition2", - "discriminator": [ - 165, - 32, - 203, - 174, - 72, - 100, - 233, - 103 - ] + "discriminator": [165, 32, 203, 174, 72, 100, 233, 103] }, { - "name": "EvtSwap", - "discriminator": [ - 27, - 60, - 21, - 213, - 138, - 170, - 187, - 147 - ] + "name": "EvtSwap2", + "discriminator": [189, 66, 51, 168, 38, 80, 117, 153] }, { - "name": "EvtSwap2", - "discriminator": [ - 189, - 66, - 51, - 168, - 38, - 80, - 117, - 153 - ] + "name": "EvtUpdatePoolFees", + "discriminator": [76, 165, 246, 102, 102, 217, 156, 44] }, { "name": "EvtUpdateRewardDuration", - "discriminator": [ - 149, - 135, - 65, - 231, - 129, - 153, - 65, - 57 - ] + "discriminator": [149, 135, 65, 231, 129, 153, 65, 57] }, { "name": "EvtUpdateRewardFunder", - "discriminator": [ - 76, - 154, - 208, - 13, - 40, - 115, - 246, - 146 - ] + "discriminator": [76, 154, 208, 13, 40, 115, 246, 146] }, { "name": "EvtWithdrawIneligibleReward", - "discriminator": [ - 248, - 215, - 184, - 78, - 31, - 180, - 179, - 168 - ] + "discriminator": [248, 215, 184, 78, 31, 180, 179, 168] } ], "errors": [ @@ -4627,7 +2964,7 @@ }, { "code": 6050, - "name": "InvalidFeeScheduler", + "name": "InvalidFeeTimeScheduler", "msg": "Invalid fee scheduler" }, { @@ -4639,6 +2976,41 @@ "code": 6052, "name": "InvalidPoolVersion", "msg": "Invalid pool version" + }, + { + "code": 6053, + "name": "InvalidAuthority", + "msg": "Invalid authority to do that action" + }, + { + "code": 6054, + "name": "InvalidPermission", + "msg": "Invalid permission" + }, + { + "code": 6055, + "name": "InvalidFeeMarketCapScheduler", + "msg": "Invalid fee market cap scheduler" + }, + { + "code": 6056, + "name": "CannotUpdateBaseFee", + "msg": "Cannot update base fee" + }, + { + "code": 6057, + "name": "InvalidDynamicFeeParameters", + "msg": "Invalid dynamic fee parameters" + }, + { + "code": 6058, + "name": "InvalidUpdatePoolFeesParameters", + "msg": "Invalid update pool fees parameters" + }, + { + "code": 6059, + "name": "MissingOperatorAccount", + "msg": "Missing operator account" } ], "types": [ @@ -4649,30 +3021,24 @@ "fields": [ { "name": "liquidity_delta", - "docs": [ - "delta liquidity" - ], + "docs": ["delta liquidity"], "type": "u128" }, { "name": "token_a_amount_threshold", - "docs": [ - "maximum token a amount" - ], + "docs": ["maximum token a amount"], "type": "u64" }, { "name": "token_b_amount_threshold", - "docs": [ - "maximum token b amount" - ], + "docs": ["maximum token b amount"], "type": "u64" } ] } }, { - "name": "BaseFeeConfig", + "name": "BaseFeeInfo", "serialization": "bytemuck", "repr": { "kind": "c" @@ -4681,44 +3047,54 @@ "kind": "struct", "fields": [ { - "name": "cliff_fee_numerator", - "type": "u64" - }, - { - "name": "base_fee_mode", - "type": "u8" - }, - { - "name": "padding", + "name": "data", "type": { - "array": [ - "u8", - 5 - ] + "array": ["u8", 32] } - }, + } + ] + } + }, + { + "name": "BaseFeeParameters", + "type": { + "kind": "struct", + "fields": [ { - "name": "first_factor", - "type": "u16" - }, + "name": "data", + "type": { + "array": ["u8", 30] + } + } + ] + } + }, + { + "name": "BaseFeeStruct", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ { - "name": "second_factor", + "name": "base_fee_info", "type": { - "array": [ - "u8", - 8 - ] + "defined": { + "name": "BaseFeeInfo" + } } }, { - "name": "third_factor", + "name": "padding_1", "type": "u64" } ] } }, { - "name": "BaseFeeParameters", + "name": "BorshFeeMarketCapScheduler", "type": { "kind": "struct", "fields": [ @@ -4727,35 +3103,49 @@ "type": "u64" }, { - "name": "first_factor", + "name": "number_of_period", "type": "u16" }, { - "name": "second_factor", - "type": { - "array": [ - "u8", - 8 - ] - } + "name": "sqrt_price_step_bps", + "type": "u32" + }, + { + "name": "scheduler_expiration_duration", + "type": "u32" }, { - "name": "third_factor", + "name": "reduction_factor", "type": "u64" }, { "name": "base_fee_mode", "type": "u8" + }, + { + "name": "padding", + "type": { + "array": ["u8", 3] + } } ] } }, { - "name": "BaseFeeStruct", - "serialization": "bytemuck", - "repr": { - "kind": "c" - }, + "name": "BorshFeeRateLimiter", + "docs": [ + "we denote reference_amount = x0, cliff_fee_numerator = c, fee_increment = i", + "if input_amount <= x0, then fee = input_amount * c", + "", + "if input_amount > x0, then input_amount = x0 + (a * x0 + b)", + "if a < max_index", + "then fee = x0 * c + x0 * (c + i) + .... + x0 * (c + i*a) + b * (c + i * (a+1))", + "then fee = x0 * (c + c*a + i*a*(a+1)/2) + b * (c + i * (a+1))", + "", + "if a >= max_index", + "if a = max_index + d, input_amount = x0 + max_index * x0 + (d * x0 + b)", + "then fee = x0 * (c + c*max_index + i*max_index*(max_index+1)/2) + (d * x0 + b) * MAX_FEE" + ], "type": { "kind": "struct", "fields": [ @@ -4764,71 +3154,63 @@ "type": "u64" }, { - "name": "base_fee_mode", - "type": "u8" + "name": "fee_increment_bps", + "type": "u16" }, { - "name": "padding_0", - "type": { - "array": [ - "u8", - 5 - ] - } + "name": "max_limiter_duration", + "type": "u32" }, { - "name": "first_factor", - "type": "u16" + "name": "max_fee_bps", + "type": "u32" }, { - "name": "second_factor", - "type": { - "array": [ - "u8", - 8 - ] - } + "name": "reference_amount", + "type": "u64" }, { - "name": "third_factor", - "type": "u64" + "name": "base_fee_mode", + "type": "u8" }, { - "name": "padding_1", - "type": "u64" + "name": "padding", + "type": { + "array": ["u8", 3] + } } ] } }, { - "name": "ClaimFeeOperator", - "docs": [ - "Parameter that set by the protocol" - ], - "serialization": "bytemuck", - "repr": { - "kind": "c" - }, + "name": "BorshFeeTimeScheduler", "type": { "kind": "struct", "fields": [ { - "name": "operator", - "docs": [ - "operator" - ], - "type": "pubkey" + "name": "cliff_fee_numerator", + "type": "u64" }, { - "name": "_padding", - "docs": [ - "Reserve" - ], + "name": "number_of_period", + "type": "u16" + }, + { + "name": "period_frequency", + "type": "u64" + }, + { + "name": "reduction_factor", + "type": "u64" + }, + { + "name": "base_fee_mode", + "type": "u8" + }, + { + "name": "padding", "type": { - "array": [ - "u8", - 128 - ] + "array": ["u8", 3] } } ] @@ -4845,9 +3227,7 @@ "fields": [ { "name": "vault_config_key", - "docs": [ - "Vault config key" - ], + "docs": ["Vault config key"], "type": "pubkey" }, { @@ -4859,9 +3239,7 @@ }, { "name": "pool_fees", - "docs": [ - "Pool fee" - ], + "docs": ["Pool fee"], "type": { "defined": { "name": "PoolFeesConfig" @@ -4870,69 +3248,78 @@ }, { "name": "activation_type", - "docs": [ - "Activation type" - ], + "docs": ["Activation type"], "type": "u8" }, { "name": "collect_fee_mode", - "docs": [ - "Collect fee mode" - ], + "docs": ["Collect fee mode"], "type": "u8" }, { "name": "config_type", - "docs": [ - "Config type mode, 0 for static, 1 for dynamic" - ], + "docs": ["Config type mode, 0 for static, 1 for dynamic"], "type": "u8" }, { "name": "_padding_0", - "docs": [ - "padding 0" - ], + "docs": ["padding 0"], "type": { - "array": [ - "u8", - 5 - ] + "array": ["u8", 5] } }, { "name": "index", - "docs": [ - "config index" - ], + "docs": ["config index"], "type": "u64" }, { "name": "sqrt_min_price", - "docs": [ - "sqrt min price" - ], + "docs": ["sqrt min price"], "type": "u128" }, { "name": "sqrt_max_price", - "docs": [ - "sqrt max price" - ], + "docs": ["sqrt max price"], "type": "u128" }, { "name": "_padding_1", - "docs": [ - "Fee curve point", - "Padding for further use" - ], + "docs": ["Fee curve point", "Padding for further use"], "type": { - "array": [ - "u64", - 10 - ] + "array": ["u64", 10] + } + } + ] + } + }, + { + "name": "DummyParams", + "type": { + "kind": "struct", + "fields": [ + { + "name": "borsh_fee_time_scheduler_params", + "type": { + "defined": { + "name": "BorshFeeTimeScheduler" + } + } + }, + { + "name": "borsh_fee_rate_limiter_params", + "type": { + "defined": { + "name": "BorshFeeRateLimiter" + } + } + }, + { + "name": "borsh_fee_market_cap_scheduler_params", + "type": { + "defined": { + "name": "BorshFeeMarketCapScheduler" + } } } ] @@ -4966,10 +3353,7 @@ { "name": "padding", "type": { - "array": [ - "u8", - 7 - ] + "array": ["u8", 7] } }, { @@ -4999,10 +3383,7 @@ { "name": "padding_1", "type": { - "array": [ - "u8", - 8 - ] + "array": ["u8", 8] } }, { @@ -5064,10 +3445,7 @@ { "name": "padding", "type": { - "array": [ - "u8", - 7 - ] + "array": ["u8", 7] } }, { @@ -5117,50 +3495,6 @@ ] } }, - { - "name": "EvtAddLiquidity", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pool", - "type": "pubkey" - }, - { - "name": "position", - "type": "pubkey" - }, - { - "name": "owner", - "type": "pubkey" - }, - { - "name": "params", - "type": { - "defined": { - "name": "AddLiquidityParameters" - } - } - }, - { - "name": "token_a_amount", - "type": "u64" - }, - { - "name": "token_b_amount", - "type": "u64" - }, - { - "name": "total_amount_a", - "type": "u64" - }, - { - "name": "total_amount_b", - "type": "u64" - } - ] - } - }, { "name": "EvtClaimPartnerFee", "type": { @@ -5262,56 +3596,31 @@ } }, { - "name": "EvtCloseClaimFeeOperator", - "docs": [ - "Close claim fee operator" - ], + "name": "EvtCloseConfig", + "docs": ["Close config"], "type": { "kind": "struct", "fields": [ { - "name": "claim_fee_operator", + "name": "config", + "docs": ["Config pubkey"], "type": "pubkey" }, { - "name": "operator", + "name": "admin", + "docs": ["admin pk"], "type": "pubkey" } ] } }, { - "name": "EvtCloseConfig", - "docs": [ - "Close config" - ], + "name": "EvtClosePosition", "type": { "kind": "struct", "fields": [ { - "name": "config", - "docs": [ - "Config pubkey" - ], - "type": "pubkey" - }, - { - "name": "admin", - "docs": [ - "admin pk" - ], - "type": "pubkey" - } - ] - } - }, - { - "name": "EvtClosePosition", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pool", + "name": "pool", "type": "pubkey" }, { @@ -5329,26 +3638,9 @@ ] } }, - { - "name": "EvtCreateClaimFeeOperator", - "docs": [ - "Create claim fee operator" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "operator", - "type": "pubkey" - } - ] - } - }, { "name": "EvtCreateConfig", - "docs": [ - "Create static config" - ], + "docs": ["Create static config"], "type": { "kind": "struct", "fields": [ @@ -5397,9 +3689,7 @@ }, { "name": "EvtCreateDynamicConfig", - "docs": [ - "Create dynamic config" - ], + "docs": ["Create dynamic config"], "type": { "kind": "struct", "fields": [ @@ -5444,9 +3734,7 @@ }, { "name": "EvtCreateTokenBadge", - "docs": [ - "Create token badge" - ], + "docs": ["Create token badge"], "type": { "kind": "struct", "fields": [ @@ -5757,42 +4045,6 @@ ] } }, - { - "name": "EvtRemoveLiquidity", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pool", - "type": "pubkey" - }, - { - "name": "position", - "type": "pubkey" - }, - { - "name": "owner", - "type": "pubkey" - }, - { - "name": "params", - "type": { - "defined": { - "name": "RemoveLiquidityParameters" - } - } - }, - { - "name": "token_a_amount", - "type": "u64" - }, - { - "name": "token_b_amount", - "type": "u64" - } - ] - } - }, { "name": "EvtSetPoolStatus", "type": { @@ -5873,50 +4125,6 @@ ] } }, - { - "name": "EvtSwap", - "type": { - "kind": "struct", - "fields": [ - { - "name": "pool", - "type": "pubkey" - }, - { - "name": "trade_direction", - "type": "u8" - }, - { - "name": "has_referral", - "type": "bool" - }, - { - "name": "params", - "type": { - "defined": { - "name": "SwapParameters" - } - } - }, - { - "name": "swap_result", - "type": { - "defined": { - "name": "SwapResult" - } - } - }, - { - "name": "actual_amount_in", - "type": "u64" - }, - { - "name": "current_timestamp", - "type": "u64" - } - ] - } - }, { "name": "EvtSwap2", "type": { @@ -5981,6 +4189,30 @@ ] } }, + { + "name": "EvtUpdatePoolFees", + "type": { + "kind": "struct", + "fields": [ + { + "name": "pool", + "type": "pubkey" + }, + { + "name": "operator", + "type": "pubkey" + }, + { + "name": "params", + "type": { + "defined": { + "name": "UpdatePoolFeesParameters" + } + } + } + ] + } + }, { "name": "EvtUpdateRewardDuration", "type": { @@ -6056,9 +4288,7 @@ "fields": [ { "name": "pool_fees", - "docs": [ - "pool fees" - ], + "docs": ["pool fees"], "type": { "defined": { "name": "PoolFeeParameters" @@ -6067,58 +4297,44 @@ }, { "name": "sqrt_min_price", - "docs": [ - "sqrt min price" - ], + "docs": ["sqrt min price"], "type": "u128" }, { "name": "sqrt_max_price", - "docs": [ - "sqrt max price" - ], + "docs": ["sqrt max price"], "type": "u128" }, { "name": "has_alpha_vault", - "docs": [ - "has alpha vault" - ], + "docs": ["has alpha vault"], "type": "bool" }, { "name": "liquidity", - "docs": [ - "initialize liquidity" - ], + "docs": ["initialize liquidity"], "type": "u128" }, { "name": "sqrt_price", "docs": [ - "The init price of the pool as a sqrt(token_b/token_a) Q64.64 value" + "The init price of the pool as a sqrt(token_b/token_a) Q64.64 value. Market cap fee scheduler minimum price will be derived from this value" ], "type": "u128" }, { "name": "activation_type", - "docs": [ - "activation type" - ], + "docs": ["activation type"], "type": "u8" }, { "name": "collect_fee_mode", - "docs": [ - "collect fee mode" - ], + "docs": ["collect fee mode"], "type": "u8" }, { "name": "activation_point", - "docs": [ - "activation point" - ], + "docs": ["activation point"], "type": { "option": "u64" } @@ -6133,9 +4349,7 @@ "fields": [ { "name": "liquidity", - "docs": [ - "initialize liquidity" - ], + "docs": ["initialize liquidity"], "type": "u128" }, { @@ -6147,9 +4361,7 @@ }, { "name": "activation_point", - "docs": [ - "activation point" - ], + "docs": ["activation point"], "type": { "option": "u64" } @@ -6157,6 +4369,154 @@ ] } }, + { + "name": "Operator", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "whitelisted_address", + "type": "pubkey" + }, + { + "name": "permission", + "type": "u128" + }, + { + "name": "padding", + "type": { + "array": ["u64", 2] + } + } + ] + } + }, + { + "name": "PodAlignedFeeMarketCapScheduler", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "cliff_fee_numerator", + "type": "u64" + }, + { + "name": "base_fee_mode", + "type": "u8" + }, + { + "name": "padding", + "type": { + "array": ["u8", 5] + } + }, + { + "name": "number_of_period", + "type": "u16" + }, + { + "name": "sqrt_price_step_bps", + "type": "u32" + }, + { + "name": "scheduler_expiration_duration", + "type": "u32" + }, + { + "name": "reduction_factor", + "type": "u64" + } + ] + } + }, + { + "name": "PodAlignedFeeRateLimiter", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "cliff_fee_numerator", + "type": "u64" + }, + { + "name": "base_fee_mode", + "type": "u8" + }, + { + "name": "padding", + "type": { + "array": ["u8", 5] + } + }, + { + "name": "fee_increment_bps", + "type": "u16" + }, + { + "name": "max_limiter_duration", + "type": "u32" + }, + { + "name": "max_fee_bps", + "type": "u32" + }, + { + "name": "reference_amount", + "type": "u64" + } + ] + } + }, + { + "name": "PodAlignedFeeTimeScheduler", + "serialization": "bytemuck", + "repr": { + "kind": "c" + }, + "type": { + "kind": "struct", + "fields": [ + { + "name": "cliff_fee_numerator", + "type": "u64" + }, + { + "name": "base_fee_mode", + "type": "u8" + }, + { + "name": "padding", + "type": { + "array": ["u8", 5] + } + }, + { + "name": "number_of_period", + "type": "u16" + }, + { + "name": "period_frequency", + "type": "u64" + }, + { + "name": "reduction_factor", + "type": "u64" + } + ] + } + }, { "name": "Pool", "serialization": "bytemuck", @@ -6168,9 +4528,7 @@ "fields": [ { "name": "pool_fees", - "docs": [ - "Pool fee" - ], + "docs": ["Pool fee"], "type": { "defined": { "name": "PoolFeesStruct" @@ -6179,30 +4537,22 @@ }, { "name": "token_a_mint", - "docs": [ - "token a mint" - ], + "docs": ["token a mint"], "type": "pubkey" }, { "name": "token_b_mint", - "docs": [ - "token b mint" - ], + "docs": ["token b mint"], "type": "pubkey" }, { "name": "token_a_vault", - "docs": [ - "token a vault" - ], + "docs": ["token a vault"], "type": "pubkey" }, { "name": "token_b_vault", - "docs": [ - "token b vault" - ], + "docs": ["token b vault"], "type": "pubkey" }, { @@ -6214,16 +4564,12 @@ }, { "name": "partner", - "docs": [ - "partner" - ], + "docs": ["partner"], "type": "pubkey" }, { "name": "liquidity", - "docs": [ - "liquidity share" - ], + "docs": ["liquidity share"], "type": "u128" }, { @@ -6235,100 +4581,74 @@ }, { "name": "protocol_a_fee", - "docs": [ - "protocol a fee" - ], + "docs": ["protocol a fee"], "type": "u64" }, { "name": "protocol_b_fee", - "docs": [ - "protocol b fee" - ], + "docs": ["protocol b fee"], "type": "u64" }, { "name": "partner_a_fee", - "docs": [ - "partner a fee" - ], + "docs": ["partner a fee"], "type": "u64" }, { "name": "partner_b_fee", - "docs": [ - "partner b fee" - ], + "docs": ["partner b fee"], "type": "u64" }, { "name": "sqrt_min_price", - "docs": [ - "min price" - ], + "docs": ["min price"], "type": "u128" }, { "name": "sqrt_max_price", - "docs": [ - "max price" - ], + "docs": ["max price"], "type": "u128" }, { "name": "sqrt_price", - "docs": [ - "current price" - ], + "docs": ["current price"], "type": "u128" }, { "name": "activation_point", - "docs": [ - "Activation point, can be slot or timestamp" - ], + "docs": ["Activation point, can be slot or timestamp"], "type": "u64" }, { "name": "activation_type", - "docs": [ - "Activation type, 0 means by slot, 1 means by timestamp" - ], + "docs": ["Activation type, 0 means by slot, 1 means by timestamp"], "type": "u8" }, { "name": "pool_status", - "docs": [ - "pool status, 0: enable, 1 disable" - ], + "docs": ["pool status, 0: enable, 1 disable"], "type": "u8" }, { "name": "token_a_flag", - "docs": [ - "token a flag" - ], + "docs": ["token a flag"], "type": "u8" }, { "name": "token_b_flag", - "docs": [ - "token b flag" - ], + "docs": ["token b flag"], "type": "u8" }, { "name": "collect_fee_mode", "docs": [ - "0 is collect fee in both token, 1 only collect fee in token a, 2 only collect fee in token b" + "0 is collect fee in both token, 1 only collect fee only in token b" ], "type": "u8" }, { "name": "pool_type", - "docs": [ - "pool type" - ], + "docs": ["pool type"], "type": "u8" }, { @@ -6340,33 +4660,21 @@ }, { "name": "_padding_0", - "docs": [ - "padding" - ], + "docs": ["padding"], "type": "u8" }, { "name": "fee_a_per_liquidity", - "docs": [ - "cumulative" - ], + "docs": ["cumulative"], "type": { - "array": [ - "u8", - 32 - ] + "array": ["u8", 32] } }, { "name": "fee_b_per_liquidity", - "docs": [ - "cumulative" - ], + "docs": ["cumulative"], "type": { - "array": [ - "u8", - 32 - ] + "array": ["u8", 32] } }, { @@ -6375,9 +4683,7 @@ }, { "name": "metrics", - "docs": [ - "metrics" - ], + "docs": ["metrics"], "type": { "defined": { "name": "PoolMetrics" @@ -6386,28 +4692,19 @@ }, { "name": "creator", - "docs": [ - "pool creator" - ], + "docs": ["pool creator"], "type": "pubkey" }, { "name": "_padding_1", - "docs": [ - "Padding for further use" - ], + "docs": ["Padding for further use"], "type": { - "array": [ - "u64", - 6 - ] + "array": ["u64", 6] } }, { "name": "reward_infos", - "docs": [ - "Farming reward information" - ], + "docs": ["Farming reward information"], "type": { "array": [ { @@ -6424,40 +4721,22 @@ }, { "name": "PoolFeeParameters", - "docs": [ - "Information regarding fee charges" - ], + "docs": ["Information regarding fee charges"], "type": { "kind": "struct", "fields": [ { "name": "base_fee", - "docs": [ - "Base fee" - ], + "docs": ["Base fee"], "type": { "defined": { "name": "BaseFeeParameters" } } }, - { - "name": "padding", - "docs": [ - "padding" - ], - "type": { - "array": [ - "u8", - 3 - ] - } - }, { "name": "dynamic_fee", - "docs": [ - "dynamic fee" - ], + "docs": ["dynamic fee"], "type": { "option": { "defined": { @@ -6482,7 +4761,7 @@ "name": "base_fee", "type": { "defined": { - "name": "BaseFeeConfig" + "name": "BaseFeeInfo" } } }, @@ -6509,19 +4788,13 @@ { "name": "padding_0", "type": { - "array": [ - "u8", - 5 - ] + "array": ["u8", 5] } }, { "name": "padding_1", "type": { - "array": [ - "u64", - 5 - ] + "array": ["u64", 5] } } ] @@ -6568,35 +4841,24 @@ }, { "name": "partner_fee_percent", - "docs": [ - "partner fee" - ], + "docs": ["partner fee"], "type": "u8" }, { "name": "referral_fee_percent", - "docs": [ - "referral fee" - ], + "docs": ["referral fee"], "type": "u8" }, { "name": "padding_0", - "docs": [ - "padding" - ], + "docs": ["padding"], "type": { - "array": [ - "u8", - 5 - ] + "array": ["u8", 5] } }, { "name": "dynamic_fee", - "docs": [ - "dynamic fee" - ], + "docs": ["dynamic fee"], "type": { "defined": { "name": "DynamicFeeStruct" @@ -6604,16 +4866,8 @@ } }, { - "name": "padding_1", - "docs": [ - "padding" - ], - "type": { - "array": [ - "u64", - 2 - ] - } + "name": "init_sqrt_price", + "type": "u128" } ] } @@ -6677,75 +4931,51 @@ }, { "name": "nft_mint", - "docs": [ - "nft mint" - ], + "docs": ["nft mint"], "type": "pubkey" }, { "name": "fee_a_per_token_checkpoint", - "docs": [ - "fee a checkpoint" - ], + "docs": ["fee a checkpoint"], "type": { - "array": [ - "u8", - 32 - ] + "array": ["u8", 32] } }, { "name": "fee_b_per_token_checkpoint", - "docs": [ - "fee b checkpoint" - ], + "docs": ["fee b checkpoint"], "type": { - "array": [ - "u8", - 32 - ] + "array": ["u8", 32] } }, { "name": "fee_a_pending", - "docs": [ - "fee a pending" - ], + "docs": ["fee a pending"], "type": "u64" }, { "name": "fee_b_pending", - "docs": [ - "fee b pending" - ], + "docs": ["fee b pending"], "type": "u64" }, { "name": "unlocked_liquidity", - "docs": [ - "unlock liquidity" - ], + "docs": ["unlock liquidity"], "type": "u128" }, { "name": "vested_liquidity", - "docs": [ - "vesting liquidity" - ], + "docs": ["vesting liquidity"], "type": "u128" }, { "name": "permanent_locked_liquidity", - "docs": [ - "permanent locked liquidity" - ], + "docs": ["permanent locked liquidity"], "type": "u128" }, { "name": "metrics", - "docs": [ - "metrics" - ], + "docs": ["metrics"], "type": { "defined": { "name": "PositionMetrics" @@ -6754,9 +4984,7 @@ }, { "name": "reward_infos", - "docs": [ - "Farming reward information" - ], + "docs": ["Farming reward information"], "type": { "array": [ { @@ -6770,14 +4998,9 @@ }, { "name": "padding", - "docs": [ - "padding for future usage" - ], + "docs": ["padding for future usage"], "type": { - "array": [ - "u128", - 6 - ] + "array": ["u128", 6] } } ] @@ -6810,23 +5033,17 @@ "fields": [ { "name": "liquidity_delta", - "docs": [ - "delta liquidity" - ], + "docs": ["delta liquidity"], "type": "u128" }, { "name": "token_a_amount_threshold", - "docs": [ - "minimum token a amount" - ], + "docs": ["minimum token a amount"], "type": "u64" }, { "name": "token_b_amount_threshold", - "docs": [ - "minimum token b amount" - ], + "docs": ["minimum token b amount"], "type": "u64" } ] @@ -6846,28 +5063,19 @@ "fields": [ { "name": "initialized", - "docs": [ - "Indicates if the reward has been initialized" - ], + "docs": ["Indicates if the reward has been initialized"], "type": "u8" }, { "name": "reward_token_flag", - "docs": [ - "reward token flag" - ], + "docs": ["reward token flag"], "type": "u8" }, { "name": "_padding_0", - "docs": [ - "padding" - ], + "docs": ["padding"], "type": { - "array": [ - "u8", - 6 - ] + "array": ["u8", 6] } }, { @@ -6876,71 +5084,49 @@ "Padding to ensure `reward_rate: u128` is 16-byte aligned" ], "type": { - "array": [ - "u8", - 8 - ] + "array": ["u8", 8] } }, { "name": "mint", - "docs": [ - "Reward token mint." - ], + "docs": ["Reward token mint."], "type": "pubkey" }, { "name": "vault", - "docs": [ - "Reward vault token account." - ], + "docs": ["Reward vault token account."], "type": "pubkey" }, { "name": "funder", - "docs": [ - "Authority account that allows to fund rewards" - ], + "docs": ["Authority account that allows to fund rewards"], "type": "pubkey" }, { "name": "reward_duration", - "docs": [ - "reward duration" - ], + "docs": ["reward duration"], "type": "u64" }, { "name": "reward_duration_end", - "docs": [ - "reward duration end" - ], + "docs": ["reward duration end"], "type": "u64" }, { "name": "reward_rate", - "docs": [ - "reward rate" - ], + "docs": ["reward rate"], "type": "u128" }, { "name": "reward_per_token_stored", - "docs": [ - "Reward per token stored" - ], + "docs": ["Reward per token stored"], "type": { - "array": [ - "u8", - 32 - ] + "array": ["u8", 32] } }, { "name": "last_update_time", - "docs": [ - "The last time reward states were updated." - ], + "docs": ["The last time reward states were updated."], "type": "u64" }, { @@ -7063,14 +5249,9 @@ }, { "name": "padding", - "docs": [ - "padding for future" - ], + "docs": ["padding for future"], "type": { - "array": [ - "u8", - 16 - ] + "array": ["u8", 16] } } ] @@ -7185,49 +5366,12 @@ }, { "name": "swap_mode", - "docs": [ - "Swap mode, refer [SwapMode]" - ], + "docs": ["Swap mode, refer [SwapMode]"], "type": "u8" } ] } }, - { - "name": "SwapResult", - "docs": [ - "Encodes all results of swapping" - ], - "type": { - "kind": "struct", - "fields": [ - { - "name": "output_amount", - "type": "u64" - }, - { - "name": "next_sqrt_price", - "type": "u128" - }, - { - "name": "lp_fee", - "type": "u64" - }, - { - "name": "protocol_fee", - "type": "u64" - }, - { - "name": "partner_fee", - "type": "u64" - }, - { - "name": "referral_fee", - "type": "u64" - } - ] - } - }, { "name": "SwapResult2", "type": { @@ -7274,9 +5418,7 @@ }, { "name": "TokenBadge", - "docs": [ - "Parameter that set by the protocol" - ], + "docs": ["Parameter that set by the protocol"], "serialization": "bytemuck", "repr": { "kind": "c" @@ -7286,21 +5428,49 @@ "fields": [ { "name": "token_mint", - "docs": [ - "token mint" - ], + "docs": ["token mint"], "type": "pubkey" }, { "name": "_padding", + "docs": ["Reserve"], + "type": { + "array": ["u8", 128] + } + } + ] + } + }, + { + "name": "UpdatePoolFeesParameters", + "type": { + "kind": "struct", + "fields": [ + { + "name": "cliff_fee_numerator", "docs": [ - "Reserve" + "Base fee update mode:", + "- None: skip base fee update", + "- Some: update new cliff_fee_numerator if base fee is static" ], "type": { - "array": [ - "u8", - 128 - ] + "option": "u64" + } + }, + { + "name": "dynamic_fee", + "docs": [ + "Dynamic fee update mode:", + "- None: skip dynamic fee update", + "- Some(with default value): disable dynamic fee", + "- Some(with non default value): enable dynamic fee if disabled or update dynamic fee if enabled" + ], + "type": { + "option": { + "defined": { + "name": "DynamicFeeParameters" + } + } } } ] @@ -7317,28 +5487,19 @@ "fields": [ { "name": "reward_per_token_checkpoint", - "docs": [ - "The latest update reward checkpoint" - ], + "docs": ["The latest update reward checkpoint"], "type": { - "array": [ - "u8", - 32 - ] + "array": ["u8", 32] } }, { "name": "reward_pendings", - "docs": [ - "Current pending rewards" - ], + "docs": ["Current pending rewards"], "type": "u64" }, { "name": "total_claimed_rewards", - "docs": [ - "Total claimed rewards" - ], + "docs": ["Total claimed rewards"], "type": "u64" } ] @@ -7384,19 +5545,13 @@ { "name": "padding", "type": { - "array": [ - "u8", - 14 - ] + "array": ["u8", 14] } }, { "name": "padding2", "type": { - "array": [ - "u128", - 4 - ] + "array": ["u128", 4] } } ] @@ -7432,5 +5587,82 @@ ] } } + ], + "constants": [ + { + "name": "BIN_STEP_BPS_DEFAULT", + "type": "u16", + "value": "1" + }, + { + "name": "BIN_STEP_U128_DEFAULT_LE_BYTES", + "type": { + "array": ["u8", 16] + }, + "value": "[203, 16, 199, 186, 184, 141, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0]" + }, + { + "name": "CUSTOMIZABLE_POOL_PREFIX", + "type": "bytes", + "value": "[99, 112, 111, 111, 108]" + }, + { + "name": "FEE_DENOMINATOR", + "docs": [ + "Default fee denominator. DO NOT simply update it as it will break logic that depends on it as default value." + ], + "type": "u64", + "value": "1000000000" + }, + { + "name": "MAX_BASIS_POINT", + "docs": ["Max basis point. 100% in pct"], + "type": "u64", + "value": "10000" + }, + { + "name": "MAX_SQRT_PRICE_LE_BYTES", + "type": { + "array": ["u8", 16] + }, + "value": "[155, 87, 105, 78, 169, 26, 92, 132, 177, 196, 254, 255, 0, 0, 0, 0]" + }, + { + "name": "MIN_SQRT_PRICE_LE_BYTES", + "type": { + "array": ["u8", 16] + }, + "value": "[80, 59, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]" + }, + { + "name": "POOL_AUTHORITY_PREFIX", + "type": "bytes", + "value": "[112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121]" + }, + { + "name": "POOL_PREFIX", + "type": "bytes", + "value": "[112, 111, 111, 108]" + }, + { + "name": "POSITION_NFT_ACCOUNT_PREFIX", + "type": "bytes", + "value": "[112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, 97, 99, 99, 111, 117, 110, 116]" + }, + { + "name": "POSITION_PREFIX", + "type": "bytes", + "value": "[112, 111, 115, 105, 116, 105, 111, 110]" + }, + { + "name": "SPLIT_POSITION_DENOMINATOR", + "type": "u32", + "value": "1000000000" + }, + { + "name": "TOKEN_VAULT_PREFIX", + "type": "bytes", + "value": "[116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116]" + } ] -} \ No newline at end of file +} diff --git a/tests/common/idl/damm_v2.ts b/tests/common/idl/damm_v2.ts index 3a1691c..6b90f42 100644 --- a/tests/common/idl/damm_v2.ts +++ b/tests/common/idl/damm_v2.ts @@ -8,7 +8,7 @@ export type CpAmm = { address: "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"; metadata: { name: "cpAmm"; - version: "0.1.5"; + version: "0.1.6"; spec: "0.1.0"; description: "Created with Anchor"; }; @@ -537,14 +537,14 @@ export type CpAmm = { }; }, { - name: "claimFeeOperator"; + name: "operator"; docs: ["Claim fee operator"]; }, { - name: "operator"; - docs: ["Operator"]; + name: "whitelistedAddress"; + docs: ["operator"]; signer: true; - relations: ["claimFeeOperator"]; + relations: ["operator"]; }, { name: "tokenAProgram"; @@ -684,20 +684,24 @@ export type CpAmm = { ]; }, { - name: "closeClaimFeeOperator"; - discriminator: [38, 134, 82, 216, 95, 124, 17, 99]; + name: "closeConfig"; + discriminator: [145, 9, 72, 157, 95, 125, 61, 85]; accounts: [ { - name: "claimFeeOperator"; + name: "config"; writable: true; }, { - name: "rentReceiver"; - writable: true; + name: "operator"; }, { - name: "admin"; + name: "whitelistedAddress"; signer: true; + relations: ["operator"]; + }, + { + name: "rentReceiver"; + writable: true; }, { name: "eventAuthority"; @@ -735,16 +739,15 @@ export type CpAmm = { args: []; }, { - name: "closeConfig"; - discriminator: [145, 9, 72, 157, 95, 125, 61, 85]; + name: "closeOperatorAccount"; + discriminator: [171, 9, 213, 74, 120, 23, 3, 29]; accounts: [ { - name: "config"; + name: "operator"; writable: true; }, { name: "admin"; - writable: true; signer: true; }, { @@ -873,9 +876,12 @@ export type CpAmm = { writable: true; }, { - name: "admin"; - writable: true; + name: "operator"; + }, + { + name: "whitelistedAddress"; signer: true; + relations: ["operator"]; }, { name: "rentReceiver"; @@ -917,21 +923,22 @@ export type CpAmm = { args: []; }, { - name: "createClaimFeeOperator"; - discriminator: [169, 62, 207, 107, 58, 187, 162, 109]; + name: "createConfig"; + docs: ["OPERATOR FUNCTIONS /////"]; + discriminator: [201, 207, 243, 114, 75, 111, 47, 189]; accounts: [ { - name: "claimFeeOperator"; + name: "config"; writable: true; pda: { seeds: [ { kind: "const"; - value: [99, 102, 95, 111, 112, 101, 114, 97, 116, 111, 114]; + value: [99, 111, 110, 102, 105, 103]; }, { - kind: "account"; - path: "operator"; + kind: "arg"; + path: "index"; } ]; }; @@ -940,7 +947,12 @@ export type CpAmm = { name: "operator"; }, { - name: "admin"; + name: "whitelistedAddress"; + signer: true; + relations: ["operator"]; + }, + { + name: "payer"; writable: true; signer: true; }, @@ -981,12 +993,24 @@ export type CpAmm = { name: "program"; } ]; - args: []; + args: [ + { + name: "index"; + type: "u64"; + }, + { + name: "configParameters"; + type: { + defined: { + name: "staticConfigParameters"; + }; + }; + } + ]; }, { - name: "createConfig"; - docs: ["ADMIN FUNCTIONS /////"]; - discriminator: [201, 207, 243, 114, 75, 111, 47, 189]; + name: "createDynamicConfig"; + discriminator: [81, 251, 122, 78, 66, 57, 208, 82]; accounts: [ { name: "config"; @@ -1005,7 +1029,15 @@ export type CpAmm = { }; }, { - name: "admin"; + name: "operator"; + }, + { + name: "whitelistedAddress"; + signer: true; + relations: ["operator"]; + }, + { + name: "payer"; writable: true; signer: true; }, @@ -1055,34 +1087,42 @@ export type CpAmm = { name: "configParameters"; type: { defined: { - name: "staticConfigParameters"; + name: "dynamicConfigParameters"; }; }; } ]; }, { - name: "createDynamicConfig"; - discriminator: [81, 251, 122, 78, 66, 57, 208, 82]; + name: "createOperatorAccount"; + docs: ["ADMIN FUNCTIONS /////"]; + discriminator: [221, 64, 246, 149, 240, 153, 229, 163]; accounts: [ { - name: "config"; + name: "operator"; writable: true; pda: { seeds: [ { kind: "const"; - value: [99, 111, 110, 102, 105, 103]; + value: [111, 112, 101, 114, 97, 116, 111, 114]; }, { - kind: "arg"; - path: "index"; + kind: "account"; + path: "whitelistedAddress"; } ]; }; }, + { + name: "whitelistedAddress"; + }, { name: "admin"; + signer: true; + }, + { + name: "payer"; writable: true; signer: true; }, @@ -1125,16 +1165,8 @@ export type CpAmm = { ]; args: [ { - name: "index"; - type: "u64"; - }, - { - name: "configParameters"; - type: { - defined: { - name: "dynamicConfigParameters"; - }; - }; + name: "permission"; + type: "u128"; } ]; }, @@ -1289,7 +1321,15 @@ export type CpAmm = { name: "tokenMint"; }, { - name: "admin"; + name: "operator"; + }, + { + name: "whitelistedAddress"; + signer: true; + relations: ["operator"]; + }, + { + name: "payer"; writable: true; signer: true; }, @@ -1332,6 +1372,31 @@ export type CpAmm = { ]; args: []; }, + { + name: "dummyIx"; + discriminator: [234, 95, 176, 185, 7, 42, 35, 159]; + accounts: [ + { + name: "podAlignedFeeTimeScheduler"; + }, + { + name: "podAlignedFeeRateLimiter"; + }, + { + name: "podAlignedFeeMarketCapScheduler"; + } + ]; + args: [ + { + name: "ixs"; + type: { + defined: { + name: "dummyParams"; + }; + }; + } + ]; + }, { name: "fundReward"; discriminator: [188, 50, 249, 165, 93, 151, 38, 63]; @@ -2539,8 +2604,12 @@ export type CpAmm = { writable: true; }, { - name: "admin"; + name: "operator"; + }, + { + name: "whitelistedAddress"; signer: true; + relations: ["operator"]; }, { name: "eventAuthority"; @@ -2952,6 +3021,66 @@ export type CpAmm = { } ]; }, + { + name: "updatePoolFees"; + discriminator: [118, 217, 203, 179, 60, 8, 70, 89]; + accounts: [ + { + name: "pool"; + writable: true; + }, + { + name: "operator"; + }, + { + name: "whitelistedAddress"; + signer: true; + relations: ["operator"]; + }, + { + name: "eventAuthority"; + pda: { + seeds: [ + { + kind: "const"; + value: [ + 95, + 95, + 101, + 118, + 101, + 110, + 116, + 95, + 97, + 117, + 116, + 104, + 111, + 114, + 105, + 116, + 121 + ]; + } + ]; + }; + }, + { + name: "program"; + } + ]; + args: [ + { + name: "params"; + type: { + defined: { + name: "updatePoolFeesParameters"; + }; + }; + } + ]; + }, { name: "updateRewardDuration"; discriminator: [138, 174, 196, 169, 213, 235, 254, 107]; @@ -3136,14 +3265,26 @@ export type CpAmm = { } ]; accounts: [ - { - name: "claimFeeOperator"; - discriminator: [166, 48, 134, 86, 34, 200, 188, 150]; - }, { name: "config"; discriminator: [155, 12, 170, 224, 30, 250, 204, 130]; }, + { + name: "operator"; + discriminator: [219, 31, 188, 145, 69, 139, 204, 117]; + }, + { + name: "podAlignedFeeMarketCapScheduler"; + discriminator: [251, 130, 208, 253, 245, 27, 145, 203]; + }, + { + name: "podAlignedFeeRateLimiter"; + discriminator: [160, 219, 8, 251, 179, 7, 16, 117]; + }, + { + name: "podAlignedFeeTimeScheduler"; + discriminator: [239, 132, 138, 213, 67, 154, 130, 70]; + }, { name: "pool"; discriminator: [241, 154, 109, 4, 17, 177, 109, 188]; @@ -3162,10 +3303,6 @@ export type CpAmm = { } ]; events: [ - { - name: "evtAddLiquidity"; - discriminator: [175, 242, 8, 157, 30, 247, 185, 169]; - }, { name: "evtClaimPartnerFee"; discriminator: [118, 99, 77, 10, 226, 1, 1, 87]; @@ -3182,10 +3319,6 @@ export type CpAmm = { name: "evtClaimReward"; discriminator: [218, 86, 147, 200, 235, 188, 215, 231]; }, - { - name: "evtCloseClaimFeeOperator"; - discriminator: [111, 39, 37, 55, 110, 216, 194, 23]; - }, { name: "evtCloseConfig"; discriminator: [36, 30, 239, 45, 58, 132, 14, 5]; @@ -3194,10 +3327,6 @@ export type CpAmm = { name: "evtClosePosition"; discriminator: [20, 145, 144, 68, 143, 142, 214, 178]; }, - { - name: "evtCreateClaimFeeOperator"; - discriminator: [21, 6, 153, 120, 68, 116, 28, 177]; - }, { name: "evtCreateConfig"; discriminator: [131, 207, 180, 174, 180, 73, 165, 54]; @@ -3238,10 +3367,6 @@ export type CpAmm = { name: "evtPermanentLockPosition"; discriminator: [145, 143, 162, 218, 218, 80, 67, 11]; }, - { - name: "evtRemoveLiquidity"; - discriminator: [87, 46, 88, 98, 175, 96, 34, 91]; - }, { name: "evtSetPoolStatus"; discriminator: [100, 213, 74, 3, 95, 91, 228, 146]; @@ -3250,14 +3375,14 @@ export type CpAmm = { name: "evtSplitPosition2"; discriminator: [165, 32, 203, 174, 72, 100, 233, 103]; }, - { - name: "evtSwap"; - discriminator: [27, 60, 21, 213, 138, 170, 187, 147]; - }, { name: "evtSwap2"; discriminator: [189, 66, 51, 168, 38, 80, 117, 153]; }, + { + name: "evtUpdatePoolFees"; + discriminator: [76, 165, 246, 102, 102, 217, 156, 44]; + }, { name: "evtUpdateRewardDuration"; discriminator: [149, 135, 65, 231, 129, 153, 65, 57]; @@ -3524,7 +3649,7 @@ export type CpAmm = { }, { code: 6050; - name: "invalidFeeScheduler"; + name: "invalidFeeTimeScheduler"; msg: "Invalid fee scheduler"; }, { @@ -3536,6 +3661,41 @@ export type CpAmm = { code: 6052; name: "invalidPoolVersion"; msg: "Invalid pool version"; + }, + { + code: 6053; + name: "invalidAuthority"; + msg: "Invalid authority to do that action"; + }, + { + code: 6054; + name: "invalidPermission"; + msg: "Invalid permission"; + }, + { + code: 6055; + name: "invalidFeeMarketCapScheduler"; + msg: "Invalid fee market cap scheduler"; + }, + { + code: 6056; + name: "cannotUpdateBaseFee"; + msg: "Cannot update base fee"; + }, + { + code: 6057; + name: "invalidDynamicFeeParameters"; + msg: "Invalid dynamic fee parameters"; + }, + { + code: 6058; + name: "invalidUpdatePoolFeesParameters"; + msg: "Invalid update pool fees parameters"; + }, + { + code: 6059; + name: "missingOperatorAccount"; + msg: "Missing operator account"; } ]; types: [ @@ -3563,7 +3723,7 @@ export type CpAmm = { }; }, { - name: "baseFeeConfig"; + name: "baseFeeInfo"; serialization: "bytemuck"; repr: { kind: "c"; @@ -3572,32 +3732,10 @@ export type CpAmm = { kind: "struct"; fields: [ { - name: "cliffFeeNumerator"; - type: "u64"; - }, - { - name: "baseFeeMode"; - type: "u8"; - }, - { - name: "padding"; - type: { - array: ["u8", 5]; - }; - }, - { - name: "firstFactor"; - type: "u16"; - }, - { - name: "secondFactor"; + name: "data"; type: { - array: ["u8", 8]; + array: ["u8", 32]; }; - }, - { - name: "thirdFactor"; - type: "u64"; } ]; }; @@ -3608,26 +3746,10 @@ export type CpAmm = { kind: "struct"; fields: [ { - name: "cliffFeeNumerator"; - type: "u64"; - }, - { - name: "firstFactor"; - type: "u16"; - }, - { - name: "secondFactor"; + name: "data"; type: { - array: ["u8", 8]; + array: ["u8", 30]; }; - }, - { - name: "thirdFactor"; - type: "u64"; - }, - { - name: "baseFeeMode"; - type: "u8"; } ]; }; @@ -3642,60 +3764,138 @@ export type CpAmm = { kind: "struct"; fields: [ { - name: "cliffFeeNumerator"; - type: "u64"; + name: "baseFeeInfo"; + type: { + defined: { + name: "baseFeeInfo"; + }; + }; }, { - name: "baseFeeMode"; + name: "padding1"; + type: "u64"; + } + ]; + }; + }, + { + name: "borshFeeMarketCapScheduler"; + type: { + kind: "struct"; + fields: [ + { + name: "cliffFeeNumerator"; + type: "u64"; + }, + { + name: "numberOfPeriod"; + type: "u16"; + }, + { + name: "sqrtPriceStepBps"; + type: "u32"; + }, + { + name: "schedulerExpirationDuration"; + type: "u32"; + }, + { + name: "reductionFactor"; + type: "u64"; + }, + { + name: "baseFeeMode"; type: "u8"; }, { - name: "padding0"; + name: "padding"; type: { - array: ["u8", 5]; + array: ["u8", 3]; }; + } + ]; + }; + }, + { + name: "borshFeeRateLimiter"; + docs: [ + "we denote reference_amount = x0, cliff_fee_numerator = c, fee_increment = i", + "if input_amount <= x0, then fee = input_amount * c", + "", + "if input_amount > x0, then input_amount = x0 + (a * x0 + b)", + "if a < max_index", + "then fee = x0 * c + x0 * (c + i) + .... + x0 * (c + i*a) + b * (c + i * (a+1))", + "then fee = x0 * (c + c*a + i*a*(a+1)/2) + b * (c + i * (a+1))", + "", + "if a >= max_index", + "if a = max_index + d, input_amount = x0 + max_index * x0 + (d * x0 + b)", + "then fee = x0 * (c + c*max_index + i*max_index*(max_index+1)/2) + (d * x0 + b) * MAX_FEE" + ]; + type: { + kind: "struct"; + fields: [ + { + name: "cliffFeeNumerator"; + type: "u64"; }, { - name: "firstFactor"; + name: "feeIncrementBps"; type: "u16"; }, { - name: "secondFactor"; - type: { - array: ["u8", 8]; - }; + name: "maxLimiterDuration"; + type: "u32"; }, { - name: "thirdFactor"; - type: "u64"; + name: "maxFeeBps"; + type: "u32"; }, { - name: "padding1"; + name: "referenceAmount"; type: "u64"; + }, + { + name: "baseFeeMode"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 3]; + }; } ]; }; }, { - name: "claimFeeOperator"; - docs: ["Parameter that set by the protocol"]; - serialization: "bytemuck"; - repr: { - kind: "c"; - }; + name: "borshFeeTimeScheduler"; type: { kind: "struct"; fields: [ { - name: "operator"; - docs: ["operator"]; - type: "pubkey"; + name: "cliffFeeNumerator"; + type: "u64"; + }, + { + name: "numberOfPeriod"; + type: "u16"; + }, + { + name: "periodFrequency"; + type: "u64"; + }, + { + name: "reductionFactor"; + type: "u64"; + }, + { + name: "baseFeeMode"; + type: "u8"; }, { name: "padding"; - docs: ["Reserve"]; type: { - array: ["u8", 128]; + array: ["u8", 3]; }; } ]; @@ -3778,6 +3978,38 @@ export type CpAmm = { ]; }; }, + { + name: "dummyParams"; + type: { + kind: "struct"; + fields: [ + { + name: "borshFeeTimeSchedulerParams"; + type: { + defined: { + name: "borshFeeTimeScheduler"; + }; + }; + }, + { + name: "borshFeeRateLimiterParams"; + type: { + defined: { + name: "borshFeeRateLimiter"; + }; + }; + }, + { + name: "borshFeeMarketCapSchedulerParams"; + type: { + defined: { + name: "borshFeeMarketCapScheduler"; + }; + }; + } + ]; + }; + }, { name: "dynamicConfigParameters"; type: { @@ -3948,50 +4180,6 @@ export type CpAmm = { ]; }; }, - { - name: "evtAddLiquidity"; - type: { - kind: "struct"; - fields: [ - { - name: "pool"; - type: "pubkey"; - }, - { - name: "position"; - type: "pubkey"; - }, - { - name: "owner"; - type: "pubkey"; - }, - { - name: "params"; - type: { - defined: { - name: "addLiquidityParameters"; - }; - }; - }, - { - name: "tokenAAmount"; - type: "u64"; - }, - { - name: "tokenBAmount"; - type: "u64"; - }, - { - name: "totalAmountA"; - type: "u64"; - }, - { - name: "totalAmountB"; - type: "u64"; - } - ]; - }; - }, { name: "evtClaimPartnerFee"; type: { @@ -4092,23 +4280,6 @@ export type CpAmm = { ]; }; }, - { - name: "evtCloseClaimFeeOperator"; - docs: ["Close claim fee operator"]; - type: { - kind: "struct"; - fields: [ - { - name: "claimFeeOperator"; - type: "pubkey"; - }, - { - name: "operator"; - type: "pubkey"; - } - ]; - }; - }, { name: "evtCloseConfig"; docs: ["Close config"]; @@ -4152,19 +4323,6 @@ export type CpAmm = { ]; }; }, - { - name: "evtCreateClaimFeeOperator"; - docs: ["Create claim fee operator"]; - type: { - kind: "struct"; - fields: [ - { - name: "operator"; - type: "pubkey"; - } - ]; - }; - }, { name: "evtCreateConfig"; docs: ["Create static config"]; @@ -4572,42 +4730,6 @@ export type CpAmm = { ]; }; }, - { - name: "evtRemoveLiquidity"; - type: { - kind: "struct"; - fields: [ - { - name: "pool"; - type: "pubkey"; - }, - { - name: "position"; - type: "pubkey"; - }, - { - name: "owner"; - type: "pubkey"; - }, - { - name: "params"; - type: { - defined: { - name: "removeLiquidityParameters"; - }; - }; - }, - { - name: "tokenAAmount"; - type: "u64"; - }, - { - name: "tokenBAmount"; - type: "u64"; - } - ]; - }; - }, { name: "evtSetPoolStatus"; type: { @@ -4688,50 +4810,6 @@ export type CpAmm = { ]; }; }, - { - name: "evtSwap"; - type: { - kind: "struct"; - fields: [ - { - name: "pool"; - type: "pubkey"; - }, - { - name: "tradeDirection"; - type: "u8"; - }, - { - name: "hasReferral"; - type: "bool"; - }, - { - name: "params"; - type: { - defined: { - name: "swapParameters"; - }; - }; - }, - { - name: "swapResult"; - type: { - defined: { - name: "swapResult"; - }; - }; - }, - { - name: "actualAmountIn"; - type: "u64"; - }, - { - name: "currentTimestamp"; - type: "u64"; - } - ]; - }; - }, { name: "evtSwap2"; type: { @@ -4786,12 +4864,36 @@ export type CpAmm = { type: "u64"; }, { - name: "reserveAAmount"; - type: "u64"; + name: "reserveAAmount"; + type: "u64"; + }, + { + name: "reserveBAmount"; + type: "u64"; + } + ]; + }; + }, + { + name: "evtUpdatePoolFees"; + type: { + kind: "struct"; + fields: [ + { + name: "pool"; + type: "pubkey"; + }, + { + name: "operator"; + type: "pubkey"; }, { - name: "reserveBAmount"; - type: "u64"; + name: "params"; + type: { + defined: { + name: "updatePoolFeesParameters"; + }; + }; } ]; }; @@ -4901,7 +5003,7 @@ export type CpAmm = { { name: "sqrtPrice"; docs: [ - "The init price of the pool as a sqrt(token_b/token_a) Q64.64 value" + "The init price of the pool as a sqrt(token_b/token_a) Q64.64 value. Market cap fee scheduler minimum price will be derived from this value" ]; type: "u128"; }, @@ -4952,6 +5054,154 @@ export type CpAmm = { ]; }; }, + { + name: "operator"; + serialization: "bytemuck"; + repr: { + kind: "c"; + }; + type: { + kind: "struct"; + fields: [ + { + name: "whitelistedAddress"; + type: "pubkey"; + }, + { + name: "permission"; + type: "u128"; + }, + { + name: "padding"; + type: { + array: ["u64", 2]; + }; + } + ]; + }; + }, + { + name: "podAlignedFeeMarketCapScheduler"; + serialization: "bytemuck"; + repr: { + kind: "c"; + }; + type: { + kind: "struct"; + fields: [ + { + name: "cliffFeeNumerator"; + type: "u64"; + }, + { + name: "baseFeeMode"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 5]; + }; + }, + { + name: "numberOfPeriod"; + type: "u16"; + }, + { + name: "sqrtPriceStepBps"; + type: "u32"; + }, + { + name: "schedulerExpirationDuration"; + type: "u32"; + }, + { + name: "reductionFactor"; + type: "u64"; + } + ]; + }; + }, + { + name: "podAlignedFeeRateLimiter"; + serialization: "bytemuck"; + repr: { + kind: "c"; + }; + type: { + kind: "struct"; + fields: [ + { + name: "cliffFeeNumerator"; + type: "u64"; + }, + { + name: "baseFeeMode"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 5]; + }; + }, + { + name: "feeIncrementBps"; + type: "u16"; + }, + { + name: "maxLimiterDuration"; + type: "u32"; + }, + { + name: "maxFeeBps"; + type: "u32"; + }, + { + name: "referenceAmount"; + type: "u64"; + } + ]; + }; + }, + { + name: "podAlignedFeeTimeScheduler"; + serialization: "bytemuck"; + repr: { + kind: "c"; + }; + type: { + kind: "struct"; + fields: [ + { + name: "cliffFeeNumerator"; + type: "u64"; + }, + { + name: "baseFeeMode"; + type: "u8"; + }, + { + name: "padding"; + type: { + array: ["u8", 5]; + }; + }, + { + name: "numberOfPeriod"; + type: "u16"; + }, + { + name: "periodFrequency"; + type: "u64"; + }, + { + name: "reductionFactor"; + type: "u64"; + } + ]; + }; + }, { name: "pool"; serialization: "bytemuck"; @@ -5077,7 +5327,7 @@ export type CpAmm = { { name: "collectFeeMode"; docs: [ - "0 is collect fee in both token, 1 only collect fee in token a, 2 only collect fee in token b" + "0 is collect fee in both token, 1 only collect fee only in token b" ]; type: "u8"; }, @@ -5169,13 +5419,6 @@ export type CpAmm = { }; }; }, - { - name: "padding"; - docs: ["padding"]; - type: { - array: ["u8", 3]; - }; - }, { name: "dynamicFee"; docs: ["dynamic fee"]; @@ -5203,7 +5446,7 @@ export type CpAmm = { name: "baseFee"; type: { defined: { - name: "baseFeeConfig"; + name: "baseFeeInfo"; }; }; }, @@ -5308,11 +5551,8 @@ export type CpAmm = { }; }, { - name: "padding1"; - docs: ["padding"]; - type: { - array: ["u64", 2]; - }; + name: "initSqrtPrice"; + type: "u128"; } ]; }; @@ -5813,39 +6053,6 @@ export type CpAmm = { ]; }; }, - { - name: "swapResult"; - docs: ["Encodes all results of swapping"]; - type: { - kind: "struct"; - fields: [ - { - name: "outputAmount"; - type: "u64"; - }, - { - name: "nextSqrtPrice"; - type: "u128"; - }, - { - name: "lpFee"; - type: "u64"; - }, - { - name: "protocolFee"; - type: "u64"; - }, - { - name: "partnerFee"; - type: "u64"; - }, - { - name: "referralFee"; - type: "u64"; - } - ]; - }; - }, { name: "swapResult2"; type: { @@ -5915,6 +6122,41 @@ export type CpAmm = { ]; }; }, + { + name: "updatePoolFeesParameters"; + type: { + kind: "struct"; + fields: [ + { + name: "cliffFeeNumerator"; + docs: [ + "Base fee update mode:", + "- None: skip base fee update", + "- Some: update new cliff_fee_numerator if base fee is static" + ]; + type: { + option: "u64"; + }; + }, + { + name: "dynamicFee"; + docs: [ + "Dynamic fee update mode:", + "- None: skip dynamic fee update", + "- Some(with default value): disable dynamic fee", + "- Some(with non default value): enable dynamic fee if disabled or update dynamic fee if enabled" + ]; + type: { + option: { + defined: { + name: "dynamicFeeParameters"; + }; + }; + }; + } + ]; + }; + }, { name: "userRewardInfo"; serialization: "bytemuck"; @@ -6027,4 +6269,81 @@ export type CpAmm = { }; } ]; + constants: [ + { + name: "binStepBpsDefault"; + type: "u16"; + value: "1"; + }, + { + name: "binStepU128DefaultLeBytes"; + type: { + array: ["u8", 16]; + }; + value: "[203, 16, 199, 186, 184, 141, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0]"; + }, + { + name: "customizablePoolPrefix"; + type: "bytes"; + value: "[99, 112, 111, 111, 108]"; + }, + { + name: "feeDenominator"; + docs: [ + "Default fee denominator. DO NOT simply update it as it will break logic that depends on it as default value." + ]; + type: "u64"; + value: "1000000000"; + }, + { + name: "maxBasisPoint"; + docs: ["Max basis point. 100% in pct"]; + type: "u64"; + value: "10000"; + }, + { + name: "maxSqrtPriceLeBytes"; + type: { + array: ["u8", 16]; + }; + value: "[155, 87, 105, 78, 169, 26, 92, 132, 177, 196, 254, 255, 0, 0, 0, 0]"; + }, + { + name: "minSqrtPriceLeBytes"; + type: { + array: ["u8", 16]; + }; + value: "[80, 59, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]"; + }, + { + name: "poolAuthorityPrefix"; + type: "bytes"; + value: "[112, 111, 111, 108, 95, 97, 117, 116, 104, 111, 114, 105, 116, 121]"; + }, + { + name: "poolPrefix"; + type: "bytes"; + value: "[112, 111, 111, 108]"; + }, + { + name: "positionNftAccountPrefix"; + type: "bytes"; + value: "[112, 111, 115, 105, 116, 105, 111, 110, 95, 110, 102, 116, 95, 97, 99, 99, 111, 117, 110, 116]"; + }, + { + name: "positionPrefix"; + type: "bytes"; + value: "[112, 111, 115, 105, 116, 105, 111, 110]"; + }, + { + name: "splitPositionDenominator"; + type: "u32"; + value: "1000000000"; + }, + { + name: "tokenVaultPrefix"; + type: "bytes"; + value: "[116, 111, 107, 101, 110, 95, 118, 97, 117, 108, 116]"; + } + ]; }; diff --git a/tests/fixtures/damm_v2.so b/tests/fixtures/damm_v2.so index abd320014908616cf35841dfc68b20d4d9b1ad2a..27ca88a0521f512f4a4c8947b12526e5e6aa4ebe 100755 GIT binary patch delta 289187 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 l)QFB^# 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

aAK0NEmE z$T_k@E*gj9tFj4%_kM9N8fkwe|Kl3s9zl8o5R8kUesrJRpz7{`@lw zFrk9v$8ZhUa=C32ZuA=k)t za-&Lt7P&+A$X#-eJS30ERka4LvNYKuXUREofm|ln(Q<=h45$vdOYW10+NqAz@>r?xl8VohvYF?txIb_?9V^502UQw$T_k@ zE|SaS8o9A9o&Q}b=#abQK6ywUlht~(2G*nVzeNQZa*phfi{vu7PIjvl@W_4gh^*$} zD@v0y@{zB6rAM%>Mr0j|KGkXGB)((<>xr$a%6uE=Bgo zSLG<6$5(Z7gY1$$a-TdRkEagCSBVYq6BEs10$AB*+%oCg;d`axrjp{x4BMja(W#>A#@!s|H69 zv&~0qp*Yt)blGqj9t)Q(d(Yc$^_G`wn{`D&! zUl@FGnGS1PJ@nuM^8Db-a7_JVJM{2abbICCTQyAmApGhW{|jFAfQ|5*R!qV8C)gl) zJ9_da+WK5@lV{W3Jqc~i5AHB%@`aUx+uQhG@aiwX8bQDm*x@aTjB_twKD|P4>k^aq zP7gk!Y+Q>SH+27X@?aT%udDh8idj;iwvJ}Kc5i#MyIQoH>P&79y1la=CYU2SpInSi z?16R<*Ou+CmsmHj=lP21yECKRSpSrm1(r`-E(-xwSOMK% znVdxDQ|R2s(A_lJUMp^yf9-YS0XhB7L-*#R?ak0?3v^{6y4XV7-;Y_(fA5E}fVk|U za~*VhDfxYL`2%!15nT`HjJHDMst!0CM*;1Djm|AVm$yKBd31dVy0#xWd%)CH|Ij=9 z@-*PPcre;6p>vm`d)K19@Se)%z?Qr>I{WDtSowpotbZLS-){nelMkY;N6^FYmc(WN zwS07T)cv)?+ufRcKfGP7v05*z*V|t=XqZ4~JG@z|Y2cFko8o|z@YbfLzOo4OPuc<)lvK`*>@sc}ENRjF|{y!GhR2jT#Q@J^y8-}^e|lSlau&i{G=a^amn zO@mT+r%&U0c&AU}ba}OgQ>T_3E1I%FOAdTeJqW$;cY98GvRG2jeDC% zmtcC0+FPKDG6L^*fAKJ$f^%-(lp|uSNxWA^K-W1=_W5M0x!VAa^u6 zeN1G1#b3HGvc5ncHX`c_^2vEo|Jv^6PecX!5R(Z1-c=8-r(@>asKM;!2dB;b#mx3E znm<2%?!q~}YlD<|e*KHhmvr2l6};s)&+Z1z1!v4%xKbf}XD`pqL(iDI_3Xr^;qL~* z=T7ryXUyGlwznW`A3o1(z9`{2gUy1lc~&1a7gXnNv%+A($7DHWT{j=PAeCyad|qnh F{{s@iHxU2; delta 257100 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�htiw59+!sRpor!eQwQ9j^yV1BmmL(K?Ar&) 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 Date: Sun, 21 Dec 2025 18:12:58 +0800 Subject: [PATCH 9/9] fix: update damm_v2 tests --- tests/common/damm_v2.ts | 105 +++++++++++++--- tests/test_zapin/zapin_dammv2.test.ts | 166 ++++++++++++++++++++++---- 2 files changed, 231 insertions(+), 40 deletions(-) diff --git a/tests/common/damm_v2.ts b/tests/common/damm_v2.ts index cb7336f..5975c5a 100644 --- a/tests/common/damm_v2.ts +++ b/tests/common/damm_v2.ts @@ -1,6 +1,7 @@ import { AnchorProvider, BN, + BorshCoder, IdlAccounts, IdlTypes, Program, @@ -168,7 +169,7 @@ export async function createDammV2Pool( tokenBMint: PublicKey, amountA?: BN, amountB?: BN, - baseFeeParams?: any + baseFeeParams?: Buffer ): Promise { const program = createDammV2Program(); @@ -217,17 +218,23 @@ export async function createDammV2Pool( liquidityDelta = BN.min(liquidityFromA, liquidityFromB); } + const baseFee = { + data: Array.from( + baseFeeParams ?? + encodeFeeTimeSchedulerParams( + new BN(2_500_000), + 0, + new BN(0), + new BN(0), + BaseFeeMode.FeeTimeSchedulerLinear + ) + ), + }; + const transaction = await program.methods .initializeCustomizablePool({ poolFees: { - baseFee: baseFeeParams ?? { - cliffFeeNumerator: new BN(2_500_000), - firstFactor: 0, - secondFactor: Array.from(new BN(0).toArrayLike(Buffer, "le", 8)), - thirdFactor: new BN(0), - baseFeeMode: 0, - }, - padding: [], + baseFee, dynamicFee: null, }, sqrtMinPrice: MIN_SQRT_PRICE, @@ -510,12 +517,76 @@ export async function swap(params: { .transaction(); } -export function convertToRateLimiterSecondFactor( - maxLimiterDuration: BN, - maxFeeBps: BN -): number[] { - const buffer1 = maxLimiterDuration.toArrayLike(Buffer, "le", 4); - const buffer2 = maxFeeBps.toArrayLike(Buffer, "le", 4); - const buffer = Buffer.concat([buffer1, buffer2]); - return Array.from(buffer); +const FEE_PADDING = Array.from(Buffer.alloc(3)); +const cpAmmCoder = new BorshCoder(CpAmmIDL as CpAmm); + +export enum BaseFeeMode { + FeeTimeSchedulerLinear, + FeeTimeSchedulerExponential, + RateLimiter, + FeeMarketCapSchedulerLinear, + FeeMarketCapSchedulerExponential, +} + +export function encodeFeeTimeSchedulerParams( + cliffFeeNumerator: BN, + numberOfPeriod: number, + periodFrequency: BN, + reductionFactor: BN, + baseFeeMode: BaseFeeMode +): Buffer { + const feeTimeScheduler = { + cliff_fee_numerator: new BN(cliffFeeNumerator.toString()), + number_of_period: numberOfPeriod, + period_frequency: new BN(periodFrequency.toString()), + reduction_factor: new BN(reductionFactor.toString()), + base_fee_mode: baseFeeMode, + padding: FEE_PADDING, + }; + + return cpAmmCoder.types.encode("BorshFeeTimeScheduler", feeTimeScheduler); +} + +export function encodeFeeMarketCapSchedulerParams( + cliffFeeNumerator: BN, + numberOfPeriod: number, + sqrtPriceStepBps: number, + schedulerExpirationDuration: number, + reductionFactor: BN, + baseFeeMode: BaseFeeMode +): Buffer { + const feeMarketCapScheduler = { + cliff_fee_numerator: new BN(cliffFeeNumerator.toString()), + number_of_period: numberOfPeriod, + sqrt_price_step_bps: sqrtPriceStepBps, + scheduler_expiration_duration: schedulerExpirationDuration, + reduction_factor: new BN(reductionFactor.toString()), + base_fee_mode: baseFeeMode, + padding: FEE_PADDING, + }; + + return cpAmmCoder.types.encode( + "BorshFeeMarketCapScheduler", + feeMarketCapScheduler + ); +} + +export function encodeFeeRateLimiterParams( + cliffFeeNumerator: BN, + feeIncrementBps: number, + maxLimiterDuration: number, + maxFeeBps: number, + referenceAmount: BN +): Buffer { + const feeRateLimiter = { + cliff_fee_numerator: new BN(cliffFeeNumerator.toString()), + fee_increment_bps: feeIncrementBps, + max_limiter_duration: maxLimiterDuration, + max_fee_bps: maxFeeBps, + reference_amount: new BN(referenceAmount.toString()), + base_fee_mode: BaseFeeMode.RateLimiter, + padding: FEE_PADDING, + }; + + return cpAmmCoder.types.encode("BorshFeeRateLimiter", feeRateLimiter); } diff --git a/tests/test_zapin/zapin_dammv2.test.ts b/tests/test_zapin/zapin_dammv2.test.ts index 7416629..2d3daba 100644 --- a/tests/test_zapin/zapin_dammv2.test.ts +++ b/tests/test_zapin/zapin_dammv2.test.ts @@ -28,7 +28,6 @@ import { import ZapIDL from "../../target/idl/zap.json"; import DAMMV2IDL from "../../idls/damm_v2.json"; import { - convertToRateLimiterSecondFactor, createDammV2Pool, createDammV2Position, swap, @@ -37,12 +36,16 @@ import { getAssociatedTokenAddressSync } from "@solana/spl-token"; import { BN } from "@coral-xyz/anchor"; import { getDammV2Pool, getDammV2Position } from "../common/pda"; import { expect } from "chai"; -import fs from "fs"; +import { + BaseFeeMode, + encodeFeeMarketCapSchedulerParams, + encodeFeeRateLimiterParams, + encodeFeeTimeSchedulerParams, +} from "../common/damm_v2"; describe("Zap In damm V2", () => { let zapProgram: ZapProgram; let svm: LiteSVM; - let tokenMint: PublicKey; let user: Keypair; let admin: Keypair; let tokenAMint: PublicKey; @@ -97,15 +100,55 @@ describe("Zap In damm V2", () => { }); }); - it("zap in with pool has fee scheduler", async () => { - const baseFee = { - cliffFeeNumerator: new BN(500_000_000), // 50 % - firstFactor: 100, // 100 periods - secondFactor: Array.from(new BN(1).toArrayLike(Buffer, "le", 8)), - thirdFactor: new BN(4875000), - baseFeeMode: 0, // fee scheduler Linear mode - }; + it("zap in with pool has fee time scheduler linear", async () => { + const baseFee = encodeFeeTimeSchedulerParams( + new BN(500_000_000), // 50% cliff fee + 100, // 100 periods + new BN(1), // period frequency in slots + new BN(4875000), // 0.4875% reduction per period + BaseFeeMode.FeeTimeSchedulerLinear + ); + warpSlotBy(svm, new BN(10)); + + const pool = await createDammV2Pool( + svm, + admin, + tokenAMint, + tokenBMint, + undefined, + undefined, + baseFee + ); + + const { position, positionNftAccount } = await createDammV2Position( + svm, + user, + pool + ); + + const amountTokenA = new BN(LAMPORTS_PER_SOL); + const amountSwap = amountTokenA.divn(2); + await zapInFullFlow({ + svm, + user, + pool, + position, + positionNftAccount, + inputTokenMint: tokenAMint, + outputTokenMint: tokenBMint, + totalAmount: amountTokenA, + amountSwap, + }); + }); + it("zap in with pool has fee time scheduler exponential", async () => { + const baseFee = encodeFeeTimeSchedulerParams( + new BN(990_000_000), // 99% cliff fee + 10, // 10 periods + new BN(1), // period frequency in slots + new BN(1_000), // 10% decay per period + BaseFeeMode.FeeTimeSchedulerExponential + ); warpSlotBy(svm, new BN(10)); const pool = await createDammV2Pool( @@ -140,18 +183,13 @@ describe("Zap In damm V2", () => { }); it("zap in with pool has rate limiter", async () => { - let maxRateLimiterDuration = new BN(10); - let maxFeeBps = new BN(5000); - const baseFee = { - cliffFeeNumerator: new BN(10_000_000), // 100bps - firstFactor: 10, // 10 bps - secondFactor: convertToRateLimiterSecondFactor( - maxRateLimiterDuration, - maxFeeBps - ), - thirdFactor: new BN(LAMPORTS_PER_SOL), // 1 SOL, - baseFeeMode: 2, // rate limiter mode - }; + const baseFee = encodeFeeRateLimiterParams( + new BN(10_000_000), // 1% cliff fee + 10, // 10 bps fee increment + 10, // max limiter duration + 5000, // 50% max fee + new BN(LAMPORTS_PER_SOL) // reference amount: 1 SOL + ); const pool = await createDammV2Pool( svm, @@ -184,6 +222,88 @@ describe("Zap In damm V2", () => { }); }); + it("zap in with pool has fee market cap scheduler linear", async () => { + const baseFee = encodeFeeMarketCapSchedulerParams( + new BN(50_000_000), // 5% cliff fee + 20, // 20 periods + 50, // 0.5% price step + 5000, // scheduler expires after 5000 slots + new BN(1_000_000), // 0.1% reduction per period + BaseFeeMode.FeeMarketCapSchedulerLinear + ); + + const pool = await createDammV2Pool( + svm, + admin, + tokenAMint, + tokenBMint, + undefined, + undefined, + baseFee + ); + + const { position, positionNftAccount } = await createDammV2Position( + svm, + user, + pool + ); + + const amountTokenA = new BN(LAMPORTS_PER_SOL); + const amountSwap = amountTokenA.divn(2); + await zapInFullFlow({ + svm, + user, + pool, + position, + positionNftAccount, + inputTokenMint: tokenAMint, + outputTokenMint: tokenBMint, + totalAmount: amountTokenA, + amountSwap, + }); + }); + + it("zap in with pool has fee market cap scheduler exponential", async () => { + const baseFee = encodeFeeMarketCapSchedulerParams( + new BN(990_000_000), // 99% cliff fee + 10, // 10 periods + 50, // 0.5% sqrt price step between tiers (in bps) + 1000, // scheduler expires after 1000 slots + new BN(1_000), // 10% decay per period (1000/10000 in bps scale) + BaseFeeMode.FeeMarketCapSchedulerExponential + ); + + const pool = await createDammV2Pool( + svm, + admin, + tokenAMint, + tokenBMint, + undefined, + undefined, + baseFee + ); + + const { position, positionNftAccount } = await createDammV2Position( + svm, + user, + pool + ); + + const amountTokenA = new BN(LAMPORTS_PER_SOL); + const amountSwap = amountTokenA.divn(2); + await zapInFullFlow({ + svm, + user, + pool, + position, + positionNftAccount, + inputTokenMint: tokenAMint, + outputTokenMint: tokenBMint, + totalAmount: amountTokenA, + amountSwap, + }); + }); + it("zap in with pool low liquidity", async () => { const pool = await createDammV2Pool( svm,