bitmart 0.0.116__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 (466) hide show
  1. bitmart/__init__.py +7 -0
  2. bitmart/ccxt/__init__.py +102 -0
  3. bitmart/ccxt/abstract/bitmart.py +117 -0
  4. bitmart/ccxt/async_support/__init__.py +81 -0
  5. bitmart/ccxt/async_support/base/__init__.py +1 -0
  6. bitmart/ccxt/async_support/base/exchange.py +2315 -0
  7. bitmart/ccxt/async_support/base/throttler.py +88 -0
  8. bitmart/ccxt/async_support/base/ws/__init__.py +38 -0
  9. bitmart/ccxt/async_support/base/ws/cache.py +219 -0
  10. bitmart/ccxt/async_support/base/ws/client.py +350 -0
  11. bitmart/ccxt/async_support/base/ws/functions.py +59 -0
  12. bitmart/ccxt/async_support/base/ws/future.py +46 -0
  13. bitmart/ccxt/async_support/base/ws/order_book.py +78 -0
  14. bitmart/ccxt/async_support/base/ws/order_book_side.py +174 -0
  15. bitmart/ccxt/async_support/bitmart.py +5361 -0
  16. bitmart/ccxt/base/__init__.py +27 -0
  17. bitmart/ccxt/base/decimal_to_precision.py +178 -0
  18. bitmart/ccxt/base/errors.py +273 -0
  19. bitmart/ccxt/base/exchange.py +7642 -0
  20. bitmart/ccxt/base/precise.py +297 -0
  21. bitmart/ccxt/base/types.py +619 -0
  22. bitmart/ccxt/bitmart.py +5361 -0
  23. bitmart/ccxt/pro/__init__.py +66 -0
  24. bitmart/ccxt/pro/bitmart.py +1917 -0
  25. bitmart/ccxt/static_dependencies/README.md +1 -0
  26. bitmart/ccxt/static_dependencies/__init__.py +1 -0
  27. bitmart/ccxt/static_dependencies/bip/__init__.py +6 -0
  28. bitmart/ccxt/static_dependencies/bip/addr/P2PKH_addr.py +205 -0
  29. bitmart/ccxt/static_dependencies/bip/addr/__init__.py +5 -0
  30. bitmart/ccxt/static_dependencies/bip/addr/addr_dec_utils.py +125 -0
  31. bitmart/ccxt/static_dependencies/bip/addr/addr_key_validator.py +162 -0
  32. bitmart/ccxt/static_dependencies/bip/addr/iaddr_decoder.py +48 -0
  33. bitmart/ccxt/static_dependencies/bip/addr/iaddr_encoder.py +50 -0
  34. bitmart/ccxt/static_dependencies/bip/base58/__init__.py +3 -0
  35. bitmart/ccxt/static_dependencies/bip/base58/base58.py +207 -0
  36. bitmart/ccxt/static_dependencies/bip/base58/base58_ex.py +25 -0
  37. bitmart/ccxt/static_dependencies/bip/base58/base58_xmr.py +155 -0
  38. bitmart/ccxt/static_dependencies/bip/bech32/__init__.py +4 -0
  39. bitmart/ccxt/static_dependencies/bip/bech32/bch_bech32.py +220 -0
  40. bitmart/ccxt/static_dependencies/bip/bech32/bech32.py +235 -0
  41. bitmart/ccxt/static_dependencies/bip/bech32/bech32_base.py +246 -0
  42. bitmart/ccxt/static_dependencies/bip/bech32/bech32_ex.py +25 -0
  43. bitmart/ccxt/static_dependencies/bip/bech32/segwit_bech32.py +173 -0
  44. bitmart/ccxt/static_dependencies/bip/bip32/__init__.py +14 -0
  45. bitmart/ccxt/static_dependencies/bip/bip32/base/__init__.py +3 -0
  46. bitmart/ccxt/static_dependencies/bip/bip32/base/bip32_base.py +581 -0
  47. bitmart/ccxt/static_dependencies/bip/bip32/base/ibip32_key_derivator.py +83 -0
  48. bitmart/ccxt/static_dependencies/bip/bip32/base/ibip32_mst_key_generator.py +47 -0
  49. bitmart/ccxt/static_dependencies/bip/bip32/bip32_const.py +35 -0
  50. bitmart/ccxt/static_dependencies/bip/bip32/bip32_ex.py +29 -0
  51. bitmart/ccxt/static_dependencies/bip/bip32/bip32_key_data.py +500 -0
  52. bitmart/ccxt/static_dependencies/bip/bip32/bip32_key_net_ver.py +83 -0
  53. bitmart/ccxt/static_dependencies/bip/bip32/bip32_key_ser.py +294 -0
  54. bitmart/ccxt/static_dependencies/bip/bip32/bip32_keys.py +457 -0
  55. bitmart/ccxt/static_dependencies/bip/bip32/bip32_path.py +247 -0
  56. bitmart/ccxt/static_dependencies/bip/bip32/bip32_utils.py +72 -0
  57. bitmart/ccxt/static_dependencies/bip/bip32/kholaw/__init__.py +4 -0
  58. bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_ed25519.py +82 -0
  59. bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_ed25519_key_derivator.py +118 -0
  60. bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_key_derivator_base.py +204 -0
  61. bitmart/ccxt/static_dependencies/bip/bip32/kholaw/bip32_kholaw_mst_key_generator.py +119 -0
  62. bitmart/ccxt/static_dependencies/bip/bip32/slip10/__init__.py +1 -0
  63. bitmart/ccxt/static_dependencies/bip/bip32/slip10/bip32_slip10_key_derivator.py +200 -0
  64. bitmart/ccxt/static_dependencies/bip/bip32/slip10/bip32_slip10_mst_key_generator.py +168 -0
  65. bitmart/ccxt/static_dependencies/bip/bip32/slip10/bip32_slip10_secp256k1.py +82 -0
  66. bitmart/ccxt/static_dependencies/bip/bip44/__init__.py +1 -0
  67. bitmart/ccxt/static_dependencies/bip/bip44/bip44.py +265 -0
  68. bitmart/ccxt/static_dependencies/bip/bip44_base/__init__.py +3 -0
  69. bitmart/ccxt/static_dependencies/bip/bip44_base/bip44_base.py +624 -0
  70. bitmart/ccxt/static_dependencies/bip/bip44_base/bip44_base_ex.py +25 -0
  71. bitmart/ccxt/static_dependencies/bip/bip44_base/bip44_keys.py +225 -0
  72. bitmart/ccxt/static_dependencies/bip/coin_conf/__init__.py +2 -0
  73. bitmart/ccxt/static_dependencies/bip/coin_conf/coin_conf.py +68 -0
  74. bitmart/ccxt/static_dependencies/bip/coin_conf/coins_conf.py +890 -0
  75. bitmart/ccxt/static_dependencies/bip/conf/__init__.py +0 -0
  76. bitmart/ccxt/static_dependencies/bip/conf/bip44/__init__.py +3 -0
  77. bitmart/ccxt/static_dependencies/bip/conf/bip44/bip44_coins.py +126 -0
  78. bitmart/ccxt/static_dependencies/bip/conf/bip44/bip44_conf.py +1360 -0
  79. bitmart/ccxt/static_dependencies/bip/conf/bip44/bip44_conf_getter.py +153 -0
  80. bitmart/ccxt/static_dependencies/bip/conf/bip49/__init__.py +3 -0
  81. bitmart/ccxt/static_dependencies/bip/conf/bip49/bip49_coins.py +53 -0
  82. bitmart/ccxt/static_dependencies/bip/conf/bip49/bip49_conf.py +366 -0
  83. bitmart/ccxt/static_dependencies/bip/conf/bip49/bip49_conf_getter.py +80 -0
  84. bitmart/ccxt/static_dependencies/bip/conf/bip84/__init__.py +3 -0
  85. bitmart/ccxt/static_dependencies/bip/conf/bip84/bip84_coins.py +39 -0
  86. bitmart/ccxt/static_dependencies/bip/conf/bip84/bip84_conf.py +113 -0
  87. bitmart/ccxt/static_dependencies/bip/conf/bip84/bip84_conf_getter.py +66 -0
  88. bitmart/ccxt/static_dependencies/bip/conf/bip86/__init__.py +3 -0
  89. bitmart/ccxt/static_dependencies/bip/conf/bip86/bip86_coins.py +37 -0
  90. bitmart/ccxt/static_dependencies/bip/conf/bip86/bip86_conf.py +83 -0
  91. bitmart/ccxt/static_dependencies/bip/conf/bip86/bip86_conf_getter.py +64 -0
  92. bitmart/ccxt/static_dependencies/bip/conf/common/__init__.py +8 -0
  93. bitmart/ccxt/static_dependencies/bip/conf/common/atom_addr.py +104 -0
  94. bitmart/ccxt/static_dependencies/bip/conf/common/bip_bitcoin_cash_conf.py +106 -0
  95. bitmart/ccxt/static_dependencies/bip/conf/common/bip_coin_conf.py +217 -0
  96. bitmart/ccxt/static_dependencies/bip/conf/common/bip_coins.py +28 -0
  97. bitmart/ccxt/static_dependencies/bip/conf/common/bip_conf_const.py +30 -0
  98. bitmart/ccxt/static_dependencies/bip/conf/common/bip_litecoin_conf.py +121 -0
  99. bitmart/ccxt/static_dependencies/bip/ecc/__init__.py +42 -0
  100. bitmart/ccxt/static_dependencies/bip/ecc/common/__init__.py +0 -0
  101. bitmart/ccxt/static_dependencies/bip/ecc/common/dummy_point.py +219 -0
  102. bitmart/ccxt/static_dependencies/bip/ecc/common/ikeys.py +263 -0
  103. bitmart/ccxt/static_dependencies/bip/ecc/common/ipoint.py +190 -0
  104. bitmart/ccxt/static_dependencies/bip/ecc/conf.py +28 -0
  105. bitmart/ccxt/static_dependencies/bip/ecc/curve/__init__.py +0 -0
  106. bitmart/ccxt/static_dependencies/bip/ecc/curve/elliptic_curve.py +121 -0
  107. bitmart/ccxt/static_dependencies/bip/ecc/curve/elliptic_curve_getter.py +74 -0
  108. bitmart/ccxt/static_dependencies/bip/ecc/curve/elliptic_curve_types.py +37 -0
  109. bitmart/ccxt/static_dependencies/bip/ecc/ecdsa/__init__.py +0 -0
  110. bitmart/ccxt/static_dependencies/bip/ecc/ecdsa/ecdsa_keys.py +36 -0
  111. bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/__init__.py +0 -0
  112. bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1.py +36 -0
  113. bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1_const.py +59 -0
  114. bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1_keys_ecdsa.py +248 -0
  115. bitmart/ccxt/static_dependencies/bip/ecc/secp256k1/secp256k1_point_ecdsa.py +234 -0
  116. bitmart/ccxt/static_dependencies/bip/slip/__init__.py +0 -0
  117. bitmart/ccxt/static_dependencies/bip/slip/slip173/__init__.py +1 -0
  118. bitmart/ccxt/static_dependencies/bip/slip/slip173/slip173.py +60 -0
  119. bitmart/ccxt/static_dependencies/bip/slip/slip32/__init__.py +4 -0
  120. bitmart/ccxt/static_dependencies/bip/slip/slip32/slip32.py +322 -0
  121. bitmart/ccxt/static_dependencies/bip/slip/slip32/slip32_key_net_ver.py +62 -0
  122. bitmart/ccxt/static_dependencies/bip/slip/slip44/__init__.py +1 -0
  123. bitmart/ccxt/static_dependencies/bip/slip/slip44/slip44.py +81 -0
  124. bitmart/ccxt/static_dependencies/bip/utils/__init__.py +0 -0
  125. bitmart/ccxt/static_dependencies/bip/utils/conf/__init__.py +1 -0
  126. bitmart/ccxt/static_dependencies/bip/utils/conf/coin_names.py +59 -0
  127. bitmart/ccxt/static_dependencies/bip/utils/crypto/__init__.py +10 -0
  128. bitmart/ccxt/static_dependencies/bip/utils/crypto/aes_ecb.py +152 -0
  129. bitmart/ccxt/static_dependencies/bip/utils/crypto/blake2.py +191 -0
  130. bitmart/ccxt/static_dependencies/bip/utils/crypto/chacha20_poly1305.py +101 -0
  131. bitmart/ccxt/static_dependencies/bip/utils/crypto/hash160.py +57 -0
  132. bitmart/ccxt/static_dependencies/bip/utils/crypto/hmac.py +118 -0
  133. bitmart/ccxt/static_dependencies/bip/utils/crypto/pbkdf2.py +66 -0
  134. bitmart/ccxt/static_dependencies/bip/utils/crypto/ripemd.py +58 -0
  135. bitmart/ccxt/static_dependencies/bip/utils/crypto/scrypt.py +66 -0
  136. bitmart/ccxt/static_dependencies/bip/utils/crypto/sha2.py +182 -0
  137. bitmart/ccxt/static_dependencies/bip/utils/crypto/sha3.py +99 -0
  138. bitmart/ccxt/static_dependencies/bip/utils/misc/__init__.py +7 -0
  139. bitmart/ccxt/static_dependencies/bip/utils/misc/algo.py +108 -0
  140. bitmart/ccxt/static_dependencies/bip/utils/misc/base32.py +151 -0
  141. bitmart/ccxt/static_dependencies/bip/utils/misc/bit.py +115 -0
  142. bitmart/ccxt/static_dependencies/bip/utils/misc/bytes.py +200 -0
  143. bitmart/ccxt/static_dependencies/bip/utils/misc/data_bytes.py +181 -0
  144. bitmart/ccxt/static_dependencies/bip/utils/misc/integer.py +97 -0
  145. bitmart/ccxt/static_dependencies/bip/utils/misc/string.py +54 -0
  146. bitmart/ccxt/static_dependencies/bip/utils/typing/__init__.py +1 -0
  147. bitmart/ccxt/static_dependencies/bip/utils/typing/literal.py +27 -0
  148. bitmart/ccxt/static_dependencies/bip/wif/__init__.py +1 -0
  149. bitmart/ccxt/static_dependencies/bip/wif/wif.py +144 -0
  150. bitmart/ccxt/static_dependencies/dydx_v4_client/amino/amino_pb2.py +31 -0
  151. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/base/v1beta1/coin_pb2.py +47 -0
  152. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/crypto/multisig/keys_pb2.py +33 -0
  153. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/crypto/multisig/v1beta1/multisig_pb2.py +33 -0
  154. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/crypto/secp256k1/keys_pb2.py +34 -0
  155. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/msg/v1/msg_pb2.py +27 -0
  156. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/tx/signing/v1beta1/signing_pb2.py +38 -0
  157. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos/tx/v1beta1/tx_pb2.py +75 -0
  158. bitmart/ccxt/static_dependencies/dydx_v4_client/cosmos_proto/cosmos_pb2.py +36 -0
  159. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/accountplus_pb2.py +31 -0
  160. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/genesis_pb2.py +40 -0
  161. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/models_pb2.py +26 -0
  162. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/params_pb2.py +29 -0
  163. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/query_pb2.py +57 -0
  164. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/accountplus/tx_pb2.py +51 -0
  165. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/block_rate_limit_config_pb2.py +37 -0
  166. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/clob_pair_pb2.py +41 -0
  167. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/equity_tier_limit_config_pb2.py +35 -0
  168. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/finalize_block_pb2.py +27 -0
  169. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/liquidations_config_pb2.py +39 -0
  170. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/liquidations_pb2.py +38 -0
  171. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/matches_pb2.py +55 -0
  172. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/mev_pb2.py +49 -0
  173. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/operation_pb2.py +32 -0
  174. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/order_pb2.py +86 -0
  175. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/order_removals_pb2.py +32 -0
  176. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/process_proposer_matches_events_pb2.py +42 -0
  177. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/query_pb2.py +124 -0
  178. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/streaming_pb2.py +29 -0
  179. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/clob/tx_pb2.py +117 -0
  180. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/genesis_pb2.py +26 -0
  181. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/query_pb2.py +26 -0
  182. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/transfer_pb2.py +61 -0
  183. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/sending/tx_pb2.py +37 -0
  184. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/asset_position_pb2.py +29 -0
  185. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/genesis_pb2.py +30 -0
  186. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/perpetual_position_pb2.py +33 -0
  187. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/query_pb2.py +63 -0
  188. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/streaming_pb2.py +31 -0
  189. bitmart/ccxt/static_dependencies/dydx_v4_client/dydxprotocol/subaccounts/subaccount_pb2.py +33 -0
  190. bitmart/ccxt/static_dependencies/dydx_v4_client/gogoproto/gogo_pb2.py +102 -0
  191. bitmart/ccxt/static_dependencies/dydx_v4_client/registry.py +38 -0
  192. bitmart/ccxt/static_dependencies/ecdsa/__init__.py +14 -0
  193. bitmart/ccxt/static_dependencies/ecdsa/_version.py +520 -0
  194. bitmart/ccxt/static_dependencies/ecdsa/curves.py +56 -0
  195. bitmart/ccxt/static_dependencies/ecdsa/der.py +221 -0
  196. bitmart/ccxt/static_dependencies/ecdsa/ecdsa.py +310 -0
  197. bitmart/ccxt/static_dependencies/ecdsa/ellipticcurve.py +1039 -0
  198. bitmart/ccxt/static_dependencies/ecdsa/keys.py +343 -0
  199. bitmart/ccxt/static_dependencies/ecdsa/numbertheory.py +531 -0
  200. bitmart/ccxt/static_dependencies/ecdsa/rfc6979.py +100 -0
  201. bitmart/ccxt/static_dependencies/ecdsa/util.py +266 -0
  202. bitmart/ccxt/static_dependencies/ethereum/__init__.py +7 -0
  203. bitmart/ccxt/static_dependencies/ethereum/abi/__init__.py +16 -0
  204. bitmart/ccxt/static_dependencies/ethereum/abi/abi.py +19 -0
  205. bitmart/ccxt/static_dependencies/ethereum/abi/base.py +152 -0
  206. bitmart/ccxt/static_dependencies/ethereum/abi/codec.py +217 -0
  207. bitmart/ccxt/static_dependencies/ethereum/abi/constants.py +3 -0
  208. bitmart/ccxt/static_dependencies/ethereum/abi/decoding.py +565 -0
  209. bitmart/ccxt/static_dependencies/ethereum/abi/encoding.py +720 -0
  210. bitmart/ccxt/static_dependencies/ethereum/abi/exceptions.py +139 -0
  211. bitmart/ccxt/static_dependencies/ethereum/abi/grammar.py +443 -0
  212. bitmart/ccxt/static_dependencies/ethereum/abi/packed.py +13 -0
  213. bitmart/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  214. bitmart/ccxt/static_dependencies/ethereum/abi/registry.py +643 -0
  215. bitmart/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +3 -0
  216. bitmart/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +230 -0
  217. bitmart/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  218. bitmart/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +83 -0
  219. bitmart/ccxt/static_dependencies/ethereum/abi/utils/padding.py +27 -0
  220. bitmart/ccxt/static_dependencies/ethereum/abi/utils/string.py +19 -0
  221. bitmart/ccxt/static_dependencies/ethereum/account/__init__.py +3 -0
  222. bitmart/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +4 -0
  223. bitmart/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +239 -0
  224. bitmart/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +40 -0
  225. bitmart/ccxt/static_dependencies/ethereum/account/messages.py +263 -0
  226. bitmart/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  227. bitmart/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +5 -0
  228. bitmart/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +54 -0
  229. bitmart/ccxt/static_dependencies/ethereum/hexbytes/main.py +65 -0
  230. bitmart/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  231. bitmart/ccxt/static_dependencies/ethereum/typing/__init__.py +63 -0
  232. bitmart/ccxt/static_dependencies/ethereum/typing/abi.py +6 -0
  233. bitmart/ccxt/static_dependencies/ethereum/typing/bls.py +7 -0
  234. bitmart/ccxt/static_dependencies/ethereum/typing/discovery.py +5 -0
  235. bitmart/ccxt/static_dependencies/ethereum/typing/encoding.py +7 -0
  236. bitmart/ccxt/static_dependencies/ethereum/typing/enums.py +17 -0
  237. bitmart/ccxt/static_dependencies/ethereum/typing/ethpm.py +9 -0
  238. bitmart/ccxt/static_dependencies/ethereum/typing/evm.py +20 -0
  239. bitmart/ccxt/static_dependencies/ethereum/typing/networks.py +1122 -0
  240. bitmart/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  241. bitmart/ccxt/static_dependencies/ethereum/utils/__init__.py +115 -0
  242. bitmart/ccxt/static_dependencies/ethereum/utils/abi.py +72 -0
  243. bitmart/ccxt/static_dependencies/ethereum/utils/address.py +171 -0
  244. bitmart/ccxt/static_dependencies/ethereum/utils/applicators.py +151 -0
  245. bitmart/ccxt/static_dependencies/ethereum/utils/conversions.py +190 -0
  246. bitmart/ccxt/static_dependencies/ethereum/utils/currency.py +107 -0
  247. bitmart/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +269 -0
  248. bitmart/ccxt/static_dependencies/ethereum/utils/debug.py +20 -0
  249. bitmart/ccxt/static_dependencies/ethereum/utils/decorators.py +132 -0
  250. bitmart/ccxt/static_dependencies/ethereum/utils/encoding.py +6 -0
  251. bitmart/ccxt/static_dependencies/ethereum/utils/exceptions.py +4 -0
  252. bitmart/ccxt/static_dependencies/ethereum/utils/functional.py +75 -0
  253. bitmart/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +74 -0
  254. bitmart/ccxt/static_dependencies/ethereum/utils/humanize.py +188 -0
  255. bitmart/ccxt/static_dependencies/ethereum/utils/logging.py +159 -0
  256. bitmart/ccxt/static_dependencies/ethereum/utils/module_loading.py +31 -0
  257. bitmart/ccxt/static_dependencies/ethereum/utils/numeric.py +43 -0
  258. bitmart/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  259. bitmart/ccxt/static_dependencies/ethereum/utils/toolz.py +76 -0
  260. bitmart/ccxt/static_dependencies/ethereum/utils/types.py +54 -0
  261. bitmart/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +18 -0
  262. bitmart/ccxt/static_dependencies/ethereum/utils/typing/misc.py +14 -0
  263. bitmart/ccxt/static_dependencies/ethereum/utils/units.py +31 -0
  264. bitmart/ccxt/static_dependencies/keccak/__init__.py +3 -0
  265. bitmart/ccxt/static_dependencies/keccak/keccak.py +197 -0
  266. bitmart/ccxt/static_dependencies/lark/__init__.py +38 -0
  267. bitmart/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  268. bitmart/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  269. bitmart/ccxt/static_dependencies/lark/ast_utils.py +59 -0
  270. bitmart/ccxt/static_dependencies/lark/common.py +86 -0
  271. bitmart/ccxt/static_dependencies/lark/exceptions.py +292 -0
  272. bitmart/ccxt/static_dependencies/lark/grammar.py +130 -0
  273. bitmart/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  274. bitmart/ccxt/static_dependencies/lark/grammars/common.lark +59 -0
  275. bitmart/ccxt/static_dependencies/lark/grammars/lark.lark +62 -0
  276. bitmart/ccxt/static_dependencies/lark/grammars/python.lark +302 -0
  277. bitmart/ccxt/static_dependencies/lark/grammars/unicode.lark +7 -0
  278. bitmart/ccxt/static_dependencies/lark/indenter.py +143 -0
  279. bitmart/ccxt/static_dependencies/lark/lark.py +658 -0
  280. bitmart/ccxt/static_dependencies/lark/lexer.py +678 -0
  281. bitmart/ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  282. bitmart/ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  283. bitmart/ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  284. bitmart/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  285. bitmart/ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  286. bitmart/ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  287. bitmart/ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  288. bitmart/ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  289. bitmart/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  290. bitmart/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  291. bitmart/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  292. bitmart/ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  293. bitmart/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  294. bitmart/ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  295. bitmart/ccxt/static_dependencies/lark/py.typed +0 -0
  296. bitmart/ccxt/static_dependencies/lark/reconstruct.py +107 -0
  297. bitmart/ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  298. bitmart/ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  299. bitmart/ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  300. bitmart/ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  301. bitmart/ccxt/static_dependencies/lark/tree.py +267 -0
  302. bitmart/ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  303. bitmart/ccxt/static_dependencies/lark/tree_templates.py +180 -0
  304. bitmart/ccxt/static_dependencies/lark/utils.py +343 -0
  305. bitmart/ccxt/static_dependencies/lark/visitors.py +596 -0
  306. bitmart/ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  307. bitmart/ccxt/static_dependencies/marshmallow/base.py +65 -0
  308. bitmart/ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  309. bitmart/ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  310. bitmart/ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  311. bitmart/ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  312. bitmart/ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  313. bitmart/ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  314. bitmart/ccxt/static_dependencies/marshmallow/py.typed +0 -0
  315. bitmart/ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  316. bitmart/ccxt/static_dependencies/marshmallow/types.py +12 -0
  317. bitmart/ccxt/static_dependencies/marshmallow/utils.py +378 -0
  318. bitmart/ccxt/static_dependencies/marshmallow/validate.py +678 -0
  319. bitmart/ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  320. bitmart/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  321. bitmart/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  322. bitmart/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  323. bitmart/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  324. bitmart/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  325. bitmart/ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  326. bitmart/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  327. bitmart/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  328. bitmart/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  329. bitmart/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  330. bitmart/ccxt/static_dependencies/mnemonic/__init__.py +4 -0
  331. bitmart/ccxt/static_dependencies/mnemonic/mnemonic.py +282 -0
  332. bitmart/ccxt/static_dependencies/mnemonic/py.typed +1 -0
  333. bitmart/ccxt/static_dependencies/mnemonic/wordlist/chinese_simplified.txt +2048 -0
  334. bitmart/ccxt/static_dependencies/mnemonic/wordlist/chinese_traditional.txt +2048 -0
  335. bitmart/ccxt/static_dependencies/mnemonic/wordlist/czech.txt +2048 -0
  336. bitmart/ccxt/static_dependencies/mnemonic/wordlist/english.txt +2048 -0
  337. bitmart/ccxt/static_dependencies/mnemonic/wordlist/french.txt +2048 -0
  338. bitmart/ccxt/static_dependencies/mnemonic/wordlist/italian.txt +2048 -0
  339. bitmart/ccxt/static_dependencies/mnemonic/wordlist/japanese.txt +2048 -0
  340. bitmart/ccxt/static_dependencies/mnemonic/wordlist/korean.txt +2048 -0
  341. bitmart/ccxt/static_dependencies/mnemonic/wordlist/portuguese.txt +2048 -0
  342. bitmart/ccxt/static_dependencies/mnemonic/wordlist/russian.txt +2048 -0
  343. bitmart/ccxt/static_dependencies/mnemonic/wordlist/spanish.txt +2048 -0
  344. bitmart/ccxt/static_dependencies/mnemonic/wordlist/turkish.txt +2048 -0
  345. bitmart/ccxt/static_dependencies/msgpack/__init__.py +55 -0
  346. bitmart/ccxt/static_dependencies/msgpack/_cmsgpack.pyx +11 -0
  347. bitmart/ccxt/static_dependencies/msgpack/_packer.pyx +374 -0
  348. bitmart/ccxt/static_dependencies/msgpack/_unpacker.pyx +547 -0
  349. bitmart/ccxt/static_dependencies/msgpack/buff_converter.h +8 -0
  350. bitmart/ccxt/static_dependencies/msgpack/exceptions.py +48 -0
  351. bitmart/ccxt/static_dependencies/msgpack/ext.py +168 -0
  352. bitmart/ccxt/static_dependencies/msgpack/fallback.py +951 -0
  353. bitmart/ccxt/static_dependencies/msgpack/pack.h +89 -0
  354. bitmart/ccxt/static_dependencies/msgpack/pack_template.h +820 -0
  355. bitmart/ccxt/static_dependencies/msgpack/sysdep.h +194 -0
  356. bitmart/ccxt/static_dependencies/msgpack/unpack.h +391 -0
  357. bitmart/ccxt/static_dependencies/msgpack/unpack_define.h +95 -0
  358. bitmart/ccxt/static_dependencies/msgpack/unpack_template.h +464 -0
  359. bitmart/ccxt/static_dependencies/parsimonious/__init__.py +10 -0
  360. bitmart/ccxt/static_dependencies/parsimonious/exceptions.py +105 -0
  361. bitmart/ccxt/static_dependencies/parsimonious/expressions.py +479 -0
  362. bitmart/ccxt/static_dependencies/parsimonious/grammar.py +487 -0
  363. bitmart/ccxt/static_dependencies/parsimonious/nodes.py +325 -0
  364. bitmart/ccxt/static_dependencies/parsimonious/utils.py +40 -0
  365. bitmart/ccxt/static_dependencies/starknet/__init__.py +0 -0
  366. bitmart/ccxt/static_dependencies/starknet/abi/v0/__init__.py +2 -0
  367. bitmart/ccxt/static_dependencies/starknet/abi/v0/model.py +44 -0
  368. bitmart/ccxt/static_dependencies/starknet/abi/v0/parser.py +216 -0
  369. bitmart/ccxt/static_dependencies/starknet/abi/v0/schemas.py +72 -0
  370. bitmart/ccxt/static_dependencies/starknet/abi/v0/shape.py +63 -0
  371. bitmart/ccxt/static_dependencies/starknet/abi/v1/__init__.py +2 -0
  372. bitmart/ccxt/static_dependencies/starknet/abi/v1/core_structures.json +14 -0
  373. bitmart/ccxt/static_dependencies/starknet/abi/v1/model.py +39 -0
  374. bitmart/ccxt/static_dependencies/starknet/abi/v1/parser.py +220 -0
  375. bitmart/ccxt/static_dependencies/starknet/abi/v1/parser_transformer.py +179 -0
  376. bitmart/ccxt/static_dependencies/starknet/abi/v1/schemas.py +66 -0
  377. bitmart/ccxt/static_dependencies/starknet/abi/v1/shape.py +47 -0
  378. bitmart/ccxt/static_dependencies/starknet/abi/v2/__init__.py +2 -0
  379. bitmart/ccxt/static_dependencies/starknet/abi/v2/model.py +89 -0
  380. bitmart/ccxt/static_dependencies/starknet/abi/v2/parser.py +293 -0
  381. bitmart/ccxt/static_dependencies/starknet/abi/v2/parser_transformer.py +192 -0
  382. bitmart/ccxt/static_dependencies/starknet/abi/v2/schemas.py +132 -0
  383. bitmart/ccxt/static_dependencies/starknet/abi/v2/shape.py +107 -0
  384. bitmart/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  385. bitmart/ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  386. bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  387. bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  388. bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  389. bitmart/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  390. bitmart/ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  391. bitmart/ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  392. bitmart/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  393. bitmart/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  394. bitmart/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  395. bitmart/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  396. bitmart/ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  397. bitmart/ccxt/static_dependencies/starknet/common.py +15 -0
  398. bitmart/ccxt/static_dependencies/starknet/constants.py +39 -0
  399. bitmart/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  400. bitmart/ccxt/static_dependencies/starknet/hash/address.py +79 -0
  401. bitmart/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  402. bitmart/ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  403. bitmart/ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  404. bitmart/ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  405. bitmart/ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  406. bitmart/ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  407. bitmart/ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  408. bitmart/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  409. bitmart/ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  410. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  411. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  412. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  413. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  414. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  415. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  416. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  417. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  418. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  419. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  420. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  421. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  422. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  423. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  424. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  425. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  426. bitmart/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  427. bitmart/ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  428. bitmart/ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  429. bitmart/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  430. bitmart/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  431. bitmart/ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  432. bitmart/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  433. bitmart/ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  434. bitmart/ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  435. bitmart/ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  436. bitmart/ccxt/static_dependencies/starkware/__init__.py +0 -0
  437. bitmart/ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  438. bitmart/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  439. bitmart/ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  440. bitmart/ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  441. bitmart/ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  442. bitmart/ccxt/static_dependencies/sympy/__init__.py +0 -0
  443. bitmart/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  444. bitmart/ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  445. bitmart/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  446. bitmart/ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  447. bitmart/ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  448. bitmart/ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  449. bitmart/ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  450. bitmart/ccxt/static_dependencies/toolz/__init__.py +26 -0
  451. bitmart/ccxt/static_dependencies/toolz/_signatures.py +784 -0
  452. bitmart/ccxt/static_dependencies/toolz/_version.py +520 -0
  453. bitmart/ccxt/static_dependencies/toolz/compatibility.py +30 -0
  454. bitmart/ccxt/static_dependencies/toolz/curried/__init__.py +101 -0
  455. bitmart/ccxt/static_dependencies/toolz/curried/exceptions.py +22 -0
  456. bitmart/ccxt/static_dependencies/toolz/curried/operator.py +22 -0
  457. bitmart/ccxt/static_dependencies/toolz/dicttoolz.py +339 -0
  458. bitmart/ccxt/static_dependencies/toolz/functoolz.py +1049 -0
  459. bitmart/ccxt/static_dependencies/toolz/itertoolz.py +1057 -0
  460. bitmart/ccxt/static_dependencies/toolz/recipes.py +46 -0
  461. bitmart/ccxt/static_dependencies/toolz/utils.py +9 -0
  462. bitmart/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  463. bitmart/ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  464. bitmart-0.0.116.dist-info/METADATA +342 -0
  465. bitmart-0.0.116.dist-info/RECORD +466 -0
  466. bitmart-0.0.116.dist-info/WHEEL +4 -0
@@ -0,0 +1,235 @@
1
+ # Copyright (c) 2021 Emanuele Bellocchia
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ """
22
+ Module for bech32/bech32m decoding/encoding.
23
+
24
+ References:
25
+ https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
26
+ https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki
27
+ https://github.com/sipa/bech32/blob/master/ref/python/segwit_addr.py
28
+ """
29
+
30
+ # Imports
31
+ from enum import Enum, auto, unique
32
+ from typing import Dict, List
33
+
34
+ from .bech32_base import Bech32BaseUtils, Bech32DecoderBase, Bech32EncoderBase
35
+ from ..utils.misc import BytesUtils
36
+
37
+
38
+ @unique
39
+ class Bech32Encodings(Enum):
40
+ """Enumerative for Bech32 encoding types."""
41
+
42
+ BECH32 = auto()
43
+ BECH32M = auto()
44
+
45
+
46
+ class Bech32Const:
47
+ """Class container for Bech32 constants."""
48
+
49
+ # Separator
50
+ SEPARATOR: str = "1"
51
+ # Checksum length
52
+ CHECKSUM_STR_LEN: int = 6
53
+ # Encoding checksum constants
54
+ ENCODING_CHECKSUM_CONST: Dict[Bech32Encodings, int] = {
55
+ Bech32Encodings.BECH32: 1,
56
+ Bech32Encodings.BECH32M: 0x2bc830a3,
57
+ }
58
+
59
+
60
+ class Bech32Utils:
61
+ """Class container for Bech32 utility functions."""
62
+
63
+ @staticmethod
64
+ def PolyMod(values: List[int]) -> int:
65
+ """
66
+ Computes the polynomial modulus.
67
+
68
+ Args:
69
+ values (list[int]): List of polynomial coefficients
70
+
71
+ Returns:
72
+ int: Computed modulus
73
+ """
74
+
75
+ # Generator polynomial
76
+ generator = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3]
77
+
78
+ # Compute modulus
79
+ chk = 1
80
+ for value in values:
81
+ top = chk >> 25
82
+ chk = (chk & 0x1ffffff) << 5 ^ value
83
+ for i in range(5):
84
+ chk ^= generator[i] if ((top >> i) & 1) else 0
85
+ return chk
86
+
87
+ @staticmethod
88
+ def HrpExpand(hrp: str) -> List[int]:
89
+ """
90
+ Expand the HRP into values for checksum computation.
91
+
92
+ Args:
93
+ hrp (str): HRP
94
+
95
+ Returns:
96
+ list[int]: Expanded HRP values
97
+ """
98
+ # [upper 3 bits of each character] + [0] + [lower 5 bits of each character]
99
+ return [ord(x) >> 5 for x in hrp] + [0] + [ord(x) & 0x1f for x in hrp]
100
+
101
+ @staticmethod
102
+ def ComputeChecksum(hrp: str,
103
+ data: List[int],
104
+ encoding: Bech32Encodings = Bech32Encodings.BECH32) -> List[int]:
105
+ """
106
+ Compute the checksum from the specified HRP and data.
107
+
108
+ Args:
109
+ hrp (str) : HRP
110
+ data (list[int]) : Data part
111
+ encoding (Bech32Encodings, optional): Encoding type (BECH32 by default)
112
+
113
+ Returns:
114
+ list[int]: Computed checksum
115
+ """
116
+ values = Bech32Utils.HrpExpand(hrp) + data
117
+ polymod = Bech32Utils.PolyMod(values + [0, 0, 0, 0, 0, 0]) ^ Bech32Const.ENCODING_CHECKSUM_CONST[encoding]
118
+ return [(polymod >> 5 * (5 - i)) & 0x1f for i in range(Bech32Const.CHECKSUM_STR_LEN)]
119
+
120
+ @staticmethod
121
+ def VerifyChecksum(hrp: str,
122
+ data: List[int],
123
+ encoding: Bech32Encodings = Bech32Encodings.BECH32) -> bool:
124
+ """
125
+ Verify the checksum from the specified HRP and converted data characters.
126
+
127
+ Args:
128
+ hrp (str) : HRP
129
+ data (list[int]) : Data part
130
+ encoding (Bech32Encodings, optional): Encoding type (BECH32 by default)
131
+
132
+ Returns:
133
+ bool: True if valid, false otherwise
134
+ """
135
+ polymod = Bech32Utils.PolyMod(Bech32Utils.HrpExpand(hrp) + data)
136
+ return polymod == Bech32Const.ENCODING_CHECKSUM_CONST[encoding]
137
+
138
+
139
+ class Bech32Encoder(Bech32EncoderBase):
140
+ """
141
+ Bech32 encoder class.
142
+ It provides methods for encoding to Bech32 format.
143
+ """
144
+
145
+ @classmethod
146
+ def Encode(cls,
147
+ hrp: str,
148
+ data: bytes) -> str:
149
+ """
150
+ Encode to Bech32.
151
+
152
+ Args:
153
+ hrp (str) : HRP
154
+ data (bytes): Data
155
+
156
+ Returns:
157
+ str: Encoded address
158
+
159
+ Raises:
160
+ ValueError: If the data is not valid
161
+ """
162
+ return cls._EncodeBech32(hrp,
163
+ Bech32BaseUtils.ConvertToBase32(data),
164
+ Bech32Const.SEPARATOR)
165
+
166
+ @staticmethod
167
+ def _ComputeChecksum(hrp: str,
168
+ data: List[int]) -> List[int]:
169
+ """
170
+ Compute the checksum from the specified HRP and data.
171
+
172
+ Args:
173
+ hrp (str) : HRP
174
+ data (list[int]): Data part
175
+
176
+ Returns:
177
+ list[int]: Computed checksum
178
+ """
179
+
180
+ # Same as Segwit
181
+ return Bech32Utils.ComputeChecksum(hrp, data)
182
+
183
+
184
+ class Bech32Decoder(Bech32DecoderBase):
185
+ """
186
+ Bech32 decoder class.
187
+ It provides methods for decoding Bech32 format.
188
+ """
189
+
190
+ @classmethod
191
+ def Decode(cls,
192
+ hrp: str,
193
+ addr: str) -> bytes:
194
+ """
195
+ Decode from Bech32.
196
+
197
+ Args:
198
+ hrp (str) : Human readable part
199
+ addr (str): Address
200
+
201
+ Returns:
202
+ bytes: Decoded address
203
+
204
+ Raises:
205
+ ValueError: If the bech32 string is not valid
206
+ Bech32ChecksumError: If the checksum is not valid
207
+ """
208
+
209
+ # Decode string
210
+ hrp_got, data = cls._DecodeBech32(addr,
211
+ Bech32Const.SEPARATOR,
212
+ Bech32Const.CHECKSUM_STR_LEN)
213
+ # Check HRP
214
+ if hrp != hrp_got:
215
+ raise ValueError(f"Invalid format (HRP not valid, expected {hrp}, got {hrp_got})")
216
+
217
+ # Convert back from base32
218
+ return BytesUtils.FromList(
219
+ Bech32BaseUtils.ConvertFromBase32(data)
220
+ )
221
+
222
+ @staticmethod
223
+ def _VerifyChecksum(hrp: str,
224
+ data: List[int]) -> bool:
225
+ """
226
+ Verify the checksum from the specified HRP and converted data characters.
227
+
228
+ Args:
229
+ hrp (str) : HRP
230
+ data (list[int]): Data part
231
+
232
+ Returns:
233
+ bool: True if valid, false otherwise
234
+ """
235
+ return Bech32Utils.VerifyChecksum(hrp, data)
@@ -0,0 +1,246 @@
1
+ # Copyright (c) 2021 Emanuele Bellocchia
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ """Module for base bech32 decoding/encoding."""
22
+
23
+ # Imports
24
+ from abc import ABC, abstractmethod
25
+ from typing import List, Optional, Tuple, Union
26
+
27
+ from .bech32_ex import Bech32ChecksumError
28
+ from ..utils.misc import AlgoUtils
29
+
30
+
31
+ class Bech32BaseConst:
32
+ """Class container for Bech32 constants."""
33
+
34
+ # Character set
35
+ CHARSET: str = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"
36
+
37
+
38
+ class Bech32BaseUtils:
39
+ """Class container for Bech32 utility functions."""
40
+
41
+ @staticmethod
42
+ def ConvertToBase32(data: Union[List[int], bytes]) -> List[int]:
43
+ """
44
+ Convert data to base32.
45
+
46
+ Args:
47
+ data (list[int] or bytes): Data to be converted
48
+
49
+ Returns:
50
+ list[int]: Converted data
51
+
52
+ Raises:
53
+ ValueError: If the string is not valid
54
+ """
55
+
56
+ # Convert to base32
57
+ conv_data = Bech32BaseUtils.ConvertBits(data, 8, 5)
58
+ if conv_data is None:
59
+ raise ValueError("Invalid data, cannot perform conversion to base32")
60
+
61
+ return conv_data
62
+
63
+ @staticmethod
64
+ def ConvertFromBase32(data: Union[List[int], bytes]) -> List[int]:
65
+ """
66
+ Convert data from base32.
67
+
68
+ Args:
69
+ data (list[int] or bytes): Data to be converted
70
+
71
+ Returns:
72
+ list[int]: Converted data
73
+
74
+ Raises:
75
+ ValueError: If the string is not valid
76
+ """
77
+
78
+ # Convert from base32
79
+ conv_data = Bech32BaseUtils.ConvertBits(data, 5, 8, False)
80
+ if conv_data is None:
81
+ raise ValueError("Invalid data, cannot perform conversion from base32")
82
+
83
+ return conv_data
84
+
85
+ @staticmethod
86
+ def ConvertBits(data: Union[bytes, List[int]],
87
+ from_bits: int,
88
+ to_bits: int,
89
+ pad: bool = True) -> Optional[List[int]]:
90
+ """
91
+ Perform bit conversion.
92
+ The function takes the input data (list of integers or byte sequence) and convert every value from
93
+ the specified number of bits to the specified one.
94
+ It returns a list of integer where every number is less than 2^to_bits.
95
+
96
+ Args:
97
+ data (list[int] or bytes): Data to be converted
98
+ from_bits (int) : Number of bits to start from
99
+ to_bits (int) : Number of bits to end with
100
+ pad (bool, optional) : True if data must be padded with zeros, false otherwise
101
+
102
+ Returns:
103
+ list[int]: List of converted values, None in case of errors
104
+ """
105
+ max_out_val = (1 << to_bits) - 1
106
+ max_acc = (1 << (from_bits + to_bits - 1)) - 1
107
+
108
+ acc = 0
109
+ bits = 0
110
+ ret = []
111
+
112
+ for value in data:
113
+ # Value shall not be less than zero or greater than 2^from_bits
114
+ if value < 0 or (value >> from_bits):
115
+ return None
116
+ # Continue accumulating until greater than to_bits
117
+ acc = ((acc << from_bits) | value) & max_acc
118
+ bits += from_bits
119
+ while bits >= to_bits:
120
+ bits -= to_bits
121
+ ret.append((acc >> bits) & max_out_val)
122
+ if pad:
123
+ if bits:
124
+ # Pad the value with zeros to reach to_bits
125
+ ret.append((acc << (to_bits - bits)) & max_out_val)
126
+ elif bits >= from_bits or ((acc << (to_bits - bits)) & max_out_val):
127
+ return None
128
+
129
+ return ret
130
+
131
+
132
+ class Bech32EncoderBase(ABC):
133
+ """
134
+ Bech32 encoder base class.
135
+ It provides methods for encoding to Bech32 format.
136
+ """
137
+
138
+ @classmethod
139
+ def _EncodeBech32(cls,
140
+ hrp: str,
141
+ data: List[int],
142
+ sep: str) -> str:
143
+ """
144
+ Encode a Bech32 string from the specified HRP and data.
145
+
146
+ Args:
147
+ hrp (str) : HRP
148
+ data (list[int]): Data part
149
+ sep (str) : Bech32 separator
150
+
151
+ Returns:
152
+ str: Encoded data
153
+ """
154
+
155
+ # Add checksum to data
156
+ data += cls._ComputeChecksum(hrp, data)
157
+ # Encode to alphabet
158
+ return hrp + sep + "".join([Bech32BaseConst.CHARSET[d] for d in data])
159
+
160
+ @staticmethod
161
+ @abstractmethod
162
+ def _ComputeChecksum(hrp: str,
163
+ data: List[int]) -> List[int]:
164
+ """
165
+ Compute the checksum from the specified HRP and data.
166
+
167
+ Args:
168
+ hrp (str) : HRP
169
+ data (list[int]): Data part
170
+
171
+ Returns:
172
+ list[int]: Computed checksum
173
+ """
174
+
175
+
176
+ class Bech32DecoderBase(ABC):
177
+ """
178
+ Bech32 decoder base class.
179
+ It provides methods for decoding Bech32 format.
180
+ """
181
+
182
+ @classmethod
183
+ def _DecodeBech32(cls,
184
+ bech_str: str,
185
+ sep: str,
186
+ checksum_len: int) -> Tuple[str, List[int]]:
187
+ """
188
+ Decode and validate a Bech32 string, determining its HRP and data.
189
+
190
+ Args:
191
+ bech_str (str) : Bech32 string
192
+ sep (str) : Bech32 separator
193
+ checksum_len (int): Checksum length
194
+
195
+ Returns:
196
+ tuple[str, list[int]]: HRP (index 0) and data part (index 1)
197
+
198
+ Raises:
199
+ ValueError: If the string is not valid
200
+ Bech32ChecksumError: If the checksum is not valid
201
+ """
202
+
203
+ # Check string length and case
204
+ if AlgoUtils.IsStringMixed(bech_str):
205
+ raise ValueError("Invalid bech32 format (string is mixed case)")
206
+
207
+ # Lower string
208
+ bech_str = bech_str.lower()
209
+
210
+ # Find separator and check its position
211
+ sep_pos = bech_str.rfind(sep)
212
+ if sep_pos == -1:
213
+ raise ValueError("Invalid bech32 format (no separator found)")
214
+
215
+ # Get HRP and check it
216
+ hrp = bech_str[:sep_pos]
217
+ if len(hrp) == 0 or any(ord(x) < 33 or ord(x) > 126 for x in hrp):
218
+ raise ValueError(f"Invalid bech32 format (HRP not valid: {hrp})")
219
+
220
+ # Get data and check it
221
+ data_part = bech_str[sep_pos + 1:]
222
+ if (len(data_part) < (checksum_len + 1)
223
+ or not all(x in Bech32BaseConst.CHARSET for x in data_part)):
224
+ raise ValueError("Invalid bech32 format (data part not valid)")
225
+
226
+ # Convert back from alphabet and verify checksum
227
+ int_data = [Bech32BaseConst.CHARSET.find(x) for x in data_part]
228
+ if not cls._VerifyChecksum(hrp, int_data):
229
+ raise Bech32ChecksumError("Invalid bech32 checksum")
230
+
231
+ return hrp, int_data[:-checksum_len]
232
+
233
+ @staticmethod
234
+ @abstractmethod
235
+ def _VerifyChecksum(hrp: str,
236
+ data: List[int]) -> bool:
237
+ """
238
+ Verify the checksum from the specified HRP and converted data characters.
239
+
240
+ Args:
241
+ hrp (str) : HRP
242
+ data (list[int]): Data part
243
+
244
+ Returns:
245
+ bool: True if valid, false otherwise
246
+ """
@@ -0,0 +1,25 @@
1
+ # Copyright (c) 2021 Emanuele Bellocchia
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ """Module for bech32 exceptions."""
22
+
23
+
24
+ class Bech32ChecksumError(Exception):
25
+ """Exception in case of checksum error."""
@@ -0,0 +1,173 @@
1
+ # Copyright (c) 2021 Emanuele Bellocchia
2
+ #
3
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ # of this software and associated documentation files (the "Software"), to deal
5
+ # in the Software without restriction, including without limitation the rights
6
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ # copies of the Software, and to permit persons to whom the Software is
8
+ # furnished to do so, subject to the following conditions:
9
+ #
10
+ # The above copyright notice and this permission notice shall be included in
11
+ # all copies or substantial portions of the Software.
12
+ #
13
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ # THE SOFTWARE.
20
+
21
+ """
22
+ Module for segwit bech32/bech32m decoding/encoding.
23
+
24
+ References:
25
+ https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
26
+ https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki
27
+ """
28
+
29
+ # Imports
30
+ from typing import List, Tuple
31
+
32
+ from .bech32 import Bech32Const, Bech32Encodings, Bech32Utils
33
+ from .bech32_base import Bech32BaseUtils, Bech32DecoderBase, Bech32EncoderBase
34
+ from ..utils.misc import BytesUtils
35
+
36
+
37
+ class SegwitBech32Const:
38
+ """Class container for Segwit Bech32 constants."""
39
+
40
+ # Separator
41
+ SEPARATOR: str = Bech32Const.SEPARATOR
42
+ # Checksum length
43
+ CHECKSUM_STR_LEN: int = Bech32Const.CHECKSUM_STR_LEN
44
+ # Minimum witness program length in bytes
45
+ WITNESS_PROG_MIN_BYTE_LEN: int = 2
46
+ # Maximum witness program length in bytes
47
+ WITNESS_PROG_MAX_BYTE_LEN: int = 40
48
+ # Witness version for Bech32 encoding
49
+ WITNESS_VER_BECH32: int = 0
50
+ # Witness version maximum value
51
+ WITNESS_VER_MAX_VAL: int = 16
52
+ # Accepted data lengths when witness version is zero
53
+ WITNESS_VER_ZERO_DATA_BYTE_LEN: Tuple[int, int] = (20, 32)
54
+
55
+
56
+ class SegwitBech32Encoder(Bech32EncoderBase):
57
+ """
58
+ Segwit Bech32 encoder class.
59
+ It provides methods for encoding to Segwit Bech32 format.
60
+ """
61
+
62
+ @classmethod
63
+ def Encode(cls,
64
+ hrp: str,
65
+ wit_ver: int,
66
+ wit_prog: bytes) -> str:
67
+ """
68
+ Encode to Segwit Bech32.
69
+
70
+ Args:
71
+ hrp (str) : HRP
72
+ wit_ver (int) : Witness version
73
+ wit_prog (bytes): Witness program
74
+
75
+ Returns:
76
+ str: Encoded address
77
+
78
+ Raises:
79
+ ValueError: If the data is not valid
80
+ """
81
+ return cls._EncodeBech32(hrp,
82
+ [wit_ver] + Bech32BaseUtils.ConvertToBase32(wit_prog),
83
+ SegwitBech32Const.SEPARATOR)
84
+
85
+ @staticmethod
86
+ def _ComputeChecksum(hrp: str,
87
+ data: List[int]) -> List[int]:
88
+ """
89
+ Compute the checksum from the specified HRP and data.
90
+
91
+ Args:
92
+ hrp (str) : HRP
93
+ data (list[int]): Data part
94
+
95
+ Returns:
96
+ list[int]: Computed checksum
97
+ """
98
+ encoding = (Bech32Encodings.BECH32
99
+ if data[0] == SegwitBech32Const.WITNESS_VER_BECH32
100
+ else Bech32Encodings.BECH32M)
101
+
102
+ return Bech32Utils.ComputeChecksum(hrp, data, encoding)
103
+
104
+
105
+ class SegwitBech32Decoder(Bech32DecoderBase):
106
+ """
107
+ Segwit Bech32 decoder class.
108
+ It provides methods for decoding Segwit Bech32 format.
109
+ """
110
+
111
+ @classmethod
112
+ def Decode(cls,
113
+ hrp: str,
114
+ addr: str) -> Tuple[int, bytes]:
115
+ """
116
+ Decode from Segwit Bech32.
117
+
118
+ Args:
119
+ hrp (str) : Human readable part
120
+ addr (str): Address
121
+
122
+ Returns:
123
+ tuple[int, bytes]: Witness version (index 0) and witness program (index 1)
124
+
125
+ Raises:
126
+ Bech32ChecksumError: If the checksum is not valid
127
+ ValueError: If the bech32 string is not valid
128
+ """
129
+
130
+ # Decode string
131
+ hrp_got, data = cls._DecodeBech32(addr,
132
+ SegwitBech32Const.SEPARATOR,
133
+ SegwitBech32Const.CHECKSUM_STR_LEN)
134
+ # Check HRP
135
+ if hrp != hrp_got:
136
+ raise ValueError(
137
+ f"Invalid format (HRP not valid, expected {hrp}, got {hrp_got})"
138
+ )
139
+
140
+ # Convert back from base32 (remove witness version)
141
+ conv_data = Bech32BaseUtils.ConvertFromBase32(data[1:])
142
+
143
+ # Check data length
144
+ if (len(conv_data) < SegwitBech32Const.WITNESS_PROG_MIN_BYTE_LEN
145
+ or len(conv_data) > SegwitBech32Const.WITNESS_PROG_MAX_BYTE_LEN):
146
+ raise ValueError(f"Invalid format (witness program length not valid: {len(conv_data)})")
147
+ # Check witness version
148
+ wit_ver = data[0]
149
+ if wit_ver > SegwitBech32Const.WITNESS_VER_MAX_VAL:
150
+ raise ValueError(f"Invalid format (witness version not valid: {wit_ver})")
151
+ if wit_ver == 0 and not len(conv_data) in SegwitBech32Const.WITNESS_VER_ZERO_DATA_BYTE_LEN:
152
+ raise ValueError(f"Invalid format (length not valid: {len(conv_data)})")
153
+
154
+ return wit_ver, BytesUtils.FromList(conv_data)
155
+
156
+ @staticmethod
157
+ def _VerifyChecksum(hrp: str,
158
+ data: List[int]) -> bool:
159
+ """
160
+ Verify the checksum from the specified HRP and converted data characters.
161
+
162
+ Args:
163
+ hrp (str) : HRP
164
+ data (list[int]): Data part
165
+
166
+ Returns:
167
+ bool: True if valid, false otherwise
168
+ """
169
+ encoding = (Bech32Encodings.BECH32
170
+ if data[0] == SegwitBech32Const.WITNESS_VER_BECH32
171
+ else Bech32Encodings.BECH32M)
172
+
173
+ return Bech32Utils.VerifyChecksum(hrp, data, encoding)
@@ -0,0 +1,14 @@
1
+ from .base import Bip32Base, IBip32KeyDerivator, IBip32MstKeyGenerator
2
+ from .bip32_const import Bip32Const
3
+ from .bip32_ex import Bip32KeyError, Bip32PathError
4
+ from .bip32_key_data import Bip32ChainCode, Bip32Depth, Bip32FingerPrint, Bip32KeyData, Bip32KeyIndex
5
+ from .bip32_key_net_ver import Bip32KeyNetVersions
6
+ from .bip32_key_ser import (
7
+ Bip32DeserializedKey, Bip32KeyDeserializer, Bip32PrivateKeySerializer, Bip32PublicKeySerializer
8
+ )
9
+ from .bip32_keys import Bip32PrivateKey, Bip32PublicKey
10
+ from .bip32_path import Bip32Path, Bip32PathParser
11
+ from .bip32_utils import Bip32Utils
12
+ from .slip10 import (
13
+ Bip32Slip10Secp256k1
14
+ )
@@ -0,0 +1,3 @@
1
+ from .bip32_base import Bip32Base
2
+ from .ibip32_key_derivator import IBip32KeyDerivator
3
+ from .ibip32_mst_key_generator import IBip32MstKeyGenerator