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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
sol_parser/merger.py CHANGED
@@ -60,48 +60,123 @@ def _fill_attr_if_empty(base: Any, attr: str, source: Any) -> None:
60
60
  setattr(base, attr, value)
61
61
 
62
62
 
63
+ def _put_attr_if_set(base: Any, attr: str, source: Any) -> None:
64
+ value = getattr(source, attr, None)
65
+ if not _empty(value):
66
+ setattr(base, attr, value)
67
+
68
+
69
+ def _put_num_if_nonzero(base: Any, attr: str, source: Any) -> None:
70
+ value = getattr(source, attr, 0)
71
+ if value:
72
+ setattr(base, attr, value)
73
+
74
+
63
75
  def merge_pumpfun_trade(base: PumpFunTradeEvent, inner: PumpFunTradeEvent) -> None:
64
- base.mint = inner.mint
65
- base.sol_amount = inner.sol_amount
66
- base.token_amount = inner.token_amount
67
- base.is_buy = inner.is_buy
68
- base.user = inner.user
69
- base.timestamp = inner.timestamp
70
- base.virtual_sol_reserves = inner.virtual_sol_reserves
71
- base.virtual_token_reserves = inner.virtual_token_reserves
72
- base.real_sol_reserves = inner.real_sol_reserves
73
- base.real_token_reserves = inner.real_token_reserves
74
- base.fee_recipient = inner.fee_recipient
75
- base.fee_basis_points = inner.fee_basis_points
76
- base.fee = inner.fee
77
- base.creator = inner.creator
78
- base.creator_fee_basis_points = inner.creator_fee_basis_points
79
- base.creator_fee = inner.creator_fee
80
- base.track_volume = inner.track_volume
81
- base.total_unclaimed_tokens = inner.total_unclaimed_tokens
82
- base.total_claimed_tokens = inner.total_claimed_tokens
83
- base.current_sol_volume = inner.current_sol_volume
84
- base.last_update_timestamp = inner.last_update_timestamp
85
- base.ix_name = inner.ix_name
86
- base.is_created_buy = inner.is_created_buy
87
- base.mayhem_mode = inner.mayhem_mode
88
- base.cashback_fee_basis_points = inner.cashback_fee_basis_points
89
- base.cashback = inner.cashback
90
- if inner.buyback_fee_basis_points != 0:
91
- base.buyback_fee_basis_points = inner.buyback_fee_basis_points
92
- if inner.buyback_fee != 0:
93
- base.buyback_fee = inner.buyback_fee
94
- if inner.shareholders:
76
+ leg = inner.sol_amount != 0 or inner.token_amount != 0
77
+
78
+ for attr in ("mint", "user", "fee_recipient", "creator"):
79
+ _put_attr_if_set(base, attr, inner)
80
+
81
+ if leg:
82
+ for attr in (
83
+ "sol_amount",
84
+ "token_amount",
85
+ "timestamp",
86
+ "virtual_sol_reserves",
87
+ "virtual_token_reserves",
88
+ "real_sol_reserves",
89
+ "real_token_reserves",
90
+ "fee_basis_points",
91
+ "fee",
92
+ "creator_fee_basis_points",
93
+ "creator_fee",
94
+ "total_unclaimed_tokens",
95
+ "total_claimed_tokens",
96
+ "current_sol_volume",
97
+ "last_update_timestamp",
98
+ ):
99
+ setattr(base, attr, getattr(inner, attr))
100
+ base.is_buy = inner.is_buy
101
+ base.track_volume = bool(base.track_volume) or bool(inner.track_volume)
102
+ base.mayhem_mode = bool(base.mayhem_mode) or bool(inner.mayhem_mode)
103
+ if inner.ix_name:
104
+ base.ix_name = inner.ix_name
105
+ base.is_cashback_coin = bool(base.is_cashback_coin) or bool(inner.is_cashback_coin)
106
+ else:
107
+ for attr in (
108
+ "fee",
109
+ "creator_fee",
110
+ "fee_basis_points",
111
+ "creator_fee_basis_points",
112
+ "virtual_sol_reserves",
113
+ "virtual_token_reserves",
114
+ "real_sol_reserves",
115
+ "real_token_reserves",
116
+ "total_unclaimed_tokens",
117
+ "total_claimed_tokens",
118
+ "current_sol_volume",
119
+ "timestamp",
120
+ "last_update_timestamp",
121
+ ):
122
+ _put_num_if_nonzero(base, attr, inner)
123
+ base.track_volume = bool(base.track_volume) or bool(inner.track_volume)
124
+ base.mayhem_mode = bool(base.mayhem_mode) or bool(inner.mayhem_mode)
125
+ if inner.ix_name:
126
+ base.ix_name = inner.ix_name
127
+ base.is_cashback_coin = bool(base.is_cashback_coin) or bool(inner.is_cashback_coin)
128
+
129
+ for attr in (
130
+ "cashback_fee_basis_points",
131
+ "cashback",
132
+ "buyback_fee_basis_points",
133
+ "buyback_fee",
134
+ "quote_amount",
135
+ "virtual_quote_reserves",
136
+ "real_quote_reserves",
137
+ "amount",
138
+ "max_sol_cost",
139
+ "min_sol_output",
140
+ "spendable_sol_in",
141
+ "spendable_quote_in",
142
+ "min_tokens_out",
143
+ ):
144
+ _put_num_if_nonzero(base, attr, inner)
145
+
146
+ if inner.shareholders and not base.shareholders:
95
147
  base.shareholders = inner.shareholders
96
- if not _empty(inner.quote_mint):
97
- base.quote_mint = inner.quote_mint
98
- if inner.quote_amount != 0:
99
- base.quote_amount = inner.quote_amount
100
- if inner.virtual_quote_reserves != 0:
101
- base.virtual_quote_reserves = inner.virtual_quote_reserves
102
- if inner.real_quote_reserves != 0:
103
- base.real_quote_reserves = inner.real_quote_reserves
104
- base.is_cashback_coin = inner.is_cashback_coin
148
+
149
+ for attr in (
150
+ "quote_mint",
151
+ "global_account",
152
+ "bonding_curve",
153
+ "bonding_curve_v2",
154
+ "associated_bonding_curve",
155
+ "associated_user",
156
+ "system_program",
157
+ "token_program",
158
+ "quote_token_program",
159
+ "associated_token_program",
160
+ "creator_vault",
161
+ "associated_quote_fee_recipient",
162
+ "buyback_fee_recipient",
163
+ "associated_quote_buyback_fee_recipient",
164
+ "associated_quote_bonding_curve",
165
+ "associated_quote_user",
166
+ "associated_creator_vault",
167
+ "sharing_config",
168
+ "event_authority",
169
+ "program",
170
+ "global_volume_accumulator",
171
+ "user_volume_accumulator",
172
+ "associated_user_volume_accumulator",
173
+ "fee_config",
174
+ "fee_program",
175
+ "extra_instruction_account",
176
+ ):
177
+ _put_attr_if_set(base, attr, inner)
178
+
179
+ base.is_created_buy = bool(base.is_created_buy) or bool(inner.is_created_buy)
105
180
 
106
181
 
107
182
  def merge_pumpswap_buy(base: PumpSwapBuyEvent, inner: PumpSwapBuyEvent) -> None:
@@ -199,7 +274,6 @@ def merge_dex_events(base: DexEvent, inner: DexEvent) -> None:
199
274
  EventType.PUMP_FUN_BUY_EXACT_SOL_IN,
200
275
  ):
201
276
  merge_pumpfun_trade(bd, ind)
202
- base.type = inner.type
203
277
  return
204
278
 
205
279
  if isinstance(bd, PumpFunCreateEvent) and isinstance(ind, PumpFunCreateEvent):
sol_parser/parser.py CHANGED
@@ -8,12 +8,16 @@ from typing import TYPE_CHECKING, Any, Callable, Dict, List, Optional
8
8
 
9
9
  from .dex_parsers import (
10
10
  DexEvent,
11
+ PUMPFUN_PROGRAM_ID,
12
+ PUMP_TRADE,
11
13
  apply_event_type_filter,
12
14
  dispatch_program_data,
13
15
  event_type_for_discriminator,
14
16
  event_type_for_program_discriminator,
15
17
  filter_allows_unknown_log_event,
18
+ filter_allows_unscoped_discriminator,
16
19
  filter_includes_program,
20
+ filter_wants_pumpfun_trade,
17
21
  parse_trade_from_data,
18
22
  )
19
23
 
@@ -32,13 +36,11 @@ def decode_program_data_line(log: str) -> Optional[bytes]:
32
36
  if i < 0:
33
37
  return None
34
38
  s = log[i + len(p) :].strip()
35
- if len(s) > 2700:
36
- return None
37
39
  try:
38
40
  raw = base64.standard_b64decode(s)
39
41
  except Exception:
40
42
  return None
41
- if len(raw) < 8 or len(raw) > 2048:
43
+ if len(raw) < 8:
42
44
  return None
43
45
  return raw
44
46
 
@@ -82,19 +84,37 @@ def parse_log_optimized(
82
84
  return None
83
85
  disc = _disc8(buf[:8])
84
86
  if event_type_filter is not None:
87
+ is_unscoped_shared_discriminator = program_id is None and disc in (
88
+ _disc8(bytes([189, 219, 127, 211, 78, 230, 97, 238])),
89
+ _disc8(bytes([143, 190, 90, 218, 196, 30, 51, 222])),
90
+ )
85
91
  event_type = event_type_for_program_discriminator(program_id, disc)
86
- if event_type is not None:
92
+ if is_unscoped_shared_discriminator:
93
+ if not filter_allows_unscoped_discriminator(event_type_filter, disc):
94
+ return None
95
+ elif program_id == PUMPFUN_PROGRAM_ID and disc == PUMP_TRADE:
96
+ if not filter_wants_pumpfun_trade(event_type_filter):
97
+ return None
98
+ elif event_type is not None:
87
99
  if not event_type_filter.should_include(event_type):
88
100
  return None
89
101
  elif program_id:
90
102
  if not filter_includes_program(event_type_filter, program_id):
91
103
  return None
92
- elif not filter_allows_unknown_log_event(event_type_filter):
104
+ elif not filter_allows_unscoped_discriminator(event_type_filter, disc):
93
105
  return None
94
106
  data = buf[8:]
95
107
  meta = _meta(signature, slot, tx_index, block_time_us, grpc, recent_blockhash)
96
108
  return apply_event_type_filter(
97
- dispatch_program_data(disc, data, buf, meta, is_created_buy, program_id),
109
+ dispatch_program_data(
110
+ disc,
111
+ data,
112
+ buf,
113
+ meta,
114
+ is_created_buy,
115
+ program_id,
116
+ event_type_filter,
117
+ ),
98
118
  event_type_filter,
99
119
  )
100
120
 
@@ -82,7 +82,18 @@ def enrich_create_v2_from_create_events(events: List[DexEvent]) -> None:
82
82
  if c is None:
83
83
  continue
84
84
 
85
- for attr in ("name", "symbol", "uri", "bonding_curve", "user", "creator", "token_program", "quote_mint"):
85
+ for attr in (
86
+ "name",
87
+ "symbol",
88
+ "uri",
89
+ "bonding_curve",
90
+ "user",
91
+ "creator",
92
+ "token_program",
93
+ "quote_mint",
94
+ "quote_vault",
95
+ "quote_token_program",
96
+ ):
86
97
  _fill_str_if_empty(c2, attr, getattr(c, attr))
87
98
  for attr in (
88
99
  "timestamp",
sol_parser/rpc_parser.py CHANGED
@@ -8,9 +8,10 @@ from dataclasses import dataclass
8
8
 
9
9
  import base58
10
10
 
11
- from .dex_parsers import DexEvent, dispatch_program_data, parse_trade_from_data
11
+ from .dex_parsers import DexEvent
12
12
  from .grpc_types import EventTypeFilter, EventType, event_type_filter_allows_instruction_parsing
13
- from .instructions import parse_instruction_unified
13
+ from .inner_instruction_parser import parse_inner_instruction
14
+ from .instructions import parse_inner_compiled_instruction_if_supported, parse_instruction_unified
14
15
  from .log_instr_dedup import dedupe_log_instruction_events
15
16
  from .pumpfun_fee_enrich import enrich_pumpfun_same_tx_post_merge
16
17
 
@@ -214,11 +215,16 @@ def parse_rpc_transaction(
214
215
  block_tx_index = int(getattr(tx, "transaction_index", 0) or 0)
215
216
  full_account_keys = _merge_rpc_full_account_keys(msg.account_keys, meta)
216
217
 
217
- instruction_events: List[DexEvent] = []
218
+ indexed_instruction_events: List[Tuple[int, Optional[int], DexEvent]] = []
219
+ from .grpc_instruction_parser import (
220
+ detect_pumpfun_create_from_logs,
221
+ merge_instruction_events,
222
+ )
223
+ has_pumpfun_create_log = detect_pumpfun_create_from_logs(list(meta.log_messages))
218
224
 
219
225
  if _should_parse_rpc_instructions(filter):
220
226
  # 解析外层指令
221
- for ix in msg.instructions:
227
+ for outer_idx, ix in enumerate(msg.instructions):
222
228
  ev = _parse_rpc_instruction(
223
229
  ix,
224
230
  full_account_keys,
@@ -228,13 +234,15 @@ def parse_rpc_transaction(
228
234
  block_time_us,
229
235
  grpc_recv_us,
230
236
  filter,
237
+ inner=False,
238
+ is_created_buy=has_pumpfun_create_log,
231
239
  )
232
240
  if ev:
233
- instruction_events.append(ev)
241
+ indexed_instruction_events.append((outer_idx, None, ev))
234
242
 
235
243
  # 解析内层指令
236
244
  for group in meta.inner_instructions:
237
- for ix in group.instructions:
245
+ for inner_idx, ix in enumerate(group.instructions):
238
246
  ev = _parse_rpc_instruction(
239
247
  ix,
240
248
  full_account_keys,
@@ -244,12 +252,20 @@ def parse_rpc_transaction(
244
252
  block_time_us,
245
253
  grpc_recv_us,
246
254
  filter,
255
+ inner=True,
256
+ is_created_buy=has_pumpfun_create_log,
247
257
  )
248
258
  if ev:
249
- instruction_events.append(ev)
259
+ indexed_instruction_events.append((int(group.index), inner_idx, ev))
260
+
261
+ instruction_events = merge_instruction_events(indexed_instruction_events)
262
+ enrich_pumpfun_same_tx_post_merge(instruction_events)
263
+ if msg.recent_blockhash:
264
+ for ev in instruction_events:
265
+ if hasattr(ev.data, "metadata"):
266
+ ev.data.metadata.recent_blockhash = msg.recent_blockhash
250
267
 
251
268
  # 解析日志
252
- is_created_buy = False
253
269
  recent_blockhash = msg.recent_blockhash
254
270
  log_events: List[DexEvent] = []
255
271
 
@@ -271,13 +287,11 @@ def parse_rpc_transaction(
271
287
  block_time_us,
272
288
  grpc_recv_us,
273
289
  filter,
274
- is_created_buy,
290
+ has_pumpfun_create_log,
275
291
  recent_blockhash,
276
292
  active_program_stack[-1] if active_program_stack else None,
277
293
  )
278
294
  if ev:
279
- if ev.type in (EventType.PUMP_FUN_CREATE, EventType.PUMP_FUN_CREATE_V2):
280
- is_created_buy = True
281
295
  log_events.append(ev)
282
296
 
283
297
  completed = parse_program_complete_info(log)
@@ -315,6 +329,8 @@ def _parse_rpc_instruction(
315
329
  block_time_us: Optional[int],
316
330
  grpc_recv_us: int,
317
331
  filter: Optional[EventTypeFilter],
332
+ inner: bool = False,
333
+ is_created_buy: bool = False,
318
334
  ) -> Optional[DexEvent]:
319
335
  """解析 RPC 指令"""
320
336
  # 获取程序 ID
@@ -334,6 +350,35 @@ def _parse_rpc_instruction(
334
350
  if acc_idx < len(account_keys):
335
351
  accounts.append(account_keys[acc_idx])
336
352
 
353
+ if inner:
354
+ ev = parse_inner_compiled_instruction_if_supported(
355
+ data,
356
+ accounts,
357
+ signature,
358
+ slot,
359
+ tx_index,
360
+ block_time_us,
361
+ grpc_recv_us,
362
+ filter,
363
+ program_id,
364
+ )
365
+ if ev:
366
+ return ev
367
+ return parse_inner_instruction(
368
+ data,
369
+ program_id,
370
+ {
371
+ "signature": signature,
372
+ "slot": slot,
373
+ "tx_index": tx_index,
374
+ "block_time_us": 0 if block_time_us is None else block_time_us,
375
+ "grpc_recv_us": grpc_recv_us,
376
+ "recent_blockhash": "",
377
+ },
378
+ filter,
379
+ is_created_buy,
380
+ )
381
+
337
382
  return parse_instruction_unified(
338
383
  data, accounts, signature, slot, tx_index, block_time_us, grpc_recv_us, filter, program_id
339
384
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sol-parser-sdk-python
3
- Version: 0.5.6
3
+ Version: 0.5.7
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
@@ -92,7 +92,7 @@ Description-Content-Type: text/markdown
92
92
  **From PyPI**
93
93
 
94
94
  ```bash
95
- pip install sol-parser-sdk-python==0.5.6
95
+ pip install sol-parser-sdk-python==0.5.7
96
96
  ```
97
97
 
98
98
  **From source**
@@ -1,27 +1,28 @@
1
- sol_parser/__init__.py,sha256=ir7IT87fC7yaN_fyGO3-116lc7CFtU-0EwAbDoBZV0E,13873
2
- sol_parser/account_dispatcher.py,sha256=F88hfvWmwCLb2Pv8Fr_fYVa3_n80aHwcVdFtwWT-hwQ,9752
3
- sol_parser/check_migration.py,sha256=hW2qb-EVVoqBUTH3ARhEkSvP9aHcNEkg3ket7lfMVzQ,415
1
+ sol_parser/__init__.py,sha256=afdR4vxTW8C9SDSbS5T8dq_QDBT_YLar_HX73hADNac,14587
2
+ sol_parser/account_dispatcher.py,sha256=Zyf__nGqHC-Fu6gRRrRbWO0LN2snZetXxOf3z4w5RnY,9916
3
+ sol_parser/check_migration.py,sha256=PsRE_Zhnw2g_iaP_iYtlGsQutE2w_FsaZIP4GPeN8-o,537
4
4
  sol_parser/clock.py,sha256=RHF99qMerKvEsT55krkftIh-uqy_uTzpgdKCqKBMDmA,278
5
- sol_parser/dex_parsers.py,sha256=Ictl5Zeo4DayIquXicm3psUMy456kSeT9F4jLcUYfcE,82412
5
+ sol_parser/dex_parsers.py,sha256=QAjMZWpDjSIDmybLkpfLFSqXbVQr5psxxcqdf8d6YSw,116197
6
6
  sol_parser/entries_decode.py,sha256=-eooIYrXOcpNtrSgSEVehY8NkBhwUMnziAR5Wx8S0Nk,5620
7
7
  sol_parser/env_config.py,sha256=Lw0SdZuy_MvUaVkyFxS0qPBgMzR9UBbxbN0CVz8nxg4,7296
8
- sol_parser/event_types.py,sha256=Q_HZNdJ0Yb5Mg__3Wv9yUD-nCG00_getYdJ_DHssqgI,68228
8
+ sol_parser/event_type_parity.py,sha256=OdxazIDB_My6IEBswbl0GY3FmPv4RniKcMmvONbg-FQ,4040
9
+ sol_parser/event_types.py,sha256=0PyrnwZbNOH8X9mH8CRVXreGX8wC2o0vKNrd-arp_hk,78273
9
10
  sol_parser/geyser_pb2.py,sha256=Hq66wmWxXD2jSbSVQW7vmBRB7nWmR1DuYDMQ6nKgl3o,20123
10
11
  sol_parser/geyser_pb2_grpc.py,sha256=ASPmZsCNvyCzt_j4IrhKjSacWUNLVuAiLfpjmyd-2Qc,15322
11
- sol_parser/grpc_client.py,sha256=7ONaCx8324mx2mcrKZH6JV68uQaeZBzrTERS0hh8J6A,32289
12
- sol_parser/grpc_instruction_parser.py,sha256=aKUOiWrA2QL9G28IinXyVWRr2IbypunAfD8wn2kkH8o,10662
13
- sol_parser/grpc_types.py,sha256=pPnp7RGRz5KGl0lpkn-qyX40rdnfGSAk0savIMfwQM4,36015
14
- sol_parser/inner_instruction_parser.py,sha256=3Klb9H6Aj2zOgFnGcl096f9WrKgiuRRV3HRQz7SCAug,13354
12
+ sol_parser/grpc_client.py,sha256=LvYM7FOO-IOEB0GXf8wtGyJNtuiJHvDVRiOwT0kJoI8,32278
13
+ sol_parser/grpc_instruction_parser.py,sha256=Aus9oegrlBKD16rnvs2aFwHZy2itY3R4ojavLVV_-LE,11085
14
+ sol_parser/grpc_types.py,sha256=whCXXCHu98vWI6p1RFvA0SUCw7ivyeU4pOtV2bUlw-c,37547
15
+ sol_parser/inner_instruction_parser.py,sha256=tGKNagjUNYD-Z3jJP9GoObJRaMQxfLqwy_vNNQUzMg4,20890
15
16
  sol_parser/instr_account_utils.py,sha256=MY8bgoIDiv2yJKeWxqhpfKc3pV4xUFTcYKnSXtnQMWc,1990
16
- sol_parser/instructions.py,sha256=Xo8pdRJtql6A9RNBCCzvxG9afScvfZaIVADSwyai2wU,61064
17
+ sol_parser/instructions.py,sha256=KjWrxQ4sV9h8Da-_IG4rmZgqbc7J6BoZL3zW0YAblDw,70862
17
18
  sol_parser/json_util.py,sha256=qq0A5bs-HxxQH6vgg1Kja4tQ8cPaop9uItBcW7Ajox4,1458
18
- sol_parser/log_instr_dedup.py,sha256=3wRIZMOWAiFSQtjx-H3uJyxqPdz9VPY9485Dn_XHd88,11754
19
+ sol_parser/log_instr_dedup.py,sha256=NieJrBDmdlppsXdEFqo3bc532MsgHi-BVvXYVAPcGOo,12601
19
20
  sol_parser/market.py,sha256=p_N6n3b4hEtUjHAQQyGSnrKdHYmkHdY1hXXObHRKc0Y,1858
20
- sol_parser/merger.py,sha256=ZrFONLnOwF1aw8GR0BibhPvIE_HguCrY2gT9PByHmJo,11684
21
+ sol_parser/merger.py,sha256=970Cj7paT6i8ydg53lwk7CK67olAmKUY7325BedgMyk,13525
21
22
  sol_parser/order_buffer.py,sha256=xW-Okii8a9t9tCqbBKtxFh1moTEi7RqycMFO2kwp-d4,6447
22
- sol_parser/parser.py,sha256=D-q7Jd92A9znUSyDFIfVA1_ZbyD2vh-8CSpvgxYp6jg,10079
23
- sol_parser/pumpfun_fee_enrich.py,sha256=hlEHE8sFHoKGDSvOMlSpjZoJJUIimUNrTxojokSAAb4,4416
24
- sol_parser/rpc_parser.py,sha256=BIPht00w5LcEvOhl6anNYlYXzN4bW9_2t6f1emm_Xbw,22899
23
+ sol_parser/parser.py,sha256=KYPArn-Gago4UkDhWyaSC7EcIcvWfXQxMTZjruWzroQ,10797
24
+ sol_parser/pumpfun_fee_enrich.py,sha256=O19vK_G2I35WJH8G3YCulvaW5qMxyguqm4vBfAcQNck,4585
25
+ sol_parser/rpc_parser.py,sha256=uF5AYR_hOKeAt4EUxoHo1WvYbOA45eSwRF8G0aOZroM,24496
25
26
  sol_parser/rust_api_inventory.py,sha256=V5Bx1M3GT-ku_vj_kD6lnbqWExv1K_A00PrmhCFfRec,2257
26
27
  sol_parser/rust_event_json.py,sha256=7hho9TGfSOQjHev_8uRa4YHU1hrEsW1RfwcU9qHYz1o,1649
27
28
  sol_parser/shredstream_client.py,sha256=xBE6KE9kyTXkXO82iEi99dQCSHq-dIIkFF7u8NHBWHE,9967
@@ -33,9 +34,9 @@ sol_parser/solana_storage_pb2_grpc.py,sha256=-Gys-K2Kw5Uy3JjtgIXmaYE6YKnXd5ZfBaM
33
34
  sol_parser/u128_parity.py,sha256=D8PYuy1l-1QwkIEeGCLvrGfzAfTzpBDcGINxRIJAEPs,3487
34
35
  sol_parser/verify_discriminators.py,sha256=oqCBWL065ixBIjhHW255nk4S-F1F0x4zfTzs68nXMqA,3011
35
36
  sol_parser/account_fillers/__init__.py,sha256=q4q7HZF0Z4-rxhKoRMzV52HSkJ_n_POm4vimYUQlCOA,235
36
- sol_parser/account_fillers/meteora.py,sha256=seS80dMIeFE-E0Kd2U50p09w69wDi4sf4UxWFl-WP8U,1159
37
+ sol_parser/account_fillers/meteora.py,sha256=KGj3BPiWSagic5TgbvL8pvbLLlpGV_jpD6qqWlT-jQY,1678
37
38
  sol_parser/account_fillers/orca.py,sha256=2s-hfi20fa5sy6p1rGc7_7NxzkpaleJdqn3YD41aBAw,895
38
- sol_parser/account_fillers/pumpfun.py,sha256=nFOVF7Om6gcxgIIDneswRCO6iU2B-DPobGhUOTx_my4,5474
39
+ sol_parser/account_fillers/pumpfun.py,sha256=hZgvqquXRDAR1Vny7y69YX7BZyo0tWiqZlnJLu1Zlxs,5969
39
40
  sol_parser/account_fillers/pumpswap.py,sha256=1_JBmwFGMr_tAMZpYQsPnUJDoQlGvCpwB90iZzWHLzM,4042
40
41
  sol_parser/account_fillers/raydium.py,sha256=j5vNSKAV-8bJuakG2dicc8ao5I-ZD2TEthLM6ooZqQ4,3350
41
42
  sol_parser/account_fillers/raydium_launchlab.py,sha256=eBqDzKipeSJJo8s1WOLzdqnCKLGo6_IYpe6egLTVk10,781
@@ -50,7 +51,7 @@ sol_parser/grpc/subscribe_builder.py,sha256=fv6_jQAR6Q0seUhXjgcDPnPsG03Bxs59lHGe
50
51
  sol_parser/grpc/transaction_meta.py,sha256=NmIffIQ1_OIfWGjy6JY-f8pIK5ucjDZXXJryjnlgoQs,5894
51
52
  sol_parser/instr/__init__.py,sha256=0_Ky8KpVEoXzxszHcHLTuY2SDsJwu0uAF2Q0wMY1e-c,503
52
53
  sol_parser/logs/__init__.py,sha256=e1cbhbCNeXy-NZvVsYCpGksBpZf4NJBLmdlky06og-U,349
53
- sol_parser_sdk_python-0.5.6.dist-info/METADATA,sha256=O7OyZYSZvsiex9-JEm7U9uGiEr9LkJfQrjolJHqNBQM,13107
54
- sol_parser_sdk_python-0.5.6.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
55
- sol_parser_sdk_python-0.5.6.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
56
- sol_parser_sdk_python-0.5.6.dist-info/RECORD,,
54
+ sol_parser_sdk_python-0.5.7.dist-info/METADATA,sha256=IfOmbKqV2VmPAvDQDlRqe-FPo8TSUhoIVXbCMLowp9A,13107
55
+ sol_parser_sdk_python-0.5.7.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
56
+ sol_parser_sdk_python-0.5.7.dist-info/entry_points.txt,sha256=ZGXRb-2jBdc56d8PCAZFiJBLTAzUKFeHPohysJnKVbA,206
57
+ sol_parser_sdk_python-0.5.7.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: hatchling 1.29.0
2
+ Generator: hatchling 1.27.0
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any