sol-parser-sdk-python 0.5.5__py3-none-any.whl → 0.5.7__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
sol_parser/dex_parsers.py CHANGED
@@ -27,8 +27,14 @@ from .event_types import (
27
27
  RaydiumAmmV4WithdrawPnlEvent, RaydiumAmmV4Initialize2Event,
28
28
  RaydiumClmmSwapEvent, RaydiumClmmIncreaseLiquidityEvent,
29
29
  RaydiumClmmDecreaseLiquidityEvent, RaydiumClmmCreatePoolEvent,
30
- RaydiumClmmCollectFeeEvent, RaydiumCpmmSwapEvent, RaydiumCpmmDepositEvent,
31
- RaydiumCpmmWithdrawEvent, OrcaWhirlpoolSwapEvent, OrcaWhirlpoolLiquidityIncreasedEvent,
30
+ RaydiumClmmCollectFeeEvent, RaydiumClmmLiquidityChangeEvent,
31
+ RaydiumClmmConfigChangeEvent, RaydiumClmmCreatePersonalPositionEvent,
32
+ RaydiumClmmLiquidityCalculateEvent, RaydiumClmmOpenLimitOrderEvent,
33
+ RaydiumClmmIncreaseLimitOrderEvent, RaydiumClmmDecreaseLimitOrderEvent,
34
+ RaydiumClmmSettleLimitOrderEvent, RaydiumClmmUpdateRewardInfosEvent,
35
+ RaydiumCpmmSwapEvent, RaydiumCpmmDepositEvent,
36
+ RaydiumCpmmWithdrawEvent, RaydiumCpmmInitializeEvent,
37
+ OrcaWhirlpoolSwapEvent, OrcaWhirlpoolLiquidityIncreasedEvent,
32
38
  OrcaWhirlpoolLiquidityDecreasedEvent, OrcaWhirlpoolPoolInitializedEvent,
33
39
  MeteoraDlmmSwapEvent, MeteoraDlmmAddLiquidityEvent, MeteoraDlmmRemoveLiquidityEvent,
34
40
  MeteoraDlmmInitializePoolEvent, MeteoraDlmmInitializeBinArrayEvent,
@@ -39,6 +45,7 @@ from .event_types import (
39
45
  MeteoraDammV2CreatePositionEvent, MeteoraDammV2ClosePositionEvent,
40
46
  MeteoraDammV2AddLiquidityEvent, MeteoraDammV2RemoveLiquidityEvent,
41
47
  MeteoraDammV2InitializePoolEvent,
48
+ MeteoraDbcCurveCompleteEvent, MeteoraDbcInitializePoolEvent, MeteoraDbcSwapEvent,
42
49
  RaydiumLaunchlabTradeEvent, RaydiumLaunchlabPoolCreateEvent,
43
50
  )
44
51
 
@@ -751,129 +758,179 @@ def parse_pump_fees_upsert_fee_tiers_from_data(data: bytes, meta: dict) -> DexEv
751
758
 
752
759
 
753
760
  def parse_clmm_swap_from_data(data: bytes, meta: dict) -> DexEvent:
754
- if len(data) < 32 + 32 + 8 + 8 + 16 + 1:
761
+ if len(data) < 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 1 + 16 + 16 + 4:
755
762
  return DexEvent()
756
763
  o = 0
757
764
  ps = _pub(data, o)
758
765
  o += 32
759
- user = _pub(data, o)
760
- o += 32 + 8 + 8
766
+ sender = _pub(data, o)
767
+ o += 32
768
+ token_account_0 = _pub(data, o)
769
+ o += 32
770
+ token_account_1 = _pub(data, o)
771
+ o += 32
772
+ amount_0 = _u64le(data, o)
773
+ o += 8
774
+ transfer_fee_0 = _u64le(data, o)
775
+ o += 8
776
+ amount_1 = _u64le(data, o)
777
+ o += 8
778
+ transfer_fee_1 = _u64le(data, o)
779
+ o += 8
780
+ zfo = _bool(data, o)
781
+ o += 1
761
782
  sqrt = str(_u128le_int(data, o))
762
783
  o += 16
763
- zfo = _bool(data, o)
784
+ liq = str(_u128le_int(data, o))
785
+ o += 16
786
+ tick = _i32le(data, o)
764
787
 
765
788
  return DexEvent(
766
789
  type=EventType.RAYDIUM_CLMM_SWAP,
767
790
  data=RaydiumClmmSwapEvent(
768
791
  metadata=_make_meta(meta),
769
792
  pool_state=ps,
770
- sender=user,
771
- token_account_0=Z,
772
- token_account_1=Z,
773
- amount_0=0,
774
- amount_1=0,
793
+ sender=sender,
794
+ token_account_0=token_account_0,
795
+ token_account_1=token_account_1,
796
+ amount_0=amount_0,
797
+ amount_1=amount_1,
775
798
  zero_for_one=zfo,
776
799
  sqrt_price_x64=sqrt,
777
- liquidity="0",
778
- transfer_fee_0=0,
779
- transfer_fee_1=0,
780
- tick=0,
800
+ liquidity=liq,
801
+ transfer_fee_0=transfer_fee_0,
802
+ transfer_fee_1=transfer_fee_1,
803
+ tick=tick,
781
804
  ),
782
805
  )
783
806
 
784
807
 
785
808
  def parse_clmm_inc_from_data(data: bytes, meta: dict) -> DexEvent:
786
- if len(data) < 32 + 32 + 16 + 8 + 8:
809
+ if len(data) < 32 + 16 + 8 + 8 + 8 + 8:
787
810
  return DexEvent()
788
811
  o = 0
789
- pool = _pub(data, o)
790
- o += 32
791
- user = _pub(data, o)
812
+ position_nft_mint = _pub(data, o)
792
813
  o += 32
793
814
  liq = str(_u128le_int(data, o))
794
815
  o += 16
795
- a0 = _u64le(data, o)
816
+ amount_0 = _u64le(data, o)
796
817
  o += 8
797
- a1 = _u64le(data, o)
818
+ amount_1 = _u64le(data, o)
819
+ o += 8
820
+ amount_0_transfer_fee = _u64le(data, o)
821
+ o += 8
822
+ amount_1_transfer_fee = _u64le(data, o)
798
823
 
799
824
  return DexEvent(
800
825
  type=EventType.RAYDIUM_CLMM_INCREASE_LIQUIDITY,
801
826
  data=RaydiumClmmIncreaseLiquidityEvent(
802
827
  metadata=_make_meta(meta),
803
- pool=pool,
804
- position_nft_mint=Z,
805
- user=user,
828
+ pool=Z,
829
+ position_nft_mint=position_nft_mint,
830
+ user=Z,
806
831
  liquidity=liq,
807
- amount0_max=a0,
808
- amount1_max=a1,
832
+ amount_0=amount_0,
833
+ amount_1=amount_1,
834
+ amount_0_transfer_fee=amount_0_transfer_fee,
835
+ amount_1_transfer_fee=amount_1_transfer_fee,
836
+ amount0_max=0,
837
+ amount1_max=0,
809
838
  ),
810
839
  )
811
840
 
812
841
 
813
842
  def parse_clmm_dec_from_data(data: bytes, meta: dict) -> DexEvent:
814
- if len(data) < 32 + 32 + 16 + 8 + 8:
843
+ if len(data) < 32 + 16 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8:
815
844
  return DexEvent()
816
845
  o = 0
817
- pool = _pub(data, o)
818
- o += 32
819
- user = _pub(data, o)
846
+ position_nft_mint = _pub(data, o)
820
847
  o += 32
821
848
  liq = str(_u128le_int(data, o))
822
849
  o += 16
823
- a0 = _u64le(data, o)
850
+ decrease_amount_0 = _u64le(data, o)
824
851
  o += 8
825
- a1 = _u64le(data, o)
852
+ decrease_amount_1 = _u64le(data, o)
853
+ o += 8
854
+ fee_amount_0 = _u64le(data, o)
855
+ o += 8
856
+ fee_amount_1 = _u64le(data, o)
857
+ o += 8
858
+ reward_amounts = [_u64le(data, o), _u64le(data, o + 8), _u64le(data, o + 16)]
859
+ o += 24
860
+ transfer_fee_0 = _u64le(data, o)
861
+ o += 8
862
+ transfer_fee_1 = _u64le(data, o)
826
863
 
827
864
  return DexEvent(
828
865
  type=EventType.RAYDIUM_CLMM_DECREASE_LIQUIDITY,
829
866
  data=RaydiumClmmDecreaseLiquidityEvent(
830
867
  metadata=_make_meta(meta),
831
- pool=pool,
832
- position_nft_mint=Z,
833
- user=user,
868
+ pool=Z,
869
+ position_nft_mint=position_nft_mint,
870
+ user=Z,
834
871
  liquidity=liq,
835
- amount0_min=a0,
836
- amount1_min=a1,
872
+ decrease_amount_0=decrease_amount_0,
873
+ decrease_amount_1=decrease_amount_1,
874
+ fee_amount_0=fee_amount_0,
875
+ fee_amount_1=fee_amount_1,
876
+ reward_amounts=reward_amounts,
877
+ transfer_fee_0=transfer_fee_0,
878
+ transfer_fee_1=transfer_fee_1,
879
+ amount0_min=0,
880
+ amount1_min=0,
837
881
  ),
838
882
  )
839
883
 
840
884
 
841
885
  def parse_clmm_create_from_data(data: bytes, meta: dict) -> DexEvent:
842
- if len(data) < 32 + 32 + 16 + 8:
886
+ if len(data) < 32 + 32 + 2 + 32 + 16 + 4 + 32 + 32:
843
887
  return DexEvent()
844
888
  o = 0
845
- pool = _pub(data, o)
889
+ token_0_mint = _pub(data, o)
846
890
  o += 32
847
- cr = _pub(data, o)
891
+ token_1_mint = _pub(data, o)
892
+ o += 32
893
+ tick_spacing = _u16le(data, o)
894
+ o += 2
895
+ pool = _pub(data, o)
848
896
  o += 32
849
897
  sqrt = str(_u128le_int(data, o))
850
898
  o += 16
851
- ot = _u64le(data, o)
899
+ tick = _i32le(data, o)
900
+ o += 4
901
+ token_vault_0 = _pub(data, o)
902
+ o += 32
903
+ token_vault_1 = _pub(data, o)
852
904
 
853
905
  return DexEvent(
854
906
  type=EventType.RAYDIUM_CLMM_CREATE_POOL,
855
907
  data=RaydiumClmmCreatePoolEvent(
856
908
  metadata=_make_meta(meta),
857
909
  pool=pool,
858
- creator=cr,
859
- token_0_mint=Z,
860
- token_1_mint=Z,
861
- tick_spacing=0,
910
+ creator=Z,
911
+ token_0_mint=token_0_mint,
912
+ token_1_mint=token_1_mint,
913
+ tick_spacing=tick_spacing,
862
914
  fee_rate=0,
863
915
  sqrt_price_x64=sqrt,
864
- open_time=ot,
916
+ tick=tick,
917
+ token_vault_0=token_vault_0,
918
+ token_vault_1=token_vault_1,
919
+ open_time=0,
865
920
  ),
866
921
  )
867
922
 
868
923
 
869
- def parse_clmm_collect_from_data(data: bytes, meta: dict) -> DexEvent:
870
- if len(data) < 32 + 32 + 8 + 8:
924
+ def parse_clmm_collect_personal_from_data(data: bytes, meta: dict) -> DexEvent:
925
+ if len(data) < 32 + 32 + 32 + 8 + 8:
871
926
  return DexEvent()
872
927
  o = 0
873
- ps = _pub(data, o)
874
- o += 32
875
928
  pn = _pub(data, o)
876
929
  o += 32
930
+ recipient_0 = _pub(data, o)
931
+ o += 32
932
+ recipient_1 = _pub(data, o)
933
+ o += 32
877
934
  a0 = _u64le(data, o)
878
935
  o += 8
879
936
  a1 = _u64le(data, o)
@@ -882,14 +939,325 @@ def parse_clmm_collect_from_data(data: bytes, meta: dict) -> DexEvent:
882
939
  type=EventType.RAYDIUM_CLMM_COLLECT_FEE,
883
940
  data=RaydiumClmmCollectFeeEvent(
884
941
  metadata=_make_meta(meta),
885
- pool_state=ps,
942
+ pool_state=Z,
886
943
  position_nft_mint=pn,
944
+ recipient_token_account_0=recipient_0,
945
+ recipient_token_account_1=recipient_1,
887
946
  amount_0=a0,
888
947
  amount_1=a1,
889
948
  ),
890
949
  )
891
950
 
892
951
 
952
+ def parse_clmm_collect_protocol_from_data(data: bytes, meta: dict) -> DexEvent:
953
+ if len(data) < 32 + 32 + 32 + 8 + 8:
954
+ return DexEvent()
955
+ o = 0
956
+ ps = _pub(data, o)
957
+ o += 32
958
+ recipient_0 = _pub(data, o)
959
+ o += 32
960
+ recipient_1 = _pub(data, o)
961
+ o += 32
962
+ a0 = _u64le(data, o)
963
+ o += 8
964
+ a1 = _u64le(data, o)
965
+
966
+ return DexEvent(
967
+ type=EventType.RAYDIUM_CLMM_COLLECT_FEE,
968
+ data=RaydiumClmmCollectFeeEvent(
969
+ metadata=_make_meta(meta),
970
+ pool_state=ps,
971
+ position_nft_mint=Z,
972
+ recipient_token_account_0=recipient_0,
973
+ recipient_token_account_1=recipient_1,
974
+ amount_0=a0,
975
+ amount_1=a1,
976
+ ),
977
+ )
978
+
979
+
980
+ def parse_clmm_liquidity_change_from_data(data: bytes, meta: dict) -> DexEvent:
981
+ if len(data) < 32 + 4 + 4 + 4 + 16 + 16:
982
+ return DexEvent()
983
+ o = 0
984
+ pool_state = _pub(data, o)
985
+ o += 32
986
+ tick = _i32le(data, o)
987
+ o += 4
988
+ tick_lower = _i32le(data, o)
989
+ o += 4
990
+ tick_upper = _i32le(data, o)
991
+ o += 4
992
+ before = str(_u128le_int(data, o))
993
+ o += 16
994
+ after = str(_u128le_int(data, o))
995
+ return DexEvent(
996
+ type=EventType.RAYDIUM_CLMM_LIQUIDITY_CHANGE,
997
+ data=RaydiumClmmLiquidityChangeEvent(
998
+ metadata=_make_meta(meta),
999
+ pool_state=pool_state,
1000
+ tick=tick,
1001
+ tick_lower=tick_lower,
1002
+ tick_upper=tick_upper,
1003
+ liquidity_before=before,
1004
+ liquidity_after=after,
1005
+ ),
1006
+ )
1007
+
1008
+
1009
+ def parse_clmm_config_change_from_data(data: bytes, meta: dict) -> DexEvent:
1010
+ if len(data) < 2 + 32 + 4 + 4 + 2 + 4 + 32:
1011
+ return DexEvent()
1012
+ o = 0
1013
+ index = _u16le(data, o)
1014
+ o += 2
1015
+ owner = _pub(data, o)
1016
+ o += 32
1017
+ protocol_fee_rate = _u32le(data, o)
1018
+ o += 4
1019
+ trade_fee_rate = _u32le(data, o)
1020
+ o += 4
1021
+ tick_spacing = _u16le(data, o)
1022
+ o += 2
1023
+ fund_fee_rate = _u32le(data, o)
1024
+ o += 4
1025
+ fund_owner = _pub(data, o)
1026
+ return DexEvent(
1027
+ type=EventType.RAYDIUM_CLMM_CONFIG_CHANGE,
1028
+ data=RaydiumClmmConfigChangeEvent(
1029
+ metadata=_make_meta(meta),
1030
+ index=index,
1031
+ owner=owner,
1032
+ protocol_fee_rate=protocol_fee_rate,
1033
+ trade_fee_rate=trade_fee_rate,
1034
+ tick_spacing=tick_spacing,
1035
+ fund_fee_rate=fund_fee_rate,
1036
+ fund_owner=fund_owner,
1037
+ ),
1038
+ )
1039
+
1040
+
1041
+ def parse_clmm_create_personal_position_from_data(data: bytes, meta: dict) -> DexEvent:
1042
+ if len(data) < 32 + 32 + 32 + 4 + 4 + 16 + 8 + 8 + 8 + 8:
1043
+ return DexEvent()
1044
+ o = 0
1045
+ pool_state = _pub(data, o)
1046
+ o += 32
1047
+ minter = _pub(data, o)
1048
+ o += 32
1049
+ nft_owner = _pub(data, o)
1050
+ o += 32
1051
+ tick_lower_index = _i32le(data, o)
1052
+ o += 4
1053
+ tick_upper_index = _i32le(data, o)
1054
+ o += 4
1055
+ liquidity = str(_u128le_int(data, o))
1056
+ o += 16
1057
+ deposit_amount_0 = _u64le(data, o)
1058
+ o += 8
1059
+ deposit_amount_1 = _u64le(data, o)
1060
+ o += 8
1061
+ deposit_amount_0_transfer_fee = _u64le(data, o)
1062
+ o += 8
1063
+ deposit_amount_1_transfer_fee = _u64le(data, o)
1064
+ return DexEvent(
1065
+ type=EventType.RAYDIUM_CLMM_CREATE_PERSONAL_POSITION,
1066
+ data=RaydiumClmmCreatePersonalPositionEvent(
1067
+ metadata=_make_meta(meta),
1068
+ pool_state=pool_state,
1069
+ minter=minter,
1070
+ nft_owner=nft_owner,
1071
+ tick_lower_index=tick_lower_index,
1072
+ tick_upper_index=tick_upper_index,
1073
+ liquidity=liquidity,
1074
+ deposit_amount_0=deposit_amount_0,
1075
+ deposit_amount_1=deposit_amount_1,
1076
+ deposit_amount_0_transfer_fee=deposit_amount_0_transfer_fee,
1077
+ deposit_amount_1_transfer_fee=deposit_amount_1_transfer_fee,
1078
+ ),
1079
+ )
1080
+
1081
+
1082
+ def parse_clmm_liquidity_calculate_from_data(data: bytes, meta: dict) -> DexEvent:
1083
+ if len(data) < 16 + 16 + 4 + 8 + 8 + 8 + 8 + 8 + 8:
1084
+ return DexEvent()
1085
+ o = 0
1086
+ pool_liquidity = str(_u128le_int(data, o))
1087
+ o += 16
1088
+ pool_sqrt_price_x64 = str(_u128le_int(data, o))
1089
+ o += 16
1090
+ pool_tick = _i32le(data, o)
1091
+ o += 4
1092
+ calc_amount_0 = _u64le(data, o)
1093
+ o += 8
1094
+ calc_amount_1 = _u64le(data, o)
1095
+ o += 8
1096
+ trade_fee_owed_0 = _u64le(data, o)
1097
+ o += 8
1098
+ trade_fee_owed_1 = _u64le(data, o)
1099
+ o += 8
1100
+ transfer_fee_0 = _u64le(data, o)
1101
+ o += 8
1102
+ transfer_fee_1 = _u64le(data, o)
1103
+ return DexEvent(
1104
+ type=EventType.RAYDIUM_CLMM_LIQUIDITY_CALCULATE,
1105
+ data=RaydiumClmmLiquidityCalculateEvent(
1106
+ metadata=_make_meta(meta),
1107
+ pool_liquidity=pool_liquidity,
1108
+ pool_sqrt_price_x64=pool_sqrt_price_x64,
1109
+ pool_tick=pool_tick,
1110
+ calc_amount_0=calc_amount_0,
1111
+ calc_amount_1=calc_amount_1,
1112
+ trade_fee_owed_0=trade_fee_owed_0,
1113
+ trade_fee_owed_1=trade_fee_owed_1,
1114
+ transfer_fee_0=transfer_fee_0,
1115
+ transfer_fee_1=transfer_fee_1,
1116
+ ),
1117
+ )
1118
+
1119
+
1120
+ def parse_clmm_open_limit_order_from_data(data: bytes, meta: dict) -> DexEvent:
1121
+ if len(data) < 32 + 32 + 1 + 4 + 8 + 8:
1122
+ return DexEvent()
1123
+ o = 0
1124
+ pool_id = _pub(data, o)
1125
+ o += 32
1126
+ limit_order = _pub(data, o)
1127
+ o += 32
1128
+ zero_for_one = _bool(data, o)
1129
+ o += 1
1130
+ tick_index = _i32le(data, o)
1131
+ o += 4
1132
+ total_amount = _u64le(data, o)
1133
+ o += 8
1134
+ transfer_fee = _u64le(data, o)
1135
+ return DexEvent(
1136
+ type=EventType.RAYDIUM_CLMM_OPEN_LIMIT_ORDER,
1137
+ data=RaydiumClmmOpenLimitOrderEvent(
1138
+ metadata=_make_meta(meta),
1139
+ pool_id=pool_id,
1140
+ limit_order=limit_order,
1141
+ zero_for_one=zero_for_one,
1142
+ tick_index=tick_index,
1143
+ total_amount=total_amount,
1144
+ transfer_fee=transfer_fee,
1145
+ ),
1146
+ )
1147
+
1148
+
1149
+ def parse_clmm_increase_limit_order_from_data(data: bytes, meta: dict) -> DexEvent:
1150
+ if len(data) < 32 + 32 + 1 + 4 + 8 + 8 + 8:
1151
+ return DexEvent()
1152
+ o = 0
1153
+ pool_id = _pub(data, o)
1154
+ o += 32
1155
+ limit_order = _pub(data, o)
1156
+ o += 32
1157
+ zero_for_one = _bool(data, o)
1158
+ o += 1
1159
+ tick_index = _i32le(data, o)
1160
+ o += 4
1161
+ total_amount = _u64le(data, o)
1162
+ o += 8
1163
+ increased_amount = _u64le(data, o)
1164
+ o += 8
1165
+ transfer_fee = _u64le(data, o)
1166
+ return DexEvent(
1167
+ type=EventType.RAYDIUM_CLMM_INCREASE_LIMIT_ORDER,
1168
+ data=RaydiumClmmIncreaseLimitOrderEvent(
1169
+ metadata=_make_meta(meta),
1170
+ pool_id=pool_id,
1171
+ limit_order=limit_order,
1172
+ zero_for_one=zero_for_one,
1173
+ tick_index=tick_index,
1174
+ total_amount=total_amount,
1175
+ increased_amount=increased_amount,
1176
+ transfer_fee=transfer_fee,
1177
+ ),
1178
+ )
1179
+
1180
+
1181
+ def parse_clmm_decrease_limit_order_from_data(data: bytes, meta: dict) -> DexEvent:
1182
+ if len(data) < 32 + 32 + 1 + 4 + 8 + 8 + 8 + 8:
1183
+ return DexEvent()
1184
+ o = 0
1185
+ pool_id = _pub(data, o)
1186
+ o += 32
1187
+ limit_order = _pub(data, o)
1188
+ o += 32
1189
+ zero_for_one = _bool(data, o)
1190
+ o += 1
1191
+ tick_index = _i32le(data, o)
1192
+ o += 4
1193
+ total_amount = _u64le(data, o)
1194
+ o += 8
1195
+ filled_amount = _u64le(data, o)
1196
+ o += 8
1197
+ settled_output_amount = _u64le(data, o)
1198
+ o += 8
1199
+ decreased_amount = _u64le(data, o)
1200
+ return DexEvent(
1201
+ type=EventType.RAYDIUM_CLMM_DECREASE_LIMIT_ORDER,
1202
+ data=RaydiumClmmDecreaseLimitOrderEvent(
1203
+ metadata=_make_meta(meta),
1204
+ pool_id=pool_id,
1205
+ limit_order=limit_order,
1206
+ zero_for_one=zero_for_one,
1207
+ tick_index=tick_index,
1208
+ total_amount=total_amount,
1209
+ filled_amount=filled_amount,
1210
+ settled_output_amount=settled_output_amount,
1211
+ decreased_amount=decreased_amount,
1212
+ ),
1213
+ )
1214
+
1215
+
1216
+ def parse_clmm_settle_limit_order_from_data(data: bytes, meta: dict) -> DexEvent:
1217
+ if len(data) < 32 + 32 + 1 + 4 + 8 + 8 + 8:
1218
+ return DexEvent()
1219
+ o = 0
1220
+ pool_id = _pub(data, o)
1221
+ o += 32
1222
+ limit_order = _pub(data, o)
1223
+ o += 32
1224
+ zero_for_one = _bool(data, o)
1225
+ o += 1
1226
+ tick_index = _i32le(data, o)
1227
+ o += 4
1228
+ total_amount = _u64le(data, o)
1229
+ o += 8
1230
+ filled_amount = _u64le(data, o)
1231
+ o += 8
1232
+ settled_amount_out = _u64le(data, o)
1233
+ return DexEvent(
1234
+ type=EventType.RAYDIUM_CLMM_SETTLE_LIMIT_ORDER,
1235
+ data=RaydiumClmmSettleLimitOrderEvent(
1236
+ metadata=_make_meta(meta),
1237
+ pool_id=pool_id,
1238
+ limit_order=limit_order,
1239
+ zero_for_one=zero_for_one,
1240
+ tick_index=tick_index,
1241
+ total_amount=total_amount,
1242
+ filled_amount=filled_amount,
1243
+ settled_amount_out=settled_amount_out,
1244
+ ),
1245
+ )
1246
+
1247
+
1248
+ def parse_clmm_update_reward_infos_from_data(data: bytes, meta: dict) -> DexEvent:
1249
+ if len(data) < 16 * 3:
1250
+ return DexEvent()
1251
+ rewards = [str(_u128le_int(data, i * 16)) for i in range(3)]
1252
+ return DexEvent(
1253
+ type=EventType.RAYDIUM_CLMM_UPDATE_REWARD_INFOS,
1254
+ data=RaydiumClmmUpdateRewardInfosEvent(
1255
+ metadata=_make_meta(meta),
1256
+ reward_growth_global_x64=rewards,
1257
+ ),
1258
+ )
1259
+
1260
+
893
1261
  # --- Raydium AMM ---
894
1262
 
895
1263
 
@@ -1083,6 +1451,31 @@ def parse_cpmm_swap_out_from_data(data: bytes, meta: dict) -> Optional[DexEvent]
1083
1451
  )
1084
1452
 
1085
1453
 
1454
+ def parse_cpmm_create_from_data(data: bytes, meta: dict) -> Optional[DexEvent]:
1455
+ if len(data) < 32 + 32 + 32 + 32 + 8 + 8:
1456
+ return None
1457
+ o = 0
1458
+ pool = _pub(data, o)
1459
+ o += 32
1460
+ o += 32
1461
+ o += 32
1462
+ creator = _pub(data, o)
1463
+ o += 32
1464
+ init_amount0 = _u64le(data, o)
1465
+ o += 8
1466
+ init_amount1 = _u64le(data, o)
1467
+ return DexEvent(
1468
+ type=EventType.RAYDIUM_CPMM_INITIALIZE,
1469
+ data=RaydiumCpmmInitializeEvent(
1470
+ metadata=_make_meta(meta),
1471
+ pool=pool,
1472
+ creator=creator,
1473
+ init_amount0=init_amount0,
1474
+ init_amount1=init_amount1,
1475
+ ),
1476
+ )
1477
+
1478
+
1086
1479
  def parse_cpmm_deposit_from_data(data: bytes, meta: dict) -> Optional[DexEvent]:
1087
1480
  if len(data) < 32 + 32 + 8 + 8 + 8:
1088
1481
  return None
@@ -1427,6 +1820,9 @@ DAMM_CLOSE_POSITION = _d(20, 145, 144, 68, 143, 142, 214, 178)
1427
1820
  DAMM_ADD_LIQUIDITY = _d(175, 242, 8, 157, 30, 247, 185, 169)
1428
1821
  DAMM_REMOVE_LIQUIDITY = _d(87, 46, 88, 98, 175, 96, 34, 91)
1429
1822
  DAMM_INIT_POOL = _d(228, 50, 246, 85, 203, 66, 134, 37)
1823
+ DBC_SWAP = DAMM_SWAP
1824
+ DBC_INIT_POOL = DAMM_INIT_POOL
1825
+ DBC_CURVE_COMPLETE = _d(229, 231, 86, 84, 156, 134, 75, 24)
1430
1826
 
1431
1827
 
1432
1828
  def parse_meteora_damm_from_buf(buf: bytes, meta: dict) -> Optional[DexEvent]:
@@ -1451,6 +1847,120 @@ def parse_meteora_damm_from_buf(buf: bytes, meta: dict) -> Optional[DexEvent]:
1451
1847
  return None
1452
1848
 
1453
1849
 
1850
+ def parse_meteora_dbc_from_discriminator(disc: int, data: bytes, meta: dict) -> Optional[DexEvent]:
1851
+ if disc == DBC_SWAP:
1852
+ return _parse_dbc_swap(data, meta)
1853
+ if disc == DBC_INIT_POOL:
1854
+ return _parse_dbc_initialize_pool(data, meta)
1855
+ if disc == DBC_CURVE_COMPLETE:
1856
+ return _parse_dbc_curve_complete(data, meta)
1857
+ return None
1858
+
1859
+
1860
+ def _parse_dbc_swap(data: bytes, meta: dict) -> Optional[DexEvent]:
1861
+ if len(data) < 32 * 2 + 2 + 8 * 9 + 16:
1862
+ return None
1863
+ o = 0
1864
+ pool = _pub(data, o)
1865
+ o += 32
1866
+ config = _pub(data, o)
1867
+ o += 32
1868
+ td = _u8(data, o)
1869
+ o += 1
1870
+ has_referral = _bool(data, o)
1871
+ o += 1
1872
+ params_amount_in = _u64le(data, o)
1873
+ o += 8
1874
+ minimum_amount_out = _u64le(data, o)
1875
+ o += 8
1876
+ actual_input_amount = _u64le(data, o)
1877
+ o += 8
1878
+ output_amount = _u64le(data, o)
1879
+ o += 8
1880
+ next_sqrt_price = _u128le_int(data, o)
1881
+ o += 16
1882
+ trading_fee = _u64le(data, o)
1883
+ o += 8
1884
+ protocol_fee = _u64le(data, o)
1885
+ o += 8
1886
+ referral_fee = _u64le(data, o)
1887
+ o += 8
1888
+ amount_in = _u64le(data, o) if o + 8 <= len(data) else params_amount_in
1889
+ o += 8
1890
+ current_timestamp = _u64le(data, o)
1891
+ return DexEvent(
1892
+ type=EventType.METEORA_DBC_SWAP,
1893
+ data=MeteoraDbcSwapEvent(
1894
+ metadata=_make_meta(meta),
1895
+ pool=pool,
1896
+ config=config,
1897
+ trade_direction=td,
1898
+ has_referral=has_referral,
1899
+ amount_in=amount_in,
1900
+ minimum_amount_out=minimum_amount_out,
1901
+ actual_input_amount=actual_input_amount,
1902
+ output_amount=output_amount,
1903
+ next_sqrt_price=next_sqrt_price,
1904
+ trading_fee=trading_fee,
1905
+ protocol_fee=protocol_fee,
1906
+ referral_fee=referral_fee,
1907
+ current_timestamp=current_timestamp,
1908
+ ),
1909
+ )
1910
+
1911
+
1912
+ def _parse_dbc_initialize_pool(data: bytes, meta: dict) -> Optional[DexEvent]:
1913
+ if len(data) < 32 * 4 + 1 + 8:
1914
+ return None
1915
+ o = 0
1916
+ pool = _pub(data, o)
1917
+ o += 32
1918
+ config = _pub(data, o)
1919
+ o += 32
1920
+ creator = _pub(data, o)
1921
+ o += 32
1922
+ base_mint = _pub(data, o)
1923
+ o += 32
1924
+ pool_type = _u8(data, o)
1925
+ o += 1
1926
+ activation_point = _u64le(data, o)
1927
+ return DexEvent(
1928
+ type=EventType.METEORA_DBC_INITIALIZE_POOL,
1929
+ data=MeteoraDbcInitializePoolEvent(
1930
+ metadata=_make_meta(meta),
1931
+ pool=pool,
1932
+ config=config,
1933
+ creator=creator,
1934
+ base_mint=base_mint,
1935
+ pool_type=pool_type,
1936
+ activation_point=activation_point,
1937
+ ),
1938
+ )
1939
+
1940
+
1941
+ def _parse_dbc_curve_complete(data: bytes, meta: dict) -> Optional[DexEvent]:
1942
+ if len(data) < 32 * 2 + 8 * 2:
1943
+ return None
1944
+ o = 0
1945
+ pool = _pub(data, o)
1946
+ o += 32
1947
+ config = _pub(data, o)
1948
+ o += 32
1949
+ base_reserve = _u64le(data, o)
1950
+ o += 8
1951
+ quote_reserve = _u64le(data, o)
1952
+ return DexEvent(
1953
+ type=EventType.METEORA_DBC_CURVE_COMPLETE,
1954
+ data=MeteoraDbcCurveCompleteEvent(
1955
+ metadata=_make_meta(meta),
1956
+ pool=pool,
1957
+ config=config,
1958
+ base_reserve=base_reserve,
1959
+ quote_reserve=quote_reserve,
1960
+ ),
1961
+ )
1962
+
1963
+
1454
1964
  def _parse_damm_swap(data: bytes, meta: dict) -> Optional[DexEvent]:
1455
1965
  if len(data) < 32 + 32 + 1 + 1 + 8 * 8 + 16 + 8 * 4:
1456
1966
  return None
@@ -2449,13 +2959,24 @@ _LOG_DISCRIMINATOR_EVENT_TYPES = {
2449
2959
  _d(177, 49, 12, 210, 160, 118, 167, 116): EventType.PUMP_SWAP_CREATE_POOL,
2450
2960
  _d(120, 248, 61, 83, 31, 142, 107, 144): EventType.PUMP_SWAP_LIQUIDITY_ADDED,
2451
2961
  _d(22, 9, 133, 26, 160, 44, 71, 192): EventType.PUMP_SWAP_LIQUIDITY_REMOVED,
2452
- _d(248, 198, 158, 145, 225, 117, 135, 200): EventType.RAYDIUM_CLMM_SWAP,
2453
- _d(133, 29, 89, 223, 69, 238, 176, 10): EventType.RAYDIUM_CLMM_INCREASE_LIQUIDITY,
2454
- _d(160, 38, 208, 111, 104, 91, 44, 1): EventType.RAYDIUM_CLMM_DECREASE_LIQUIDITY,
2455
- _d(233, 146, 209, 142, 207, 104, 64, 188): EventType.RAYDIUM_CLMM_CREATE_POOL,
2456
- _d(164, 152, 207, 99, 187, 104, 171, 119): EventType.RAYDIUM_CLMM_COLLECT_FEE,
2962
+ _d(64, 198, 205, 232, 38, 8, 113, 226): EventType.RAYDIUM_CLMM_SWAP,
2963
+ _d(49, 79, 105, 212, 32, 34, 30, 84): EventType.RAYDIUM_CLMM_INCREASE_LIQUIDITY,
2964
+ _d(58, 222, 86, 58, 68, 50, 85, 56): EventType.RAYDIUM_CLMM_DECREASE_LIQUIDITY,
2965
+ _d(126, 240, 175, 206, 158, 88, 153, 107): EventType.RAYDIUM_CLMM_LIQUIDITY_CHANGE,
2966
+ _d(247, 189, 7, 119, 106, 112, 95, 151): EventType.RAYDIUM_CLMM_CONFIG_CHANGE,
2967
+ _d(100, 30, 87, 249, 196, 223, 154, 206): EventType.RAYDIUM_CLMM_CREATE_PERSONAL_POSITION,
2968
+ _d(237, 112, 148, 230, 57, 84, 180, 162): EventType.RAYDIUM_CLMM_LIQUIDITY_CALCULATE,
2969
+ _d(106, 24, 71, 85, 57, 169, 158, 216): EventType.RAYDIUM_CLMM_OPEN_LIMIT_ORDER,
2970
+ _d(11, 120, 13, 204, 199, 87, 19, 200): EventType.RAYDIUM_CLMM_INCREASE_LIMIT_ORDER,
2971
+ _d(70, 48, 40, 221, 219, 237, 212, 163): EventType.RAYDIUM_CLMM_DECREASE_LIMIT_ORDER,
2972
+ _d(88, 119, 77, 164, 125, 124, 10, 194): EventType.RAYDIUM_CLMM_SETTLE_LIMIT_ORDER,
2973
+ _d(109, 127, 186, 78, 114, 65, 37, 236): EventType.RAYDIUM_CLMM_UPDATE_REWARD_INFOS,
2974
+ _d(25, 94, 75, 47, 112, 99, 53, 63): EventType.RAYDIUM_CLMM_CREATE_POOL,
2975
+ _d(166, 174, 105, 192, 81, 161, 83, 105): EventType.RAYDIUM_CLMM_COLLECT_FEE,
2976
+ _d(206, 87, 17, 79, 45, 41, 213, 61): EventType.RAYDIUM_CLMM_COLLECT_FEE,
2457
2977
  _d(143, 190, 90, 218, 196, 30, 51, 222): EventType.RAYDIUM_CPMM_SWAP,
2458
2978
  _d(55, 217, 98, 86, 163, 74, 180, 173): EventType.RAYDIUM_CPMM_SWAP,
2979
+ _d(233, 146, 209, 142, 207, 104, 64, 188): EventType.RAYDIUM_CPMM_INITIALIZE,
2459
2980
  _d(242, 35, 198, 137, 82, 225, 242, 182): EventType.RAYDIUM_CPMM_DEPOSIT,
2460
2981
  _d(183, 18, 70, 156, 148, 109, 161, 34): EventType.RAYDIUM_CPMM_WITHDRAW,
2461
2982
  _d(0, 0, 0, 0, 0, 0, 0, 9): EventType.RAYDIUM_AMM_V4_SWAP,
@@ -2496,6 +3017,365 @@ def event_type_for_discriminator(disc: int) -> Optional[EventType]:
2496
3017
  return _LOG_DISCRIMINATOR_EVENT_TYPES.get(disc)
2497
3018
 
2498
3019
 
3020
+ RAYDIUM_LAUNCHLAB_PROGRAM_ID = "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"
3021
+ PUMPFUN_PROGRAM_ID = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P"
3022
+ PUMP_FEES_PROGRAM_ID = "pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ"
3023
+ PUMPSWAP_PROGRAM_ID = "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
3024
+ RAYDIUM_CLMM_PROGRAM_ID = "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"
3025
+ RAYDIUM_CPMM_PROGRAM_ID = "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"
3026
+ RAYDIUM_AMM_V4_PROGRAM_ID = "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"
3027
+ ORCA_WHIRLPOOL_PROGRAM_ID = "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"
3028
+ METEORA_POOLS_PROGRAM_ID = "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB"
3029
+ METEORA_DAMM_V2_PROGRAM_ID = "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"
3030
+ METEORA_DBC_PROGRAM_ID = "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"
3031
+ METEORA_DLMM_PROGRAM_ID = "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"
3032
+
3033
+
3034
+ def event_type_for_program_discriminator(program_id: Optional[str], disc: int) -> Optional[EventType]:
3035
+ if program_id == PUMPFUN_PROGRAM_ID:
3036
+ if disc == PUMP_CREATE:
3037
+ return EventType.PUMP_FUN_CREATE
3038
+ if disc == PUMP_TRADE:
3039
+ return EventType.PUMP_FUN_TRADE
3040
+ if disc == PUMP_MIGRATE:
3041
+ return EventType.PUMP_FUN_MIGRATE
3042
+ if disc == PUMP_MIGRATE_BONDING_CURVE_CREATOR:
3043
+ return EventType.PUMP_FUN_MIGRATE_BONDING_CURVE_CREATOR
3044
+ return None
3045
+ if program_id == PUMP_FEES_PROGRAM_ID:
3046
+ mapping = {
3047
+ PUMP_FEES_CREATE_FEE_SHARING_CONFIG: EventType.PUMP_FEES_CREATE_FEE_SHARING_CONFIG,
3048
+ PUMP_FEES_INITIALIZE_FEE_CONFIG: EventType.PUMP_FEES_INITIALIZE_FEE_CONFIG,
3049
+ PUMP_FEES_RESET_FEE_SHARING_CONFIG: EventType.PUMP_FEES_RESET_FEE_SHARING_CONFIG,
3050
+ PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY: EventType.PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY,
3051
+ PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY: EventType.PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY,
3052
+ PUMP_FEES_UPDATE_ADMIN: EventType.PUMP_FEES_UPDATE_ADMIN,
3053
+ PUMP_FEES_UPDATE_FEE_CONFIG: EventType.PUMP_FEES_UPDATE_FEE_CONFIG,
3054
+ PUMP_FEES_UPDATE_FEE_SHARES: EventType.PUMP_FEES_UPDATE_FEE_SHARES,
3055
+ PUMP_FEES_UPSERT_FEE_TIERS: EventType.PUMP_FEES_UPSERT_FEE_TIERS,
3056
+ }
3057
+ return mapping.get(disc)
3058
+ if program_id == PUMPSWAP_PROGRAM_ID:
3059
+ mapping = {
3060
+ _d(103, 244, 82, 31, 44, 245, 119, 119): EventType.PUMP_SWAP_BUY,
3061
+ _d(62, 47, 55, 10, 165, 3, 220, 42): EventType.PUMP_SWAP_SELL,
3062
+ _d(177, 49, 12, 210, 160, 118, 167, 116): EventType.PUMP_SWAP_CREATE_POOL,
3063
+ _d(120, 248, 61, 83, 31, 142, 107, 144): EventType.PUMP_SWAP_LIQUIDITY_ADDED,
3064
+ _d(22, 9, 133, 26, 160, 44, 71, 192): EventType.PUMP_SWAP_LIQUIDITY_REMOVED,
3065
+ }
3066
+ return mapping.get(disc)
3067
+ if program_id == RAYDIUM_LAUNCHLAB_PROGRAM_ID:
3068
+ if disc == DISC_RAYDIUM_LAUNCHLAB_TRADE:
3069
+ return EventType.RAYDIUM_LAUNCHLAB_TRADE
3070
+ if disc == DISC_RAYDIUM_LAUNCHLAB_POOL_CREATE:
3071
+ return EventType.RAYDIUM_LAUNCHLAB_POOL_CREATE
3072
+ return None
3073
+ if program_id == RAYDIUM_CLMM_PROGRAM_ID:
3074
+ mapping = {
3075
+ _d(64, 198, 205, 232, 38, 8, 113, 226): EventType.RAYDIUM_CLMM_SWAP,
3076
+ _d(49, 79, 105, 212, 32, 34, 30, 84): EventType.RAYDIUM_CLMM_INCREASE_LIQUIDITY,
3077
+ _d(58, 222, 86, 58, 68, 50, 85, 56): EventType.RAYDIUM_CLMM_DECREASE_LIQUIDITY,
3078
+ _d(126, 240, 175, 206, 158, 88, 153, 107): EventType.RAYDIUM_CLMM_LIQUIDITY_CHANGE,
3079
+ _d(247, 189, 7, 119, 106, 112, 95, 151): EventType.RAYDIUM_CLMM_CONFIG_CHANGE,
3080
+ _d(100, 30, 87, 249, 196, 223, 154, 206): EventType.RAYDIUM_CLMM_CREATE_PERSONAL_POSITION,
3081
+ _d(237, 112, 148, 230, 57, 84, 180, 162): EventType.RAYDIUM_CLMM_LIQUIDITY_CALCULATE,
3082
+ _d(106, 24, 71, 85, 57, 169, 158, 216): EventType.RAYDIUM_CLMM_OPEN_LIMIT_ORDER,
3083
+ _d(11, 120, 13, 204, 199, 87, 19, 200): EventType.RAYDIUM_CLMM_INCREASE_LIMIT_ORDER,
3084
+ _d(70, 48, 40, 221, 219, 237, 212, 163): EventType.RAYDIUM_CLMM_DECREASE_LIMIT_ORDER,
3085
+ _d(88, 119, 77, 164, 125, 124, 10, 194): EventType.RAYDIUM_CLMM_SETTLE_LIMIT_ORDER,
3086
+ _d(109, 127, 186, 78, 114, 65, 37, 236): EventType.RAYDIUM_CLMM_UPDATE_REWARD_INFOS,
3087
+ _d(25, 94, 75, 47, 112, 99, 53, 63): EventType.RAYDIUM_CLMM_CREATE_POOL,
3088
+ _d(166, 174, 105, 192, 81, 161, 83, 105): EventType.RAYDIUM_CLMM_COLLECT_FEE,
3089
+ _d(206, 87, 17, 79, 45, 41, 213, 61): EventType.RAYDIUM_CLMM_COLLECT_FEE,
3090
+ }
3091
+ return mapping.get(disc)
3092
+ if program_id == RAYDIUM_CPMM_PROGRAM_ID:
3093
+ mapping = {
3094
+ _d(143, 190, 90, 218, 196, 30, 51, 222): EventType.RAYDIUM_CPMM_SWAP,
3095
+ _d(55, 217, 98, 86, 163, 74, 180, 173): EventType.RAYDIUM_CPMM_SWAP,
3096
+ _d(233, 146, 209, 142, 207, 104, 64, 188): EventType.RAYDIUM_CPMM_INITIALIZE,
3097
+ _d(242, 35, 198, 137, 82, 225, 242, 182): EventType.RAYDIUM_CPMM_DEPOSIT,
3098
+ _d(183, 18, 70, 156, 148, 109, 161, 34): EventType.RAYDIUM_CPMM_WITHDRAW,
3099
+ }
3100
+ return mapping.get(disc)
3101
+ if program_id == RAYDIUM_AMM_V4_PROGRAM_ID:
3102
+ mapping = {
3103
+ _d(0, 0, 0, 0, 0, 0, 0, 9): EventType.RAYDIUM_AMM_V4_SWAP,
3104
+ _d(0, 0, 0, 0, 0, 0, 0, 11): EventType.RAYDIUM_AMM_V4_SWAP,
3105
+ _d(0, 0, 0, 0, 0, 0, 0, 3): EventType.RAYDIUM_AMM_V4_DEPOSIT,
3106
+ _d(0, 0, 0, 0, 0, 0, 0, 4): EventType.RAYDIUM_AMM_V4_WITHDRAW,
3107
+ _d(0, 0, 0, 0, 0, 0, 0, 1): EventType.RAYDIUM_AMM_V4_INITIALIZE2,
3108
+ _d(0, 0, 0, 0, 0, 0, 0, 7): EventType.RAYDIUM_AMM_V4_WITHDRAW_PNL,
3109
+ }
3110
+ return mapping.get(disc)
3111
+ if program_id == ORCA_WHIRLPOOL_PROGRAM_ID:
3112
+ mapping = {
3113
+ _d(225, 202, 73, 175, 147, 43, 160, 150): EventType.ORCA_WHIRLPOOL_SWAP,
3114
+ _d(30, 7, 144, 181, 102, 254, 155, 161): EventType.ORCA_WHIRLPOOL_LIQUIDITY_INCREASED,
3115
+ _d(166, 1, 36, 71, 112, 202, 181, 171): EventType.ORCA_WHIRLPOOL_LIQUIDITY_DECREASED,
3116
+ _d(100, 118, 173, 87, 12, 198, 254, 229): EventType.ORCA_WHIRLPOOL_POOL_INITIALIZED,
3117
+ }
3118
+ return mapping.get(disc)
3119
+ if program_id == METEORA_POOLS_PROGRAM_ID:
3120
+ mapping = {
3121
+ _d(81, 108, 227, 190, 205, 208, 10, 196): EventType.METEORA_POOLS_SWAP,
3122
+ _d(31, 94, 125, 90, 227, 52, 61, 186): EventType.METEORA_POOLS_ADD_LIQUIDITY,
3123
+ _d(116, 244, 97, 232, 103, 31, 152, 58): EventType.METEORA_POOLS_REMOVE_LIQUIDITY,
3124
+ _d(121, 127, 38, 136, 92, 55, 14, 247): EventType.METEORA_POOLS_BOOTSTRAP_LIQUIDITY,
3125
+ _d(202, 44, 41, 88, 104, 220, 157, 82): EventType.METEORA_POOLS_POOL_CREATED,
3126
+ _d(245, 26, 198, 164, 88, 18, 75, 9): EventType.METEORA_POOLS_SET_POOL_FEES,
3127
+ }
3128
+ return mapping.get(disc)
3129
+ if program_id == METEORA_DAMM_V2_PROGRAM_ID:
3130
+ if disc in (DAMM_SWAP, DAMM_SWAP2):
3131
+ return EventType.METEORA_DAMM_V2_SWAP
3132
+ if disc == DAMM_ADD_LIQUIDITY:
3133
+ return EventType.METEORA_DAMM_V2_ADD_LIQUIDITY
3134
+ if disc == DAMM_REMOVE_LIQUIDITY:
3135
+ return EventType.METEORA_DAMM_V2_REMOVE_LIQUIDITY
3136
+ if disc == DAMM_INIT_POOL:
3137
+ return EventType.METEORA_DAMM_V2_INITIALIZE_POOL
3138
+ if disc == DAMM_CREATE_POSITION:
3139
+ return EventType.METEORA_DAMM_V2_CREATE_POSITION
3140
+ if disc == DAMM_CLOSE_POSITION:
3141
+ return EventType.METEORA_DAMM_V2_CLOSE_POSITION
3142
+ return None
3143
+ if program_id == METEORA_DBC_PROGRAM_ID:
3144
+ if disc == DBC_SWAP:
3145
+ return EventType.METEORA_DBC_SWAP
3146
+ if disc == DBC_INIT_POOL:
3147
+ return EventType.METEORA_DBC_INITIALIZE_POOL
3148
+ if disc == DBC_CURVE_COMPLETE:
3149
+ return EventType.METEORA_DBC_CURVE_COMPLETE
3150
+ return None
3151
+ if program_id == METEORA_DLMM_PROGRAM_ID:
3152
+ if disc == DLMM_SWAP:
3153
+ return EventType.METEORA_DLMM_SWAP
3154
+ if disc == DLMM_ADD_LIQ:
3155
+ return EventType.METEORA_DLMM_ADD_LIQUIDITY
3156
+ if disc == DLMM_REMOVE_LIQ:
3157
+ return EventType.METEORA_DLMM_REMOVE_LIQUIDITY
3158
+ if disc == DLMM_INIT_POOL:
3159
+ return EventType.METEORA_DLMM_INITIALIZE_POOL
3160
+ if disc == DLMM_INIT_BIN:
3161
+ return EventType.METEORA_DLMM_INITIALIZE_BIN_ARRAY
3162
+ if disc == DLMM_CREATE_POS:
3163
+ return EventType.METEORA_DLMM_CREATE_POSITION
3164
+ if disc == DLMM_CLOSE_POS:
3165
+ return EventType.METEORA_DLMM_CLOSE_POSITION
3166
+ if disc == DLMM_CLAIM_FEE:
3167
+ return EventType.METEORA_DLMM_CLAIM_FEE
3168
+ return None
3169
+ return event_type_for_discriminator(disc)
3170
+
3171
+
3172
+ def filter_wants_pumpfun_trade(event_type_filter: Any) -> bool:
3173
+ return event_type_filter is None or any(
3174
+ event_type_filter.should_include(t)
3175
+ for t in (
3176
+ EventType.PUMP_FUN_TRADE,
3177
+ EventType.PUMP_FUN_BUY,
3178
+ EventType.PUMP_FUN_SELL,
3179
+ EventType.PUMP_FUN_BUY_EXACT_SOL_IN,
3180
+ )
3181
+ )
3182
+
3183
+
3184
+ def filter_wants_raydium_launchlab_trade(event_type_filter: Any) -> bool:
3185
+ return event_type_filter is None or event_type_filter.should_include(
3186
+ EventType.RAYDIUM_LAUNCHLAB_TRADE
3187
+ )
3188
+
3189
+
3190
+ def filter_allows_unscoped_discriminator(event_type_filter: Any, disc: int) -> bool:
3191
+ if event_type_filter is None:
3192
+ return True
3193
+ if disc == PUMP_TRADE:
3194
+ return filter_wants_pumpfun_trade(event_type_filter) or filter_wants_raydium_launchlab_trade(
3195
+ event_type_filter
3196
+ )
3197
+ if disc == DLMM_SWAP:
3198
+ return event_type_filter.should_include(EventType.RAYDIUM_CPMM_SWAP) or event_type_filter.should_include(
3199
+ EventType.METEORA_DLMM_SWAP
3200
+ )
3201
+ event_type = event_type_for_discriminator(disc)
3202
+ if event_type is not None:
3203
+ return event_type_filter.should_include(event_type)
3204
+ return filter_wants_supported_logs(event_type_filter)
3205
+
3206
+
3207
+ def filter_wants_supported_logs(event_type_filter: Any) -> bool:
3208
+ return any(
3209
+ filter_includes_program(event_type_filter, program_id)
3210
+ for program_id in (
3211
+ PUMPFUN_PROGRAM_ID,
3212
+ PUMP_FEES_PROGRAM_ID,
3213
+ PUMPSWAP_PROGRAM_ID,
3214
+ RAYDIUM_LAUNCHLAB_PROGRAM_ID,
3215
+ RAYDIUM_CLMM_PROGRAM_ID,
3216
+ RAYDIUM_CPMM_PROGRAM_ID,
3217
+ RAYDIUM_AMM_V4_PROGRAM_ID,
3218
+ ORCA_WHIRLPOOL_PROGRAM_ID,
3219
+ METEORA_POOLS_PROGRAM_ID,
3220
+ METEORA_DAMM_V2_PROGRAM_ID,
3221
+ METEORA_DLMM_PROGRAM_ID,
3222
+ METEORA_DBC_PROGRAM_ID,
3223
+ )
3224
+ )
3225
+
3226
+
3227
+ def dispatch_unscoped_pumpfun_launchlab_trade(
3228
+ data: bytes,
3229
+ meta: dict,
3230
+ is_created_buy: bool,
3231
+ event_type_filter: Any = None,
3232
+ ) -> Optional[DexEvent]:
3233
+ if filter_wants_pumpfun_trade(event_type_filter):
3234
+ pumpfun = apply_event_type_filter(
3235
+ parse_trade_from_data(data, meta, is_created_buy),
3236
+ event_type_filter,
3237
+ )
3238
+ if pumpfun is not None:
3239
+ return pumpfun
3240
+ if filter_wants_raydium_launchlab_trade(event_type_filter):
3241
+ return apply_event_type_filter(
3242
+ parse_raydium_launchlab_from_discriminator(PUMP_TRADE, data, meta),
3243
+ event_type_filter,
3244
+ )
3245
+ return None
3246
+
3247
+
3248
+ def _pumpfun_trade_matches_include_only(ev: DexEvent, include_only: List[EventType]) -> bool:
3249
+ if ev.type == EventType.PUMP_FUN_BUY:
3250
+ return EventType.PUMP_FUN_BUY in include_only or EventType.PUMP_FUN_BUY_EXACT_SOL_IN in include_only
3251
+ if ev.type == EventType.PUMP_FUN_SELL:
3252
+ return EventType.PUMP_FUN_SELL in include_only
3253
+ if ev.type == EventType.PUMP_FUN_BUY_EXACT_SOL_IN:
3254
+ return EventType.PUMP_FUN_BUY in include_only or EventType.PUMP_FUN_BUY_EXACT_SOL_IN in include_only
3255
+ if ev.type == EventType.PUMP_FUN_TRADE:
3256
+ return EventType.PUMP_FUN_TRADE in include_only
3257
+ if ev.type in (EventType.PUMP_FUN_CREATE, EventType.PUMP_FUN_CREATE_V2):
3258
+ return EventType.PUMP_FUN_CREATE in include_only or EventType.PUMP_FUN_CREATE_V2 in include_only
3259
+ return False
3260
+
3261
+
3262
+ def apply_pumpfun_secondary_filter(ev: Optional[DexEvent], event_type_filter: Any) -> Optional[DexEvent]:
3263
+ if ev is None or not ev.is_valid():
3264
+ return None
3265
+ include_only = getattr(event_type_filter, "include_only", None)
3266
+ if include_only:
3267
+ has_specific = any(
3268
+ t
3269
+ in (
3270
+ EventType.PUMP_FUN_BUY,
3271
+ EventType.PUMP_FUN_SELL,
3272
+ EventType.PUMP_FUN_BUY_EXACT_SOL_IN,
3273
+ EventType.PUMP_FUN_CREATE,
3274
+ EventType.PUMP_FUN_CREATE_V2,
3275
+ )
3276
+ for t in include_only
3277
+ )
3278
+ if has_specific and not _pumpfun_trade_matches_include_only(ev, include_only):
3279
+ return None
3280
+ return apply_event_type_filter(ev, event_type_filter)
3281
+
3282
+
3283
+ def dispatch_scoped_pumpfun_data(
3284
+ disc: int,
3285
+ data: bytes,
3286
+ meta: dict,
3287
+ is_created_buy: bool,
3288
+ event_type_filter: Any = None,
3289
+ ) -> Optional[DexEvent]:
3290
+ if disc == PUMP_TRADE:
3291
+ return apply_pumpfun_secondary_filter(
3292
+ parse_trade_from_data(data, meta, is_created_buy),
3293
+ event_type_filter,
3294
+ )
3295
+ if disc == PUMP_CREATE:
3296
+ return parse_create_from_data(data, meta)
3297
+ if disc == PUMP_MIGRATE:
3298
+ return parse_migrate_from_data(data, meta)
3299
+ if disc == PUMP_MIGRATE_BONDING_CURVE_CREATOR:
3300
+ return parse_migrate_bonding_curve_creator_from_data(data, meta)
3301
+ return None
3302
+
3303
+
3304
+ def dispatch_scoped_pump_fees_data(disc: int, data: bytes, meta: dict) -> Optional[DexEvent]:
3305
+ if disc == PUMP_FEES_CREATE_FEE_SHARING_CONFIG:
3306
+ return parse_pump_fees_create_fee_sharing_config_from_data(data, meta)
3307
+ if disc == PUMP_FEES_INITIALIZE_FEE_CONFIG:
3308
+ return parse_pump_fees_initialize_fee_config_from_data(data, meta)
3309
+ if disc == PUMP_FEES_RESET_FEE_SHARING_CONFIG:
3310
+ return parse_pump_fees_reset_fee_sharing_config_from_data(data, meta)
3311
+ if disc == PUMP_FEES_REVOKE_FEE_SHARING_AUTHORITY:
3312
+ return parse_pump_fees_revoke_fee_sharing_authority_from_data(data, meta)
3313
+ if disc == PUMP_FEES_TRANSFER_FEE_SHARING_AUTHORITY:
3314
+ return parse_pump_fees_transfer_fee_sharing_authority_from_data(data, meta)
3315
+ if disc == PUMP_FEES_UPDATE_ADMIN:
3316
+ return parse_pump_fees_update_admin_from_data(data, meta)
3317
+ if disc == PUMP_FEES_UPDATE_FEE_CONFIG:
3318
+ return parse_pump_fees_update_fee_config_from_data(data, meta)
3319
+ if disc == PUMP_FEES_UPDATE_FEE_SHARES:
3320
+ return parse_pump_fees_update_fee_shares_from_data(data, meta)
3321
+ if disc == PUMP_FEES_UPSERT_FEE_TIERS:
3322
+ return parse_pump_fees_upsert_fee_tiers_from_data(data, meta)
3323
+ return None
3324
+
3325
+
3326
+ def dispatch_scoped_pumpswap_data(disc: int, data: bytes, meta: dict) -> Optional[DexEvent]:
3327
+ if disc == _d(103, 244, 82, 31, 44, 245, 119, 119):
3328
+ return parse_ps_buy_from_data(data, meta)
3329
+ if disc == _d(62, 47, 55, 10, 165, 3, 220, 42):
3330
+ return parse_ps_sell_from_data(data, meta)
3331
+ if disc == _d(177, 49, 12, 210, 160, 118, 167, 116):
3332
+ return parse_ps_create_pool_from_data(data, meta)
3333
+ if disc == _d(120, 248, 61, 83, 31, 142, 107, 144):
3334
+ return parse_ps_add_liq_from_data(data, meta)
3335
+ if disc == _d(22, 9, 133, 26, 160, 44, 71, 192):
3336
+ return parse_ps_remove_liq_from_data(data, meta)
3337
+ return None
3338
+
3339
+
3340
+ def filter_includes_program(event_type_filter: Any, program_id: Optional[str]) -> bool:
3341
+ from .grpc_types import (
3342
+ METEORA_DAMM_V2_FILTER_TYPES,
3343
+ METEORA_DBC_FILTER_TYPES,
3344
+ METEORA_DLMM_FILTER_TYPES,
3345
+ METEORA_POOLS_FILTER_TYPES,
3346
+ ORCA_WHIRLPOOL_FILTER_TYPES,
3347
+ PUMP_FEES_EVENT_TYPES,
3348
+ PUMPFUN_FILTER_TYPES,
3349
+ PUMPSWAP_FILTER_TYPES,
3350
+ RAYDIUM_AMM_V4_FILTER_TYPES,
3351
+ RAYDIUM_CLMM_FILTER_TYPES,
3352
+ RAYDIUM_CPMM_FILTER_TYPES,
3353
+ RAYDIUM_LAUNCHLAB_FILTER_TYPES,
3354
+ )
3355
+
3356
+ groups = {
3357
+ PUMPFUN_PROGRAM_ID: PUMPFUN_FILTER_TYPES,
3358
+ PUMP_FEES_PROGRAM_ID: PUMP_FEES_EVENT_TYPES,
3359
+ PUMPSWAP_PROGRAM_ID: PUMPSWAP_FILTER_TYPES,
3360
+ RAYDIUM_LAUNCHLAB_PROGRAM_ID: RAYDIUM_LAUNCHLAB_FILTER_TYPES,
3361
+ RAYDIUM_CLMM_PROGRAM_ID: RAYDIUM_CLMM_FILTER_TYPES,
3362
+ RAYDIUM_CPMM_PROGRAM_ID: RAYDIUM_CPMM_FILTER_TYPES,
3363
+ RAYDIUM_AMM_V4_PROGRAM_ID: RAYDIUM_AMM_V4_FILTER_TYPES,
3364
+ ORCA_WHIRLPOOL_PROGRAM_ID: ORCA_WHIRLPOOL_FILTER_TYPES,
3365
+ METEORA_POOLS_PROGRAM_ID: METEORA_POOLS_FILTER_TYPES,
3366
+ METEORA_DAMM_V2_PROGRAM_ID: METEORA_DAMM_V2_FILTER_TYPES,
3367
+ METEORA_DBC_PROGRAM_ID: METEORA_DBC_FILTER_TYPES,
3368
+ METEORA_DLMM_PROGRAM_ID: METEORA_DLMM_FILTER_TYPES,
3369
+ }
3370
+ types = groups.get(program_id)
3371
+ if types is None:
3372
+ return filter_allows_unknown_log_event(event_type_filter)
3373
+ include_only = getattr(event_type_filter, "include_only", None)
3374
+ if include_only is not None:
3375
+ return any(t in types for t in include_only)
3376
+ return any(event_type_filter.should_include(t) for t in types)
3377
+
3378
+
2499
3379
  def filter_allows_unknown_log_event(event_type_filter: Any) -> bool:
2500
3380
  include_only = getattr(event_type_filter, "include_only", None)
2501
3381
  return include_only is None
@@ -2517,10 +3397,113 @@ def dispatch_program_data(
2517
3397
  buf: bytes,
2518
3398
  meta: dict,
2519
3399
  is_created_buy: bool,
3400
+ program_id: Optional[str] = None,
3401
+ event_type_filter: Any = None,
2520
3402
  ) -> Optional[DexEvent]:
3403
+ if program_id == PUMPFUN_PROGRAM_ID:
3404
+ return dispatch_scoped_pumpfun_data(disc, data, meta, is_created_buy, event_type_filter)
3405
+ if program_id == PUMP_FEES_PROGRAM_ID:
3406
+ return dispatch_scoped_pump_fees_data(disc, data, meta)
3407
+ if program_id == PUMPSWAP_PROGRAM_ID:
3408
+ return dispatch_scoped_pumpswap_data(disc, data, meta)
3409
+ if program_id == RAYDIUM_LAUNCHLAB_PROGRAM_ID:
3410
+ return parse_raydium_launchlab_from_discriminator(disc, data, meta)
3411
+ if program_id == RAYDIUM_CLMM_PROGRAM_ID:
3412
+ if disc == _d(64, 198, 205, 232, 38, 8, 113, 226):
3413
+ return parse_clmm_swap_from_data(data, meta)
3414
+ if disc == _d(49, 79, 105, 212, 32, 34, 30, 84):
3415
+ return parse_clmm_inc_from_data(data, meta)
3416
+ if disc == _d(58, 222, 86, 58, 68, 50, 85, 56):
3417
+ return parse_clmm_dec_from_data(data, meta)
3418
+ if disc == _d(126, 240, 175, 206, 158, 88, 153, 107):
3419
+ return parse_clmm_liquidity_change_from_data(data, meta)
3420
+ if disc == _d(247, 189, 7, 119, 106, 112, 95, 151):
3421
+ return parse_clmm_config_change_from_data(data, meta)
3422
+ if disc == _d(100, 30, 87, 249, 196, 223, 154, 206):
3423
+ return parse_clmm_create_personal_position_from_data(data, meta)
3424
+ if disc == _d(237, 112, 148, 230, 57, 84, 180, 162):
3425
+ return parse_clmm_liquidity_calculate_from_data(data, meta)
3426
+ if disc == _d(106, 24, 71, 85, 57, 169, 158, 216):
3427
+ return parse_clmm_open_limit_order_from_data(data, meta)
3428
+ if disc == _d(11, 120, 13, 204, 199, 87, 19, 200):
3429
+ return parse_clmm_increase_limit_order_from_data(data, meta)
3430
+ if disc == _d(70, 48, 40, 221, 219, 237, 212, 163):
3431
+ return parse_clmm_decrease_limit_order_from_data(data, meta)
3432
+ if disc == _d(88, 119, 77, 164, 125, 124, 10, 194):
3433
+ return parse_clmm_settle_limit_order_from_data(data, meta)
3434
+ if disc == _d(109, 127, 186, 78, 114, 65, 37, 236):
3435
+ return parse_clmm_update_reward_infos_from_data(data, meta)
3436
+ if disc == _d(25, 94, 75, 47, 112, 99, 53, 63):
3437
+ return parse_clmm_create_from_data(data, meta)
3438
+ if disc == _d(166, 174, 105, 192, 81, 161, 83, 105):
3439
+ return parse_clmm_collect_personal_from_data(data, meta)
3440
+ if disc == _d(206, 87, 17, 79, 45, 41, 213, 61):
3441
+ return parse_clmm_collect_protocol_from_data(data, meta)
3442
+ return None
3443
+ if program_id == RAYDIUM_CPMM_PROGRAM_ID:
3444
+ if disc == _d(143, 190, 90, 218, 196, 30, 51, 222):
3445
+ return parse_cpmm_swap_in_from_data(data, meta)
3446
+ if disc == _d(55, 217, 98, 86, 163, 74, 180, 173):
3447
+ return parse_cpmm_swap_out_from_data(data, meta)
3448
+ if disc == _d(233, 146, 209, 142, 207, 104, 64, 188):
3449
+ return parse_cpmm_create_from_data(data, meta)
3450
+ if disc == _d(242, 35, 198, 137, 82, 225, 242, 182):
3451
+ return parse_cpmm_deposit_from_data(data, meta)
3452
+ if disc == _d(183, 18, 70, 156, 148, 109, 161, 34):
3453
+ return parse_cpmm_withdraw_from_data(data, meta)
3454
+ return None
3455
+ if program_id == RAYDIUM_AMM_V4_PROGRAM_ID:
3456
+ if disc == _d(0, 0, 0, 0, 0, 0, 0, 9):
3457
+ return parse_amm_swap_in_from_data(data, meta)
3458
+ if disc == _d(0, 0, 0, 0, 0, 0, 0, 11):
3459
+ return parse_amm_swap_out_from_data(data, meta)
3460
+ if disc == _d(0, 0, 0, 0, 0, 0, 0, 3):
3461
+ return parse_amm_deposit_from_data(data, meta)
3462
+ if disc == _d(0, 0, 0, 0, 0, 0, 0, 4):
3463
+ return parse_amm_withdraw_from_data(data, meta)
3464
+ if disc == _d(0, 0, 0, 0, 0, 0, 0, 1):
3465
+ return parse_amm_init2_from_data(data, meta)
3466
+ if disc == _d(0, 0, 0, 0, 0, 0, 0, 7):
3467
+ return parse_amm_withdraw_pnl_from_data(data, meta)
3468
+ return None
3469
+ if program_id == ORCA_WHIRLPOOL_PROGRAM_ID:
3470
+ if disc == _d(225, 202, 73, 175, 147, 43, 160, 150):
3471
+ return parse_orca_traded_from_data(data, meta)
3472
+ if disc == _d(30, 7, 144, 181, 102, 254, 155, 161):
3473
+ return parse_orca_liq_inc_from_data(data, meta)
3474
+ if disc == _d(166, 1, 36, 71, 112, 202, 181, 171):
3475
+ return parse_orca_liq_dec_from_data(data, meta)
3476
+ if disc == _d(100, 118, 173, 87, 12, 198, 254, 229):
3477
+ return parse_orca_pool_init_from_data(data, meta)
3478
+ return None
3479
+ if program_id == METEORA_POOLS_PROGRAM_ID:
3480
+ if disc == _d(81, 108, 227, 190, 205, 208, 10, 196):
3481
+ return parse_meteora_swap_from_data(data, meta)
3482
+ if disc == _d(31, 94, 125, 90, 227, 52, 61, 186):
3483
+ return parse_meteora_add_from_data(data, meta)
3484
+ if disc == _d(116, 244, 97, 232, 103, 31, 152, 58):
3485
+ return parse_meteora_remove_from_data(data, meta)
3486
+ if disc == _d(121, 127, 38, 136, 92, 55, 14, 247):
3487
+ return parse_meteora_bootstrap_from_data(data, meta)
3488
+ if disc == _d(202, 44, 41, 88, 104, 220, 157, 82):
3489
+ return parse_meteora_pool_created_from_data(data, meta)
3490
+ if disc == _d(245, 26, 198, 164, 88, 18, 75, 9):
3491
+ return parse_meteora_pools_set_pool_fees_from_data(data, meta)
3492
+ return None
3493
+ if program_id == METEORA_DAMM_V2_PROGRAM_ID:
3494
+ return parse_meteora_damm_from_buf(buf, meta)
3495
+ if program_id == METEORA_DBC_PROGRAM_ID:
3496
+ return parse_meteora_dbc_from_discriminator(disc, data, meta)
3497
+ if program_id == METEORA_DLMM_PROGRAM_ID:
3498
+ return parse_dlmm_from_program_data(buf, meta)
2521
3499
  if disc == PUMP_TRADE:
2522
- return parse_trade_from_data(data, meta, is_created_buy)
2523
- if disc == _d(248, 198, 158, 145, 225, 117, 135, 200):
3500
+ return dispatch_unscoped_pumpfun_launchlab_trade(
3501
+ data,
3502
+ meta,
3503
+ is_created_buy,
3504
+ event_type_filter,
3505
+ )
3506
+ if disc == _d(64, 198, 205, 232, 38, 8, 113, 226):
2524
3507
  return parse_clmm_swap_from_data(data, meta)
2525
3508
  if disc == _d(0, 0, 0, 0, 0, 0, 0, 9):
2526
3509
  return parse_amm_swap_in_from_data(data, meta)
@@ -2558,16 +3541,36 @@ def dispatch_program_data(
2558
3541
  return parse_ps_add_liq_from_data(data, meta)
2559
3542
  if disc == _d(22, 9, 133, 26, 160, 44, 71, 192):
2560
3543
  return parse_ps_remove_liq_from_data(data, meta)
2561
- if disc == _d(133, 29, 89, 223, 69, 238, 176, 10):
3544
+ if disc == _d(49, 79, 105, 212, 32, 34, 30, 84):
2562
3545
  return parse_clmm_inc_from_data(data, meta)
2563
- if disc == _d(160, 38, 208, 111, 104, 91, 44, 1):
3546
+ if disc == _d(58, 222, 86, 58, 68, 50, 85, 56):
2564
3547
  return parse_clmm_dec_from_data(data, meta)
2565
- if disc == _d(233, 146, 209, 142, 207, 104, 64, 188):
3548
+ if disc == _d(126, 240, 175, 206, 158, 88, 153, 107):
3549
+ return parse_clmm_liquidity_change_from_data(data, meta)
3550
+ if disc == _d(247, 189, 7, 119, 106, 112, 95, 151):
3551
+ return parse_clmm_config_change_from_data(data, meta)
3552
+ if disc == _d(100, 30, 87, 249, 196, 223, 154, 206):
3553
+ return parse_clmm_create_personal_position_from_data(data, meta)
3554
+ if disc == _d(237, 112, 148, 230, 57, 84, 180, 162):
3555
+ return parse_clmm_liquidity_calculate_from_data(data, meta)
3556
+ if disc == _d(106, 24, 71, 85, 57, 169, 158, 216):
3557
+ return parse_clmm_open_limit_order_from_data(data, meta)
3558
+ if disc == _d(11, 120, 13, 204, 199, 87, 19, 200):
3559
+ return parse_clmm_increase_limit_order_from_data(data, meta)
3560
+ if disc == _d(70, 48, 40, 221, 219, 237, 212, 163):
3561
+ return parse_clmm_decrease_limit_order_from_data(data, meta)
3562
+ if disc == _d(88, 119, 77, 164, 125, 124, 10, 194):
3563
+ return parse_clmm_settle_limit_order_from_data(data, meta)
3564
+ if disc == _d(109, 127, 186, 78, 114, 65, 37, 236):
3565
+ return parse_clmm_update_reward_infos_from_data(data, meta)
3566
+ if disc == _d(25, 94, 75, 47, 112, 99, 53, 63):
2566
3567
  return parse_clmm_create_from_data(data, meta)
2567
- if disc == _d(164, 152, 207, 99, 187, 104, 171, 119):
2568
- return parse_clmm_collect_from_data(data, meta)
3568
+ if disc == _d(166, 174, 105, 192, 81, 161, 83, 105):
3569
+ return parse_clmm_collect_personal_from_data(data, meta)
3570
+ if disc == _d(206, 87, 17, 79, 45, 41, 213, 61):
3571
+ return parse_clmm_collect_protocol_from_data(data, meta)
2569
3572
  if disc == _d(143, 190, 90, 218, 196, 30, 51, 222):
2570
- return parse_cpmm_swap_in_from_data(data, meta)
3573
+ return apply_event_type_filter(parse_cpmm_swap_in_from_data(data, meta), event_type_filter)
2571
3574
  if disc == _d(55, 217, 98, 86, 163, 74, 180, 173):
2572
3575
  return parse_cpmm_swap_out_from_data(data, meta)
2573
3576
  if disc == _d(242, 35, 198, 137, 82, 225, 242, 182):