sol-parser-sdk-python 0.5.6__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/__init__.py +18 -0
- sol_parser/account_dispatcher.py +2 -0
- sol_parser/account_fillers/meteora.py +15 -0
- sol_parser/account_fillers/pumpfun.py +11 -0
- sol_parser/check_migration.py +3 -0
- sol_parser/dex_parsers.py +881 -64
- sol_parser/event_type_parity.py +129 -0
- sol_parser/event_types.py +252 -0
- sol_parser/grpc_client.py +3 -4
- sol_parser/grpc_instruction_parser.py +14 -3
- sol_parser/grpc_types.py +49 -21
- sol_parser/inner_instruction_parser.py +138 -12
- sol_parser/instructions.py +293 -57
- sol_parser/log_instr_dedup.py +34 -4
- sol_parser/merger.py +115 -41
- sol_parser/parser.py +26 -6
- sol_parser/pumpfun_fee_enrich.py +12 -1
- sol_parser/rpc_parser.py +56 -11
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/METADATA +2 -2
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/RECORD +22 -21
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/WHEEL +1 -1
- {sol_parser_sdk_python-0.5.6.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/entry_points.txt +0 -0
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,
|
|
31
|
-
|
|
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,
|
|
@@ -752,129 +758,179 @@ def parse_pump_fees_upsert_fee_tiers_from_data(data: bytes, meta: dict) -> DexEv
|
|
|
752
758
|
|
|
753
759
|
|
|
754
760
|
def parse_clmm_swap_from_data(data: bytes, meta: dict) -> DexEvent:
|
|
755
|
-
if len(data) < 32 + 32 + 8 + 8 + 16 +
|
|
761
|
+
if len(data) < 32 + 32 + 32 + 32 + 8 + 8 + 8 + 8 + 1 + 16 + 16 + 4:
|
|
756
762
|
return DexEvent()
|
|
757
763
|
o = 0
|
|
758
764
|
ps = _pub(data, o)
|
|
759
765
|
o += 32
|
|
760
|
-
|
|
761
|
-
o += 32
|
|
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
|
|
762
782
|
sqrt = str(_u128le_int(data, o))
|
|
763
783
|
o += 16
|
|
764
|
-
|
|
784
|
+
liq = str(_u128le_int(data, o))
|
|
785
|
+
o += 16
|
|
786
|
+
tick = _i32le(data, o)
|
|
765
787
|
|
|
766
788
|
return DexEvent(
|
|
767
789
|
type=EventType.RAYDIUM_CLMM_SWAP,
|
|
768
790
|
data=RaydiumClmmSwapEvent(
|
|
769
791
|
metadata=_make_meta(meta),
|
|
770
792
|
pool_state=ps,
|
|
771
|
-
sender=
|
|
772
|
-
token_account_0=
|
|
773
|
-
token_account_1=
|
|
774
|
-
amount_0=
|
|
775
|
-
amount_1=
|
|
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,
|
|
776
798
|
zero_for_one=zfo,
|
|
777
799
|
sqrt_price_x64=sqrt,
|
|
778
|
-
liquidity=
|
|
779
|
-
transfer_fee_0=
|
|
780
|
-
transfer_fee_1=
|
|
781
|
-
tick=
|
|
800
|
+
liquidity=liq,
|
|
801
|
+
transfer_fee_0=transfer_fee_0,
|
|
802
|
+
transfer_fee_1=transfer_fee_1,
|
|
803
|
+
tick=tick,
|
|
782
804
|
),
|
|
783
805
|
)
|
|
784
806
|
|
|
785
807
|
|
|
786
808
|
def parse_clmm_inc_from_data(data: bytes, meta: dict) -> DexEvent:
|
|
787
|
-
if len(data) < 32 +
|
|
809
|
+
if len(data) < 32 + 16 + 8 + 8 + 8 + 8:
|
|
788
810
|
return DexEvent()
|
|
789
811
|
o = 0
|
|
790
|
-
|
|
791
|
-
o += 32
|
|
792
|
-
user = _pub(data, o)
|
|
812
|
+
position_nft_mint = _pub(data, o)
|
|
793
813
|
o += 32
|
|
794
814
|
liq = str(_u128le_int(data, o))
|
|
795
815
|
o += 16
|
|
796
|
-
|
|
816
|
+
amount_0 = _u64le(data, o)
|
|
797
817
|
o += 8
|
|
798
|
-
|
|
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)
|
|
799
823
|
|
|
800
824
|
return DexEvent(
|
|
801
825
|
type=EventType.RAYDIUM_CLMM_INCREASE_LIQUIDITY,
|
|
802
826
|
data=RaydiumClmmIncreaseLiquidityEvent(
|
|
803
827
|
metadata=_make_meta(meta),
|
|
804
|
-
pool=
|
|
805
|
-
position_nft_mint=
|
|
806
|
-
user=
|
|
828
|
+
pool=Z,
|
|
829
|
+
position_nft_mint=position_nft_mint,
|
|
830
|
+
user=Z,
|
|
807
831
|
liquidity=liq,
|
|
808
|
-
|
|
809
|
-
|
|
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,
|
|
810
838
|
),
|
|
811
839
|
)
|
|
812
840
|
|
|
813
841
|
|
|
814
842
|
def parse_clmm_dec_from_data(data: bytes, meta: dict) -> DexEvent:
|
|
815
|
-
if len(data) < 32 +
|
|
843
|
+
if len(data) < 32 + 16 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8:
|
|
816
844
|
return DexEvent()
|
|
817
845
|
o = 0
|
|
818
|
-
|
|
819
|
-
o += 32
|
|
820
|
-
user = _pub(data, o)
|
|
846
|
+
position_nft_mint = _pub(data, o)
|
|
821
847
|
o += 32
|
|
822
848
|
liq = str(_u128le_int(data, o))
|
|
823
849
|
o += 16
|
|
824
|
-
|
|
850
|
+
decrease_amount_0 = _u64le(data, o)
|
|
825
851
|
o += 8
|
|
826
|
-
|
|
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)
|
|
827
863
|
|
|
828
864
|
return DexEvent(
|
|
829
865
|
type=EventType.RAYDIUM_CLMM_DECREASE_LIQUIDITY,
|
|
830
866
|
data=RaydiumClmmDecreaseLiquidityEvent(
|
|
831
867
|
metadata=_make_meta(meta),
|
|
832
|
-
pool=
|
|
833
|
-
position_nft_mint=
|
|
834
|
-
user=
|
|
868
|
+
pool=Z,
|
|
869
|
+
position_nft_mint=position_nft_mint,
|
|
870
|
+
user=Z,
|
|
835
871
|
liquidity=liq,
|
|
836
|
-
|
|
837
|
-
|
|
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,
|
|
838
881
|
),
|
|
839
882
|
)
|
|
840
883
|
|
|
841
884
|
|
|
842
885
|
def parse_clmm_create_from_data(data: bytes, meta: dict) -> DexEvent:
|
|
843
|
-
if len(data) < 32 + 32 + 16 +
|
|
886
|
+
if len(data) < 32 + 32 + 2 + 32 + 16 + 4 + 32 + 32:
|
|
844
887
|
return DexEvent()
|
|
845
888
|
o = 0
|
|
846
|
-
|
|
889
|
+
token_0_mint = _pub(data, o)
|
|
847
890
|
o += 32
|
|
848
|
-
|
|
891
|
+
token_1_mint = _pub(data, o)
|
|
892
|
+
o += 32
|
|
893
|
+
tick_spacing = _u16le(data, o)
|
|
894
|
+
o += 2
|
|
895
|
+
pool = _pub(data, o)
|
|
849
896
|
o += 32
|
|
850
897
|
sqrt = str(_u128le_int(data, o))
|
|
851
898
|
o += 16
|
|
852
|
-
|
|
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)
|
|
853
904
|
|
|
854
905
|
return DexEvent(
|
|
855
906
|
type=EventType.RAYDIUM_CLMM_CREATE_POOL,
|
|
856
907
|
data=RaydiumClmmCreatePoolEvent(
|
|
857
908
|
metadata=_make_meta(meta),
|
|
858
909
|
pool=pool,
|
|
859
|
-
creator=
|
|
860
|
-
token_0_mint=
|
|
861
|
-
token_1_mint=
|
|
862
|
-
tick_spacing=
|
|
910
|
+
creator=Z,
|
|
911
|
+
token_0_mint=token_0_mint,
|
|
912
|
+
token_1_mint=token_1_mint,
|
|
913
|
+
tick_spacing=tick_spacing,
|
|
863
914
|
fee_rate=0,
|
|
864
915
|
sqrt_price_x64=sqrt,
|
|
865
|
-
|
|
916
|
+
tick=tick,
|
|
917
|
+
token_vault_0=token_vault_0,
|
|
918
|
+
token_vault_1=token_vault_1,
|
|
919
|
+
open_time=0,
|
|
866
920
|
),
|
|
867
921
|
)
|
|
868
922
|
|
|
869
923
|
|
|
870
|
-
def
|
|
871
|
-
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:
|
|
872
926
|
return DexEvent()
|
|
873
927
|
o = 0
|
|
874
|
-
ps = _pub(data, o)
|
|
875
|
-
o += 32
|
|
876
928
|
pn = _pub(data, o)
|
|
877
929
|
o += 32
|
|
930
|
+
recipient_0 = _pub(data, o)
|
|
931
|
+
o += 32
|
|
932
|
+
recipient_1 = _pub(data, o)
|
|
933
|
+
o += 32
|
|
878
934
|
a0 = _u64le(data, o)
|
|
879
935
|
o += 8
|
|
880
936
|
a1 = _u64le(data, o)
|
|
@@ -883,14 +939,325 @@ def parse_clmm_collect_from_data(data: bytes, meta: dict) -> DexEvent:
|
|
|
883
939
|
type=EventType.RAYDIUM_CLMM_COLLECT_FEE,
|
|
884
940
|
data=RaydiumClmmCollectFeeEvent(
|
|
885
941
|
metadata=_make_meta(meta),
|
|
886
|
-
pool_state=
|
|
942
|
+
pool_state=Z,
|
|
887
943
|
position_nft_mint=pn,
|
|
944
|
+
recipient_token_account_0=recipient_0,
|
|
945
|
+
recipient_token_account_1=recipient_1,
|
|
888
946
|
amount_0=a0,
|
|
889
947
|
amount_1=a1,
|
|
890
948
|
),
|
|
891
949
|
)
|
|
892
950
|
|
|
893
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
|
+
|
|
894
1261
|
# --- Raydium AMM ---
|
|
895
1262
|
|
|
896
1263
|
|
|
@@ -1084,6 +1451,31 @@ def parse_cpmm_swap_out_from_data(data: bytes, meta: dict) -> Optional[DexEvent]
|
|
|
1084
1451
|
)
|
|
1085
1452
|
|
|
1086
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
|
+
|
|
1087
1479
|
def parse_cpmm_deposit_from_data(data: bytes, meta: dict) -> Optional[DexEvent]:
|
|
1088
1480
|
if len(data) < 32 + 32 + 8 + 8 + 8:
|
|
1089
1481
|
return None
|
|
@@ -2567,13 +2959,24 @@ _LOG_DISCRIMINATOR_EVENT_TYPES = {
|
|
|
2567
2959
|
_d(177, 49, 12, 210, 160, 118, 167, 116): EventType.PUMP_SWAP_CREATE_POOL,
|
|
2568
2960
|
_d(120, 248, 61, 83, 31, 142, 107, 144): EventType.PUMP_SWAP_LIQUIDITY_ADDED,
|
|
2569
2961
|
_d(22, 9, 133, 26, 160, 44, 71, 192): EventType.PUMP_SWAP_LIQUIDITY_REMOVED,
|
|
2570
|
-
_d(
|
|
2571
|
-
_d(
|
|
2572
|
-
_d(
|
|
2573
|
-
_d(
|
|
2574
|
-
_d(
|
|
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,
|
|
2575
2977
|
_d(143, 190, 90, 218, 196, 30, 51, 222): EventType.RAYDIUM_CPMM_SWAP,
|
|
2576
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,
|
|
2577
2980
|
_d(242, 35, 198, 137, 82, 225, 242, 182): EventType.RAYDIUM_CPMM_DEPOSIT,
|
|
2578
2981
|
_d(183, 18, 70, 156, 148, 109, 161, 34): EventType.RAYDIUM_CPMM_WITHDRAW,
|
|
2579
2982
|
_d(0, 0, 0, 0, 0, 0, 0, 9): EventType.RAYDIUM_AMM_V4_SWAP,
|
|
@@ -2615,18 +3018,114 @@ def event_type_for_discriminator(disc: int) -> Optional[EventType]:
|
|
|
2615
3018
|
|
|
2616
3019
|
|
|
2617
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"
|
|
2618
3029
|
METEORA_DAMM_V2_PROGRAM_ID = "cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG"
|
|
2619
3030
|
METEORA_DBC_PROGRAM_ID = "dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN"
|
|
2620
3031
|
METEORA_DLMM_PROGRAM_ID = "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo"
|
|
2621
3032
|
|
|
2622
3033
|
|
|
2623
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)
|
|
2624
3067
|
if program_id == RAYDIUM_LAUNCHLAB_PROGRAM_ID:
|
|
2625
3068
|
if disc == DISC_RAYDIUM_LAUNCHLAB_TRADE:
|
|
2626
3069
|
return EventType.RAYDIUM_LAUNCHLAB_TRADE
|
|
2627
3070
|
if disc == DISC_RAYDIUM_LAUNCHLAB_POOL_CREATE:
|
|
2628
3071
|
return EventType.RAYDIUM_LAUNCHLAB_POOL_CREATE
|
|
2629
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)
|
|
2630
3129
|
if program_id == METEORA_DAMM_V2_PROGRAM_ID:
|
|
2631
3130
|
if disc in (DAMM_SWAP, DAMM_SWAP2):
|
|
2632
3131
|
return EventType.METEORA_DAMM_V2_SWAP
|
|
@@ -2649,19 +3148,221 @@ def event_type_for_program_discriminator(program_id: Optional[str], disc: int) -
|
|
|
2649
3148
|
if disc == DBC_CURVE_COMPLETE:
|
|
2650
3149
|
return EventType.METEORA_DBC_CURVE_COMPLETE
|
|
2651
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
|
|
2652
3169
|
return event_type_for_discriminator(disc)
|
|
2653
3170
|
|
|
2654
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
|
+
|
|
2655
3340
|
def filter_includes_program(event_type_filter: Any, program_id: Optional[str]) -> bool:
|
|
2656
3341
|
from .grpc_types import (
|
|
2657
3342
|
METEORA_DAMM_V2_FILTER_TYPES,
|
|
2658
3343
|
METEORA_DBC_FILTER_TYPES,
|
|
2659
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,
|
|
2660
3353
|
RAYDIUM_LAUNCHLAB_FILTER_TYPES,
|
|
2661
3354
|
)
|
|
2662
3355
|
|
|
2663
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,
|
|
2664
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,
|
|
2665
3366
|
METEORA_DAMM_V2_PROGRAM_ID: METEORA_DAMM_V2_FILTER_TYPES,
|
|
2666
3367
|
METEORA_DBC_PROGRAM_ID: METEORA_DBC_FILTER_TYPES,
|
|
2667
3368
|
METEORA_DLMM_PROGRAM_ID: METEORA_DLMM_FILTER_TYPES,
|
|
@@ -2697,16 +3398,112 @@ def dispatch_program_data(
|
|
|
2697
3398
|
meta: dict,
|
|
2698
3399
|
is_created_buy: bool,
|
|
2699
3400
|
program_id: Optional[str] = None,
|
|
3401
|
+
event_type_filter: Any = None,
|
|
2700
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)
|
|
2701
3409
|
if program_id == RAYDIUM_LAUNCHLAB_PROGRAM_ID:
|
|
2702
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)
|
|
2703
3495
|
if program_id == METEORA_DBC_PROGRAM_ID:
|
|
2704
3496
|
return parse_meteora_dbc_from_discriminator(disc, data, meta)
|
|
2705
3497
|
if program_id == METEORA_DLMM_PROGRAM_ID:
|
|
2706
3498
|
return parse_dlmm_from_program_data(buf, meta)
|
|
2707
3499
|
if disc == PUMP_TRADE:
|
|
2708
|
-
return
|
|
2709
|
-
|
|
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):
|
|
2710
3507
|
return parse_clmm_swap_from_data(data, meta)
|
|
2711
3508
|
if disc == _d(0, 0, 0, 0, 0, 0, 0, 9):
|
|
2712
3509
|
return parse_amm_swap_in_from_data(data, meta)
|
|
@@ -2744,16 +3541,36 @@ def dispatch_program_data(
|
|
|
2744
3541
|
return parse_ps_add_liq_from_data(data, meta)
|
|
2745
3542
|
if disc == _d(22, 9, 133, 26, 160, 44, 71, 192):
|
|
2746
3543
|
return parse_ps_remove_liq_from_data(data, meta)
|
|
2747
|
-
if disc == _d(
|
|
3544
|
+
if disc == _d(49, 79, 105, 212, 32, 34, 30, 84):
|
|
2748
3545
|
return parse_clmm_inc_from_data(data, meta)
|
|
2749
|
-
if disc == _d(
|
|
3546
|
+
if disc == _d(58, 222, 86, 58, 68, 50, 85, 56):
|
|
2750
3547
|
return parse_clmm_dec_from_data(data, meta)
|
|
2751
|
-
if disc == _d(
|
|
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):
|
|
2752
3567
|
return parse_clmm_create_from_data(data, meta)
|
|
2753
|
-
if disc == _d(
|
|
2754
|
-
return
|
|
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)
|
|
2755
3572
|
if disc == _d(143, 190, 90, 218, 196, 30, 51, 222):
|
|
2756
|
-
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)
|
|
2757
3574
|
if disc == _d(55, 217, 98, 86, 163, 74, 180, 173):
|
|
2758
3575
|
return parse_cpmm_swap_out_from_data(data, meta)
|
|
2759
3576
|
if disc == _d(242, 35, 198, 137, 82, 225, 242, 182):
|