@bitgo/account-lib 2.20.1-rc.2 → 2.21.0-hotfix.0

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 (633) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/README.md +5 -7
  3. package/dist/browser/bitgo-account-lib.js +2 -0
  4. package/dist/browser/bitgo-account-lib.js.LICENSE.txt +337 -0
  5. package/dist/resources/hbar/protobuf/BasicTypes.proto +424 -0
  6. package/dist/resources/hbar/protobuf/CryptoCreate.proto +47 -0
  7. package/dist/resources/hbar/protobuf/CryptoTransfer.proto +33 -0
  8. package/dist/resources/hbar/protobuf/Duration.proto +28 -0
  9. package/dist/resources/hbar/protobuf/Timestamp.proto +34 -0
  10. package/dist/resources/hbar/protobuf/Transaction.proto +35 -0
  11. package/dist/resources/hbar/protobuf/TransactionBody.proto +24 -0
  12. package/dist/resources/hbar/protobuf/TransactionContents.proto +33 -0
  13. package/dist/resources/hbar/protobuf/hedera.d.ts +4612 -0
  14. package/dist/resources/hbar/protobuf/hedera.js +12192 -0
  15. package/dist/resources/trx/protobuf/Contract.proto +256 -0
  16. package/dist/resources/trx/protobuf/Discover.proto +44 -0
  17. package/dist/resources/trx/protobuf/tron.d.ts +11024 -0
  18. package/dist/resources/trx/protobuf/tron.js +31510 -0
  19. package/dist/resources/trx/protobuf/tron.proto +677 -0
  20. package/dist/src/coin/algo/assetTransferBuilder.d.ts +42 -0
  21. package/dist/src/coin/algo/assetTransferBuilder.d.ts.map +1 -0
  22. package/dist/src/coin/algo/assetTransferBuilder.js +105 -0
  23. package/dist/src/coin/algo/errors.d.ts +11 -0
  24. package/dist/src/coin/algo/errors.d.ts.map +1 -0
  25. package/dist/src/coin/algo/errors.js +27 -0
  26. package/dist/src/coin/algo/ifaces.d.ts +46 -0
  27. package/dist/src/coin/algo/ifaces.d.ts.map +1 -0
  28. package/dist/src/coin/algo/ifaces.js +3 -0
  29. package/dist/src/coin/algo/index.d.ts +13 -0
  30. package/dist/src/coin/algo/index.d.ts.map +1 -0
  31. package/dist/src/coin/algo/index.js +47 -0
  32. package/dist/src/coin/algo/keyPair.d.ts +25 -0
  33. package/dist/src/coin/algo/keyPair.d.ts.map +1 -0
  34. package/dist/src/coin/algo/keyPair.js +77 -0
  35. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts +104 -0
  36. package/dist/src/coin/algo/keyRegistrationBuilder.d.ts.map +1 -0
  37. package/dist/src/coin/algo/keyRegistrationBuilder.js +239 -0
  38. package/dist/src/coin/algo/seedEncoding.d.ts +25 -0
  39. package/dist/src/coin/algo/seedEncoding.d.ts.map +1 -0
  40. package/dist/src/coin/algo/seedEncoding.js +97 -0
  41. package/dist/src/coin/algo/transaction.d.ts +75 -0
  42. package/dist/src/coin/algo/transaction.d.ts.map +1 -0
  43. package/dist/src/coin/algo/transaction.js +251 -0
  44. package/dist/src/coin/algo/transactionBuilder.d.ts +204 -0
  45. package/dist/src/coin/algo/transactionBuilder.d.ts.map +1 -0
  46. package/dist/src/coin/algo/transactionBuilder.js +373 -0
  47. package/dist/src/coin/algo/transactionBuilderFactory.d.ts +16 -0
  48. package/dist/src/coin/algo/transactionBuilderFactory.d.ts.map +1 -0
  49. package/dist/src/coin/algo/transactionBuilderFactory.js +52 -0
  50. package/dist/src/coin/algo/transferBuilder.d.ts +40 -0
  51. package/dist/src/coin/algo/transferBuilder.d.ts.map +1 -0
  52. package/dist/src/coin/algo/transferBuilder.js +89 -0
  53. package/dist/src/coin/algo/txnSchema.d.ts +7 -0
  54. package/dist/src/coin/algo/txnSchema.d.ts.map +1 -0
  55. package/dist/src/coin/algo/txnSchema.js +68 -0
  56. package/dist/src/coin/algo/utils.d.ts +249 -0
  57. package/dist/src/coin/algo/utils.d.ts.map +1 -0
  58. package/dist/src/coin/algo/utils.js +539 -0
  59. package/dist/src/coin/avaxc/index.d.ts +8 -0
  60. package/dist/src/coin/avaxc/index.d.ts.map +1 -0
  61. package/dist/src/coin/avaxc/index.js +35 -0
  62. package/dist/src/coin/avaxc/keyPair.d.ts +26 -0
  63. package/dist/src/coin/avaxc/keyPair.d.ts.map +1 -0
  64. package/dist/src/coin/avaxc/keyPair.js +83 -0
  65. package/dist/src/coin/avaxc/resources.d.ts +12 -0
  66. package/dist/src/coin/avaxc/resources.d.ts.map +1 -0
  67. package/dist/src/coin/avaxc/resources.js +27 -0
  68. package/dist/src/coin/avaxc/transactionBuilder.d.ts +17 -0
  69. package/dist/src/coin/avaxc/transactionBuilder.d.ts.map +1 -0
  70. package/dist/src/coin/avaxc/transactionBuilder.js +45 -0
  71. package/dist/src/coin/avaxc/transferBuilder.d.ts +17 -0
  72. package/dist/src/coin/avaxc/transferBuilder.d.ts.map +1 -0
  73. package/dist/src/coin/avaxc/transferBuilder.js +25 -0
  74. package/dist/src/coin/avaxc/utils.d.ts +39 -0
  75. package/dist/src/coin/avaxc/utils.d.ts.map +1 -0
  76. package/dist/src/coin/avaxc/utils.js +70 -0
  77. package/dist/src/coin/avaxc/walletUtil.d.ts +22 -0
  78. package/dist/src/coin/avaxc/walletUtil.d.ts.map +1 -0
  79. package/dist/src/coin/avaxc/walletUtil.js +62 -0
  80. package/dist/src/coin/baseCoin/baseKeyPair.d.ts +27 -0
  81. package/dist/src/coin/baseCoin/baseKeyPair.d.ts.map +1 -0
  82. package/dist/src/coin/baseCoin/baseKeyPair.js +3 -0
  83. package/dist/src/coin/baseCoin/baseTransaction.d.ts +71 -0
  84. package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +1 -0
  85. package/dist/src/coin/baseCoin/baseTransaction.js +94 -0
  86. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts +128 -0
  87. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -0
  88. package/dist/src/coin/baseCoin/baseTransactionBuilder.js +179 -0
  89. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts +30 -0
  90. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -0
  91. package/dist/src/coin/baseCoin/baseTransactionBuilderFactory.js +20 -0
  92. package/dist/src/coin/baseCoin/baseUtils.d.ts +45 -0
  93. package/dist/src/coin/baseCoin/baseUtils.d.ts.map +1 -0
  94. package/dist/src/coin/baseCoin/baseUtils.js +3 -0
  95. package/dist/src/coin/baseCoin/blsKeyPair.d.ts +75 -0
  96. package/dist/src/coin/baseCoin/blsKeyPair.d.ts.map +1 -0
  97. package/dist/src/coin/baseCoin/blsKeyPair.js +232 -0
  98. package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts +50 -0
  99. package/dist/src/coin/baseCoin/ed25519KeyPair.d.ts.map +1 -0
  100. package/dist/src/coin/baseCoin/ed25519KeyPair.js +141 -0
  101. package/dist/src/coin/baseCoin/enum.d.ts +43 -0
  102. package/dist/src/coin/baseCoin/enum.d.ts.map +1 -0
  103. package/dist/src/coin/baseCoin/enum.js +70 -0
  104. package/dist/src/coin/baseCoin/errors.d.ts +65 -0
  105. package/dist/src/coin/baseCoin/errors.d.ts.map +1 -0
  106. package/dist/src/coin/baseCoin/errors.js +156 -0
  107. package/dist/src/coin/baseCoin/iface.d.ts +162 -0
  108. package/dist/src/coin/baseCoin/iface.d.ts.map +1 -0
  109. package/dist/src/coin/baseCoin/iface.js +38 -0
  110. package/dist/src/coin/baseCoin/index.d.ts +12 -0
  111. package/dist/src/coin/baseCoin/index.d.ts.map +1 -0
  112. package/dist/src/coin/baseCoin/index.js +41 -0
  113. package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts +55 -0
  114. package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -0
  115. package/dist/src/coin/baseCoin/secp256k1ExtendedKeyPair.js +124 -0
  116. package/dist/src/coin/celo/index.d.ts +8 -0
  117. package/dist/src/coin/celo/index.d.ts.map +1 -0
  118. package/dist/src/coin/celo/index.js +35 -0
  119. package/dist/src/coin/celo/resources.d.ts +10 -0
  120. package/dist/src/coin/celo/resources.d.ts.map +1 -0
  121. package/dist/src/coin/celo/resources.js +26 -0
  122. package/dist/src/coin/celo/stakingBuilder.d.ts +91 -0
  123. package/dist/src/coin/celo/stakingBuilder.d.ts.map +1 -0
  124. package/dist/src/coin/celo/stakingBuilder.js +277 -0
  125. package/dist/src/coin/celo/stakingCall.d.ts +7 -0
  126. package/dist/src/coin/celo/stakingCall.d.ts.map +1 -0
  127. package/dist/src/coin/celo/stakingCall.js +13 -0
  128. package/dist/src/coin/celo/stakingUtils.d.ts +15 -0
  129. package/dist/src/coin/celo/stakingUtils.d.ts.map +1 -0
  130. package/dist/src/coin/celo/stakingUtils.js +98 -0
  131. package/dist/src/coin/celo/transaction.d.ts +10 -0
  132. package/dist/src/coin/celo/transaction.d.ts.map +1 -0
  133. package/dist/src/coin/celo/transaction.js +37 -0
  134. package/dist/src/coin/celo/transactionBuilder.d.ts +86 -0
  135. package/dist/src/coin/celo/transactionBuilder.d.ts.map +1 -0
  136. package/dist/src/coin/celo/transactionBuilder.js +228 -0
  137. package/dist/src/coin/celo/transferBuilder.d.ts +19 -0
  138. package/dist/src/coin/celo/transferBuilder.d.ts.map +1 -0
  139. package/dist/src/coin/celo/transferBuilder.js +27 -0
  140. package/dist/src/coin/celo/types.d.ts +52 -0
  141. package/dist/src/coin/celo/types.d.ts.map +1 -0
  142. package/dist/src/coin/celo/types.js +222 -0
  143. package/dist/src/coin/celo/utils.d.ts +18 -0
  144. package/dist/src/coin/celo/utils.d.ts.map +1 -0
  145. package/dist/src/coin/celo/utils.js +99 -0
  146. package/dist/src/coin/cspr/constants.d.ts +19 -0
  147. package/dist/src/coin/cspr/constants.d.ts.map +1 -0
  148. package/dist/src/coin/cspr/constants.js +28 -0
  149. package/dist/src/coin/cspr/delegateBuilder.d.ts +49 -0
  150. package/dist/src/coin/cspr/delegateBuilder.d.ts.map +1 -0
  151. package/dist/src/coin/cspr/delegateBuilder.js +111 -0
  152. package/dist/src/coin/cspr/ifaces.d.ts +69 -0
  153. package/dist/src/coin/cspr/ifaces.d.ts.map +1 -0
  154. package/dist/src/coin/cspr/ifaces.js +3 -0
  155. package/dist/src/coin/cspr/index.d.ts +6 -0
  156. package/dist/src/coin/cspr/index.d.ts.map +1 -0
  157. package/dist/src/coin/cspr/index.js +31 -0
  158. package/dist/src/coin/cspr/keyPair.d.ts +18 -0
  159. package/dist/src/coin/cspr/keyPair.d.ts.map +1 -0
  160. package/dist/src/coin/cspr/keyPair.js +75 -0
  161. package/dist/src/coin/cspr/transaction.d.ts +55 -0
  162. package/dist/src/coin/cspr/transaction.d.ts.map +1 -0
  163. package/dist/src/coin/cspr/transaction.js +227 -0
  164. package/dist/src/coin/cspr/transactionBuilder.d.ts +124 -0
  165. package/dist/src/coin/cspr/transactionBuilder.d.ts.map +1 -0
  166. package/dist/src/coin/cspr/transactionBuilder.js +312 -0
  167. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts +46 -0
  168. package/dist/src/coin/cspr/transactionBuilderFactory.d.ts.map +1 -0
  169. package/dist/src/coin/cspr/transactionBuilderFactory.js +98 -0
  170. package/dist/src/coin/cspr/transferBuilder.d.ts +39 -0
  171. package/dist/src/coin/cspr/transferBuilder.d.ts.map +1 -0
  172. package/dist/src/coin/cspr/transferBuilder.js +106 -0
  173. package/dist/src/coin/cspr/undelegateBuilder.d.ts +49 -0
  174. package/dist/src/coin/cspr/undelegateBuilder.d.ts.map +1 -0
  175. package/dist/src/coin/cspr/undelegateBuilder.js +111 -0
  176. package/dist/src/coin/cspr/utils.d.ts +188 -0
  177. package/dist/src/coin/cspr/utils.d.ts.map +1 -0
  178. package/dist/src/coin/cspr/utils.js +477 -0
  179. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts +27 -0
  180. package/dist/src/coin/cspr/walletInitializationBuilder.d.ts.map +1 -0
  181. package/dist/src/coin/cspr/walletInitializationBuilder.js +95 -0
  182. package/dist/src/coin/dot/addressInitializationBuilder.d.ts +79 -0
  183. package/dist/src/coin/dot/addressInitializationBuilder.d.ts.map +1 -0
  184. package/dist/src/coin/dot/addressInitializationBuilder.js +182 -0
  185. package/dist/src/coin/dot/batchTransactionBuilder.d.ts +47 -0
  186. package/dist/src/coin/dot/batchTransactionBuilder.d.ts.map +1 -0
  187. package/dist/src/coin/dot/batchTransactionBuilder.js +122 -0
  188. package/dist/src/coin/dot/claimBuilder.d.ts +58 -0
  189. package/dist/src/coin/dot/claimBuilder.d.ts.map +1 -0
  190. package/dist/src/coin/dot/claimBuilder.js +119 -0
  191. package/dist/src/coin/dot/errors.d.ts +8 -0
  192. package/dist/src/coin/dot/errors.d.ts.map +1 -0
  193. package/dist/src/coin/dot/errors.js +19 -0
  194. package/dist/src/coin/dot/iface.d.ts +194 -0
  195. package/dist/src/coin/dot/iface.d.ts.map +1 -0
  196. package/dist/src/coin/dot/iface.js +39 -0
  197. package/dist/src/coin/dot/index.d.ts +17 -0
  198. package/dist/src/coin/dot/index.d.ts.map +1 -0
  199. package/dist/src/coin/dot/index.js +53 -0
  200. package/dist/src/coin/dot/keyPair.d.ts +31 -0
  201. package/dist/src/coin/dot/keyPair.d.ts.map +1 -0
  202. package/dist/src/coin/dot/keyPair.js +70 -0
  203. package/dist/src/coin/dot/singletonRegistry.d.ts +7 -0
  204. package/dist/src/coin/dot/singletonRegistry.d.ts.map +1 -0
  205. package/dist/src/coin/dot/singletonRegistry.js +20 -0
  206. package/dist/src/coin/dot/stakingBuilder.d.ts +58 -0
  207. package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -0
  208. package/dist/src/coin/dot/stakingBuilder.js +139 -0
  209. package/dist/src/coin/dot/transaction.d.ts +65 -0
  210. package/dist/src/coin/dot/transaction.d.ts.map +1 -0
  211. package/dist/src/coin/dot/transaction.js +396 -0
  212. package/dist/src/coin/dot/transactionBuilder.d.ts +131 -0
  213. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -0
  214. package/dist/src/coin/dot/transactionBuilder.js +332 -0
  215. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +26 -0
  216. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -0
  217. package/dist/src/coin/dot/transactionBuilderFactory.js +93 -0
  218. package/dist/src/coin/dot/transferBuilder.d.ts +71 -0
  219. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -0
  220. package/dist/src/coin/dot/transferBuilder.js +177 -0
  221. package/dist/src/coin/dot/txnSchema.d.ts +14 -0
  222. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -0
  223. package/dist/src/coin/dot/txnSchema.js +104 -0
  224. package/dist/src/coin/dot/unnominateBuilder.d.ts +24 -0
  225. package/dist/src/coin/dot/unnominateBuilder.d.ts.map +1 -0
  226. package/dist/src/coin/dot/unnominateBuilder.js +50 -0
  227. package/dist/src/coin/dot/unstakeBuilder.d.ts +38 -0
  228. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -0
  229. package/dist/src/coin/dot/unstakeBuilder.js +89 -0
  230. package/dist/src/coin/dot/utils.d.ts +145 -0
  231. package/dist/src/coin/dot/utils.d.ts.map +1 -0
  232. package/dist/src/coin/dot/utils.js +283 -0
  233. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts +38 -0
  234. package/dist/src/coin/dot/withdrawUnstakedBuilder.d.ts.map +1 -0
  235. package/dist/src/coin/dot/withdrawUnstakedBuilder.js +90 -0
  236. package/dist/src/coin/etc/index.d.ts +8 -0
  237. package/dist/src/coin/etc/index.d.ts.map +1 -0
  238. package/dist/src/coin/etc/index.js +35 -0
  239. package/dist/src/coin/etc/resources.d.ts +10 -0
  240. package/dist/src/coin/etc/resources.d.ts.map +1 -0
  241. package/dist/src/coin/etc/resources.js +26 -0
  242. package/dist/src/coin/etc/transactionBuilder.d.ts +17 -0
  243. package/dist/src/coin/etc/transactionBuilder.d.ts.map +1 -0
  244. package/dist/src/coin/etc/transactionBuilder.js +45 -0
  245. package/dist/src/coin/etc/transferBuilder.d.ts +19 -0
  246. package/dist/src/coin/etc/transferBuilder.d.ts.map +1 -0
  247. package/dist/src/coin/etc/transferBuilder.js +27 -0
  248. package/dist/src/coin/etc/utils.d.ts +18 -0
  249. package/dist/src/coin/etc/utils.d.ts.map +1 -0
  250. package/dist/src/coin/etc/utils.js +42 -0
  251. package/dist/src/coin/eth/contractCall.d.ts +8 -0
  252. package/dist/src/coin/eth/contractCall.d.ts.map +1 -0
  253. package/dist/src/coin/eth/contractCall.js +17 -0
  254. package/dist/src/coin/eth/iface.d.ts +122 -0
  255. package/dist/src/coin/eth/iface.d.ts.map +1 -0
  256. package/dist/src/coin/eth/iface.js +8 -0
  257. package/dist/src/coin/eth/index.d.ts +10 -0
  258. package/dist/src/coin/eth/index.d.ts.map +1 -0
  259. package/dist/src/coin/eth/index.js +39 -0
  260. package/dist/src/coin/eth/keyPair.d.ts +26 -0
  261. package/dist/src/coin/eth/keyPair.d.ts.map +1 -0
  262. package/dist/src/coin/eth/keyPair.js +85 -0
  263. package/dist/src/coin/eth/transaction.d.ts +64 -0
  264. package/dist/src/coin/eth/transaction.d.ts.map +1 -0
  265. package/dist/src/coin/eth/transaction.js +137 -0
  266. package/dist/src/coin/eth/transactionBuilder.d.ts +194 -0
  267. package/dist/src/coin/eth/transactionBuilder.d.ts.map +1 -0
  268. package/dist/src/coin/eth/transactionBuilder.js +624 -0
  269. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts +47 -0
  270. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.d.ts.map +1 -0
  271. package/dist/src/coin/eth/transferBuilder/baseNFTTransferBuilder.js +113 -0
  272. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts +14 -0
  273. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.d.ts.map +1 -0
  274. package/dist/src/coin/eth/transferBuilder/transferBuilderERC1155.js +83 -0
  275. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts +13 -0
  276. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.d.ts.map +1 -0
  277. package/dist/src/coin/eth/transferBuilder/transferBuilderERC721.js +68 -0
  278. package/dist/src/coin/eth/transferBuilder.d.ts +65 -0
  279. package/dist/src/coin/eth/transferBuilder.d.ts.map +1 -0
  280. package/dist/src/coin/eth/transferBuilder.js +197 -0
  281. package/dist/src/coin/eth/types.d.ts +39 -0
  282. package/dist/src/coin/eth/types.d.ts.map +1 -0
  283. package/dist/src/coin/eth/types.js +135 -0
  284. package/dist/src/coin/eth/utils.d.ts +201 -0
  285. package/dist/src/coin/eth/utils.d.ts.map +1 -0
  286. package/dist/src/coin/eth/utils.js +486 -0
  287. package/dist/src/coin/eth/walletUtil.d.ts +21 -0
  288. package/dist/src/coin/eth/walletUtil.d.ts.map +1 -0
  289. package/dist/src/coin/eth/walletUtil.js +31 -0
  290. package/dist/src/coin/eth2/index.d.ts +2 -0
  291. package/dist/src/coin/eth2/index.d.ts.map +1 -0
  292. package/dist/src/coin/eth2/index.js +6 -0
  293. package/dist/src/coin/eth2/keyPair.d.ts +33 -0
  294. package/dist/src/coin/eth2/keyPair.d.ts.map +1 -0
  295. package/dist/src/coin/eth2/keyPair.js +65 -0
  296. package/dist/src/coin/hbar/constants.d.ts +8 -0
  297. package/dist/src/coin/hbar/constants.d.ts.map +1 -0
  298. package/dist/src/coin/hbar/constants.js +12 -0
  299. package/dist/src/coin/hbar/iface.d.ts +26 -0
  300. package/dist/src/coin/hbar/iface.d.ts.map +1 -0
  301. package/dist/src/coin/hbar/iface.js +3 -0
  302. package/dist/src/coin/hbar/ifaces.d.ts +26 -0
  303. package/dist/src/coin/hbar/ifaces.d.ts.map +1 -0
  304. package/dist/src/coin/hbar/ifaces.js +3 -0
  305. package/dist/src/coin/hbar/index.d.ts +6 -0
  306. package/dist/src/coin/hbar/index.d.ts.map +1 -0
  307. package/dist/src/coin/hbar/index.js +31 -0
  308. package/dist/src/coin/hbar/keyPair.d.ts +23 -0
  309. package/dist/src/coin/hbar/keyPair.d.ts.map +1 -0
  310. package/dist/src/coin/hbar/keyPair.js +70 -0
  311. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts +35 -0
  312. package/dist/src/coin/hbar/tokenAssociateBuilder.d.ts.map +1 -0
  313. package/dist/src/coin/hbar/tokenAssociateBuilder.js +118 -0
  314. package/dist/src/coin/hbar/transaction.d.ts +97 -0
  315. package/dist/src/coin/hbar/transaction.d.ts.map +1 -0
  316. package/dist/src/coin/hbar/transaction.js +255 -0
  317. package/dist/src/coin/hbar/transactionBuilder.d.ts +111 -0
  318. package/dist/src/coin/hbar/transactionBuilder.d.ts.map +1 -0
  319. package/dist/src/coin/hbar/transactionBuilder.js +270 -0
  320. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts +42 -0
  321. package/dist/src/coin/hbar/transactionBuilderFactory.d.ts.map +1 -0
  322. package/dist/src/coin/hbar/transactionBuilderFactory.js +79 -0
  323. package/dist/src/coin/hbar/transferBuilder.d.ts +43 -0
  324. package/dist/src/coin/hbar/transferBuilder.d.ts.map +1 -0
  325. package/dist/src/coin/hbar/transferBuilder.js +124 -0
  326. package/dist/src/coin/hbar/utils.d.ts +186 -0
  327. package/dist/src/coin/hbar/utils.d.ts.map +1 -0
  328. package/dist/src/coin/hbar/utils.js +400 -0
  329. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts +28 -0
  330. package/dist/src/coin/hbar/walletInitializationBuilder.d.ts.map +1 -0
  331. package/dist/src/coin/hbar/walletInitializationBuilder.js +110 -0
  332. package/dist/src/coin/near/constants.d.ts +12 -0
  333. package/dist/src/coin/near/constants.d.ts.map +1 -0
  334. package/dist/src/coin/near/constants.js +15 -0
  335. package/dist/src/coin/near/contractCallWrapper.d.ts +33 -0
  336. package/dist/src/coin/near/contractCallWrapper.d.ts.map +1 -0
  337. package/dist/src/coin/near/contractCallWrapper.js +68 -0
  338. package/dist/src/coin/near/errors.d.ts +5 -0
  339. package/dist/src/coin/near/errors.d.ts.map +1 -0
  340. package/dist/src/coin/near/errors.js +12 -0
  341. package/dist/src/coin/near/iface.d.ts +40 -0
  342. package/dist/src/coin/near/iface.d.ts.map +1 -0
  343. package/dist/src/coin/near/iface.js +8 -0
  344. package/dist/src/coin/near/index.d.ts +11 -0
  345. package/dist/src/coin/near/index.d.ts.map +1 -0
  346. package/dist/src/coin/near/index.js +41 -0
  347. package/dist/src/coin/near/keyPair.d.ts +25 -0
  348. package/dist/src/coin/near/keyPair.d.ts.map +1 -0
  349. package/dist/src/coin/near/keyPair.js +73 -0
  350. package/dist/src/coin/near/stakingActivateBuilder.d.ts +32 -0
  351. package/dist/src/coin/near/stakingActivateBuilder.d.ts.map +1 -0
  352. package/dist/src/coin/near/stakingActivateBuilder.js +90 -0
  353. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts +32 -0
  354. package/dist/src/coin/near/stakingDeactivateBuilder.d.ts.map +1 -0
  355. package/dist/src/coin/near/stakingDeactivateBuilder.js +89 -0
  356. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts +32 -0
  357. package/dist/src/coin/near/stakingWithdrawBuilder.d.ts.map +1 -0
  358. package/dist/src/coin/near/stakingWithdrawBuilder.js +89 -0
  359. package/dist/src/coin/near/transaction.d.ts +90 -0
  360. package/dist/src/coin/near/transaction.d.ts.map +1 -0
  361. package/dist/src/coin/near/transaction.js +368 -0
  362. package/dist/src/coin/near/transactionBuilder.d.ts +89 -0
  363. package/dist/src/coin/near/transactionBuilder.d.ts.map +1 -0
  364. package/dist/src/coin/near/transactionBuilder.js +216 -0
  365. package/dist/src/coin/near/transactionBuilderFactory.d.ts +30 -0
  366. package/dist/src/coin/near/transactionBuilderFactory.d.ts.map +1 -0
  367. package/dist/src/coin/near/transactionBuilderFactory.js +71 -0
  368. package/dist/src/coin/near/transferBuilder.d.ts +26 -0
  369. package/dist/src/coin/near/transferBuilder.d.ts.map +1 -0
  370. package/dist/src/coin/near/transferBuilder.js +72 -0
  371. package/dist/src/coin/near/utils.d.ts +42 -0
  372. package/dist/src/coin/near/utils.d.ts.map +1 -0
  373. package/dist/src/coin/near/utils.js +85 -0
  374. package/dist/src/coin/near/walletInitializationBuilder.d.ts +12 -0
  375. package/dist/src/coin/near/walletInitializationBuilder.d.ts.map +1 -0
  376. package/dist/src/coin/near/walletInitializationBuilder.js +20 -0
  377. package/dist/src/coin/polygon/index.d.ts +8 -0
  378. package/dist/src/coin/polygon/index.d.ts.map +1 -0
  379. package/dist/src/coin/polygon/index.js +35 -0
  380. package/dist/src/coin/polygon/resources.d.ts +10 -0
  381. package/dist/src/coin/polygon/resources.d.ts.map +1 -0
  382. package/dist/src/coin/polygon/resources.js +25 -0
  383. package/dist/src/coin/polygon/transactionBuilder.d.ts +17 -0
  384. package/dist/src/coin/polygon/transactionBuilder.d.ts.map +1 -0
  385. package/dist/src/coin/polygon/transactionBuilder.js +44 -0
  386. package/dist/src/coin/polygon/transferBuilder.d.ts +19 -0
  387. package/dist/src/coin/polygon/transferBuilder.d.ts.map +1 -0
  388. package/dist/src/coin/polygon/transferBuilder.js +27 -0
  389. package/dist/src/coin/polygon/utils.d.ts +18 -0
  390. package/dist/src/coin/polygon/utils.d.ts.map +1 -0
  391. package/dist/src/coin/polygon/utils.js +42 -0
  392. package/dist/src/coin/polygon/walletUtil.d.ts +48 -0
  393. package/dist/src/coin/polygon/walletUtil.d.ts.map +1 -0
  394. package/dist/src/coin/polygon/walletUtil.js +632 -0
  395. package/dist/src/coin/rbtc/index.d.ts +8 -0
  396. package/dist/src/coin/rbtc/index.d.ts.map +1 -0
  397. package/dist/src/coin/rbtc/index.js +35 -0
  398. package/dist/src/coin/rbtc/resources.d.ts +10 -0
  399. package/dist/src/coin/rbtc/resources.d.ts.map +1 -0
  400. package/dist/src/coin/rbtc/resources.js +25 -0
  401. package/dist/src/coin/rbtc/transactionBuilder.d.ts +17 -0
  402. package/dist/src/coin/rbtc/transactionBuilder.d.ts.map +1 -0
  403. package/dist/src/coin/rbtc/transactionBuilder.js +44 -0
  404. package/dist/src/coin/rbtc/transferBuilder.d.ts +19 -0
  405. package/dist/src/coin/rbtc/transferBuilder.d.ts.map +1 -0
  406. package/dist/src/coin/rbtc/transferBuilder.js +27 -0
  407. package/dist/src/coin/rbtc/utils.d.ts +18 -0
  408. package/dist/src/coin/rbtc/utils.d.ts.map +1 -0
  409. package/dist/src/coin/rbtc/utils.js +42 -0
  410. package/dist/src/coin/sol/ataInitializationBuilder.d.ts +41 -0
  411. package/dist/src/coin/sol/ataInitializationBuilder.d.ts.map +1 -0
  412. package/dist/src/coin/sol/ataInitializationBuilder.js +110 -0
  413. package/dist/src/coin/sol/ataInitializationTransaction.d.ts +14 -0
  414. package/dist/src/coin/sol/ataInitializationTransaction.d.ts.map +1 -0
  415. package/dist/src/coin/sol/ataInitializationTransaction.js +81 -0
  416. package/dist/src/coin/sol/constants.d.ts +58 -0
  417. package/dist/src/coin/sol/constants.d.ts.map +1 -0
  418. package/dist/src/coin/sol/constants.js +76 -0
  419. package/dist/src/coin/sol/iface.d.ts +99 -0
  420. package/dist/src/coin/sol/iface.d.ts.map +1 -0
  421. package/dist/src/coin/sol/iface.js +3 -0
  422. package/dist/src/coin/sol/index.d.ts +11 -0
  423. package/dist/src/coin/sol/index.d.ts.map +1 -0
  424. package/dist/src/coin/sol/index.js +41 -0
  425. package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
  426. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
  427. package/dist/src/coin/sol/instructionParamsFactory.js +260 -0
  428. package/dist/src/coin/sol/keyPair.d.ts +26 -0
  429. package/dist/src/coin/sol/keyPair.d.ts.map +1 -0
  430. package/dist/src/coin/sol/keyPair.js +63 -0
  431. package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
  432. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
  433. package/dist/src/coin/sol/solInstructionFactory.js +213 -0
  434. package/dist/src/coin/sol/stakingActivateBuilder.d.ts +41 -0
  435. package/dist/src/coin/sol/stakingActivateBuilder.d.ts.map +1 -0
  436. package/dist/src/coin/sol/stakingActivateBuilder.js +94 -0
  437. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts +23 -0
  438. package/dist/src/coin/sol/stakingDeactivateBuilder.d.ts.map +1 -0
  439. package/dist/src/coin/sol/stakingDeactivateBuilder.js +62 -0
  440. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts +31 -0
  441. package/dist/src/coin/sol/stakingWithdrawBuilder.d.ts.map +1 -0
  442. package/dist/src/coin/sol/stakingWithdrawBuilder.js +78 -0
  443. package/dist/src/coin/sol/tokenEncodeDecode.d.ts +85 -0
  444. package/dist/src/coin/sol/tokenEncodeDecode.d.ts.map +1 -0
  445. package/dist/src/coin/sol/tokenEncodeDecode.js +133 -0
  446. package/dist/src/coin/sol/tokenTransferBuilder.d.ts +27 -0
  447. package/dist/src/coin/sol/tokenTransferBuilder.d.ts.map +1 -0
  448. package/dist/src/coin/sol/tokenTransferBuilder.js +73 -0
  449. package/dist/src/coin/sol/transaction.d.ts +61 -0
  450. package/dist/src/coin/sol/transaction.d.ts.map +1 -0
  451. package/dist/src/coin/sol/transaction.js +369 -0
  452. package/dist/src/coin/sol/transactionBuilder.d.ts +101 -0
  453. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -0
  454. package/dist/src/coin/sol/transactionBuilder.js +261 -0
  455. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +76 -0
  456. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -0
  457. package/dist/src/coin/sol/transactionBuilderFactory.js +136 -0
  458. package/dist/src/coin/sol/transferBuilder.d.ts +26 -0
  459. package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -0
  460. package/dist/src/coin/sol/transferBuilder.js +67 -0
  461. package/dist/src/coin/sol/utils.d.ts +146 -0
  462. package/dist/src/coin/sol/utils.d.ts.map +1 -0
  463. package/dist/src/coin/sol/utils.js +361 -0
  464. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +26 -0
  465. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -0
  466. package/dist/src/coin/sol/walletInitializationBuilder.js +71 -0
  467. package/dist/src/coin/stx/abstractContractBuilder.d.ts +19 -0
  468. package/dist/src/coin/stx/abstractContractBuilder.d.ts.map +1 -0
  469. package/dist/src/coin/stx/abstractContractBuilder.js +70 -0
  470. package/dist/src/coin/stx/constants.d.ts +8 -0
  471. package/dist/src/coin/stx/constants.d.ts.map +1 -0
  472. package/dist/src/coin/stx/constants.js +19 -0
  473. package/dist/src/coin/stx/contractBuilder.d.ts +33 -0
  474. package/dist/src/coin/stx/contractBuilder.d.ts.map +1 -0
  475. package/dist/src/coin/stx/contractBuilder.js +116 -0
  476. package/dist/src/coin/stx/iface.d.ts +48 -0
  477. package/dist/src/coin/stx/iface.d.ts.map +1 -0
  478. package/dist/src/coin/stx/iface.js +3 -0
  479. package/dist/src/coin/stx/index.d.ts +6 -0
  480. package/dist/src/coin/stx/index.d.ts.map +1 -0
  481. package/dist/src/coin/stx/index.js +32 -0
  482. package/dist/src/coin/stx/keyPair.d.ts +55 -0
  483. package/dist/src/coin/stx/keyPair.d.ts.map +1 -0
  484. package/dist/src/coin/stx/keyPair.js +140 -0
  485. package/dist/src/coin/stx/sendmanyBuilder.d.ts +23 -0
  486. package/dist/src/coin/stx/sendmanyBuilder.d.ts.map +1 -0
  487. package/dist/src/coin/stx/sendmanyBuilder.js +75 -0
  488. package/dist/src/coin/stx/transaction.d.ts +49 -0
  489. package/dist/src/coin/stx/transaction.d.ts.map +1 -0
  490. package/dist/src/coin/stx/transaction.js +225 -0
  491. package/dist/src/coin/stx/transactionBuilder.d.ts +86 -0
  492. package/dist/src/coin/stx/transactionBuilder.d.ts.map +1 -0
  493. package/dist/src/coin/stx/transactionBuilder.js +263 -0
  494. package/dist/src/coin/stx/transactionBuilderFactory.d.ts +30 -0
  495. package/dist/src/coin/stx/transactionBuilderFactory.d.ts.map +1 -0
  496. package/dist/src/coin/stx/transactionBuilderFactory.js +81 -0
  497. package/dist/src/coin/stx/transferBuilder.d.ts +30 -0
  498. package/dist/src/coin/stx/transferBuilder.d.ts.map +1 -0
  499. package/dist/src/coin/stx/transferBuilder.js +99 -0
  500. package/dist/src/coin/stx/utils.d.ts +207 -0
  501. package/dist/src/coin/stx/utils.d.ts.map +1 -0
  502. package/dist/src/coin/stx/utils.js +503 -0
  503. package/dist/src/coin/trx/address.d.ts +11 -0
  504. package/dist/src/coin/trx/address.d.ts.map +1 -0
  505. package/dist/src/coin/trx/address.js +13 -0
  506. package/dist/src/coin/trx/contractCallBuilder.d.ts +96 -0
  507. package/dist/src/coin/trx/contractCallBuilder.d.ts.map +1 -0
  508. package/dist/src/coin/trx/contractCallBuilder.js +281 -0
  509. package/dist/src/coin/trx/enum.d.ts +23 -0
  510. package/dist/src/coin/trx/enum.d.ts.map +1 -0
  511. package/dist/src/coin/trx/enum.js +28 -0
  512. package/dist/src/coin/trx/iface.d.ts +92 -0
  513. package/dist/src/coin/trx/iface.d.ts.map +1 -0
  514. package/dist/src/coin/trx/iface.js +3 -0
  515. package/dist/src/coin/trx/index.d.ts +10 -0
  516. package/dist/src/coin/trx/index.d.ts.map +1 -0
  517. package/dist/src/coin/trx/index.js +39 -0
  518. package/dist/src/coin/trx/keyPair.d.ts +44 -0
  519. package/dist/src/coin/trx/keyPair.d.ts.map +1 -0
  520. package/dist/src/coin/trx/keyPair.js +121 -0
  521. package/dist/src/coin/trx/transaction.d.ts +74 -0
  522. package/dist/src/coin/trx/transaction.d.ts.map +1 -0
  523. package/dist/src/coin/trx/transaction.js +205 -0
  524. package/dist/src/coin/trx/transactionBuilder.d.ts +65 -0
  525. package/dist/src/coin/trx/transactionBuilder.d.ts.map +1 -0
  526. package/dist/src/coin/trx/transactionBuilder.js +215 -0
  527. package/dist/src/coin/trx/utils.d.ts +127 -0
  528. package/dist/src/coin/trx/utils.d.ts.map +1 -0
  529. package/dist/src/coin/trx/utils.js +369 -0
  530. package/dist/src/coin/trx/wrappedBuilder.d.ts +52 -0
  531. package/dist/src/coin/trx/wrappedBuilder.d.ts.map +1 -0
  532. package/dist/src/coin/trx/wrappedBuilder.js +104 -0
  533. package/dist/src/coin/xrp/index.d.ts +5 -0
  534. package/dist/src/coin/xrp/index.d.ts.map +1 -0
  535. package/dist/src/coin/xrp/index.js +29 -0
  536. package/dist/src/coin/xrp/keyPair.d.ts +10 -0
  537. package/dist/src/coin/xrp/keyPair.d.ts.map +1 -0
  538. package/dist/src/coin/xrp/keyPair.js +16 -0
  539. package/dist/src/coin/xrp/transaction.d.ts +10 -0
  540. package/dist/src/coin/xrp/transaction.d.ts.map +1 -0
  541. package/dist/src/coin/xrp/transaction.js +20 -0
  542. package/dist/src/coin/xrp/transactionBuilder.d.ts +27 -0
  543. package/dist/src/coin/xrp/transactionBuilder.d.ts.map +1 -0
  544. package/dist/src/coin/xrp/transactionBuilder.js +46 -0
  545. package/dist/src/coin/xrp/transactionBuilderFactory.d.ts +24 -0
  546. package/dist/src/coin/xrp/transactionBuilderFactory.d.ts.map +1 -0
  547. package/dist/src/coin/xrp/transactionBuilderFactory.js +38 -0
  548. package/dist/src/coin/xrp/transferBuilder.d.ts +14 -0
  549. package/dist/src/coin/xrp/transferBuilder.d.ts.map +1 -0
  550. package/dist/src/coin/xrp/transferBuilder.js +24 -0
  551. package/dist/src/coin/xrp/utils.d.ts +16 -0
  552. package/dist/src/coin/xrp/utils.d.ts.map +1 -0
  553. package/dist/src/coin/xrp/utils.js +32 -0
  554. package/dist/src/coin/xrp/walletInitializationBuilder.d.ts +14 -0
  555. package/dist/src/coin/xrp/walletInitializationBuilder.d.ts.map +1 -0
  556. package/dist/src/coin/xrp/walletInitializationBuilder.js +24 -0
  557. package/dist/src/coin/xtz/address.d.ts +8 -0
  558. package/dist/src/coin/xtz/address.d.ts.map +1 -0
  559. package/dist/src/coin/xtz/address.js +10 -0
  560. package/dist/src/coin/xtz/iface.d.ts +81 -0
  561. package/dist/src/coin/xtz/iface.d.ts.map +1 -0
  562. package/dist/src/coin/xtz/iface.js +3 -0
  563. package/dist/src/coin/xtz/index.d.ts +8 -0
  564. package/dist/src/coin/xtz/index.d.ts.map +1 -0
  565. package/dist/src/coin/xtz/index.js +37 -0
  566. package/dist/src/coin/xtz/keyPair.d.ts +40 -0
  567. package/dist/src/coin/xtz/keyPair.d.ts.map +1 -0
  568. package/dist/src/coin/xtz/keyPair.js +136 -0
  569. package/dist/src/coin/xtz/multisigUtils.d.ts +134 -0
  570. package/dist/src/coin/xtz/multisigUtils.d.ts.map +1 -0
  571. package/dist/src/coin/xtz/multisigUtils.js +1180 -0
  572. package/dist/src/coin/xtz/transaction.d.ts +119 -0
  573. package/dist/src/coin/xtz/transaction.d.ts.map +1 -0
  574. package/dist/src/coin/xtz/transaction.js +315 -0
  575. package/dist/src/coin/xtz/transactionBuilder.d.ts +171 -0
  576. package/dist/src/coin/xtz/transactionBuilder.d.ts.map +1 -0
  577. package/dist/src/coin/xtz/transactionBuilder.js +453 -0
  578. package/dist/src/coin/xtz/transferBuilder.d.ts +24 -0
  579. package/dist/src/coin/xtz/transferBuilder.d.ts.map +1 -0
  580. package/dist/src/coin/xtz/transferBuilder.js +64 -0
  581. package/dist/src/coin/xtz/utils.d.ts +265 -0
  582. package/dist/src/coin/xtz/utils.d.ts.map +1 -0
  583. package/dist/src/coin/xtz/utils.js +460 -0
  584. package/dist/src/index.d.ts +2 -0
  585. package/dist/src/index.d.ts.map +1 -1
  586. package/dist/src/index.js +4 -2
  587. package/dist/src/mpc/curves/baseCurve.d.ts +18 -0
  588. package/dist/src/mpc/curves/baseCurve.d.ts.map +1 -0
  589. package/dist/src/mpc/curves/baseCurve.js +6 -0
  590. package/dist/src/mpc/curves/ed25519.d.ts +17 -0
  591. package/dist/src/mpc/curves/ed25519.d.ts.map +1 -0
  592. package/dist/src/mpc/curves/ed25519.js +48 -0
  593. package/dist/src/mpc/curves/index.d.ts +5 -0
  594. package/dist/src/mpc/curves/index.d.ts.map +1 -0
  595. package/dist/src/mpc/curves/index.js +6 -0
  596. package/dist/src/mpc/curves/secp256k1.d.ts +16 -0
  597. package/dist/src/mpc/curves/secp256k1.d.ts.map +1 -0
  598. package/dist/src/mpc/curves/secp256k1.js +66 -0
  599. package/dist/src/mpc/curves.d.ts +29 -0
  600. package/dist/src/mpc/curves.d.ts.map +1 -0
  601. package/dist/src/mpc/curves.js +96 -0
  602. package/dist/src/mpc/hdTree.d.ts +24 -0
  603. package/dist/src/mpc/hdTree.d.ts.map +1 -0
  604. package/dist/src/mpc/hdTree.js +143 -0
  605. package/dist/src/mpc/shamir.d.ts +26 -0
  606. package/dist/src/mpc/shamir.d.ts.map +1 -0
  607. package/dist/src/mpc/shamir.js +87 -0
  608. package/dist/src/mpc/tss/eddsa/eddsa.d.ts +29 -0
  609. package/dist/src/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
  610. package/dist/src/mpc/tss/eddsa/eddsa.js +273 -0
  611. package/dist/src/mpc/tss/eddsa/index.d.ts +4 -0
  612. package/dist/src/mpc/tss/eddsa/index.d.ts.map +1 -0
  613. package/dist/src/mpc/tss/eddsa/index.js +30 -0
  614. package/dist/src/mpc/tss/eddsa/types.d.ts +70 -0
  615. package/dist/src/mpc/tss/eddsa/types.d.ts.map +1 -0
  616. package/dist/src/mpc/tss/eddsa/types.js +3 -0
  617. package/dist/src/mpc/tss/index.d.ts +5 -0
  618. package/dist/src/mpc/tss/index.d.ts.map +1 -0
  619. package/dist/src/mpc/tss/index.js +32 -0
  620. package/dist/src/mpc/tss.d.ts +98 -0
  621. package/dist/src/mpc/tss.d.ts.map +1 -0
  622. package/dist/src/mpc/tss.js +344 -0
  623. package/dist/src/mpc/util.d.ts +7 -0
  624. package/dist/src/mpc/util.d.ts.map +1 -0
  625. package/dist/src/mpc/util.js +38 -0
  626. package/dist/src/utils/crypto.d.ts +99 -0
  627. package/dist/src/utils/crypto.d.ts.map +1 -0
  628. package/dist/src/utils/crypto.js +260 -0
  629. package/dist/src/utils/ed25519KeyDeriver.d.ts +49 -0
  630. package/dist/src/utils/ed25519KeyDeriver.d.ts.map +1 -0
  631. package/dist/src/utils/ed25519KeyDeriver.js +92 -0
  632. package/dist/tsconfig.tsbuildinfo +7282 -1934
  633. package/package.json +24 -27
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.KeyPair = void 0;
23
+ const crypto_1 = require("crypto");
24
+ const bip32 = __importStar(require("bip32"));
25
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
26
+ const transactions_1 = require("@stacks/transactions");
27
+ const sdk_core_1 = require("@bitgo/sdk-core");
28
+ const utils_1 = require("./utils");
29
+ const constants_1 = require("./constants");
30
+ class KeyPair extends sdk_core_1.Secp256k1ExtendedKeyPair {
31
+ /**
32
+ * Public constructor. By default, creates a key pair with a random master seed.
33
+ *
34
+ * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
35
+ */
36
+ constructor(source) {
37
+ super(source);
38
+ if (!source) {
39
+ const seed = crypto_1.randomBytes(constants_1.DEFAULT_SEED_SIZE_BYTES);
40
+ this.hdNode = bip32.fromSeed(seed);
41
+ }
42
+ else if (sdk_core_1.isSeed(source)) {
43
+ this.hdNode = bip32.fromSeed(source.seed);
44
+ }
45
+ else if (sdk_core_1.isPrivateKey(source)) {
46
+ this.recordKeysFromPrivateKey(source.prv);
47
+ }
48
+ else if (sdk_core_1.isPublicKey(source)) {
49
+ this.recordKeysFromPublicKey(source.pub);
50
+ }
51
+ else {
52
+ throw new Error('Invalid key pair options');
53
+ }
54
+ if (this.hdNode) {
55
+ this.keyPair = sdk_core_1.Secp256k1ExtendedKeyPair.toKeyPair(this.hdNode);
56
+ }
57
+ }
58
+ /**
59
+ * Build a keypair from a protocol private key or extended private key.
60
+ *
61
+ * The protocol private key is either 32 or 33 bytes long (64 or 66
62
+ * characters hex). If it is 32 bytes long, set the keypair's "compressed"
63
+ * field to false to later generate uncompressed public keys (the default).
64
+ * A 33 byte key has 0x01 as the last byte.
65
+ *
66
+ * @param {string} prv A raw private key
67
+ */
68
+ recordKeysFromPrivateKey(prv) {
69
+ if (!utils_1.isValidPrivateKey(prv)) {
70
+ throw new Error('Unsupported private key');
71
+ }
72
+ if (sdk_core_1.isValidXprv(prv)) {
73
+ this.hdNode = bip32.fromBase58(prv);
74
+ }
75
+ else {
76
+ this.keyPair = bitcoinjs_lib_1.ECPair.fromPrivateKey(Buffer.from(prv.slice(0, 64), 'hex'));
77
+ }
78
+ }
79
+ /**
80
+ * Build an ECPair from a protocol public key or extended public key.
81
+ *
82
+ * The protocol public key is either 32 bytes or 64 bytes long, with a
83
+ * one-byte prefix (a total of 66 or 130 characters in hex). If the
84
+ * prefix is 0x02 or 0x03, it is a compressed public key. A prefix of 0x04
85
+ * denotes an uncompressed public key.
86
+ *
87
+ * @param {string} pub A raw public key
88
+ */
89
+ recordKeysFromPublicKey(pub) {
90
+ if (!utils_1.isValidPublicKey(pub)) {
91
+ throw new Error('Unsupported public key');
92
+ }
93
+ if (sdk_core_1.isValidXpub(pub)) {
94
+ this.hdNode = bip32.fromBase58(pub);
95
+ }
96
+ else {
97
+ this.keyPair = bitcoinjs_lib_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
98
+ }
99
+ }
100
+ /**
101
+ * Stacks default keys format is raw private and uncompressed public key
102
+ *
103
+ * @param {boolean} compressed - Compress public key (defaults to false)
104
+ * @returns {DefaultKeys} The keys in the protocol default key format
105
+ */
106
+ getKeys(compressed = false) {
107
+ var _a;
108
+ let prv = (_a = this.getPrivateKey()) === null || _a === void 0 ? void 0 : _a.toString('hex');
109
+ if (prv && compressed) {
110
+ prv += '01';
111
+ }
112
+ return {
113
+ pub: this.getPublicKey({ compressed }).toString('hex'),
114
+ prv,
115
+ };
116
+ }
117
+ getCompressed() {
118
+ return this.keyPair.compressed;
119
+ }
120
+ /**
121
+ * Get a public address of an uncompressed public key.
122
+ *
123
+ * @returns {string} The public address
124
+ */
125
+ getAddress() {
126
+ return this.getSTXAddress(false, transactions_1.TransactionVersion.Mainnet);
127
+ }
128
+ /**
129
+ * Get a public address of an uncompressed public key.
130
+ *
131
+ * @param {boolean} compressed - Compress public key (defaults to false)
132
+ * @param {TransactionVersion} network - select Mainnet or Testnet for the address
133
+ * @returns {string} The public address
134
+ */
135
+ getSTXAddress(compressed = false, network = transactions_1.TransactionVersion.Mainnet) {
136
+ return transactions_1.getAddressFromPublicKey(this.getKeys(compressed).pub, network);
137
+ }
138
+ }
139
+ exports.KeyPair = KeyPair;
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL3N0eC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBcUM7QUFDckMsNkNBQStCO0FBQy9CLGlEQUF1QztBQUN2Qyx1REFBbUY7QUFDbkYsOENBU3lCO0FBQ3pCLG1DQUE4RDtBQUM5RCwyQ0FBc0Q7QUFFdEQsTUFBYSxPQUFRLFNBQVEsbUNBQXdCO0lBQ25EOzs7O09BSUc7SUFDSCxZQUFZLE1BQXVCO1FBQ2pDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNkLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxNQUFNLElBQUksR0FBRyxvQkFBVyxDQUFDLG1DQUF1QixDQUFDLENBQUM7WUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3BDO2FBQU0sSUFBSSxpQkFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0M7YUFBTSxJQUFJLHVCQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksc0JBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsT0FBTyxHQUFHLG1DQUF3QixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDaEU7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsd0JBQXdCLENBQUMsR0FBVztRQUNsQyxJQUFJLENBQUMseUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBRUQsSUFBSSxzQkFBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxzQkFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0gsdUJBQXVCLENBQUMsR0FBVztRQUNqQyxJQUFJLENBQUMsd0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQzNDO1FBRUQsSUFBSSxzQkFBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNyQzthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU8sR0FBRyxzQkFBTSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQzlEO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLOztRQUN4QixJQUFJLEdBQUcsR0FBRyxNQUFBLElBQUksQ0FBQyxhQUFhLEVBQUUsMENBQUUsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRTtZQUNyQixHQUFHLElBQUksSUFBSSxDQUFDO1NBQ2I7UUFFRCxPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDdEQsR0FBRztTQUNKLENBQUM7SUFDSixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7SUFDakMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxpQ0FBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsYUFBYSxDQUFDLFVBQVUsR0FBRyxLQUFLLEVBQUUsVUFBOEIsaUNBQWtCLENBQUMsT0FBTztRQUN4RixPQUFPLHNDQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hFLENBQUM7Q0FDRjtBQS9HRCwwQkErR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByYW5kb21CeXRlcyB9IGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgKiBhcyBiaXAzMiBmcm9tICdiaXAzMic7XG5pbXBvcnQgeyBFQ1BhaXIgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IGdldEFkZHJlc3NGcm9tUHVibGljS2V5LCBUcmFuc2FjdGlvblZlcnNpb24gfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQge1xuICBEZWZhdWx0S2V5cyxcbiAgaXNQcml2YXRlS2V5LFxuICBpc1B1YmxpY0tleSxcbiAgaXNTZWVkLFxuICBpc1ZhbGlkWHBydixcbiAgaXNWYWxpZFhwdWIsXG4gIEtleVBhaXJPcHRpb25zLFxuICBTZWNwMjU2azFFeHRlbmRlZEtleVBhaXIsXG59IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQgeyBpc1ZhbGlkUHJpdmF0ZUtleSwgaXNWYWxpZFB1YmxpY0tleSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgREVGQVVMVF9TRUVEX1NJWkVfQllURVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmV4cG9ydCBjbGFzcyBLZXlQYWlyIGV4dGVuZHMgU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyIHtcbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7IEtleVBhaXJPcHRpb25zIH0gc291cmNlIEVpdGhlciBhIG1hc3RlciBzZWVkLCBhIHByaXZhdGUga2V5LCBvciBhIHB1YmxpYyBrZXlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgc3VwZXIoc291cmNlKTtcbiAgICBpZiAoIXNvdXJjZSkge1xuICAgICAgY29uc3Qgc2VlZCA9IHJhbmRvbUJ5dGVzKERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTKTtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbVNlZWQoc2VlZCk7XG4gICAgfSBlbHNlIGlmIChpc1NlZWQoc291cmNlKSkge1xuICAgICAgdGhpcy5oZE5vZGUgPSBiaXAzMi5mcm9tU2VlZChzb3VyY2Uuc2VlZCk7XG4gICAgfSBlbHNlIGlmIChpc1ByaXZhdGVLZXkoc291cmNlKSkge1xuICAgICAgdGhpcy5yZWNvcmRLZXlzRnJvbVByaXZhdGVLZXkoc291cmNlLnBydik7XG4gICAgfSBlbHNlIGlmIChpc1B1YmxpY0tleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHVibGljS2V5KHNvdXJjZS5wdWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQga2V5IHBhaXIgb3B0aW9ucycpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmhkTm9kZSkge1xuICAgICAgdGhpcy5rZXlQYWlyID0gU2VjcDI1NmsxRXh0ZW5kZWRLZXlQYWlyLnRvS2V5UGFpcih0aGlzLmhkTm9kZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGEga2V5cGFpciBmcm9tIGEgcHJvdG9jb2wgcHJpdmF0ZSBrZXkgb3IgZXh0ZW5kZWQgcHJpdmF0ZSBrZXkuXG4gICAqXG4gICAqIFRoZSBwcm90b2NvbCBwcml2YXRlIGtleSBpcyBlaXRoZXIgMzIgb3IgMzMgYnl0ZXMgbG9uZyAoNjQgb3IgNjZcbiAgICogY2hhcmFjdGVycyBoZXgpLiAgSWYgaXQgaXMgMzIgYnl0ZXMgbG9uZywgc2V0IHRoZSBrZXlwYWlyJ3MgXCJjb21wcmVzc2VkXCJcbiAgICogZmllbGQgdG8gZmFsc2UgdG8gbGF0ZXIgZ2VuZXJhdGUgdW5jb21wcmVzc2VkIHB1YmxpYyBrZXlzICh0aGUgZGVmYXVsdCkuXG4gICAqIEEgMzMgYnl0ZSBrZXkgaGFzIDB4MDEgYXMgdGhlIGxhc3QgYnl0ZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIHJhdyBwcml2YXRlIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFpc1ZhbGlkUHJpdmF0ZUtleShwcnYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzVmFsaWRYcHJ2KHBydikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwcnYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LnNsaWNlKDAsIDY0KSwgJ2hleCcpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW4gRUNQYWlyIGZyb20gYSBwcm90b2NvbCBwdWJsaWMga2V5IG9yIGV4dGVuZGVkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIFRoZSBwcm90b2NvbCBwdWJsaWMga2V5IGlzIGVpdGhlciAzMiBieXRlcyBvciA2NCBieXRlcyBsb25nLCB3aXRoIGFcbiAgICogb25lLWJ5dGUgcHJlZml4IChhIHRvdGFsIG9mIDY2IG9yIDEzMCBjaGFyYWN0ZXJzIGluIGhleCkuICBJZiB0aGVcbiAgICogcHJlZml4IGlzIDB4MDIgb3IgMHgwMywgaXQgaXMgYSBjb21wcmVzc2VkIHB1YmxpYyBrZXkuICBBIHByZWZpeCBvZiAweDA0XG4gICAqIGRlbm90ZXMgYW4gdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwdWIgQSByYXcgcHVibGljIGtleVxuICAgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoIWlzVmFsaWRQdWJsaWNLZXkocHViKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBwdWJsaWMga2V5Jyk7XG4gICAgfVxuXG4gICAgaWYgKGlzVmFsaWRYcHViKHB1YikpIHtcbiAgICAgIHRoaXMuaGROb2RlID0gYmlwMzIuZnJvbUJhc2U1OChwdWIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSBFQ1BhaXIuZnJvbVB1YmxpY0tleShCdWZmZXIuZnJvbShwdWIsICdoZXgnKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YWNrcyBkZWZhdWx0IGtleXMgZm9ybWF0IGlzIHJhdyBwcml2YXRlIGFuZCB1bmNvbXByZXNzZWQgcHVibGljIGtleVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNvbXByZXNzZWQgLSBDb21wcmVzcyBwdWJsaWMga2V5IChkZWZhdWx0cyB0byBmYWxzZSlcbiAgICogQHJldHVybnMge0RlZmF1bHRLZXlzfSBUaGUga2V5cyBpbiB0aGUgcHJvdG9jb2wgZGVmYXVsdCBrZXkgZm9ybWF0XG4gICAqL1xuICBnZXRLZXlzKGNvbXByZXNzZWQgPSBmYWxzZSk6IERlZmF1bHRLZXlzIHtcbiAgICBsZXQgcHJ2ID0gdGhpcy5nZXRQcml2YXRlS2V5KCk/LnRvU3RyaW5nKCdoZXgnKTtcbiAgICBpZiAocHJ2ICYmIGNvbXByZXNzZWQpIHtcbiAgICAgIHBydiArPSAnMDEnO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IHRoaXMuZ2V0UHVibGljS2V5KHsgY29tcHJlc3NlZCB9KS50b1N0cmluZygnaGV4JyksXG4gICAgICBwcnYsXG4gICAgfTtcbiAgfVxuXG4gIGdldENvbXByZXNzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMua2V5UGFpci5jb21wcmVzc2VkO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIHB1YmxpYyBhZGRyZXNzIG9mIGFuIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5LlxuICAgKlxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcHVibGljIGFkZHJlc3NcbiAgICovXG4gIGdldEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTVFhBZGRyZXNzKGZhbHNlLCBUcmFuc2FjdGlvblZlcnNpb24uTWFpbm5ldCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgcHVibGljIGFkZHJlc3Mgb2YgYW4gdW5jb21wcmVzc2VkIHB1YmxpYyBrZXkuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY29tcHJlc3NlZCAtIENvbXByZXNzIHB1YmxpYyBrZXkgKGRlZmF1bHRzIHRvIGZhbHNlKVxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uVmVyc2lvbn0gbmV0d29yayAtIHNlbGVjdCBNYWlubmV0IG9yIFRlc3RuZXQgZm9yIHRoZSBhZGRyZXNzXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBwdWJsaWMgYWRkcmVzc1xuICAgKi9cbiAgZ2V0U1RYQWRkcmVzcyhjb21wcmVzc2VkID0gZmFsc2UsIG5ldHdvcms6IFRyYW5zYWN0aW9uVmVyc2lvbiA9IFRyYW5zYWN0aW9uVmVyc2lvbi5NYWlubmV0KTogc3RyaW5nIHtcbiAgICByZXR1cm4gZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkodGhpcy5nZXRLZXlzKGNvbXByZXNzZWQpLnB1YiwgbmV0d29yayk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,23 @@
1
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
2
+ import { Transaction } from './transaction';
3
+ import { SendParams } from './iface';
4
+ import { ContractCallPayload } from '@stacks/transactions/dist/payload';
5
+ import { AbstractContractBuilder } from './abstractContractBuilder';
6
+ export declare class SendmanyBuilder extends AbstractContractBuilder {
7
+ private _sendParams;
8
+ constructor(_coinConfig: Readonly<CoinConfig>);
9
+ static isValidContractCall(coinConfig: Readonly<CoinConfig>, payload: ContractCallPayload): boolean;
10
+ private sendParamsToFunctionArgs;
11
+ private sendParamsToPostcondition;
12
+ initBuilder(tx: Transaction): void;
13
+ /**
14
+ * Set a transfer
15
+ *
16
+ * @param {SendParams} sendParams - the sender address
17
+ * @returns {TransactionBuilder} This transaction builder
18
+ */
19
+ send({ address, amount, memo }: SendParams): this;
20
+ /** @inheritdoc */
21
+ protected buildImplementation(): Promise<Transaction>;
22
+ }
23
+ //# sourceMappingURL=sendmanyBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sendmanyBuilder.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/sendmanyBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAoD,MAAM,gBAAgB,CAAC;AAkB1G,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQ5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,SAAQ,uBAAuB;IAC1D,OAAO,CAAC,WAAW,CAAoB;gBAE3B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;WAI/B,mBAAmB,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO;IAS1G,OAAO,CAAC,wBAAwB,CAU9B;IAEF,OAAO,CAAC,yBAAyB;IAkBjC,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,UAAU,GAAG,IAAI;IAejD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAS5D"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SendmanyBuilder = void 0;
7
+ const statics_1 = require("@bitgo/statics");
8
+ const bn_js_1 = __importDefault(require("bn.js"));
9
+ const transactions_1 = require("@stacks/transactions");
10
+ const sdk_core_1 = require("@bitgo/sdk-core");
11
+ const utils_1 = require("./utils");
12
+ const constants_1 = require("./constants");
13
+ const abstractContractBuilder_1 = require("./abstractContractBuilder");
14
+ class SendmanyBuilder extends abstractContractBuilder_1.AbstractContractBuilder {
15
+ constructor(_coinConfig) {
16
+ super(_coinConfig);
17
+ this._sendParams = [];
18
+ this.sendParamsToFunctionArgs = (sendParams) => [
19
+ transactions_1.listCV(sendParams.map((recipient) => transactions_1.tupleCV({
20
+ to: transactions_1.standardPrincipalCV(recipient.address),
21
+ ustx: transactions_1.uintCV(recipient.amount),
22
+ memo: transactions_1.bufferCVFromString(recipient.memo || ''),
23
+ }))),
24
+ ];
25
+ }
26
+ static isValidContractCall(coinConfig, payload) {
27
+ return (coinConfig.network.sendmanymemoContractAddress ===
28
+ transactions_1.addressToString(payload.contractAddress) &&
29
+ constants_1.CONTRACT_NAME_SENDMANY === payload.contractName.content &&
30
+ constants_1.FUNCTION_NAME_SENDMANY === payload.functionName.content);
31
+ }
32
+ sendParamsToPostcondition(sendParams) {
33
+ const sum = sendParams.reduce((current, next) => current.add(new bn_js_1.default(next.amount)), new bn_js_1.default(0));
34
+ return [
35
+ transactions_1.makeStandardSTXPostCondition(utils_1.getSTXAddressFromPubKeys(this._fromPubKeys, this._coinConfig.network.type === statics_1.NetworkType.MAINNET
36
+ ? transactions_1.AddressVersion.MainnetMultiSig
37
+ : transactions_1.AddressVersion.TestnetMultiSig, this._fromPubKeys.length > 1 ? transactions_1.AddressHashMode.SerializeP2SH : transactions_1.AddressHashMode.SerializeP2PKH, this._numberSignatures).address, transactions_1.FungibleConditionCode.Equal, sum),
38
+ ];
39
+ }
40
+ initBuilder(tx) {
41
+ super.initBuilder(tx);
42
+ this._sendParams = utils_1.functionArgsToSendParams(tx.stxTransaction.payload.functionArgs);
43
+ }
44
+ /**
45
+ * Set a transfer
46
+ *
47
+ * @param {SendParams} sendParams - the sender address
48
+ * @returns {TransactionBuilder} This transaction builder
49
+ */
50
+ send({ address, amount, memo }) {
51
+ if (!address || !utils_1.isValidAddress(address)) {
52
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing address, got: ' + address);
53
+ }
54
+ if (!amount || !utils_1.isValidAmount(amount)) {
55
+ throw new sdk_core_1.BuildTransactionError('Invalid or missing amount, got: ' + amount);
56
+ }
57
+ if (!!memo && !utils_1.isValidMemo(memo)) {
58
+ throw new sdk_core_1.BuildTransactionError('Invalid memo, got: ' + memo);
59
+ }
60
+ this._sendParams.push({ address, amount, memo });
61
+ return this;
62
+ }
63
+ /** @inheritdoc */
64
+ async buildImplementation() {
65
+ this._contractAddress = this._coinConfig.network.sendmanymemoContractAddress;
66
+ this._contractName = constants_1.CONTRACT_NAME_SENDMANY;
67
+ this._functionName = constants_1.FUNCTION_NAME_SENDMANY;
68
+ this._functionArgs = this.sendParamsToFunctionArgs(this._sendParams);
69
+ this._postConditionMode = transactions_1.PostConditionMode.Deny;
70
+ this._postConditions = this.sendParamsToPostcondition(this._sendParams);
71
+ return await super.buildImplementation();
72
+ }
73
+ }
74
+ exports.SendmanyBuilder = SendmanyBuilder;
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VuZG1hbnlCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc3R4L3NlbmRtYW55QnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSw0Q0FBMEc7QUFDMUcsa0RBQTJCO0FBQzNCLHVEQWM4QjtBQUM5Qiw4Q0FBd0Q7QUFFeEQsbUNBTWlCO0FBRWpCLDJDQUE2RTtBQUU3RSx1RUFBb0U7QUFFcEUsTUFBYSxlQUFnQixTQUFRLGlEQUF1QjtJQUcxRCxZQUFZLFdBQWlDO1FBQzNDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUhiLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQWUvQiw2QkFBd0IsR0FBRyxDQUFDLFVBQXdCLEVBQWtCLEVBQUUsQ0FBQztZQUMvRSxxQkFBTSxDQUNKLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUMzQixzQkFBTyxDQUFDO2dCQUNOLEVBQUUsRUFBRSxrQ0FBbUIsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO2dCQUMxQyxJQUFJLEVBQUUscUJBQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO2dCQUM5QixJQUFJLEVBQUUsaUNBQWtCLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7YUFDL0MsQ0FBQyxDQUNILENBQ0Y7U0FDRixDQUFDO0lBckJGLENBQUM7SUFFTSxNQUFNLENBQUMsbUJBQW1CLENBQUMsVUFBZ0MsRUFBRSxPQUE0QjtRQUM5RixPQUFPLENBQ0osVUFBVSxDQUFDLE9BQThCLENBQUMsMkJBQTJCO1lBQ3BFLDhCQUFlLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUMxQyxrQ0FBc0IsS0FBSyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU87WUFDdkQsa0NBQXNCLEtBQUssT0FBTyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQ3hELENBQUM7SUFDSixDQUFDO0lBY08seUJBQXlCLENBQUMsVUFBd0I7UUFDeEQsTUFBTSxHQUFHLEdBQVcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsSUFBSSxlQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxPQUFPO1lBQ0wsMkNBQTRCLENBQzFCLGdDQUF3QixDQUN0QixJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUsscUJBQVcsQ0FBQyxPQUFPO2dCQUNuRCxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlO2dCQUNoQyxDQUFDLENBQUMsNkJBQWMsQ0FBQyxlQUFlLEVBQ2xDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsOEJBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLDhCQUFlLENBQUMsY0FBYyxFQUM3RixJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUMsT0FBTyxFQUNULG9DQUFxQixDQUFDLEtBQUssRUFDM0IsR0FBRyxDQUNKO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsRUFBZTtRQUN6QixLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLEdBQUcsZ0NBQXdCLENBQUUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxPQUErQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9HLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFjO1FBQ3hDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxzQkFBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxtQ0FBbUMsR0FBRyxPQUFPLENBQUMsQ0FBQztTQUNoRjtRQUNELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxxQkFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3JDLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyxrQ0FBa0MsR0FBRyxNQUFNLENBQUMsQ0FBQztTQUM5RTtRQUNELElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxDQUFDO1NBQy9EO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUE4QixDQUFDLDJCQUEyQixDQUFDO1FBQ3JHLElBQUksQ0FBQyxhQUFhLEdBQUcsa0NBQXNCLENBQUM7UUFDNUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxrQ0FBc0IsQ0FBQztRQUM1QyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGdDQUFpQixDQUFDLElBQUksQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDeEUsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7Q0FDRjtBQWxGRCwwQ0FrRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBOZXR3b3JrVHlwZSwgU3RhY2tzTmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmsgfSBmcm9tICdAYml0Z28vc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIEFkZHJlc3NIYXNoTW9kZSxcbiAgYWRkcmVzc1RvU3RyaW5nLFxuICBBZGRyZXNzVmVyc2lvbixcbiAgYnVmZmVyQ1ZGcm9tU3RyaW5nLFxuICBDbGFyaXR5VmFsdWUsXG4gIEZ1bmdpYmxlQ29uZGl0aW9uQ29kZSxcbiAgbGlzdENWLFxuICBtYWtlU3RhbmRhcmRTVFhQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uTW9kZSxcbiAgc3RhbmRhcmRQcmluY2lwYWxDVixcbiAgdHVwbGVDVixcbiAgdWludENWLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24gfSBmcm9tICcuL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7XG4gIGZ1bmN0aW9uQXJnc1RvU2VuZFBhcmFtcyxcbiAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzLFxuICBpc1ZhbGlkQWRkcmVzcyxcbiAgaXNWYWxpZEFtb3VudCxcbiAgaXNWYWxpZE1lbW8sXG59IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgU2VuZFBhcmFtcyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgQ09OVFJBQ1RfTkFNRV9TRU5ETUFOWSwgRlVOQ1RJT05fTkFNRV9TRU5ETUFOWSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IENvbnRyYWN0Q2FsbFBheWxvYWQgfSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucy9kaXN0L3BheWxvYWQnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIgfSBmcm9tICcuL2Fic3RyYWN0Q29udHJhY3RCdWlsZGVyJztcblxuZXhwb3J0IGNsYXNzIFNlbmRtYW55QnVpbGRlciBleHRlbmRzIEFic3RyYWN0Q29udHJhY3RCdWlsZGVyIHtcbiAgcHJpdmF0ZSBfc2VuZFBhcmFtczogU2VuZFBhcmFtc1tdID0gW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkQ29udHJhY3RDYWxsKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+LCBwYXlsb2FkOiBDb250cmFjdENhbGxQYXlsb2FkKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChjb2luQ29uZmlnLm5ldHdvcmsgYXMgQml0Z29TdGFja3NOZXR3b3JrKS5zZW5kbWFueW1lbW9Db250cmFjdEFkZHJlc3MgPT09XG4gICAgICAgIGFkZHJlc3NUb1N0cmluZyhwYXlsb2FkLmNvbnRyYWN0QWRkcmVzcykgJiZcbiAgICAgIENPTlRSQUNUX05BTUVfU0VORE1BTlkgPT09IHBheWxvYWQuY29udHJhY3ROYW1lLmNvbnRlbnQgJiZcbiAgICAgIEZVTkNUSU9OX05BTUVfU0VORE1BTlkgPT09IHBheWxvYWQuZnVuY3Rpb25OYW1lLmNvbnRlbnRcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kUGFyYW1zVG9GdW5jdGlvbkFyZ3MgPSAoc2VuZFBhcmFtczogU2VuZFBhcmFtc1tdKTogQ2xhcml0eVZhbHVlW10gPT4gW1xuICAgIGxpc3RDVihcbiAgICAgIHNlbmRQYXJhbXMubWFwKChyZWNpcGllbnQpID0+XG4gICAgICAgIHR1cGxlQ1Yoe1xuICAgICAgICAgIHRvOiBzdGFuZGFyZFByaW5jaXBhbENWKHJlY2lwaWVudC5hZGRyZXNzKSxcbiAgICAgICAgICB1c3R4OiB1aW50Q1YocmVjaXBpZW50LmFtb3VudCksXG4gICAgICAgICAgbWVtbzogYnVmZmVyQ1ZGcm9tU3RyaW5nKHJlY2lwaWVudC5tZW1vIHx8ICcnKSxcbiAgICAgICAgfSksXG4gICAgICApLFxuICAgICksXG4gIF07XG5cbiAgcHJpdmF0ZSBzZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHNlbmRQYXJhbXM6IFNlbmRQYXJhbXNbXSk6IFBvc3RDb25kaXRpb25bXSB7XG4gICAgY29uc3Qgc3VtOiBCaWdOdW0gPSBzZW5kUGFyYW1zLnJlZHVjZSgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudC5hZGQobmV3IEJpZ051bShuZXh0LmFtb3VudCkpLCBuZXcgQmlnTnVtKDApKTtcbiAgICByZXR1cm4gW1xuICAgICAgbWFrZVN0YW5kYXJkU1RYUG9zdENvbmRpdGlvbihcbiAgICAgICAgZ2V0U1RYQWRkcmVzc0Zyb21QdWJLZXlzKFxuICAgICAgICAgIHRoaXMuX2Zyb21QdWJLZXlzLFxuICAgICAgICAgIHRoaXMuX2NvaW5Db25maWcubmV0d29yay50eXBlID09PSBOZXR3b3JrVHlwZS5NQUlOTkVUXG4gICAgICAgICAgICA/IEFkZHJlc3NWZXJzaW9uLk1haW5uZXRNdWx0aVNpZ1xuICAgICAgICAgICAgOiBBZGRyZXNzVmVyc2lvbi5UZXN0bmV0TXVsdGlTaWcsXG4gICAgICAgICAgdGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID4gMSA/IEFkZHJlc3NIYXNoTW9kZS5TZXJpYWxpemVQMlNIIDogQWRkcmVzc0hhc2hNb2RlLlNlcmlhbGl6ZVAyUEtILFxuICAgICAgICAgIHRoaXMuX251bWJlclNpZ25hdHVyZXMsXG4gICAgICAgICkuYWRkcmVzcyxcbiAgICAgICAgRnVuZ2libGVDb25kaXRpb25Db2RlLkVxdWFsLFxuICAgICAgICBzdW0sXG4gICAgICApLFxuICAgIF07XG4gIH1cblxuICBpbml0QnVpbGRlcih0eDogVHJhbnNhY3Rpb24pOiB2b2lkIHtcbiAgICBzdXBlci5pbml0QnVpbGRlcih0eCk7XG4gICAgdGhpcy5fc2VuZFBhcmFtcyA9IGZ1bmN0aW9uQXJnc1RvU2VuZFBhcmFtcygodHguc3R4VHJhbnNhY3Rpb24ucGF5bG9hZCBhcyBDb250cmFjdENhbGxQYXlsb2FkKS5mdW5jdGlvbkFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqICBTZXQgYSB0cmFuc2ZlclxuICAgKlxuICAgKiBAcGFyYW0ge1NlbmRQYXJhbXN9IHNlbmRQYXJhbXMgLSB0aGUgc2VuZGVyIGFkZHJlc3NcbiAgICogQHJldHVybnMge1RyYW5zYWN0aW9uQnVpbGRlcn0gVGhpcyB0cmFuc2FjdGlvbiBidWlsZGVyXG4gICAqL1xuICBzZW5kKHsgYWRkcmVzcywgYW1vdW50LCBtZW1vIH06IFNlbmRQYXJhbXMpOiB0aGlzIHtcbiAgICBpZiAoIWFkZHJlc3MgfHwgIWlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG9yIG1pc3NpbmcgYWRkcmVzcywgZ290OiAnICsgYWRkcmVzcyk7XG4gICAgfVxuICAgIGlmICghYW1vdW50IHx8ICFpc1ZhbGlkQW1vdW50KGFtb3VudCkpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ0ludmFsaWQgb3IgbWlzc2luZyBhbW91bnQsIGdvdDogJyArIGFtb3VudCk7XG4gICAgfVxuICAgIGlmICghIW1lbW8gJiYgIWlzVmFsaWRNZW1vKG1lbW8pKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIG1lbW8sIGdvdDogJyArIG1lbW8pO1xuICAgIH1cblxuICAgIHRoaXMuX3NlbmRQYXJhbXMucHVzaCh7IGFkZHJlc3MsIGFtb3VudCwgbWVtbyB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5fY29udHJhY3RBZGRyZXNzID0gKHRoaXMuX2NvaW5Db25maWcubmV0d29yayBhcyBCaXRnb1N0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcztcbiAgICB0aGlzLl9jb250cmFjdE5hbWUgPSBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZO1xuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IEZVTkNUSU9OX05BTUVfU0VORE1BTlk7XG4gICAgdGhpcy5fZnVuY3Rpb25BcmdzID0gdGhpcy5zZW5kUGFyYW1zVG9GdW5jdGlvbkFyZ3ModGhpcy5fc2VuZFBhcmFtcyk7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbk1vZGUgPSBQb3N0Q29uZGl0aW9uTW9kZS5EZW55O1xuICAgIHRoaXMuX3Bvc3RDb25kaXRpb25zID0gdGhpcy5zZW5kUGFyYW1zVG9Qb3N0Y29uZGl0aW9uKHRoaXMuX3NlbmRQYXJhbXMpO1xuICAgIHJldHVybiBhd2FpdCBzdXBlci5idWlsZEltcGxlbWVudGF0aW9uKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,49 @@
1
+ import { StacksTransaction } from '@stacks/transactions';
2
+ import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
+ import { BaseKey, BaseTransaction, TransactionType } from '@bitgo/sdk-core';
4
+ import { SignatureData, TxData } from './iface';
5
+ import { KeyPair } from './keyPair';
6
+ export declare class Transaction extends BaseTransaction {
7
+ private _stxTransaction;
8
+ protected _type: TransactionType;
9
+ private _sigHash;
10
+ constructor(_coinConfig: Readonly<CoinConfig>);
11
+ /** @inheritdoc */
12
+ canSign(key: BaseKey): boolean;
13
+ sign(keyPair: KeyPair[] | KeyPair, sigHash?: string): Promise<void>;
14
+ appendOrigin(pubKeyString: string[] | string): Promise<void>;
15
+ signWithSignatures(signature: SignatureData[] | SignatureData, isMultiSig: boolean): Promise<void>;
16
+ get signature(): string[];
17
+ /** @inheritdoc */
18
+ toJson(): TxData;
19
+ private getPayloadData;
20
+ /**
21
+ * Return the length of a transaction. This is needed to calculate
22
+ * the transaction fee.
23
+ *
24
+ * @returns {number} size in bytes of the serialized transaction
25
+ */
26
+ transactionSize(): number;
27
+ toBroadcastFormat(): string;
28
+ get stxTransaction(): StacksTransaction;
29
+ set stxTransaction(t: StacksTransaction);
30
+ private getNonce;
31
+ /**
32
+ * Sets this transaction payload
33
+ *
34
+ * @param rawTransaction
35
+ */
36
+ fromRawTransaction(rawTransaction: string): void;
37
+ /**
38
+ * Set the transaction type
39
+ *
40
+ * @param {TransactionType} transactionType The transaction type to be set
41
+ */
42
+ setTransactionType(transactionType: TransactionType): void;
43
+ /**
44
+ * Load the input and output data on this transaction using the transaction json
45
+ * if there are outputs.
46
+ */
47
+ loadInputsAndOutputs(): void;
48
+ }
49
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/stx/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAYL,iBAAiB,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAiB,MAAM,gBAAgB,CAAC;AACvE,OAAO,EACL,OAAO,EACP,eAAe,EAKf,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAmD,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAoB;IAC3C,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;IACjC,OAAO,CAAC,QAAQ,CAAS;gBAEb,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAIxB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ5D,kBAAkB,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBxG,IAAI,SAAS,IAAI,MAAM,EAAE,CAexB;IAED,kBAAkB;IAClB,MAAM,IAAI,MAAM;IAchB,OAAO,CAAC,cAAc;IA+BtB;;;;;OAKG;IACH,eAAe,IAAI,MAAM;IAIzB,iBAAiB,IAAI,MAAM;IAO3B,IAAI,cAAc,IAAI,iBAAiB,CAEtC;IAED,IAAI,cAAc,CAAC,CAAC,EAAE,iBAAiB,EAEtC;IAED,OAAO,CAAC,QAAQ;IAQhB;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAUhD;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D;;;OAGG;IACH,oBAAoB,IAAI,IAAI;CA8C7B"}
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Transaction = void 0;
7
+ const transactions_1 = require("@stacks/transactions");
8
+ const sdk_core_1 = require("@bitgo/sdk-core");
9
+ const utils_1 = require("./utils");
10
+ const bn_js_1 = __importDefault(require("bn.js"));
11
+ class Transaction extends sdk_core_1.BaseTransaction {
12
+ constructor(_coinConfig) {
13
+ super(_coinConfig);
14
+ }
15
+ /** @inheritdoc */
16
+ canSign(key) {
17
+ return true;
18
+ }
19
+ async sign(keyPair, sigHash) {
20
+ var _a;
21
+ const keyPairs = keyPair instanceof Array ? keyPair : [keyPair];
22
+ const signer = new transactions_1.TransactionSigner(this._stxTransaction);
23
+ signer.checkOversign = false;
24
+ signer.sigHash = (_a = sigHash !== null && sigHash !== void 0 ? sigHash : this._sigHash) !== null && _a !== void 0 ? _a : this._stxTransaction.verifyBegin();
25
+ for (const kp of keyPairs) {
26
+ const keys = kp.getKeys(kp.getCompressed());
27
+ if (!keys.prv) {
28
+ throw new sdk_core_1.SigningError('Missing private key');
29
+ }
30
+ const privKey = transactions_1.createStacksPrivateKey(keys.prv);
31
+ signer.signOrigin(privKey);
32
+ this._sigHash = signer.sigHash;
33
+ }
34
+ }
35
+ async appendOrigin(pubKeyString) {
36
+ const pubKeyStrings = pubKeyString instanceof Array ? pubKeyString : [pubKeyString];
37
+ const signer = new transactions_1.TransactionSigner(this._stxTransaction);
38
+ pubKeyStrings.forEach((pubKey) => {
39
+ signer.appendOrigin(transactions_1.createStacksPublicKey(pubKey));
40
+ });
41
+ }
42
+ async signWithSignatures(signature, isMultiSig) {
43
+ if (!signature) {
44
+ throw new sdk_core_1.SigningError('Missing signatures');
45
+ }
46
+ const signatures = signature instanceof Array ? signature : [signature];
47
+ if (!isMultiSig) {
48
+ this._stxTransaction = this._stxTransaction.createTxWithSignature(signatures[0].data);
49
+ }
50
+ else {
51
+ const authFields = signatures.map((sig) => transactions_1.createTransactionAuthField(transactions_1.PubKeyEncoding.Compressed, sig));
52
+ this._stxTransaction.auth.spendingCondition.fields = this._stxTransaction.auth.spendingCondition.fields.concat(authFields);
53
+ }
54
+ if (signatures.length > 0) {
55
+ this._sigHash = signatures[signatures.length - 1].sigHash;
56
+ }
57
+ }
58
+ get signature() {
59
+ if (this._stxTransaction && this._stxTransaction.auth.spendingCondition) {
60
+ if (transactions_1.isSingleSig(this._stxTransaction.auth.spendingCondition)) {
61
+ return [this._stxTransaction.auth.spendingCondition.signature.data];
62
+ }
63
+ else {
64
+ const signatures = [];
65
+ this._stxTransaction.auth.spendingCondition.fields.forEach((field) => {
66
+ if (field.contents.type === transactions_1.StacksMessageType.MessageSignature) {
67
+ signatures.push(field.contents.data);
68
+ }
69
+ });
70
+ return signatures;
71
+ }
72
+ }
73
+ return [];
74
+ }
75
+ /** @inheritdoc */
76
+ toJson() {
77
+ if (!this._stxTransaction) {
78
+ throw new sdk_core_1.ParseTransactionError('Empty transaction');
79
+ }
80
+ const result = {
81
+ id: this._stxTransaction.txid(),
82
+ fee: this._stxTransaction.auth.getFee().toString(10),
83
+ from: utils_1.getTxSenderAddress(this._stxTransaction),
84
+ nonce: this.getNonce(),
85
+ payload: this.getPayloadData(),
86
+ };
87
+ return result;
88
+ }
89
+ getPayloadData() {
90
+ if (this._stxTransaction.payload.payloadType === transactions_1.PayloadType.TokenTransfer) {
91
+ const payload = this._stxTransaction.payload;
92
+ const txPayload = {
93
+ payloadType: transactions_1.PayloadType.TokenTransfer,
94
+ // result.payload.memo will be padded with \u0000 up to
95
+ // MEMO_MAX_LENGTH_BYTES as defined in @stacks/transactions
96
+ memo: utils_1.unpadMemo(payload.memo.content),
97
+ to: transactions_1.addressToString({
98
+ type: transactions_1.StacksMessageType.Address,
99
+ version: payload.recipient.address.version,
100
+ hash160: payload.recipient.address.hash160.toString(),
101
+ }),
102
+ amount: payload.amount.toString(),
103
+ };
104
+ return txPayload;
105
+ }
106
+ else if (this._stxTransaction.payload.payloadType === transactions_1.PayloadType.ContractCall) {
107
+ const payload = this._stxTransaction.payload;
108
+ const contractPayload = {
109
+ payloadType: transactions_1.PayloadType.ContractCall,
110
+ contractAddress: transactions_1.addressToString(payload.contractAddress),
111
+ contractName: payload.contractName.content,
112
+ functionName: payload.functionName.content,
113
+ functionArgs: payload.functionArgs.map(utils_1.stringifyCv),
114
+ };
115
+ return contractPayload;
116
+ }
117
+ else {
118
+ throw new sdk_core_1.NotSupported('payload type not supported');
119
+ }
120
+ }
121
+ /**
122
+ * Return the length of a transaction. This is needed to calculate
123
+ * the transaction fee.
124
+ *
125
+ * @returns {number} size in bytes of the serialized transaction
126
+ */
127
+ transactionSize() {
128
+ return this._stxTransaction.serialize().length;
129
+ }
130
+ toBroadcastFormat() {
131
+ if (!this._stxTransaction) {
132
+ throw new sdk_core_1.ParseTransactionError('Empty transaction');
133
+ }
134
+ return this._stxTransaction.serialize().toString('hex');
135
+ }
136
+ get stxTransaction() {
137
+ return this._stxTransaction;
138
+ }
139
+ set stxTransaction(t) {
140
+ this._stxTransaction = t;
141
+ }
142
+ getNonce() {
143
+ if (this._stxTransaction.auth.spendingCondition) {
144
+ return Number(this._stxTransaction.auth.spendingCondition.nonce);
145
+ }
146
+ else {
147
+ throw new sdk_core_1.InvalidTransactionError('spending condition is null');
148
+ }
149
+ }
150
+ /**
151
+ * Sets this transaction payload
152
+ *
153
+ * @param rawTransaction
154
+ */
155
+ fromRawTransaction(rawTransaction) {
156
+ const raw = utils_1.removeHexPrefix(rawTransaction);
157
+ try {
158
+ this._stxTransaction = transactions_1.deserializeTransaction(transactions_1.BufferReader.fromBuffer(Buffer.from(raw, 'hex')));
159
+ }
160
+ catch (e) {
161
+ throw new sdk_core_1.ParseTransactionError('Error parsing the raw transaction');
162
+ }
163
+ this.loadInputsAndOutputs();
164
+ }
165
+ /**
166
+ * Set the transaction type
167
+ *
168
+ * @param {TransactionType} transactionType The transaction type to be set
169
+ */
170
+ setTransactionType(transactionType) {
171
+ this._type = transactionType;
172
+ }
173
+ /**
174
+ * Load the input and output data on this transaction using the transaction json
175
+ * if there are outputs.
176
+ */
177
+ loadInputsAndOutputs() {
178
+ const txJson = this.toJson();
179
+ if (txJson.payload.payloadType === transactions_1.PayloadType.TokenTransfer) {
180
+ if (txJson.payload.to && txJson.payload.amount) {
181
+ this._outputs = [
182
+ {
183
+ address: txJson.payload.to,
184
+ value: txJson.payload.amount,
185
+ coin: this._coinConfig.name,
186
+ },
187
+ ];
188
+ this._inputs = [
189
+ {
190
+ address: txJson.from,
191
+ value: txJson.payload.amount,
192
+ coin: this._coinConfig.name,
193
+ },
194
+ ];
195
+ }
196
+ }
197
+ else if (txJson.payload.payloadType === transactions_1.PayloadType.ContractCall) {
198
+ if (txJson.payload.contractAddress === this._coinConfig.network.sendmanymemoContractAddress) {
199
+ const sendParams = utils_1.functionArgsToSendParams(this.stxTransaction.payload.functionArgs);
200
+ const coin = this._coinConfig.name;
201
+ const sum = sendParams.reduce((current, next) => current.add(new bn_js_1.default(next.amount)), new bn_js_1.default(0));
202
+ this._outputs = sendParams.map((sendParam) => ({ address: sendParam.address, value: sendParam.amount, coin }));
203
+ this._inputs = [{ address: txJson.from, value: sum.toString(), coin }];
204
+ }
205
+ else {
206
+ this._outputs = [
207
+ {
208
+ address: txJson.payload.contractAddress,
209
+ value: '0',
210
+ coin: this._coinConfig.name,
211
+ },
212
+ ];
213
+ this._inputs = [
214
+ {
215
+ address: txJson.from,
216
+ value: '0',
217
+ coin: this._coinConfig.name,
218
+ },
219
+ ];
220
+ }
221
+ }
222
+ }
223
+ }
224
+ exports.Transaction = Transaction;
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29pbi9zdHgvdHJhbnNhY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsdURBYzhCO0FBRTlCLDhDQVF5QjtBQUV6QixtQ0FBZ0g7QUFHaEgsa0RBQTJCO0FBRTNCLE1BQWEsV0FBWSxTQUFRLDBCQUFlO0lBSzlDLFlBQVksV0FBaUM7UUFDM0MsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsT0FBTyxDQUFDLEdBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUE0QixFQUFFLE9BQWdCOztRQUN2RCxNQUFNLFFBQVEsR0FBRyxPQUFPLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEUsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQ0FBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0QsTUFBTSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDN0IsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFBLE9BQU8sYUFBUCxPQUFPLGNBQVAsT0FBTyxHQUFJLElBQUksQ0FBQyxRQUFRLG1DQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEYsS0FBSyxNQUFNLEVBQUUsSUFBSSxRQUFRLEVBQUU7WUFDekIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDYixNQUFNLElBQUksdUJBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2FBQy9DO1lBQ0QsTUFBTSxPQUFPLEdBQUcs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LEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQy9HLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUN4RTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsUUFBUSxHQUFHO29CQUNkO3dCQUNFLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLGVBQWU7d0JBQ3ZDLEtBQUssRUFBRSxHQUFHO3dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7cUJBQzVCO2lCQUNGLENBQUM7Z0JBRUYsSUFBSSxDQUFDLE9BQU8sR0FBRztvQkFDYjt3QkFDRSxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUk7d0JBQ3BCLEtBQUssRUFBRSxHQUFHO3dCQUNWLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7cUJBQzVCO2lCQUNGLENBQUM7YUFDSDtTQUNGO0lBQ0gsQ0FBQztDQUNGO0FBbk9ELGtDQW1PQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQnVmZmVyUmVhZGVyLFxuICBjcmVhdGVTdGFja3NQcml2YXRlS2V5LFxuICBjcmVhdGVTdGFja3NQdWJsaWNLZXksXG4gIGNyZWF0ZVRyYW5zYWN0aW9uQXV0aEZpZWxkLFxuICBkZXNlcmlhbGl6ZVRyYW5zYWN0aW9uLFxuICBpc1NpbmdsZVNpZyxcbiAgTXVsdGlTaWdTcGVuZGluZ0NvbmRpdGlvbixcbiAgUGF5bG9hZFR5cGUsXG4gIFB1YktleUVuY29kaW5nLFxuICBTdGFja3NNZXNzYWdlVHlwZSxcbiAgU3RhY2tzVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uU2lnbmVyLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnLCBTdGFja3NOZXR3b3JrIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHtcbiAgQmFzZUtleSxcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgTm90U3VwcG9ydGVkLFxuICBQYXJzZVRyYW5zYWN0aW9uRXJyb3IsXG4gIFNpZ25pbmdFcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHsgU2lnbmF0dXJlRGF0YSwgU3RhY2tzQ29udHJhY3RQYXlsb2FkLCBTdGFja3NUcmFuc2FjdGlvblBheWxvYWQsIFR4RGF0YSB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgZnVuY3Rpb25BcmdzVG9TZW5kUGFyYW1zLCBnZXRUeFNlbmRlckFkZHJlc3MsIHJlbW92ZUhleFByZWZpeCwgc3RyaW5naWZ5Q3YsIHVucGFkTWVtbyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgS2V5UGFpciB9IGZyb20gJy4va2V5UGFpcic7XG5pbXBvcnQgeyBDb250cmFjdENhbGxQYXlsb2FkIH0gZnJvbSAnQHN0YWNrcy90cmFuc2FjdGlvbnMvZGlzdC9wYXlsb2FkJztcbmltcG9ydCBCaWdOdW0gZnJvbSAnYm4uanMnO1xuXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb24gZXh0ZW5kcyBCYXNlVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9zdHhUcmFuc2FjdGlvbjogU3RhY2tzVHJhbnNhY3Rpb247XG4gIHByb3RlY3RlZCBfdHlwZTogVHJhbnNhY3Rpb25UeXBlO1xuICBwcml2YXRlIF9zaWdIYXNoOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGNhblNpZ24oa2V5OiBCYXNlS2V5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBzaWduKGtleVBhaXI6IEtleVBhaXJbXSB8IEtleVBhaXIsIHNpZ0hhc2g/OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBrZXlQYWlycyA9IGtleVBhaXIgaW5zdGFuY2VvZiBBcnJheSA/IGtleVBhaXIgOiBba2V5UGFpcl07XG4gICAgY29uc3Qgc2lnbmVyID0gbmV3IFRyYW5zYWN0aW9uU2lnbmVyKHRoaXMuX3N0eFRyYW5zYWN0aW9uKTtcbiAgICBzaWduZXIuY2hlY2tPdmVyc2lnbiA9IGZhbHNlO1xuICAgIHNpZ25lci5zaWdIYXNoID0gc2lnSGFzaCA/PyB0aGlzLl9zaWdIYXNoID8/IHRoaXMuX3N0eFRyYW5zYWN0aW9uLnZlcmlmeUJlZ2luKCk7XG4gICAgZm9yIChjb25zdCBrcCBvZiBrZXlQYWlycykge1xuICAgICAgY29uc3Qga2V5cyA9IGtwLmdldEtleXMoa3AuZ2V0Q29tcHJlc3NlZCgpKTtcbiAgICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgICAgdGhyb3cgbmV3IFNpZ25pbmdFcnJvcignTWlzc2luZyBwcml2YXRlIGtleScpO1xuICAgICAgfVxuICAgICAgY29uc3QgcHJpdktleSA9IGNyZWF0ZVN0YWNrc1ByaXZhdGVLZXkoa2V5cy5wcnYpO1xuICAgICAgc2lnbmVyLnNpZ25PcmlnaW4ocHJpdktleSk7XG4gICAgICB0aGlzLl9zaWdIYXNoID0gc2lnbmVyLnNpZ0hhc2g7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYXBwZW5kT3JpZ2luKHB1YktleVN0cmluZzogc3RyaW5nW10gfCBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwdWJLZXlTdHJpbmdzID0gcHViS2V5U3RyaW5nIGluc3RhbmNlb2YgQXJyYXkgPyBwdWJLZXlTdHJpbmcgOiBbcHViS2V5U3RyaW5nXTtcbiAgICBjb25zdCBzaWduZXI6IFRyYW5zYWN0aW9uU2lnbmVyID0gbmV3IFRyYW5zYWN0aW9uU2lnbmVyKHRoaXMuX3N0eFRyYW5zYWN0aW9uKTtcbiAgICBwdWJLZXlTdHJpbmdzLmZvckVhY2goKHB1YktleSkgPT4ge1xuICAgICAgc2lnbmVyLmFwcGVuZE9yaWdpbihjcmVhdGVTdGFja3NQdWJsaWNLZXkocHViS2V5KSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBzaWduV2l0aFNpZ25hdHVyZXMoc2lnbmF0dXJlOiBTaWduYXR1cmVEYXRhW10gfCBTaWduYXR1cmVEYXRhLCBpc011bHRpU2lnOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKCFzaWduYXR1cmUpIHtcbiAgICAgIHRocm93IG5ldyBTaWduaW5nRXJyb3IoJ01pc3Npbmcgc2lnbmF0dXJlcycpO1xuICAgIH1cbiAgICBjb25zdCBzaWduYXR1cmVzID0gc2lnbmF0dXJlIGluc3RhbmNlb2YgQXJyYXkgPyBzaWduYXR1cmUgOiBbc2lnbmF0dXJlXTtcblxuICAgIGlmICghaXNNdWx0aVNpZykge1xuICAgICAgdGhpcy5fc3R4VHJhbnNhY3Rpb24gPSB0aGlzLl9zdHhUcmFuc2FjdGlvbi5jcmVhdGVUeFdpdGhTaWduYXR1cmUoc2lnbmF0dXJlc1swXS5kYXRhKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYXV0aEZpZWxkcyA9IHNpZ25hdHVyZXMubWFwKChzaWcpID0+IGNyZWF0ZVRyYW5zYWN0aW9uQXV0aEZpZWxkKFB1YktleUVuY29kaW5nLkNvbXByZXNzZWQsIHNpZykpO1xuICAgICAgKHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24gYXMgTXVsdGlTaWdTcGVuZGluZ0NvbmRpdGlvbikuZmllbGRzID0gKFxuICAgICAgICB0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uIGFzIE11bHRpU2lnU3BlbmRpbmdDb25kaXRpb25cbiAgICAgICkuZmllbGRzLmNvbmNhdChhdXRoRmllbGRzKTtcbiAgICB9XG4gICAgaWYgKHNpZ25hdHVyZXMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5fc2lnSGFzaCA9IHNpZ25hdHVyZXNbc2lnbmF0dXJlcy5sZW5ndGggLSAxXS5zaWdIYXNoO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzaWduYXR1cmUoKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLl9zdHhUcmFuc2FjdGlvbiAmJiB0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uKSB7XG4gICAgICBpZiAoaXNTaW5nbGVTaWcodGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbikpIHtcbiAgICAgICAgcmV0dXJuIFt0aGlzLl9zdHhUcmFuc2FjdGlvbi5hdXRoLnNwZW5kaW5nQ29uZGl0aW9uLnNpZ25hdHVyZS5kYXRhXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNpZ25hdHVyZXM6IHN0cmluZ1tdID0gW107XG4gICAgICAgIHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24uZmllbGRzLmZvckVhY2goKGZpZWxkKSA9PiB7XG4gICAgICAgICAgaWYgKGZpZWxkLmNvbnRlbnRzLnR5cGUgPT09IFN0YWNrc01lc3NhZ2VUeXBlLk1lc3NhZ2VTaWduYXR1cmUpIHtcbiAgICAgICAgICAgIHNpZ25hdHVyZXMucHVzaChmaWVsZC5jb250ZW50cy5kYXRhKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gc2lnbmF0dXJlcztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHRvSnNvbigpOiBUeERhdGEge1xuICAgIGlmICghdGhpcy5fc3R4VHJhbnNhY3Rpb24pIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0VtcHR5IHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdDogVHhEYXRhID0ge1xuICAgICAgaWQ6IHRoaXMuX3N0eFRyYW5zYWN0aW9uLnR4aWQoKSxcbiAgICAgIGZlZTogdGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5nZXRGZWUoKS50b1N0cmluZygxMCksXG4gICAgICBmcm9tOiBnZXRUeFNlbmRlckFkZHJlc3ModGhpcy5fc3R4VHJhbnNhY3Rpb24pLFxuICAgICAgbm9uY2U6IHRoaXMuZ2V0Tm9uY2UoKSxcbiAgICAgIHBheWxvYWQ6IHRoaXMuZ2V0UGF5bG9hZERhdGEoKSxcbiAgICB9O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIGdldFBheWxvYWREYXRhKCk6IFN0YWNrc1RyYW5zYWN0aW9uUGF5bG9hZCB8IFN0YWNrc0NvbnRyYWN0UGF5bG9hZCB7XG4gICAgaWYgKHRoaXMuX3N0eFRyYW5zYWN0aW9uLnBheWxvYWQucGF5bG9hZFR5cGUgPT09IFBheWxvYWRUeXBlLlRva2VuVHJhbnNmZXIpIHtcbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0aGlzLl9zdHhUcmFuc2FjdGlvbi5wYXlsb2FkO1xuICAgICAgY29uc3QgdHhQYXlsb2FkOiBTdGFja3NUcmFuc2FjdGlvblBheWxvYWQgPSB7XG4gICAgICAgIHBheWxvYWRUeXBlOiBQYXlsb2FkVHlwZS5Ub2tlblRyYW5zZmVyLFxuICAgICAgICAvLyByZXN1bHQucGF5bG9hZC5tZW1vIHdpbGwgYmUgcGFkZGVkIHdpdGggXFx1MDAwMCB1cCB0b1xuICAgICAgICAvLyBNRU1PX01BWF9MRU5HVEhfQllURVMgYXMgZGVmaW5lZCBpbiBAc3RhY2tzL3RyYW5zYWN0aW9uc1xuICAgICAgICBtZW1vOiB1bnBhZE1lbW8ocGF5bG9hZC5tZW1vLmNvbnRlbnQpLFxuICAgICAgICB0bzogYWRkcmVzc1RvU3RyaW5nKHtcbiAgICAgICAgICB0eXBlOiBTdGFja3NNZXNzYWdlVHlwZS5BZGRyZXNzLFxuICAgICAgICAgIHZlcnNpb246IHBheWxvYWQucmVjaXBpZW50LmFkZHJlc3MudmVyc2lvbixcbiAgICAgICAgICBoYXNoMTYwOiBwYXlsb2FkLnJlY2lwaWVudC5hZGRyZXNzLmhhc2gxNjAudG9TdHJpbmcoKSxcbiAgICAgICAgfSksXG4gICAgICAgIGFtb3VudDogcGF5bG9hZC5hbW91bnQudG9TdHJpbmcoKSxcbiAgICAgIH07XG4gICAgICByZXR1cm4gdHhQYXlsb2FkO1xuICAgIH0gZWxzZSBpZiAodGhpcy5fc3R4VHJhbnNhY3Rpb24ucGF5bG9hZC5wYXlsb2FkVHlwZSA9PT0gUGF5bG9hZFR5cGUuQ29udHJhY3RDYWxsKSB7XG4gICAgICBjb25zdCBwYXlsb2FkID0gdGhpcy5fc3R4VHJhbnNhY3Rpb24ucGF5bG9hZDtcbiAgICAgIGNvbnN0IGNvbnRyYWN0UGF5bG9hZDogU3RhY2tzQ29udHJhY3RQYXlsb2FkID0ge1xuICAgICAgICBwYXlsb2FkVHlwZTogUGF5bG9hZFR5cGUuQ29udHJhY3RDYWxsLFxuICAgICAgICBjb250cmFjdEFkZHJlc3M6IGFkZHJlc3NUb1N0cmluZyhwYXlsb2FkLmNvbnRyYWN0QWRkcmVzcyksXG4gICAgICAgIGNvbnRyYWN0TmFtZTogcGF5bG9hZC5jb250cmFjdE5hbWUuY29udGVudCxcbiAgICAgICAgZnVuY3Rpb25OYW1lOiBwYXlsb2FkLmZ1bmN0aW9uTmFtZS5jb250ZW50LFxuICAgICAgICBmdW5jdGlvbkFyZ3M6IHBheWxvYWQuZnVuY3Rpb25BcmdzLm1hcChzdHJpbmdpZnlDdiksXG4gICAgICB9O1xuICAgICAgcmV0dXJuIGNvbnRyYWN0UGF5bG9hZDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IE5vdFN1cHBvcnRlZCgncGF5bG9hZCB0eXBlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgYSB0cmFuc2FjdGlvbi4gIFRoaXMgaXMgbmVlZGVkIHRvIGNhbGN1bGF0ZVxuICAgKiB0aGUgdHJhbnNhY3Rpb24gZmVlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSBzaXplIGluIGJ5dGVzIG9mIHRoZSBzZXJpYWxpemVkIHRyYW5zYWN0aW9uXG4gICAqL1xuICB0cmFuc2FjdGlvblNpemUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fc3R4VHJhbnNhY3Rpb24uc2VyaWFsaXplKCkubGVuZ3RoO1xuICB9XG5cbiAgdG9Ccm9hZGNhc3RGb3JtYXQoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX3N0eFRyYW5zYWN0aW9uKSB7XG4gICAgICB0aHJvdyBuZXcgUGFyc2VUcmFuc2FjdGlvbkVycm9yKCdFbXB0eSB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc3R4VHJhbnNhY3Rpb24uc2VyaWFsaXplKCkudG9TdHJpbmcoJ2hleCcpO1xuICB9XG5cbiAgZ2V0IHN0eFRyYW5zYWN0aW9uKCk6IFN0YWNrc1RyYW5zYWN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc3R4VHJhbnNhY3Rpb247XG4gIH1cblxuICBzZXQgc3R4VHJhbnNhY3Rpb24odDogU3RhY2tzVHJhbnNhY3Rpb24pIHtcbiAgICB0aGlzLl9zdHhUcmFuc2FjdGlvbiA9IHQ7XG4gIH1cblxuICBwcml2YXRlIGdldE5vbmNlKCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3N0eFRyYW5zYWN0aW9uLmF1dGguc3BlbmRpbmdDb25kaXRpb24pIHtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5fc3R4VHJhbnNhY3Rpb24uYXV0aC5zcGVuZGluZ0NvbmRpdGlvbi5ub25jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignc3BlbmRpbmcgY29uZGl0aW9uIGlzIG51bGwnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGlzIHRyYW5zYWN0aW9uIHBheWxvYWRcbiAgICpcbiAgICogQHBhcmFtIHJhd1RyYW5zYWN0aW9uXG4gICAqL1xuICBmcm9tUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJhdyA9IHJlbW92ZUhleFByZWZpeChyYXdUcmFuc2FjdGlvbik7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuX3N0eFRyYW5zYWN0aW9uID0gZGVzZXJpYWxpemVUcmFuc2FjdGlvbihCdWZmZXJSZWFkZXIuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShyYXcsICdoZXgnKSkpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBQYXJzZVRyYW5zYWN0aW9uRXJyb3IoJ0Vycm9yIHBhcnNpbmcgdGhlIHJhdyB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICB0aGlzLmxvYWRJbnB1dHNBbmRPdXRwdXRzKCk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSB0cmFuc2FjdGlvbiB0eXBlXG4gICAqXG4gICAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0cmFuc2FjdGlvblR5cGUgVGhlIHRyYW5zYWN0aW9uIHR5cGUgdG8gYmUgc2V0XG4gICAqL1xuICBzZXRUcmFuc2FjdGlvblR5cGUodHJhbnNhY3Rpb25UeXBlOiBUcmFuc2FjdGlvblR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLl90eXBlID0gdHJhbnNhY3Rpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZGF0YSBvbiB0aGlzIHRyYW5zYWN0aW9uIHVzaW5nIHRoZSB0cmFuc2FjdGlvbiBqc29uXG4gICAqIGlmIHRoZXJlIGFyZSBvdXRwdXRzLlxuICAgKi9cbiAgbG9hZElucHV0c0FuZE91dHB1dHMoKTogdm9pZCB7XG4gICAgY29uc3QgdHhKc29uID0gdGhpcy50b0pzb24oKTtcbiAgICBpZiAodHhKc29uLnBheWxvYWQucGF5bG9hZFR5cGUgPT09IFBheWxvYWRUeXBlLlRva2VuVHJhbnNmZXIpIHtcbiAgICAgIGlmICh0eEpzb24ucGF5bG9hZC50byAmJiB0eEpzb24ucGF5bG9hZC5hbW91bnQpIHtcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhZGRyZXNzOiB0eEpzb24ucGF5bG9hZC50byxcbiAgICAgICAgICAgIHZhbHVlOiB0eEpzb24ucGF5bG9hZC5hbW91bnQsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdHhKc29uLmZyb20sXG4gICAgICAgICAgICB2YWx1ZTogdHhKc29uLnBheWxvYWQuYW1vdW50LFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eEpzb24ucGF5bG9hZC5wYXlsb2FkVHlwZSA9PT0gUGF5bG9hZFR5cGUuQ29udHJhY3RDYWxsKSB7XG4gICAgICBpZiAodHhKc29uLnBheWxvYWQuY29udHJhY3RBZGRyZXNzID09PSAodGhpcy5fY29pbkNvbmZpZy5uZXR3b3JrIGFzIFN0YWNrc05ldHdvcmspLnNlbmRtYW55bWVtb0NvbnRyYWN0QWRkcmVzcykge1xuICAgICAgICBjb25zdCBzZW5kUGFyYW1zID0gZnVuY3Rpb25BcmdzVG9TZW5kUGFyYW1zKCh0aGlzLnN0eFRyYW5zYWN0aW9uLnBheWxvYWQgYXMgQ29udHJhY3RDYWxsUGF5bG9hZCkuZnVuY3Rpb25BcmdzKTtcbiAgICAgICAgY29uc3QgY29pbiA9IHRoaXMuX2NvaW5Db25maWcubmFtZTtcbiAgICAgICAgY29uc3Qgc3VtOiBCaWdOdW0gPSBzZW5kUGFyYW1zLnJlZHVjZSgoY3VycmVudCwgbmV4dCkgPT4gY3VycmVudC5hZGQobmV3IEJpZ051bShuZXh0LmFtb3VudCkpLCBuZXcgQmlnTnVtKDApKTtcbiAgICAgICAgdGhpcy5fb3V0cHV0cyA9IHNlbmRQYXJhbXMubWFwKChzZW5kUGFyYW0pID0+ICh7IGFkZHJlc3M6IHNlbmRQYXJhbS5hZGRyZXNzLCB2YWx1ZTogc2VuZFBhcmFtLmFtb3VudCwgY29pbiB9KSk7XG4gICAgICAgIHRoaXMuX2lucHV0cyA9IFt7IGFkZHJlc3M6IHR4SnNvbi5mcm9tLCB2YWx1ZTogc3VtLnRvU3RyaW5nKCksIGNvaW4gfV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLl9vdXRwdXRzID0gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGFkZHJlc3M6IHR4SnNvbi5wYXlsb2FkLmNvbnRyYWN0QWRkcmVzcyxcbiAgICAgICAgICAgIHZhbHVlOiAnMCcsXG4gICAgICAgICAgICBjb2luOiB0aGlzLl9jb2luQ29uZmlnLm5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgXTtcblxuICAgICAgICB0aGlzLl9pbnB1dHMgPSBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYWRkcmVzczogdHhKc29uLmZyb20sXG4gICAgICAgICAgICB2YWx1ZTogJzAnLFxuICAgICAgICAgICAgY29pbjogdGhpcy5fY29pbkNvbmZpZy5uYW1lLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=