quantumcoin 6.14.2 → 6.14.5

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 (317) hide show
  1. package/CHANGELOG.md +442 -442
  2. package/FUNDING.json +10 -10
  3. package/LICENSE.md +21 -21
  4. package/README.md +132 -142
  5. package/SECURITY.md +34 -34
  6. package/dist/README.md +22 -22
  7. package/dist/quantumcoin.js +1127 -1324
  8. package/dist/quantumcoin.js.map +1 -1
  9. package/dist/quantumcoin.min.js +1 -1
  10. package/dist/quantumcoin.umd.js +1128 -1327
  11. package/dist/quantumcoin.umd.js.map +1 -1
  12. package/dist/quantumcoin.umd.min.js +1 -1
  13. package/dist/wordlists-extra.js +1 -1
  14. package/dist/wordlists-extra.js.map +1 -1
  15. package/dist/wordlists-extra.min.js +1 -1
  16. package/lib.commonjs/README.md +16 -16
  17. package/lib.commonjs/_version.js +1 -1
  18. package/lib.commonjs/crypto/signature.d.ts +3 -76
  19. package/lib.commonjs/crypto/signature.d.ts.map +1 -1
  20. package/lib.commonjs/crypto/signature.js +15 -199
  21. package/lib.commonjs/crypto/signature.js.map +1 -1
  22. package/lib.commonjs/crypto/signing-key.d.ts +1 -1
  23. package/lib.commonjs/crypto/signing-key.d.ts.map +1 -1
  24. package/lib.commonjs/crypto/signing-key.js +19 -10
  25. package/lib.commonjs/crypto/signing-key.js.map +1 -1
  26. package/lib.commonjs/package.json +12 -12
  27. package/lib.commonjs/providers/provider-jsonrpc.d.ts +0 -1
  28. package/lib.commonjs/providers/provider-jsonrpc.d.ts.map +1 -1
  29. package/lib.commonjs/providers/provider-jsonrpc.js +0 -1
  30. package/lib.commonjs/providers/provider-jsonrpc.js.map +1 -1
  31. package/lib.commonjs/quantumcoin.d.ts +2 -0
  32. package/lib.commonjs/quantumcoin.d.ts.map +1 -1
  33. package/lib.commonjs/quantumcoin.js +11 -5
  34. package/lib.commonjs/quantumcoin.js.map +1 -1
  35. package/lib.commonjs/transaction/address.d.ts.map +1 -1
  36. package/lib.commonjs/transaction/address.js +8 -3
  37. package/lib.commonjs/transaction/address.js.map +1 -1
  38. package/lib.commonjs/transaction/transaction.d.ts.map +1 -1
  39. package/lib.commonjs/transaction/transaction.js +7 -40
  40. package/lib.commonjs/transaction/transaction.js.map +1 -1
  41. package/lib.commonjs/wallet/json-keystore.d.ts.map +1 -1
  42. package/lib.commonjs/wallet/json-keystore.js +7 -7
  43. package/lib.commonjs/wallet/json-keystore.js.map +1 -1
  44. package/lib.commonjs/wallet/wallet.d.ts.map +1 -1
  45. package/lib.commonjs/wallet/wallet.js +2 -2
  46. package/lib.commonjs/wallet/wallet.js.map +1 -1
  47. package/lib.esm/README.md +16 -16
  48. package/lib.esm/_version.js +1 -1
  49. package/lib.esm/crypto/signature.d.ts +3 -76
  50. package/lib.esm/crypto/signature.d.ts.map +1 -1
  51. package/lib.esm/crypto/signature.js +16 -202
  52. package/lib.esm/crypto/signature.js.map +1 -1
  53. package/lib.esm/crypto/signing-key.d.ts +1 -1
  54. package/lib.esm/crypto/signing-key.d.ts.map +1 -1
  55. package/lib.esm/crypto/signing-key.js +20 -9
  56. package/lib.esm/crypto/signing-key.js.map +1 -1
  57. package/lib.esm/package.json +12 -12
  58. package/lib.esm/providers/provider-jsonrpc.d.ts +0 -1
  59. package/lib.esm/providers/provider-jsonrpc.d.ts.map +1 -1
  60. package/lib.esm/providers/provider-jsonrpc.js +0 -1
  61. package/lib.esm/providers/provider-jsonrpc.js.map +1 -1
  62. package/lib.esm/quantumcoin.d.ts +2 -0
  63. package/lib.esm/quantumcoin.d.ts.map +1 -1
  64. package/lib.esm/quantumcoin.js +6 -0
  65. package/lib.esm/quantumcoin.js.map +1 -1
  66. package/lib.esm/transaction/address.d.ts.map +1 -1
  67. package/lib.esm/transaction/address.js +8 -2
  68. package/lib.esm/transaction/address.js.map +1 -1
  69. package/lib.esm/transaction/transaction.d.ts.map +1 -1
  70. package/lib.esm/transaction/transaction.js +7 -40
  71. package/lib.esm/transaction/transaction.js.map +1 -1
  72. package/lib.esm/wallet/json-keystore.d.ts.map +1 -1
  73. package/lib.esm/wallet/json-keystore.js +11 -5
  74. package/lib.esm/wallet/json-keystore.js.map +1 -1
  75. package/lib.esm/wallet/wallet.d.ts.map +1 -1
  76. package/lib.esm/wallet/wallet.js +3 -1
  77. package/lib.esm/wallet/wallet.js.map +1 -1
  78. package/package.json +6 -5
  79. package/rollup.config.mjs +50 -50
  80. package/src.ts/_version.ts +1 -1
  81. package/src.ts/abi/abi-coder.ts +237 -237
  82. package/src.ts/abi/bytes32.ts +45 -45
  83. package/src.ts/abi/coders/abstract-coder.ts +541 -541
  84. package/src.ts/abi/coders/address.ts +36 -36
  85. package/src.ts/abi/coders/anonymous.ts +29 -29
  86. package/src.ts/abi/coders/array.ts +199 -199
  87. package/src.ts/abi/coders/boolean.ts +27 -27
  88. package/src.ts/abi/coders/bytes.ts +43 -43
  89. package/src.ts/abi/coders/fixed-bytes.ts +37 -37
  90. package/src.ts/abi/coders/null.ts +28 -28
  91. package/src.ts/abi/coders/number.ts +63 -63
  92. package/src.ts/abi/coders/string.ts +29 -29
  93. package/src.ts/abi/coders/tuple.ts +69 -69
  94. package/src.ts/abi/fragments.ts +1617 -1617
  95. package/src.ts/abi/index.ts +41 -41
  96. package/src.ts/abi/interface.ts +1271 -1271
  97. package/src.ts/abi/typed.ts +796 -796
  98. package/src.ts/address/address.ts +148 -148
  99. package/src.ts/address/checks.ts +123 -123
  100. package/src.ts/address/contract-address.ts +80 -80
  101. package/src.ts/address/index.ts +57 -57
  102. package/src.ts/constants/addresses.ts +8 -8
  103. package/src.ts/constants/hashes.ts +7 -7
  104. package/src.ts/constants/index.ts +16 -16
  105. package/src.ts/constants/numbers.ts +35 -35
  106. package/src.ts/constants/strings.ts +16 -16
  107. package/src.ts/contract/contract.ts +1120 -1120
  108. package/src.ts/contract/factory.ts +143 -143
  109. package/src.ts/contract/index.ts +31 -31
  110. package/src.ts/contract/types.ts +236 -236
  111. package/src.ts/contract/wrappers.ts +225 -225
  112. package/src.ts/crypto/crypto-browser.ts +64 -64
  113. package/src.ts/crypto/crypto.ts +4 -4
  114. package/src.ts/crypto/hmac.ts +51 -51
  115. package/src.ts/crypto/index.ts +59 -59
  116. package/src.ts/crypto/keccak.ts +54 -54
  117. package/src.ts/crypto/pbkdf2.ts +55 -55
  118. package/src.ts/crypto/random.ts +36 -36
  119. package/src.ts/crypto/ripemd160.ts +43 -43
  120. package/src.ts/crypto/scrypt.ts +114 -114
  121. package/src.ts/crypto/sha2.ts +78 -78
  122. package/src.ts/crypto/signature.ts +145 -349
  123. package/src.ts/crypto/signing-key.ts +126 -118
  124. package/src.ts/hash/authorization.ts +38 -38
  125. package/src.ts/hash/id.ts +17 -17
  126. package/src.ts/hash/index.ts +18 -18
  127. package/src.ts/hash/message.ts +51 -51
  128. package/src.ts/hash/namehash.ts +101 -101
  129. package/src.ts/hash/solidity.ts +117 -117
  130. package/src.ts/hash/typed-data.ts +658 -658
  131. package/src.ts/index.ts +12 -12
  132. package/src.ts/providers/abstract-provider.ts +1761 -1761
  133. package/src.ts/providers/abstract-signer.ts +314 -314
  134. package/src.ts/providers/community.ts +49 -49
  135. package/src.ts/providers/contracts.ts +42 -42
  136. package/src.ts/providers/default-provider.ts +96 -96
  137. package/src.ts/providers/ens-resolver.ts +606 -606
  138. package/src.ts/providers/format.ts +320 -320
  139. package/src.ts/providers/formatting.ts +418 -418
  140. package/src.ts/providers/index.ts +125 -125
  141. package/src.ts/providers/network.ts +327 -327
  142. package/src.ts/providers/pagination.ts +8 -8
  143. package/src.ts/providers/plugin-fallback.ts +35 -35
  144. package/src.ts/providers/plugins-network.ts +281 -281
  145. package/src.ts/providers/provider-browser.ts +334 -334
  146. package/src.ts/providers/provider-fallback.ts +801 -801
  147. package/src.ts/providers/provider-ipcsocket-browser.ts +3 -3
  148. package/src.ts/providers/provider-ipcsocket.ts +81 -81
  149. package/src.ts/providers/provider-jsonrpc.ts +1334 -1335
  150. package/src.ts/providers/provider-socket.ts +352 -352
  151. package/src.ts/providers/provider-websocket.ts +103 -103
  152. package/src.ts/providers/provider.ts +2136 -2136
  153. package/src.ts/providers/signer-noncemanager.ts +98 -98
  154. package/src.ts/providers/signer.ts +166 -166
  155. package/src.ts/providers/subscriber-connection.ts +74 -74
  156. package/src.ts/providers/subscriber-filterid.ts +199 -199
  157. package/src.ts/providers/subscriber-polling.ts +321 -321
  158. package/src.ts/providers/ws-browser.ts +11 -11
  159. package/src.ts/providers/ws.ts +3 -3
  160. package/src.ts/quantumcoin.ts +219 -211
  161. package/src.ts/thirdparty.d.ts +16 -16
  162. package/src.ts/transaction/accesslist.ts +43 -43
  163. package/src.ts/transaction/address.ts +35 -31
  164. package/src.ts/transaction/authorization.ts +14 -14
  165. package/src.ts/transaction/index.ts +51 -51
  166. package/src.ts/transaction/transaction.ts +1349 -1379
  167. package/src.ts/utils/base58.ts +73 -73
  168. package/src.ts/utils/base64-browser.ts +25 -25
  169. package/src.ts/utils/base64.ts +56 -56
  170. package/src.ts/utils/data.ts +199 -199
  171. package/src.ts/utils/errors.ts +793 -793
  172. package/src.ts/utils/events.ts +105 -105
  173. package/src.ts/utils/fetch.ts +970 -970
  174. package/src.ts/utils/fixednumber.ts +643 -643
  175. package/src.ts/utils/geturl-browser.ts +81 -81
  176. package/src.ts/utils/geturl.ts +134 -134
  177. package/src.ts/utils/index.ts +95 -95
  178. package/src.ts/utils/maths.ts +240 -240
  179. package/src.ts/utils/properties.ts +60 -60
  180. package/src.ts/utils/rlp-decode.ts +104 -104
  181. package/src.ts/utils/rlp-encode.ts +64 -64
  182. package/src.ts/utils/rlp.ts +20 -20
  183. package/src.ts/utils/units.ts +91 -91
  184. package/src.ts/utils/utf8.ts +325 -325
  185. package/src.ts/utils/uuid.ts +36 -36
  186. package/src.ts/wallet/base-wallet.ts +160 -160
  187. package/src.ts/wallet/index.ts +32 -32
  188. package/src.ts/wallet/json-keystore.ts +108 -106
  189. package/src.ts/wallet/utils.ts +147 -147
  190. package/src.ts/wallet/wallet.ts +138 -139
  191. package/src.ts/wordlists/bit-reader.ts +35 -35
  192. package/src.ts/wordlists/decode-owl.ts +58 -58
  193. package/src.ts/wordlists/decode-owla.ts +33 -33
  194. package/src.ts/wordlists/generation/encode-latin.ts +370 -370
  195. package/src.ts/wordlists/index.ts +26 -26
  196. package/src.ts/wordlists/lang-cz.ts +33 -33
  197. package/src.ts/wordlists/lang-en.ts +33 -33
  198. package/src.ts/wordlists/lang-es.ts +35 -35
  199. package/src.ts/wordlists/lang-fr.ts +34 -34
  200. package/src.ts/wordlists/lang-it.ts +33 -33
  201. package/src.ts/wordlists/lang-ja.ts +181 -181
  202. package/src.ts/wordlists/lang-ko.ts +104 -104
  203. package/src.ts/wordlists/lang-pt.ts +34 -34
  204. package/src.ts/wordlists/lang-zh.ts +112 -112
  205. package/src.ts/wordlists/wordlist-owl.ts +77 -77
  206. package/src.ts/wordlists/wordlist-owla.ts +41 -41
  207. package/src.ts/wordlists/wordlist.ts +59 -59
  208. package/src.ts/wordlists/wordlists-browser.ts +8 -8
  209. package/src.ts/wordlists/wordlists-extra.ts +9 -9
  210. package/src.ts/wordlists/wordlists.ts +38 -38
  211. package/dist/quantumcoin.min.js'.gz' +0 -0
  212. package/dist/quantumcoin.umd.min.js'.gz' +0 -0
  213. package/dist/wordlists-extra.min.js'.gz' +0 -0
  214. package/lib.commonjs/providers/provider-alchemy.d.ts +0 -50
  215. package/lib.commonjs/providers/provider-alchemy.d.ts.map +0 -1
  216. package/lib.commonjs/providers/provider-alchemy.js +0 -151
  217. package/lib.commonjs/providers/provider-alchemy.js.map +0 -1
  218. package/lib.commonjs/providers/provider-ankr.d.ts +0 -61
  219. package/lib.commonjs/providers/provider-ankr.d.ts.map +0 -1
  220. package/lib.commonjs/providers/provider-ankr.js +0 -137
  221. package/lib.commonjs/providers/provider-ankr.js.map +0 -1
  222. package/lib.commonjs/providers/provider-blockscout.d.ts +0 -59
  223. package/lib.commonjs/providers/provider-blockscout.d.ts.map +0 -1
  224. package/lib.commonjs/providers/provider-blockscout.js +0 -145
  225. package/lib.commonjs/providers/provider-blockscout.js.map +0 -1
  226. package/lib.commonjs/providers/provider-chainstack.d.ts +0 -46
  227. package/lib.commonjs/providers/provider-chainstack.d.ts.map +0 -1
  228. package/lib.commonjs/providers/provider-chainstack.js +0 -102
  229. package/lib.commonjs/providers/provider-chainstack.js.map +0 -1
  230. package/lib.commonjs/providers/provider-cloudflare.d.ts +0 -14
  231. package/lib.commonjs/providers/provider-cloudflare.d.ts.map +0 -1
  232. package/lib.commonjs/providers/provider-cloudflare.js +0 -26
  233. package/lib.commonjs/providers/provider-cloudflare.js.map +0 -1
  234. package/lib.commonjs/providers/provider-etherscan.d.ts +0 -147
  235. package/lib.commonjs/providers/provider-etherscan.d.ts.map +0 -1
  236. package/lib.commonjs/providers/provider-etherscan.js +0 -587
  237. package/lib.commonjs/providers/provider-etherscan.js.map +0 -1
  238. package/lib.commonjs/providers/provider-infura.d.ts +0 -101
  239. package/lib.commonjs/providers/provider-infura.d.ts.map +0 -1
  240. package/lib.commonjs/providers/provider-infura.js +0 -206
  241. package/lib.commonjs/providers/provider-infura.js.map +0 -1
  242. package/lib.commonjs/providers/provider-pocket.d.ts +0 -54
  243. package/lib.commonjs/providers/provider-pocket.d.ts.map +0 -1
  244. package/lib.commonjs/providers/provider-pocket.js +0 -109
  245. package/lib.commonjs/providers/provider-pocket.js.map +0 -1
  246. package/lib.commonjs/providers/provider-quicknode.d.ts +0 -59
  247. package/lib.commonjs/providers/provider-quicknode.d.ts.map +0 -1
  248. package/lib.commonjs/providers/provider-quicknode.js +0 -163
  249. package/lib.commonjs/providers/provider-quicknode.js.map +0 -1
  250. package/lib.commonjs/wallet/hdwallet.d.ts +0 -248
  251. package/lib.commonjs/wallet/hdwallet.d.ts.map +0 -1
  252. package/lib.commonjs/wallet/hdwallet.js +0 -505
  253. package/lib.commonjs/wallet/hdwallet.js.map +0 -1
  254. package/lib.commonjs/wallet/json-crowdsale.d.ts +0 -27
  255. package/lib.commonjs/wallet/json-crowdsale.d.ts.map +0 -1
  256. package/lib.commonjs/wallet/json-crowdsale.js +0 -60
  257. package/lib.commonjs/wallet/json-crowdsale.js.map +0 -1
  258. package/lib.commonjs/wallet/mnemonic.d.ts +0 -65
  259. package/lib.commonjs/wallet/mnemonic.d.ts.map +0 -1
  260. package/lib.commonjs/wallet/mnemonic.js +0 -169
  261. package/lib.commonjs/wallet/mnemonic.js.map +0 -1
  262. package/lib.commonjs/wallet/seedwallet.d.ts +0 -4
  263. package/lib.commonjs/wallet/seedwallet.d.ts.map +0 -1
  264. package/lib.commonjs/wallet/seedwallet.js +0 -8
  265. package/lib.commonjs/wallet/seedwallet.js.map +0 -1
  266. package/lib.esm/providers/provider-alchemy.d.ts +0 -50
  267. package/lib.esm/providers/provider-alchemy.d.ts.map +0 -1
  268. package/lib.esm/providers/provider-alchemy.js +0 -147
  269. package/lib.esm/providers/provider-alchemy.js.map +0 -1
  270. package/lib.esm/providers/provider-ankr.d.ts +0 -61
  271. package/lib.esm/providers/provider-ankr.d.ts.map +0 -1
  272. package/lib.esm/providers/provider-ankr.js +0 -133
  273. package/lib.esm/providers/provider-ankr.js.map +0 -1
  274. package/lib.esm/providers/provider-blockscout.d.ts +0 -59
  275. package/lib.esm/providers/provider-blockscout.d.ts.map +0 -1
  276. package/lib.esm/providers/provider-blockscout.js +0 -141
  277. package/lib.esm/providers/provider-blockscout.js.map +0 -1
  278. package/lib.esm/providers/provider-chainstack.d.ts +0 -46
  279. package/lib.esm/providers/provider-chainstack.d.ts.map +0 -1
  280. package/lib.esm/providers/provider-chainstack.js +0 -98
  281. package/lib.esm/providers/provider-chainstack.js.map +0 -1
  282. package/lib.esm/providers/provider-cloudflare.d.ts +0 -14
  283. package/lib.esm/providers/provider-cloudflare.d.ts.map +0 -1
  284. package/lib.esm/providers/provider-cloudflare.js +0 -22
  285. package/lib.esm/providers/provider-cloudflare.js.map +0 -1
  286. package/lib.esm/providers/provider-etherscan.d.ts +0 -147
  287. package/lib.esm/providers/provider-etherscan.d.ts.map +0 -1
  288. package/lib.esm/providers/provider-etherscan.js +0 -584
  289. package/lib.esm/providers/provider-etherscan.js.map +0 -1
  290. package/lib.esm/providers/provider-infura.d.ts +0 -101
  291. package/lib.esm/providers/provider-infura.d.ts.map +0 -1
  292. package/lib.esm/providers/provider-infura.js +0 -201
  293. package/lib.esm/providers/provider-infura.js.map +0 -1
  294. package/lib.esm/providers/provider-pocket.d.ts +0 -54
  295. package/lib.esm/providers/provider-pocket.d.ts.map +0 -1
  296. package/lib.esm/providers/provider-pocket.js +0 -105
  297. package/lib.esm/providers/provider-pocket.js.map +0 -1
  298. package/lib.esm/providers/provider-quicknode.d.ts +0 -59
  299. package/lib.esm/providers/provider-quicknode.d.ts.map +0 -1
  300. package/lib.esm/providers/provider-quicknode.js +0 -159
  301. package/lib.esm/providers/provider-quicknode.js.map +0 -1
  302. package/lib.esm/wallet/hdwallet.d.ts +0 -248
  303. package/lib.esm/wallet/hdwallet.d.ts.map +0 -1
  304. package/lib.esm/wallet/hdwallet.js +0 -498
  305. package/lib.esm/wallet/hdwallet.js.map +0 -1
  306. package/lib.esm/wallet/json-crowdsale.d.ts +0 -27
  307. package/lib.esm/wallet/json-crowdsale.d.ts.map +0 -1
  308. package/lib.esm/wallet/json-crowdsale.js +0 -55
  309. package/lib.esm/wallet/json-crowdsale.js.map +0 -1
  310. package/lib.esm/wallet/mnemonic.d.ts +0 -65
  311. package/lib.esm/wallet/mnemonic.d.ts.map +0 -1
  312. package/lib.esm/wallet/mnemonic.js +0 -165
  313. package/lib.esm/wallet/mnemonic.js.map +0 -1
  314. package/lib.esm/wallet/seedwallet.d.ts +0 -4
  315. package/lib.esm/wallet/seedwallet.d.ts.map +0 -1
  316. package/lib.esm/wallet/seedwallet.js +0 -4
  317. package/lib.esm/wallet/seedwallet.js.map +0 -1
@@ -1,505 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getIndexedAccountPath = exports.getAccountPath = exports.HDNodeVoidWallet = exports.HDNodeWallet = exports.defaultPath = void 0;
4
- /**
5
- * Explain HD Wallets..
6
- *
7
- * @_subsection: api/wallet:HD Wallets [hd-wallets]
8
- */
9
- const index_js_1 = require("../crypto/index.js");
10
- const index_js_2 = require("../providers/index.js");
11
- const index_js_3 = require("../transaction/index.js");
12
- const index_js_4 = require("../utils/index.js");
13
- const lang_en_js_1 = require("../wordlists/lang-en.js");
14
- const base_wallet_js_1 = require("./base-wallet.js");
15
- const mnemonic_js_1 = require("./mnemonic.js");
16
- const json_keystore_js_1 = require("./json-keystore.js");
17
- /**
18
- * The default derivation path for Ethereum HD Nodes. (i.e. ``"m/44'/60'/0'/0/0"``)
19
- */
20
- exports.defaultPath = "m/44'/60'/0'/0/0";
21
- // "Bitcoin seed"
22
- const MasterSecret = new Uint8Array([66, 105, 116, 99, 111, 105, 110, 32, 115, 101, 101, 100]);
23
- const HardenedBit = 0x80000000;
24
- const N = BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141");
25
- const Nibbles = "0123456789abcdef";
26
- function zpad(value, length) {
27
- let result = "";
28
- while (value) {
29
- result = Nibbles[value % 16] + result;
30
- value = Math.trunc(value / 16);
31
- }
32
- while (result.length < length * 2) {
33
- result = "0" + result;
34
- }
35
- return "0x" + result;
36
- }
37
- function encodeBase58Check(_value) {
38
- const value = (0, index_js_4.getBytes)(_value);
39
- const check = (0, index_js_4.dataSlice)((0, index_js_1.sha256)((0, index_js_1.sha256)(value)), 0, 4);
40
- const bytes = (0, index_js_4.concat)([value, check]);
41
- return (0, index_js_4.encodeBase58)(bytes);
42
- }
43
- const _guard = {};
44
- function ser_I(index, chainCode, publicKey, privateKey) {
45
- const data = new Uint8Array(37);
46
- if (index & HardenedBit) {
47
- (0, index_js_4.assert)(privateKey != null, "cannot derive child of neutered node", "UNSUPPORTED_OPERATION", {
48
- operation: "deriveChild"
49
- });
50
- // Data = 0x00 || ser_256(k_par)
51
- data.set((0, index_js_4.getBytes)(privateKey), 1);
52
- }
53
- else {
54
- // Data = ser_p(point(k_par))
55
- data.set((0, index_js_4.getBytes)(publicKey));
56
- }
57
- // Data += ser_32(i)
58
- for (let i = 24; i >= 0; i -= 8) {
59
- data[33 + (i >> 3)] = ((index >> (24 - i)) & 0xff);
60
- }
61
- const I = (0, index_js_4.getBytes)((0, index_js_1.computeHmac)("sha512", chainCode, data));
62
- return { IL: I.slice(0, 32), IR: I.slice(32) };
63
- }
64
- function derivePath(node, path) {
65
- const components = path.split("/");
66
- (0, index_js_4.assertArgument)(components.length > 0, "invalid path", "path", path);
67
- if (components[0] === "m") {
68
- (0, index_js_4.assertArgument)(node.depth === 0, `cannot derive root path (i.e. path starting with "m/") for a node at non-zero depth ${node.depth}`, "path", path);
69
- components.shift();
70
- }
71
- let result = node;
72
- for (let i = 0; i < components.length; i++) {
73
- const component = components[i];
74
- if (component.match(/^[0-9]+'$/)) {
75
- const index = parseInt(component.substring(0, component.length - 1));
76
- (0, index_js_4.assertArgument)(index < HardenedBit, "invalid path index", `path[${i}]`, component);
77
- result = result.deriveChild(HardenedBit + index);
78
- }
79
- else if (component.match(/^[0-9]+$/)) {
80
- const index = parseInt(component);
81
- (0, index_js_4.assertArgument)(index < HardenedBit, "invalid path index", `path[${i}]`, component);
82
- result = result.deriveChild(index);
83
- }
84
- else {
85
- (0, index_js_4.assertArgument)(false, "invalid path component", `path[${i}]`, component);
86
- }
87
- }
88
- return result;
89
- }
90
- /**
91
- * An **HDNodeWallet** is a [[Signer]] backed by the private key derived
92
- * from an HD Node using the [[link-bip-32]] stantard.
93
- *
94
- * An HD Node forms a hierarchal structure with each HD Node having a
95
- * private key and the ability to derive child HD Nodes, defined by
96
- * a path indicating the index of each child.
97
- */
98
- class HDNodeWallet extends base_wallet_js_1.BaseWallet {
99
- /**
100
- * The compressed public key.
101
- */
102
- publicKey;
103
- /**
104
- * The fingerprint.
105
- *
106
- * A fingerprint allows quick qay to detect parent and child nodes,
107
- * but developers should be prepared to deal with collisions as it
108
- * is only 4 bytes.
109
- */
110
- fingerprint;
111
- /**
112
- * The parent fingerprint.
113
- */
114
- parentFingerprint;
115
- /**
116
- * The mnemonic used to create this HD Node, if available.
117
- *
118
- * Sources such as extended keys do not encode the mnemonic, in
119
- * which case this will be ``null``.
120
- */
121
- mnemonic;
122
- /**
123
- * The chaincode, which is effectively a public key used
124
- * to derive children.
125
- */
126
- chainCode;
127
- /**
128
- * The derivation path of this wallet.
129
- *
130
- * Since extended keys do not provide full path details, this
131
- * may be ``null``, if instantiated from a source that does not
132
- * encode it.
133
- */
134
- path;
135
- /**
136
- * The child index of this wallet. Values over ``2 *\* 31`` indicate
137
- * the node is hardened.
138
- */
139
- index;
140
- /**
141
- * The depth of this wallet, which is the number of components
142
- * in its path.
143
- */
144
- depth;
145
- /**
146
- * @private
147
- */
148
- constructor(guard, signingKey, parentFingerprint, chainCode, path, index, depth, mnemonic, provider) {
149
- super(signingKey, provider);
150
- (0, index_js_4.assertPrivate)(guard, _guard, "HDNodeWallet");
151
- (0, index_js_4.defineProperties)(this, { publicKey: signingKey.publicKey });
152
- const fingerprint = (0, index_js_4.dataSlice)((0, index_js_1.ripemd160)((0, index_js_1.sha256)(this.publicKey)), 0, 4);
153
- (0, index_js_4.defineProperties)(this, {
154
- parentFingerprint, fingerprint,
155
- chainCode, path, index, depth
156
- });
157
- (0, index_js_4.defineProperties)(this, { mnemonic });
158
- }
159
- connect(provider) {
160
- return new HDNodeWallet(_guard, this.signingKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.mnemonic, provider);
161
- }
162
- #account() {
163
- const account = { address: this.address, privateKey: this.privateKey };
164
- const m = this.mnemonic;
165
- if (this.path && m && m.wordlist.locale === "en" && m.password === "") {
166
- account.mnemonic = {
167
- path: this.path,
168
- locale: "en",
169
- entropy: m.entropy
170
- };
171
- }
172
- return account;
173
- }
174
- /**
175
- * Resolves to a [JSON Keystore Wallet](json-wallets) encrypted with
176
- * %%password%%.
177
- *
178
- * If %%progressCallback%% is specified, it will receive periodic
179
- * updates as the encryption process progreses.
180
- */
181
- async encrypt(password, progressCallback) {
182
- return await (0, json_keystore_js_1.encryptKeystoreJson)(this.#account(), password, { progressCallback });
183
- }
184
- /**
185
- * Returns a [JSON Keystore Wallet](json-wallets) encryped with
186
- * %%password%%.
187
- *
188
- * It is preferred to use the [async version](encrypt) instead,
189
- * which allows a [[ProgressCallback]] to keep the user informed.
190
- *
191
- * This method will block the event loop (freezing all UI) until
192
- * it is complete, which may be a non-trivial duration.
193
- */
194
- encryptSync(password) {
195
- return (0, json_keystore_js_1.encryptKeystoreJsonSync)(this.#account(), password);
196
- }
197
- /**
198
- * The extended key.
199
- *
200
- * This key will begin with the prefix ``xpriv`` and can be used to
201
- * reconstruct this HD Node to derive its children.
202
- */
203
- get extendedKey() {
204
- // We only support the mainnet values for now, but if anyone needs
205
- // testnet values, let me know. I believe current sentiment is that
206
- // we should always use mainnet, and use BIP-44 to derive the network
207
- // - Mainnet: public=0x0488B21E, private=0x0488ADE4
208
- // - Testnet: public=0x043587CF, private=0x04358394
209
- (0, index_js_4.assert)(this.depth < 256, "Depth too deep", "UNSUPPORTED_OPERATION", { operation: "extendedKey" });
210
- return encodeBase58Check((0, index_js_4.concat)([
211
- "0x0488ADE4", zpad(this.depth, 1), this.parentFingerprint,
212
- zpad(this.index, 4), this.chainCode,
213
- (0, index_js_4.concat)(["0x00", this.privateKey])
214
- ]));
215
- }
216
- /**
217
- * Returns true if this wallet has a path, providing a Type Guard
218
- * that the path is non-null.
219
- */
220
- hasPath() { return (this.path != null); }
221
- /**
222
- * Returns a neutered HD Node, which removes the private details
223
- * of an HD Node.
224
- *
225
- * A neutered node has no private key, but can be used to derive
226
- * child addresses and other public data about the HD Node.
227
- */
228
- neuter() {
229
- return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, this.provider);
230
- }
231
- /**
232
- * Return the child for %%index%%.
233
- */
234
- deriveChild(_index) {
235
- const index = (0, index_js_4.getNumber)(_index, "index");
236
- (0, index_js_4.assertArgument)(index <= 0xffffffff, "invalid index", "index", index);
237
- // Base path
238
- let path = this.path;
239
- if (path) {
240
- path += "/" + (index & ~HardenedBit);
241
- if (index & HardenedBit) {
242
- path += "'";
243
- }
244
- }
245
- const { IR, IL } = ser_I(index, this.chainCode, this.publicKey, this.privateKey);
246
- const ki = new index_js_1.SigningKey((0, index_js_4.toBeHex)(((0, index_js_4.toBigInt)(IL) + BigInt(this.privateKey)) % N, 32));
247
- return new HDNodeWallet(_guard, ki, this.fingerprint, (0, index_js_4.hexlify)(IR), path, index, this.depth + 1, this.mnemonic, this.provider);
248
- }
249
- /**
250
- * Return the HDNode for %%path%% from this node.
251
- */
252
- derivePath(path) {
253
- return derivePath(this, path);
254
- }
255
- static #fromSeed(_seed, mnemonic) {
256
- (0, index_js_4.assertArgument)((0, index_js_4.isBytesLike)(_seed), "invalid seed", "seed", "[REDACTED]");
257
- const seed = (0, index_js_4.getBytes)(_seed, "seed");
258
- (0, index_js_4.assertArgument)(seed.length >= 16 && seed.length <= 64, "invalid seed", "seed", "[REDACTED]");
259
- const I = (0, index_js_4.getBytes)((0, index_js_1.computeHmac)("sha512", MasterSecret, seed));
260
- const signingKey = new index_js_1.SigningKey((0, index_js_4.hexlify)(I.slice(0, 32)));
261
- return new HDNodeWallet(_guard, signingKey, "0x00000000", (0, index_js_4.hexlify)(I.slice(32)), "m", 0, 0, mnemonic, null);
262
- }
263
- /**
264
- * Creates a new HD Node from %%extendedKey%%.
265
- *
266
- * If the %%extendedKey%% will either have a prefix or ``xpub`` or
267
- * ``xpriv``, returning a neutered HD Node ([[HDNodeVoidWallet]])
268
- * or full HD Node ([[HDNodeWallet) respectively.
269
- */
270
- static fromExtendedKey(extendedKey) {
271
- const bytes = (0, index_js_4.toBeArray)((0, index_js_4.decodeBase58)(extendedKey)); // @TODO: redact
272
- (0, index_js_4.assertArgument)(bytes.length === 82 || encodeBase58Check(bytes.slice(0, 78)) === extendedKey, "invalid extended key", "extendedKey", "[ REDACTED ]");
273
- const depth = bytes[4];
274
- const parentFingerprint = (0, index_js_4.hexlify)(bytes.slice(5, 9));
275
- const index = parseInt((0, index_js_4.hexlify)(bytes.slice(9, 13)).substring(2), 16);
276
- const chainCode = (0, index_js_4.hexlify)(bytes.slice(13, 45));
277
- const key = bytes.slice(45, 78);
278
- switch ((0, index_js_4.hexlify)(bytes.slice(0, 4))) {
279
- // Public Key
280
- case "0x0488b21e":
281
- case "0x043587cf": {
282
- const publicKey = (0, index_js_4.hexlify)(key);
283
- return new HDNodeVoidWallet(_guard, (0, index_js_3.computeAddress)(publicKey), publicKey, parentFingerprint, chainCode, null, index, depth, null);
284
- }
285
- // Private Key
286
- case "0x0488ade4":
287
- case "0x04358394 ":
288
- if (key[0] !== 0) {
289
- break;
290
- }
291
- return new HDNodeWallet(_guard, new index_js_1.SigningKey(key.slice(1)), parentFingerprint, chainCode, null, index, depth, null, null);
292
- }
293
- (0, index_js_4.assertArgument)(false, "invalid extended key prefix", "extendedKey", "[ REDACTED ]");
294
- }
295
- /**
296
- * Creates a new random HDNode.
297
- */
298
- static createRandom(password, path, wordlist) {
299
- if (password == null) {
300
- password = "";
301
- }
302
- if (path == null) {
303
- path = exports.defaultPath;
304
- }
305
- if (wordlist == null) {
306
- wordlist = lang_en_js_1.LangEn.wordlist();
307
- }
308
- const mnemonic = mnemonic_js_1.Mnemonic.fromEntropy((0, index_js_1.randomBytes)(16), password, wordlist);
309
- return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);
310
- }
311
- /**
312
- * Create an HD Node from %%mnemonic%%.
313
- */
314
- static fromMnemonic(mnemonic, path) {
315
- if (!path) {
316
- path = exports.defaultPath;
317
- }
318
- return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);
319
- }
320
- /**
321
- * Creates an HD Node from a mnemonic %%phrase%%.
322
- */
323
- static fromPhrase(phrase, password, path, wordlist) {
324
- if (password == null) {
325
- password = "";
326
- }
327
- if (path == null) {
328
- path = exports.defaultPath;
329
- }
330
- if (wordlist == null) {
331
- wordlist = lang_en_js_1.LangEn.wordlist();
332
- }
333
- const mnemonic = mnemonic_js_1.Mnemonic.fromPhrase(phrase, password, wordlist);
334
- return HDNodeWallet.#fromSeed(mnemonic.computeSeed(), mnemonic).derivePath(path);
335
- }
336
- /**
337
- * Creates an HD Node from a %%seed%%.
338
- */
339
- static fromSeed(seed) {
340
- return HDNodeWallet.#fromSeed(seed, null);
341
- }
342
- }
343
- exports.HDNodeWallet = HDNodeWallet;
344
- /**
345
- * A **HDNodeVoidWallet** cannot sign, but provides access to
346
- * the children nodes of a [[link-bip-32]] HD wallet addresses.
347
- *
348
- * The can be created by using an extended ``xpub`` key to
349
- * [[HDNodeWallet_fromExtendedKey]] or by
350
- * [nuetering](HDNodeWallet-neuter) a [[HDNodeWallet]].
351
- */
352
- class HDNodeVoidWallet extends index_js_2.VoidSigner {
353
- /**
354
- * The compressed public key.
355
- */
356
- publicKey;
357
- /**
358
- * The fingerprint.
359
- *
360
- * A fingerprint allows quick qay to detect parent and child nodes,
361
- * but developers should be prepared to deal with collisions as it
362
- * is only 4 bytes.
363
- */
364
- fingerprint;
365
- /**
366
- * The parent node fingerprint.
367
- */
368
- parentFingerprint;
369
- /**
370
- * The chaincode, which is effectively a public key used
371
- * to derive children.
372
- */
373
- chainCode;
374
- /**
375
- * The derivation path of this wallet.
376
- *
377
- * Since extended keys do not provider full path details, this
378
- * may be ``null``, if instantiated from a source that does not
379
- * enocde it.
380
- */
381
- path;
382
- /**
383
- * The child index of this wallet. Values over ``2 *\* 31`` indicate
384
- * the node is hardened.
385
- */
386
- index;
387
- /**
388
- * The depth of this wallet, which is the number of components
389
- * in its path.
390
- */
391
- depth;
392
- /**
393
- * @private
394
- */
395
- constructor(guard, address, publicKey, parentFingerprint, chainCode, path, index, depth, provider) {
396
- super(address, provider);
397
- (0, index_js_4.assertPrivate)(guard, _guard, "HDNodeVoidWallet");
398
- (0, index_js_4.defineProperties)(this, { publicKey });
399
- const fingerprint = (0, index_js_4.dataSlice)((0, index_js_1.ripemd160)((0, index_js_1.sha256)(publicKey)), 0, 4);
400
- (0, index_js_4.defineProperties)(this, {
401
- publicKey, fingerprint, parentFingerprint, chainCode, path, index, depth
402
- });
403
- }
404
- connect(provider) {
405
- return new HDNodeVoidWallet(_guard, this.address, this.publicKey, this.parentFingerprint, this.chainCode, this.path, this.index, this.depth, provider);
406
- }
407
- /**
408
- * The extended key.
409
- *
410
- * This key will begin with the prefix ``xpub`` and can be used to
411
- * reconstruct this neutered key to derive its children addresses.
412
- */
413
- get extendedKey() {
414
- // We only support the mainnet values for now, but if anyone needs
415
- // testnet values, let me know. I believe current sentiment is that
416
- // we should always use mainnet, and use BIP-44 to derive the network
417
- // - Mainnet: public=0x0488B21E, private=0x0488ADE4
418
- // - Testnet: public=0x043587CF, private=0x04358394
419
- (0, index_js_4.assert)(this.depth < 256, "Depth too deep", "UNSUPPORTED_OPERATION", { operation: "extendedKey" });
420
- return encodeBase58Check((0, index_js_4.concat)([
421
- "0x0488B21E",
422
- zpad(this.depth, 1),
423
- this.parentFingerprint,
424
- zpad(this.index, 4),
425
- this.chainCode,
426
- this.publicKey,
427
- ]));
428
- }
429
- /**
430
- * Returns true if this wallet has a path, providing a Type Guard
431
- * that the path is non-null.
432
- */
433
- hasPath() { return (this.path != null); }
434
- /**
435
- * Return the child for %%index%%.
436
- */
437
- deriveChild(_index) {
438
- const index = (0, index_js_4.getNumber)(_index, "index");
439
- (0, index_js_4.assertArgument)(index <= 0xffffffff, "invalid index", "index", index);
440
- // Base path
441
- let path = this.path;
442
- if (path) {
443
- path += "/" + (index & ~HardenedBit);
444
- if (index & HardenedBit) {
445
- path += "'";
446
- }
447
- }
448
- const Ki = "";
449
- const address = "";
450
- return new HDNodeVoidWallet(_guard, address, Ki, this.fingerprint, (0, index_js_4.hexlify)(""), path, index, this.depth + 1, this.provider);
451
- }
452
- /**
453
- * Return the signer for %%path%% from this node.
454
- */
455
- derivePath(path) {
456
- return derivePath(this, path);
457
- }
458
- }
459
- exports.HDNodeVoidWallet = HDNodeVoidWallet;
460
- /*
461
- export class HDNodeWalletManager {
462
- #root: HDNodeWallet;
463
-
464
- constructor(phrase: string, password?: null | string, path?: null | string, locale?: null | Wordlist) {
465
- if (password == null) { password = ""; }
466
- if (path == null) { path = "m/44'/60'/0'/0"; }
467
- if (locale == null) { locale = LangEn.wordlist(); }
468
- this.#root = HDNodeWallet.fromPhrase(phrase, password, path, locale);
469
- }
470
-
471
- getSigner(index?: number): HDNodeWallet {
472
- return this.#root.deriveChild((index == null) ? 0: index);
473
- }
474
- }
475
- */
476
- /**
477
- * Returns the [[link-bip-32]] path for the account at %%index%%.
478
- *
479
- * This is the pattern used by wallets like Ledger.
480
- *
481
- * There is also an [alternate pattern](getIndexedAccountPath) used by
482
- * some software.
483
- */
484
- function getAccountPath(_index) {
485
- const index = (0, index_js_4.getNumber)(_index, "index");
486
- (0, index_js_4.assertArgument)(index >= 0 && index < HardenedBit, "invalid account index", "index", index);
487
- return `m/44'/60'/${index}'/0/0`;
488
- }
489
- exports.getAccountPath = getAccountPath;
490
- /**
491
- * Returns the path using an alternative pattern for deriving accounts,
492
- * at %%index%%.
493
- *
494
- * This derivation path uses the //index// component rather than the
495
- * //account// component to derive sequential accounts.
496
- *
497
- * This is the pattern used by wallets like MetaMask.
498
- */
499
- function getIndexedAccountPath(_index) {
500
- const index = (0, index_js_4.getNumber)(_index, "index");
501
- (0, index_js_4.assertArgument)(index >= 0 && index < HardenedBit, "invalid account index", "index", index);
502
- return `m/44'/60'/0'/0/${index}`;
503
- }
504
- exports.getIndexedAccountPath = getIndexedAccountPath;
505
- //# sourceMappingURL=hdwallet.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hdwallet.js","sourceRoot":"","sources":["../../src.ts/wallet/hdwallet.ts"],"names":[],"mappings":"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"}
@@ -1,27 +0,0 @@
1
- /**
2
- * @_subsection: api/wallet:JSON Wallets [json-wallets]
3
- */
4
- /**
5
- * The data stored within a JSON Crowdsale wallet is fairly
6
- * minimal.
7
- */
8
- export type CrowdsaleAccount = {
9
- privateKey: string;
10
- address: string;
11
- };
12
- /**
13
- * Returns true if %%json%% is a valid JSON Crowdsale wallet.
14
- */
15
- export declare function isCrowdsaleJson(json: string): boolean;
16
- /**
17
- * Before Ethereum launched, it was necessary to create a wallet
18
- * format for backers to use, which would be used to receive ether
19
- * as a reward for contributing to the project.
20
- *
21
- * The [[link-crowdsale]] format is now obsolete, but it is still
22
- * useful to support and the additional code is fairly trivial as
23
- * all the primitives required are used through core portions of
24
- * the library.
25
- */
26
- export declare function decryptCrowdsaleJson(json: string, _password: string | Uint8Array): CrowdsaleAccount;
27
- //# sourceMappingURL=json-crowdsale.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-crowdsale.d.ts","sourceRoot":"","sources":["../../src.ts/wallet/json-crowdsale.ts"],"names":[],"mappings":"AAAA;;GAEG;AAYH;;;GAGG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACnB,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMrD;AAID;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,gBAAgB,CA2BnG"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- /**
3
- * @_subsection: api/wallet:JSON Wallets [json-wallets]
4
- */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.decryptCrowdsaleJson = exports.isCrowdsaleJson = void 0;
7
- const aes_js_1 = require("aes-js");
8
- const index_js_1 = require("../address/index.js");
9
- const index_js_2 = require("../crypto/index.js");
10
- const index_js_3 = require("../hash/index.js");
11
- const index_js_4 = require("../utils/index.js");
12
- const utils_js_1 = require("./utils.js");
13
- /**
14
- * Returns true if %%json%% is a valid JSON Crowdsale wallet.
15
- */
16
- function isCrowdsaleJson(json) {
17
- try {
18
- const data = JSON.parse(json);
19
- if (data.encseed) {
20
- return true;
21
- }
22
- }
23
- catch (error) { }
24
- return false;
25
- }
26
- exports.isCrowdsaleJson = isCrowdsaleJson;
27
- // See: https://github.com/ethereum/pyethsaletool
28
- /**
29
- * Before Ethereum launched, it was necessary to create a wallet
30
- * format for backers to use, which would be used to receive ether
31
- * as a reward for contributing to the project.
32
- *
33
- * The [[link-crowdsale]] format is now obsolete, but it is still
34
- * useful to support and the additional code is fairly trivial as
35
- * all the primitives required are used through core portions of
36
- * the library.
37
- */
38
- function decryptCrowdsaleJson(json, _password) {
39
- const data = JSON.parse(json);
40
- const password = (0, utils_js_1.getPassword)(_password);
41
- // Ethereum Address
42
- const address = (0, index_js_1.getAddress)((0, utils_js_1.spelunk)(data, "ethaddr:string!"));
43
- // Encrypted Seed
44
- const encseed = (0, utils_js_1.looseArrayify)((0, utils_js_1.spelunk)(data, "encseed:string!"));
45
- (0, index_js_4.assertArgument)(encseed && (encseed.length % 16) === 0, "invalid encseed", "json", json);
46
- const key = (0, index_js_4.getBytes)((0, index_js_2.pbkdf2)(password, password, 2000, 32, "sha256")).slice(0, 16);
47
- const iv = encseed.slice(0, 16);
48
- const encryptedSeed = encseed.slice(16);
49
- // Decrypt the seed
50
- const aesCbc = new aes_js_1.CBC(key, iv);
51
- const seed = (0, aes_js_1.pkcs7Strip)((0, index_js_4.getBytes)(aesCbc.decrypt(encryptedSeed)));
52
- // This wallet format is weird... Convert the binary encoded hex to a string.
53
- let seedHex = "";
54
- for (let i = 0; i < seed.length; i++) {
55
- seedHex += String.fromCharCode(seed[i]);
56
- }
57
- return { address, privateKey: (0, index_js_3.id)(seedHex) };
58
- }
59
- exports.decryptCrowdsaleJson = decryptCrowdsaleJson;
60
- //# sourceMappingURL=json-crowdsale.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"json-crowdsale.js","sourceRoot":"","sources":["../../src.ts/wallet/json-crowdsale.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,mCAAyC;AAEzC,kDAAiD;AACjD,iDAA4C;AAC5C,+CAAsC;AACtC,gDAA6D;AAE7D,yCAAiE;AAYjE;;GAEG;AACH,SAAgB,eAAe,CAAC,IAAY;IACxC,IAAI;QACA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,OAAO,IAAI,CAAC;SAAE;KACrC;IAAC,OAAO,KAAK,EAAE,GAAG;IACnB,OAAO,KAAK,CAAC;AACjB,CAAC;AAND,0CAMC;AAED,iDAAiD;AAEjD;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAAC,IAAY,EAAE,SAA8B;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,IAAA,sBAAW,EAAC,SAAS,CAAC,CAAC;IAExC,mBAAmB;IACnB,MAAM,OAAO,GAAG,IAAA,qBAAU,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE7D,iBAAiB;IACjB,MAAM,OAAO,GAAG,IAAA,wBAAa,EAAC,IAAA,kBAAO,EAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAChE,IAAA,yBAAc,EAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAExF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,IAAA,iBAAM,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAElF,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAExC,mBAAmB;IACnB,MAAM,MAAM,GAAG,IAAI,YAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,IAAI,GAAG,IAAA,mBAAU,EAAC,IAAA,mBAAQ,EAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAEjE,6EAA6E;IAC7E,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,OAAO,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAA,aAAE,EAAC,OAAO,CAAC,EAAE,CAAC;AAChD,CAAC;AA3BD,oDA2BC"}