carbon-drift-v2-decoder 0.12.0

Drift v2 Decoder
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
use crate::PROGRAM_ID;

use super::DriftDecoder;
pub mod add_insurance_fund_stake;
pub mod add_perp_lp_shares;
pub mod admin_disable_update_perp_bid_ask_twap;
pub mod begin_swap;
pub mod cancel_order;
pub mod cancel_order_by_user_id;
pub mod cancel_orders;
pub mod cancel_orders_by_ids;
pub mod cancel_request_remove_insurance_fund_stake;
pub mod curve_record_event;
pub mod delete_initialized_perp_market;
pub mod delete_initialized_spot_market;
pub mod delete_prelaunch_oracle;
pub mod delete_signed_msg_user_orders;
pub mod delete_user;
pub mod delete_user_record_event;
pub mod deposit;
pub mod deposit_into_perp_market_fee_pool;
pub mod deposit_into_spot_market_revenue_pool;
pub mod deposit_into_spot_market_vault;
pub mod deposit_record_event;
pub mod disable_user_high_leverage_mode;
pub mod enable_user_high_leverage_mode;
pub mod end_swap;
pub mod fill_perp_order;
pub mod fill_spot_order;
pub mod force_cancel_orders;
pub mod force_delete_user;
pub mod fuel_season_record_event;
pub mod fuel_sweep_record_event;
pub mod funding_payment_record_event;
pub mod funding_rate_record_event;
pub mod init_user_fuel;
pub mod initialize;
pub mod initialize_fuel_overflow;
pub mod initialize_high_leverage_mode_config;
pub mod initialize_insurance_fund_stake;
pub mod initialize_openbook_v2_fulfillment_config;
pub mod initialize_perp_market;
pub mod initialize_phoenix_fulfillment_config;
pub mod initialize_prediction_market;
pub mod initialize_prelaunch_oracle;
pub mod initialize_protected_maker_mode_config;
pub mod initialize_protocol_if_shares_transfer_config;
pub mod initialize_pyth_lazer_oracle;
pub mod initialize_pyth_pull_oracle;
pub mod initialize_referrer_name;
pub mod initialize_serum_fulfillment_config;
pub mod initialize_signed_msg_user_orders;
pub mod initialize_spot_market;
pub mod initialize_user;
pub mod initialize_user_stats;
pub mod insurance_fund_record_event;
pub mod insurance_fund_stake_record_event;
pub mod liquidate_borrow_for_perp_pnl;
pub mod liquidate_perp;
pub mod liquidate_perp_pnl_for_deposit;
pub mod liquidate_perp_with_fill;
pub mod liquidate_spot;
pub mod liquidate_spot_with_swap_begin;
pub mod liquidate_spot_with_swap_end;
pub mod liquidation_record_event;
pub mod log_user_balances;
pub mod lp_record_event;
pub mod modify_order;
pub mod modify_order_by_user_id;
pub mod move_amm_price;
pub mod new_user_record_event;
pub mod openbook_v2_fulfillment_config_status;
pub mod order_action_record_event;
pub mod order_record_event;
pub mod pause_spot_market_deposit_withdraw;
pub mod phoenix_fulfillment_config_status;
pub mod place_and_make_perp_order;
pub mod place_and_make_signed_msg_perp_order;
pub mod place_and_make_spot_order;
pub mod place_and_take_perp_order;
pub mod place_and_take_spot_order;
pub mod place_orders;
pub mod place_perp_order;
pub mod place_signed_msg_taker_order;
pub mod place_spot_order;
pub mod post_multi_pyth_pull_oracle_updates_atomic;
pub mod post_pyth_lazer_oracle_update;
pub mod post_pyth_pull_oracle_update_atomic;
pub mod recenter_perp_market_amm;
pub mod reclaim_rent;
pub mod remove_insurance_fund_stake;
pub mod remove_perp_lp_shares;
pub mod remove_perp_lp_shares_in_expiring_market;
pub mod repeg_amm_curve;
pub mod request_remove_insurance_fund_stake;
pub mod reset_fuel_season;
pub mod reset_perp_market_amm_oracle_twap;
pub mod resize_signed_msg_user_orders;
pub mod resolve_perp_bankruptcy;
pub mod resolve_perp_pnl_deficit;
pub mod resolve_spot_bankruptcy;
pub mod revert_fill;
pub mod set_user_status_to_being_liquidated;
pub mod settle_expired_market;
pub mod settle_expired_market_pools_to_revenue_pool;
pub mod settle_funding_payment;
pub mod settle_lp;
pub mod settle_multiple_pnls;
pub mod settle_pnl;
pub mod settle_pnl_record_event;
pub mod settle_revenue_to_insurance_fund;
pub mod signed_msg_order_record_event;
pub mod spot_interest_record_event;
pub mod spot_market_vault_deposit_record_event;
pub mod swap_record_event;
pub mod sweep_fuel;
pub mod transfer_deposit;
pub mod transfer_pools;
pub mod transfer_protocol_if_shares;
pub mod trigger_order;
pub mod update_admin;
pub mod update_amm_jit_intensity;
pub mod update_amms;
pub mod update_discount_mint;
pub mod update_exchange_status;
pub mod update_funding_rate;
pub mod update_high_leverage_mode_config;
pub mod update_initial_pct_to_liquidate;
pub mod update_insurance_fund_unstaking_period;
pub mod update_k;
pub mod update_liquidation_duration;
pub mod update_liquidation_margin_buffer_ratio;
pub mod update_lp_cooldown_time;
pub mod update_oracle_guard_rails;
pub mod update_perp_auction_duration;
pub mod update_perp_bid_ask_twap;
pub mod update_perp_fee_structure;
pub mod update_perp_market_amm_oracle_twap;
pub mod update_perp_market_amm_summary_stats;
pub mod update_perp_market_base_spread;
pub mod update_perp_market_concentration_coef;
pub mod update_perp_market_contract_tier;
pub mod update_perp_market_curve_update_intensity;
pub mod update_perp_market_expiry;
pub mod update_perp_market_fee_adjustment;
pub mod update_perp_market_fuel;
pub mod update_perp_market_funding_period;
pub mod update_perp_market_high_leverage_margin_ratio;
pub mod update_perp_market_imf_factor;
pub mod update_perp_market_liquidation_fee;
pub mod update_perp_market_margin_ratio;
pub mod update_perp_market_max_fill_reserve_fraction;
pub mod update_perp_market_max_imbalances;
pub mod update_perp_market_max_open_interest;
pub mod update_perp_market_max_slippage_ratio;
pub mod update_perp_market_max_spread;
pub mod update_perp_market_min_order_size;
pub mod update_perp_market_name;
pub mod update_perp_market_number_of_users;
pub mod update_perp_market_oracle;
pub mod update_perp_market_paused_operations;
pub mod update_perp_market_per_lp_base;
pub mod update_perp_market_status;
pub mod update_perp_market_step_size_and_tick_size;
pub mod update_perp_market_target_base_asset_amount_per_lp;
pub mod update_perp_market_unrealized_asset_weight;
pub mod update_prelaunch_oracle;
pub mod update_prelaunch_oracle_params;
pub mod update_protected_maker_mode_config;
pub mod update_protocol_if_shares_transfer_config;
pub mod update_pyth_pull_oracle;
pub mod update_serum_fulfillment_config_status;
pub mod update_serum_vault;
pub mod update_spot_auction_duration;
pub mod update_spot_fee_structure;
pub mod update_spot_market_asset_tier;
pub mod update_spot_market_borrow_rate;
pub mod update_spot_market_cumulative_interest;
pub mod update_spot_market_expiry;
pub mod update_spot_market_fee_adjustment;
pub mod update_spot_market_fuel;
pub mod update_spot_market_if_factor;
pub mod update_spot_market_if_paused_operations;
pub mod update_spot_market_liquidation_fee;
pub mod update_spot_market_margin_weights;
pub mod update_spot_market_max_token_borrows;
pub mod update_spot_market_max_token_deposits;
pub mod update_spot_market_min_order_size;
pub mod update_spot_market_name;
pub mod update_spot_market_oracle;
pub mod update_spot_market_orders_enabled;
pub mod update_spot_market_paused_operations;
pub mod update_spot_market_pool_id;
pub mod update_spot_market_revenue_settle_period;
pub mod update_spot_market_scale_initial_asset_weight_start;
pub mod update_spot_market_status;
pub mod update_spot_market_step_size_and_tick_size;
pub mod update_state_max_initialize_user_fee;
pub mod update_state_max_number_of_sub_accounts;
pub mod update_state_settlement_duration;
pub mod update_user_advanced_lp;
pub mod update_user_custom_margin_ratio;
pub mod update_user_delegate;
pub mod update_user_fuel_bonus;
pub mod update_user_gov_token_insurance_stake;
pub mod update_user_gov_token_insurance_stake_devnet;
pub mod update_user_idle;
pub mod update_user_margin_trading_enabled;
pub mod update_user_name;
pub mod update_user_open_orders_count;
pub mod update_user_pool_id;
pub mod update_user_protected_maker_orders;
pub mod update_user_quote_asset_insurance_stake;
pub mod update_user_reduce_only;
pub mod update_user_stats_referrer_status;
pub mod update_whitelist_mint;
pub mod update_withdraw_guard_threshold;
pub mod withdraw;

#[allow(clippy::large_enum_variant)]
#[derive(
    carbon_core::InstructionType,
    serde::Serialize,
    serde::Deserialize,
    PartialEq,
    Eq,
    Debug,
    Clone,
    Hash,
)]
pub enum DriftInstruction {
    InitializeUser(initialize_user::InitializeUser),
    InitializeUserStats(initialize_user_stats::InitializeUserStats),
    InitializeSignedMsgUserOrders(initialize_signed_msg_user_orders::InitializeSignedMsgUserOrders),
    ResizeSignedMsgUserOrders(resize_signed_msg_user_orders::ResizeSignedMsgUserOrders),
    InitializeFuelOverflow(initialize_fuel_overflow::InitializeFuelOverflow),
    SweepFuel(sweep_fuel::SweepFuel),
    ResetFuelSeason(reset_fuel_season::ResetFuelSeason),
    InitializeReferrerName(initialize_referrer_name::InitializeReferrerName),
    Deposit(deposit::Deposit),
    Withdraw(withdraw::Withdraw),
    TransferDeposit(transfer_deposit::TransferDeposit),
    TransferPools(transfer_pools::TransferPools),
    PlacePerpOrder(place_perp_order::PlacePerpOrder),
    CancelOrder(cancel_order::CancelOrder),
    CancelOrderByUserId(cancel_order_by_user_id::CancelOrderByUserId),
    CancelOrders(cancel_orders::CancelOrders),
    CancelOrdersByIds(cancel_orders_by_ids::CancelOrdersByIds),
    ModifyOrder(modify_order::ModifyOrder),
    ModifyOrderByUserId(modify_order_by_user_id::ModifyOrderByUserId),
    PlaceAndTakePerpOrder(place_and_take_perp_order::PlaceAndTakePerpOrder),
    PlaceAndMakePerpOrder(place_and_make_perp_order::PlaceAndMakePerpOrder),
    PlaceAndMakeSignedMsgPerpOrder(place_and_make_signed_msg_perp_order::PlaceAndMakeSignedMsgPerpOrder),
    PlaceSignedMsgTakerOrder(place_signed_msg_taker_order::PlaceSignedMsgTakerOrder),
    PlaceSpotOrder(place_spot_order::PlaceSpotOrder),
    PlaceAndTakeSpotOrder(place_and_take_spot_order::PlaceAndTakeSpotOrder),
    PlaceAndMakeSpotOrder(place_and_make_spot_order::PlaceAndMakeSpotOrder),
    PlaceOrders(place_orders::PlaceOrders),
    BeginSwap(begin_swap::BeginSwap),
    EndSwap(end_swap::EndSwap),
    AddPerpLpShares(add_perp_lp_shares::AddPerpLpShares),
    RemovePerpLpShares(remove_perp_lp_shares::RemovePerpLpShares),
    RemovePerpLpSharesInExpiringMarket(remove_perp_lp_shares_in_expiring_market::RemovePerpLpSharesInExpiringMarket),
    UpdateUserName(update_user_name::UpdateUserName),
    UpdateUserCustomMarginRatio(update_user_custom_margin_ratio::UpdateUserCustomMarginRatio),
    UpdateUserMarginTradingEnabled(update_user_margin_trading_enabled::UpdateUserMarginTradingEnabled),
    UpdateUserPoolId(update_user_pool_id::UpdateUserPoolId),
    UpdateUserDelegate(update_user_delegate::UpdateUserDelegate),
    UpdateUserReduceOnly(update_user_reduce_only::UpdateUserReduceOnly),
    UpdateUserAdvancedLp(update_user_advanced_lp::UpdateUserAdvancedLp),
    UpdateUserProtectedMakerOrders(update_user_protected_maker_orders::UpdateUserProtectedMakerOrders),
    DeleteUser(delete_user::DeleteUser),
    ForceDeleteUser(force_delete_user::ForceDeleteUser),
    DeleteSignedMsgUserOrders(delete_signed_msg_user_orders::DeleteSignedMsgUserOrders),
    ReclaimRent(reclaim_rent::ReclaimRent),
    EnableUserHighLeverageMode(enable_user_high_leverage_mode::EnableUserHighLeverageMode),
    FillPerpOrder(fill_perp_order::FillPerpOrder),
    RevertFill(revert_fill::RevertFill),
    FillSpotOrder(fill_spot_order::FillSpotOrder),
    TriggerOrder(trigger_order::TriggerOrder),
    ForceCancelOrders(force_cancel_orders::ForceCancelOrders),
    UpdateUserIdle(update_user_idle::UpdateUserIdle),
    LogUserBalances(log_user_balances::LogUserBalances),
    DisableUserHighLeverageMode(disable_user_high_leverage_mode::DisableUserHighLeverageMode),
    UpdateUserFuelBonus(update_user_fuel_bonus::UpdateUserFuelBonus),
    UpdateUserStatsReferrerStatus(update_user_stats_referrer_status::UpdateUserStatsReferrerStatus),
    UpdateUserOpenOrdersCount(update_user_open_orders_count::UpdateUserOpenOrdersCount),
    AdminDisableUpdatePerpBidAskTwap(admin_disable_update_perp_bid_ask_twap::AdminDisableUpdatePerpBidAskTwap),
    SettlePnl(settle_pnl::SettlePnl),
    SettleMultiplePnls(settle_multiple_pnls::SettleMultiplePnls),
    SettleFundingPayment(settle_funding_payment::SettleFundingPayment),
    SettleLp(settle_lp::SettleLp),
    SettleExpiredMarket(settle_expired_market::SettleExpiredMarket),
    LiquidatePerp(liquidate_perp::LiquidatePerp),
    LiquidatePerpWithFill(liquidate_perp_with_fill::LiquidatePerpWithFill),
    LiquidateSpot(liquidate_spot::LiquidateSpot),
    LiquidateSpotWithSwapBegin(liquidate_spot_with_swap_begin::LiquidateSpotWithSwapBegin),
    LiquidateSpotWithSwapEnd(liquidate_spot_with_swap_end::LiquidateSpotWithSwapEnd),
    LiquidateBorrowForPerpPnl(liquidate_borrow_for_perp_pnl::LiquidateBorrowForPerpPnl),
    LiquidatePerpPnlForDeposit(liquidate_perp_pnl_for_deposit::LiquidatePerpPnlForDeposit),
    SetUserStatusToBeingLiquidated(set_user_status_to_being_liquidated::SetUserStatusToBeingLiquidated),
    ResolvePerpPnlDeficit(resolve_perp_pnl_deficit::ResolvePerpPnlDeficit),
    ResolvePerpBankruptcy(resolve_perp_bankruptcy::ResolvePerpBankruptcy),
    ResolveSpotBankruptcy(resolve_spot_bankruptcy::ResolveSpotBankruptcy),
    SettleRevenueToInsuranceFund(settle_revenue_to_insurance_fund::SettleRevenueToInsuranceFund),
    UpdateFundingRate(update_funding_rate::UpdateFundingRate),
    UpdatePrelaunchOracle(update_prelaunch_oracle::UpdatePrelaunchOracle),
    UpdatePerpBidAskTwap(update_perp_bid_ask_twap::UpdatePerpBidAskTwap),
    UpdateSpotMarketCumulativeInterest(update_spot_market_cumulative_interest::UpdateSpotMarketCumulativeInterest),
    UpdateAmms(update_amms::UpdateAmms),
    UpdateSpotMarketExpiry(update_spot_market_expiry::UpdateSpotMarketExpiry),
    UpdateUserQuoteAssetInsuranceStake(update_user_quote_asset_insurance_stake::UpdateUserQuoteAssetInsuranceStake),
    UpdateUserGovTokenInsuranceStake(update_user_gov_token_insurance_stake::UpdateUserGovTokenInsuranceStake),
    UpdateUserGovTokenInsuranceStakeDevnet(update_user_gov_token_insurance_stake_devnet::UpdateUserGovTokenInsuranceStakeDevnet),
    InitializeInsuranceFundStake(initialize_insurance_fund_stake::InitializeInsuranceFundStake),
    AddInsuranceFundStake(add_insurance_fund_stake::AddInsuranceFundStake),
    RequestRemoveInsuranceFundStake(request_remove_insurance_fund_stake::RequestRemoveInsuranceFundStake),
    CancelRequestRemoveInsuranceFundStake(cancel_request_remove_insurance_fund_stake::CancelRequestRemoveInsuranceFundStake),
    RemoveInsuranceFundStake(remove_insurance_fund_stake::RemoveInsuranceFundStake),
    TransferProtocolIfShares(transfer_protocol_if_shares::TransferProtocolIfShares),
    UpdatePythPullOracle(update_pyth_pull_oracle::UpdatePythPullOracle),
    PostPythPullOracleUpdateAtomic(post_pyth_pull_oracle_update_atomic::PostPythPullOracleUpdateAtomic),
    PostMultiPythPullOracleUpdatesAtomic(post_multi_pyth_pull_oracle_updates_atomic::PostMultiPythPullOracleUpdatesAtomic),
    PauseSpotMarketDepositWithdraw(pause_spot_market_deposit_withdraw::PauseSpotMarketDepositWithdraw),
    Initialize(initialize::Initialize),
    InitializeSpotMarket(initialize_spot_market::InitializeSpotMarket),
    DeleteInitializedSpotMarket(delete_initialized_spot_market::DeleteInitializedSpotMarket),
    InitializeSerumFulfillmentConfig(initialize_serum_fulfillment_config::InitializeSerumFulfillmentConfig),
    UpdateSerumFulfillmentConfigStatus(update_serum_fulfillment_config_status::UpdateSerumFulfillmentConfigStatus),
    InitializeOpenbookV2FulfillmentConfig(initialize_openbook_v2_fulfillment_config::InitializeOpenbookV2FulfillmentConfig),
    OpenbookV2FulfillmentConfigStatus(openbook_v2_fulfillment_config_status::OpenbookV2FulfillmentConfigStatus),
    InitializePhoenixFulfillmentConfig(initialize_phoenix_fulfillment_config::InitializePhoenixFulfillmentConfig),
    PhoenixFulfillmentConfigStatus(phoenix_fulfillment_config_status::PhoenixFulfillmentConfigStatus),
    UpdateSerumVault(update_serum_vault::UpdateSerumVault),
    InitializePerpMarket(initialize_perp_market::InitializePerpMarket),
    InitializePredictionMarket(initialize_prediction_market::InitializePredictionMarket),
    DeleteInitializedPerpMarket(delete_initialized_perp_market::DeleteInitializedPerpMarket),
    MoveAmmPrice(move_amm_price::MoveAmmPrice),
    RecenterPerpMarketAmm(recenter_perp_market_amm::RecenterPerpMarketAmm),
    UpdatePerpMarketAmmSummaryStats(update_perp_market_amm_summary_stats::UpdatePerpMarketAmmSummaryStats),
    UpdatePerpMarketExpiry(update_perp_market_expiry::UpdatePerpMarketExpiry),
    SettleExpiredMarketPoolsToRevenuePool(settle_expired_market_pools_to_revenue_pool::SettleExpiredMarketPoolsToRevenuePool),
    DepositIntoPerpMarketFeePool(deposit_into_perp_market_fee_pool::DepositIntoPerpMarketFeePool),
    DepositIntoSpotMarketVault(deposit_into_spot_market_vault::DepositIntoSpotMarketVault),
    DepositIntoSpotMarketRevenuePool(deposit_into_spot_market_revenue_pool::DepositIntoSpotMarketRevenuePool),
    RepegAmmCurve(repeg_amm_curve::RepegAmmCurve),
    UpdatePerpMarketAmmOracleTwap(update_perp_market_amm_oracle_twap::UpdatePerpMarketAmmOracleTwap),
    ResetPerpMarketAmmOracleTwap(reset_perp_market_amm_oracle_twap::ResetPerpMarketAmmOracleTwap),
    UpdateK(update_k::UpdateK),
    UpdatePerpMarketMarginRatio(update_perp_market_margin_ratio::UpdatePerpMarketMarginRatio),
    UpdatePerpMarketHighLeverageMarginRatio(update_perp_market_high_leverage_margin_ratio::UpdatePerpMarketHighLeverageMarginRatio),
    UpdatePerpMarketFundingPeriod(update_perp_market_funding_period::UpdatePerpMarketFundingPeriod),
    UpdatePerpMarketMaxImbalances(update_perp_market_max_imbalances::UpdatePerpMarketMaxImbalances),
    UpdatePerpMarketLiquidationFee(update_perp_market_liquidation_fee::UpdatePerpMarketLiquidationFee),
    UpdateInsuranceFundUnstakingPeriod(update_insurance_fund_unstaking_period::UpdateInsuranceFundUnstakingPeriod),
    UpdateSpotMarketPoolId(update_spot_market_pool_id::UpdateSpotMarketPoolId),
    UpdateSpotMarketLiquidationFee(update_spot_market_liquidation_fee::UpdateSpotMarketLiquidationFee),
    UpdateWithdrawGuardThreshold(update_withdraw_guard_threshold::UpdateWithdrawGuardThreshold),
    UpdateSpotMarketIfFactor(update_spot_market_if_factor::UpdateSpotMarketIfFactor),
    UpdateSpotMarketRevenueSettlePeriod(update_spot_market_revenue_settle_period::UpdateSpotMarketRevenueSettlePeriod),
    UpdateSpotMarketStatus(update_spot_market_status::UpdateSpotMarketStatus),
    UpdateSpotMarketPausedOperations(update_spot_market_paused_operations::UpdateSpotMarketPausedOperations),
    UpdateSpotMarketAssetTier(update_spot_market_asset_tier::UpdateSpotMarketAssetTier),
    UpdateSpotMarketMarginWeights(update_spot_market_margin_weights::UpdateSpotMarketMarginWeights),
    UpdateSpotMarketBorrowRate(update_spot_market_borrow_rate::UpdateSpotMarketBorrowRate),
    UpdateSpotMarketMaxTokenDeposits(update_spot_market_max_token_deposits::UpdateSpotMarketMaxTokenDeposits),
    UpdateSpotMarketMaxTokenBorrows(update_spot_market_max_token_borrows::UpdateSpotMarketMaxTokenBorrows),
    UpdateSpotMarketScaleInitialAssetWeightStart(update_spot_market_scale_initial_asset_weight_start::UpdateSpotMarketScaleInitialAssetWeightStart),
    UpdateSpotMarketOracle(update_spot_market_oracle::UpdateSpotMarketOracle),
    UpdateSpotMarketStepSizeAndTickSize(update_spot_market_step_size_and_tick_size::UpdateSpotMarketStepSizeAndTickSize),
    UpdateSpotMarketMinOrderSize(update_spot_market_min_order_size::UpdateSpotMarketMinOrderSize),
    UpdateSpotMarketOrdersEnabled(update_spot_market_orders_enabled::UpdateSpotMarketOrdersEnabled),
    UpdateSpotMarketIfPausedOperations(update_spot_market_if_paused_operations::UpdateSpotMarketIfPausedOperations),
    UpdateSpotMarketName(update_spot_market_name::UpdateSpotMarketName),
    UpdatePerpMarketStatus(update_perp_market_status::UpdatePerpMarketStatus),
    UpdatePerpMarketPausedOperations(update_perp_market_paused_operations::UpdatePerpMarketPausedOperations),
    UpdatePerpMarketContractTier(update_perp_market_contract_tier::UpdatePerpMarketContractTier),
    UpdatePerpMarketImfFactor(update_perp_market_imf_factor::UpdatePerpMarketImfFactor),
    UpdatePerpMarketUnrealizedAssetWeight(update_perp_market_unrealized_asset_weight::UpdatePerpMarketUnrealizedAssetWeight),
    UpdatePerpMarketConcentrationCoef(update_perp_market_concentration_coef::UpdatePerpMarketConcentrationCoef),
    UpdatePerpMarketCurveUpdateIntensity(update_perp_market_curve_update_intensity::UpdatePerpMarketCurveUpdateIntensity),
    UpdatePerpMarketTargetBaseAssetAmountPerLp(update_perp_market_target_base_asset_amount_per_lp::UpdatePerpMarketTargetBaseAssetAmountPerLp),
    UpdatePerpMarketPerLpBase(update_perp_market_per_lp_base::UpdatePerpMarketPerLpBase),
    UpdateLpCooldownTime(update_lp_cooldown_time::UpdateLpCooldownTime),
    UpdatePerpFeeStructure(update_perp_fee_structure::UpdatePerpFeeStructure),
    UpdateSpotFeeStructure(update_spot_fee_structure::UpdateSpotFeeStructure),
    UpdateInitialPctToLiquidate(update_initial_pct_to_liquidate::UpdateInitialPctToLiquidate),
    UpdateLiquidationDuration(update_liquidation_duration::UpdateLiquidationDuration),
    UpdateLiquidationMarginBufferRatio(update_liquidation_margin_buffer_ratio::UpdateLiquidationMarginBufferRatio),
    UpdateOracleGuardRails(update_oracle_guard_rails::UpdateOracleGuardRails),
    UpdateStateSettlementDuration(update_state_settlement_duration::UpdateStateSettlementDuration),
    UpdateStateMaxNumberOfSubAccounts(update_state_max_number_of_sub_accounts::UpdateStateMaxNumberOfSubAccounts),
    UpdateStateMaxInitializeUserFee(update_state_max_initialize_user_fee::UpdateStateMaxInitializeUserFee),
    UpdatePerpMarketOracle(update_perp_market_oracle::UpdatePerpMarketOracle),
    UpdatePerpMarketBaseSpread(update_perp_market_base_spread::UpdatePerpMarketBaseSpread),
    UpdateAmmJitIntensity(update_amm_jit_intensity::UpdateAmmJitIntensity),
    UpdatePerpMarketMaxSpread(update_perp_market_max_spread::UpdatePerpMarketMaxSpread),
    UpdatePerpMarketStepSizeAndTickSize(update_perp_market_step_size_and_tick_size::UpdatePerpMarketStepSizeAndTickSize),
    UpdatePerpMarketName(update_perp_market_name::UpdatePerpMarketName),
    UpdatePerpMarketMinOrderSize(update_perp_market_min_order_size::UpdatePerpMarketMinOrderSize),
    UpdatePerpMarketMaxSlippageRatio(update_perp_market_max_slippage_ratio::UpdatePerpMarketMaxSlippageRatio),
    UpdatePerpMarketMaxFillReserveFraction(update_perp_market_max_fill_reserve_fraction::UpdatePerpMarketMaxFillReserveFraction),
    UpdatePerpMarketMaxOpenInterest(update_perp_market_max_open_interest::UpdatePerpMarketMaxOpenInterest),
    UpdatePerpMarketNumberOfUsers(update_perp_market_number_of_users::UpdatePerpMarketNumberOfUsers),
    UpdatePerpMarketFeeAdjustment(update_perp_market_fee_adjustment::UpdatePerpMarketFeeAdjustment),
    UpdateSpotMarketFeeAdjustment(update_spot_market_fee_adjustment::UpdateSpotMarketFeeAdjustment),
    UpdatePerpMarketFuel(update_perp_market_fuel::UpdatePerpMarketFuel),
    UpdateSpotMarketFuel(update_spot_market_fuel::UpdateSpotMarketFuel),
    InitUserFuel(init_user_fuel::InitUserFuel),
    UpdateAdmin(update_admin::UpdateAdmin),
    UpdateWhitelistMint(update_whitelist_mint::UpdateWhitelistMint),
    UpdateDiscountMint(update_discount_mint::UpdateDiscountMint),
    UpdateExchangeStatus(update_exchange_status::UpdateExchangeStatus),
    UpdatePerpAuctionDuration(update_perp_auction_duration::UpdatePerpAuctionDuration),
    UpdateSpotAuctionDuration(update_spot_auction_duration::UpdateSpotAuctionDuration),
    InitializeProtocolIfSharesTransferConfig(initialize_protocol_if_shares_transfer_config::InitializeProtocolIfSharesTransferConfig),
    UpdateProtocolIfSharesTransferConfig(update_protocol_if_shares_transfer_config::UpdateProtocolIfSharesTransferConfig),
    InitializePrelaunchOracle(initialize_prelaunch_oracle::InitializePrelaunchOracle),
    UpdatePrelaunchOracleParams(update_prelaunch_oracle_params::UpdatePrelaunchOracleParams),
    DeletePrelaunchOracle(delete_prelaunch_oracle::DeletePrelaunchOracle),
    InitializePythPullOracle(initialize_pyth_pull_oracle::InitializePythPullOracle),
    InitializePythLazerOracle(initialize_pyth_lazer_oracle::InitializePythLazerOracle),
    PostPythLazerOracleUpdate(post_pyth_lazer_oracle_update::PostPythLazerOracleUpdate),
    InitializeHighLeverageModeConfig(initialize_high_leverage_mode_config::InitializeHighLeverageModeConfig),
    UpdateHighLeverageModeConfig(update_high_leverage_mode_config::UpdateHighLeverageModeConfig),
    InitializeProtectedMakerModeConfig(initialize_protected_maker_mode_config::InitializeProtectedMakerModeConfig),
    UpdateProtectedMakerModeConfig(update_protected_maker_mode_config::UpdateProtectedMakerModeConfig),
    NewUserRecordEvent(new_user_record_event::NewUserRecordEvent),
    DepositRecordEvent(deposit_record_event::DepositRecordEvent),
    SpotInterestRecordEvent(spot_interest_record_event::SpotInterestRecordEvent),
    FundingPaymentRecordEvent(funding_payment_record_event::FundingPaymentRecordEvent),
    FundingRateRecordEvent(funding_rate_record_event::FundingRateRecordEvent),
    CurveRecordEvent(curve_record_event::CurveRecordEvent),
    SignedMsgOrderRecordEvent(signed_msg_order_record_event::SignedMsgOrderRecordEvent),
    OrderRecordEvent(order_record_event::OrderRecordEvent),
    OrderActionRecordEvent(order_action_record_event::OrderActionRecordEvent),
    LpRecordEvent(lp_record_event::LpRecordEvent),
    LiquidationRecordEvent(liquidation_record_event::LiquidationRecordEvent),
    SettlePnlRecordEvent(settle_pnl_record_event::SettlePnlRecordEvent),
    InsuranceFundRecordEvent(insurance_fund_record_event::InsuranceFundRecordEvent),
    InsuranceFundStakeRecordEvent(insurance_fund_stake_record_event::InsuranceFundStakeRecordEvent),
    SwapRecordEvent(swap_record_event::SwapRecordEvent),
    SpotMarketVaultDepositRecordEvent(spot_market_vault_deposit_record_event::SpotMarketVaultDepositRecordEvent),
    DeleteUserRecordEvent(delete_user_record_event::DeleteUserRecordEvent),
    FuelSweepRecordEvent(fuel_sweep_record_event::FuelSweepRecordEvent),
    FuelSeasonRecordEvent(fuel_season_record_event::FuelSeasonRecordEvent),
}

impl carbon_core::instruction::InstructionDecoder<'_> for DriftDecoder {
    type InstructionType = DriftInstruction;

    fn decode_instruction(
        &self,
        instruction: &solana_instruction::Instruction,
    ) -> Option<carbon_core::instruction::DecodedInstruction<Self::InstructionType>> {
        if !instruction.program_id.eq(&PROGRAM_ID) {
            return None;
        }

        carbon_core::try_decode_instructions!(instruction,
            DriftInstruction::InitializeUser => initialize_user::InitializeUser,
            DriftInstruction::InitializeUserStats => initialize_user_stats::InitializeUserStats,
            DriftInstruction::InitializeSignedMsgUserOrders => initialize_signed_msg_user_orders::InitializeSignedMsgUserOrders,
            DriftInstruction::ResizeSignedMsgUserOrders => resize_signed_msg_user_orders::ResizeSignedMsgUserOrders,
            DriftInstruction::InitializeFuelOverflow => initialize_fuel_overflow::InitializeFuelOverflow,
            DriftInstruction::SweepFuel => sweep_fuel::SweepFuel,
            DriftInstruction::ResetFuelSeason => reset_fuel_season::ResetFuelSeason,
            DriftInstruction::InitializeReferrerName => initialize_referrer_name::InitializeReferrerName,
            DriftInstruction::Deposit => deposit::Deposit,
            DriftInstruction::Withdraw => withdraw::Withdraw,
            DriftInstruction::TransferDeposit => transfer_deposit::TransferDeposit,
            DriftInstruction::TransferPools => transfer_pools::TransferPools,
            DriftInstruction::PlacePerpOrder => place_perp_order::PlacePerpOrder,
            DriftInstruction::CancelOrder => cancel_order::CancelOrder,
            DriftInstruction::CancelOrderByUserId => cancel_order_by_user_id::CancelOrderByUserId,
            DriftInstruction::CancelOrders => cancel_orders::CancelOrders,
            DriftInstruction::CancelOrdersByIds => cancel_orders_by_ids::CancelOrdersByIds,
            DriftInstruction::ModifyOrder => modify_order::ModifyOrder,
            DriftInstruction::ModifyOrderByUserId => modify_order_by_user_id::ModifyOrderByUserId,
            DriftInstruction::PlaceAndTakePerpOrder => place_and_take_perp_order::PlaceAndTakePerpOrder,
            DriftInstruction::PlaceAndMakePerpOrder => place_and_make_perp_order::PlaceAndMakePerpOrder,
            DriftInstruction::PlaceAndMakeSignedMsgPerpOrder => place_and_make_signed_msg_perp_order::PlaceAndMakeSignedMsgPerpOrder,
            DriftInstruction::PlaceSignedMsgTakerOrder => place_signed_msg_taker_order::PlaceSignedMsgTakerOrder,
            DriftInstruction::PlaceSpotOrder => place_spot_order::PlaceSpotOrder,
            DriftInstruction::PlaceAndTakeSpotOrder => place_and_take_spot_order::PlaceAndTakeSpotOrder,
            DriftInstruction::PlaceAndMakeSpotOrder => place_and_make_spot_order::PlaceAndMakeSpotOrder,
            DriftInstruction::PlaceOrders => place_orders::PlaceOrders,
            DriftInstruction::BeginSwap => begin_swap::BeginSwap,
            DriftInstruction::EndSwap => end_swap::EndSwap,
            DriftInstruction::AddPerpLpShares => add_perp_lp_shares::AddPerpLpShares,
            DriftInstruction::RemovePerpLpShares => remove_perp_lp_shares::RemovePerpLpShares,
            DriftInstruction::RemovePerpLpSharesInExpiringMarket => remove_perp_lp_shares_in_expiring_market::RemovePerpLpSharesInExpiringMarket,
            DriftInstruction::UpdateUserName => update_user_name::UpdateUserName,
            DriftInstruction::UpdateUserCustomMarginRatio => update_user_custom_margin_ratio::UpdateUserCustomMarginRatio,
            DriftInstruction::UpdateUserMarginTradingEnabled => update_user_margin_trading_enabled::UpdateUserMarginTradingEnabled,
            DriftInstruction::UpdateUserPoolId => update_user_pool_id::UpdateUserPoolId,
            DriftInstruction::UpdateUserDelegate => update_user_delegate::UpdateUserDelegate,
            DriftInstruction::UpdateUserReduceOnly => update_user_reduce_only::UpdateUserReduceOnly,
            DriftInstruction::UpdateUserAdvancedLp => update_user_advanced_lp::UpdateUserAdvancedLp,
            DriftInstruction::UpdateUserProtectedMakerOrders => update_user_protected_maker_orders::UpdateUserProtectedMakerOrders,
            DriftInstruction::DeleteUser => delete_user::DeleteUser,
            DriftInstruction::ForceDeleteUser => force_delete_user::ForceDeleteUser,
            DriftInstruction::DeleteSignedMsgUserOrders => delete_signed_msg_user_orders::DeleteSignedMsgUserOrders,
            DriftInstruction::ReclaimRent => reclaim_rent::ReclaimRent,
            DriftInstruction::EnableUserHighLeverageMode => enable_user_high_leverage_mode::EnableUserHighLeverageMode,
            DriftInstruction::FillPerpOrder => fill_perp_order::FillPerpOrder,
            DriftInstruction::RevertFill => revert_fill::RevertFill,
            DriftInstruction::FillSpotOrder => fill_spot_order::FillSpotOrder,
            DriftInstruction::TriggerOrder => trigger_order::TriggerOrder,
            DriftInstruction::ForceCancelOrders => force_cancel_orders::ForceCancelOrders,
            DriftInstruction::UpdateUserIdle => update_user_idle::UpdateUserIdle,
            DriftInstruction::LogUserBalances => log_user_balances::LogUserBalances,
            DriftInstruction::DisableUserHighLeverageMode => disable_user_high_leverage_mode::DisableUserHighLeverageMode,
            DriftInstruction::UpdateUserFuelBonus => update_user_fuel_bonus::UpdateUserFuelBonus,
            DriftInstruction::UpdateUserStatsReferrerStatus => update_user_stats_referrer_status::UpdateUserStatsReferrerStatus,
            DriftInstruction::UpdateUserOpenOrdersCount => update_user_open_orders_count::UpdateUserOpenOrdersCount,
            DriftInstruction::AdminDisableUpdatePerpBidAskTwap => admin_disable_update_perp_bid_ask_twap::AdminDisableUpdatePerpBidAskTwap,
            DriftInstruction::SettlePnl => settle_pnl::SettlePnl,
            DriftInstruction::SettleMultiplePnls => settle_multiple_pnls::SettleMultiplePnls,
            DriftInstruction::SettleFundingPayment => settle_funding_payment::SettleFundingPayment,
            DriftInstruction::SettleLp => settle_lp::SettleLp,
            DriftInstruction::SettleExpiredMarket => settle_expired_market::SettleExpiredMarket,
            DriftInstruction::LiquidatePerp => liquidate_perp::LiquidatePerp,
            DriftInstruction::LiquidatePerpWithFill => liquidate_perp_with_fill::LiquidatePerpWithFill,
            DriftInstruction::LiquidateSpot => liquidate_spot::LiquidateSpot,
            DriftInstruction::LiquidateSpotWithSwapBegin => liquidate_spot_with_swap_begin::LiquidateSpotWithSwapBegin,
            DriftInstruction::LiquidateSpotWithSwapEnd => liquidate_spot_with_swap_end::LiquidateSpotWithSwapEnd,
            DriftInstruction::LiquidateBorrowForPerpPnl => liquidate_borrow_for_perp_pnl::LiquidateBorrowForPerpPnl,
            DriftInstruction::LiquidatePerpPnlForDeposit => liquidate_perp_pnl_for_deposit::LiquidatePerpPnlForDeposit,
            DriftInstruction::SetUserStatusToBeingLiquidated => set_user_status_to_being_liquidated::SetUserStatusToBeingLiquidated,
            DriftInstruction::ResolvePerpPnlDeficit => resolve_perp_pnl_deficit::ResolvePerpPnlDeficit,
            DriftInstruction::ResolvePerpBankruptcy => resolve_perp_bankruptcy::ResolvePerpBankruptcy,
            DriftInstruction::ResolveSpotBankruptcy => resolve_spot_bankruptcy::ResolveSpotBankruptcy,
            DriftInstruction::SettleRevenueToInsuranceFund => settle_revenue_to_insurance_fund::SettleRevenueToInsuranceFund,
            DriftInstruction::UpdateFundingRate => update_funding_rate::UpdateFundingRate,
            DriftInstruction::UpdatePrelaunchOracle => update_prelaunch_oracle::UpdatePrelaunchOracle,
            DriftInstruction::UpdatePerpBidAskTwap => update_perp_bid_ask_twap::UpdatePerpBidAskTwap,
            DriftInstruction::UpdateSpotMarketCumulativeInterest => update_spot_market_cumulative_interest::UpdateSpotMarketCumulativeInterest,
            DriftInstruction::UpdateAmms => update_amms::UpdateAmms,
            DriftInstruction::UpdateSpotMarketExpiry => update_spot_market_expiry::UpdateSpotMarketExpiry,
            DriftInstruction::UpdateUserQuoteAssetInsuranceStake => update_user_quote_asset_insurance_stake::UpdateUserQuoteAssetInsuranceStake,
            DriftInstruction::UpdateUserGovTokenInsuranceStake => update_user_gov_token_insurance_stake::UpdateUserGovTokenInsuranceStake,
            DriftInstruction::UpdateUserGovTokenInsuranceStakeDevnet => update_user_gov_token_insurance_stake_devnet::UpdateUserGovTokenInsuranceStakeDevnet,
            DriftInstruction::InitializeInsuranceFundStake => initialize_insurance_fund_stake::InitializeInsuranceFundStake,
            DriftInstruction::AddInsuranceFundStake => add_insurance_fund_stake::AddInsuranceFundStake,
            DriftInstruction::RequestRemoveInsuranceFundStake => request_remove_insurance_fund_stake::RequestRemoveInsuranceFundStake,
            DriftInstruction::CancelRequestRemoveInsuranceFundStake => cancel_request_remove_insurance_fund_stake::CancelRequestRemoveInsuranceFundStake,
            DriftInstruction::RemoveInsuranceFundStake => remove_insurance_fund_stake::RemoveInsuranceFundStake,
            DriftInstruction::TransferProtocolIfShares => transfer_protocol_if_shares::TransferProtocolIfShares,
            DriftInstruction::UpdatePythPullOracle => update_pyth_pull_oracle::UpdatePythPullOracle,
            DriftInstruction::PostPythPullOracleUpdateAtomic => post_pyth_pull_oracle_update_atomic::PostPythPullOracleUpdateAtomic,
            DriftInstruction::PostMultiPythPullOracleUpdatesAtomic => post_multi_pyth_pull_oracle_updates_atomic::PostMultiPythPullOracleUpdatesAtomic,
            DriftInstruction::PauseSpotMarketDepositWithdraw => pause_spot_market_deposit_withdraw::PauseSpotMarketDepositWithdraw,
            DriftInstruction::Initialize => initialize::Initialize,
            DriftInstruction::InitializeSpotMarket => initialize_spot_market::InitializeSpotMarket,
            DriftInstruction::DeleteInitializedSpotMarket => delete_initialized_spot_market::DeleteInitializedSpotMarket,
            DriftInstruction::InitializeSerumFulfillmentConfig => initialize_serum_fulfillment_config::InitializeSerumFulfillmentConfig,
            DriftInstruction::UpdateSerumFulfillmentConfigStatus => update_serum_fulfillment_config_status::UpdateSerumFulfillmentConfigStatus,
            DriftInstruction::InitializeOpenbookV2FulfillmentConfig => initialize_openbook_v2_fulfillment_config::InitializeOpenbookV2FulfillmentConfig,
            DriftInstruction::OpenbookV2FulfillmentConfigStatus => openbook_v2_fulfillment_config_status::OpenbookV2FulfillmentConfigStatus,
            DriftInstruction::InitializePhoenixFulfillmentConfig => initialize_phoenix_fulfillment_config::InitializePhoenixFulfillmentConfig,
            DriftInstruction::PhoenixFulfillmentConfigStatus => phoenix_fulfillment_config_status::PhoenixFulfillmentConfigStatus,
            DriftInstruction::UpdateSerumVault => update_serum_vault::UpdateSerumVault,
            DriftInstruction::InitializePerpMarket => initialize_perp_market::InitializePerpMarket,
            DriftInstruction::InitializePredictionMarket => initialize_prediction_market::InitializePredictionMarket,
            DriftInstruction::DeleteInitializedPerpMarket => delete_initialized_perp_market::DeleteInitializedPerpMarket,
            DriftInstruction::MoveAmmPrice => move_amm_price::MoveAmmPrice,
            DriftInstruction::RecenterPerpMarketAmm => recenter_perp_market_amm::RecenterPerpMarketAmm,
            DriftInstruction::UpdatePerpMarketAmmSummaryStats => update_perp_market_amm_summary_stats::UpdatePerpMarketAmmSummaryStats,
            DriftInstruction::UpdatePerpMarketExpiry => update_perp_market_expiry::UpdatePerpMarketExpiry,
            DriftInstruction::SettleExpiredMarketPoolsToRevenuePool => settle_expired_market_pools_to_revenue_pool::SettleExpiredMarketPoolsToRevenuePool,
            DriftInstruction::DepositIntoPerpMarketFeePool => deposit_into_perp_market_fee_pool::DepositIntoPerpMarketFeePool,
            DriftInstruction::DepositIntoSpotMarketVault => deposit_into_spot_market_vault::DepositIntoSpotMarketVault,
            DriftInstruction::DepositIntoSpotMarketRevenuePool => deposit_into_spot_market_revenue_pool::DepositIntoSpotMarketRevenuePool,
            DriftInstruction::RepegAmmCurve => repeg_amm_curve::RepegAmmCurve,
            DriftInstruction::UpdatePerpMarketAmmOracleTwap => update_perp_market_amm_oracle_twap::UpdatePerpMarketAmmOracleTwap,
            DriftInstruction::ResetPerpMarketAmmOracleTwap => reset_perp_market_amm_oracle_twap::ResetPerpMarketAmmOracleTwap,
            DriftInstruction::UpdateK => update_k::UpdateK,
            DriftInstruction::UpdatePerpMarketMarginRatio => update_perp_market_margin_ratio::UpdatePerpMarketMarginRatio,
            DriftInstruction::UpdatePerpMarketHighLeverageMarginRatio => update_perp_market_high_leverage_margin_ratio::UpdatePerpMarketHighLeverageMarginRatio,
            DriftInstruction::UpdatePerpMarketFundingPeriod => update_perp_market_funding_period::UpdatePerpMarketFundingPeriod,
            DriftInstruction::UpdatePerpMarketMaxImbalances => update_perp_market_max_imbalances::UpdatePerpMarketMaxImbalances,
            DriftInstruction::UpdatePerpMarketLiquidationFee => update_perp_market_liquidation_fee::UpdatePerpMarketLiquidationFee,
            DriftInstruction::UpdateInsuranceFundUnstakingPeriod => update_insurance_fund_unstaking_period::UpdateInsuranceFundUnstakingPeriod,
            DriftInstruction::UpdateSpotMarketPoolId => update_spot_market_pool_id::UpdateSpotMarketPoolId,
            DriftInstruction::UpdateSpotMarketLiquidationFee => update_spot_market_liquidation_fee::UpdateSpotMarketLiquidationFee,
            DriftInstruction::UpdateWithdrawGuardThreshold => update_withdraw_guard_threshold::UpdateWithdrawGuardThreshold,
            DriftInstruction::UpdateSpotMarketIfFactor => update_spot_market_if_factor::UpdateSpotMarketIfFactor,
            DriftInstruction::UpdateSpotMarketRevenueSettlePeriod => update_spot_market_revenue_settle_period::UpdateSpotMarketRevenueSettlePeriod,
            DriftInstruction::UpdateSpotMarketStatus => update_spot_market_status::UpdateSpotMarketStatus,
            DriftInstruction::UpdateSpotMarketPausedOperations => update_spot_market_paused_operations::UpdateSpotMarketPausedOperations,
            DriftInstruction::UpdateSpotMarketAssetTier => update_spot_market_asset_tier::UpdateSpotMarketAssetTier,
            DriftInstruction::UpdateSpotMarketMarginWeights => update_spot_market_margin_weights::UpdateSpotMarketMarginWeights,
            DriftInstruction::UpdateSpotMarketBorrowRate => update_spot_market_borrow_rate::UpdateSpotMarketBorrowRate,
            DriftInstruction::UpdateSpotMarketMaxTokenDeposits => update_spot_market_max_token_deposits::UpdateSpotMarketMaxTokenDeposits,
            DriftInstruction::UpdateSpotMarketMaxTokenBorrows => update_spot_market_max_token_borrows::UpdateSpotMarketMaxTokenBorrows,
            DriftInstruction::UpdateSpotMarketScaleInitialAssetWeightStart => update_spot_market_scale_initial_asset_weight_start::UpdateSpotMarketScaleInitialAssetWeightStart,
            DriftInstruction::UpdateSpotMarketOracle => update_spot_market_oracle::UpdateSpotMarketOracle,
            DriftInstruction::UpdateSpotMarketStepSizeAndTickSize => update_spot_market_step_size_and_tick_size::UpdateSpotMarketStepSizeAndTickSize,
            DriftInstruction::UpdateSpotMarketMinOrderSize => update_spot_market_min_order_size::UpdateSpotMarketMinOrderSize,
            DriftInstruction::UpdateSpotMarketOrdersEnabled => update_spot_market_orders_enabled::UpdateSpotMarketOrdersEnabled,
            DriftInstruction::UpdateSpotMarketIfPausedOperations => update_spot_market_if_paused_operations::UpdateSpotMarketIfPausedOperations,
            DriftInstruction::UpdateSpotMarketName => update_spot_market_name::UpdateSpotMarketName,
            DriftInstruction::UpdatePerpMarketStatus => update_perp_market_status::UpdatePerpMarketStatus,
            DriftInstruction::UpdatePerpMarketPausedOperations => update_perp_market_paused_operations::UpdatePerpMarketPausedOperations,
            DriftInstruction::UpdatePerpMarketContractTier => update_perp_market_contract_tier::UpdatePerpMarketContractTier,
            DriftInstruction::UpdatePerpMarketImfFactor => update_perp_market_imf_factor::UpdatePerpMarketImfFactor,
            DriftInstruction::UpdatePerpMarketUnrealizedAssetWeight => update_perp_market_unrealized_asset_weight::UpdatePerpMarketUnrealizedAssetWeight,
            DriftInstruction::UpdatePerpMarketConcentrationCoef => update_perp_market_concentration_coef::UpdatePerpMarketConcentrationCoef,
            DriftInstruction::UpdatePerpMarketCurveUpdateIntensity => update_perp_market_curve_update_intensity::UpdatePerpMarketCurveUpdateIntensity,
            DriftInstruction::UpdatePerpMarketTargetBaseAssetAmountPerLp => update_perp_market_target_base_asset_amount_per_lp::UpdatePerpMarketTargetBaseAssetAmountPerLp,
            DriftInstruction::UpdatePerpMarketPerLpBase => update_perp_market_per_lp_base::UpdatePerpMarketPerLpBase,
            DriftInstruction::UpdateLpCooldownTime => update_lp_cooldown_time::UpdateLpCooldownTime,
            DriftInstruction::UpdatePerpFeeStructure => update_perp_fee_structure::UpdatePerpFeeStructure,
            DriftInstruction::UpdateSpotFeeStructure => update_spot_fee_structure::UpdateSpotFeeStructure,
            DriftInstruction::UpdateInitialPctToLiquidate => update_initial_pct_to_liquidate::UpdateInitialPctToLiquidate,
            DriftInstruction::UpdateLiquidationDuration => update_liquidation_duration::UpdateLiquidationDuration,
            DriftInstruction::UpdateLiquidationMarginBufferRatio => update_liquidation_margin_buffer_ratio::UpdateLiquidationMarginBufferRatio,
            DriftInstruction::UpdateOracleGuardRails => update_oracle_guard_rails::UpdateOracleGuardRails,
            DriftInstruction::UpdateStateSettlementDuration => update_state_settlement_duration::UpdateStateSettlementDuration,
            DriftInstruction::UpdateStateMaxNumberOfSubAccounts => update_state_max_number_of_sub_accounts::UpdateStateMaxNumberOfSubAccounts,
            DriftInstruction::UpdateStateMaxInitializeUserFee => update_state_max_initialize_user_fee::UpdateStateMaxInitializeUserFee,
            DriftInstruction::UpdatePerpMarketOracle => update_perp_market_oracle::UpdatePerpMarketOracle,
            DriftInstruction::UpdatePerpMarketBaseSpread => update_perp_market_base_spread::UpdatePerpMarketBaseSpread,
            DriftInstruction::UpdateAmmJitIntensity => update_amm_jit_intensity::UpdateAmmJitIntensity,
            DriftInstruction::UpdatePerpMarketMaxSpread => update_perp_market_max_spread::UpdatePerpMarketMaxSpread,
            DriftInstruction::UpdatePerpMarketStepSizeAndTickSize => update_perp_market_step_size_and_tick_size::UpdatePerpMarketStepSizeAndTickSize,
            DriftInstruction::UpdatePerpMarketName => update_perp_market_name::UpdatePerpMarketName,
            DriftInstruction::UpdatePerpMarketMinOrderSize => update_perp_market_min_order_size::UpdatePerpMarketMinOrderSize,
            DriftInstruction::UpdatePerpMarketMaxSlippageRatio => update_perp_market_max_slippage_ratio::UpdatePerpMarketMaxSlippageRatio,
            DriftInstruction::UpdatePerpMarketMaxFillReserveFraction => update_perp_market_max_fill_reserve_fraction::UpdatePerpMarketMaxFillReserveFraction,
            DriftInstruction::UpdatePerpMarketMaxOpenInterest => update_perp_market_max_open_interest::UpdatePerpMarketMaxOpenInterest,
            DriftInstruction::UpdatePerpMarketNumberOfUsers => update_perp_market_number_of_users::UpdatePerpMarketNumberOfUsers,
            DriftInstruction::UpdatePerpMarketFeeAdjustment => update_perp_market_fee_adjustment::UpdatePerpMarketFeeAdjustment,
            DriftInstruction::UpdateSpotMarketFeeAdjustment => update_spot_market_fee_adjustment::UpdateSpotMarketFeeAdjustment,
            DriftInstruction::UpdatePerpMarketFuel => update_perp_market_fuel::UpdatePerpMarketFuel,
            DriftInstruction::UpdateSpotMarketFuel => update_spot_market_fuel::UpdateSpotMarketFuel,
            DriftInstruction::InitUserFuel => init_user_fuel::InitUserFuel,
            DriftInstruction::UpdateAdmin => update_admin::UpdateAdmin,
            DriftInstruction::UpdateWhitelistMint => update_whitelist_mint::UpdateWhitelistMint,
            DriftInstruction::UpdateDiscountMint => update_discount_mint::UpdateDiscountMint,
            DriftInstruction::UpdateExchangeStatus => update_exchange_status::UpdateExchangeStatus,
            DriftInstruction::UpdatePerpAuctionDuration => update_perp_auction_duration::UpdatePerpAuctionDuration,
            DriftInstruction::UpdateSpotAuctionDuration => update_spot_auction_duration::UpdateSpotAuctionDuration,
            DriftInstruction::InitializeProtocolIfSharesTransferConfig => initialize_protocol_if_shares_transfer_config::InitializeProtocolIfSharesTransferConfig,
            DriftInstruction::UpdateProtocolIfSharesTransferConfig => update_protocol_if_shares_transfer_config::UpdateProtocolIfSharesTransferConfig,
            DriftInstruction::InitializePrelaunchOracle => initialize_prelaunch_oracle::InitializePrelaunchOracle,
            DriftInstruction::UpdatePrelaunchOracleParams => update_prelaunch_oracle_params::UpdatePrelaunchOracleParams,
            DriftInstruction::DeletePrelaunchOracle => delete_prelaunch_oracle::DeletePrelaunchOracle,
            DriftInstruction::InitializePythPullOracle => initialize_pyth_pull_oracle::InitializePythPullOracle,
            DriftInstruction::InitializePythLazerOracle => initialize_pyth_lazer_oracle::InitializePythLazerOracle,
            DriftInstruction::PostPythLazerOracleUpdate => post_pyth_lazer_oracle_update::PostPythLazerOracleUpdate,
            DriftInstruction::InitializeHighLeverageModeConfig => initialize_high_leverage_mode_config::InitializeHighLeverageModeConfig,
            DriftInstruction::UpdateHighLeverageModeConfig => update_high_leverage_mode_config::UpdateHighLeverageModeConfig,
            DriftInstruction::InitializeProtectedMakerModeConfig => initialize_protected_maker_mode_config::InitializeProtectedMakerModeConfig,
            DriftInstruction::UpdateProtectedMakerModeConfig => update_protected_maker_mode_config::UpdateProtectedMakerModeConfig,
            DriftInstruction::NewUserRecordEvent => new_user_record_event::NewUserRecordEvent,
            DriftInstruction::DepositRecordEvent => deposit_record_event::DepositRecordEvent,
            DriftInstruction::SpotInterestRecordEvent => spot_interest_record_event::SpotInterestRecordEvent,
            DriftInstruction::FundingPaymentRecordEvent => funding_payment_record_event::FundingPaymentRecordEvent,
            DriftInstruction::FundingRateRecordEvent => funding_rate_record_event::FundingRateRecordEvent,
            DriftInstruction::CurveRecordEvent => curve_record_event::CurveRecordEvent,
            DriftInstruction::SignedMsgOrderRecordEvent => signed_msg_order_record_event::SignedMsgOrderRecordEvent,
            DriftInstruction::OrderRecordEvent => order_record_event::OrderRecordEvent,
            DriftInstruction::OrderActionRecordEvent => order_action_record_event::OrderActionRecordEvent,
            DriftInstruction::LpRecordEvent => lp_record_event::LpRecordEvent,
            DriftInstruction::LiquidationRecordEvent => liquidation_record_event::LiquidationRecordEvent,
            DriftInstruction::SettlePnlRecordEvent => settle_pnl_record_event::SettlePnlRecordEvent,
            DriftInstruction::InsuranceFundRecordEvent => insurance_fund_record_event::InsuranceFundRecordEvent,
            DriftInstruction::InsuranceFundStakeRecordEvent => insurance_fund_stake_record_event::InsuranceFundStakeRecordEvent,
            DriftInstruction::SwapRecordEvent => swap_record_event::SwapRecordEvent,
            DriftInstruction::SpotMarketVaultDepositRecordEvent => spot_market_vault_deposit_record_event::SpotMarketVaultDepositRecordEvent,
            DriftInstruction::DeleteUserRecordEvent => delete_user_record_event::DeleteUserRecordEvent,
            DriftInstruction::FuelSweepRecordEvent => fuel_sweep_record_event::FuelSweepRecordEvent,
            DriftInstruction::FuelSeasonRecordEvent => fuel_season_record_event::FuelSeasonRecordEvent,
        )
    }
}