helius-python 0.1.0__py3-none-any.whl → 0.2.0__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.
- helius/models.py +10 -0
- helius/{client.py → solana_rpc.py} +121 -42
- helius_python-0.2.0.dist-info/METADATA +317 -0
- helius_python-0.2.0.dist-info/RECORD +7 -0
- helius_python-0.1.0.dist-info/METADATA +0 -363
- helius_python-0.1.0.dist-info/RECORD +0 -7
- {helius_python-0.1.0.dist-info → helius_python-0.2.0.dist-info}/WHEEL +0 -0
- {helius_python-0.1.0.dist-info → helius_python-0.2.0.dist-info}/licenses/LICENSE +0 -0
helius/models.py
CHANGED
|
@@ -96,6 +96,16 @@ class InflationRate(BaseModel):
|
|
|
96
96
|
epoch: int
|
|
97
97
|
|
|
98
98
|
|
|
99
|
+
class InflationReward(BaseModel):
|
|
100
|
+
model_config = ConfigDict(alias_generator=AliasGenerator(validation_alias=to_camel))
|
|
101
|
+
|
|
102
|
+
epoch: int
|
|
103
|
+
effective_slot: int
|
|
104
|
+
amount: int
|
|
105
|
+
post_balance: int
|
|
106
|
+
commission: int | None
|
|
107
|
+
|
|
108
|
+
|
|
99
109
|
class PerformanceSample(BaseModel):
|
|
100
110
|
model_config = ConfigDict(alias_generator=AliasGenerator(validation_alias=to_camel))
|
|
101
111
|
|
|
@@ -14,6 +14,7 @@ from helius.models import (
|
|
|
14
14
|
EpochSchedule,
|
|
15
15
|
InflationGovernor,
|
|
16
16
|
InflationRate,
|
|
17
|
+
InflationReward,
|
|
17
18
|
LamportAccount,
|
|
18
19
|
PerformanceSample,
|
|
19
20
|
SignatureStatus,
|
|
@@ -27,9 +28,7 @@ from helius.models import (
|
|
|
27
28
|
)
|
|
28
29
|
|
|
29
30
|
|
|
30
|
-
class
|
|
31
|
-
# TODO: handle helius errors that do not show by HTTP response code
|
|
32
|
-
# TODO: check all http methods and all guides and implement pagination and other non-implemented features
|
|
31
|
+
class SolanaRpcClient:
|
|
33
32
|
def __init__(
|
|
34
33
|
self,
|
|
35
34
|
*,
|
|
@@ -67,7 +66,8 @@ class HeliusClient:
|
|
|
67
66
|
return response.json()
|
|
68
67
|
|
|
69
68
|
def get_account_info(
|
|
70
|
-
self,
|
|
69
|
+
self,
|
|
70
|
+
*,
|
|
71
71
|
public_key: str,
|
|
72
72
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
73
73
|
encoding: (
|
|
@@ -104,7 +104,8 @@ class HeliusClient:
|
|
|
104
104
|
return context, account_info
|
|
105
105
|
|
|
106
106
|
def get_balance(
|
|
107
|
-
self,
|
|
107
|
+
self,
|
|
108
|
+
*,
|
|
108
109
|
public_key: str,
|
|
109
110
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
110
111
|
min_context_slot: int | None = None,
|
|
@@ -122,7 +123,8 @@ class HeliusClient:
|
|
|
122
123
|
return context, value
|
|
123
124
|
|
|
124
125
|
def get_block(
|
|
125
|
-
self,
|
|
126
|
+
self,
|
|
127
|
+
*,
|
|
126
128
|
slot: int,
|
|
127
129
|
commitment: Literal["finalized", "confirmed"] | None = None,
|
|
128
130
|
encoding: Literal["jsonParsed", "base58", "base64", "base64+std"] | None = None,
|
|
@@ -147,7 +149,8 @@ class HeliusClient:
|
|
|
147
149
|
return block
|
|
148
150
|
|
|
149
151
|
def get_block_commitment(
|
|
150
|
-
self,
|
|
152
|
+
self,
|
|
153
|
+
*,
|
|
151
154
|
slot: int,
|
|
152
155
|
) -> BlockCommitment:
|
|
153
156
|
request = RpcRequest(method="getBlockCommitment").add(slot).build()
|
|
@@ -156,7 +159,8 @@ class HeliusClient:
|
|
|
156
159
|
return block_commitment
|
|
157
160
|
|
|
158
161
|
def get_block_height(
|
|
159
|
-
self,
|
|
162
|
+
self,
|
|
163
|
+
*,
|
|
160
164
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
161
165
|
min_context_slot: int | None = None,
|
|
162
166
|
) -> int:
|
|
@@ -170,7 +174,8 @@ class HeliusClient:
|
|
|
170
174
|
return response["result"]
|
|
171
175
|
|
|
172
176
|
def get_block_production(
|
|
173
|
-
self,
|
|
177
|
+
self,
|
|
178
|
+
*,
|
|
174
179
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
175
180
|
first_slot: int | None = None,
|
|
176
181
|
last_slot: int | None = None,
|
|
@@ -205,7 +210,8 @@ class HeliusClient:
|
|
|
205
210
|
return context, value
|
|
206
211
|
|
|
207
212
|
def get_blocks(
|
|
208
|
-
self,
|
|
213
|
+
self,
|
|
214
|
+
*,
|
|
209
215
|
start_slot: int,
|
|
210
216
|
end_slot: int | None,
|
|
211
217
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
@@ -225,7 +231,8 @@ class HeliusClient:
|
|
|
225
231
|
return response["result"]
|
|
226
232
|
|
|
227
233
|
def get_blocks_with_limit(
|
|
228
|
-
self,
|
|
234
|
+
self,
|
|
235
|
+
*,
|
|
229
236
|
start_slot: int,
|
|
230
237
|
limit: int,
|
|
231
238
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
@@ -253,7 +260,8 @@ class HeliusClient:
|
|
|
253
260
|
return cluster_nodes
|
|
254
261
|
|
|
255
262
|
def get_epoch_info(
|
|
256
|
-
self,
|
|
263
|
+
self,
|
|
264
|
+
*,
|
|
257
265
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
258
266
|
min_context_slot: int | None = None,
|
|
259
267
|
) -> EpochInfo:
|
|
@@ -274,7 +282,8 @@ class HeliusClient:
|
|
|
274
282
|
return epoch_schedule
|
|
275
283
|
|
|
276
284
|
def get_fee_for_message(
|
|
277
|
-
self,
|
|
285
|
+
self,
|
|
286
|
+
*,
|
|
278
287
|
message: str,
|
|
279
288
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
280
289
|
min_context_slot: int | None = None,
|
|
@@ -321,7 +330,8 @@ class HeliusClient:
|
|
|
321
330
|
return identity
|
|
322
331
|
|
|
323
332
|
def get_inflation_governor(
|
|
324
|
-
self,
|
|
333
|
+
self,
|
|
334
|
+
*,
|
|
325
335
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
326
336
|
) -> InflationGovernor:
|
|
327
337
|
request = (
|
|
@@ -339,10 +349,30 @@ class HeliusClient:
|
|
|
339
349
|
inflation_rate = InflationRate.model_validate(response["result"])
|
|
340
350
|
return inflation_rate
|
|
341
351
|
|
|
342
|
-
|
|
352
|
+
def get_inflation_reward(
|
|
353
|
+
self,
|
|
354
|
+
*,
|
|
355
|
+
addresses: list[str],
|
|
356
|
+
commitment: Literal["finalized", "confirmed"] | None = None,
|
|
357
|
+
epoch: int | None = None,
|
|
358
|
+
min_context_slot: int | None = None,
|
|
359
|
+
) -> list[InflationReward | None]:
|
|
360
|
+
request = (
|
|
361
|
+
RpcRequest(method="getInflationReward")
|
|
362
|
+
.add(addresses)
|
|
363
|
+
.set("commitment", commitment)
|
|
364
|
+
.set("epoch", epoch)
|
|
365
|
+
.set("minContextSlot", min_context_slot)
|
|
366
|
+
.build()
|
|
367
|
+
)
|
|
368
|
+
response = self._send(request)
|
|
369
|
+
result = response["result"]
|
|
370
|
+
ta = TypeAdapter(list[InflationReward | None])
|
|
371
|
+
return ta.validate_python(result)
|
|
343
372
|
|
|
344
373
|
def get_largest_accounts(
|
|
345
|
-
self,
|
|
374
|
+
self,
|
|
375
|
+
*,
|
|
346
376
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
347
377
|
filter: Literal["circulating", "nonCirculating"] | None = None,
|
|
348
378
|
) -> tuple[dict, list[LamportAccount]]:
|
|
@@ -360,7 +390,8 @@ class HeliusClient:
|
|
|
360
390
|
return context, largest_accounts
|
|
361
391
|
|
|
362
392
|
def get_latest_blockhash(
|
|
363
|
-
self,
|
|
393
|
+
self,
|
|
394
|
+
*,
|
|
364
395
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
365
396
|
min_context_slot: int | None = None,
|
|
366
397
|
) -> tuple[dict, str, int]:
|
|
@@ -378,7 +409,8 @@ class HeliusClient:
|
|
|
378
409
|
return context, blockhash, last_valid_block_height
|
|
379
410
|
|
|
380
411
|
def get_leader_schedule(
|
|
381
|
-
self,
|
|
412
|
+
self,
|
|
413
|
+
*,
|
|
382
414
|
slot: int | None = None,
|
|
383
415
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
384
416
|
identity: str | None = None,
|
|
@@ -407,7 +439,8 @@ class HeliusClient:
|
|
|
407
439
|
return result
|
|
408
440
|
|
|
409
441
|
def get_minimum_balance_for_rent_exemption(
|
|
410
|
-
self,
|
|
442
|
+
self,
|
|
443
|
+
*,
|
|
411
444
|
data_length: int,
|
|
412
445
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
413
446
|
) -> int:
|
|
@@ -422,7 +455,8 @@ class HeliusClient:
|
|
|
422
455
|
return result
|
|
423
456
|
|
|
424
457
|
def get_multiple_accounts(
|
|
425
|
-
self,
|
|
458
|
+
self,
|
|
459
|
+
*,
|
|
426
460
|
pubkeys: list[str],
|
|
427
461
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
428
462
|
encoding: (
|
|
@@ -466,7 +500,8 @@ class HeliusClient:
|
|
|
466
500
|
|
|
467
501
|
@validate_call
|
|
468
502
|
def get_program_accounts(
|
|
469
|
-
self,
|
|
503
|
+
self,
|
|
504
|
+
*,
|
|
470
505
|
program_id: str,
|
|
471
506
|
commitment: Literal["confirmed", "finalized", "processed"] | None = None,
|
|
472
507
|
min_context_slot: int | None = None,
|
|
@@ -507,7 +542,8 @@ class HeliusClient:
|
|
|
507
542
|
return [(i["pubkey"], Account.model_validate(i["account"])) for i in result]
|
|
508
543
|
|
|
509
544
|
def get_recent_performance_samples(
|
|
510
|
-
self,
|
|
545
|
+
self,
|
|
546
|
+
*,
|
|
511
547
|
limit: int | None = None,
|
|
512
548
|
) -> list[PerformanceSample]:
|
|
513
549
|
request = RpcRequest(method="getRecentPerformanceSamples").add(limit).build()
|
|
@@ -516,7 +552,8 @@ class HeliusClient:
|
|
|
516
552
|
return ta.validate_python(response["result"])
|
|
517
553
|
|
|
518
554
|
def get_recent_prioritization_fees(
|
|
519
|
-
self,
|
|
555
|
+
self,
|
|
556
|
+
*,
|
|
520
557
|
locked_writable_accounts: list[str] | None = None,
|
|
521
558
|
) -> list[tuple[int, int]]:
|
|
522
559
|
request = (
|
|
@@ -529,7 +566,8 @@ class HeliusClient:
|
|
|
529
566
|
|
|
530
567
|
@validate_call
|
|
531
568
|
def get_signatures_for_address(
|
|
532
|
-
self,
|
|
569
|
+
self,
|
|
570
|
+
*,
|
|
533
571
|
address: str,
|
|
534
572
|
limit: Annotated[int, Field(ge=1, le=1000)] = 1000,
|
|
535
573
|
before: str | None = None,
|
|
@@ -553,7 +591,8 @@ class HeliusClient:
|
|
|
553
591
|
return transaction_signatures
|
|
554
592
|
|
|
555
593
|
def get_signature_statuses(
|
|
556
|
-
self,
|
|
594
|
+
self,
|
|
595
|
+
*,
|
|
557
596
|
signatures: list[str],
|
|
558
597
|
search_transaction_history: bool | None = None,
|
|
559
598
|
) -> tuple[dict, list[SignatureStatus | None]]:
|
|
@@ -572,7 +611,8 @@ class HeliusClient:
|
|
|
572
611
|
return context, signature_statuses
|
|
573
612
|
|
|
574
613
|
def get_slot(
|
|
575
|
-
self,
|
|
614
|
+
self,
|
|
615
|
+
*,
|
|
576
616
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
577
617
|
min_context_slot: int | None = None,
|
|
578
618
|
) -> int:
|
|
@@ -586,7 +626,8 @@ class HeliusClient:
|
|
|
586
626
|
return response["result"]
|
|
587
627
|
|
|
588
628
|
def get_slot_leader(
|
|
589
|
-
self,
|
|
629
|
+
self,
|
|
630
|
+
*,
|
|
590
631
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
591
632
|
min_context_slot: int | None = None,
|
|
592
633
|
) -> str:
|
|
@@ -601,7 +642,8 @@ class HeliusClient:
|
|
|
601
642
|
|
|
602
643
|
@validate_call
|
|
603
644
|
def get_slot_leaders(
|
|
604
|
-
self,
|
|
645
|
+
self,
|
|
646
|
+
*,
|
|
605
647
|
start_slot: int,
|
|
606
648
|
limit: Annotated[int, Field(ge=1, le=5000)],
|
|
607
649
|
) -> list[str]:
|
|
@@ -610,7 +652,8 @@ class HeliusClient:
|
|
|
610
652
|
return response["result"]
|
|
611
653
|
|
|
612
654
|
def get_stake_minimum_delegation(
|
|
613
|
-
self,
|
|
655
|
+
self,
|
|
656
|
+
*,
|
|
614
657
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
615
658
|
) -> tuple[dict, int]:
|
|
616
659
|
request = (
|
|
@@ -624,7 +667,8 @@ class HeliusClient:
|
|
|
624
667
|
return context, value
|
|
625
668
|
|
|
626
669
|
def get_supply(
|
|
627
|
-
self,
|
|
670
|
+
self,
|
|
671
|
+
*,
|
|
628
672
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
629
673
|
exclude_non_circulating_accounts_list: bool | None = None,
|
|
630
674
|
) -> tuple[dict, Supply]:
|
|
@@ -645,7 +689,8 @@ class HeliusClient:
|
|
|
645
689
|
# TODO: use getProgramAccountsV2 which supports pagination
|
|
646
690
|
|
|
647
691
|
def get_token_account_balance(
|
|
648
|
-
self,
|
|
692
|
+
self,
|
|
693
|
+
*,
|
|
649
694
|
token_account: str,
|
|
650
695
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
651
696
|
) -> tuple[dict, TokenAccountBalance]:
|
|
@@ -661,7 +706,8 @@ class HeliusClient:
|
|
|
661
706
|
return context, balance
|
|
662
707
|
|
|
663
708
|
def get_token_accounts_by_delegate(
|
|
664
|
-
self,
|
|
709
|
+
self,
|
|
710
|
+
*,
|
|
665
711
|
delegate_pub_key: str,
|
|
666
712
|
mint: str | None = None,
|
|
667
713
|
program_id: str | None = None,
|
|
@@ -710,7 +756,8 @@ class HeliusClient:
|
|
|
710
756
|
return context, token_accounts
|
|
711
757
|
|
|
712
758
|
def get_token_accounts_by_owner(
|
|
713
|
-
self,
|
|
759
|
+
self,
|
|
760
|
+
*,
|
|
714
761
|
owner_pub_key: str,
|
|
715
762
|
mint: str | None = None,
|
|
716
763
|
program_id: str | None = None,
|
|
@@ -761,7 +808,8 @@ class HeliusClient:
|
|
|
761
808
|
# TODO: use getTokenAccountsByOwnerV2 and do pagination
|
|
762
809
|
|
|
763
810
|
def get_token_largest_accounts(
|
|
764
|
-
self,
|
|
811
|
+
self,
|
|
812
|
+
*,
|
|
765
813
|
mint: str,
|
|
766
814
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
767
815
|
) -> tuple[dict, list[TokenAccount]]:
|
|
@@ -778,7 +826,8 @@ class HeliusClient:
|
|
|
778
826
|
return context, largest_accounts
|
|
779
827
|
|
|
780
828
|
def get_token_supply(
|
|
781
|
-
self,
|
|
829
|
+
self,
|
|
830
|
+
*,
|
|
782
831
|
mint_address: str,
|
|
783
832
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
784
833
|
) -> tuple[dict, TokenSupply]:
|
|
@@ -794,7 +843,8 @@ class HeliusClient:
|
|
|
794
843
|
return context, token_supply
|
|
795
844
|
|
|
796
845
|
def get_transaction(
|
|
797
|
-
self,
|
|
846
|
+
self,
|
|
847
|
+
*,
|
|
798
848
|
transaction_signature: str,
|
|
799
849
|
commitment: Literal["finalized", "confirmed"] | None = None,
|
|
800
850
|
encoding: Literal["json", "jsonParsed", "base58", "base64"] | None = None,
|
|
@@ -813,7 +863,8 @@ class HeliusClient:
|
|
|
813
863
|
return transaction
|
|
814
864
|
|
|
815
865
|
def get_transaction_count(
|
|
816
|
-
self,
|
|
866
|
+
self,
|
|
867
|
+
*,
|
|
817
868
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
818
869
|
min_context_slot: int | None = None,
|
|
819
870
|
) -> int:
|
|
@@ -833,7 +884,8 @@ class HeliusClient:
|
|
|
833
884
|
return result["solana-core"], result["feature-set"]
|
|
834
885
|
|
|
835
886
|
def get_vote_accounts(
|
|
836
|
-
self,
|
|
887
|
+
self,
|
|
888
|
+
*,
|
|
837
889
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
838
890
|
vote_pubkey: str | None = None,
|
|
839
891
|
keep_unstaked_delinquents: bool | None = None,
|
|
@@ -854,7 +906,8 @@ class HeliusClient:
|
|
|
854
906
|
return current, delinquent
|
|
855
907
|
|
|
856
908
|
def is_blockhash_valid(
|
|
857
|
-
self,
|
|
909
|
+
self,
|
|
910
|
+
*,
|
|
858
911
|
blockhash: str,
|
|
859
912
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
860
913
|
min_context_slot: int | None = None,
|
|
@@ -871,8 +924,14 @@ class HeliusClient:
|
|
|
871
924
|
value = response["result"]["value"]
|
|
872
925
|
return context, value
|
|
873
926
|
|
|
927
|
+
def minimum_ledger_slot(self) -> int:
|
|
928
|
+
request = RpcRequest(method="minimumLedgerSlot").build()
|
|
929
|
+
response = self._send(request)
|
|
930
|
+
return response["result"]
|
|
931
|
+
|
|
874
932
|
def request_airdrop(
|
|
875
|
-
self,
|
|
933
|
+
self,
|
|
934
|
+
*,
|
|
876
935
|
public_key: str,
|
|
877
936
|
lamports: int,
|
|
878
937
|
commitment: Literal["finalized", "confirmed", "processed"] | None = None,
|
|
@@ -890,8 +949,28 @@ class HeliusClient:
|
|
|
890
949
|
response = self._send(request)
|
|
891
950
|
return response["result"]
|
|
892
951
|
|
|
893
|
-
def
|
|
894
|
-
|
|
952
|
+
def send_transaction(
|
|
953
|
+
self,
|
|
954
|
+
*,
|
|
955
|
+
transaction: str,
|
|
956
|
+
encoding: Literal["base58", "base64"] | None = None,
|
|
957
|
+
skip_preflight: bool | None = None,
|
|
958
|
+
preflight_commitment: (
|
|
959
|
+
Literal["finalized", "confirmed", "processed"] | None
|
|
960
|
+
) = None,
|
|
961
|
+
max_retries: int | None = None,
|
|
962
|
+
min_context_slot: int | None = None,
|
|
963
|
+
) -> str:
|
|
964
|
+
request = (
|
|
965
|
+
RpcRequest(method="sendTransaction")
|
|
966
|
+
.add(transaction)
|
|
967
|
+
.set("encoding", encoding)
|
|
968
|
+
.set("skipPreflight", skip_preflight)
|
|
969
|
+
.set("preflightCommitment", preflight_commitment)
|
|
970
|
+
.set("maxRetries", max_retries)
|
|
971
|
+
.set("minContextSlot", min_context_slot)
|
|
972
|
+
.build()
|
|
973
|
+
)
|
|
895
974
|
response = self._send(request)
|
|
896
975
|
return response["result"]
|
|
897
976
|
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: helius-python
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Typed Python client for the Helius API
|
|
5
|
+
Project-URL: Homepage, https://github.com/markosnarinian/helius-python
|
|
6
|
+
Project-URL: Issues, https://github.com/markosnarinian/helius-python/issues
|
|
7
|
+
Author-email: Markos Narinian <manarinian@gmail.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Operating System :: OS Independent
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Requires-Python: >=3.10
|
|
13
|
+
Requires-Dist: httpx
|
|
14
|
+
Requires-Dist: pydantic
|
|
15
|
+
Requires-Dist: python-dotenv
|
|
16
|
+
Provides-Extra: dev
|
|
17
|
+
Requires-Dist: pytest; extra == 'dev'
|
|
18
|
+
Requires-Dist: respx; extra == 'dev'
|
|
19
|
+
Description-Content-Type: text/markdown
|
|
20
|
+
|
|
21
|
+
# helius-python
|
|
22
|
+
|
|
23
|
+
<p align="center">
|
|
24
|
+
<img width="562" height="118" alt="Helius-Horizontal-Logo" src="https://github.com/user-attachments/assets/d87ffd10-b168-4830-bbad-d2fef67368a5" /><svg width="562" height="118" viewBox="0 0 562 118" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
25
|
+
<g clip-path="url(#clip0_7532_34078)">
|
|
26
|
+
<path d="M74.6261 24.7253C69.9876 22.7665 64.8892 21.6871 59.531 21.6871C54.1727 21.6871 49.0743 22.7665 44.4358 24.7253L58.3013 0.709587C58.8412 -0.229856 60.2007 -0.229856 60.7406 0.709587L74.6161 24.7253H74.6261Z" fill="url(#paint0_linear_7532_34078)"/>
|
|
27
|
+
<path d="M40.7468 26.5242C31.6098 31.5812 24.742 40.2161 22.0128 50.54L11.7061 24.2856C11.3063 23.2762 12.156 22.2168 13.2257 22.3767L40.7468 26.5242Z" fill="url(#paint1_linear_7532_34078)"/>
|
|
28
|
+
<path d="M28.9906 84.4099L0.999611 75.7751C-0.0400563 75.4552 -0.33996 74.126 0.449787 73.3965L21.2431 54.1079C20.9032 56.1767 20.7233 58.3054 20.7233 60.4741C20.7233 69.5088 23.8123 77.8238 28.9906 84.4099Z" fill="url(#paint2_linear_7532_34078)"/>
|
|
29
|
+
<path d="M58.951 99.2611L34.4089 115.981C33.5091 116.591 32.2895 116.011 32.2096 114.922L30.0203 85.6492C37.018 93.8443 47.3747 99.0812 58.951 99.2511V99.2611Z" fill="url(#paint3_linear_7532_34078)"/>
|
|
30
|
+
<path d="M88.9513 85.7692L86.772 114.892C86.692 115.971 85.4724 116.561 84.5727 115.951L60.0806 99.2612C71.6269 99.1013 81.9536 93.9043 88.9513 85.7692Z" fill="url(#paint4_linear_7532_34078)"/>
|
|
31
|
+
<path d="M118.042 75.6851L90.1711 84.28C95.2895 77.7139 98.3385 69.4488 98.3385 60.4741C98.3385 58.2754 98.1486 56.1167 97.7987 54.0179L118.582 73.2965C119.382 74.0361 119.072 75.3653 118.042 75.6751V75.6851Z" fill="url(#paint5_linear_7532_34078)"/>
|
|
32
|
+
<path d="M107.355 24.3356L97.0588 50.5801C94.3396 40.2662 87.4918 31.6413 78.3848 26.5643L105.836 22.4268C106.906 22.2668 107.755 23.3262 107.355 24.3356Z" fill="url(#paint6_linear_7532_34078)"/>
|
|
33
|
+
<path d="M59.5307 107.636C53.8026 107.636 49.1641 112.273 49.1641 118H69.9074C69.9074 112.273 65.2689 107.636 59.5407 107.636H59.5307Z" fill="url(#paint7_linear_7532_34078)"/>
|
|
34
|
+
<path d="M97.4388 90.6563C93.8699 95.1336 94.5997 101.66 99.0782 105.228L112.004 89.0172C107.526 85.4494 100.998 86.1789 97.4288 90.6563H97.4388Z" fill="url(#paint8_linear_7532_34078)"/>
|
|
35
|
+
<path d="M105.936 50.57C107.206 56.1567 112.774 59.6446 118.352 58.3653L113.733 38.1473C108.145 39.4166 104.656 44.9833 105.936 50.56V50.57Z" fill="url(#paint9_linear_7532_34078)"/>
|
|
36
|
+
<path d="M80.4942 18.8588C85.6525 21.3473 91.8505 19.1786 94.3397 14.0116L75.6557 5.01697C73.1665 10.1739 75.3358 16.3702 80.5042 18.8588H80.4942Z" fill="url(#paint10_linear_7532_34078)"/>
|
|
37
|
+
<path d="M38.0978 18.8588C43.2561 16.3702 45.4254 10.1739 42.9362 5.01697L24.2522 14.0116C26.7414 19.1686 32.9394 21.3373 38.0978 18.8488V18.8588Z" fill="url(#paint11_linear_7532_34078)"/>
|
|
38
|
+
<path d="M13.3958 50.57C14.6654 44.9833 11.1765 39.4266 5.58826 38.1573L0.979736 58.3754C6.56795 59.6446 12.1262 56.1567 13.3958 50.57Z" fill="url(#paint12_linear_7532_34078)"/>
|
|
39
|
+
<path d="M8.49731 89.0172L21.4332 105.228C25.9117 101.66 26.6415 95.1336 23.0726 90.6563C19.5038 86.1789 12.9759 85.4494 8.49731 89.0172Z" fill="url(#paint13_linear_7532_34078)"/>
|
|
40
|
+
<path d="M177.773 30.1321V59.8145H212.612V31.8511H228.487V98.4116H212.612V73.9661H177.773V98.4116H161.898V34.4195L177.773 30.1321Z" fill="#E84125"/>
|
|
41
|
+
<path d="M257.227 84.25H305.792L301.503 98.4016H241.363V31.8411H305.802L301.513 45.9927H257.237V58.0855H298.504V72.2371H257.237V84.25H257.227Z" fill="#E84125"/>
|
|
42
|
+
<path d="M331.274 31.8411V84.25H378.119L373.83 98.4016H315.399V31.8411H331.274Z" fill="#E84125"/>
|
|
43
|
+
<path d="M400.861 31.8411V98.4016H384.987V31.8411H400.861Z" fill="#E84125"/>
|
|
44
|
+
<path d="M467.44 31.8411H483.315V71.9872C483.315 91.3757 467.44 99.8607 446.937 99.8607C426.433 99.8607 411.668 90.7661 411.668 71.9872V34.4195L427.543 30.1321V71.9872C427.543 81.7614 434.061 85.4593 447.706 85.4593C461.352 85.4593 467.44 81.5116 467.44 71.9872V31.8411Z" fill="#E84125"/>
|
|
45
|
+
<path d="M491.382 52.0891C491.382 41.8851 499.45 31.8411 515.235 31.8411H560.54L556.252 45.9927H515.405C510.516 45.9927 508.107 49.0808 508.107 52.0791C508.107 55.0773 510.596 58.0855 515.405 58.0855H538.397C553.922 58.0855 561.99 68.1195 561.99 78.3335C561.99 88.5474 554.352 98.4016 538.397 98.4016H491.382L495.671 84.25H538.227C543.036 84.25 545.525 81.4217 545.525 78.3335C545.525 75.2453 543.126 72.1571 538.227 72.1571H515.235C499.19 72.1571 491.382 62.1231 491.382 52.0891Z" fill="#E84125"/>
|
|
46
|
+
</g>
|
|
47
|
+
<defs>
|
|
48
|
+
<linearGradient id="paint0_linear_7532_34078" x1="41.8666" y1="12.3627" x2="74.6261" y2="12.3627" gradientUnits="userSpaceOnUse">
|
|
49
|
+
<stop stop-color="#E35930"/>
|
|
50
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
51
|
+
</linearGradient>
|
|
52
|
+
<linearGradient id="paint1_linear_7532_34078" x1="9.61681" y1="36.4484" x2="40.7468" y2="36.4484" gradientUnits="userSpaceOnUse">
|
|
53
|
+
<stop stop-color="#E35930"/>
|
|
54
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
55
|
+
</linearGradient>
|
|
56
|
+
<linearGradient id="paint2_linear_7532_34078" x1="-0.919775" y1="69.2589" x2="28.9906" y2="69.2589" gradientUnits="userSpaceOnUse">
|
|
57
|
+
<stop stop-color="#E35930"/>
|
|
58
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
59
|
+
</linearGradient>
|
|
60
|
+
<linearGradient id="paint3_linear_7532_34078" x1="29.4704" y1="100.94" x2="58.951" y2="100.94" gradientUnits="userSpaceOnUse">
|
|
61
|
+
<stop stop-color="#E35930"/>
|
|
62
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
63
|
+
</linearGradient>
|
|
64
|
+
<linearGradient id="paint4_linear_7532_34078" x1="59.0809" y1="100.98" x2="88.9513" y2="100.98" gradientUnits="userSpaceOnUse">
|
|
65
|
+
<stop stop-color="#E35930"/>
|
|
66
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
67
|
+
</linearGradient>
|
|
68
|
+
<linearGradient id="paint5_linear_7532_34078" x1="88.3417" y1="69.149" x2="119.032" y2="69.149" gradientUnits="userSpaceOnUse">
|
|
69
|
+
<stop stop-color="#E35930"/>
|
|
70
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
71
|
+
</linearGradient>
|
|
72
|
+
<linearGradient id="paint6_linear_7532_34078" x1="75.9256" y1="36.4884" x2="107.455" y2="36.4884" gradientUnits="userSpaceOnUse">
|
|
73
|
+
<stop stop-color="#E35930"/>
|
|
74
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
75
|
+
</linearGradient>
|
|
76
|
+
<linearGradient id="paint7_linear_7532_34078" x1="64.1037" y1="108.682" x2="56.3294" y2="122.151" gradientUnits="userSpaceOnUse">
|
|
77
|
+
<stop stop-color="#E35930"/>
|
|
78
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
79
|
+
</linearGradient>
|
|
80
|
+
<linearGradient id="paint8_linear_7532_34078" x1="101.127" y1="87.5512" x2="106.808" y2="102.028" gradientUnits="userSpaceOnUse">
|
|
81
|
+
<stop stop-color="#E35930"/>
|
|
82
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
83
|
+
</linearGradient>
|
|
84
|
+
<linearGradient id="paint9_linear_7532_34078" x1="105.915" y1="45.8351" x2="120.779" y2="50.4203" gradientUnits="userSpaceOnUse">
|
|
85
|
+
<stop stop-color="#E35930"/>
|
|
86
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
87
|
+
</linearGradient>
|
|
88
|
+
<linearGradient id="paint10_linear_7532_34078" x1="76.8142" y1="15.9367" x2="89.6635" y2="7.17242" gradientUnits="userSpaceOnUse">
|
|
89
|
+
<stop stop-color="#E35930"/>
|
|
90
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
91
|
+
</linearGradient>
|
|
92
|
+
<linearGradient id="paint11_linear_7532_34078" x1="33.7238" y1="19.9762" x2="34.884" y2="4.46876" gradientUnits="userSpaceOnUse">
|
|
93
|
+
<stop stop-color="#E35930"/>
|
|
94
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
95
|
+
</linearGradient>
|
|
96
|
+
<linearGradient id="paint12_linear_7532_34078" x1="11.6598" y1="54.776" x2="0.258708" y2="44.1971" gradientUnits="userSpaceOnUse">
|
|
97
|
+
<stop stop-color="#E35930"/>
|
|
98
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
99
|
+
</linearGradient>
|
|
100
|
+
<linearGradient id="paint13_linear_7532_34078" x1="25.3906" y1="94.7132" x2="10.0098" y2="97.0344" gradientUnits="userSpaceOnUse">
|
|
101
|
+
<stop stop-color="#E35930"/>
|
|
102
|
+
<stop offset="1" stop-color="#E84125"/>
|
|
103
|
+
</linearGradient>
|
|
104
|
+
<clipPath id="clip0_7532_34078">
|
|
105
|
+
<rect width="562" height="118" fill="white"/>
|
|
106
|
+
</clipPath>
|
|
107
|
+
</defs>
|
|
108
|
+
</svg>
|
|
109
|
+
</p>
|
|
110
|
+
|
|
111
|
+
<p align="center">
|
|
112
|
+
<a href="https://pypi.org/project/helius-python/"><img src="https://img.shields.io/pypi/v/helius-python.svg" alt="PyPI version"></a>
|
|
113
|
+
<a href="https://pypi.org/project/helius-python/"><img src="https://img.shields.io/pypi/pyversions/helius-python.svg" alt="Python versions"></a>
|
|
114
|
+
<a href="https://github.com/markosnarinian/helius-python/blob/main/LICENSE"><img src="https://img.shields.io/github/license/markosnarinian/helius-python.svg" alt="License"></a>
|
|
115
|
+
<a href="https://github.com/markosnarinian/helius-python/actions/workflows/python-package.yml"><img src="https://github.com/markosnarinian/helius-python/actions/workflows/python-package.yml/badge.svg" alt="CI"></a>
|
|
116
|
+
<a href="https://pypistats.org/packages/helius-python"><img src="https://img.shields.io/pypi/dm/helius-python.svg" alt="Downloads"></a>
|
|
117
|
+
<a href="https://github.com/markosnarinian/helius-python/commits/main"><img src="https://img.shields.io/github/last-commit/markosnarinian/helius-python.svg" alt="Last commit"></a>
|
|
118
|
+
</p>
|
|
119
|
+
|
|
120
|
+
**A complete, typed Python client for [Helius](https://helius.dev) — the Solana developer platform.**
|
|
121
|
+
|
|
122
|
+
## Coverage
|
|
123
|
+
|
|
124
|
+
The goal of this library is **support every function, method, endpoint,
|
|
125
|
+
and feature that Helius exposes.** If Helius ships it, this client
|
|
126
|
+
wraps it.
|
|
127
|
+
|
|
128
|
+
- ✅ **The full Solana JSON-RPC surface** proxied by Helius —
|
|
129
|
+
`getAccountInfo`, `getBalance`, `getBlock`, `getTransaction`,
|
|
130
|
+
`getProgramAccounts`, `getTokenAccountsByOwner`,
|
|
131
|
+
`getSignaturesForAddress`, and every other standard RPC method.
|
|
132
|
+
**(supported today)**
|
|
133
|
+
- 🚧 **All Helius-specific RPC extensions** — enhanced transactions, DAS
|
|
134
|
+
(Digital Asset Standard) methods, priority fee estimation, and the
|
|
135
|
+
rest of the Helius-only RPC namespace. **(in progress)**
|
|
136
|
+
- 🚧 **Every Helius REST endpoint** — Enhanced Transactions API,
|
|
137
|
+
Webhooks API, Mint API, token metadata, address lookups, and beyond.
|
|
138
|
+
**(in progress)**
|
|
139
|
+
- 🚧 **Platform features** — streaming, websockets, and any new
|
|
140
|
+
capability Helius adds to its API. **(in progress)**
|
|
141
|
+
|
|
142
|
+
> **Current status:** only the standard Solana JSON-RPC surface is
|
|
143
|
+
> implemented today. Support for Helius RPC extensions, REST endpoints,
|
|
144
|
+
> and platform features is actively being worked on.
|
|
145
|
+
|
|
146
|
+
## Goals
|
|
147
|
+
|
|
148
|
+
1. **Completeness** — 1:1 coverage of the entire Helius API surface.
|
|
149
|
+
2. **Type safety** — fully typed responses.
|
|
150
|
+
3. **Pythonic ergonomics** — `get_account_info(...)` instead of
|
|
151
|
+
`getAccountInfo(...)`, context managers.
|
|
152
|
+
4. **Zero magic** — thin, predictable wrappers that map directly to the
|
|
153
|
+
documented Helius API.
|
|
154
|
+
|
|
155
|
+
## Authentication
|
|
156
|
+
|
|
157
|
+
Pass your Helius API key explicitly:
|
|
158
|
+
|
|
159
|
+
```python
|
|
160
|
+
from helius.solana_rpc import SolanaRpcClient
|
|
161
|
+
|
|
162
|
+
client = SolanaRpcClient(api_key="YOUR_HELIUS_API_KEY")
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
or set `HELIUS_API_KEY` as an environment variable:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
export HELIUS_API_KEY=your_helius_api_key
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
You can also set it in a `.env` file at the project root and let the
|
|
172
|
+
client pick it up automatically:
|
|
173
|
+
|
|
174
|
+
```env
|
|
175
|
+
HELIUS_API_KEY=your_helius_api_key
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
```python
|
|
179
|
+
from helius.solana_rpc import SolanaRpcClient
|
|
180
|
+
|
|
181
|
+
client = SolanaRpcClient() # reads HELIUS_API_KEY from the environment or .env
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Usage
|
|
185
|
+
|
|
186
|
+
### As a context manager (recommended)
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
from helius.solana_rpc import SolanaRpcClient
|
|
190
|
+
|
|
191
|
+
with SolanaRpcClient(api_key="YOUR_HELIUS_API_KEY") as client:
|
|
192
|
+
_ctx, balance = client.get_balance("So11111111111111111111111111111111111111112")
|
|
193
|
+
_ctx, supply = client.get_supply()
|
|
194
|
+
nodes = client.get_cluster_nodes()
|
|
195
|
+
block = client.get_block(slot=250_000_000)
|
|
196
|
+
tx = client.get_transaction("5j7s...signature...")
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
`SolanaRpcClient` implements the context-manager protocol via `__enter__` /
|
|
200
|
+
`__exit__`, so the underlying `httpx.Client` is closed cleanly when the
|
|
201
|
+
`with` block exits.
|
|
202
|
+
|
|
203
|
+
### With an explicit `close()` call
|
|
204
|
+
|
|
205
|
+
If a `with` block doesn't fit your code structure (e.g. the client lives
|
|
206
|
+
on a long-lived object), call `close()` yourself when you're done:
|
|
207
|
+
|
|
208
|
+
```python
|
|
209
|
+
from helius.solana_rpc import SolanaRpcClient
|
|
210
|
+
|
|
211
|
+
client = SolanaRpcClient(api_key="YOUR_HELIUS_API_KEY")
|
|
212
|
+
try:
|
|
213
|
+
_ctx, balance = client.get_balance("So11111111111111111111111111111111111111112")
|
|
214
|
+
_ctx, supply = client.get_supply()
|
|
215
|
+
finally:
|
|
216
|
+
client.close()
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Client classes also implement `__del__` as a safety net — if you forget
|
|
220
|
+
to `close()` or use `with`, the underlying HTTP client is still closed
|
|
221
|
+
when the instance is garbage-collected. Prefer `with` or `close()`
|
|
222
|
+
regardless.
|
|
223
|
+
|
|
224
|
+
> 🚧 **Exception & error handling is a work in progress.** Today,
|
|
225
|
+
> transport errors surface as raw `httpx` exceptions and Helius/Solana
|
|
226
|
+
> RPC errors are not yet wrapped in typed exception classes. A
|
|
227
|
+
> consistent error hierarchy is being worked on.
|
|
228
|
+
|
|
229
|
+
### Defaults
|
|
230
|
+
|
|
231
|
+
| Argument | Default | Notes |
|
|
232
|
+
| ---------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
233
|
+
| `base_url` | `"https://mainnet.helius-rpc.com"` | Override to point at devnet, staging, or a custom Helius endpoint. |
|
|
234
|
+
| `api_key` | `None` → falls back to `HELIUS_API_KEY` from the environment, then `.env` | If none is provided, the constructor raises `ValueError`. |
|
|
235
|
+
|
|
236
|
+
Per-method RPC parameters (`commitment`, `encoding`, `min_context_slot`,
|
|
237
|
+
etc.) are left unset by default — the Helius/Solana server defaults
|
|
238
|
+
apply unless you pass them explicitly.
|
|
239
|
+
|
|
240
|
+
### Reference
|
|
241
|
+
|
|
242
|
+
For parameters, semantics, and return shapes, see the official Helius docs:
|
|
243
|
+
[RPC guide](https://www.helius.dev/docs/rpc) and
|
|
244
|
+
[API reference](https://www.helius.dev/docs/api-reference).
|
|
245
|
+
|
|
246
|
+
If you hit a bug, a missing parameter, or surprising behavior, please
|
|
247
|
+
[open an issue](https://github.com/markosnarinian/helius-python/issues).
|
|
248
|
+
|
|
249
|
+
### Supported methods
|
|
250
|
+
|
|
251
|
+
The method names map 1:1 to the Solana JSON-RPC spec, just converted to
|
|
252
|
+
`snake_case`. If you know the RPC method name, you know the Python function.
|
|
253
|
+
|
|
254
|
+
## Status
|
|
255
|
+
|
|
256
|
+
Actively expanding toward full coverage of the Helius API. See
|
|
257
|
+
[`src/helius/solana_rpc.py`](src/helius/solana_rpc.py) for the current list of
|
|
258
|
+
implemented methods; missing endpoints are tracked as issues and added
|
|
259
|
+
continuously.
|
|
260
|
+
|
|
261
|
+
| Solana JSON-RPC method | Python method | Helius docs |
|
|
262
|
+
| ----------------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
263
|
+
| `getAccountInfo` | `get_account_info(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getaccountinfo), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getaccountinfo) |
|
|
264
|
+
| `getBalance` | `get_balance(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getbalance), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getbalance) |
|
|
265
|
+
| `getBlock` | `get_block(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblock), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getblock) |
|
|
266
|
+
| `getBlockCommitment` | `get_block_commitment(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockcommitment), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getblockcommitment) |
|
|
267
|
+
| `getBlockHeight` | `get_block_height(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockheight), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getblockheight) |
|
|
268
|
+
| `getBlockProduction` | `get_block_production(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockproduction), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getblockproduction) |
|
|
269
|
+
| `getBlocks` | `get_blocks(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblocks), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getblocks) |
|
|
270
|
+
| `getBlocksWithLimit` | `get_blocks_with_limit(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockswithlimit), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getblockswithlimit) |
|
|
271
|
+
| `getBlockTime` | `get_block_time(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblocktime), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getblocktime) |
|
|
272
|
+
| `getClusterNodes` | `get_cluster_nodes()` | [guide](https://www.helius.dev/docs/rpc/guides/getclusternodes), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getclusternodes) |
|
|
273
|
+
| `getEpochInfo` | `get_epoch_info(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getepochinfo), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getepochinfo) |
|
|
274
|
+
| `getEpochSchedule` | `get_epoch_schedule()` | [guide](https://www.helius.dev/docs/rpc/guides/getepochschedule), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getepochschedule) |
|
|
275
|
+
| `getFeeForMessage` | `get_fee_for_message(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getfeeformessage), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getfeeformessage) |
|
|
276
|
+
| `getFirstAvailableBlock` | `get_first_available_block()` | [guide](https://www.helius.dev/docs/rpc/guides/getfirstavailableblock), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getfirstavailableblock) |
|
|
277
|
+
| `getGenesisHash` | `get_genesis_hash()` | [guide](https://www.helius.dev/docs/rpc/guides/getgenesishash), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getgenesishash) |
|
|
278
|
+
| `getHealth` | `get_health()` | [guide](https://www.helius.dev/docs/rpc/guides/gethealth), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gethealth) |
|
|
279
|
+
| `getHighestSnapshotSlot` | `get_highest_snapshot_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/gethighestsnapshotslot), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gethighestsnapshotslot) |
|
|
280
|
+
| `getIdentity` | `get_identity()` | [guide](https://www.helius.dev/docs/rpc/guides/getidentity), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getidentity) |
|
|
281
|
+
| `getInflationGovernor` | `get_inflation_governor(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getinflationgovernor), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getinflationgovernor) |
|
|
282
|
+
| `getInflationRate` | `get_inflation_rate()` | [guide](https://www.helius.dev/docs/rpc/guides/getinflationrate), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getinflationrate) |
|
|
283
|
+
| `getInflationReward` | `get_inflation_reward(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getinflationreward), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getinflationreward) |
|
|
284
|
+
| `getLargestAccounts` | `get_largest_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getlargestaccounts), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getlargestaccounts) |
|
|
285
|
+
| `getLatestBlockhash` | `get_latest_blockhash(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getlatestblockhash), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getlatestblockhash) |
|
|
286
|
+
| `getLeaderSchedule` | `client.get_leader_schedule(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getleaderschedule), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getleaderschedule) |
|
|
287
|
+
| `getMaxRetransmitSlot` | `client.get_max_retransmit_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/getmaxretransmitslot), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getmaxretransmitslot) |
|
|
288
|
+
| `getMaxShredInsertSlot` | `get_max_shred_insert_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/getmaxshredinsertslot), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getmaxshredinsertslot) |
|
|
289
|
+
| `getMinimumBalanceForRentExemption` | `get_minimum_balance_for_rent_exemption(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getminimumbalanceforrentexemption), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getminimumbalanceforrentexemption) |
|
|
290
|
+
| `getMultipleAccounts` | `get_multiple_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getmultipleaccounts), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getmultipleaccounts) |
|
|
291
|
+
| `getProgramAccounts` | `get_program_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getprogramaccounts), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getprogramaccounts) |
|
|
292
|
+
| `getRecentPerformanceSamples` | `get_recent_performance_samples(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getrecentperformancesamples), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getrecentperformancesamples) |
|
|
293
|
+
| `getRecentPrioritizationFees` | `get_recent_prioritization_fees(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getrecentprioritizationfees), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getrecentprioritizationfees) |
|
|
294
|
+
| `getSignaturesForAddress` | `get_signatures_for_address(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getsignaturesforaddress), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getsignaturesforaddress) |
|
|
295
|
+
| `getSignatureStatuses` | `get_signature_statuses(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getsignaturestatuses), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getsignaturestatuses) |
|
|
296
|
+
| `getSlot` | `get_slot(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getslot), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getslot) |
|
|
297
|
+
| `getSlotLeader` | `get_slot_leader(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getslotleader), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getslotleader) |
|
|
298
|
+
| `getSlotLeaders` | `get_slot_leaders(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getslotleaders), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getslotleaders) |
|
|
299
|
+
| `getStakeMinimumDelegation` | `get_stake_minimum_delegation(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getstakeminimumdelegation), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getstakeminimumdelegation) |
|
|
300
|
+
| `getSupply` | `get_supply(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getsupply), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) |
|
|
301
|
+
| `getTokenAccountBalance` | `get_token_account_balance(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenaccountbalance), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gettokenaccountbalance) |
|
|
302
|
+
| `getTokenAccountsByDelegate` | `get_token_accounts_by_delegate(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenaccountsbydelegate), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gettokenaccountsbydelegate) |
|
|
303
|
+
| `getTokenAccountsByOwner` | `get_token_accounts_by_owner(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenaccountsbyowner), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gettokenaccountsbyowner) |
|
|
304
|
+
| `getTokenLargestAccounts` | `get_token_largest_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenlargestaccounts), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gettokenlargestaccounts) |
|
|
305
|
+
| `getTokenSupply` | `get_token_supply(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokensupply), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gettokensupply) |
|
|
306
|
+
| `getTransaction` | `get_transaction(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettransaction), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gettransaction) |
|
|
307
|
+
| `getTransactionCount` | `get_transaction_count(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettransactioncount), [reference](https://www.helius.dev/docs/api-reference/rpc/http/gettransactioncount) |
|
|
308
|
+
| `getVersion` | `get_version()` | [guide](https://www.helius.dev/docs/rpc/guides/getversion), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getversion) |
|
|
309
|
+
| `getVoteAccounts` | `get_vote_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getvoteaccounts), [reference](https://www.helius.dev/docs/api-reference/rpc/http/getvoteaccounts) |
|
|
310
|
+
| `isBlockhashValid` | `is_blockhash_valid(...)` | [guide](https://www.helius.dev/docs/rpc/guides/isblockhashvalid), [reference](https://www.helius.dev/docs/api-reference/rpc/http/isblockhashvalid) |
|
|
311
|
+
| `minimumLedgerSlot` | `minimum_ledger_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/minimumledgerslot), [reference](https://www.helius.dev/docs/api-reference/rpc/http/minimumledgerslot) |
|
|
312
|
+
| `requestAirdrop` | `request_airdrop(...)` | [guide](https://www.helius.dev/docs/rpc/guides/requestairdrop), [reference](https://www.helius.dev/docs/api-reference/rpc/http/requestairdrop) |
|
|
313
|
+
| `sendTransaction` | `send_transaction(...)` | [guide](https://www.helius.dev/docs/rpc/guides/sendtransaction), [reference](https://www.helius.dev/docs/api-reference/rpc/http/sendtransaction) |
|
|
314
|
+
|
|
315
|
+
## License
|
|
316
|
+
|
|
317
|
+
[MIT](LICENSE)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
helius/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
+
helius/models.py,sha256=O_T8WQB_C4AFXCs6CU2ges5CUxoOPahUkf9Z6S_AEnQ,5312
|
|
3
|
+
helius/solana_rpc.py,sha256=yzxQqsx7UIJ295m366Oh6ZDdUwhXsrkJ99emAEEE9JM,34952
|
|
4
|
+
helius_python-0.2.0.dist-info/METADATA,sha256=wxBqRq8eDo6a6DGYr3daRBgCB7dul4dfoVUS4YwoP_8,28985
|
|
5
|
+
helius_python-0.2.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
6
|
+
helius_python-0.2.0.dist-info/licenses/LICENSE,sha256=bZc2EDmq_GsWH77uK8LBn1kqqrOPcp2f9p-ys9bYa1E,1072
|
|
7
|
+
helius_python-0.2.0.dist-info/RECORD,,
|
|
@@ -1,363 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: helius-python
|
|
3
|
-
Version: 0.1.0
|
|
4
|
-
Summary: Typed Python client for the Helius API
|
|
5
|
-
Project-URL: Homepage, https://github.com/markosnarinian/helius-python
|
|
6
|
-
Project-URL: Issues, https://github.com/markosnarinian/helius-python/issues
|
|
7
|
-
Author-email: Markos Narinian <manarinian@gmail.com>
|
|
8
|
-
License-Expression: MIT
|
|
9
|
-
License-File: LICENSE
|
|
10
|
-
Classifier: Operating System :: OS Independent
|
|
11
|
-
Classifier: Programming Language :: Python :: 3
|
|
12
|
-
Requires-Python: >=3.10
|
|
13
|
-
Requires-Dist: httpx
|
|
14
|
-
Requires-Dist: pydantic
|
|
15
|
-
Requires-Dist: python-dotenv
|
|
16
|
-
Provides-Extra: dev
|
|
17
|
-
Requires-Dist: pytest; extra == 'dev'
|
|
18
|
-
Requires-Dist: respx; extra == 'dev'
|
|
19
|
-
Description-Content-Type: text/markdown
|
|
20
|
-
|
|
21
|
-
# helius-python
|
|
22
|
-
|
|
23
|
-
<p align="center">
|
|
24
|
-
<img width="562" height="118" alt="Helius-Horizontal-Logo" src="https://github.com/user-attachments/assets/d87ffd10-b168-4830-bbad-d2fef67368a5" /><svg width="562" height="118" viewBox="0 0 562 118" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
25
|
-
<g clip-path="url(#clip0_7532_34078)">
|
|
26
|
-
<path d="M74.6261 24.7253C69.9876 22.7665 64.8892 21.6871 59.531 21.6871C54.1727 21.6871 49.0743 22.7665 44.4358 24.7253L58.3013 0.709587C58.8412 -0.229856 60.2007 -0.229856 60.7406 0.709587L74.6161 24.7253H74.6261Z" fill="url(#paint0_linear_7532_34078)"/>
|
|
27
|
-
<path d="M40.7468 26.5242C31.6098 31.5812 24.742 40.2161 22.0128 50.54L11.7061 24.2856C11.3063 23.2762 12.156 22.2168 13.2257 22.3767L40.7468 26.5242Z" fill="url(#paint1_linear_7532_34078)"/>
|
|
28
|
-
<path d="M28.9906 84.4099L0.999611 75.7751C-0.0400563 75.4552 -0.33996 74.126 0.449787 73.3965L21.2431 54.1079C20.9032 56.1767 20.7233 58.3054 20.7233 60.4741C20.7233 69.5088 23.8123 77.8238 28.9906 84.4099Z" fill="url(#paint2_linear_7532_34078)"/>
|
|
29
|
-
<path d="M58.951 99.2611L34.4089 115.981C33.5091 116.591 32.2895 116.011 32.2096 114.922L30.0203 85.6492C37.018 93.8443 47.3747 99.0812 58.951 99.2511V99.2611Z" fill="url(#paint3_linear_7532_34078)"/>
|
|
30
|
-
<path d="M88.9513 85.7692L86.772 114.892C86.692 115.971 85.4724 116.561 84.5727 115.951L60.0806 99.2612C71.6269 99.1013 81.9536 93.9043 88.9513 85.7692Z" fill="url(#paint4_linear_7532_34078)"/>
|
|
31
|
-
<path d="M118.042 75.6851L90.1711 84.28C95.2895 77.7139 98.3385 69.4488 98.3385 60.4741C98.3385 58.2754 98.1486 56.1167 97.7987 54.0179L118.582 73.2965C119.382 74.0361 119.072 75.3653 118.042 75.6751V75.6851Z" fill="url(#paint5_linear_7532_34078)"/>
|
|
32
|
-
<path d="M107.355 24.3356L97.0588 50.5801C94.3396 40.2662 87.4918 31.6413 78.3848 26.5643L105.836 22.4268C106.906 22.2668 107.755 23.3262 107.355 24.3356Z" fill="url(#paint6_linear_7532_34078)"/>
|
|
33
|
-
<path d="M59.5307 107.636C53.8026 107.636 49.1641 112.273 49.1641 118H69.9074C69.9074 112.273 65.2689 107.636 59.5407 107.636H59.5307Z" fill="url(#paint7_linear_7532_34078)"/>
|
|
34
|
-
<path d="M97.4388 90.6563C93.8699 95.1336 94.5997 101.66 99.0782 105.228L112.004 89.0172C107.526 85.4494 100.998 86.1789 97.4288 90.6563H97.4388Z" fill="url(#paint8_linear_7532_34078)"/>
|
|
35
|
-
<path d="M105.936 50.57C107.206 56.1567 112.774 59.6446 118.352 58.3653L113.733 38.1473C108.145 39.4166 104.656 44.9833 105.936 50.56V50.57Z" fill="url(#paint9_linear_7532_34078)"/>
|
|
36
|
-
<path d="M80.4942 18.8588C85.6525 21.3473 91.8505 19.1786 94.3397 14.0116L75.6557 5.01697C73.1665 10.1739 75.3358 16.3702 80.5042 18.8588H80.4942Z" fill="url(#paint10_linear_7532_34078)"/>
|
|
37
|
-
<path d="M38.0978 18.8588C43.2561 16.3702 45.4254 10.1739 42.9362 5.01697L24.2522 14.0116C26.7414 19.1686 32.9394 21.3373 38.0978 18.8488V18.8588Z" fill="url(#paint11_linear_7532_34078)"/>
|
|
38
|
-
<path d="M13.3958 50.57C14.6654 44.9833 11.1765 39.4266 5.58826 38.1573L0.979736 58.3754C6.56795 59.6446 12.1262 56.1567 13.3958 50.57Z" fill="url(#paint12_linear_7532_34078)"/>
|
|
39
|
-
<path d="M8.49731 89.0172L21.4332 105.228C25.9117 101.66 26.6415 95.1336 23.0726 90.6563C19.5038 86.1789 12.9759 85.4494 8.49731 89.0172Z" fill="url(#paint13_linear_7532_34078)"/>
|
|
40
|
-
<path d="M177.773 30.1321V59.8145H212.612V31.8511H228.487V98.4116H212.612V73.9661H177.773V98.4116H161.898V34.4195L177.773 30.1321Z" fill="#E84125"/>
|
|
41
|
-
<path d="M257.227 84.25H305.792L301.503 98.4016H241.363V31.8411H305.802L301.513 45.9927H257.237V58.0855H298.504V72.2371H257.237V84.25H257.227Z" fill="#E84125"/>
|
|
42
|
-
<path d="M331.274 31.8411V84.25H378.119L373.83 98.4016H315.399V31.8411H331.274Z" fill="#E84125"/>
|
|
43
|
-
<path d="M400.861 31.8411V98.4016H384.987V31.8411H400.861Z" fill="#E84125"/>
|
|
44
|
-
<path d="M467.44 31.8411H483.315V71.9872C483.315 91.3757 467.44 99.8607 446.937 99.8607C426.433 99.8607 411.668 90.7661 411.668 71.9872V34.4195L427.543 30.1321V71.9872C427.543 81.7614 434.061 85.4593 447.706 85.4593C461.352 85.4593 467.44 81.5116 467.44 71.9872V31.8411Z" fill="#E84125"/>
|
|
45
|
-
<path d="M491.382 52.0891C491.382 41.8851 499.45 31.8411 515.235 31.8411H560.54L556.252 45.9927H515.405C510.516 45.9927 508.107 49.0808 508.107 52.0791C508.107 55.0773 510.596 58.0855 515.405 58.0855H538.397C553.922 58.0855 561.99 68.1195 561.99 78.3335C561.99 88.5474 554.352 98.4016 538.397 98.4016H491.382L495.671 84.25H538.227C543.036 84.25 545.525 81.4217 545.525 78.3335C545.525 75.2453 543.126 72.1571 538.227 72.1571H515.235C499.19 72.1571 491.382 62.1231 491.382 52.0891Z" fill="#E84125"/>
|
|
46
|
-
</g>
|
|
47
|
-
<defs>
|
|
48
|
-
<linearGradient id="paint0_linear_7532_34078" x1="41.8666" y1="12.3627" x2="74.6261" y2="12.3627" gradientUnits="userSpaceOnUse">
|
|
49
|
-
<stop stop-color="#E35930"/>
|
|
50
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
51
|
-
</linearGradient>
|
|
52
|
-
<linearGradient id="paint1_linear_7532_34078" x1="9.61681" y1="36.4484" x2="40.7468" y2="36.4484" gradientUnits="userSpaceOnUse">
|
|
53
|
-
<stop stop-color="#E35930"/>
|
|
54
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
55
|
-
</linearGradient>
|
|
56
|
-
<linearGradient id="paint2_linear_7532_34078" x1="-0.919775" y1="69.2589" x2="28.9906" y2="69.2589" gradientUnits="userSpaceOnUse">
|
|
57
|
-
<stop stop-color="#E35930"/>
|
|
58
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
59
|
-
</linearGradient>
|
|
60
|
-
<linearGradient id="paint3_linear_7532_34078" x1="29.4704" y1="100.94" x2="58.951" y2="100.94" gradientUnits="userSpaceOnUse">
|
|
61
|
-
<stop stop-color="#E35930"/>
|
|
62
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
63
|
-
</linearGradient>
|
|
64
|
-
<linearGradient id="paint4_linear_7532_34078" x1="59.0809" y1="100.98" x2="88.9513" y2="100.98" gradientUnits="userSpaceOnUse">
|
|
65
|
-
<stop stop-color="#E35930"/>
|
|
66
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
67
|
-
</linearGradient>
|
|
68
|
-
<linearGradient id="paint5_linear_7532_34078" x1="88.3417" y1="69.149" x2="119.032" y2="69.149" gradientUnits="userSpaceOnUse">
|
|
69
|
-
<stop stop-color="#E35930"/>
|
|
70
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
71
|
-
</linearGradient>
|
|
72
|
-
<linearGradient id="paint6_linear_7532_34078" x1="75.9256" y1="36.4884" x2="107.455" y2="36.4884" gradientUnits="userSpaceOnUse">
|
|
73
|
-
<stop stop-color="#E35930"/>
|
|
74
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
75
|
-
</linearGradient>
|
|
76
|
-
<linearGradient id="paint7_linear_7532_34078" x1="64.1037" y1="108.682" x2="56.3294" y2="122.151" gradientUnits="userSpaceOnUse">
|
|
77
|
-
<stop stop-color="#E35930"/>
|
|
78
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
79
|
-
</linearGradient>
|
|
80
|
-
<linearGradient id="paint8_linear_7532_34078" x1="101.127" y1="87.5512" x2="106.808" y2="102.028" gradientUnits="userSpaceOnUse">
|
|
81
|
-
<stop stop-color="#E35930"/>
|
|
82
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
83
|
-
</linearGradient>
|
|
84
|
-
<linearGradient id="paint9_linear_7532_34078" x1="105.915" y1="45.8351" x2="120.779" y2="50.4203" gradientUnits="userSpaceOnUse">
|
|
85
|
-
<stop stop-color="#E35930"/>
|
|
86
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
87
|
-
</linearGradient>
|
|
88
|
-
<linearGradient id="paint10_linear_7532_34078" x1="76.8142" y1="15.9367" x2="89.6635" y2="7.17242" gradientUnits="userSpaceOnUse">
|
|
89
|
-
<stop stop-color="#E35930"/>
|
|
90
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
91
|
-
</linearGradient>
|
|
92
|
-
<linearGradient id="paint11_linear_7532_34078" x1="33.7238" y1="19.9762" x2="34.884" y2="4.46876" gradientUnits="userSpaceOnUse">
|
|
93
|
-
<stop stop-color="#E35930"/>
|
|
94
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
95
|
-
</linearGradient>
|
|
96
|
-
<linearGradient id="paint12_linear_7532_34078" x1="11.6598" y1="54.776" x2="0.258708" y2="44.1971" gradientUnits="userSpaceOnUse">
|
|
97
|
-
<stop stop-color="#E35930"/>
|
|
98
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
99
|
-
</linearGradient>
|
|
100
|
-
<linearGradient id="paint13_linear_7532_34078" x1="25.3906" y1="94.7132" x2="10.0098" y2="97.0344" gradientUnits="userSpaceOnUse">
|
|
101
|
-
<stop stop-color="#E35930"/>
|
|
102
|
-
<stop offset="1" stop-color="#E84125"/>
|
|
103
|
-
</linearGradient>
|
|
104
|
-
<clipPath id="clip0_7532_34078">
|
|
105
|
-
<rect width="562" height="118" fill="white"/>
|
|
106
|
-
</clipPath>
|
|
107
|
-
</defs>
|
|
108
|
-
</svg>
|
|
109
|
-
</p>
|
|
110
|
-
|
|
111
|
-
<p align="center">
|
|
112
|
-
<a href="https://pypi.org/project/helius-python/"><img src="https://img.shields.io/pypi/v/helius-python.svg" alt="PyPI version"></a>
|
|
113
|
-
<a href="https://pypi.org/project/helius-python/"><img src="https://img.shields.io/pypi/pyversions/helius-python.svg" alt="Python versions"></a>
|
|
114
|
-
<a href="https://github.com/markosnarinian/helius-python/blob/main/LICENSE"><img src="https://img.shields.io/github/license/markosnarinian/helius-python.svg" alt="License"></a>
|
|
115
|
-
<a href="https://github.com/markosnarinian/helius-python/actions/workflows/python-package.yml"><img src="https://github.com/markosnarinian/helius-python/actions/workflows/python-package.yml/badge.svg" alt="CI"></a>
|
|
116
|
-
<a href="https://pypistats.org/packages/helius-python"><img src="https://img.shields.io/pypi/dm/helius-python.svg" alt="Downloads"></a>
|
|
117
|
-
<a href="https://github.com/markosnarinian/helius-python/commits/main"><img src="https://img.shields.io/github/last-commit/markosnarinian/helius-python.svg" alt="Last commit"></a>
|
|
118
|
-
</p>
|
|
119
|
-
|
|
120
|
-
**A complete, typed Python client for [Helius](https://helius.dev) — the Solana developer platform.**
|
|
121
|
-
<br />
|
|
122
|
-
|
|
123
|
-
## TL;DR
|
|
124
|
-
```bash
|
|
125
|
-
pip install helius-python
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
```python
|
|
129
|
-
# export HELIUS_API_KEY=your_key (or put it in .env)
|
|
130
|
-
|
|
131
|
-
from helius.client import HeliusClient
|
|
132
|
-
|
|
133
|
-
with HeliusClient() as helius:
|
|
134
|
-
_ctx, lamports = helius.get_balance("7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU")
|
|
135
|
-
print(f"{lamports / 1_000_000_000:.4f} SOL")
|
|
136
|
-
|
|
137
|
-
for sig in helius.get_signatures_for_address(
|
|
138
|
-
"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU", limit=5
|
|
139
|
-
):
|
|
140
|
-
print(sig.slot, "ERR" if sig.err else "OK ", sig.signature)
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
`HELIUS_API_KEY` is read from the environment (or `.env`), the
|
|
144
|
-
client is a context manager, and every return value is fully typed.
|
|
145
|
-
|
|
146
|
-
## Why this over `solana-py` / `solders`?
|
|
147
|
-
|
|
148
|
-
`solders` is for building and signing transactions. `solana-py` is a generic Solana RPC client. Use them for that.
|
|
149
|
-
|
|
150
|
-
This library is for talking to **Helius** specifically — typed `pydantic` responses, snake_case, and (eventually) the Helius-only endpoints (DAS, Enhanced Transactions, Webhooks, priority fees) the others don't cover. Plays nicely alongside `solders`: sign with `solders`, read with `helius-python`.
|
|
151
|
-
|
|
152
|
-
## Example: wallet tracker
|
|
153
|
-
|
|
154
|
-
See [`examples/wallet_tracker.py`](examples/wallet_tracker.py) for a
|
|
155
|
-
runnable script that takes a wallet address and prints:
|
|
156
|
-
|
|
157
|
-
- SOL balance
|
|
158
|
-
- All non-empty SPL token accounts (mint, balance, account)
|
|
159
|
-
- The last N transactions (timestamp, slot, success/error, signature)
|
|
160
|
-
|
|
161
|
-
```bash
|
|
162
|
-
export HELIUS_API_KEY=your_helius_api_key
|
|
163
|
-
python examples/wallet_tracker.py 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU --limit 20
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
It uses `get_balance`, `get_token_accounts_by_owner` (with
|
|
167
|
-
`encoding="jsonParsed"`), and `get_signatures_for_address` — pure
|
|
168
|
-
stdlib plus this library, no `solana-py` or `solders` needed.
|
|
169
|
-
|
|
170
|
-
## Coverage
|
|
171
|
-
|
|
172
|
-
The goal of this library is **support every function, method, endpoint,
|
|
173
|
-
and feature that Helius exposes.** If Helius ships it, this client
|
|
174
|
-
wraps it.
|
|
175
|
-
|
|
176
|
-
- ✅ **The full Solana JSON-RPC surface** proxied by Helius —
|
|
177
|
-
`getAccountInfo`, `getBalance`, `getBlock`, `getTransaction`,
|
|
178
|
-
`getProgramAccounts`, `getTokenAccountsByOwner`,
|
|
179
|
-
`getSignaturesForAddress`, and every other standard RPC method.
|
|
180
|
-
**(supported today)**
|
|
181
|
-
- 🚧 **All Helius-specific RPC extensions** — enhanced transactions, DAS
|
|
182
|
-
(Digital Asset Standard) methods, priority fee estimation, and the
|
|
183
|
-
rest of the Helius-only RPC namespace. **(in progress)**
|
|
184
|
-
- 🚧 **Every Helius REST endpoint** — Enhanced Transactions API,
|
|
185
|
-
Webhooks API, Mint API, token metadata, address lookups, and beyond.
|
|
186
|
-
**(in progress)**
|
|
187
|
-
- 🚧 **Platform features** — streaming, websockets, and any new
|
|
188
|
-
capability Helius adds to its API. **(in progress)**
|
|
189
|
-
|
|
190
|
-
> **Current status:** only the standard Solana JSON-RPC surface is
|
|
191
|
-
> implemented today. Support for Helius RPC extensions, REST endpoints,
|
|
192
|
-
> and platform features is actively being worked on.
|
|
193
|
-
|
|
194
|
-
## Goals
|
|
195
|
-
|
|
196
|
-
1. **Completeness** — 1:1 coverage of the entire Helius API surface.
|
|
197
|
-
2. **Type safety** — fully typed responses.
|
|
198
|
-
3. **Pythonic ergonomics** — `get_account_info(...)` instead of
|
|
199
|
-
`getAccountInfo(...)`, context managers.
|
|
200
|
-
4. **Zero magic** — thin, predictable wrappers that map directly to the
|
|
201
|
-
documented Helius API.
|
|
202
|
-
|
|
203
|
-
## Authentication
|
|
204
|
-
|
|
205
|
-
Pass your Helius API key explicitly:
|
|
206
|
-
|
|
207
|
-
```python
|
|
208
|
-
from helius.client import HeliusClient
|
|
209
|
-
|
|
210
|
-
client = HeliusClient(api_key="YOUR_HELIUS_API_KEY")
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
or set `HELIUS_API_KEY` as an environment variable:
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
export HELIUS_API_KEY=your_helius_api_key
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
You can also set it in a `.env` file at the project root and let the
|
|
220
|
-
client pick it up automatically:
|
|
221
|
-
|
|
222
|
-
```env
|
|
223
|
-
HELIUS_API_KEY=your_helius_api_key
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
```python
|
|
227
|
-
from helius.client import HeliusClient
|
|
228
|
-
|
|
229
|
-
client = HeliusClient() # reads HELIUS_API_KEY from the environment or .env
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
## Usage
|
|
233
|
-
|
|
234
|
-
### As a context manager (recommended)
|
|
235
|
-
|
|
236
|
-
```python
|
|
237
|
-
from helius.client import HeliusClient
|
|
238
|
-
|
|
239
|
-
with HeliusClient(api_key="YOUR_HELIUS_API_KEY") as client:
|
|
240
|
-
_ctx, balance = client.get_balance("So11111111111111111111111111111111111111112")
|
|
241
|
-
_ctx, supply = client.get_supply()
|
|
242
|
-
nodes = client.get_cluster_nodes()
|
|
243
|
-
block = client.get_block(slot=250_000_000)
|
|
244
|
-
tx = client.get_transaction("5j7s...signature...")
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
`HeliusClient` implements the context-manager protocol via `__enter__` /
|
|
248
|
-
`__exit__`, so the underlying `httpx.Client` is closed cleanly when the
|
|
249
|
-
`with` block exits.
|
|
250
|
-
|
|
251
|
-
### With an explicit `close()` call
|
|
252
|
-
|
|
253
|
-
If a `with` block doesn't fit your code structure (e.g. the client lives
|
|
254
|
-
on a long-lived object), call `close()` yourself when you're done:
|
|
255
|
-
|
|
256
|
-
```python
|
|
257
|
-
from helius.client import HeliusClient
|
|
258
|
-
|
|
259
|
-
client = HeliusClient(api_key="YOUR_HELIUS_API_KEY")
|
|
260
|
-
try:
|
|
261
|
-
_ctx, balance = client.get_balance("So11111111111111111111111111111111111111112")
|
|
262
|
-
_ctx, supply = client.get_supply()
|
|
263
|
-
finally:
|
|
264
|
-
client.close()
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
Client classes also implement `__del__` as a safety net — if you forget
|
|
268
|
-
to `close()` or use `with`, the underlying HTTP client is still closed
|
|
269
|
-
when the instance is garbage-collected. Prefer `with` or `close()`
|
|
270
|
-
regardless.
|
|
271
|
-
|
|
272
|
-
> 🚧 **Exception & error handling is a work in progress.** Today,
|
|
273
|
-
> transport errors surface as raw `httpx` exceptions and Helius/Solana
|
|
274
|
-
> RPC errors are not yet wrapped in typed exception classes. A
|
|
275
|
-
> consistent error hierarchy is being worked on.
|
|
276
|
-
|
|
277
|
-
### Defaults
|
|
278
|
-
|
|
279
|
-
| Argument | Default | Notes |
|
|
280
|
-
| ---------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
281
|
-
| `base_url` | `"https://mainnet.helius-rpc.com"` | Override to point at devnet, staging, or a custom Helius endpoint. |
|
|
282
|
-
| `api_key` | `None` → falls back to `HELIUS_API_KEY` from the environment, then `.env` | If none is provided, the constructor raises `ValueError`. |
|
|
283
|
-
|
|
284
|
-
Per-method RPC parameters (`commitment`, `encoding`, `min_context_slot`,
|
|
285
|
-
etc.) are left unset by default — the Helius/Solana server defaults
|
|
286
|
-
apply unless you pass them explicitly.
|
|
287
|
-
|
|
288
|
-
### Reference
|
|
289
|
-
|
|
290
|
-
For parameters, semantics, and return shapes, see the official Helius docs:
|
|
291
|
-
[RPC guide](https://www.helius.dev/docs/rpc) and
|
|
292
|
-
[API reference](https://www.helius.dev/docs/api-reference).
|
|
293
|
-
|
|
294
|
-
If you hit a bug, a missing parameter, or surprising behavior, please
|
|
295
|
-
[open an issue](https://github.com/markosnarinian/helius-python/issues).
|
|
296
|
-
|
|
297
|
-
### Supported methods
|
|
298
|
-
|
|
299
|
-
The method names map 1:1 to the Solana JSON-RPC spec, just converted to
|
|
300
|
-
`snake_case`. If you know the RPC method name, you know the Python function.
|
|
301
|
-
|
|
302
|
-
## Status
|
|
303
|
-
|
|
304
|
-
Actively expanding toward full coverage of the Helius API. See
|
|
305
|
-
[`src/helius/client.py`](src/helius/client.py) for the current list of
|
|
306
|
-
implemented methods; missing endpoints are tracked as issues and added
|
|
307
|
-
continuously.
|
|
308
|
-
|
|
309
|
-
| Solana JSON-RPC method | Python method | Helius docs |
|
|
310
|
-
| ----------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
311
|
-
| `getAccountInfo` | `client.get_account_info(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getaccountinfo) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getaccountinfo) |
|
|
312
|
-
| `getBalance` | `client.get_balance(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getbalance) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getbalance) |
|
|
313
|
-
| `getBlock` | `client.get_block(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblock) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getblock) |
|
|
314
|
-
| `getBlockCommitment` | `client.get_block_commitment(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockcommitment) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getblockcommitment) |
|
|
315
|
-
| `getBlockHeight` | `client.get_block_height(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockheight) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getblockheight) |
|
|
316
|
-
| `getBlockProduction` | `client.get_block_production(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockproduction) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getblockproduction) |
|
|
317
|
-
| `getBlocks` | `client.get_blocks(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblocks) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getblocks) |
|
|
318
|
-
| `getBlocksWithLimit` | `client.get_blocks_with_limit(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblockswithlimit) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getblockswithlimit) |
|
|
319
|
-
| `getBlockTime` | `client.get_block_time(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getblocktime) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getblocktime) |
|
|
320
|
-
| `getClusterNodes` | `client.get_cluster_nodes()` | [guide](https://www.helius.dev/docs/rpc/guides/getclusternodes) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getclusternodes) |
|
|
321
|
-
| `getEpochInfo` | `client.get_epoch_info(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getepochinfo) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getepochinfo) |
|
|
322
|
-
| `getEpochSchedule` | `client.get_epoch_schedule()` | [guide](https://www.helius.dev/docs/rpc/guides/getepochschedule) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getepochschedule) |
|
|
323
|
-
| `getFeeForMessage` | `client.get_fee_for_message(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getfeeformessage) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getfeeformessage) |
|
|
324
|
-
| `getFirstAvailableBlock` | `client.get_first_available_block()` | [guide](https://www.helius.dev/docs/rpc/guides/getfirstavailableblock) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getfirstavailableblock) |
|
|
325
|
-
| `getGenesisHash` | `client.get_genesis_hash()` | [guide](https://www.helius.dev/docs/rpc/guides/getgenesishash) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getgenesishash) |
|
|
326
|
-
| `getHealth` | `client.get_health()` | [guide](https://www.helius.dev/docs/rpc/guides/gethealth) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gethealth) |
|
|
327
|
-
| `getHighestSnapshotSlot` | `client.get_highest_snapshot_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/gethighestsnapshotslot) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gethighestsnapshotslot) |
|
|
328
|
-
| `getIdentity` | `client.get_identity()` | [guide](https://www.helius.dev/docs/rpc/guides/getidentity) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getidentity) |
|
|
329
|
-
| `getInflationGovernor` | `client.get_inflation_governor(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getinflationgovernor) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getinflationgovernor) |
|
|
330
|
-
| `getInflationRate` | `client.get_inflation_rate()` | [guide](https://www.helius.dev/docs/rpc/guides/getinflationrate) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getinflationrate) |
|
|
331
|
-
| `getLargestAccounts` | `client.get_largest_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getlargestaccounts) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getlargestaccounts) |
|
|
332
|
-
| `getLatestBlockhash` | `client.get_latest_blockhash(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getlatestblockhash) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getlatestblockhash) |
|
|
333
|
-
| `getLeaderSchedule` | `client.get_leader_schedule(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getleaderschedule) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getleaderschedule) |
|
|
334
|
-
| `getMaxRetransmitSlot` | `client.get_max_retransmit_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/getmaxretransmitslot) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getmaxretransmitslot) |
|
|
335
|
-
| `getMaxShredInsertSlot` | `client.get_max_shred_insert_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/getmaxshredinsertslot) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getmaxshredinsertslot) |
|
|
336
|
-
| `getMinimumBalanceForRentExemption` | `client.get_minimum_balance_for_rent_exemption(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getminimumbalanceforrentexemption) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getminimumbalanceforrentexemption) |
|
|
337
|
-
| `getMultipleAccounts` | `client.get_multiple_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getmultipleaccounts) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getmultipleaccounts) |
|
|
338
|
-
| `getProgramAccounts` | `client.get_program_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getprogramaccounts) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getprogramaccounts) |
|
|
339
|
-
| `getRecentPerformanceSamples` | `client.get_recent_performance_samples(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getrecentperformancesamples) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getrecentperformancesamples) |
|
|
340
|
-
| `getRecentPrioritizationFees` | `client.get_recent_prioritization_fees(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getrecentprioritizationfees) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getrecentprioritizationfees) |
|
|
341
|
-
| `getSignaturesForAddress` | `client.get_signatures_for_address(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getsignaturesforaddress) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getsignaturesforaddress) |
|
|
342
|
-
| `getSignatureStatuses` | `client.get_signature_statuses(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getsignaturestatuses) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getsignaturestatuses) |
|
|
343
|
-
| `getSlot` | `client.get_slot(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getslot) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getslot) |
|
|
344
|
-
| `getSlotLeader` | `client.get_slot_leader(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getslotleader) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getslotleader) |
|
|
345
|
-
| `getSlotLeaders` | `client.get_slot_leaders(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getslotleaders) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getslotleaders) |
|
|
346
|
-
| `getStakeMinimumDelegation` | `client.get_stake_minimum_delegation(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getstakeminimumdelegation) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getstakeminimumdelegation) |
|
|
347
|
-
| `getSupply` | `client.get_supply(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getsupply) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getsupply) |
|
|
348
|
-
| `getTokenAccountBalance` | `client.get_token_account_balance(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenaccountbalance) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gettokenaccountbalance) |
|
|
349
|
-
| `getTokenAccountsByDelegate` | `client.get_token_accounts_by_delegate(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenaccountsbydelegate) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gettokenaccountsbydelegate) |
|
|
350
|
-
| `getTokenAccountsByOwner` | `client.get_token_accounts_by_owner(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenaccountsbyowner) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gettokenaccountsbyowner) |
|
|
351
|
-
| `getTokenLargestAccounts` | `client.get_token_largest_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokenlargestaccounts) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gettokenlargestaccounts) |
|
|
352
|
-
| `getTokenSupply` | `client.get_token_supply(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettokensupply) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gettokensupply) |
|
|
353
|
-
| `getTransaction` | `client.get_transaction(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettransaction) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gettransaction) |
|
|
354
|
-
| `getTransactionCount` | `client.get_transaction_count(...)` | [guide](https://www.helius.dev/docs/rpc/guides/gettransactioncount) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/gettransactioncount) |
|
|
355
|
-
| `getVersion` | `client.get_version()` | [guide](https://www.helius.dev/docs/rpc/guides/getversion) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getversion) |
|
|
356
|
-
| `getVoteAccounts` | `client.get_vote_accounts(...)` | [guide](https://www.helius.dev/docs/rpc/guides/getvoteaccounts) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/getvoteaccounts) |
|
|
357
|
-
| `isBlockhashValid` | `client.is_blockhash_valid(...)` | [guide](https://www.helius.dev/docs/rpc/guides/isblockhashvalid) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/isblockhashvalid) |
|
|
358
|
-
| `minimumLedgerSlot` | `client.minimum_ledger_slot()` | [guide](https://www.helius.dev/docs/rpc/guides/minimumledgerslot) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/minimumledgerslot) |
|
|
359
|
-
| `requestAirdrop` | `client.request_airdrop(...)` | [guide](https://www.helius.dev/docs/rpc/guides/requestairdrop) · [ref](https://www.helius.dev/docs/api-reference/rpc/http/requestairdrop) |
|
|
360
|
-
|
|
361
|
-
## License
|
|
362
|
-
|
|
363
|
-
[MIT](LICENSE)
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
helius/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
helius/client.py,sha256=lR87MBJSZB4qPD3uk8YS3-M85q0amb309A4YMZJ6cVA,33300
|
|
3
|
-
helius/models.py,sha256=X6aLhpAIvVccgCIJE_h2TO0RRdBI26EmaGNylT11Y3A,5082
|
|
4
|
-
helius_python-0.1.0.dist-info/METADATA,sha256=beiaPKtBACBP-VZ_Fqomi06LDzkePGQsgydik4lOj2A,30295
|
|
5
|
-
helius_python-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
|
|
6
|
-
helius_python-0.1.0.dist-info/licenses/LICENSE,sha256=bZc2EDmq_GsWH77uK8LBn1kqqrOPcp2f9p-ys9bYa1E,1072
|
|
7
|
-
helius_python-0.1.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|