sol-parser-sdk-python 0.5.15__py3-none-any.whl → 0.5.17__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 CHANGED
@@ -513,8 +513,8 @@ from .pump_upgrade import PumpFunPostCompleteBuyEvent, PumpFunSweepBondingCurveF
513
513
  __all__ += ['decode_pump_multi_hop_intent','PumpFunPostCompleteBuyEvent','PumpFunSweepBondingCurveFeeEvent','PumpFunCompleteEvent','PumpSwapSweepPoolFeeEvent']
514
514
 
515
515
  from .pump_routes import PumpRouteHop, PumpRouteIntentEvent
516
- from .raw_instruction import RawInstructionEvent
517
- __all__ += ["RawInstructionEvent"]
516
+ from .raw_instruction import RawInstructionEvent, RawInstructionDex, RawInstructionDexType
517
+ __all__ += ["RawInstructionEvent", "RawInstructionDex", "RawInstructionDexType"]
518
518
  from .shredstream_client import parse_shred_transaction, parse_shred_transaction_with_loaded_addresses, parse_shred_transaction_best_effort
519
519
 
520
520
  __all__ += ["PumpRouteHop", "PumpRouteIntentEvent", "parse_shred_transaction", "parse_shred_transaction_with_loaded_addresses", "parse_shred_transaction_best_effort"]
sol_parser/event_types.py CHANGED
@@ -1817,8 +1817,8 @@ def to_typed_event(event: dict) -> Optional[TypedDexEvent]:
1817
1817
  return cls(metadata=meta,**values)
1818
1818
 
1819
1819
  if event_type == EventType.RAW_INSTRUCTION:
1820
- from .raw_instruction import RawInstructionEvent
1821
- return RawInstructionEvent(metadata=meta, program_id=data['program_id'],
1820
+ from .raw_instruction import RawInstructionEvent, RawInstructionDex
1821
+ return RawInstructionEvent(metadata=meta, dexes=[RawInstructionDex(**d) for d in data.get('dexes', [])], program_id=data['program_id'],
1822
1822
  instruction_index=int(data['instruction_index']), accounts=list(data['accounts']),
1823
1823
  account_indices=list(data['account_indices']), instruction_data=list(data['instruction_data']))
1824
1824
  if event_type == EventType.PUMP_ROUTE_INTENT:
sol_parser/grpc_types.py CHANGED
@@ -471,9 +471,11 @@ class EventMetadata:
471
471
 
472
472
  signature: str = ""
473
473
  slot: int = 0
474
- #: 区块内交易序号(Yellowstone ``SubscribeUpdateTransactionInfo.index`` / RPC ``transactionIndex``)
474
+ #: 调用方序号:Yellowstone 为节点 index;Entries 为单条消息内序号,下条消息从 0 开始。
475
+ #: Shred 跨消息去重使用交易签名,不能使用 (slot, tx_index)。
475
476
  tx_index: int = 0
476
477
  block_time_us: int = 0
478
+ #: 本地接收时间(微秒),不代表链上执行顺序。
477
479
  grpc_recv_us: int = 0
478
480
  recent_blockhash: str = ""
479
481
  is_created_buy: bool = False
@@ -1,15 +1,77 @@
1
1
  """Lossless outer instructions, without inferred CPI or trade semantics."""
2
+ from enum import Enum
2
3
  from dataclasses import dataclass, field
3
4
  from typing import Optional
4
5
  from .event_types import DexEventBase
5
6
 
6
7
  INFRASTRUCTURE_PROGRAMS = frozenset(["11111111111111111111111111111111","TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA","TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb","ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL","ComputeBudget111111111111111111111111111111","MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr","Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo","AddressLookupTab1e1111111111111111111111111","Vote111111111111111111111111111111111111111","Ed25519SigVerify111111111111111111111111111","KeccakSecp256k11111111111111111111111111111","Secp256r1SigVerify1111111111111111111111111"])
7
8
 
9
+ class RawInstructionDexType(str, Enum):
10
+ """Stable DEX identifiers; serialized as the original strings."""
11
+ PUMPFUN = "pumpfun"
12
+ PUMPSWAP = "pumpswap"
13
+ RAYDIUM_LAUNCHLAB = "raydium_launchlab"
14
+ RAYDIUM_CPMM = "raydium_cpmm"
15
+ RAYDIUM_CLMM = "raydium_clmm"
16
+ RAYDIUM_AMM_V4 = "raydium_amm_v4"
17
+ ORCA_WHIRLPOOL = "orca_whirlpool"
18
+ METEORA_POOLS = "meteora_pools"
19
+ METEORA_DAMM_V2 = "meteora_damm_v2"
20
+ METEORA_DLMM = "meteora_dlmm"
21
+ METEORA_DBC = "meteora_dbc"
22
+
23
+
24
+ @dataclass
25
+ class RawInstructionDex:
26
+ """DEX program reference, not proof of CPI execution or a pool layout."""
27
+ dex_type: RawInstructionDexType
28
+ program_id: str
29
+ pool: Optional[str] = None
30
+
31
+ def __post_init__(self):
32
+ # Normalize JSON strings and reject unsupported identifiers.
33
+ self.dex_type = RawInstructionDexType(self.dex_type)
34
+
8
35
  @dataclass
9
36
  class RawInstructionEvent(DexEventBase):
37
+ dexes: list[RawInstructionDex] = field(default_factory=list)
10
38
  program_id: str = ''
11
39
  instruction_index: int = 0
12
40
  # Original order including duplicates. None denotes an unresolved ALT key.
13
41
  accounts: list[Optional[str]] = field(default_factory=list)
14
42
  account_indices: list[int] = field(default_factory=list)
15
43
  instruction_data: list[int] = field(default_factory=list)
44
+
45
+ def raw_instruction_dexes(program, accounts):
46
+ from . import instructions as program_ids
47
+ return [RawInstructionDex(name, getattr(program_ids, pid)) for name, pid, _ in _DEX_PROGRAMS
48
+ if program == getattr(program_ids, pid) or getattr(program_ids, pid) in accounts]
49
+
50
+ _DEX_PROGRAMS = [
51
+ (RawInstructionDexType.PUMPFUN, "PUMPFUN_PROGRAM_ID", "PumpFunTrade"),
52
+ (RawInstructionDexType.PUMPSWAP, "PUMPSWAP_PROGRAM_ID", "PumpSwapTrade"),
53
+ (RawInstructionDexType.RAYDIUM_LAUNCHLAB, "RAYDIUM_LAUNCHLAB_PROGRAM_ID", "RaydiumLaunchlabTrade"),
54
+ (RawInstructionDexType.RAYDIUM_CPMM, "RAYDIUM_CPMM_PROGRAM_ID", "RaydiumCpmmSwap"),
55
+ (RawInstructionDexType.RAYDIUM_CLMM, "RAYDIUM_CLMM_PROGRAM_ID", "RaydiumClmmSwap"),
56
+ (RawInstructionDexType.RAYDIUM_AMM_V4, "RAYDIUM_AMM_V4_PROGRAM_ID", "RaydiumAmmV4Swap"),
57
+ (RawInstructionDexType.ORCA_WHIRLPOOL, "ORCA_WHIRLPOOL_PROGRAM_ID", "OrcaWhirlpoolSwap"),
58
+ (RawInstructionDexType.METEORA_POOLS, "METEORA_POOLS_PROGRAM_ID", "MeteoraPoolsSwap"),
59
+ (RawInstructionDexType.METEORA_DAMM_V2, "METEORA_DAMM_V2_PROGRAM_ID", "MeteoraDammV2Swap"),
60
+ (RawInstructionDexType.METEORA_DLMM, "METEORA_DLMM_PROGRAM_ID", "MeteoraDlmmSwap"),
61
+ (RawInstructionDexType.METEORA_DBC, "METEORA_DBC_PROGRAM_ID", "MeteoraDbcSwap"),
62
+ ]
63
+
64
+ def raw_instruction_matches_filter(dexes, filter):
65
+ from .grpc_types import EventType
66
+ if filter is None:
67
+ return True
68
+ if EventType.RAW_INSTRUCTION in (getattr(filter, "exclude_types", None) or ()):
69
+ return False
70
+ included = getattr(filter, "include_only", None)
71
+ if included is not None and EventType.RAW_INSTRUCTION in included:
72
+ return True
73
+ if not dexes:
74
+ return included is None
75
+ return any(dex.dex_type == name and (included is None or EventType(event) in included)
76
+ and filter.should_include(EventType(event))
77
+ for dex in dexes for name, _, event in _DEX_PROGRAMS)
@@ -133,7 +133,7 @@ def _should_parse_shred_instructions(filter: Optional[EventTypeFilter]) -> bool:
133
133
 
134
134
 
135
135
  def _parse_decoded_shred(tx, keys, signature, slot, tx_index, recv_us, filter, best_effort=False):
136
- from .raw_instruction import RawInstructionEvent, INFRASTRUCTURE_PROGRAMS
136
+ from .raw_instruction import RawInstructionEvent, INFRASTRUCTURE_PROGRAMS, raw_instruction_dexes, raw_instruction_matches_filter
137
137
  from .grpc_types import EventType
138
138
  from .pump_routes import may_parse_route, parse_route
139
139
  from .grpc_types import EventMetadata
@@ -154,10 +154,11 @@ def _parse_decoded_shred(tx, keys, signature, slot, tx_index, recv_us, filter, b
154
154
  for index, (pid, data, indices) in enumerate(instructions):
155
155
  unknown = pid and pid not in _UNKNOWN_PROGRAM_CANDIDATES and pid not in INFRASTRUCTURE_PROGRAMS
156
156
  explicit_raw = filter is not None and EventType.RAW_INSTRUCTION in (getattr(filter, 'include_only', None) or ())
157
- if pid and (unknown or explicit_raw) and (filter is None or filter.should_include(EventType.RAW_INSTRUCTION)):
157
+ dexes = raw_instruction_dexes(pid, [keys[i] if i < len(keys) else None for i in indices]) if unknown or explicit_raw else []
158
+ if pid and (unknown or explicit_raw) and raw_instruction_matches_filter(dexes, filter):
158
159
  out.append(DexEvent(EventType.RAW_INSTRUCTION, RawInstructionEvent(
159
160
  metadata=EventMetadata(signature=signature, slot=slot, tx_index=tx_index, grpc_recv_us=recv_us, recent_blockhash=msg['recentBlockhash']),
160
- program_id=pid, instruction_index=index,
161
+ dexes=dexes, program_id=pid, instruction_index=index,
161
162
  accounts=[keys[i] if i < len(keys) else None for i in indices],
162
163
  account_indices=list(indices), instruction_data=list(data))))
163
164
  if unknown:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: sol-parser-sdk-python
3
- Version: 0.5.15
3
+ Version: 0.5.17
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
@@ -22,7 +22,17 @@ Description-Content-Type: text/markdown
22
22
 
23
23
  <div align="center">
24
24
 
25
- ## v0.5.15 — Pump execution replay
25
+ ## v0.5.17 — Shred metadata passthrough and ordering scope
26
+
27
+ Preserve and verify transaction position and receive time through raw instruction callbacks. Entries indexes are message-local, unlike Yellowstone node indexes; use signatures for cross-message deduplication. This release clarifies API documentation and adds regression protection without changing metadata fields or numbering behavior.
28
+
29
+
30
+ ## v0.5.17 — DEX-scoped RawInstruction and typed DEX identifiers
31
+
32
+ Raw instructions now respect DEX subscriptions using programs referenced by each instruction. `RawInstructionDexType` provides typed identifiers with unchanged JSON strings. Unknown router layouts do not establish pool addresses, trade direction, or method versions.
33
+
34
+
35
+ ## v0.5.17 — Pump execution replay
26
36
 
27
37
  Current Anchor TradeEvent CPI decoding is supported alongside the historical encoding. RPC/gRPC instruction budgets and minimum outputs remain in instruction fields. Execution fields `sol_amount`, `quote_amount`, and `token_amount` come from execution events; without logs or event CPIs they remain zero (unavailable, not a proven zero fill).
28
38
 
@@ -30,13 +40,17 @@ Run `.venv/bin/python examples/pump_execution_replay.py` from this repository to
30
40
 
31
41
  The current Delta sell signature is `4ARos3Yq1SMNE3izDpy9YdKrRgMmD7UCDxvnVrBRaGCJHiifPHSmQWc4DPfjUaEUcxS7puGmEN64K7EZdeXLJaj2` (slot 458542546). The dated fixture also includes Rapid create/buy, BuyV3, and PumpSwap buy with their full signatures and slots. Older five-combination multi-hop fixtures are retained as regression tests, not labeled as new mainnet captures.
32
42
 
33
- ## v0.5.15 — raw Shred instructions
43
+ ## v0.5.17 — raw Shred instructions
34
44
 
35
45
  Default Shred parsing emits `RawInstruction` for unsupported third-party programs, including Rapid/Delta, without inferring direction, amounts, or internal buy methods. Infrastructure programs (System, Token, ATA, ComputeBudget, etc.) are omitted by default. Supported official DEX parsers are unchanged; official Pump/PumpSwap multi-hop instructions retain `PumpRouteIntent`.
36
46
 
37
47
  The payload contains `program_id`, `instruction_index`, `accounts`, `account_indices`, `instruction_data`, and transaction metadata. Account order and duplicates are preserved. Unresolved ALT addresses are null/None, with original indices retained; supply cached loaded addresses or a resolver. No hot-path RPC is performed. Data is copied verbatim without requiring a known layout.
38
48
 
39
- No filter returns unknown third-party instructions. Explicitly including `RawInstruction` returns every outer instruction, including infrastructure. A `PumpFunTrade`-only filter does not include raw events: subscribe to both types when needed. Streamer forwards `DexEvent::RawInstructionEvent` as Common. A Pump address in accounts does not prove a CPI or a particular buy method. Event count is not fill count.
49
+ Run `uv run python examples/raw_instruction_filter.py` to compare PumpFun-only, Raydium CPMM-only, and all-raw subscriptions against signed offline transactions; the output includes `dexes`.
50
+
51
+ The raw event retains `metadata.tx_index` and `metadata.grpc_recv_us` from the parser arguments (streamer names the receive field `metadata.recv_us`). The default Entries client index is local to one received Entries message and restarts at zero for the next message; it is not a confirmed slot-wide transaction index. `instruction_index` orders outer instructions within a transaction. Receive time is a local microsecond timestamp, not an execution-order guarantee. Standalone replay APIs may default these values to zero; pass the upstream values when available.
52
+
53
+ Without a filter, unknown third-party instructions are returned. Broad trade/swap filters (for example `PumpFunTrade` or `RaydiumCpmmSwap`) also return raw instructions associated with that DEX; direction-specific filters do not infer a buy or sell. Explicit `RawInstruction` selects all outer instructions only when no protocol restriction is set; streamer protocol restrictions always apply. Excluding `RawInstruction` wins. `dex_type` uses the public `RawInstructionDexType` enum (typed string constants in Go); JSON values remain unchanged, such as `"pumpfun"` and `"raydium_cpmm"`. `dexes` contains `{ dex_type, program_id, pool }` for each recognized DEX program targeted or referenced by this instruction, not other instructions in the transaction. Multi-DEX wrappers retain every association. Unknown or unresolved ALT references cannot satisfy a DEX subscription. `pool` is currently null: an unknown wrapper layout cannot establish the pool account. A program reference is not proof of an executed CPI. Raw callbacks are not fills.
40
54
 
41
55
  Wrapper adapter functions remain explicit compatibility helpers only; default Shred parsing does not call them. The released-version history below describes previous behavior.
42
56
 
@@ -79,11 +93,11 @@ Parser SDK language versions and related Rust SDKs:
79
93
 
80
94
  | Language | Repository | Description | Version |
81
95
  |----------|------------|-------------|---------|
82
- | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.16` |
83
- | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.22` |
84
- | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.15` |
85
- | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.15` |
86
- | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.7` |
96
+ | Rust | [sol-parser-sdk](https://github.com/0xfnzero/sol-parser-sdk) | Solana DEX transaction and account event parsing | `v0.7.18` |
97
+ | Node.js | [sol-parser-sdk-nodejs](https://github.com/0xfnzero/sol-parser-sdk-nodejs) | TypeScript/JavaScript for Node.js | `v0.5.24` |
98
+ | Python | [sol-parser-sdk-python](https://github.com/0xfnzero/sol-parser-sdk-python) | Async/await native support | `v0.5.17` |
99
+ | Go | [sol-parser-sdk-golang](https://github.com/0xfnzero/sol-parser-sdk-golang) | Go transaction and account event parsing | `v0.5.17` |
100
+ | **Rust** | [sol-shred-sdk](https://github.com/0xfnzero/sol-shred-sdk) | Raw Solana shred decoding and ShredStream DEX event parsing | `v4.0.9` |
87
101
  | **Rust** | [sol-trade-sdk](https://github.com/0xfnzero/sol-trade-sdk) | Solana DEX trade construction and transaction execution | `v6.0.2` |
88
102
 
89
103
  ---
@@ -175,7 +189,7 @@ This is the Python implementation of the FnZero Solana DEX parser SDK for asynci
175
189
  **From PyPI**
176
190
 
177
191
  ```bash
178
- pip install sol-parser-sdk-python==0.5.15
192
+ pip install sol-parser-sdk-python==0.5.17
179
193
  ```
180
194
 
181
195
  **From source**
@@ -291,18 +305,18 @@ From the **package root** after `pip install -e .`. Run with `python examples/<f
291
305
  | Description | Run command | Source |
292
306
  |-------------|-------------|--------|
293
307
  | **PumpFun** | | |
294
- | 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.15` |
295
- | 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.15` |
296
- | 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.15` |
308
+ | 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.17` |
309
+ | 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.17` |
310
+ | 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.17` |
297
311
  | **PumpSwap** | | |
298
- | 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.15` |
299
- | 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.15` |
312
+ | 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.17` |
313
+ | 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.17` |
300
314
  | **Meteora DAMM** | | |
301
- | 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.15` |
315
+ | 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.17` |
302
316
  | **Multi-protocol** | | |
303
- | 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.15` |
317
+ | 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.17` |
304
318
  | **Utility** | | |
305
- | 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.15` |
319
+ | 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.17` |
306
320
 
307
321
  **Env:** gRPC examples need **`GRPC_URL`** or **`GRPC_ENDPOINT`**, plus **`GRPC_AUTH_TOKEN`** or **`GRPC_TOKEN`** (or legacy `GEYSER_*`). See **`.env.example`**.
308
322
 
@@ -1,4 +1,4 @@
1
- sol_parser/__init__.py,sha256=Q8OdGgSlSAFyt3AAPBI5IF-APauFGy7kZyJDZhotsbA,17619
1
+ sol_parser/__init__.py,sha256=DB52eD4ZNMpjx3MA_f3MCB87WfDiYovJU7pIgtH8Nfk,17707
2
2
  sol_parser/account_dispatcher.py,sha256=WgWD0833ArPtXuRGMO7_URDxPhLaCcnHc-e8RNeGCJI,19947
3
3
  sol_parser/block_meta.py,sha256=LuJ4oy6xvRmFjSIUDUG9k4Dg7q9l2xW9z35wYJdBmCw,854
4
4
  sol_parser/check_migration.py,sha256=PsRE_Zhnw2g_iaP_iYtlGsQutE2w_FsaZIP4GPeN8-o,537
@@ -7,12 +7,12 @@ sol_parser/dex_parsers.py,sha256=eOigBKLpMQGZT_3dJwq18niDhY0fSGJrULDx_TGNC8Q,146
7
7
  sol_parser/entries_decode.py,sha256=MOhGadNxWLerxBhGvuNatoWa2hzw2MXVz9NmNUhWvS8,3665
8
8
  sol_parser/env_config.py,sha256=Lw0SdZuy_MvUaVkyFxS0qPBgMzR9UBbxbN0CVz8nxg4,7296
9
9
  sol_parser/event_type_parity.py,sha256=G2drUpg-YDtRSzIp1zGUkVheVzfCGely3H9Uw46bqGE,4543
10
- sol_parser/event_types.py,sha256=l4k78EDzJVuP-CTWdwC4LruVcoXiMWGEwJIrEEfr1Jw,98776
10
+ sol_parser/event_types.py,sha256=ShFAho7xGcfrtHMtkQVJlLO8L1YHeYY6bVvk4atPofE,98858
11
11
  sol_parser/geyser_pb2.py,sha256=Hq66wmWxXD2jSbSVQW7vmBRB7nWmR1DuYDMQ6nKgl3o,20123
12
12
  sol_parser/geyser_pb2_grpc.py,sha256=ASPmZsCNvyCzt_j4IrhKjSacWUNLVuAiLfpjmyd-2Qc,15322
13
13
  sol_parser/grpc_client.py,sha256=fusMuSJsTPEUxgobdeimQ7s3Hu9n0bD8pIH7rEL40jM,37370
14
14
  sol_parser/grpc_instruction_parser.py,sha256=-aO5t2lMjeqePw-wR17DbkcMeCco-NU2NiqYOnSjObM,17274
15
- sol_parser/grpc_types.py,sha256=bp-bsoZDWMeT44hFYJ64ksr_geeNMa_KzEKJdvGlvW8,41481
15
+ sol_parser/grpc_types.py,sha256=hXX-hXa0LSXXUEOt83855PFdcoiu8gxIEIohrYbC3bw,41638
16
16
  sol_parser/inner_instruction_parser.py,sha256=TtBAWx7WKw4pGOm1gwXDWNSfwuTko8cZ9_HryAYodCI,21911
17
17
  sol_parser/instr_account_utils.py,sha256=MY8bgoIDiv2yJKeWxqhpfKc3pV4xUFTcYKnSXtnQMWc,1990
18
18
  sol_parser/instructions.py,sha256=j5hLBo4cduoXDu8n1ICQfc0k9tAJ3wSPJj5kWsL0KXw,88747
@@ -26,11 +26,11 @@ sol_parser/parser.py,sha256=aSDbsbnUqBHEJ6UMdnZIuR-01fWs4_GxUwTJ3vQ0GXU,11906
26
26
  sol_parser/pump_routes.py,sha256=U7FWxZYyP860jUZh5F8YKAoauki-hgmfu2DNDjEcplM,4868
27
27
  sol_parser/pump_upgrade.py,sha256=BnVB8PVHfPtILBOlI29nbXABihVuXZUO82Yw6upFhRM,5212
28
28
  sol_parser/pumpfun_fee_enrich.py,sha256=NHC_chCv2wuaOW5taYG8R6M1bu8cmdxcLf8cjSfo7Kc,4688
29
- sol_parser/raw_instruction.py,sha256=puKDeTi7O-RUjUbnoq2uLYL1DgN8Gk73q970Kp5rrGg,1140
29
+ sol_parser/raw_instruction.py,sha256=SmihBlAjEAxJ3XucvX2Yuw2ij9UIo9pHZT00cyOSToM,4017
30
30
  sol_parser/rpc_parser.py,sha256=-e6IIyZQdmz-BUZiKZ5NBdcOphueIGelZTw-hXO_PpU,26022
31
31
  sol_parser/rust_api_inventory.py,sha256=V5Bx1M3GT-ku_vj_kD6lnbqWExv1K_A00PrmhCFfRec,2257
32
32
  sol_parser/rust_event_json.py,sha256=7hho9TGfSOQjHev_8uRa4YHU1hrEsW1RfwcU9qHYz1o,1649
33
- sol_parser/shredstream_client.py,sha256=DH6yNZF58y_69oTMoHdo6bFsWoGw-W-FgNmxVypBOLo,12610
33
+ sol_parser/shredstream_client.py,sha256=6JeIyTiva6BjwCn6KUgc2TaSsKPvWsQhyzsCaCqO_ak,12788
34
34
  sol_parser/shredstream_pb2.py,sha256=BMrgCTcvRu5sY_QG1nj5AhWK9RL1fqF9Ga0xYihQfio,1703
35
35
  sol_parser/shredstream_pb2_grpc.py,sha256=zfRJaDj-76Gbr6tC3x4gFOz6Xpu2fmJFWWcTOTmyIXs,3013
36
36
  sol_parser/shredstream_pumpfun.py,sha256=agTryEilG7c9Ttlek2-d2fyhzwGHIKrUD9YMAJjvXfk,11187
@@ -60,7 +60,7 @@ sol_parser/grpc/subscribe_builder.py,sha256=xH9NZ1Lp-7AQKcgxoqyE0PrB3vdOqnScm_Ht
60
60
  sol_parser/grpc/transaction_meta.py,sha256=NmIffIQ1_OIfWGjy6JY-f8pIK5ucjDZXXJryjnlgoQs,5894
61
61
  sol_parser/instr/__init__.py,sha256=0_Ky8KpVEoXzxszHcHLTuY2SDsJwu0uAF2Q0wMY1e-c,503
62
62
  sol_parser/logs/__init__.py,sha256=e1cbhbCNeXy-NZvVsYCpGksBpZf4NJBLmdlky06og-U,349
63
- sol_parser_sdk_python-0.5.15.dist-info/METADATA,sha256=lYO7wm1TeTd-336DRBLgzYyXZNkoQBGoP-rFP0au5hU,23191
64
- sol_parser_sdk_python-0.5.15.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
65
- sol_parser_sdk_python-0.5.15.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
66
- sol_parser_sdk_python-0.5.15.dist-info/RECORD,,
63
+ sol_parser_sdk_python-0.5.17.dist-info/METADATA,sha256=yuJGqJB96WDIkSqiXfCx85EyJYqE0Iz6V5JLQci6Wlk,25318
64
+ sol_parser_sdk_python-0.5.17.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
65
+ sol_parser_sdk_python-0.5.17.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
66
+ sol_parser_sdk_python-0.5.17.dist-info/RECORD,,