web3 7.0.0b2__py3-none-any.whl → 7.7.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.
Files changed (144) hide show
  1. ens/__init__.py +13 -2
  2. ens/_normalization.py +4 -4
  3. ens/async_ens.py +27 -15
  4. ens/base_ens.py +3 -1
  5. ens/contract_data.py +2 -2
  6. ens/ens.py +10 -7
  7. ens/exceptions.py +16 -29
  8. ens/specs/nf.json +1 -1
  9. ens/specs/normalization_spec.json +1 -1
  10. ens/utils.py +24 -32
  11. web3/__init__.py +23 -12
  12. web3/_utils/abi.py +157 -263
  13. web3/_utils/async_transactions.py +34 -20
  14. web3/_utils/batching.py +217 -0
  15. web3/_utils/blocks.py +6 -2
  16. web3/_utils/caching/__init__.py +12 -0
  17. web3/_utils/caching/caching_utils.py +433 -0
  18. web3/_utils/caching/request_caching_validation.py +287 -0
  19. web3/_utils/compat/__init__.py +2 -3
  20. web3/_utils/contract_sources/compile_contracts.py +1 -1
  21. web3/_utils/contract_sources/contract_data/ambiguous_function_contract.py +42 -0
  22. web3/_utils/contract_sources/contract_data/arrays_contract.py +3 -3
  23. web3/_utils/contract_sources/contract_data/bytes_contracts.py +5 -5
  24. web3/_utils/contract_sources/contract_data/constructor_contracts.py +7 -7
  25. web3/_utils/contract_sources/contract_data/contract_caller_tester.py +3 -3
  26. web3/_utils/contract_sources/contract_data/emitter_contract.py +3 -3
  27. web3/_utils/contract_sources/contract_data/event_contracts.py +50 -5
  28. web3/_utils/contract_sources/contract_data/extended_resolver.py +3 -3
  29. web3/_utils/contract_sources/contract_data/fallback_function_contract.py +3 -3
  30. web3/_utils/contract_sources/contract_data/function_name_tester_contract.py +3 -3
  31. web3/_utils/contract_sources/contract_data/math_contract.py +3 -3
  32. web3/_utils/contract_sources/contract_data/offchain_lookup.py +3 -3
  33. web3/_utils/contract_sources/contract_data/offchain_resolver.py +3 -3
  34. web3/_utils/contract_sources/contract_data/panic_errors_contract.py +3 -3
  35. web3/_utils/contract_sources/contract_data/payable_tester.py +3 -3
  36. web3/_utils/contract_sources/contract_data/receive_function_contracts.py +5 -5
  37. web3/_utils/contract_sources/contract_data/reflector_contracts.py +3 -3
  38. web3/_utils/contract_sources/contract_data/revert_contract.py +3 -3
  39. web3/_utils/contract_sources/contract_data/simple_resolver.py +3 -3
  40. web3/_utils/contract_sources/contract_data/storage_contract.py +3 -3
  41. web3/_utils/contract_sources/contract_data/string_contract.py +3 -3
  42. web3/_utils/contract_sources/contract_data/tuple_contracts.py +5 -5
  43. web3/_utils/contracts.py +172 -220
  44. web3/_utils/datatypes.py +5 -1
  45. web3/_utils/decorators.py +6 -1
  46. web3/_utils/empty.py +1 -1
  47. web3/_utils/encoding.py +16 -12
  48. web3/_utils/error_formatters_utils.py +5 -3
  49. web3/_utils/events.py +78 -72
  50. web3/_utils/fee_utils.py +1 -3
  51. web3/_utils/filters.py +24 -22
  52. web3/_utils/formatters.py +2 -2
  53. web3/_utils/http.py +8 -2
  54. web3/_utils/http_session_manager.py +314 -0
  55. web3/_utils/math.py +14 -15
  56. web3/_utils/method_formatters.py +161 -34
  57. web3/_utils/module.py +2 -1
  58. web3/_utils/module_testing/__init__.py +3 -2
  59. web3/_utils/module_testing/eth_module.py +736 -583
  60. web3/_utils/module_testing/go_ethereum_debug_module.py +128 -0
  61. web3/_utils/module_testing/module_testing_utils.py +81 -24
  62. web3/_utils/module_testing/persistent_connection_provider.py +702 -220
  63. web3/_utils/module_testing/utils.py +114 -33
  64. web3/_utils/module_testing/web3_module.py +438 -17
  65. web3/_utils/normalizers.py +13 -11
  66. web3/_utils/rpc_abi.py +10 -22
  67. web3/_utils/threads.py +8 -7
  68. web3/_utils/transactions.py +32 -25
  69. web3/_utils/type_conversion.py +5 -1
  70. web3/_utils/validation.py +20 -17
  71. web3/beacon/__init__.py +5 -0
  72. web3/beacon/api_endpoints.py +3 -0
  73. web3/beacon/async_beacon.py +29 -6
  74. web3/beacon/beacon.py +24 -6
  75. web3/contract/__init__.py +7 -0
  76. web3/contract/async_contract.py +285 -82
  77. web3/contract/base_contract.py +556 -258
  78. web3/contract/contract.py +295 -84
  79. web3/contract/utils.py +251 -55
  80. web3/datastructures.py +49 -34
  81. web3/eth/__init__.py +7 -0
  82. web3/eth/async_eth.py +89 -69
  83. web3/eth/base_eth.py +7 -3
  84. web3/eth/eth.py +43 -66
  85. web3/exceptions.py +158 -83
  86. web3/gas_strategies/time_based.py +8 -6
  87. web3/geth.py +53 -184
  88. web3/main.py +77 -17
  89. web3/manager.py +362 -95
  90. web3/method.py +43 -15
  91. web3/middleware/__init__.py +17 -0
  92. web3/middleware/attrdict.py +12 -22
  93. web3/middleware/base.py +55 -2
  94. web3/middleware/filter.py +45 -23
  95. web3/middleware/formatting.py +6 -3
  96. web3/middleware/names.py +4 -1
  97. web3/middleware/signing.py +15 -6
  98. web3/middleware/stalecheck.py +2 -1
  99. web3/module.py +61 -25
  100. web3/providers/__init__.py +21 -0
  101. web3/providers/async_base.py +87 -32
  102. web3/providers/base.py +77 -32
  103. web3/providers/eth_tester/__init__.py +5 -0
  104. web3/providers/eth_tester/defaults.py +2 -55
  105. web3/providers/eth_tester/main.py +41 -15
  106. web3/providers/eth_tester/middleware.py +16 -17
  107. web3/providers/ipc.py +41 -17
  108. web3/providers/legacy_websocket.py +26 -1
  109. web3/providers/persistent/__init__.py +7 -0
  110. web3/providers/persistent/async_ipc.py +61 -121
  111. web3/providers/persistent/persistent.py +323 -16
  112. web3/providers/persistent/persistent_connection.py +54 -5
  113. web3/providers/persistent/request_processor.py +136 -56
  114. web3/providers/persistent/subscription_container.py +56 -0
  115. web3/providers/persistent/subscription_manager.py +233 -0
  116. web3/providers/persistent/websocket.py +29 -92
  117. web3/providers/rpc/__init__.py +5 -0
  118. web3/providers/rpc/async_rpc.py +73 -18
  119. web3/providers/rpc/rpc.py +73 -30
  120. web3/providers/rpc/utils.py +1 -13
  121. web3/scripts/install_pre_releases.py +33 -0
  122. web3/scripts/parse_pygeth_version.py +16 -0
  123. web3/testing.py +4 -4
  124. web3/tracing.py +9 -5
  125. web3/types.py +141 -74
  126. web3/utils/__init__.py +64 -5
  127. web3/utils/abi.py +790 -10
  128. web3/utils/address.py +8 -0
  129. web3/utils/async_exception_handling.py +20 -11
  130. web3/utils/caching.py +34 -4
  131. web3/utils/exception_handling.py +9 -12
  132. web3/utils/subscriptions.py +285 -0
  133. {web3-7.0.0b2.dist-info → web3-7.7.0.dist-info}/LICENSE +1 -1
  134. web3-7.7.0.dist-info/METADATA +130 -0
  135. web3-7.7.0.dist-info/RECORD +171 -0
  136. {web3-7.0.0b2.dist-info → web3-7.7.0.dist-info}/WHEEL +1 -1
  137. web3/_utils/caching.py +0 -155
  138. web3/_utils/contract_sources/contract_data/address_reflector.py +0 -29
  139. web3/_utils/module_testing/go_ethereum_personal_module.py +0 -300
  140. web3/_utils/request.py +0 -265
  141. web3-7.0.0b2.dist-info/METADATA +0 -106
  142. web3-7.0.0b2.dist-info/RECORD +0 -163
  143. /web3/_utils/{function_identifiers.py → abi_element_identifiers.py} +0 -0
  144. {web3-7.0.0b2.dist-info → web3-7.7.0.dist-info}/top_level.txt +0 -0
web3/types.py CHANGED
@@ -5,10 +5,13 @@ from typing import (
5
5
  Coroutine,
6
6
  Dict,
7
7
  List,
8
+ Literal,
8
9
  NewType,
9
10
  Optional,
10
11
  Sequence,
12
+ Tuple,
11
13
  Type,
14
+ TypedDict,
12
15
  TypeVar,
13
16
  Union,
14
17
  )
@@ -24,34 +27,39 @@ from hexbytes import (
24
27
  HexBytes,
25
28
  )
26
29
 
27
- from web3._utils.compat import (
28
- Literal,
29
- NotRequired,
30
- TypedDict,
31
- )
32
- from web3._utils.function_identifiers import (
30
+ from web3._utils.abi_element_identifiers import (
33
31
  FallbackFn,
34
32
  ReceiveFn,
35
33
  )
34
+ from web3._utils.compat import (
35
+ NotRequired,
36
+ )
36
37
 
37
38
  if TYPE_CHECKING:
38
- from web3.contract.async_contract import AsyncContractFunction # noqa: F401
39
- from web3.contract.contract import ContractFunction # noqa: F401
39
+ from web3.contract.async_contract import ( # noqa: F401
40
+ AsyncContractEvent,
41
+ AsyncContractFunction,
42
+ )
43
+ from web3.contract.contract import ( # noqa: F401
44
+ ContractEvent,
45
+ ContractFunction,
46
+ )
40
47
  from web3.main import ( # noqa: F401
41
48
  AsyncWeb3,
42
49
  Web3,
43
50
  )
44
51
 
45
52
 
46
- TReturn = TypeVar("TReturn")
53
+ TFunc = TypeVar("TFunc", bound=Callable[..., Any])
47
54
  TParams = TypeVar("TParams")
55
+ TReturn = TypeVar("TReturn")
48
56
  TValue = TypeVar("TValue")
49
57
 
50
58
  BlockParams = Literal["latest", "earliest", "pending", "safe", "finalized"]
51
59
  BlockIdentifier = Union[BlockParams, BlockNumber, Hash32, HexStr, HexBytes, int]
52
60
  LatestBlockParam = Literal["latest"]
53
61
 
54
- FunctionIdentifier = Union[str, Type[FallbackFn], Type[ReceiveFn]]
62
+ ABIElementIdentifier = Union[str, Type[FallbackFn], Type[ReceiveFn]]
55
63
 
56
64
  # bytes, hexbytes, or hexstr representing a 32 byte hash
57
65
  _Hash32 = Union[Hash32, HexBytes, HexStr]
@@ -73,46 +81,6 @@ class AccessListEntry(TypedDict):
73
81
  AccessList = NewType("AccessList", Sequence[AccessListEntry])
74
82
 
75
83
 
76
- # todo: move these to eth_typing once web3 is type hinted
77
- class ABIEventParams(TypedDict, total=False):
78
- indexed: bool
79
- name: str
80
- type: str
81
-
82
-
83
- class ABIEvent(TypedDict, total=False):
84
- anonymous: bool
85
- inputs: Sequence["ABIEventParams"]
86
- name: str
87
- type: Literal["event"]
88
-
89
-
90
- class ABIFunctionComponents(TypedDict, total=False):
91
- components: Sequence["ABIFunctionComponents"]
92
- name: str
93
- type: str
94
-
95
-
96
- class ABIFunctionParams(TypedDict, total=False):
97
- components: Sequence["ABIFunctionComponents"]
98
- name: str
99
- type: str
100
-
101
-
102
- class ABIFunction(TypedDict, total=False):
103
- constant: bool
104
- inputs: Sequence["ABIFunctionParams"]
105
- name: str
106
- outputs: Sequence["ABIFunctionParams"]
107
- payable: bool
108
- stateMutability: Literal["pure", "view", "nonpayable", "payable"]
109
- type: Literal["function", "constructor", "fallback", "receive"]
110
-
111
-
112
- ABIElement = Union[ABIFunction, ABIEvent]
113
- ABI = Sequence[Union[ABIFunction, ABIEvent]]
114
-
115
-
116
84
  class EventData(TypedDict):
117
85
  address: ChecksumAddress
118
86
  args: Dict[str, Any]
@@ -135,6 +103,7 @@ TxData = TypedDict(
135
103
  "TxData",
136
104
  {
137
105
  "accessList": AccessList,
106
+ "blobVersionedHashes": Sequence[HexBytes],
138
107
  "blockHash": HexBytes,
139
108
  "blockNumber": BlockNumber,
140
109
  "chainId": int,
@@ -142,6 +111,7 @@ TxData = TypedDict(
142
111
  "from": ChecksumAddress,
143
112
  "gas": int,
144
113
  "gasPrice": Wei,
114
+ "maxFeePerBlobGas": Wei,
145
115
  "maxFeePerGas": Wei,
146
116
  "maxPriorityFeePerGas": Wei,
147
117
  "hash": HexBytes,
@@ -163,6 +133,8 @@ TxData = TypedDict(
163
133
  TxParams = TypedDict(
164
134
  "TxParams",
165
135
  {
136
+ "accessList": AccessList,
137
+ "blobVersionedHashes": Sequence[Union[str, HexStr, bytes, HexBytes]],
166
138
  "chainId": int,
167
139
  "data": Union[bytes, HexStr],
168
140
  # addr or ens
@@ -170,6 +142,7 @@ TxParams = TypedDict(
170
142
  "gas": int,
171
143
  # legacy pricing
172
144
  "gasPrice": Wei,
145
+ "maxFeePerBlobGas": Union[str, Wei],
173
146
  # dynamic fee pricing
174
147
  "maxFeePerGas": Union[str, Wei],
175
148
  "maxPriorityFeePerGas": Union[str, Wei],
@@ -183,15 +156,11 @@ TxParams = TypedDict(
183
156
  )
184
157
 
185
158
 
186
- WithdrawalData = TypedDict(
187
- "WithdrawalData",
188
- {
189
- "index": int,
190
- "validator_index": int,
191
- "address": ChecksumAddress,
192
- "amount": Gwei,
193
- },
194
- )
159
+ class WithdrawalData(TypedDict):
160
+ index: int
161
+ validator_index: int
162
+ address: ChecksumAddress
163
+ amount: Gwei
195
164
 
196
165
 
197
166
  class BlockData(TypedDict, total=False):
@@ -218,6 +187,9 @@ class BlockData(TypedDict, total=False):
218
187
  uncles: Sequence[HexBytes]
219
188
  withdrawals: Sequence[WithdrawalData]
220
189
  withdrawalsRoot: HexBytes
190
+ parentBeaconBlockRoot: HexBytes
191
+ blobGasUsed: int
192
+ excessBlobGas: int
221
193
 
222
194
  # ExtraDataToPOAMiddleware replaces extraData w/ proofOfAuthorityData
223
195
  proofOfAuthorityData: HexBytes
@@ -290,8 +262,15 @@ EthSubscriptionParams = Union[
290
262
  RPCId = Optional[Union[int, str]]
291
263
 
292
264
 
265
+ class RPCRequest(TypedDict, total=False):
266
+ id: RPCId
267
+ jsonrpc: Literal["2.0"]
268
+ method: RPCEndpoint
269
+ params: Any
270
+
271
+
293
272
  class RPCResponse(TypedDict, total=False):
294
- error: Union[RPCError, str]
273
+ error: RPCError
295
274
  id: RPCId
296
275
  jsonrpc: Literal["2.0"]
297
276
  result: Any
@@ -301,11 +280,19 @@ class RPCResponse(TypedDict, total=False):
301
280
  params: EthSubscriptionParams
302
281
 
303
282
 
283
+ EthSubscriptionResult = Union[
284
+ BlockData, # newHeads
285
+ TxData, # newPendingTransactions, full_transactions=True
286
+ HexBytes, # newPendingTransactions, full_transactions=False
287
+ LogReceipt, # logs
288
+ SyncProgress, # syncing
289
+ GethSyncingSubscriptionResult, # geth syncing
290
+ ]
291
+
292
+
304
293
  class FormattedEthSubscriptionResponse(TypedDict):
305
294
  subscription: HexStr
306
- result: Union[
307
- BlockData, TxData, LogReceipt, SyncProgress, GethSyncingSubscriptionResult
308
- ]
295
+ result: EthSubscriptionResult
309
296
 
310
297
 
311
298
  class CreateAccessListResponse(TypedDict):
@@ -314,7 +301,11 @@ class CreateAccessListResponse(TypedDict):
314
301
 
315
302
 
316
303
  MakeRequestFn = Callable[[RPCEndpoint, Any], RPCResponse]
304
+ MakeBatchRequestFn = Callable[[List[Tuple[RPCEndpoint, Any]]], List[RPCResponse]]
317
305
  AsyncMakeRequestFn = Callable[[RPCEndpoint, Any], Coroutine[Any, Any, RPCResponse]]
306
+ AsyncMakeBatchRequestFn = Callable[
307
+ [List[Tuple[RPCEndpoint, Any]]], Coroutine[Any, Any, List[RPCResponse]]
308
+ ]
318
309
 
319
310
 
320
311
  class FormattersDict(TypedDict, total=False):
@@ -338,17 +329,12 @@ class FeeHistory(TypedDict):
338
329
  reward: List[List[Wei]]
339
330
 
340
331
 
341
- StateOverrideParams = TypedDict(
342
- "StateOverrideParams",
343
- {
344
- "balance": Optional[Wei],
345
- "nonce": Optional[int],
346
- "code": Optional[Union[bytes, HexStr]],
347
- "state": Optional[Dict[HexStr, HexStr]],
348
- "stateDiff": Optional[Dict[HexStr, HexStr]],
349
- },
350
- total=False,
351
- )
332
+ class StateOverrideParams(TypedDict, total=False):
333
+ balance: Optional[Wei]
334
+ nonce: Optional[int]
335
+ code: Optional[Union[bytes, HexStr]]
336
+ state: Optional[Dict[HexStr, HexStr]]
337
+ stateDiff: Optional[Dict[HexStr, HexStr]]
352
338
 
353
339
 
354
340
  StateOverride = Dict[ChecksumAddress, StateOverrideParams]
@@ -381,6 +367,8 @@ TxReceipt = TypedDict(
381
367
  },
382
368
  )
383
369
 
370
+ BlockReceipts = List[TxReceipt]
371
+
384
372
 
385
373
  class SignedTx(TypedDict, total=False):
386
374
  raw: bytes
@@ -502,6 +490,84 @@ class TxPoolStatus(TypedDict, total=False):
502
490
  queued: int
503
491
 
504
492
 
493
+ #
494
+ # debug types
495
+ #
496
+ class TraceConfig(TypedDict, total=False):
497
+ disableStorage: bool
498
+ disableStack: bool
499
+ enableMemory: bool
500
+ enableReturnData: bool
501
+ tracer: str
502
+ tracerConfig: Dict[str, Any]
503
+ timeout: int
504
+
505
+
506
+ class CallTraceLog(TypedDict):
507
+ address: ChecksumAddress
508
+ data: HexBytes
509
+ topics: Sequence[HexBytes]
510
+ position: int
511
+
512
+
513
+ # syntax b/c "from" keyword not allowed w/ class construction
514
+ CallTrace = TypedDict(
515
+ "CallTrace",
516
+ {
517
+ "type": str,
518
+ "from": ChecksumAddress,
519
+ "to": ChecksumAddress,
520
+ "value": Wei,
521
+ "gas": int,
522
+ "gasUsed": int,
523
+ "input": HexBytes,
524
+ "output": HexBytes,
525
+ "error": str,
526
+ "revertReason": str,
527
+ "calls": Sequence["CallTrace"],
528
+ "logs": Sequence[CallTraceLog],
529
+ },
530
+ total=False,
531
+ )
532
+
533
+
534
+ class TraceData(TypedDict, total=False):
535
+ balance: int
536
+ nonce: int
537
+ code: str
538
+ storage: Dict[str, str]
539
+
540
+
541
+ class DiffModeTrace(TypedDict):
542
+ post: Dict[ChecksumAddress, TraceData]
543
+ pre: Dict[ChecksumAddress, TraceData]
544
+
545
+
546
+ PrestateTrace = Dict[ChecksumAddress, TraceData]
547
+
548
+
549
+ # 4byte tracer returns something like:
550
+ # { '0x27dc297e-128' : 1 }
551
+ # which is: { 4byte signature - calldata size : # of occurrences of key }
552
+ FourByteTrace = Dict[str, int]
553
+
554
+
555
+ class StructLog(TypedDict):
556
+ pc: int
557
+ op: str
558
+ gas: int
559
+ gasCost: int
560
+ depth: int
561
+ stack: List[HexStr]
562
+
563
+
564
+ class OpcodeTrace(TypedDict, total=False):
565
+ gas: int
566
+ failed: bool
567
+ returnValue: str
568
+ structLogs: List[StructLog]
569
+
570
+
505
571
  #
506
572
  # web3.geth types
507
573
  #
@@ -516,6 +582,7 @@ class GethWallet(TypedDict):
516
582
  # Contract types
517
583
 
518
584
  TContractFn = TypeVar("TContractFn", "ContractFunction", "AsyncContractFunction")
585
+ TContractEvent = TypeVar("TContractEvent", "ContractEvent", "AsyncContractEvent")
519
586
 
520
587
 
521
588
  # Tracing types
web3/utils/__init__.py CHANGED
@@ -3,17 +3,76 @@ NOTE: This is a public utility module. Any changes to these utility methods woul
3
3
  classify as breaking changes.
4
4
  """
5
5
 
6
- from .abi import ( # NOQA
6
+ from eth_utils.abi import (
7
+ abi_to_signature,
8
+ collapse_if_tuple,
9
+ event_abi_to_log_topic,
10
+ event_signature_to_log_topic,
11
+ filter_abi_by_name,
12
+ filter_abi_by_type,
13
+ function_abi_to_4byte_selector,
14
+ function_signature_to_4byte_selector,
7
15
  get_abi_input_names,
16
+ get_abi_input_types,
8
17
  get_abi_output_names,
18
+ get_abi_output_types,
19
+ get_aligned_abi_inputs,
20
+ get_all_event_abis,
21
+ get_all_function_abis,
22
+ get_normalized_abi_inputs,
23
+ )
24
+ from .abi import ( # NOQA
25
+ check_if_arguments_can_be_encoded,
26
+ get_abi_element_info,
27
+ get_abi_element,
28
+ get_event_abi,
29
+ get_event_log_topics,
30
+ log_topic_to_bytes,
9
31
  )
10
- from .address import get_create_address # NOQA
11
- from .async_exception_handling import ( # NOQA
32
+ from .address import (
33
+ get_create_address,
34
+ )
35
+ from .async_exception_handling import (
12
36
  async_handle_offchain_lookup,
13
37
  )
14
- from .caching import ( # NOQA
38
+ from .caching import (
39
+ RequestCacheValidationThreshold,
15
40
  SimpleCache,
16
41
  )
17
- from .exception_handling import ( # NOQA
42
+ from .exception_handling import (
18
43
  handle_offchain_lookup,
19
44
  )
45
+ from .subscriptions import (
46
+ EthSubscription,
47
+ )
48
+
49
+ __all__ = [
50
+ "abi_to_signature",
51
+ "collapse_if_tuple",
52
+ "event_abi_to_log_topic",
53
+ "event_signature_to_log_topic",
54
+ "filter_abi_by_name",
55
+ "filter_abi_by_type",
56
+ "function_abi_to_4byte_selector",
57
+ "function_signature_to_4byte_selector",
58
+ "get_abi_input_names",
59
+ "get_abi_input_types",
60
+ "get_abi_output_names",
61
+ "get_abi_output_types",
62
+ "get_aligned_abi_inputs",
63
+ "get_all_event_abis",
64
+ "get_all_function_abis",
65
+ "get_normalized_abi_inputs",
66
+ "check_if_arguments_can_be_encoded",
67
+ "get_abi_element_info",
68
+ "get_abi_element",
69
+ "get_event_abi",
70
+ "get_event_log_topics",
71
+ "log_topic_to_bytes",
72
+ "get_create_address",
73
+ "async_handle_offchain_lookup",
74
+ "RequestCacheValidationThreshold",
75
+ "SimpleCache",
76
+ "EthSubscription",
77
+ "handle_offchain_lookup",
78
+ ]