sol-parser-sdk-python 0.5.13__tar.gz → 0.5.14__tar.gz

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.
Files changed (272) hide show
  1. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/PKG-INFO +22 -16
  2. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/README.md +20 -14
  3. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/README_CN.md +20 -14
  4. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/pump_shred_routes.py +7 -0
  5. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/pyproject.toml +1 -1
  6. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/event_types.py +2 -1
  7. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/pump_routes.py +8 -1
  8. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/.env.example +0 -0
  9. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/.gitignore +0 -0
  10. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/docs/USAGE.md +0 -0
  11. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/block_meta_stream.py +0 -0
  12. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/amm_v4_grpc_refresh_20261002.json +0 -0
  13. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/batch2_cpmm_simulations_20261003.json +0 -0
  14. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/block_meta_grpc_20261002.json +0 -0
  15. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
  16. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/cached_tip_routes_20261002.json +0 -0
  17. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/cpmm_lp_simulations_20261006.json +0 -0
  18. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
  19. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/pump_curve_instruction.json +0 -0
  20. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/pump_shred_routes.json +0 -0
  21. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
  22. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
  23. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
  24. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
  25. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
  26. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/simulation_ata_20261002.json +0 -0
  27. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/fixtures/simulation_routes_live_20261002.json +0 -0
  28. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/hot_path_benchmark.json +0 -0
  29. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/hot_path_benchmark.py +0 -0
  30. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/meteora_damm_grpc.py +0 -0
  31. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/multi_protocol_grpc.py +0 -0
  32. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/offline_bank/README.md +0 -0
  33. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/offline_bank/config.json +0 -0
  34. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/offline_bank/expected.json +0 -0
  35. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/offline_bank/programs.json +0 -0
  36. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/offline_bank/snapshot.json.gz +0 -0
  37. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/parse_tx_by_signature.py +0 -0
  38. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/pump_offline_bank.py +0 -0
  39. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/pumpfun_quick_test.py +0 -0
  40. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/pumpfun_trade_filter.py +0 -0
  41. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/pumpfun_with_metrics.py +0 -0
  42. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/pumpswap_low_latency.py +0 -0
  43. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/pumpswap_with_metrics.py +0 -0
  44. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/rust_example_utils.py +0 -0
  45. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/simulation_routes.py +0 -0
  46. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/stonkfun_routes.py +0 -0
  47. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/examples/stonkfun_snapshot_refresh.py +0 -0
  48. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/scripts/bench_parser.py +0 -0
  49. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/scripts/gen_golden_rust.sh +0 -0
  50. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/__init__.py +0 -0
  51. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_dispatcher.py +0 -0
  52. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_fillers/__init__.py +0 -0
  53. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_fillers/meteora.py +0 -0
  54. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_fillers/orca.py +0 -0
  55. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_fillers/pumpfun.py +0 -0
  56. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_fillers/pumpswap.py +0 -0
  57. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_fillers/raydium.py +0 -0
  58. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/account_fillers/raydium_launchlab.py +0 -0
  59. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/accounts/__init__.py +0 -0
  60. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/accounts/raydium_orca.py +0 -0
  61. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/accounts/rpc_wallet.py +0 -0
  62. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/accounts/utils.py +0 -0
  63. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/block_meta.py +0 -0
  64. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/check_migration.py +0 -0
  65. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/clock.py +0 -0
  66. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/common/__init__.py +0 -0
  67. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/dex_parsers.py +0 -0
  68. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/entries_decode.py +0 -0
  69. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/env_config.py +0 -0
  70. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/event_type_parity.py +0 -0
  71. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/geyser_pb2.py +0 -0
  72. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/geyser_pb2_grpc.py +0 -0
  73. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/grpc/__init__.py +0 -0
  74. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/grpc/geyser_connect.py +0 -0
  75. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/grpc/subscribe_builder.py +0 -0
  76. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/grpc/transaction_meta.py +0 -0
  77. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/grpc_client.py +0 -0
  78. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/grpc_instruction_parser.py +0 -0
  79. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/grpc_types.py +0 -0
  80. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/inner_instruction_parser.py +0 -0
  81. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/instr/__init__.py +0 -0
  82. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/instr_account_utils.py +0 -0
  83. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/instructions.py +0 -0
  84. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/json_util.py +0 -0
  85. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/liquidity_snapshot.py +0 -0
  86. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/log_instr_dedup.py +0 -0
  87. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/logs/__init__.py +0 -0
  88. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/market.py +0 -0
  89. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/merger.py +0 -0
  90. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/order_buffer.py +0 -0
  91. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/parser.py +0 -0
  92. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/pump_upgrade.py +0 -0
  93. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/pumpfun_fee_enrich.py +0 -0
  94. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/rpc_parser.py +0 -0
  95. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/rust_api_inventory.py +0 -0
  96. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/rust_event_json.py +0 -0
  97. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/shredstream_client.py +0 -0
  98. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/shredstream_pb2.py +0 -0
  99. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/shredstream_pb2_grpc.py +0 -0
  100. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/shredstream_pumpfun.py +0 -0
  101. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/simulation_route.py +0 -0
  102. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/solana_storage_pb2.py +0 -0
  103. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/solana_storage_pb2_grpc.py +0 -0
  104. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/stonkfun_registry.py +0 -0
  105. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/transaction_route.py +0 -0
  106. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/u128_parity.py +0 -0
  107. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/verify_discriminators.py +0 -0
  108. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/sol_parser/wire_transaction.py +0 -0
  109. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/account_lifecycle_20261008.json +0 -0
  110. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/cached_damm_v2_mainnet_simulations_20261004.json +0 -0
  111. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/cached_tip_routes_20261002.json +0 -0
  112. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/clmm_fee_rewards_20261008.json +0 -0
  113. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/clmm_liquidity_20261008.json +0 -0
  114. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/clmm_one_sided_20261008.json +0 -0
  115. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/cpmm_liquidity_20261008.json +0 -0
  116. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/cpmm_lp_simulations_20261006.json +0 -0
  117. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_borrow_20261009.json +0 -0
  118. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_cpi_20261009.json +0 -0
  119. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_dual_claims_20261009.json +0 -0
  120. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_reward_admin_20261009.json +0 -0
  121. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_reward_renewal_20261009.json +0 -0
  122. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_reward_withdraw_20261009.json +0 -0
  123. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_upstream_hook_20261009.json +0 -0
  124. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v1_config2_instruction_20261008.json +0 -0
  125. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v1_live_simulations_20261008.json +0 -0
  126. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v2_authority_20261008.json +0 -0
  127. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v2_fees_20261008.json +0 -0
  128. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v2_liquidity_20261008.json +0 -0
  129. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v2_mainnet_simulations_20261004.json +0 -0
  130. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v2_rewards_20261008.json +0 -0
  131. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/damm_v2_vesting_20261008.json +0 -0
  132. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dbc_boundary_20261008.json +0 -0
  133. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dbc_live_simulations_20261008.json +0 -0
  134. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dbc_migration_20261008.json +0 -0
  135. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dbc_referral_live_20261008.json +0 -0
  136. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dbc_swap2.json +0 -0
  137. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dbc_v1_migration_20261008.json +0 -0
  138. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dlmm_fees_20261008.json +0 -0
  139. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dlmm_hook_rewards_20261009.json +0 -0
  140. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/dlmm_rewards_20261008.json +0 -0
  141. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/golden_parse_log.json +0 -0
  142. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/launchlab_migration_20261009.json +0 -0
  143. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/native_settlement_20261008.json +0 -0
  144. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_compact_simulations_20261008.json +0 -0
  145. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_depth2_20261014.json +0 -0
  146. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_holder_20261009.json +0 -0
  147. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_routes_20261009.json +0 -0
  148. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_synthetic_20261009.json +0 -0
  149. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_upgrade/account_context.json +0 -0
  150. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_upgrade/boost_account_context.json +0 -0
  151. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_upgrade/events.json +0 -0
  152. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_upgrade/mainnet.json +0 -0
  153. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_upgrade/pump_trade_account_context.json +0 -0
  154. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pump_upgrade/simulation_events.json +0 -0
  155. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_concentrated_multihop_mainnet_simulations_20261005.json +0 -0
  156. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/2MfmZSU8mWEbskNHAxQGphAyB5x72SC2HYuAkLeSyH6MjttUHqUjm24wPMeH7zrCoQoYFwbLeiFE571mc8WvgZyL.json +0 -0
  157. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/2dabmQiykzC1tsNmgtRFbsRJjEKMfUySgScJc2J2uq8CQtoXWZ3YyT99p3nVuCXifEhLkyUe4Sf4nfe2UkFT8AJr.json +0 -0
  158. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/2eVpZNvQYPMBVNT5357Qt7HVAUSv9gdwqxKStvdwQ498rcJLLCHVcYPaGfFqVBz44ndYvkA1H4CwjBuDSviAj7jp.json +0 -0
  159. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3GufGVVRrnrH1Yuto57jDeTKXeki6ooE9w6h4qYRvNm5FcCpxwDHNvzHXdpAMbxRmukWJpSPHUKHEjnFTCC979ka.json +0 -0
  160. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3LQK2JHVbVSSfyCYwTwzoYTY9NEN4gZXzqw3TvAvMJHsvPsopCHtsa5ALhj4tFn8xWbmJ5DsYMMcnPukTBkSjtQf.json +0 -0
  161. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3MRWKDUcD5CGn5Xz4qWyGA8Y9udw4SsSr4gcxCjTUqCFt6Zc6uiwHF1wLZXKoqBcGEM2kruBS85ymYxmYk8FLGBk.json +0 -0
  162. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3NBSCgAXpNqg7JBUzp6RsfZYzf2QbbHi6r2wcoBF4Lpuzozae7ExUJUGoqpVCXXs8cbibr6aWySH1bsg86Enuhez.json +0 -0
  163. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3QVpcUq64D4DUV9empFr3G98pCEa1Cp2fAcFJKyiJGsQ2ir2S4yBLhHYXPNmLfCE8KVDgLApfBYTFM7pf9JVPbsb.json +0 -0
  164. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3REXMDkvZsWvgc8czYpfn24avz18APMuzbV2VgQBeymArdJvfQcfcpKr46f3j1H2bAiymFneaNocPH7KzPUPbR1S.json +0 -0
  165. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3ejAydePsZTUfeZaU9eiAM37gV5AYPG9hhyMtUobJLQtSMgroDeiE8njXu2JiwMyX5YJLp3vrfNPy89S7EDdUCAy.json +0 -0
  166. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/3zC4bw1osyebZ77KagXYP3b5rEBHvJCgcwCriCLc5gAUp9Ev6Bx5ZMbqnYpkKE2VgZgMFcZN5FYKQfcKL45MWpyu.json +0 -0
  167. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/5PgkFgTLSEZPZhxgWNToPzTZct95SycuaH9H3g82YwcKXudtiynEZmiaoQrhGv2gdZLrvsVZ5Wn88KGirbFYpLrt.json +0 -0
  168. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_create/661yA5s6uxUsggTcT4cZ6yyMfNmF4mCZzxLnCb1zBrSY3YhAiouYXBitiPvkngBEKxaeGcpXiek6qXDajiRr9wuY.json +0 -0
  169. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_current_mainnet_simulations_20261004.json +0 -0
  170. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_funded_sell_mainnet_simulations_20261004.json +0 -0
  171. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_settlement_mainnet_simulations_20261004.json +0 -0
  172. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpfun_usdc_multihop_mainnet_simulations_20261004.json +0 -0
  173. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpswap_liquidity_20261008.json +0 -0
  174. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/pumpswap_mainnet_simulations_20261004.json +0 -0
  175. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/review10_compiled_bounds.json +0 -0
  176. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/review10_prefunded_ata.json +0 -0
  177. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/review10_wire_bounds.json +0 -0
  178. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_alt_load_rejections_20261009.json +0 -0
  179. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_clmm_boundaries_20261009.json +0 -0
  180. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_cpmm_bank_20261009.json +0 -0
  181. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_dex_replay_20261009.json +0 -0
  182. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_identical_alt_bank_20261009.json +0 -0
  183. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_multileg_bank_20261009.json +0 -0
  184. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_nested_cpi_bank_20261009.json +0 -0
  185. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_replay_20261009.json +0 -0
  186. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/signed_wire_boundaries_20261009.json +0 -0
  187. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/simulation_alt_20261008.json +0 -0
  188. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/simulation_ata_20261002.json +0 -0
  189. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/simulation_routes_live_20261002.json +0 -0
  190. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/stonkfun_routes_0_7_7.json +0 -0
  191. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/whirlpool_fees_20261008.json +0 -0
  192. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/whirlpool_hook_20261008.json +0 -0
  193. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/whirlpool_liquidity_20261008.json +0 -0
  194. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/fixtures/whirlpool_one_sided_20261008.json +0 -0
  195. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_amm_v4_v2.py +0 -0
  196. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_block_meta.py +0 -0
  197. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_clmm_fee_rewards_bank.py +0 -0
  198. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_clmm_liquidity_bank.py +0 -0
  199. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_clmm_one_sided_bank.py +0 -0
  200. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_cpmm_liquidity_bank.py +0 -0
  201. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_borrow_bank.py +0 -0
  202. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_cpi_bank.py +0 -0
  203. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_dual_claims_bank.py +0 -0
  204. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_reward_admin_bank.py +0 -0
  205. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_reward_renewal_bank.py +0 -0
  206. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_reward_withdraw_bank.py +0 -0
  207. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_upstream_hook_bank.py +0 -0
  208. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_v1_live_simulations.py +0 -0
  209. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_v2_authority_bank.py +0 -0
  210. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_v2_fees_bank.py +0 -0
  211. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_v2_liquidity_bank.py +0 -0
  212. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_v2_rewards_bank.py +0 -0
  213. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_damm_v2_vesting_bank.py +0 -0
  214. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dbc_boundary_bank.py +0 -0
  215. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dbc_migration_bank.py +0 -0
  216. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dbc_upgrade.py +0 -0
  217. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dbc_v1_migration_bank.py +0 -0
  218. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dex_retry_delay.py +0 -0
  219. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dlmm_fees_bank.py +0 -0
  220. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dlmm_hook_bank.py +0 -0
  221. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_dlmm_rewards_bank.py +0 -0
  222. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_exact_metadata_json.py +0 -0
  223. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_filter_and_account_parity.py +0 -0
  224. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_golden.py +0 -0
  225. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_grpc_unary_methods.py +0 -0
  226. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_hot_path_wire_decoder.py +0 -0
  227. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_imports_and_inner.py +0 -0
  228. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_launchlab_invocation_anchor.py +0 -0
  229. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_launchlab_migration_bank.py +0 -0
  230. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_log_instr_dedup.py +0 -0
  231. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_market_helpers.py +0 -0
  232. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_native_grpc_server.py +0 -0
  233. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_native_plan_lifecycle.py +0 -0
  234. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_orca_whirlpool_instruction_parity.py +0 -0
  235. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_order_buffer.py +0 -0
  236. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_ordered_late_regression.py +0 -0
  237. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_prefix_prefilter.py +0 -0
  238. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_protocol_current_fields.py +0 -0
  239. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_compact_simulation_routes.py +0 -0
  240. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_depth2.py +0 -0
  241. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_fees_instruction_parity.py +0 -0
  242. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_holder_bank.py +0 -0
  243. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_offline_bank.py +0 -0
  244. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_routes_bank.py +0 -0
  245. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_shred_routes.py +0 -0
  246. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_synthetic_bank.py +0 -0
  247. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_trade_account_context.py +0 -0
  248. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_trade_merge_identity.py +0 -0
  249. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_upgrade_events.py +0 -0
  250. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pump_upgrade_mainnet.py +0 -0
  251. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpfun_account_fill.py +0 -0
  252. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpfun_create_regression.py +0 -0
  253. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpfun_trade_tail.py +0 -0
  254. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpfun_v2_parity.py +0 -0
  255. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpswap_account_context.py +0 -0
  256. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpswap_instruction.py +0 -0
  257. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpswap_liquidity_bank.py +0 -0
  258. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_pumpswap_upgrade.py +0 -0
  259. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_raydium_clmm_instruction_parity.py +0 -0
  260. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_raydium_current_logs.py +0 -0
  261. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_review10.py +0 -0
  262. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_review_batch2.py +0 -0
  263. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_shred_wire_sanitize.py +0 -0
  264. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_shredstream.py +0 -0
  265. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_signed_transaction_replay.py +0 -0
  266. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_simulation_route.py +0 -0
  267. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_snapshot_refresh_example.py +0 -0
  268. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_stonkfun_routes.py +0 -0
  269. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_whirlpool_fees_bank.py +0 -0
  270. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_whirlpool_hook_bank.py +0 -0
  271. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_whirlpool_liquidity_bank.py +0 -0
  272. {sol_parser_sdk_python-0.5.13 → sol_parser_sdk_python-0.5.14}/tests/test_whirlpool_one_sided_bank.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: sol-parser-sdk-python
3
- Version: 0.5.13
3
+ Version: 0.5.14
4
4
  Summary: Solana DEX program log parsing (pure Python, API aligned with sol-parser-sdk)
5
5
  Requires-Python: >=3.10
6
6
  Requires-Dist: base58>=2.0
@@ -60,15 +60,21 @@ Parser SDK language versions and related Rust SDKs:
60
60
 
61
61
  | Language | Repository | Description | Version |
62
62
  |----------|------------|-------------|---------|
63
- | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.14` |
64
- | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.20` |
65
- | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.13` |
66
- | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.13` |
67
- | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.5` |
63
+ | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.15` |
64
+ | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.21` |
65
+ | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.14` |
66
+ | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.14` |
67
+ | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.6` |
68
68
  | **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
69
69
 
70
70
  ---
71
71
 
72
+ ## v0.5.14 — Pump route direction and instruction names
73
+
74
+ Route intents now expose `is_buy` and `ix_name`, following existing trade field names and official IDL instruction names. RapidBuy reports a buy intent and `buy_exact_quote_in_v2`; BuyPumpDelta reports only a buy intent. Multi-hop direction and unknown methods remain null. Read currencies from `hops[].base_mint` / `quote_mint`. These hints do not confirm execution, and filters do not convert intents into trades.
75
+
76
+ Older JSON without the fields remains readable as unknown. Rust struct literals must supply the new fields; Go uses pointers and Node.js/Python use null/None for unknown values. Streamer now forwards `DexEvent::PumpRouteIntentEvent` with protocol and event filtering.
77
+
72
78
  ## v0.5.13 — Pump routes and offline replay
73
79
 
74
80
  Adds native Pump route-intent parsing for official multi-hop instructions and the exact RapidBuy/BuyPumpDelta wrapper layouts captured in reported transactions. Adds locally cached ALT resolution and rejects unresolved account identities by default, with explicit best-effort compatibility APIs where supported. Route intents expose instruction constraints and hop identities; confirmed execution amounts require execution metadata.
@@ -150,7 +156,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
150
156
  **From PyPI**
151
157
 
152
158
  ```bash
153
- pip install sol-parser-sdk-python==0.5.13
159
+ pip install sol-parser-sdk-python==0.5.14
154
160
  ```
155
161
 
156
162
  **From source**
@@ -266,18 +272,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
266
272
  | Description | Run command | Source |
267
273
  |-------------|-------------|--------|
268
274
  | **PumpFun** | | |
269
- | PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.13` |
270
- | PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.13` |
271
- | Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.13` |
275
+ | PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.14` |
276
+ | PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.14` |
277
+ | Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.14` |
272
278
  | **PumpSwap** | | |
273
- | PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.13` |
274
- | PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.13` |
279
+ | PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.14` |
280
+ | PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.14` |
275
281
  | **Meteora DAMM** | | |
276
- | Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.13` |
282
+ | Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.14` |
277
283
  | **Multi-protocol** | | |
278
- | Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.13` |
284
+ | Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.14` |
279
285
  | **Utility** | | |
280
- | Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.13` |
286
+ | Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.14` |
281
287
 
282
288
  **Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
283
289
 
@@ -38,15 +38,21 @@ Parser SDK language versions and related Rust SDKs:
38
38
 
39
39
  | Language | Repository | Description | Version |
40
40
  |----------|------------|-------------|---------|
41
- | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.14` |
42
- | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.20` |
43
- | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.13` |
44
- | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.13` |
45
- | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.5` |
41
+ | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.15` |
42
+ | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.21` |
43
+ | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.14` |
44
+ | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.14` |
45
+ | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.6` |
46
46
  | **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
47
47
 
48
48
  ---
49
49
 
50
+ ## v0.5.14 — Pump route direction and instruction names
51
+
52
+ Route intents now expose `is_buy` and `ix_name`, following existing trade field names and official IDL instruction names. RapidBuy reports a buy intent and `buy_exact_quote_in_v2`; BuyPumpDelta reports only a buy intent. Multi-hop direction and unknown methods remain null. Read currencies from `hops[].base_mint` / `quote_mint`. These hints do not confirm execution, and filters do not convert intents into trades.
53
+
54
+ Older JSON without the fields remains readable as unknown. Rust struct literals must supply the new fields; Go uses pointers and Node.js/Python use null/None for unknown values. Streamer now forwards `DexEvent::PumpRouteIntentEvent` with protocol and event filtering.
55
+
50
56
  ## v0.5.13 — Pump routes and offline replay
51
57
 
52
58
  Adds native Pump route-intent parsing for official multi-hop instructions and the exact RapidBuy/BuyPumpDelta wrapper layouts captured in reported transactions. Adds locally cached ALT resolution and rejects unresolved account identities by default, with explicit best-effort compatibility APIs where supported. Route intents expose instruction constraints and hop identities; confirmed execution amounts require execution metadata.
@@ -128,7 +134,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
128
134
  **From PyPI**
129
135
 
130
136
  ```bash
131
- pip install sol-parser-sdk-python==0.5.13
137
+ pip install sol-parser-sdk-python==0.5.14
132
138
  ```
133
139
 
134
140
  **From source**
@@ -244,18 +250,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
244
250
  | Description | Run command | Source |
245
251
  |-------------|-------------|--------|
246
252
  | **PumpFun** | | |
247
- | PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.13` |
248
- | PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.13` |
249
- | Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.13` |
253
+ | PumpFun trade filtering | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.14` |
254
+ | PumpFun events + metrics | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.14` |
255
+ | Quick PumpFun connection test | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.14` |
250
256
  | **PumpSwap** | | |
251
- | PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.13` |
252
- | PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.13` |
257
+ | PumpSwap ultra-low latency | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.14` |
258
+ | PumpSwap events + metrics | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.14` |
253
259
  | **Meteora DAMM** | | |
254
- | Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.13` |
260
+ | Meteora DAMM V2 events | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.14` |
255
261
  | **Multi-protocol** | | |
256
- | Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.13` |
262
+ | Subscribe to every program in Rust `Protocol` / `program_ids` | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.14` |
257
263
  | **Utility** | | |
258
- | Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.13` |
264
+ | Parse tx by signature (HTTP RPC; not gRPC). `TX_SIGNATURE` / `RPC_URL` or `SOLANA_RPC_URL` in `.env` or `--sig` / `--rpc`. | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.14` |
259
265
 
260
266
  **Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
261
267
 
@@ -38,11 +38,11 @@
38
38
 
39
39
  | 语言 | 仓库 | 描述 | 版本 |
40
40
  |------|------|------|
41
- | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX 交易与账户事件解析 | `v0.7.14` |
42
- | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript,Node.js 支持 | `v0.5.20` |
43
- | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | 原生 async/await 支持 | `v0.5.13` |
44
- | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go 交易与账户事件解析 | `v0.5.13` |
45
- | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Solana 原始 shred 解码与 ShredStream DEX 事件解析 | `v4.0.5` |
41
+ | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX 交易与账户事件解析 | `v0.7.15` |
42
+ | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript,Node.js 支持 | `v0.5.21` |
43
+ | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | 原生 async/await 支持 | `v0.5.14` |
44
+ | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go 交易与账户事件解析 | `v0.5.14` |
45
+ | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Solana 原始 shred 解码与 ShredStream DEX 事件解析 | `v4.0.6` |
46
46
  | **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX 交易构建与交易执行 | `v6.0.2` |
47
47
 
48
48
  ---
@@ -62,6 +62,12 @@
62
62
 
63
63
  ## 发布说明
64
64
 
65
+ ## v0.5.14 — Pump 路由方向与指令名称
66
+
67
+ 路由事件沿用 `is_buy`、`ix_name` 命名。RapidBuy 为买入意图,指令名为官方 IDL 的 `buy_exact_quote_in_v2`;BuyPumpDelta 仅确定买入方向。多跳路由方向和无法确定的方法保持为空。币种读取 `hops[].base_mint` / `quote_mint`。这些字段不代表已成交;过滤器不会把路由事件转换为交易事件。
68
+
69
+ 旧 JSON 缺少新字段时保持未知。Rust 结构体字面量须补齐新字段;Go 新字段为指针,Node.js/Python 未知值为 null/None。Streamer 新增 `DexEvent::PumpRouteIntentEvent` 并保留路由字段,支持协议与事件过滤。
70
+
65
71
  ## v0.5.13 — Pump routes and offline replay
66
72
 
67
73
  Adds native Pump route-intent parsing for official multi-hop instructions and the exact RapidBuy/BuyPumpDelta wrapper layouts captured in reported transactions. Adds locally cached ALT resolution and rejects unresolved account identities by default, with explicit best-effort compatibility APIs where supported. Route intents expose instruction constraints and hop identities; confirmed execution amounts require execution metadata.
@@ -128,7 +134,7 @@ Validation includes local CPU benchmarks and offline signed-bank scenarios. Meas
128
134
  **PyPI**
129
135
 
130
136
  ```bash
131
- pip install sol-parser-sdk-python==0.5.13
137
+ pip install sol-parser-sdk-python==0.5.14
132
138
  ```
133
139
 
134
140
  **源码**
@@ -244,18 +250,18 @@ Python ShredStream 热路径默认严格解析静态账户;V0 ALT 指令需传
244
250
  | 描述 | 运行命令 | 源码 |
245
251
  |------|----------|------|
246
252
  | **PumpFun** | | |
247
- | PumpFun 交易过滤 | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.13` |
248
- | PumpFun 事件 + 性能指标 | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.13` |
249
- | PumpFun 快速连接测试 | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.13` |
253
+ | PumpFun 交易过滤 | `python examples/pumpfun_trade_filter.py` | [pumpfun_trade_filter.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_trade_filter.py) | `v0.5.14` |
254
+ | PumpFun 事件 + 性能指标 | `python examples/pumpfun_with_metrics.py` | [pumpfun_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_with_metrics.py) | `v0.5.14` |
255
+ | PumpFun 快速连接测试 | `python examples/pumpfun_quick_test.py` | [pumpfun_quick_test.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpfun_quick_test.py) | `v0.5.14` |
250
256
  | **PumpSwap** | | |
251
- | PumpSwap 超低延迟 | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.13` |
252
- | PumpSwap 事件 + 性能指标 | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.13` |
257
+ | PumpSwap 超低延迟 | `python examples/pumpswap_low_latency.py` | [pumpswap_low_latency.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_low_latency.py) | `v0.5.14` |
258
+ | PumpSwap 事件 + 性能指标 | `python examples/pumpswap_with_metrics.py` | [pumpswap_with_metrics.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/pumpswap_with_metrics.py) | `v0.5.14` |
253
259
  | **Meteora DAMM** | | |
254
- | Meteora DAMM V2 事件 | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.13` |
260
+ | Meteora DAMM V2 事件 | `python examples/meteora_damm_grpc.py` | [meteora_damm_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/meteora_damm_grpc.py) | `v0.5.14` |
255
261
  | **多协议** | | |
256
- | 订阅 Rust `Protocol` / `program_ids` 中的全部程序 | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.13` |
262
+ | 订阅 Rust `Protocol` / `program_ids` 中的全部程序 | `python examples/multi_protocol_grpc.py` | [multi_protocol_grpc.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/multi_protocol_grpc.py) | `v0.5.14` |
257
263
  | **工具** | | |
258
- | 按签名解析交易(HTTP RPC,非 gRPC)。`.env` 或环境中 `TX_SIGNATURE` / `RPC_URL` 或 `SOLANA_RPC_URL`,或 `--sig` / `--rpc`。 | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.13` |
264
+ | 按签名解析交易(HTTP RPC,非 gRPC)。`.env` 或环境中 `TX_SIGNATURE` / `RPC_URL` 或 `SOLANA_RPC_URL`,或 `--sig` / `--rpc`。 | `python examples/parse_tx_by_signature.py` | [parse_tx_by_signature.py](https://github.com/0xfnzero/sol-parser-sdk-python/blob/main/examples/parse_tx_by_signature.py) | `v0.5.14` |
259
265
 
260
266
  **环境变量:** gRPC 示例需要 **`GRPC_URL`** 或 **`GRPC_ENDPOINT`**,以及 **`GRPC_AUTH_TOKEN`** 或 **`GRPC_TOKEN`**(或旧名 `GEYSER_*`)。详见 **`.env.example`**。
261
267
 
@@ -38,6 +38,12 @@ def run_replay():
38
38
  encoded=json.loads(dex_event_json_dumps(event))
39
39
  assert encoded['data']['instruction_data']==e.instruction_data
40
40
  assert to_typed_event({encoded['type']:encoded['data']})==e
41
+ assert e.is_buy is (True if e.kind in ('RapidBuy','BuyPumpDelta') else None)
42
+ assert e.ix_name == ('buy_exact_quote_in_v2' if e.kind == 'RapidBuy' else None)
43
+ legacy = dict(encoded['data'])
44
+ legacy.pop('is_buy'); legacy.pop('ix_name')
45
+ old = to_typed_event({encoded['type']:legacy})
46
+ assert old.is_buy is None and old.ix_name is None
41
47
  assert e.kind==want['kind'] and e.user==want['user']
42
48
  assert e.input_account==want['input'] and e.output_account==want['output']
43
49
  assert e.amount_in==want['amount_in'] and e.min_amount_out==want['min_amount_out']
@@ -88,6 +94,7 @@ def check_boundaries(fixtures):
88
94
  tx=VersionedTransaction(MessageV0.try_compile(wallet.pubkey(),[ix],[],Hash.default()),[wallet]);tx.verify_and_hash_message()
89
95
  events=parse_shred_transaction(bytes(tx),filter=IncludeOnlyFilter([EventType.PUMP_FUN_TRADE]))
90
96
  assert len(events)==1 and events[0].data.kind=='MultiHopCurveSwap' and events[0].data.amount_in==amount
97
+ assert events[0].data.is_buy is None and events[0].data.ix_name is None
91
98
  assert parse_route(f['program'],data[:8]+bytes(8)+data[16:],a,EventMetadata(),0) is None
92
99
  first=next(f for f in fixtures if f['expected'][0]['kind']=='MultiHopSwap');tx,_=decode_wire_transaction(base64.b64decode(first['wire']));keys=[*tx['message']['accountKeys'],*first['loaded_writable'],*first['loaded_readonly']]
93
100
  ix=tx['message']['instructions'][first['expected'][0]['instruction_index']];a=[keys[i] for i in ix['accounts']];data=base58.b58decode(ix['data'])
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "sol-parser-sdk-python"
3
- version = "0.5.13"
3
+ version = "0.5.14"
4
4
  description = "Solana DEX program log parsing (pure Python, API aligned with sol-parser-sdk)"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.10"
@@ -1821,7 +1821,8 @@ def to_typed_event(event: dict) -> Optional[TypedDexEvent]:
1821
1821
  return PumpRouteIntentEvent(metadata=meta,kind=data['kind'],program=data['program'],
1822
1822
  instruction_index=int(data['instruction_index']),user=data['user'],input_account=data['input_account'],output_account=data['output_account'],
1823
1823
  amount_in=None if data.get('amount_in') is None else int(data['amount_in']),min_amount_out=None if data.get('min_amount_out') is None else int(data['min_amount_out']),
1824
- hops=[PumpRouteHop(**h) for h in data['hops']],instruction_data=list(data['instruction_data']))
1824
+ hops=[PumpRouteHop(**h) for h in data['hops']],instruction_data=list(data['instruction_data']),
1825
+ is_buy=data.get('is_buy'),ix_name=data.get('ix_name'))
1825
1826
 
1826
1827
  # PumpFun events
1827
1828
  if event_type in (EventType.PUMP_FUN_TRADE, EventType.PUMP_FUN_BUY,
@@ -38,6 +38,10 @@ class PumpRouteIntentEvent(DexEventBase):
38
38
  min_amount_out: Optional[int] = None
39
39
  hops: list[PumpRouteHop] = field(default_factory=list)
40
40
  instruction_data: list[int] = field(default_factory=list)
41
+ # Intended direction relative to the wrapper hop's base mint, not a fill.
42
+ is_buy: Optional[bool] = None
43
+ # Official underlying instruction name encoded in the wrapper; unknown is None.
44
+ ix_name: Optional[str] = None
41
45
 
42
46
 
43
47
  def allows_route(filter, program):
@@ -86,4 +90,7 @@ def parse_route(program,data,a,metadata,index,filter=None):
86
90
  kind,fixed,user,source,dest,amount,minimum='BuyPumpDelta',0,0,16,15,None,None
87
91
  if amount==0:return None
88
92
  hops=[PumpRouteHop(*a[i:i+5]) for i in range(fixed,len(a),5)] if fixed else [PumpRouteHop(*(a[i] for i in ((7,2,16,17,18) if program==RAPID else (2,3,11,12,13))))]
89
- return DexEvent(EventType.PUMP_ROUTE_INTENT,PumpRouteIntentEvent(metadata,kind,program,index,a[user],a[source],a[dest],amount,minimum,hops,list(data)))
93
+ return DexEvent(EventType.PUMP_ROUTE_INTENT,PumpRouteIntentEvent(
94
+ metadata,kind,program,index,a[user],a[source],a[dest],amount,minimum,hops,list(data),
95
+ is_buy=True if kind in ('RapidBuy', 'BuyPumpDelta') else None,
96
+ ix_name='buy_exact_quote_in_v2' if kind == 'RapidBuy' else None))