dloom_flow/
events.rs

1// FILE: programs/dloom_flow/src/events.rs
2
3use anchor_lang::prelude::*;
4use crate::{ParameterAction, ParameterList};
5
6// --- AMM Events ---
7
8#[event]
9pub struct AmmPoolCreated {
10    pub pool_address: Pubkey,
11    pub token_a_mint: Pubkey,
12    pub token_b_mint: Pubkey,
13    pub lp_mint: Pubkey,
14    pub fee_rate: u16,
15}
16
17#[event]
18pub struct AmmFeesUpdated {
19    pub pool_address: Pubkey,
20    pub new_fee_rate: u16,
21}
22
23#[event]
24pub struct AmmLiquidityAdded {
25    pub pool_address: Pubkey,
26    pub user: Pubkey,
27    pub lp_tokens_minted: u64,
28    pub amount_a_deposited: u64,
29    pub amount_b_deposited: u64,
30}
31
32#[event]
33pub struct AmmLiquidityRemoved {
34    pub pool_address: Pubkey,
35    pub user: Pubkey,
36    pub lp_tokens_burned: u64,
37    pub amount_a_received: u64,
38    pub amount_b_received: u64,
39}
40
41#[event]
42pub struct AmmSwap {
43    pub pool_address: Pubkey,
44    pub trader: Pubkey,
45    pub input_mint: Pubkey,
46    pub output_mint: Pubkey,
47    pub amount_in: u64,
48    pub amount_out: u64,
49    pub protocol_fee: u64,
50    pub lp_fee: u64,
51    pub referrer: Option<Pubkey>,
52}
53
54#[event]
55pub struct AmmFeesClaimed {
56    pub pool_address: Pubkey,
57    pub user: Pubkey,
58    pub fees_claimed_a: u64,
59    pub fees_claimed_b: u64,
60}
61
62
63// --- DLMM Events ---
64
65#[event]
66pub struct DlmmPoolCreated {
67    pub pool_address: Pubkey,
68    pub token_a_mint: Pubkey,
69    pub token_b_mint: Pubkey,
70    pub bin_step: u16,
71    pub fee_rate: u16,
72}
73
74#[event]
75pub struct DlmmFeesUpdated {
76    pub pool_address: Pubkey,
77    pub new_fee_rate: u16,
78}
79
80#[event]
81pub struct DlmmPositionOpened {
82    pub pool_address: Pubkey,
83    pub owner: Pubkey,
84    pub position_address: Pubkey,
85    pub position_mint: Pubkey,
86    pub lower_bin_id: i32,
87    pub upper_bin_id: i32,
88}
89
90#[event]
91pub struct DlmmLiquidityUpdate {
92    pub position_address: Pubkey,
93    pub liquidity_added: i128, // Can be positive (add) or zero (for modify/remove)
94    pub amount_a: u64,
95    pub amount_b: u64,
96}
97
98#[event]
99pub struct DlmmSwapResult {
100    pub pool_address: Pubkey,
101    pub trader: Pubkey,
102    pub input_mint: Pubkey,
103    pub output_mint: Pubkey,
104    pub amount_in: u64,
105    pub amount_out: u64,
106    pub protocol_fee: u64,
107    // Note: LP fee in DLMM is implicitly part of the price improvement. We log the protocol fee.
108    pub final_active_bin_id: i32,
109    pub referrer: Option<Pubkey>,
110}
111
112#[event]
113pub struct DlmmPositionBurned {
114    pub position_address: Pubkey,
115    pub owner: Pubkey,
116}
117
118#[event]
119pub struct DlmmParametersUpdated {
120    pub list: ParameterList,
121    pub action: ParameterAction,
122    pub bin_step: u16,
123    pub fee_rate: u16,
124}
125
126#[event]
127pub struct DlmmLiquidityModified {
128    pub owner: Pubkey,
129    pub pool_address: Pubkey,
130    pub old_position_address: Pubkey,
131    pub new_position_address: Pubkey,
132    pub liquidity_to_move: u128,
133    pub surplus_a_out: u64,
134    pub surplus_b_out: u64,
135}