1
1
import base64
2
2
import json
3
+ from typing import Any
3
4
import urllib .error
4
5
from urllib import parse
5
6
from urllib .request import Request , urlopen
@@ -66,32 +67,37 @@ def kmd_request(self, method, requrl, params=None, data=None, timeout=30):
66
67
raise error .KMDHTTPError (e )
67
68
return json .loads (resp .read ().decode ("utf-8" ))
68
69
69
- def versions (self ):
70
+ def versions (self , ** kwargs : Any ):
70
71
"""
71
72
Get kmd versions.
72
73
73
74
Returns:
74
75
str[]: list of versions
75
76
"""
76
77
req = "/versions"
77
- return self .kmd_request ("GET" , req )["versions" ]
78
+ return self .kmd_request ("GET" , req , ** kwargs )["versions" ]
78
79
79
- def list_wallets (self ):
80
+ def list_wallets (self , ** kwargs : Any ):
80
81
"""
81
82
List all wallets hosted on node.
82
83
83
84
Returns:
84
85
dict[]: list of dictionaries containing wallet information
85
86
"""
86
87
req = "/wallets"
87
- res = self .kmd_request ("GET" , req )
88
+ res = self .kmd_request ("GET" , req , ** kwargs )
88
89
if "wallets" in res :
89
90
return res ["wallets" ]
90
91
else :
91
92
return []
92
93
93
94
def create_wallet (
94
- self , name , pswd , driver_name = "sqlite" , master_deriv_key = None
95
+ self ,
96
+ name ,
97
+ pswd ,
98
+ driver_name = "sqlite" ,
99
+ master_deriv_key = None ,
100
+ ** kwargs : Any
95
101
):
96
102
"""
97
103
Create a new wallet.
@@ -113,9 +119,9 @@ def create_wallet(
113
119
}
114
120
if master_deriv_key :
115
121
query ["master_derivation_key" ] = master_deriv_key
116
- return self .kmd_request ("POST" , req , data = query )["wallet" ]
122
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )["wallet" ]
117
123
118
- def get_wallet (self , handle ):
124
+ def get_wallet (self , handle , ** kwargs : Any ):
119
125
"""
120
126
Get wallet information.
121
127
@@ -127,9 +133,11 @@ def get_wallet(self, handle):
127
133
"""
128
134
req = "/wallet/info"
129
135
query = {"wallet_handle_token" : handle }
130
- return self .kmd_request ("POST" , req , data = query )["wallet_handle" ]
136
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )[
137
+ "wallet_handle"
138
+ ]
131
139
132
- def init_wallet_handle (self , id , password ):
140
+ def init_wallet_handle (self , id , password , ** kwargs : Any ):
133
141
"""
134
142
Initialize a handle for the wallet.
135
143
@@ -142,9 +150,11 @@ def init_wallet_handle(self, id, password):
142
150
"""
143
151
req = "/wallet/init"
144
152
query = {"wallet_id" : id , "wallet_password" : password }
145
- return self .kmd_request ("POST" , req , data = query )["wallet_handle_token" ]
153
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )[
154
+ "wallet_handle_token"
155
+ ]
146
156
147
- def release_wallet_handle (self , handle ):
157
+ def release_wallet_handle (self , handle , ** kwargs : Any ):
148
158
"""
149
159
Deactivate the handle for the wallet.
150
160
@@ -156,10 +166,10 @@ def release_wallet_handle(self, handle):
156
166
"""
157
167
req = "/wallet/release"
158
168
query = {"wallet_handle_token" : handle }
159
- result = self .kmd_request ("POST" , req , data = query )
169
+ result = self .kmd_request ("POST" , req , data = query , ** kwargs )
160
170
return result == {}
161
171
162
- def renew_wallet_handle (self , handle ):
172
+ def renew_wallet_handle (self , handle , ** kwargs : Any ):
163
173
"""
164
174
Renew the wallet handle.
165
175
@@ -171,9 +181,11 @@ def renew_wallet_handle(self, handle):
171
181
"""
172
182
req = "/wallet/renew"
173
183
query = {"wallet_handle_token" : handle }
174
- return self .kmd_request ("POST" , req , data = query )["wallet_handle" ]
184
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )[
185
+ "wallet_handle"
186
+ ]
175
187
176
- def rename_wallet (self , id , password , new_name ):
188
+ def rename_wallet (self , id , password , new_name , ** kwargs : Any ):
177
189
"""
178
190
Rename the wallet.
179
191
@@ -191,9 +203,9 @@ def rename_wallet(self, id, password, new_name):
191
203
"wallet_password" : password ,
192
204
"wallet_name" : new_name ,
193
205
}
194
- return self .kmd_request ("POST" , req , data = query )["wallet" ]
206
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )["wallet" ]
195
207
196
- def export_master_derivation_key (self , handle , password ):
208
+ def export_master_derivation_key (self , handle , password , ** kwargs : Any ):
197
209
"""
198
210
Get the wallet's master derivation key.
199
211
@@ -206,10 +218,10 @@ def export_master_derivation_key(self, handle, password):
206
218
"""
207
219
req = "/master-key/export"
208
220
query = {"wallet_handle_token" : handle , "wallet_password" : password }
209
- result = self .kmd_request ("POST" , req , data = query )
221
+ result = self .kmd_request ("POST" , req , data = query , ** kwargs )
210
222
return result ["master_derivation_key" ]
211
223
212
- def import_key (self , handle , private_key ):
224
+ def import_key (self , handle , private_key , ** kwargs : Any ):
213
225
"""
214
226
Import an account into the wallet.
215
227
@@ -222,9 +234,9 @@ def import_key(self, handle, private_key):
222
234
"""
223
235
req = "/key/import"
224
236
query = {"wallet_handle_token" : handle , "private_key" : private_key }
225
- return self .kmd_request ("POST" , req , data = query )["address" ]
237
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )["address" ]
226
238
227
- def export_key (self , handle , password , address ):
239
+ def export_key (self , handle , password , address , ** kwargs : Any ):
228
240
"""
229
241
Return an account private key.
230
242
@@ -242,9 +254,11 @@ def export_key(self, handle, password, address):
242
254
"wallet_password" : password ,
243
255
"address" : address ,
244
256
}
245
- return self .kmd_request ("POST" , req , data = query )["private_key" ]
257
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )[
258
+ "private_key"
259
+ ]
246
260
247
- def generate_key (self , handle , display_mnemonic = True ):
261
+ def generate_key (self , handle , display_mnemonic = True , ** kwargs : Any ):
248
262
"""
249
263
Generate a key in the wallet.
250
264
@@ -258,9 +272,9 @@ def generate_key(self, handle, display_mnemonic=True):
258
272
"""
259
273
req = "/key"
260
274
query = {"wallet_handle_token" : handle }
261
- return self .kmd_request ("POST" , req , data = query )["address" ]
275
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )["address" ]
262
276
263
- def delete_key (self , handle , password , address ):
277
+ def delete_key (self , handle , password , address , ** kwargs : Any ):
264
278
"""
265
279
Delete a key in the wallet.
266
280
@@ -278,10 +292,10 @@ def delete_key(self, handle, password, address):
278
292
"wallet_password" : password ,
279
293
"address" : address ,
280
294
}
281
- result = self .kmd_request ("DELETE" , req , data = query )
295
+ result = self .kmd_request ("DELETE" , req , data = query , ** kwargs )
282
296
return result == {}
283
297
284
- def list_keys (self , handle ):
298
+ def list_keys (self , handle , ** kwargs : Any ):
285
299
"""
286
300
List all keys in the wallet.
287
301
@@ -294,12 +308,14 @@ def list_keys(self, handle):
294
308
req = "/key/list"
295
309
query = {"wallet_handle_token" : handle }
296
310
297
- result = self .kmd_request ("POST" , req , data = query )
311
+ result = self .kmd_request ("POST" , req , data = query , ** kwargs )
298
312
if result :
299
313
return result ["addresses" ]
300
314
return []
301
315
302
- def sign_transaction (self , handle , password , txn , signing_address = None ):
316
+ def sign_transaction (
317
+ self , handle , password , txn , signing_address = None , ** kwargs : Any
318
+ ):
303
319
"""
304
320
Sign a transaction.
305
321
@@ -322,11 +338,11 @@ def sign_transaction(self, handle, password, txn, signing_address=None):
322
338
}
323
339
if signing_address :
324
340
query ["public_key" ] = signing_address
325
- result = self .kmd_request ("POST" , req , data = query )
341
+ result = self .kmd_request ("POST" , req , data = query , ** kwargs )
326
342
result = result ["signed_transaction" ]
327
343
return encoding .msgpack_decode (result )
328
344
329
- def list_multisig (self , handle ):
345
+ def list_multisig (self , handle , ** kwargs : Any ):
330
346
"""
331
347
List all multisig accounts in the wallet.
332
348
@@ -338,12 +354,12 @@ def list_multisig(self, handle):
338
354
"""
339
355
req = "/multisig/list"
340
356
query = {"wallet_handle_token" : handle }
341
- result = self .kmd_request ("POST" , req , data = query )
357
+ result = self .kmd_request ("POST" , req , data = query , ** kwargs )
342
358
if result == {}:
343
359
return []
344
360
return result ["addresses" ]
345
361
346
- def import_multisig (self , handle , multisig ):
362
+ def import_multisig (self , handle , multisig , ** kwargs : Any ):
347
363
"""
348
364
Import a multisig account into the wallet.
349
365
@@ -364,9 +380,9 @@ def import_multisig(self, handle, multisig):
364
380
for s in multisig .subsigs
365
381
],
366
382
}
367
- return self .kmd_request ("POST" , req , data = query )["address" ]
383
+ return self .kmd_request ("POST" , req , data = query , ** kwargs )["address" ]
368
384
369
- def export_multisig (self , handle , address ):
385
+ def export_multisig (self , handle , address , ** kwargs : Any ):
370
386
"""
371
387
Export a multisig account.
372
388
@@ -379,15 +395,15 @@ def export_multisig(self, handle, address):
379
395
"""
380
396
req = "/multisig/export"
381
397
query = {"wallet_handle_token" : handle , "address" : address }
382
- result = self .kmd_request ("POST" , req , data = query )
398
+ result = self .kmd_request ("POST" , req , data = query , ** kwargs )
383
399
pks = result ["pks" ]
384
400
pks = [encoding .encode_address (base64 .b64decode (p )) for p in pks ]
385
401
msig = transaction .Multisig (
386
402
result ["multisig_version" ], result ["threshold" ], pks
387
403
)
388
404
return msig
389
405
390
- def delete_multisig (self , handle , password , address ):
406
+ def delete_multisig (self , handle , password , address , ** kwargs : Any ):
391
407
"""
392
408
Delete a multisig account.
393
409
@@ -405,10 +421,12 @@ def delete_multisig(self, handle, password, address):
405
421
"wallet_password" : password ,
406
422
"address" : address ,
407
423
}
408
- result = self .kmd_request ("DELETE" , req , data = query )
424
+ result = self .kmd_request ("DELETE" , req , data = query , ** kwargs )
409
425
return result == {}
410
426
411
- def sign_multisig_transaction (self , handle , password , public_key , mtx ):
427
+ def sign_multisig_transaction (
428
+ self , handle , password , public_key , mtx , ** kwargs : Any
429
+ ):
412
430
"""
413
431
Sign a multisig transaction for the given public key.
414
432
@@ -439,7 +457,9 @@ def sign_multisig_transaction(self, handle, password, public_key, mtx):
439
457
signer = base64 .b64encode (encoding .decode_address (mtx .auth_addr ))
440
458
query ["signer" ] = signer .decode ()
441
459
442
- result = self .kmd_request ("POST" , req , data = query )["multisig" ]
460
+ result = self .kmd_request ("POST" , req , data = query , ** kwargs )[
461
+ "multisig"
462
+ ]
443
463
msig = encoding .msgpack_decode (result )
444
464
mtx .multisig = msig
445
465
return mtx
0 commit comments