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/__init__.py +26 -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/accounts/__init__.py +61 -0
- sol_parser/accounts/raydium_orca.py +515 -0
- sol_parser/check_migration.py +3 -0
- sol_parser/dex_parsers.py +1067 -64
- sol_parser/event_type_parity.py +129 -0
- sol_parser/event_types.py +291 -0
- sol_parser/grpc_client.py +25 -6
- sol_parser/grpc_instruction_parser.py +21 -20
- sol_parser/grpc_types.py +49 -21
- sol_parser/inner_instruction_parser.py +138 -12
- sol_parser/instructions.py +299 -58
- sol_parser/log_instr_dedup.py +34 -4
- sol_parser/merger.py +115 -41
- sol_parser/parser.py +95 -7
- sol_parser/pumpfun_fee_enrich.py +12 -1
- sol_parser/rpc_parser.py +119 -33
- sol_parser/shredstream_client.py +19 -1
- {sol_parser_sdk_python-0.5.5.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/METADATA +10 -2
- {sol_parser_sdk_python-0.5.5.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/RECORD +25 -23
- {sol_parser_sdk_python-0.5.5.dist-info → sol_parser_sdk_python-0.5.7.dist-info}/WHEEL +1 -1
- {sol_parser_sdk_python-0.5.5.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,
|
|
@@ -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 +
|
|
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
|
-
|
|
760
|
-
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
|
|
761
782
|
sqrt = str(_u128le_int(data, o))
|
|
762
783
|
o += 16
|
|
763
|
-
|
|
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=
|
|
771
|
-
token_account_0=
|
|
772
|
-
token_account_1=
|
|
773
|
-
amount_0=
|
|
774
|
-
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,
|
|
775
798
|
zero_for_one=zfo,
|
|
776
799
|
sqrt_price_x64=sqrt,
|
|
777
|
-
liquidity=
|
|
778
|
-
transfer_fee_0=
|
|
779
|
-
transfer_fee_1=
|
|
780
|
-
tick=
|
|
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 +
|
|
809
|
+
if len(data) < 32 + 16 + 8 + 8 + 8 + 8:
|
|
787
810
|
return DexEvent()
|
|
788
811
|
o = 0
|
|
789
|
-
|
|
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
|
-
|
|
816
|
+
amount_0 = _u64le(data, o)
|
|
796
817
|
o += 8
|
|
797
|
-
|
|
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=
|
|
804
|
-
position_nft_mint=
|
|
805
|
-
user=
|
|
828
|
+
pool=Z,
|
|
829
|
+
position_nft_mint=position_nft_mint,
|
|
830
|
+
user=Z,
|
|
806
831
|
liquidity=liq,
|
|
807
|
-
|
|
808
|
-
|
|
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 +
|
|
843
|
+
if len(data) < 32 + 16 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8 + 8:
|
|
815
844
|
return DexEvent()
|
|
816
845
|
o = 0
|
|
817
|
-
|
|
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
|
-
|
|
850
|
+
decrease_amount_0 = _u64le(data, o)
|
|
824
851
|
o += 8
|
|
825
|
-
|
|
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=
|
|
832
|
-
position_nft_mint=
|
|
833
|
-
user=
|
|
868
|
+
pool=Z,
|
|
869
|
+
position_nft_mint=position_nft_mint,
|
|
870
|
+
user=Z,
|
|
834
871
|
liquidity=liq,
|
|
835
|
-
|
|
836
|
-
|
|
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 +
|
|
886
|
+
if len(data) < 32 + 32 + 2 + 32 + 16 + 4 + 32 + 32:
|
|
843
887
|
return DexEvent()
|
|
844
888
|
o = 0
|
|
845
|
-
|
|
889
|
+
token_0_mint = _pub(data, o)
|
|
846
890
|
o += 32
|
|
847
|
-
|
|
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
|
-
|
|
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=
|
|
859
|
-
token_0_mint=
|
|
860
|
-
token_1_mint=
|
|
861
|
-
tick_spacing=
|
|
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
|
-
|
|
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
|
|
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=
|
|
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(
|
|
2453
|
-
_d(
|
|
2454
|
-
_d(
|
|
2455
|
-
_d(
|
|
2456
|
-
_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,
|
|
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
|
|
2523
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
2568
|
-
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)
|
|
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):
|