beignet 0.0.1

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 (329) hide show
  1. package/.eslintignore +4 -0
  2. package/.eslintrc +40 -0
  3. package/.prettierrc +9 -0
  4. package/LICENSE +21 -0
  5. package/README.md +166 -0
  6. package/dist/electrum/constants.js +31 -0
  7. package/dist/electrum/constants.js.map +1 -0
  8. package/dist/electrum/index.js +552 -0
  9. package/dist/electrum/index.js.map +1 -0
  10. package/dist/index.js +23 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/shapes/electrum.js +14 -0
  13. package/dist/shapes/electrum.js.map +1 -0
  14. package/dist/shapes/index.js +19 -0
  15. package/dist/shapes/index.js.map +1 -0
  16. package/dist/shapes/wallet.js +115 -0
  17. package/dist/shapes/wallet.js.map +1 -0
  18. package/dist/transaction/index.js +692 -0
  19. package/dist/transaction/index.js.map +1 -0
  20. package/dist/types/electrum/constants.d.ts +7 -0
  21. package/dist/types/electrum/index.d.ts +85 -0
  22. package/dist/types/electrum.js +9 -0
  23. package/dist/types/electrum.js.map +1 -0
  24. package/dist/types/index.d.ts +6 -0
  25. package/dist/types/index.js +20 -0
  26. package/dist/types/index.js.map +1 -0
  27. package/dist/types/shapes/electrum.d.ts +5 -0
  28. package/dist/types/shapes/index.d.ts +2 -0
  29. package/dist/types/shapes/wallet.d.ts +10 -0
  30. package/dist/types/transaction/index.d.ts +92 -0
  31. package/dist/types/transaction.js +12 -0
  32. package/dist/types/transaction.js.map +1 -0
  33. package/dist/types/types/electrum.d.ts +113 -0
  34. package/dist/types/types/index.d.ts +3 -0
  35. package/dist/types/types/transaction.d.ts +51 -0
  36. package/dist/types/types/wallet.d.ts +400 -0
  37. package/dist/types/utils/conversion.d.ts +10 -0
  38. package/dist/types/utils/derivation-path.d.ts +19 -0
  39. package/dist/types/utils/electrum.d.ts +10 -0
  40. package/dist/types/utils/exchange-rate.d.ts +30 -0
  41. package/dist/types/utils/helpers.d.ts +23 -0
  42. package/dist/types/utils/index.d.ts +7 -0
  43. package/dist/types/utils/result.d.ts +16 -0
  44. package/dist/types/utils/transaction.d.ts +21 -0
  45. package/dist/types/utils/wallet.d.ts +47 -0
  46. package/dist/types/wallet/constants.d.ts +12 -0
  47. package/dist/types/wallet/index.d.ts +214 -0
  48. package/dist/types/wallet.js +36 -0
  49. package/dist/types/wallet.js.map +1 -0
  50. package/dist/utils/conversion.js +52 -0
  51. package/dist/utils/conversion.js.map +1 -0
  52. package/dist/utils/derivation-path.js +104 -0
  53. package/dist/utils/derivation-path.js.map +1 -0
  54. package/dist/utils/electrum.js +149 -0
  55. package/dist/utils/electrum.js.map +1 -0
  56. package/dist/utils/exchange-rate.js +49 -0
  57. package/dist/utils/exchange-rate.js.map +1 -0
  58. package/dist/utils/helpers.js +137 -0
  59. package/dist/utils/helpers.js.map +1 -0
  60. package/dist/utils/index.js +24 -0
  61. package/dist/utils/index.js.map +1 -0
  62. package/dist/utils/result.js +36 -0
  63. package/dist/utils/result.js.map +1 -0
  64. package/dist/utils/transaction.js +327 -0
  65. package/dist/utils/transaction.js.map +1 -0
  66. package/dist/utils/wallet.js +227 -0
  67. package/dist/utils/wallet.js.map +1 -0
  68. package/dist/wallet/constants.js +15 -0
  69. package/dist/wallet/constants.js.map +1 -0
  70. package/dist/wallet/index.js +2113 -0
  71. package/dist/wallet/index.js.map +1 -0
  72. package/docs/html/.nojekyll +1 -0
  73. package/docs/html/assets/highlight.css +22 -0
  74. package/docs/html/assets/main.js +58 -0
  75. package/docs/html/assets/search.js +1 -0
  76. package/docs/html/assets/style.css +1367 -0
  77. package/docs/html/classes/Electrum.html +812 -0
  78. package/docs/html/classes/Transaction.html +687 -0
  79. package/docs/html/classes/Wallet.html +2030 -0
  80. package/docs/html/enums/EAddressType.html +227 -0
  81. package/docs/html/enums/EAvailableNetworks.html +255 -0
  82. package/docs/html/enums/EBoostType.html +220 -0
  83. package/docs/html/enums/EFeeId.html +241 -0
  84. package/docs/html/enums/EPaymentType.html +220 -0
  85. package/docs/html/enums/EProtocol.html +220 -0
  86. package/docs/html/enums/EUnit.html +227 -0
  87. package/docs/html/functions/availableNetworks.html +200 -0
  88. package/docs/html/functions/constructByteCountParam.html +210 -0
  89. package/docs/html/functions/decodeOpReturnMessage.html +202 -0
  90. package/docs/html/functions/decodeRawTransaction.html +210 -0
  91. package/docs/html/functions/err.html +214 -0
  92. package/docs/html/functions/formatKeyDerivationPath.html +219 -0
  93. package/docs/html/functions/formatPeerData.html +207 -0
  94. package/docs/html/functions/generateMnemonic.html +223 -0
  95. package/docs/html/functions/generateWalletId.html +202 -0
  96. package/docs/html/functions/getAddressFromScriptPubKey.html +209 -0
  97. package/docs/html/functions/getAddressTypeFromPath.html +206 -0
  98. package/docs/html/functions/getByteCount.html +206 -0
  99. package/docs/html/functions/getDataFallback.html +207 -0
  100. package/docs/html/functions/getDefaultPort.html +209 -0
  101. package/docs/html/functions/getDefaultWalletData.html +200 -0
  102. package/docs/html/functions/getDefaultWalletDataKeys.html +200 -0
  103. package/docs/html/functions/getExchangeRates.html +200 -0
  104. package/docs/html/functions/getHighestUsedIndexFromTxHashes.html +216 -0
  105. package/docs/html/functions/getKeyDerivationPath.html +211 -0
  106. package/docs/html/functions/getKeyDerivationPathObject.html +216 -0
  107. package/docs/html/functions/getKeyDerivationPathString.html +220 -0
  108. package/docs/html/functions/getKeyValue.html +206 -0
  109. package/docs/html/functions/getPeers.html +211 -0
  110. package/docs/html/functions/getProtocolForPort.html +209 -0
  111. package/docs/html/functions/getScriptHash.html +210 -0
  112. package/docs/html/functions/getSeed.html +209 -0
  113. package/docs/html/functions/getSeedHash.html +206 -0
  114. package/docs/html/functions/getSha256.html +206 -0
  115. package/docs/html/functions/getStorageKeyValues.html +209 -0
  116. package/docs/html/functions/getTxFee.html +210 -0
  117. package/docs/html/functions/getWalletDataStorageKey.html +206 -0
  118. package/docs/html/functions/isValidBech32mEncodedString.html +211 -0
  119. package/docs/html/functions/objectKeys-1.html +211 -0
  120. package/docs/html/functions/objectsMatch.html +210 -0
  121. package/docs/html/functions/ok.html +214 -0
  122. package/docs/html/functions/parseOnChainPaymentRequest.html +204 -0
  123. package/docs/html/functions/reduceValue.html +215 -0
  124. package/docs/html/functions/removeDustOutputs.html +206 -0
  125. package/docs/html/functions/setReplaceByFee.html +210 -0
  126. package/docs/html/functions/shuffleArray.html +211 -0
  127. package/docs/html/functions/validateAddress.html +216 -0
  128. package/docs/html/functions/validateMnemonic.html +206 -0
  129. package/docs/html/functions/validateTransaction.html +206 -0
  130. package/docs/html/index.html +360 -0
  131. package/docs/html/interfaces/IAddInput.html +231 -0
  132. package/docs/html/interfaces/IAddress.html +247 -0
  133. package/docs/html/interfaces/IAddressData.html +231 -0
  134. package/docs/html/interfaces/IAddressType.html +199 -0
  135. package/docs/html/interfaces/IAddressTypeData.html +252 -0
  136. package/docs/html/interfaces/IAddresses.html +199 -0
  137. package/docs/html/interfaces/IBoostedTransaction.html +238 -0
  138. package/docs/html/interfaces/IBoostedTransactions.html +199 -0
  139. package/docs/html/interfaces/ICreateTransaction.html +224 -0
  140. package/docs/html/interfaces/ICustomGetAddress.html +231 -0
  141. package/docs/html/interfaces/ICustomGetScriptHash.html +224 -0
  142. package/docs/html/interfaces/IElectrumGetAddressBalanceRes.html +235 -0
  143. package/docs/html/interfaces/IExchangeRates.html +210 -0
  144. package/docs/html/interfaces/IFormattedPeerData.html +245 -0
  145. package/docs/html/interfaces/IFormattedTransaction.html +343 -0
  146. package/docs/html/interfaces/IFormattedTransactions.html +199 -0
  147. package/docs/html/interfaces/IGenerateAddresses.html +252 -0
  148. package/docs/html/interfaces/IGenerateAddressesResponse.html +224 -0
  149. package/docs/html/interfaces/IGetAddress.html +231 -0
  150. package/docs/html/interfaces/IGetAddressBalanceRes.html +226 -0
  151. package/docs/html/interfaces/IGetAddressByPath.html +224 -0
  152. package/docs/html/interfaces/IGetAddressHistoryResponse.html +269 -0
  153. package/docs/html/interfaces/IGetAddressResponse.html +231 -0
  154. package/docs/html/interfaces/IGetAddressScriptHashesHistoryResponse.html +245 -0
  155. package/docs/html/interfaces/IGetDerivationPath.html +259 -0
  156. package/docs/html/interfaces/IGetFeeEstimatesResponse.html +238 -0
  157. package/docs/html/interfaces/IGetHeaderResponse.html +245 -0
  158. package/docs/html/interfaces/IGetNextAvailableAddressResponse.html +238 -0
  159. package/docs/html/interfaces/IGetTransactions.html +245 -0
  160. package/docs/html/interfaces/IGetTransactionsFromInputs.html +245 -0
  161. package/docs/html/interfaces/IGetUtxosResponse.html +224 -0
  162. package/docs/html/interfaces/IHeader.html +231 -0
  163. package/docs/html/interfaces/IIndexes.html +238 -0
  164. package/docs/html/interfaces/IKeyDerivationPath.html +247 -0
  165. package/docs/html/interfaces/IKeyDerivationPathData.html +224 -0
  166. package/docs/html/interfaces/INewBlock.html +224 -0
  167. package/docs/html/interfaces/IOnchainFees.html +245 -0
  168. package/docs/html/interfaces/IOutput.html +231 -0
  169. package/docs/html/interfaces/IPeerData.html +231 -0
  170. package/docs/html/interfaces/IRbfData.html +252 -0
  171. package/docs/html/interfaces/ISend.html +224 -0
  172. package/docs/html/interfaces/ISendTransaction.html +322 -0
  173. package/docs/html/interfaces/ISendTx.html +231 -0
  174. package/docs/html/interfaces/ISetupTransaction.html +238 -0
  175. package/docs/html/interfaces/ISubscribeToAddress.html +247 -0
  176. package/docs/html/interfaces/ISubscribeToHeader.html +245 -0
  177. package/docs/html/interfaces/ITargets.html +238 -0
  178. package/docs/html/interfaces/ITransaction.html +281 -0
  179. package/docs/html/interfaces/ITxHash.html +217 -0
  180. package/docs/html/interfaces/ITxHashes.html +235 -0
  181. package/docs/html/interfaces/IUtxo.html +275 -0
  182. package/docs/html/interfaces/IVin.html +252 -0
  183. package/docs/html/interfaces/IVout.html +246 -0
  184. package/docs/html/interfaces/IWallet.html +350 -0
  185. package/docs/html/interfaces/IWalletData.html +343 -0
  186. package/docs/html/types/ElectrumConnectionPubSub.html +233 -0
  187. package/docs/html/types/ElectrumConnectionSubscription.html +204 -0
  188. package/docs/html/types/InputData.html +203 -0
  189. package/docs/html/types/ObjectKeys.html +198 -0
  190. package/docs/html/types/Result.html +201 -0
  191. package/docs/html/types/TAddressIndexInfo.html +204 -0
  192. package/docs/html/types/TAddressLabel.html +193 -0
  193. package/docs/html/types/TAddressType.html +193 -0
  194. package/docs/html/types/TAddressTypeContent.html +198 -0
  195. package/docs/html/types/TAddressTypes.html +193 -0
  196. package/docs/html/types/TAvailableNetworks.html +193 -0
  197. package/docs/html/types/TConnectToElectrumRes.html +193 -0
  198. package/docs/html/types/TDecodeRawTx.html +214 -0
  199. package/docs/html/types/TElectrumNetworks.html +193 -0
  200. package/docs/html/types/TGetAddressHistory.html +200 -0
  201. package/docs/html/types/TGetByteCountInput.html +193 -0
  202. package/docs/html/types/TGetByteCountInputs.html +193 -0
  203. package/docs/html/types/TGetByteCountOutput.html +193 -0
  204. package/docs/html/types/TGetByteCountOutputs.html +193 -0
  205. package/docs/html/types/TGetData.html +211 -0
  206. package/docs/html/types/TGetTotalFeeObj.html +204 -0
  207. package/docs/html/types/TKeyDerivationAccount.html +193 -0
  208. package/docs/html/types/TKeyDerivationChange.html +193 -0
  209. package/docs/html/types/TKeyDerivationCoinType.html +193 -0
  210. package/docs/html/types/TKeyDerivationIndex.html +193 -0
  211. package/docs/html/types/TKeyDerivationPurpose.html +193 -0
  212. package/docs/html/types/TMessageDataMap.html +210 -0
  213. package/docs/html/types/TMessageKeys.html +193 -0
  214. package/docs/html/types/TOnMessage.html +213 -0
  215. package/docs/html/types/TProcessUnconfirmedTransactions.html +202 -0
  216. package/docs/html/types/TProtocol.html +193 -0
  217. package/docs/html/types/TServer.html +204 -0
  218. package/docs/html/types/TSetData.html +213 -0
  219. package/docs/html/types/TSetupTransactionResponse.html +193 -0
  220. package/docs/html/types/TStorage.html +200 -0
  221. package/docs/html/types/TSubscribedReceive.html +193 -0
  222. package/docs/html/types/TTransactionMessage.html +198 -0
  223. package/docs/html/types/TTxResponse.html +206 -0
  224. package/docs/html/types/TTxResult.html +200 -0
  225. package/docs/html/types/TUnspentAddressScriptHashData.html +198 -0
  226. package/docs/html/types/TWalletDataKeys.html +193 -0
  227. package/docs/html/variables/defaultElectrumPorts.html +193 -0
  228. package/docs/html/variables/electrumConnection.html +199 -0
  229. package/docs/html/variables/mostUsedExchangeTickers.html +241 -0
  230. package/docs/markdown/.nojekyll +1 -0
  231. package/docs/markdown/README.md +1875 -0
  232. package/docs/markdown/classes/Electrum.md +718 -0
  233. package/docs/markdown/classes/Transaction.md +536 -0
  234. package/docs/markdown/classes/Wallet.md +2189 -0
  235. package/docs/markdown/enums/EAddressType.md +41 -0
  236. package/docs/markdown/enums/EAvailableNetworks.md +85 -0
  237. package/docs/markdown/enums/EBoostType.md +30 -0
  238. package/docs/markdown/enums/EFeeId.md +63 -0
  239. package/docs/markdown/enums/EPaymentType.md +30 -0
  240. package/docs/markdown/enums/EProtocol.md +30 -0
  241. package/docs/markdown/enums/EUnit.md +41 -0
  242. package/docs/markdown/interfaces/IAddInput.md +41 -0
  243. package/docs/markdown/interfaces/IAddress.md +69 -0
  244. package/docs/markdown/interfaces/IAddressData.md +41 -0
  245. package/docs/markdown/interfaces/IAddressType.md +7 -0
  246. package/docs/markdown/interfaces/IAddressTypeData.md +74 -0
  247. package/docs/markdown/interfaces/IAddresses.md +7 -0
  248. package/docs/markdown/interfaces/IBoostedTransaction.md +52 -0
  249. package/docs/markdown/interfaces/IBoostedTransactions.md +7 -0
  250. package/docs/markdown/interfaces/ICreateTransaction.md +30 -0
  251. package/docs/markdown/interfaces/ICustomGetAddress.md +41 -0
  252. package/docs/markdown/interfaces/ICustomGetScriptHash.md +30 -0
  253. package/docs/markdown/interfaces/IElectrumGetAddressBalanceRes.md +55 -0
  254. package/docs/markdown/interfaces/IExchangeRates.md +7 -0
  255. package/docs/markdown/interfaces/IFormattedPeerData.md +63 -0
  256. package/docs/markdown/interfaces/IFormattedTransaction.md +217 -0
  257. package/docs/markdown/interfaces/IFormattedTransactions.md +7 -0
  258. package/docs/markdown/interfaces/IGenerateAddresses.md +74 -0
  259. package/docs/markdown/interfaces/IGenerateAddressesResponse.md +30 -0
  260. package/docs/markdown/interfaces/IGetAddress.md +41 -0
  261. package/docs/markdown/interfaces/IGetAddressBalanceRes.md +36 -0
  262. package/docs/markdown/interfaces/IGetAddressByPath.md +30 -0
  263. package/docs/markdown/interfaces/IGetAddressHistoryResponse.md +121 -0
  264. package/docs/markdown/interfaces/IGetAddressResponse.md +41 -0
  265. package/docs/markdown/interfaces/IGetAddressScriptHashesHistoryResponse.md +63 -0
  266. package/docs/markdown/interfaces/IGetDerivationPath.md +100 -0
  267. package/docs/markdown/interfaces/IGetFeeEstimatesResponse.md +52 -0
  268. package/docs/markdown/interfaces/IGetHeaderResponse.md +63 -0
  269. package/docs/markdown/interfaces/IGetNextAvailableAddressResponse.md +52 -0
  270. package/docs/markdown/interfaces/IGetTransactions.md +63 -0
  271. package/docs/markdown/interfaces/IGetTransactionsFromInputs.md +63 -0
  272. package/docs/markdown/interfaces/IGetUtxosResponse.md +30 -0
  273. package/docs/markdown/interfaces/IHeader.md +41 -0
  274. package/docs/markdown/interfaces/IIndexes.md +52 -0
  275. package/docs/markdown/interfaces/IKeyDerivationPath.md +69 -0
  276. package/docs/markdown/interfaces/IKeyDerivationPathData.md +30 -0
  277. package/docs/markdown/interfaces/INewBlock.md +30 -0
  278. package/docs/markdown/interfaces/IOnchainFees.md +63 -0
  279. package/docs/markdown/interfaces/IOutput.md +41 -0
  280. package/docs/markdown/interfaces/IPeerData.md +41 -0
  281. package/docs/markdown/interfaces/IRbfData.md +74 -0
  282. package/docs/markdown/interfaces/ISend.md +30 -0
  283. package/docs/markdown/interfaces/ISendTransaction.md +184 -0
  284. package/docs/markdown/interfaces/ISendTx.md +41 -0
  285. package/docs/markdown/interfaces/ISetupTransaction.md +52 -0
  286. package/docs/markdown/interfaces/ISubscribeToAddress.md +60 -0
  287. package/docs/markdown/interfaces/ISubscribeToHeader.md +59 -0
  288. package/docs/markdown/interfaces/ITargets.md +52 -0
  289. package/docs/markdown/interfaces/ITransaction.md +88 -0
  290. package/docs/markdown/interfaces/ITxHash.md +19 -0
  291. package/docs/markdown/interfaces/ITxHashes.md +55 -0
  292. package/docs/markdown/interfaces/IUtxo.md +112 -0
  293. package/docs/markdown/interfaces/IVin.md +70 -0
  294. package/docs/markdown/interfaces/IVout.md +52 -0
  295. package/docs/markdown/interfaces/IWallet.md +209 -0
  296. package/docs/markdown/interfaces/IWalletData.md +217 -0
  297. package/example/helpers.ts +76 -0
  298. package/example/index.ts +77 -0
  299. package/package.json +69 -0
  300. package/src/electrum/constants.ts +28 -0
  301. package/src/electrum/index.ts +838 -0
  302. package/src/index.ts +6 -0
  303. package/src/shapes/electrum.ts +13 -0
  304. package/src/shapes/index.ts +2 -0
  305. package/src/shapes/wallet.ts +133 -0
  306. package/src/transaction/index.ts +1078 -0
  307. package/src/types/electrum.ts +139 -0
  308. package/src/types/index.ts +3 -0
  309. package/src/types/transaction.ts +58 -0
  310. package/src/types/wallet.ts +503 -0
  311. package/src/utils/conversion.ts +88 -0
  312. package/src/utils/derivation-path.ts +171 -0
  313. package/src/utils/electrum.ts +188 -0
  314. package/src/utils/exchange-rate.ts +70 -0
  315. package/src/utils/helpers.ts +191 -0
  316. package/src/utils/index.ts +7 -0
  317. package/src/utils/result.ts +79 -0
  318. package/src/utils/transaction.ts +417 -0
  319. package/src/utils/wallet.ts +351 -0
  320. package/src/wallet/constants.ts +24 -0
  321. package/src/wallet/index.ts +3304 -0
  322. package/tests/constants.ts +9 -0
  323. package/tests/derivation.test.ts +146 -0
  324. package/tests/electrum.test.ts +137 -0
  325. package/tests/storage.test.ts +222 -0
  326. package/tests/transaction.test.ts +187 -0
  327. package/tests/wallet.test.ts +307 -0
  328. package/tsconfig.json +32 -0
  329. package/typedoc.json +5 -0
@@ -0,0 +1,227 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.getTxFee = exports.getStorageKeyValues = exports.getWalletDataStorageKey = exports.generateWalletId = exports.getSeedHash = exports.getSeed = exports.decodeOpReturnMessage = exports.getDataFallback = exports.shuffleArray = exports.reduceValue = exports.availableNetworks = exports.isValidBech32mEncodedString = exports.getHighestUsedIndexFromTxHashes = exports.formatKeyDerivationPath = exports.objectKeys = exports.getKeyValue = exports.getDefaultWalletDataKeys = exports.getDefaultWalletData = void 0;
30
+ const shapes_1 = require("../shapes");
31
+ const lodash_clonedeep_1 = __importDefault(require("lodash.clonedeep"));
32
+ const types_1 = require("../types");
33
+ const result_1 = require("./result");
34
+ const derivation_path_1 = require("./derivation-path");
35
+ const bech32_1 = require("bech32");
36
+ const bip39 = __importStar(require("bip39"));
37
+ const bitcoin = __importStar(require("bitcoinjs-lib"));
38
+ const constants_1 = require("../wallet/constants");
39
+ const getDefaultWalletData = () => {
40
+ return (0, lodash_clonedeep_1.default)(shapes_1.defaultWalletData);
41
+ };
42
+ exports.getDefaultWalletData = getDefaultWalletData;
43
+ const getDefaultWalletDataKeys = () => {
44
+ return Object.keys((0, exports.getDefaultWalletData)());
45
+ };
46
+ exports.getDefaultWalletDataKeys = getDefaultWalletDataKeys;
47
+ const getKeyValue = (key) => {
48
+ const parts = key.split('-');
49
+ return parts[parts.length - 1];
50
+ };
51
+ exports.getKeyValue = getKeyValue;
52
+ exports.objectKeys = Object.keys;
53
+ const formatKeyDerivationPath = ({ path, purpose, network, changeAddress = false, index = '0', addressType = types_1.EAddressType.p2wpkh }) => {
54
+ try {
55
+ if (typeof path === 'string') {
56
+ const derivationPathResponse = (0, derivation_path_1.getKeyDerivationPathObject)({
57
+ path,
58
+ purpose,
59
+ network,
60
+ changeAddress,
61
+ index
62
+ });
63
+ if (derivationPathResponse.isErr()) {
64
+ return (0, result_1.err)(derivationPathResponse.error.message);
65
+ }
66
+ path = derivationPathResponse.value;
67
+ }
68
+ const pathObject = path;
69
+ const pathStringResponse = (0, derivation_path_1.getKeyDerivationPathString)({
70
+ addressType,
71
+ path: pathObject,
72
+ purpose,
73
+ network,
74
+ changeAddress,
75
+ index
76
+ });
77
+ if (pathStringResponse.isErr()) {
78
+ return (0, result_1.err)(pathStringResponse.error.message);
79
+ }
80
+ const pathString = pathStringResponse.value;
81
+ return (0, result_1.ok)({ pathObject, pathString });
82
+ }
83
+ catch (e) {
84
+ return (0, result_1.err)(e);
85
+ }
86
+ };
87
+ exports.formatKeyDerivationPath = formatKeyDerivationPath;
88
+ const getHighestUsedIndexFromTxHashes = ({ txHashes, addresses, changeAddresses, addressIndex, changeAddressIndex }) => {
89
+ try {
90
+ let foundAddressIndex = false;
91
+ let foundChangeAddressIndex = false;
92
+ txHashes = txHashes.flat();
93
+ txHashes.forEach(({ scriptHash }) => {
94
+ if (scriptHash in addresses &&
95
+ addresses[scriptHash].index >= addressIndex.index) {
96
+ foundAddressIndex = true;
97
+ addressIndex = addresses[scriptHash];
98
+ }
99
+ else if (scriptHash in changeAddresses &&
100
+ changeAddresses[scriptHash].index >= changeAddressIndex.index) {
101
+ foundChangeAddressIndex = true;
102
+ changeAddressIndex = changeAddresses[scriptHash];
103
+ }
104
+ });
105
+ const data = {
106
+ addressIndex,
107
+ changeAddressIndex,
108
+ foundAddressIndex,
109
+ foundChangeAddressIndex
110
+ };
111
+ return (0, result_1.ok)(data);
112
+ }
113
+ catch (e) {
114
+ return (0, result_1.err)(e);
115
+ }
116
+ };
117
+ exports.getHighestUsedIndexFromTxHashes = getHighestUsedIndexFromTxHashes;
118
+ const isValidBech32mEncodedString = (address) => {
119
+ try {
120
+ const decoded = bech32_1.bech32m.decode(address);
121
+ if (decoded.prefix === 'bc') {
122
+ return { isValid: true, network: types_1.EAvailableNetworks.bitcoin };
123
+ }
124
+ else if (decoded.prefix === 'tb') {
125
+ return { isValid: true, network: types_1.EAvailableNetworks.bitcoinTestnet };
126
+ }
127
+ else if (decoded.prefix === 'bcrt') {
128
+ return { isValid: true, network: types_1.EAvailableNetworks.bitcoinRegtest };
129
+ }
130
+ }
131
+ catch (error) {
132
+ return { isValid: false, network: types_1.EAvailableNetworks.bitcoin };
133
+ }
134
+ return { isValid: false, network: types_1.EAvailableNetworks.bitcoin };
135
+ };
136
+ exports.isValidBech32mEncodedString = isValidBech32mEncodedString;
137
+ const availableNetworks = () => Object.values(types_1.EAvailableNetworks);
138
+ exports.availableNetworks = availableNetworks;
139
+ const reduceValue = ({ arr, value }) => {
140
+ try {
141
+ if (!value) {
142
+ return (0, result_1.err)('No value specified.');
143
+ }
144
+ return (0, result_1.ok)(arr.reduce((acc, cur) => {
145
+ return acc + Number(cur[value]);
146
+ }, 0) || 0);
147
+ }
148
+ catch (e) {
149
+ return (0, result_1.err)(e);
150
+ }
151
+ };
152
+ exports.reduceValue = reduceValue;
153
+ const shuffleArray = (array) => {
154
+ const newArray = [...array];
155
+ for (let i = newArray.length - 1; i > 0; i--) {
156
+ const j = Math.floor(Math.random() * (i + 1));
157
+ [newArray[i], newArray[j]] = [newArray[j], newArray[i]];
158
+ }
159
+ return newArray;
160
+ };
161
+ exports.shuffleArray = shuffleArray;
162
+ const getDataFallback = async (key) => {
163
+ try {
164
+ return (0, result_1.ok)((0, lodash_clonedeep_1.default)(shapes_1.defaultWalletData[(0, exports.getKeyValue)(key)]));
165
+ }
166
+ catch (e) {
167
+ return (0, result_1.ok)((0, exports.getDefaultWalletData)()[key]);
168
+ }
169
+ };
170
+ exports.getDataFallback = getDataFallback;
171
+ const decodeOpReturnMessage = (opReturn = '') => {
172
+ const messages = [];
173
+ try {
174
+ if (opReturn.includes('OP_RETURN')) {
175
+ opReturn = opReturn.replace('OP_RETURN', '');
176
+ opReturn = opReturn.trim();
177
+ }
178
+ const regex = /[0-9A-Fa-f]{6}/g;
179
+ const data = opReturn.split(' ');
180
+ data.forEach((msg) => {
181
+ try {
182
+ if (regex.test(msg)) {
183
+ const message = Buffer.from(msg, 'hex').toString();
184
+ messages.push(message);
185
+ }
186
+ }
187
+ catch (_a) { }
188
+ });
189
+ return messages;
190
+ }
191
+ catch (_a) {
192
+ return messages;
193
+ }
194
+ };
195
+ exports.decodeOpReturnMessage = decodeOpReturnMessage;
196
+ const getSeed = (mnemonic, bip39Passphrase) => {
197
+ return bip39.mnemonicToSeedSync(mnemonic, bip39Passphrase);
198
+ };
199
+ exports.getSeed = getSeed;
200
+ const getSeedHash = (seed) => {
201
+ return bitcoin.crypto
202
+ .sha256(Buffer.concat([constants_1.BITKIT_WALLET_SEED_HASH_PREFIX, seed]))
203
+ .toString('hex');
204
+ };
205
+ exports.getSeedHash = getSeedHash;
206
+ const generateWalletId = (seed) => {
207
+ return bitcoin.crypto
208
+ .sha256(Buffer.concat([constants_1.WALLET_ID_PREFIX, seed]))
209
+ .toString('hex');
210
+ };
211
+ exports.generateWalletId = generateWalletId;
212
+ const getWalletDataStorageKey = (name, network, key) => {
213
+ return `${name}-${network}-${key}`;
214
+ };
215
+ exports.getWalletDataStorageKey = getWalletDataStorageKey;
216
+ const getStorageKeyValues = (storageKey) => {
217
+ const [walletName, network, value] = storageKey.split('-');
218
+ return {
219
+ walletName,
220
+ network: network,
221
+ value: value
222
+ };
223
+ };
224
+ exports.getStorageKeyValues = getStorageKeyValues;
225
+ const getTxFee = ({ satsPerByte, transactionByteCount }) => transactionByteCount * satsPerByte;
226
+ exports.getTxFee = getTxFee;
227
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/utils/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BLOCKTANK_HOST = exports.TRANSACTION_DEFAULTS = exports.SPENDING_LIMIT_RATIO = exports.CHUNK_LIMIT = exports.GAP_LIMIT = exports.GENERATE_ADDRESS_AMOUNT = exports.WALLET_ID_PREFIX = exports.BITKIT_WALLET_SEED_HASH_PREFIX = void 0;
4
+ exports.BITKIT_WALLET_SEED_HASH_PREFIX = Buffer.from('@Bitkit/wallet-uuid');
5
+ exports.WALLET_ID_PREFIX = Buffer.from('@Beignet/wallet-id');
6
+ exports.GENERATE_ADDRESS_AMOUNT = 5;
7
+ exports.GAP_LIMIT = 20;
8
+ exports.CHUNK_LIMIT = 15;
9
+ exports.SPENDING_LIMIT_RATIO = 0.8;
10
+ exports.TRANSACTION_DEFAULTS = {
11
+ recommendedBaseFee: 256,
12
+ dustLimit: 546
13
+ };
14
+ exports.BLOCKTANK_HOST = 'https://api.stag.blocktank.to';
15
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/wallet/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,8BAA8B,GAAG,MAAM,CAAC,IAAI,CACxD,qBAAqB,CACrB,CAAC;AAEW,QAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAGrD,QAAA,uBAAuB,GAAG,CAAC,CAAC;AAG5B,QAAA,SAAS,GAAG,EAAE,CAAC;AAGf,QAAA,WAAW,GAAG,EAAE,CAAC;AAGjB,QAAA,oBAAoB,GAAG,GAAG,CAAC;AAE3B,QAAA,oBAAoB,GAAG;IACnC,kBAAkB,EAAE,GAAG;IACvB,SAAS,EAAE,GAAG;CACd,CAAC;AAEW,QAAA,cAAc,GAAG,+BAA+B,CAAC"}