defistream 1.0.6__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.
- defistream/__init__.py +51 -0
- defistream/client.py +380 -0
- defistream/exceptions.py +65 -0
- defistream/models.py +27 -0
- defistream/protocols.py +449 -0
- defistream/py.typed +0 -0
- defistream/query.py +441 -0
- defistream-1.0.6.dist-info/METADATA +438 -0
- defistream-1.0.6.dist-info/RECORD +11 -0
- defistream-1.0.6.dist-info/WHEEL +4 -0
- defistream-1.0.6.dist-info/licenses/LICENSE +21 -0
defistream/protocols.py
ADDED
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
"""Protocol-specific API clients with builder pattern."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import TYPE_CHECKING, Any
|
|
6
|
+
|
|
7
|
+
from .query import QueryBuilder, AsyncQueryBuilder
|
|
8
|
+
|
|
9
|
+
if TYPE_CHECKING:
|
|
10
|
+
from .client import BaseClient
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ERC20Protocol:
|
|
14
|
+
"""ERC20 token events with builder pattern."""
|
|
15
|
+
|
|
16
|
+
def __init__(self, client: "BaseClient"):
|
|
17
|
+
self._client = client
|
|
18
|
+
|
|
19
|
+
def transfers(self, token: str | None = None) -> QueryBuilder:
|
|
20
|
+
"""
|
|
21
|
+
Start a query for ERC20 transfer events.
|
|
22
|
+
|
|
23
|
+
Args:
|
|
24
|
+
token: Token symbol (USDT, USDC, WETH, etc.) or contract address
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
QueryBuilder for chaining filters
|
|
28
|
+
|
|
29
|
+
Example:
|
|
30
|
+
df = (
|
|
31
|
+
client.erc20.transfers("USDT")
|
|
32
|
+
.network("ETH")
|
|
33
|
+
.block_range(21000000, 21010000)
|
|
34
|
+
.as_df()
|
|
35
|
+
)
|
|
36
|
+
"""
|
|
37
|
+
params = {"token": token} if token else {}
|
|
38
|
+
return QueryBuilder(self._client, "/erc20/events/transfer", params)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class NativeTokenProtocol:
|
|
42
|
+
"""Native token (ETH, MATIC, etc.) events with builder pattern."""
|
|
43
|
+
|
|
44
|
+
def __init__(self, client: "BaseClient"):
|
|
45
|
+
self._client = client
|
|
46
|
+
|
|
47
|
+
def transfers(self) -> QueryBuilder:
|
|
48
|
+
"""
|
|
49
|
+
Start a query for native token transfer events.
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
QueryBuilder for chaining filters
|
|
53
|
+
|
|
54
|
+
Example:
|
|
55
|
+
df = (
|
|
56
|
+
client.native_token.transfers()
|
|
57
|
+
.network("ETH")
|
|
58
|
+
.block_range(21000000, 21010000)
|
|
59
|
+
.min_amount(1.0)
|
|
60
|
+
.as_df()
|
|
61
|
+
)
|
|
62
|
+
"""
|
|
63
|
+
return QueryBuilder(self._client, "/native_token/events/transfer")
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class AAVEProtocol:
|
|
67
|
+
"""AAVE V3 lending protocol events with builder pattern."""
|
|
68
|
+
|
|
69
|
+
def __init__(self, client: "BaseClient"):
|
|
70
|
+
self._client = client
|
|
71
|
+
|
|
72
|
+
def deposits(self) -> QueryBuilder:
|
|
73
|
+
"""Start a query for AAVE deposit/supply events."""
|
|
74
|
+
return QueryBuilder(self._client, "/aave/events/deposit")
|
|
75
|
+
|
|
76
|
+
def withdrawals(self) -> QueryBuilder:
|
|
77
|
+
"""Start a query for AAVE withdrawal events."""
|
|
78
|
+
return QueryBuilder(self._client, "/aave/events/withdraw")
|
|
79
|
+
|
|
80
|
+
def borrows(self) -> QueryBuilder:
|
|
81
|
+
"""Start a query for AAVE borrow events."""
|
|
82
|
+
return QueryBuilder(self._client, "/aave/events/borrow")
|
|
83
|
+
|
|
84
|
+
def repays(self) -> QueryBuilder:
|
|
85
|
+
"""Start a query for AAVE repay events."""
|
|
86
|
+
return QueryBuilder(self._client, "/aave/events/repay")
|
|
87
|
+
|
|
88
|
+
def flashloans(self) -> QueryBuilder:
|
|
89
|
+
"""Start a query for AAVE flash loan events."""
|
|
90
|
+
return QueryBuilder(self._client, "/aave/events/flashloan")
|
|
91
|
+
|
|
92
|
+
def liquidations(self) -> QueryBuilder:
|
|
93
|
+
"""Start a query for AAVE liquidation events."""
|
|
94
|
+
return QueryBuilder(self._client, "/aave/events/liquidation")
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class UniswapProtocol:
|
|
98
|
+
"""Uniswap V3 DEX events with builder pattern."""
|
|
99
|
+
|
|
100
|
+
def __init__(self, client: "BaseClient"):
|
|
101
|
+
self._client = client
|
|
102
|
+
|
|
103
|
+
def swaps(
|
|
104
|
+
self,
|
|
105
|
+
symbol0: str | None = None,
|
|
106
|
+
symbol1: str | None = None,
|
|
107
|
+
fee: int | None = None,
|
|
108
|
+
) -> QueryBuilder:
|
|
109
|
+
"""
|
|
110
|
+
Start a query for Uniswap V3 swap events.
|
|
111
|
+
|
|
112
|
+
Args:
|
|
113
|
+
symbol0: First token symbol (e.g., WETH)
|
|
114
|
+
symbol1: Second token symbol (e.g., USDC)
|
|
115
|
+
fee: Fee tier (100, 500, 3000, 10000)
|
|
116
|
+
|
|
117
|
+
Returns:
|
|
118
|
+
QueryBuilder for chaining filters
|
|
119
|
+
|
|
120
|
+
Example:
|
|
121
|
+
df = (
|
|
122
|
+
client.uniswap.swaps("WETH", "USDC", 500)
|
|
123
|
+
.network("ETH")
|
|
124
|
+
.block_range(21000000, 21010000)
|
|
125
|
+
.as_df()
|
|
126
|
+
)
|
|
127
|
+
"""
|
|
128
|
+
params: dict[str, Any] = {}
|
|
129
|
+
if symbol0:
|
|
130
|
+
params["symbol0"] = symbol0
|
|
131
|
+
if symbol1:
|
|
132
|
+
params["symbol1"] = symbol1
|
|
133
|
+
if fee:
|
|
134
|
+
params["fee"] = fee
|
|
135
|
+
return QueryBuilder(self._client, "/uniswap/events/swap", params)
|
|
136
|
+
|
|
137
|
+
def deposits(
|
|
138
|
+
self,
|
|
139
|
+
symbol0: str | None = None,
|
|
140
|
+
symbol1: str | None = None,
|
|
141
|
+
fee: int | None = None,
|
|
142
|
+
) -> QueryBuilder:
|
|
143
|
+
"""Start a query for Uniswap V3 deposit (add liquidity) events."""
|
|
144
|
+
params: dict[str, Any] = {}
|
|
145
|
+
if symbol0:
|
|
146
|
+
params["symbol0"] = symbol0
|
|
147
|
+
if symbol1:
|
|
148
|
+
params["symbol1"] = symbol1
|
|
149
|
+
if fee:
|
|
150
|
+
params["fee"] = fee
|
|
151
|
+
return QueryBuilder(self._client, "/uniswap/events/deposit", params)
|
|
152
|
+
|
|
153
|
+
def withdrawals(
|
|
154
|
+
self,
|
|
155
|
+
symbol0: str | None = None,
|
|
156
|
+
symbol1: str | None = None,
|
|
157
|
+
fee: int | None = None,
|
|
158
|
+
) -> QueryBuilder:
|
|
159
|
+
"""Start a query for Uniswap V3 withdrawal (remove liquidity) events."""
|
|
160
|
+
params: dict[str, Any] = {}
|
|
161
|
+
if symbol0:
|
|
162
|
+
params["symbol0"] = symbol0
|
|
163
|
+
if symbol1:
|
|
164
|
+
params["symbol1"] = symbol1
|
|
165
|
+
if fee:
|
|
166
|
+
params["fee"] = fee
|
|
167
|
+
return QueryBuilder(self._client, "/uniswap/events/withdraw", params)
|
|
168
|
+
|
|
169
|
+
def collects(
|
|
170
|
+
self,
|
|
171
|
+
symbol0: str | None = None,
|
|
172
|
+
symbol1: str | None = None,
|
|
173
|
+
fee: int | None = None,
|
|
174
|
+
) -> QueryBuilder:
|
|
175
|
+
"""Start a query for Uniswap V3 collect (fee collection) events."""
|
|
176
|
+
params: dict[str, Any] = {}
|
|
177
|
+
if symbol0:
|
|
178
|
+
params["symbol0"] = symbol0
|
|
179
|
+
if symbol1:
|
|
180
|
+
params["symbol1"] = symbol1
|
|
181
|
+
if fee:
|
|
182
|
+
params["fee"] = fee
|
|
183
|
+
return QueryBuilder(self._client, "/uniswap/events/collect", params)
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
class LidoProtocol:
|
|
187
|
+
"""Lido liquid staking events with builder pattern."""
|
|
188
|
+
|
|
189
|
+
def __init__(self, client: "BaseClient"):
|
|
190
|
+
self._client = client
|
|
191
|
+
|
|
192
|
+
# L1 ETH events
|
|
193
|
+
def deposits(self) -> QueryBuilder:
|
|
194
|
+
"""Start a query for Lido stETH deposit events (ETH L1 only)."""
|
|
195
|
+
return QueryBuilder(self._client, "/lido/events/deposit")
|
|
196
|
+
|
|
197
|
+
def withdrawal_requests(self) -> QueryBuilder:
|
|
198
|
+
"""Start a query for Lido withdrawal request events (ETH L1 only)."""
|
|
199
|
+
return QueryBuilder(self._client, "/lido/events/withdrawal_request")
|
|
200
|
+
|
|
201
|
+
def withdrawals_claimed(self) -> QueryBuilder:
|
|
202
|
+
"""Start a query for Lido claimed withdrawal events (ETH L1 only)."""
|
|
203
|
+
return QueryBuilder(self._client, "/lido/events/withdrawal_claimed")
|
|
204
|
+
|
|
205
|
+
# L2 events
|
|
206
|
+
def l2_deposits(self) -> QueryBuilder:
|
|
207
|
+
"""Start a query for Lido L2 deposit events (L2 networks only)."""
|
|
208
|
+
return QueryBuilder(self._client, "/lido/events/l2_deposit")
|
|
209
|
+
|
|
210
|
+
def l2_withdrawal_requests(self) -> QueryBuilder:
|
|
211
|
+
"""Start a query for Lido L2 withdrawal request events (L2 networks only)."""
|
|
212
|
+
return QueryBuilder(self._client, "/lido/events/l2_withdrawal_request")
|
|
213
|
+
|
|
214
|
+
|
|
215
|
+
class StaderProtocol:
|
|
216
|
+
"""Stader ETHx staking events with builder pattern (ETH only)."""
|
|
217
|
+
|
|
218
|
+
def __init__(self, client: "BaseClient"):
|
|
219
|
+
self._client = client
|
|
220
|
+
|
|
221
|
+
def deposits(self) -> QueryBuilder:
|
|
222
|
+
"""Start a query for Stader deposit events."""
|
|
223
|
+
return QueryBuilder(self._client, "/stader/events/deposit")
|
|
224
|
+
|
|
225
|
+
def withdrawal_requests(self) -> QueryBuilder:
|
|
226
|
+
"""Start a query for Stader withdrawal request events."""
|
|
227
|
+
return QueryBuilder(self._client, "/stader/events/withdrawal_request")
|
|
228
|
+
|
|
229
|
+
def withdrawals(self) -> QueryBuilder:
|
|
230
|
+
"""Start a query for Stader withdrawal events."""
|
|
231
|
+
return QueryBuilder(self._client, "/stader/events/withdrawal")
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
class ThresholdProtocol:
|
|
235
|
+
"""Threshold tBTC events with builder pattern (ETH only)."""
|
|
236
|
+
|
|
237
|
+
def __init__(self, client: "BaseClient"):
|
|
238
|
+
self._client = client
|
|
239
|
+
|
|
240
|
+
def deposit_requests(self) -> QueryBuilder:
|
|
241
|
+
"""Start a query for tBTC deposit request (reveal) events."""
|
|
242
|
+
return QueryBuilder(self._client, "/threshold/events/deposit_request")
|
|
243
|
+
|
|
244
|
+
def deposits(self) -> QueryBuilder:
|
|
245
|
+
"""Start a query for tBTC deposit (mint) events."""
|
|
246
|
+
return QueryBuilder(self._client, "/threshold/events/deposit")
|
|
247
|
+
|
|
248
|
+
def withdrawal_requests(self) -> QueryBuilder:
|
|
249
|
+
"""Start a query for tBTC withdrawal request events."""
|
|
250
|
+
return QueryBuilder(self._client, "/threshold/events/withdrawal_request")
|
|
251
|
+
|
|
252
|
+
def withdrawals(self) -> QueryBuilder:
|
|
253
|
+
"""Start a query for tBTC withdrawal (unmint) events."""
|
|
254
|
+
return QueryBuilder(self._client, "/threshold/events/withdrawal")
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
# Async protocol implementations
|
|
258
|
+
class AsyncERC20Protocol:
|
|
259
|
+
"""Async ERC20 token events with builder pattern."""
|
|
260
|
+
|
|
261
|
+
def __init__(self, client: "BaseClient"):
|
|
262
|
+
self._client = client
|
|
263
|
+
|
|
264
|
+
def transfers(self, token: str | None = None) -> AsyncQueryBuilder:
|
|
265
|
+
"""Start a query for ERC20 transfer events."""
|
|
266
|
+
params = {"token": token} if token else {}
|
|
267
|
+
return AsyncQueryBuilder(self._client, "/erc20/events/transfer", params)
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
class AsyncNativeTokenProtocol:
|
|
271
|
+
"""Async native token events with builder pattern."""
|
|
272
|
+
|
|
273
|
+
def __init__(self, client: "BaseClient"):
|
|
274
|
+
self._client = client
|
|
275
|
+
|
|
276
|
+
def transfers(self) -> AsyncQueryBuilder:
|
|
277
|
+
"""Start a query for native token transfer events."""
|
|
278
|
+
return AsyncQueryBuilder(self._client, "/native_token/events/transfer")
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
class AsyncAAVEProtocol:
|
|
282
|
+
"""Async AAVE V3 events with builder pattern."""
|
|
283
|
+
|
|
284
|
+
def __init__(self, client: "BaseClient"):
|
|
285
|
+
self._client = client
|
|
286
|
+
|
|
287
|
+
def deposits(self) -> AsyncQueryBuilder:
|
|
288
|
+
"""Start a query for AAVE deposit/supply events."""
|
|
289
|
+
return AsyncQueryBuilder(self._client, "/aave/events/deposit")
|
|
290
|
+
|
|
291
|
+
def withdrawals(self) -> AsyncQueryBuilder:
|
|
292
|
+
"""Start a query for AAVE withdrawal events."""
|
|
293
|
+
return AsyncQueryBuilder(self._client, "/aave/events/withdraw")
|
|
294
|
+
|
|
295
|
+
def borrows(self) -> AsyncQueryBuilder:
|
|
296
|
+
"""Start a query for AAVE borrow events."""
|
|
297
|
+
return AsyncQueryBuilder(self._client, "/aave/events/borrow")
|
|
298
|
+
|
|
299
|
+
def repays(self) -> AsyncQueryBuilder:
|
|
300
|
+
"""Start a query for AAVE repay events."""
|
|
301
|
+
return AsyncQueryBuilder(self._client, "/aave/events/repay")
|
|
302
|
+
|
|
303
|
+
def flashloans(self) -> AsyncQueryBuilder:
|
|
304
|
+
"""Start a query for AAVE flash loan events."""
|
|
305
|
+
return AsyncQueryBuilder(self._client, "/aave/events/flashloan")
|
|
306
|
+
|
|
307
|
+
def liquidations(self) -> AsyncQueryBuilder:
|
|
308
|
+
"""Start a query for AAVE liquidation events."""
|
|
309
|
+
return AsyncQueryBuilder(self._client, "/aave/events/liquidation")
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class AsyncUniswapProtocol:
|
|
313
|
+
"""Async Uniswap V3 events with builder pattern."""
|
|
314
|
+
|
|
315
|
+
def __init__(self, client: "BaseClient"):
|
|
316
|
+
self._client = client
|
|
317
|
+
|
|
318
|
+
def swaps(
|
|
319
|
+
self,
|
|
320
|
+
symbol0: str | None = None,
|
|
321
|
+
symbol1: str | None = None,
|
|
322
|
+
fee: int | None = None,
|
|
323
|
+
) -> AsyncQueryBuilder:
|
|
324
|
+
"""Start a query for Uniswap V3 swap events."""
|
|
325
|
+
params: dict[str, Any] = {}
|
|
326
|
+
if symbol0:
|
|
327
|
+
params["symbol0"] = symbol0
|
|
328
|
+
if symbol1:
|
|
329
|
+
params["symbol1"] = symbol1
|
|
330
|
+
if fee:
|
|
331
|
+
params["fee"] = fee
|
|
332
|
+
return AsyncQueryBuilder(self._client, "/uniswap/events/swap", params)
|
|
333
|
+
|
|
334
|
+
def deposits(
|
|
335
|
+
self,
|
|
336
|
+
symbol0: str | None = None,
|
|
337
|
+
symbol1: str | None = None,
|
|
338
|
+
fee: int | None = None,
|
|
339
|
+
) -> AsyncQueryBuilder:
|
|
340
|
+
"""Start a query for Uniswap V3 deposit events."""
|
|
341
|
+
params: dict[str, Any] = {}
|
|
342
|
+
if symbol0:
|
|
343
|
+
params["symbol0"] = symbol0
|
|
344
|
+
if symbol1:
|
|
345
|
+
params["symbol1"] = symbol1
|
|
346
|
+
if fee:
|
|
347
|
+
params["fee"] = fee
|
|
348
|
+
return AsyncQueryBuilder(self._client, "/uniswap/events/deposit", params)
|
|
349
|
+
|
|
350
|
+
def withdrawals(
|
|
351
|
+
self,
|
|
352
|
+
symbol0: str | None = None,
|
|
353
|
+
symbol1: str | None = None,
|
|
354
|
+
fee: int | None = None,
|
|
355
|
+
) -> AsyncQueryBuilder:
|
|
356
|
+
"""Start a query for Uniswap V3 withdrawal events."""
|
|
357
|
+
params: dict[str, Any] = {}
|
|
358
|
+
if symbol0:
|
|
359
|
+
params["symbol0"] = symbol0
|
|
360
|
+
if symbol1:
|
|
361
|
+
params["symbol1"] = symbol1
|
|
362
|
+
if fee:
|
|
363
|
+
params["fee"] = fee
|
|
364
|
+
return AsyncQueryBuilder(self._client, "/uniswap/events/withdraw", params)
|
|
365
|
+
|
|
366
|
+
def collects(
|
|
367
|
+
self,
|
|
368
|
+
symbol0: str | None = None,
|
|
369
|
+
symbol1: str | None = None,
|
|
370
|
+
fee: int | None = None,
|
|
371
|
+
) -> AsyncQueryBuilder:
|
|
372
|
+
"""Start a query for Uniswap V3 collect events."""
|
|
373
|
+
params: dict[str, Any] = {}
|
|
374
|
+
if symbol0:
|
|
375
|
+
params["symbol0"] = symbol0
|
|
376
|
+
if symbol1:
|
|
377
|
+
params["symbol1"] = symbol1
|
|
378
|
+
if fee:
|
|
379
|
+
params["fee"] = fee
|
|
380
|
+
return AsyncQueryBuilder(self._client, "/uniswap/events/collect", params)
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
class AsyncLidoProtocol:
|
|
384
|
+
"""Async Lido events with builder pattern."""
|
|
385
|
+
|
|
386
|
+
def __init__(self, client: "BaseClient"):
|
|
387
|
+
self._client = client
|
|
388
|
+
|
|
389
|
+
def deposits(self) -> AsyncQueryBuilder:
|
|
390
|
+
"""Start a query for Lido deposit events (ETH L1 only)."""
|
|
391
|
+
return AsyncQueryBuilder(self._client, "/lido/events/deposit")
|
|
392
|
+
|
|
393
|
+
def withdrawal_requests(self) -> AsyncQueryBuilder:
|
|
394
|
+
"""Start a query for Lido withdrawal request events (ETH L1 only)."""
|
|
395
|
+
return AsyncQueryBuilder(self._client, "/lido/events/withdrawal_request")
|
|
396
|
+
|
|
397
|
+
def withdrawals_claimed(self) -> AsyncQueryBuilder:
|
|
398
|
+
"""Start a query for Lido claimed withdrawal events (ETH L1 only)."""
|
|
399
|
+
return AsyncQueryBuilder(self._client, "/lido/events/withdrawal_claimed")
|
|
400
|
+
|
|
401
|
+
def l2_deposits(self) -> AsyncQueryBuilder:
|
|
402
|
+
"""Start a query for Lido L2 deposit events."""
|
|
403
|
+
return AsyncQueryBuilder(self._client, "/lido/events/l2_deposit")
|
|
404
|
+
|
|
405
|
+
def l2_withdrawal_requests(self) -> AsyncQueryBuilder:
|
|
406
|
+
"""Start a query for Lido L2 withdrawal request events."""
|
|
407
|
+
return AsyncQueryBuilder(self._client, "/lido/events/l2_withdrawal_request")
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
class AsyncStaderProtocol:
|
|
411
|
+
"""Async Stader events with builder pattern."""
|
|
412
|
+
|
|
413
|
+
def __init__(self, client: "BaseClient"):
|
|
414
|
+
self._client = client
|
|
415
|
+
|
|
416
|
+
def deposits(self) -> AsyncQueryBuilder:
|
|
417
|
+
"""Start a query for Stader deposit events."""
|
|
418
|
+
return AsyncQueryBuilder(self._client, "/stader/events/deposit")
|
|
419
|
+
|
|
420
|
+
def withdrawal_requests(self) -> AsyncQueryBuilder:
|
|
421
|
+
"""Start a query for Stader withdrawal request events."""
|
|
422
|
+
return AsyncQueryBuilder(self._client, "/stader/events/withdrawal_request")
|
|
423
|
+
|
|
424
|
+
def withdrawals(self) -> AsyncQueryBuilder:
|
|
425
|
+
"""Start a query for Stader withdrawal events."""
|
|
426
|
+
return AsyncQueryBuilder(self._client, "/stader/events/withdrawal")
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
class AsyncThresholdProtocol:
|
|
430
|
+
"""Async Threshold events with builder pattern."""
|
|
431
|
+
|
|
432
|
+
def __init__(self, client: "BaseClient"):
|
|
433
|
+
self._client = client
|
|
434
|
+
|
|
435
|
+
def deposit_requests(self) -> AsyncQueryBuilder:
|
|
436
|
+
"""Start a query for tBTC deposit request events."""
|
|
437
|
+
return AsyncQueryBuilder(self._client, "/threshold/events/deposit_request")
|
|
438
|
+
|
|
439
|
+
def deposits(self) -> AsyncQueryBuilder:
|
|
440
|
+
"""Start a query for tBTC deposit events."""
|
|
441
|
+
return AsyncQueryBuilder(self._client, "/threshold/events/deposit")
|
|
442
|
+
|
|
443
|
+
def withdrawal_requests(self) -> AsyncQueryBuilder:
|
|
444
|
+
"""Start a query for tBTC withdrawal request events."""
|
|
445
|
+
return AsyncQueryBuilder(self._client, "/threshold/events/withdrawal_request")
|
|
446
|
+
|
|
447
|
+
def withdrawals(self) -> AsyncQueryBuilder:
|
|
448
|
+
"""Start a query for tBTC withdrawal events."""
|
|
449
|
+
return AsyncQueryBuilder(self._client, "/threshold/events/withdrawal")
|
defistream/py.typed
ADDED
|
File without changes
|