1use super::types::*;
2use once_cell::sync::Lazy;
3use serde::{Deserialize, Serialize};
4use solana_sdk::signature::Signature;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
10#[non_exhaustive]
11pub enum DexEvent {
12 PumpFunCreate(PumpFunCreateTokenEvent), PumpFunCreateV2(PumpFunCreateV2TokenEvent), PumpFunTrade(PumpFunTradeEvent), PumpFunBuy(PumpFunTradeEvent), PumpFunSell(PumpFunTradeEvent), PumpFunBuyExactSolIn(PumpFunTradeEvent), PumpFunMigrate(PumpFunMigrateEvent), PumpFeesCreateFeeSharingConfig(PumpFeesCreateFeeSharingConfigEvent),
22 PumpFeesInitializeFeeConfig(PumpFeesInitializeFeeConfigEvent),
23 PumpFeesResetFeeSharingConfig(PumpFeesResetFeeSharingConfigEvent),
24 PumpFeesRevokeFeeSharingAuthority(PumpFeesRevokeFeeSharingAuthorityEvent),
25 PumpFeesTransferFeeSharingAuthority(PumpFeesTransferFeeSharingAuthorityEvent),
26 PumpFeesUpdateAdmin(PumpFeesUpdateAdminEvent),
27 PumpFeesUpdateFeeConfig(PumpFeesUpdateFeeConfigEvent),
28 PumpFeesUpdateFeeShares(PumpFeesUpdateFeeSharesEvent),
29 PumpFeesUpsertFeeTiers(PumpFeesUpsertFeeTiersEvent),
30 PumpFunMigrateBondingCurveCreator(PumpFunMigrateBondingCurveCreatorEvent),
32 PumpFunGlobalAccount(PumpFunGlobalAccountEvent), PumpFunBondingCurveAccount(PumpFunBondingCurveAccountEvent),
34 PumpFunFeeConfigAccount(PumpFunFeeConfigAccountEvent),
35 PumpFunSharingConfigAccount(PumpFunSharingConfigAccountEvent),
36 PumpFunGlobalVolumeAccumulatorAccount(PumpFunGlobalVolumeAccumulatorAccountEvent),
37 PumpFunUserVolumeAccumulatorAccount(PumpFunUserVolumeAccumulatorAccountEvent),
38 PumpSwapTrade(PumpSwapTradeEvent), PumpSwapBuy(PumpSwapBuyEvent), PumpSwapSell(PumpSwapSellEvent), PumpSwapCreatePool(PumpSwapCreatePoolEvent), PumpSwapLiquidityAdded(PumpSwapLiquidityAdded), PumpSwapLiquidityRemoved(PumpSwapLiquidityRemoved), MeteoraDammV2Swap(MeteoraDammV2SwapEvent), MeteoraDammV2CreatePosition(MeteoraDammV2CreatePositionEvent), MeteoraDammV2ClosePosition(MeteoraDammV2ClosePositionEvent), MeteoraDammV2AddLiquidity(MeteoraDammV2AddLiquidityEvent), MeteoraDammV2RemoveLiquidity(MeteoraDammV2RemoveLiquidityEvent), BonkTrade(BonkTradeEvent),
54 BonkPoolCreate(BonkPoolCreateEvent),
55 BonkMigrateAmm(BonkMigrateAmmEvent),
56
57 RaydiumClmmSwap(RaydiumClmmSwapEvent),
59 RaydiumClmmCreatePool(RaydiumClmmCreatePoolEvent),
60 RaydiumClmmOpenPosition(RaydiumClmmOpenPositionEvent),
61 RaydiumClmmOpenPositionWithTokenExtNft(RaydiumClmmOpenPositionWithTokenExtNftEvent),
62 RaydiumClmmClosePosition(RaydiumClmmClosePositionEvent),
63 RaydiumClmmIncreaseLiquidity(RaydiumClmmIncreaseLiquidityEvent),
64 RaydiumClmmDecreaseLiquidity(RaydiumClmmDecreaseLiquidityEvent),
65 RaydiumClmmLiquidityChange(RaydiumClmmLiquidityChangeEvent),
66 RaydiumClmmConfigChange(RaydiumClmmConfigChangeEvent),
67 RaydiumClmmCreatePersonalPosition(RaydiumClmmCreatePersonalPositionEvent),
68 RaydiumClmmLiquidityCalculate(RaydiumClmmLiquidityCalculateEvent),
69 RaydiumClmmOpenLimitOrder(RaydiumClmmOpenLimitOrderEvent),
70 RaydiumClmmIncreaseLimitOrder(RaydiumClmmIncreaseLimitOrderEvent),
71 RaydiumClmmDecreaseLimitOrder(RaydiumClmmDecreaseLimitOrderEvent),
72 RaydiumClmmSettleLimitOrder(RaydiumClmmSettleLimitOrderEvent),
73 RaydiumClmmUpdateRewardInfos(RaydiumClmmUpdateRewardInfosEvent),
74 RaydiumClmmCollectFee(RaydiumClmmCollectFeeEvent),
75 RaydiumClmmAmmConfigAccount(RaydiumClmmAmmConfigAccountEvent),
76 RaydiumClmmPoolStateAccount(RaydiumClmmPoolStateAccountEvent),
77 RaydiumClmmTickArrayStateAccount(RaydiumClmmTickArrayStateAccountEvent),
78
79 RaydiumCpmmSwap(RaydiumCpmmSwapEvent),
81 RaydiumCpmmDeposit(RaydiumCpmmDepositEvent),
82 RaydiumCpmmWithdraw(RaydiumCpmmWithdrawEvent),
83 RaydiumCpmmInitialize(RaydiumCpmmInitializeEvent),
84
85 RaydiumAmmV4Swap(RaydiumAmmV4SwapEvent),
87 RaydiumAmmV4Deposit(RaydiumAmmV4DepositEvent),
88 RaydiumAmmV4Initialize2(RaydiumAmmV4Initialize2Event),
89 RaydiumAmmV4Withdraw(RaydiumAmmV4WithdrawEvent),
90 RaydiumAmmV4WithdrawPnl(RaydiumAmmV4WithdrawPnlEvent),
91
92 OrcaWhirlpoolSwap(OrcaWhirlpoolSwapEvent),
94 OrcaWhirlpoolLiquidityIncreased(OrcaWhirlpoolLiquidityIncreasedEvent),
95 OrcaWhirlpoolLiquidityDecreased(OrcaWhirlpoolLiquidityDecreasedEvent),
96 OrcaWhirlpoolPoolInitialized(OrcaWhirlpoolPoolInitializedEvent),
97
98 MeteoraPoolsSwap(MeteoraPoolsSwapEvent),
100 MeteoraPoolsAddLiquidity(MeteoraPoolsAddLiquidityEvent),
101 MeteoraPoolsRemoveLiquidity(MeteoraPoolsRemoveLiquidityEvent),
102 MeteoraPoolsBootstrapLiquidity(MeteoraPoolsBootstrapLiquidityEvent),
103 MeteoraPoolsPoolCreated(MeteoraPoolsPoolCreatedEvent),
104 MeteoraPoolsSetPoolFees(MeteoraPoolsSetPoolFeesEvent),
105
106 MeteoraDlmmSwap(MeteoraDlmmSwapEvent),
108 MeteoraDlmmAddLiquidity(MeteoraDlmmAddLiquidityEvent),
109 MeteoraDlmmRemoveLiquidity(MeteoraDlmmRemoveLiquidityEvent),
110 MeteoraDlmmInitializePool(MeteoraDlmmInitializePoolEvent),
111 MeteoraDlmmInitializeBinArray(MeteoraDlmmInitializeBinArrayEvent),
112 MeteoraDlmmCreatePosition(MeteoraDlmmCreatePositionEvent),
113 MeteoraDlmmClosePosition(MeteoraDlmmClosePositionEvent),
114 MeteoraDlmmClaimFee(MeteoraDlmmClaimFeeEvent),
115
116 TokenInfo(TokenInfoEvent), TokenAccount(TokenAccountEvent), NonceAccount(NonceAccountEvent), PumpSwapGlobalConfigAccount(PumpSwapGlobalConfigAccountEvent), PumpSwapPoolAccount(PumpSwapPoolAccountEvent), BlockMeta(BlockMetaEvent),
125
126 Error(String),
128}
129
130static DEFAULT_METADATA: Lazy<EventMetadata> = Lazy::new(|| EventMetadata {
132 signature: Signature::from([0u8; 64]),
133 slot: 0,
134 tx_index: 0,
135 block_time_us: 0,
136 grpc_recv_us: 0,
137 recent_blockhash: None,
138});
139
140impl DexEvent {
141 pub fn metadata(&self) -> &EventMetadata {
143 match self {
144 DexEvent::PumpFunCreate(e) => &e.metadata,
146 DexEvent::PumpFunCreateV2(e) => &e.metadata,
147 DexEvent::PumpFunTrade(e) => &e.metadata,
148 DexEvent::PumpFunBuy(e) => &e.metadata,
149 DexEvent::PumpFunSell(e) => &e.metadata,
150 DexEvent::PumpFunBuyExactSolIn(e) => &e.metadata,
151 DexEvent::PumpFunMigrate(e) => &e.metadata,
152 DexEvent::PumpFeesCreateFeeSharingConfig(e) => &e.metadata,
153 DexEvent::PumpFeesInitializeFeeConfig(e) => &e.metadata,
154 DexEvent::PumpFeesResetFeeSharingConfig(e) => &e.metadata,
155 DexEvent::PumpFeesRevokeFeeSharingAuthority(e) => &e.metadata,
156 DexEvent::PumpFeesTransferFeeSharingAuthority(e) => &e.metadata,
157 DexEvent::PumpFeesUpdateAdmin(e) => &e.metadata,
158 DexEvent::PumpFeesUpdateFeeConfig(e) => &e.metadata,
159 DexEvent::PumpFeesUpdateFeeShares(e) => &e.metadata,
160 DexEvent::PumpFeesUpsertFeeTiers(e) => &e.metadata,
161 DexEvent::PumpFunMigrateBondingCurveCreator(e) => &e.metadata,
162 DexEvent::PumpFunGlobalAccount(e) => &e.metadata,
163 DexEvent::PumpFunBondingCurveAccount(e) => &e.metadata,
164 DexEvent::PumpFunFeeConfigAccount(e) => &e.metadata,
165 DexEvent::PumpFunSharingConfigAccount(e) => &e.metadata,
166 DexEvent::PumpFunGlobalVolumeAccumulatorAccount(e) => &e.metadata,
167 DexEvent::PumpFunUserVolumeAccumulatorAccount(e) => &e.metadata,
168
169 DexEvent::PumpSwapTrade(e) => &e.metadata,
171 DexEvent::PumpSwapBuy(e) => &e.metadata,
172 DexEvent::PumpSwapSell(e) => &e.metadata,
173 DexEvent::PumpSwapCreatePool(e) => &e.metadata,
174 DexEvent::PumpSwapLiquidityAdded(e) => &e.metadata,
175 DexEvent::PumpSwapLiquidityRemoved(e) => &e.metadata,
176
177 DexEvent::MeteoraDammV2Swap(e) => &e.metadata,
179 DexEvent::MeteoraDammV2CreatePosition(e) => &e.metadata,
180 DexEvent::MeteoraDammV2ClosePosition(e) => &e.metadata,
181 DexEvent::MeteoraDammV2AddLiquidity(e) => &e.metadata,
182 DexEvent::MeteoraDammV2RemoveLiquidity(e) => &e.metadata,
183
184 DexEvent::BonkTrade(e) => &e.metadata,
186 DexEvent::BonkPoolCreate(e) => &e.metadata,
187 DexEvent::BonkMigrateAmm(e) => &e.metadata,
188
189 DexEvent::RaydiumClmmSwap(e) => &e.metadata,
191 DexEvent::RaydiumClmmCreatePool(e) => &e.metadata,
192 DexEvent::RaydiumClmmOpenPosition(e) => &e.metadata,
193 DexEvent::RaydiumClmmOpenPositionWithTokenExtNft(e) => &e.metadata,
194 DexEvent::RaydiumClmmClosePosition(e) => &e.metadata,
195 DexEvent::RaydiumClmmIncreaseLiquidity(e) => &e.metadata,
196 DexEvent::RaydiumClmmDecreaseLiquidity(e) => &e.metadata,
197 DexEvent::RaydiumClmmLiquidityChange(e) => &e.metadata,
198 DexEvent::RaydiumClmmConfigChange(e) => &e.metadata,
199 DexEvent::RaydiumClmmCreatePersonalPosition(e) => &e.metadata,
200 DexEvent::RaydiumClmmLiquidityCalculate(e) => &e.metadata,
201 DexEvent::RaydiumClmmOpenLimitOrder(e) => &e.metadata,
202 DexEvent::RaydiumClmmIncreaseLimitOrder(e) => &e.metadata,
203 DexEvent::RaydiumClmmDecreaseLimitOrder(e) => &e.metadata,
204 DexEvent::RaydiumClmmSettleLimitOrder(e) => &e.metadata,
205 DexEvent::RaydiumClmmUpdateRewardInfos(e) => &e.metadata,
206 DexEvent::RaydiumClmmCollectFee(e) => &e.metadata,
207 DexEvent::RaydiumClmmAmmConfigAccount(e) => &e.metadata,
208 DexEvent::RaydiumClmmPoolStateAccount(e) => &e.metadata,
209 DexEvent::RaydiumClmmTickArrayStateAccount(e) => &e.metadata,
210
211 DexEvent::RaydiumCpmmSwap(e) => &e.metadata,
213 DexEvent::RaydiumCpmmDeposit(e) => &e.metadata,
214 DexEvent::RaydiumCpmmWithdraw(e) => &e.metadata,
215 DexEvent::RaydiumCpmmInitialize(e) => &e.metadata,
216
217 DexEvent::RaydiumAmmV4Swap(e) => &e.metadata,
219 DexEvent::RaydiumAmmV4Deposit(e) => &e.metadata,
220 DexEvent::RaydiumAmmV4Initialize2(e) => &e.metadata,
221 DexEvent::RaydiumAmmV4Withdraw(e) => &e.metadata,
222 DexEvent::RaydiumAmmV4WithdrawPnl(e) => &e.metadata,
223
224 DexEvent::OrcaWhirlpoolSwap(e) => &e.metadata,
226 DexEvent::OrcaWhirlpoolLiquidityIncreased(e) => &e.metadata,
227 DexEvent::OrcaWhirlpoolLiquidityDecreased(e) => &e.metadata,
228 DexEvent::OrcaWhirlpoolPoolInitialized(e) => &e.metadata,
229
230 DexEvent::MeteoraPoolsSwap(e) => &e.metadata,
232 DexEvent::MeteoraPoolsAddLiquidity(e) => &e.metadata,
233 DexEvent::MeteoraPoolsRemoveLiquidity(e) => &e.metadata,
234 DexEvent::MeteoraPoolsBootstrapLiquidity(e) => &e.metadata,
235 DexEvent::MeteoraPoolsPoolCreated(e) => &e.metadata,
236 DexEvent::MeteoraPoolsSetPoolFees(e) => &e.metadata,
237
238 DexEvent::MeteoraDlmmSwap(e) => &e.metadata,
240 DexEvent::MeteoraDlmmAddLiquidity(e) => &e.metadata,
241 DexEvent::MeteoraDlmmRemoveLiquidity(e) => &e.metadata,
242 DexEvent::MeteoraDlmmInitializePool(e) => &e.metadata,
243 DexEvent::MeteoraDlmmInitializeBinArray(e) => &e.metadata,
244 DexEvent::MeteoraDlmmCreatePosition(e) => &e.metadata,
245 DexEvent::MeteoraDlmmClosePosition(e) => &e.metadata,
246 DexEvent::MeteoraDlmmClaimFee(e) => &e.metadata,
247
248 DexEvent::TokenInfo(e) => &e.metadata,
250 DexEvent::TokenAccount(e) => &e.metadata,
251 DexEvent::NonceAccount(e) => &e.metadata,
252 DexEvent::PumpSwapGlobalConfigAccount(e) => &e.metadata,
253 DexEvent::PumpSwapPoolAccount(e) => &e.metadata,
254
255 DexEvent::BlockMeta(e) => &e.metadata,
257
258 DexEvent::Error(_) => &DEFAULT_METADATA,
260 }
261 }
262
263 pub fn metadata_mut(&mut self) -> Option<&mut EventMetadata> {
265 match self {
266 DexEvent::PumpFunCreate(e) => Some(&mut e.metadata),
267 DexEvent::PumpFunCreateV2(e) => Some(&mut e.metadata),
268 DexEvent::PumpFunTrade(e) => Some(&mut e.metadata),
269 DexEvent::PumpFunBuy(e) => Some(&mut e.metadata),
270 DexEvent::PumpFunSell(e) => Some(&mut e.metadata),
271 DexEvent::PumpFunBuyExactSolIn(e) => Some(&mut e.metadata),
272 DexEvent::PumpFunMigrate(e) => Some(&mut e.metadata),
273 DexEvent::PumpFeesCreateFeeSharingConfig(e) => Some(&mut e.metadata),
274 DexEvent::PumpFeesInitializeFeeConfig(e) => Some(&mut e.metadata),
275 DexEvent::PumpFeesResetFeeSharingConfig(e) => Some(&mut e.metadata),
276 DexEvent::PumpFeesRevokeFeeSharingAuthority(e) => Some(&mut e.metadata),
277 DexEvent::PumpFeesTransferFeeSharingAuthority(e) => Some(&mut e.metadata),
278 DexEvent::PumpFeesUpdateAdmin(e) => Some(&mut e.metadata),
279 DexEvent::PumpFeesUpdateFeeConfig(e) => Some(&mut e.metadata),
280 DexEvent::PumpFeesUpdateFeeShares(e) => Some(&mut e.metadata),
281 DexEvent::PumpFeesUpsertFeeTiers(e) => Some(&mut e.metadata),
282 DexEvent::PumpFunMigrateBondingCurveCreator(e) => Some(&mut e.metadata),
283 DexEvent::PumpFunGlobalAccount(e) => Some(&mut e.metadata),
284 DexEvent::PumpFunBondingCurveAccount(e) => Some(&mut e.metadata),
285 DexEvent::PumpFunFeeConfigAccount(e) => Some(&mut e.metadata),
286 DexEvent::PumpFunSharingConfigAccount(e) => Some(&mut e.metadata),
287 DexEvent::PumpFunGlobalVolumeAccumulatorAccount(e) => Some(&mut e.metadata),
288 DexEvent::PumpFunUserVolumeAccumulatorAccount(e) => Some(&mut e.metadata),
289 DexEvent::PumpSwapTrade(e) => Some(&mut e.metadata),
290 DexEvent::PumpSwapBuy(e) => Some(&mut e.metadata),
291 DexEvent::PumpSwapSell(e) => Some(&mut e.metadata),
292 DexEvent::PumpSwapCreatePool(e) => Some(&mut e.metadata),
293 DexEvent::PumpSwapLiquidityAdded(e) => Some(&mut e.metadata),
294 DexEvent::PumpSwapLiquidityRemoved(e) => Some(&mut e.metadata),
295 DexEvent::MeteoraDammV2Swap(e) => Some(&mut e.metadata),
296 DexEvent::MeteoraDammV2CreatePosition(e) => Some(&mut e.metadata),
297 DexEvent::MeteoraDammV2ClosePosition(e) => Some(&mut e.metadata),
298 DexEvent::MeteoraDammV2AddLiquidity(e) => Some(&mut e.metadata),
299 DexEvent::MeteoraDammV2RemoveLiquidity(e) => Some(&mut e.metadata),
300 DexEvent::BonkTrade(e) => Some(&mut e.metadata),
301 DexEvent::BonkPoolCreate(e) => Some(&mut e.metadata),
302 DexEvent::BonkMigrateAmm(e) => Some(&mut e.metadata),
303 DexEvent::RaydiumClmmSwap(e) => Some(&mut e.metadata),
304 DexEvent::RaydiumClmmCreatePool(e) => Some(&mut e.metadata),
305 DexEvent::RaydiumClmmOpenPosition(e) => Some(&mut e.metadata),
306 DexEvent::RaydiumClmmOpenPositionWithTokenExtNft(e) => Some(&mut e.metadata),
307 DexEvent::RaydiumClmmClosePosition(e) => Some(&mut e.metadata),
308 DexEvent::RaydiumClmmIncreaseLiquidity(e) => Some(&mut e.metadata),
309 DexEvent::RaydiumClmmDecreaseLiquidity(e) => Some(&mut e.metadata),
310 DexEvent::RaydiumClmmLiquidityChange(e) => Some(&mut e.metadata),
311 DexEvent::RaydiumClmmConfigChange(e) => Some(&mut e.metadata),
312 DexEvent::RaydiumClmmCreatePersonalPosition(e) => Some(&mut e.metadata),
313 DexEvent::RaydiumClmmLiquidityCalculate(e) => Some(&mut e.metadata),
314 DexEvent::RaydiumClmmOpenLimitOrder(e) => Some(&mut e.metadata),
315 DexEvent::RaydiumClmmIncreaseLimitOrder(e) => Some(&mut e.metadata),
316 DexEvent::RaydiumClmmDecreaseLimitOrder(e) => Some(&mut e.metadata),
317 DexEvent::RaydiumClmmSettleLimitOrder(e) => Some(&mut e.metadata),
318 DexEvent::RaydiumClmmUpdateRewardInfos(e) => Some(&mut e.metadata),
319 DexEvent::RaydiumClmmCollectFee(e) => Some(&mut e.metadata),
320 DexEvent::RaydiumClmmAmmConfigAccount(e) => Some(&mut e.metadata),
321 DexEvent::RaydiumClmmPoolStateAccount(e) => Some(&mut e.metadata),
322 DexEvent::RaydiumClmmTickArrayStateAccount(e) => Some(&mut e.metadata),
323 DexEvent::RaydiumCpmmSwap(e) => Some(&mut e.metadata),
324 DexEvent::RaydiumCpmmDeposit(e) => Some(&mut e.metadata),
325 DexEvent::RaydiumCpmmWithdraw(e) => Some(&mut e.metadata),
326 DexEvent::RaydiumCpmmInitialize(e) => Some(&mut e.metadata),
327 DexEvent::RaydiumAmmV4Swap(e) => Some(&mut e.metadata),
328 DexEvent::RaydiumAmmV4Deposit(e) => Some(&mut e.metadata),
329 DexEvent::RaydiumAmmV4Initialize2(e) => Some(&mut e.metadata),
330 DexEvent::RaydiumAmmV4Withdraw(e) => Some(&mut e.metadata),
331 DexEvent::RaydiumAmmV4WithdrawPnl(e) => Some(&mut e.metadata),
332 DexEvent::OrcaWhirlpoolSwap(e) => Some(&mut e.metadata),
333 DexEvent::OrcaWhirlpoolLiquidityIncreased(e) => Some(&mut e.metadata),
334 DexEvent::OrcaWhirlpoolLiquidityDecreased(e) => Some(&mut e.metadata),
335 DexEvent::OrcaWhirlpoolPoolInitialized(e) => Some(&mut e.metadata),
336 DexEvent::MeteoraPoolsSwap(e) => Some(&mut e.metadata),
337 DexEvent::MeteoraPoolsAddLiquidity(e) => Some(&mut e.metadata),
338 DexEvent::MeteoraPoolsRemoveLiquidity(e) => Some(&mut e.metadata),
339 DexEvent::MeteoraPoolsBootstrapLiquidity(e) => Some(&mut e.metadata),
340 DexEvent::MeteoraPoolsPoolCreated(e) => Some(&mut e.metadata),
341 DexEvent::MeteoraPoolsSetPoolFees(e) => Some(&mut e.metadata),
342 DexEvent::MeteoraDlmmSwap(e) => Some(&mut e.metadata),
343 DexEvent::MeteoraDlmmAddLiquidity(e) => Some(&mut e.metadata),
344 DexEvent::MeteoraDlmmRemoveLiquidity(e) => Some(&mut e.metadata),
345 DexEvent::MeteoraDlmmInitializePool(e) => Some(&mut e.metadata),
346 DexEvent::MeteoraDlmmInitializeBinArray(e) => Some(&mut e.metadata),
347 DexEvent::MeteoraDlmmCreatePosition(e) => Some(&mut e.metadata),
348 DexEvent::MeteoraDlmmClosePosition(e) => Some(&mut e.metadata),
349 DexEvent::MeteoraDlmmClaimFee(e) => Some(&mut e.metadata),
350 DexEvent::TokenInfo(e) => Some(&mut e.metadata),
351 DexEvent::TokenAccount(e) => Some(&mut e.metadata),
352 DexEvent::NonceAccount(e) => Some(&mut e.metadata),
353 DexEvent::PumpSwapGlobalConfigAccount(e) => Some(&mut e.metadata),
354 DexEvent::PumpSwapPoolAccount(e) => Some(&mut e.metadata),
355 DexEvent::BlockMeta(e) => Some(&mut e.metadata),
356 DexEvent::Error(_) => None,
357 }
358 }
359}