Integrate Raydium CLMM upgraded parser events

This commit is contained in:
0xfnzero
2026-05-25 23:06:44 +08:00
parent 0875ec1a9d
commit 983aedf27c
11 changed files with 585 additions and 42 deletions
@@ -216,6 +216,15 @@ fn push_streamer_event_sdk_grpc_types(t: &EventType, out: &mut Vec<SdkGrpcEventT
St::RaydiumClmmClosePosition => out.push(Sdk::RaydiumClmmClosePosition),
St::RaydiumClmmIncreaseLiquidityV2 => out.push(Sdk::RaydiumClmmIncreaseLiquidity),
St::RaydiumClmmDecreaseLiquidityV2 => out.push(Sdk::RaydiumClmmDecreaseLiquidity),
St::RaydiumClmmLiquidityChange => out.push(Sdk::RaydiumClmmLiquidityChange),
St::RaydiumClmmConfigChange => out.push(Sdk::RaydiumClmmConfigChange),
St::RaydiumClmmCreatePersonalPosition => out.push(Sdk::RaydiumClmmCreatePersonalPosition),
St::RaydiumClmmLiquidityCalculate => out.push(Sdk::RaydiumClmmLiquidityCalculate),
St::RaydiumClmmOpenLimitOrder => out.push(Sdk::RaydiumClmmOpenLimitOrder),
St::RaydiumClmmIncreaseLimitOrder => out.push(Sdk::RaydiumClmmIncreaseLimitOrder),
St::RaydiumClmmDecreaseLimitOrder => out.push(Sdk::RaydiumClmmDecreaseLimitOrder),
St::RaydiumClmmSettleLimitOrder => out.push(Sdk::RaydiumClmmSettleLimitOrder),
St::RaydiumClmmUpdateRewardInfos => out.push(Sdk::RaydiumClmmUpdateRewardInfos),
St::RaydiumClmmCreatePool => out.push(Sdk::RaydiumClmmCreatePool),
St::RaydiumClmmOpenPositionWithToken22Nft => {
out.push(Sdk::RaydiumClmmOpenPositionWithTokenExtNft)
@@ -329,6 +338,15 @@ fn push_protocol_sdk_grpc_event_types(protocol: &Protocol, out: &mut Vec<SdkGrpc
Sdk::RaydiumClmmClosePosition,
Sdk::RaydiumClmmIncreaseLiquidity,
Sdk::RaydiumClmmDecreaseLiquidity,
Sdk::RaydiumClmmLiquidityChange,
Sdk::RaydiumClmmConfigChange,
Sdk::RaydiumClmmCreatePersonalPosition,
Sdk::RaydiumClmmLiquidityCalculate,
Sdk::RaydiumClmmOpenLimitOrder,
Sdk::RaydiumClmmIncreaseLimitOrder,
Sdk::RaydiumClmmDecreaseLimitOrder,
Sdk::RaydiumClmmSettleLimitOrder,
Sdk::RaydiumClmmUpdateRewardInfos,
Sdk::RaydiumClmmOpenPositionWithTokenExtNft,
Sdk::RaydiumClmmCollectFee,
]),
@@ -611,6 +629,15 @@ mod tests {
EventType::RaydiumClmmClosePosition,
EventType::RaydiumClmmIncreaseLiquidityV2,
EventType::RaydiumClmmDecreaseLiquidityV2,
EventType::RaydiumClmmLiquidityChange,
EventType::RaydiumClmmConfigChange,
EventType::RaydiumClmmCreatePersonalPosition,
EventType::RaydiumClmmLiquidityCalculate,
EventType::RaydiumClmmOpenLimitOrder,
EventType::RaydiumClmmIncreaseLimitOrder,
EventType::RaydiumClmmDecreaseLimitOrder,
EventType::RaydiumClmmSettleLimitOrder,
EventType::RaydiumClmmUpdateRewardInfos,
EventType::RaydiumClmmCreatePool,
EventType::RaydiumClmmOpenPositionWithToken22Nft,
EventType::RaydiumClmmOpenPositionV2,
@@ -120,6 +120,15 @@ pub enum EventType {
RaydiumClmmClosePosition,
RaydiumClmmIncreaseLiquidityV2,
RaydiumClmmDecreaseLiquidityV2,
RaydiumClmmLiquidityChange,
RaydiumClmmConfigChange,
RaydiumClmmCreatePersonalPosition,
RaydiumClmmLiquidityCalculate,
RaydiumClmmOpenLimitOrder,
RaydiumClmmIncreaseLimitOrder,
RaydiumClmmDecreaseLimitOrder,
RaydiumClmmSettleLimitOrder,
RaydiumClmmUpdateRewardInfos,
RaydiumClmmCreatePool,
RaydiumClmmOpenPositionWithToken22Nft,
RaydiumClmmOpenPositionV2,
+18
View File
@@ -83,6 +83,15 @@ pub enum DexEvent {
RaydiumClmmClosePositionEvent(RaydiumClmmClosePositionEvent),
RaydiumClmmIncreaseLiquidityV2Event(RaydiumClmmIncreaseLiquidityV2Event),
RaydiumClmmDecreaseLiquidityV2Event(RaydiumClmmDecreaseLiquidityV2Event),
RaydiumClmmLiquidityChangeEvent(RaydiumClmmLiquidityChangeEvent),
RaydiumClmmConfigChangeEvent(RaydiumClmmConfigChangeEvent),
RaydiumClmmCreatePersonalPositionEvent(RaydiumClmmCreatePersonalPositionEvent),
RaydiumClmmLiquidityCalculateEvent(RaydiumClmmLiquidityCalculateEvent),
RaydiumClmmOpenLimitOrderEvent(RaydiumClmmOpenLimitOrderEvent),
RaydiumClmmIncreaseLimitOrderEvent(RaydiumClmmIncreaseLimitOrderEvent),
RaydiumClmmDecreaseLimitOrderEvent(RaydiumClmmDecreaseLimitOrderEvent),
RaydiumClmmSettleLimitOrderEvent(RaydiumClmmSettleLimitOrderEvent),
RaydiumClmmUpdateRewardInfosEvent(RaydiumClmmUpdateRewardInfosEvent),
RaydiumClmmCollectFeeEvent(RaydiumClmmCollectFeeEvent),
RaydiumClmmCreatePoolEvent(RaydiumClmmCreatePoolEvent),
RaydiumClmmOpenPositionWithToken22NftEvent(RaydiumClmmOpenPositionWithToken22NftEvent),
@@ -214,6 +223,15 @@ impl_dex_event_metadata!(
RaydiumClmmClosePositionEvent,
RaydiumClmmIncreaseLiquidityV2Event,
RaydiumClmmDecreaseLiquidityV2Event,
RaydiumClmmLiquidityChangeEvent,
RaydiumClmmConfigChangeEvent,
RaydiumClmmCreatePersonalPositionEvent,
RaydiumClmmLiquidityCalculateEvent,
RaydiumClmmOpenLimitOrderEvent,
RaydiumClmmIncreaseLimitOrderEvent,
RaydiumClmmDecreaseLimitOrderEvent,
RaydiumClmmSettleLimitOrderEvent,
RaydiumClmmUpdateRewardInfosEvent,
RaydiumClmmCollectFeeEvent,
RaydiumClmmCreatePoolEvent,
RaydiumClmmOpenPositionWithToken22NftEvent,
@@ -12,9 +12,20 @@ pub struct RaydiumClmmSwapEvent {
pub other_amount_threshold: u64,
pub sqrt_price_limit_x64: u128,
pub is_base_input: bool,
pub pool_state: Pubkey,
pub sender: Pubkey,
pub token_account_0: Pubkey,
pub token_account_1: Pubkey,
pub amount_0: u64,
pub transfer_fee_0: u64,
pub amount_1: u64,
pub transfer_fee_1: u64,
pub zero_for_one: bool,
pub sqrt_price_x64: u128,
pub liquidity: u128,
pub tick: i32,
pub payer: Pubkey,
pub amm_config: Pubkey,
pub pool_state: Pubkey,
pub input_token_account: Pubkey,
pub output_token_account: Pubkey,
pub input_vault: Pubkey,
@@ -65,7 +76,15 @@ pub struct RaydiumClmmClosePositionEvent {
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmDecreaseLiquidityV2Event {
pub metadata: EventMetadata,
pub position_nft_mint: Pubkey,
pub liquidity: u128,
pub decrease_amount_0: u64,
pub decrease_amount_1: u64,
pub fee_amount_0: u64,
pub fee_amount_1: u64,
pub reward_amounts: [u64; 3],
pub transfer_fee_0: u64,
pub transfer_fee_1: u64,
pub amount0_min: u64,
pub amount1_min: u64,
pub nft_owner: Pubkey,
@@ -93,6 +112,8 @@ pub struct RaydiumClmmCollectFeeEvent {
pub metadata: EventMetadata,
pub pool_state: Pubkey,
pub position_nft_mint: Pubkey,
pub recipient_token_account_0: Pubkey,
pub recipient_token_account_1: Pubkey,
pub amount_0: u64,
pub amount_1: u64,
}
@@ -102,6 +123,8 @@ pub struct RaydiumClmmCollectFeeEvent {
pub struct RaydiumClmmCreatePoolEvent {
pub metadata: EventMetadata,
pub sqrt_price_x64: u128,
pub tick: i32,
pub tick_spacing: u16,
pub open_time: u64,
pub pool_creator: Pubkey,
pub amm_config: Pubkey,
@@ -122,7 +145,12 @@ pub struct RaydiumClmmCreatePoolEvent {
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmIncreaseLiquidityV2Event {
pub metadata: EventMetadata,
pub position_nft_mint: Pubkey,
pub liquidity: u128,
pub amount_0: u64,
pub amount_1: u64,
pub amount_0_transfer_fee: u64,
pub amount_1_transfer_fee: u64,
pub amount0_max: u64,
pub amount1_max: u64,
pub base_flag: Option<bool>,
@@ -143,6 +171,121 @@ pub struct RaydiumClmmIncreaseLiquidityV2Event {
pub vault1_mint: Pubkey,
}
/// 流动性变化
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmLiquidityChangeEvent {
pub metadata: EventMetadata,
pub pool_state: Pubkey,
pub tick: i32,
pub tick_lower: i32,
pub tick_upper: i32,
pub liquidity_before: u128,
pub liquidity_after: u128,
}
/// 配置变化
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmConfigChangeEvent {
pub metadata: EventMetadata,
pub index: u16,
pub owner: Pubkey,
pub protocol_fee_rate: u32,
pub trade_fee_rate: u32,
pub tick_spacing: u16,
pub fund_fee_rate: u32,
pub fund_owner: Pubkey,
}
/// 创建个人仓位
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmCreatePersonalPositionEvent {
pub metadata: EventMetadata,
pub pool_state: Pubkey,
pub minter: Pubkey,
pub nft_owner: Pubkey,
pub tick_lower_index: i32,
pub tick_upper_index: i32,
pub liquidity: u128,
pub deposit_amount_0: u64,
pub deposit_amount_1: u64,
pub deposit_amount_0_transfer_fee: u64,
pub deposit_amount_1_transfer_fee: u64,
}
/// 流动性计算
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmLiquidityCalculateEvent {
pub metadata: EventMetadata,
pub pool_liquidity: u128,
pub pool_sqrt_price_x64: u128,
pub pool_tick: i32,
pub calc_amount_0: u64,
pub calc_amount_1: u64,
pub trade_fee_owed_0: u64,
pub trade_fee_owed_1: u64,
pub transfer_fee_0: u64,
pub transfer_fee_1: u64,
}
/// 打开限价单
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmOpenLimitOrderEvent {
pub metadata: EventMetadata,
pub pool_id: Pubkey,
pub limit_order: Pubkey,
pub zero_for_one: bool,
pub tick_index: i32,
pub total_amount: u64,
pub transfer_fee: u64,
}
/// 增加限价单
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmIncreaseLimitOrderEvent {
pub metadata: EventMetadata,
pub pool_id: Pubkey,
pub limit_order: Pubkey,
pub zero_for_one: bool,
pub tick_index: i32,
pub total_amount: u64,
pub increased_amount: u64,
pub transfer_fee: u64,
}
/// 减少限价单
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmDecreaseLimitOrderEvent {
pub metadata: EventMetadata,
pub pool_id: Pubkey,
pub limit_order: Pubkey,
pub zero_for_one: bool,
pub tick_index: i32,
pub total_amount: u64,
pub filled_amount: u64,
pub settled_output_amount: u64,
pub decreased_amount: u64,
}
/// 结算限价单
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmSettleLimitOrderEvent {
pub metadata: EventMetadata,
pub pool_id: Pubkey,
pub limit_order: Pubkey,
pub zero_for_one: bool,
pub tick_index: i32,
pub total_amount: u64,
pub filled_amount: u64,
pub settled_amount_out: u64,
}
/// 更新奖励信息
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmUpdateRewardInfosEvent {
pub metadata: EventMetadata,
pub reward_growth_global_x64: [u128; 3],
}
/// 打开仓位v2
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
pub struct RaydiumClmmOpenPositionWithToken22NftEvent {
@@ -25,7 +25,7 @@ pub struct RewardInfo {
pub end_time: u64,
pub last_update_time: u64,
pub emissions_per_second_x64: u128,
pub reward_total_emissioned: u64,
pub reward_total_emitted: u64,
pub reward_claimed: u64,
pub token_mint: Pubkey,
pub token_vault: Pubkey,
@@ -33,18 +33,50 @@ pub struct RewardInfo {
pub reward_growth_global_x64: u128,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize, BorshDeserialize)]
pub struct DynamicFeeInfo {
pub filter_period: u16,
pub decay_period: u16,
pub reduction_factor: u16,
pub dynamic_fee_control: u32,
pub max_volatility_accumulator: u32,
pub tick_spacing_index_reference: i32,
pub volatility_reference: u32,
pub volatility_accumulator: u32,
pub last_update_timestamp: u64,
#[serde(with = "serde_big_array::BigArray")]
pub padding: [u8; 46],
}
impl Default for DynamicFeeInfo {
fn default() -> Self {
Self {
filter_period: 0,
decay_period: 0,
reduction_factor: 0,
dynamic_fee_control: 0,
max_volatility_accumulator: 0,
tick_spacing_index_reference: 0,
volatility_reference: 0,
volatility_accumulator: 0,
last_update_timestamp: 0,
padding: [0; 46],
}
}
}
#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize, BorshDeserialize)]
pub struct PoolState {
pub bump: [u8; 1],
pub amm_config: Pubkey,
pub owner: Pubkey,
pub token_mint0: Pubkey,
pub token_mint1: Pubkey,
pub token_vault0: Pubkey,
pub token_vault1: Pubkey,
pub token_mint_0: Pubkey,
pub token_mint_1: Pubkey,
pub token_vault_0: Pubkey,
pub token_vault_1: Pubkey,
pub observation_key: Pubkey,
pub mint_decimals0: u8,
pub mint_decimals1: u8,
pub mint_decimals_0: u8,
pub mint_decimals_1: u8,
pub tick_spacing: u16,
pub liquidity: u128,
pub sqrt_price_x64: u128,
@@ -55,23 +87,19 @@ pub struct PoolState {
pub fee_growth_global1_x64: u128,
pub protocol_fees_token0: u64,
pub protocol_fees_token1: u64,
pub swap_in_amount_token0: u128,
pub swap_out_amount_token1: u128,
pub swap_in_amount_token1: u128,
pub swap_out_amount_token0: u128,
pub padding5: [u128; 4],
pub status: u8,
pub padding: [u8; 7],
pub fee_on: u8,
pub padding: [u8; 6],
pub reward_infos: [RewardInfo; 3],
pub tick_array_bitmap: [u64; 16],
pub total_fees_token0: u64,
pub total_fees_claimed_token0: u64,
pub total_fees_token1: u64,
pub total_fees_claimed_token1: u64,
pub padding6: [u64; 4],
pub fund_fees_token0: u64,
pub fund_fees_token1: u64,
pub open_time: u64,
pub recent_epoch: u64,
pub padding1: [u64; 24],
pub dynamic_fee_info: DynamicFeeInfo,
pub padding1: [u64; 14],
pub padding2: [u64; 32],
}
@@ -85,7 +113,11 @@ pub struct TickState {
pub fee_growth_outside0_x64: u128,
pub fee_growth_outside1_x64: u128,
pub reward_growths_outside_x64: [u128; 3],
pub padding: [u32; 13],
pub order_phase: u64,
pub orders_amount: u64,
pub part_filled_orders_remaining: u64,
pub unfilled_ratio_x64: u128,
pub padding: [u32; 3],
}
impl Default for TickState {
@@ -97,7 +129,11 @@ impl Default for TickState {
fee_growth_outside0_x64: 0,
fee_growth_outside1_x64: 0,
reward_growths_outside_x64: [0; 3],
padding: [0; 13],
order_phase: 0,
orders_amount: 0,
part_filled_orders_remaining: 0,
unfilled_ratio_x64: 0,
padding: [0; 3],
}
}
}