@bitgo/sdk-core 1.0.2-rc.0 → 1.1.0-rc.10

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 (354) hide show
  1. package/CHANGELOG.md +115 -0
  2. package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts +27 -0
  3. package/dist/src/account-lib/baseCoin/baseKeyPair.d.ts.map +1 -0
  4. package/dist/src/account-lib/baseCoin/baseKeyPair.js +3 -0
  5. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +71 -0
  6. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -0
  7. package/dist/src/account-lib/baseCoin/baseTransaction.js +69 -0
  8. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +128 -0
  9. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -0
  10. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +138 -0
  11. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts +29 -0
  12. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.d.ts.map +1 -0
  13. package/dist/src/account-lib/baseCoin/baseTransactionBuilderFactory.js +19 -0
  14. package/dist/src/account-lib/baseCoin/baseUtils.d.ts +45 -0
  15. package/dist/src/account-lib/baseCoin/baseUtils.d.ts.map +1 -0
  16. package/dist/src/account-lib/baseCoin/baseUtils.js +3 -0
  17. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +75 -0
  18. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +1 -0
  19. package/dist/src/account-lib/baseCoin/blsKeyPair.js +179 -0
  20. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +50 -0
  21. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -0
  22. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +145 -0
  23. package/dist/src/account-lib/baseCoin/enum.d.ts +43 -0
  24. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -0
  25. package/dist/src/account-lib/baseCoin/enum.js +70 -0
  26. package/dist/src/account-lib/baseCoin/errors.d.ts +59 -0
  27. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -0
  28. package/dist/src/account-lib/baseCoin/errors.js +105 -0
  29. package/dist/src/account-lib/baseCoin/iface.d.ts +155 -0
  30. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -0
  31. package/dist/src/account-lib/baseCoin/iface.js +38 -0
  32. package/dist/src/account-lib/baseCoin/index.d.ts +12 -0
  33. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -0
  34. package/dist/src/account-lib/baseCoin/index.js +31 -0
  35. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +55 -0
  36. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -0
  37. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +124 -0
  38. package/dist/src/account-lib/index.d.ts +5 -0
  39. package/dist/src/account-lib/index.d.ts.map +1 -0
  40. package/dist/src/account-lib/index.js +17 -0
  41. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +19 -0
  42. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -0
  43. package/dist/src/account-lib/mpc/curves/baseCurve.js +6 -0
  44. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +17 -0
  45. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -0
  46. package/dist/src/account-lib/mpc/curves/ed25519.js +57 -0
  47. package/dist/src/account-lib/mpc/curves/index.d.ts +6 -0
  48. package/dist/src/account-lib/mpc/curves/index.d.ts.map +1 -0
  49. package/dist/src/account-lib/mpc/curves/index.js +8 -0
  50. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +17 -0
  51. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -0
  52. package/dist/src/account-lib/mpc/curves/secp256k1.js +70 -0
  53. package/dist/src/account-lib/mpc/hdTree.d.ts +24 -0
  54. package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -0
  55. package/dist/src/account-lib/mpc/hdTree.js +94 -0
  56. package/dist/src/account-lib/mpc/index.d.ts +8 -0
  57. package/dist/src/account-lib/mpc/index.d.ts.map +1 -0
  58. package/dist/src/account-lib/mpc/index.js +23 -0
  59. package/dist/src/account-lib/mpc/shamir.d.ts +26 -0
  60. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -0
  61. package/dist/src/account-lib/mpc/shamir.js +86 -0
  62. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +25 -0
  63. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  64. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +121 -0
  65. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts +4 -0
  66. package/dist/src/account-lib/mpc/tss/ecdsa/index.d.ts.map +1 -0
  67. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +29 -0
  68. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +40 -0
  69. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -0
  70. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +3 -0
  71. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +29 -0
  72. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
  73. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +273 -0
  74. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts +4 -0
  75. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts.map +1 -0
  76. package/dist/src/account-lib/mpc/tss/eddsa/index.js +30 -0
  77. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +70 -0
  78. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -0
  79. package/dist/src/account-lib/mpc/tss/eddsa/types.js +3 -0
  80. package/dist/src/account-lib/mpc/tss/index.d.ts +6 -0
  81. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -0
  82. package/dist/src/account-lib/mpc/tss/index.js +35 -0
  83. package/dist/src/account-lib/mpc/util.d.ts +8 -0
  84. package/dist/src/account-lib/mpc/util.d.ts.map +1 -0
  85. package/dist/src/account-lib/mpc/util.js +42 -0
  86. package/dist/src/account-lib/util/crypto.d.ts +106 -0
  87. package/dist/src/account-lib/util/crypto.d.ts.map +1 -0
  88. package/dist/src/account-lib/util/crypto.js +269 -0
  89. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +49 -0
  90. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -0
  91. package/dist/src/account-lib/util/ed25519KeyDeriver.js +87 -0
  92. package/dist/src/api/bip32path.d.ts +24 -0
  93. package/dist/src/api/bip32path.d.ts.map +1 -0
  94. package/dist/src/api/bip32path.js +45 -0
  95. package/dist/src/api/index.d.ts +3 -0
  96. package/dist/src/api/index.d.ts.map +1 -0
  97. package/dist/src/{v2 → api}/index.js +2 -2
  98. package/dist/src/api/types.d.ts +20 -0
  99. package/dist/src/api/types.d.ts.map +1 -0
  100. package/dist/src/api/types.js +3 -0
  101. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +230 -0
  102. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -0
  103. package/dist/src/bitgo/baseCoin/baseCoin.js +292 -0
  104. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +257 -0
  105. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -0
  106. package/dist/src/bitgo/baseCoin/iBaseCoin.js +3 -0
  107. package/dist/src/bitgo/baseCoin/index.d.ts +3 -0
  108. package/dist/src/bitgo/baseCoin/index.d.ts.map +1 -0
  109. package/dist/src/bitgo/baseCoin/index.js +15 -0
  110. package/dist/src/bitgo/bip32util.d.ts +17 -0
  111. package/dist/src/bitgo/bip32util.d.ts.map +1 -0
  112. package/dist/src/bitgo/bip32util.js +59 -0
  113. package/dist/src/bitgo/bitcoin.d.ts +16 -0
  114. package/dist/src/bitgo/bitcoin.d.ts.map +1 -0
  115. package/dist/src/bitgo/bitcoin.js +52 -0
  116. package/dist/src/bitgo/bitgoBase.d.ts +22 -0
  117. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -0
  118. package/dist/src/bitgo/bitgoBase.js +3 -0
  119. package/dist/src/bitgo/coinFactory.d.ts +31 -0
  120. package/dist/src/bitgo/coinFactory.d.ts.map +1 -0
  121. package/dist/src/bitgo/coinFactory.js +59 -0
  122. package/dist/src/bitgo/config.d.ts +8 -0
  123. package/dist/src/bitgo/config.d.ts.map +1 -0
  124. package/dist/src/bitgo/config.js +25 -0
  125. package/dist/src/bitgo/ecdh.d.ts +24 -0
  126. package/dist/src/bitgo/ecdh.d.ts.map +1 -0
  127. package/dist/src/bitgo/ecdh.js +80 -0
  128. package/dist/src/bitgo/enterprise/enterprise.d.ts +64 -0
  129. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -0
  130. package/dist/src/bitgo/enterprise/enterprise.js +120 -0
  131. package/dist/src/bitgo/enterprise/enterprises.d.ts +25 -0
  132. package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -0
  133. package/dist/src/bitgo/enterprise/enterprises.js +70 -0
  134. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +15 -0
  135. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -0
  136. package/dist/src/bitgo/enterprise/iEnterprise.js +3 -0
  137. package/dist/src/bitgo/enterprise/iEnterprises.d.ts +10 -0
  138. package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -0
  139. package/dist/src/bitgo/enterprise/iEnterprises.js +3 -0
  140. package/dist/src/bitgo/enterprise/index.d.ts +5 -0
  141. package/dist/src/bitgo/enterprise/index.d.ts.map +1 -0
  142. package/dist/src/bitgo/enterprise/index.js +17 -0
  143. package/dist/src/{v2 → bitgo}/environments.d.ts +0 -0
  144. package/dist/src/bitgo/environments.d.ts.map +1 -0
  145. package/dist/src/bitgo/environments.js +142 -0
  146. package/dist/src/bitgo/errors.d.ts +83 -0
  147. package/dist/src/bitgo/errors.d.ts.map +1 -0
  148. package/dist/src/bitgo/errors.js +163 -0
  149. package/dist/src/bitgo/index.d.ts +26 -0
  150. package/dist/src/bitgo/index.d.ts.map +1 -0
  151. package/dist/src/bitgo/index.js +51 -0
  152. package/dist/src/bitgo/internal/index.d.ts +3 -0
  153. package/dist/src/bitgo/internal/index.d.ts.map +1 -0
  154. package/dist/src/bitgo/internal/index.js +15 -0
  155. package/dist/src/bitgo/internal/internal.d.ts +19 -0
  156. package/dist/src/bitgo/internal/internal.d.ts.map +1 -0
  157. package/dist/src/bitgo/internal/internal.js +33 -0
  158. package/dist/src/bitgo/internal/keycard.d.ts +33 -0
  159. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -0
  160. package/dist/src/bitgo/internal/keycard.js +304 -0
  161. package/dist/src/bitgo/keychain/iKeychains.d.ts +118 -0
  162. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -0
  163. package/dist/src/bitgo/keychain/iKeychains.js +10 -0
  164. package/dist/src/bitgo/keychain/index.d.ts +3 -0
  165. package/dist/src/bitgo/keychain/index.d.ts.map +1 -0
  166. package/dist/src/bitgo/keychain/index.js +15 -0
  167. package/dist/src/bitgo/keychain/keychains.d.ts +90 -0
  168. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -0
  169. package/dist/src/bitgo/keychain/keychains.js +280 -0
  170. package/dist/src/bitgo/market/iMarkets.d.ts +12 -0
  171. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -0
  172. package/dist/src/bitgo/market/iMarkets.js +3 -0
  173. package/dist/src/bitgo/market/index.d.ts +3 -0
  174. package/dist/src/bitgo/market/index.d.ts.map +1 -0
  175. package/dist/src/bitgo/market/index.js +15 -0
  176. package/dist/src/bitgo/market/markets.d.ts +29 -0
  177. package/dist/src/bitgo/market/markets.d.ts.map +1 -0
  178. package/dist/src/bitgo/market/markets.js +70 -0
  179. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +73 -0
  180. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -0
  181. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +28 -0
  182. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts +16 -0
  183. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts.map +1 -0
  184. package/dist/src/bitgo/pendingApproval/iPendingApprovals.js +3 -0
  185. package/dist/src/bitgo/pendingApproval/index.d.ts +5 -0
  186. package/dist/src/bitgo/pendingApproval/index.d.ts.map +1 -0
  187. package/dist/src/bitgo/pendingApproval/index.js +17 -0
  188. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +99 -0
  189. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -0
  190. package/dist/src/bitgo/pendingApproval/pendingApproval.js +319 -0
  191. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts +19 -0
  192. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts.map +1 -0
  193. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +76 -0
  194. package/dist/src/bitgo/recovery/index.d.ts +2 -0
  195. package/dist/src/bitgo/recovery/index.d.ts.map +1 -0
  196. package/dist/src/bitgo/recovery/index.js +14 -0
  197. package/dist/src/bitgo/recovery/initiate.d.ts +49 -0
  198. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -0
  199. package/dist/src/bitgo/recovery/initiate.js +119 -0
  200. package/dist/src/bitgo/trading/affirmation.d.ts +35 -0
  201. package/dist/src/bitgo/trading/affirmation.d.ts.map +1 -0
  202. package/dist/src/bitgo/trading/affirmation.js +53 -0
  203. package/dist/src/bitgo/trading/affirmations.d.ts +23 -0
  204. package/dist/src/bitgo/trading/affirmations.d.ts.map +1 -0
  205. package/dist/src/bitgo/trading/affirmations.js +45 -0
  206. package/dist/src/bitgo/trading/iAffirmation.d.ts +15 -0
  207. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +1 -0
  208. package/dist/src/bitgo/trading/iAffirmation.js +13 -0
  209. package/dist/src/bitgo/trading/iAffirmations.d.ts +10 -0
  210. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +1 -0
  211. package/dist/src/bitgo/trading/iAffirmations.js +3 -0
  212. package/dist/src/bitgo/trading/iSettlement.d.ts +25 -0
  213. package/dist/src/bitgo/trading/iSettlement.d.ts.map +1 -0
  214. package/dist/src/bitgo/trading/iSettlement.js +17 -0
  215. package/dist/src/bitgo/trading/iSettlements.d.ts +19 -0
  216. package/dist/src/bitgo/trading/iSettlements.d.ts.map +1 -0
  217. package/dist/src/bitgo/trading/iSettlements.js +3 -0
  218. package/dist/src/bitgo/trading/iTradingAccount.d.ts +41 -0
  219. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -0
  220. package/dist/src/bitgo/trading/iTradingAccount.js +3 -0
  221. package/dist/src/bitgo/trading/iTradingPartner.d.ts +14 -0
  222. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +1 -0
  223. package/dist/src/bitgo/trading/iTradingPartner.js +17 -0
  224. package/dist/src/bitgo/trading/iTradingPartners.d.ts +15 -0
  225. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +1 -0
  226. package/dist/src/bitgo/trading/iTradingPartners.js +9 -0
  227. package/dist/src/bitgo/trading/index.d.ts +18 -0
  228. package/dist/src/bitgo/trading/index.d.ts.map +1 -0
  229. package/dist/src/bitgo/trading/index.js +30 -0
  230. package/dist/src/bitgo/trading/lock.d.ts +16 -0
  231. package/dist/src/bitgo/trading/lock.d.ts.map +1 -0
  232. package/dist/src/bitgo/trading/lock.js +12 -0
  233. package/dist/src/bitgo/trading/payload.d.ts +22 -0
  234. package/dist/src/bitgo/trading/payload.d.ts.map +1 -0
  235. package/dist/src/bitgo/trading/payload.js +3 -0
  236. package/dist/src/bitgo/trading/settlement.d.ts +16 -0
  237. package/dist/src/bitgo/trading/settlement.d.ts.map +1 -0
  238. package/dist/src/bitgo/trading/settlement.js +21 -0
  239. package/dist/src/bitgo/trading/settlements.d.ts +32 -0
  240. package/dist/src/bitgo/trading/settlements.d.ts.map +1 -0
  241. package/dist/src/bitgo/trading/settlements.js +61 -0
  242. package/dist/src/bitgo/trading/trade.d.ts +29 -0
  243. package/dist/src/bitgo/trading/trade.d.ts.map +1 -0
  244. package/dist/src/bitgo/trading/trade.js +11 -0
  245. package/dist/src/bitgo/trading/tradingAccount.d.ts +53 -0
  246. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -0
  247. package/dist/src/bitgo/trading/tradingAccount.js +127 -0
  248. package/dist/src/bitgo/trading/tradingPartner.d.ts +26 -0
  249. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +1 -0
  250. package/dist/src/bitgo/trading/tradingPartner.js +31 -0
  251. package/dist/src/bitgo/trading/tradingPartners.d.ts +24 -0
  252. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +1 -0
  253. package/dist/src/bitgo/trading/tradingPartners.js +32 -0
  254. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +102 -0
  255. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -0
  256. package/dist/src/bitgo/tss/eddsa/eddsa.js +256 -0
  257. package/dist/src/bitgo/tss/eddsa/index.d.ts +6 -0
  258. package/dist/src/bitgo/tss/eddsa/index.d.ts.map +1 -0
  259. package/dist/src/bitgo/tss/eddsa/index.js +37 -0
  260. package/dist/src/bitgo/tss/eddsa/types.d.ts +23 -0
  261. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -0
  262. package/dist/src/bitgo/tss/eddsa/types.js +3 -0
  263. package/dist/src/bitgo/tss/index.d.ts +5 -0
  264. package/dist/src/bitgo/tss/index.d.ts.map +1 -0
  265. package/dist/src/bitgo/tss/index.js +39 -0
  266. package/dist/src/bitgo/tss/types.d.ts +6 -0
  267. package/dist/src/bitgo/tss/types.d.ts.map +1 -0
  268. package/dist/src/bitgo/tss/types.js +10 -0
  269. package/dist/src/bitgo/types.d.ts +4 -0
  270. package/dist/src/bitgo/types.d.ts.map +1 -0
  271. package/dist/src/bitgo/types.js +3 -0
  272. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +6 -0
  273. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  274. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +30 -0
  275. package/dist/src/bitgo/utils/blsUtils.d.ts +51 -0
  276. package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -0
  277. package/dist/src/bitgo/utils/blsUtils.js +166 -0
  278. package/dist/src/bitgo/utils/iBlsUtils.d.ts +14 -0
  279. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +1 -0
  280. package/dist/src/bitgo/utils/iBlsUtils.js +3 -0
  281. package/dist/src/bitgo/utils/index.d.ts +12 -0
  282. package/dist/src/bitgo/utils/index.d.ts.map +1 -0
  283. package/dist/src/bitgo/utils/index.js +37 -0
  284. package/dist/src/bitgo/utils/mpcUtils.d.ts +31 -0
  285. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -0
  286. package/dist/src/bitgo/utils/mpcUtils.js +55 -0
  287. package/dist/src/bitgo/utils/opengpgUtils.d.ts +51 -0
  288. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -0
  289. package/dist/src/bitgo/utils/opengpgUtils.js +136 -0
  290. package/dist/src/bitgo/utils/promise-utils.d.ts +5 -0
  291. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -0
  292. package/dist/src/bitgo/utils/promise-utils.js +12 -0
  293. package/dist/src/bitgo/utils/triple.d.ts +3 -0
  294. package/dist/src/bitgo/utils/triple.d.ts.map +1 -0
  295. package/dist/src/bitgo/utils/triple.js +8 -0
  296. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +117 -0
  297. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -0
  298. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +351 -0
  299. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  300. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -0
  301. package/dist/src/bitgo/utils/tss/eddsa/index.js +29 -0
  302. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +72 -0
  303. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -0
  304. package/dist/src/bitgo/utils/tss/eddsa/types.js +10 -0
  305. package/dist/src/bitgo/utils/tss/index.d.ts +4 -0
  306. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -0
  307. package/dist/src/bitgo/utils/tss/index.js +29 -0
  308. package/dist/src/bitgo/utils/util.d.ts +77 -0
  309. package/dist/src/bitgo/utils/util.d.ts.map +1 -0
  310. package/dist/src/bitgo/utils/util.js +198 -0
  311. package/dist/src/bitgo/wallet/iWallet.d.ts +510 -0
  312. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -0
  313. package/dist/src/bitgo/wallet/iWallet.js +3 -0
  314. package/dist/src/bitgo/wallet/iWallets.d.ts +105 -0
  315. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -0
  316. package/dist/src/bitgo/wallet/iWallets.js +3 -0
  317. package/dist/src/bitgo/wallet/index.d.ts +5 -0
  318. package/dist/src/bitgo/wallet/index.d.ts.map +1 -0
  319. package/dist/src/bitgo/wallet/index.js +17 -0
  320. package/dist/src/bitgo/wallet/wallet.d.ts +650 -0
  321. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -0
  322. package/dist/src/bitgo/wallet/wallet.js +2039 -0
  323. package/dist/src/bitgo/wallet/wallets.d.ts +134 -0
  324. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -0
  325. package/dist/src/bitgo/wallet/wallets.js +605 -0
  326. package/dist/src/bitgo/webhook/iWebhooks.d.ts +26 -0
  327. package/dist/src/bitgo/webhook/iWebhooks.d.ts.map +1 -0
  328. package/dist/src/bitgo/webhook/iWebhooks.js +3 -0
  329. package/dist/src/bitgo/webhook/index.d.ts +3 -0
  330. package/dist/src/bitgo/webhook/index.d.ts.map +1 -0
  331. package/dist/src/bitgo/webhook/index.js +15 -0
  332. package/dist/src/bitgo/webhook/webhooks.d.ts +43 -0
  333. package/dist/src/bitgo/webhook/webhooks.d.ts.map +1 -0
  334. package/dist/src/bitgo/webhook/webhooks.js +102 -0
  335. package/dist/src/{bigojsError.d.ts → bitgojsError.d.ts} +1 -1
  336. package/dist/src/bitgojsError.d.ts.map +1 -0
  337. package/dist/src/bitgojsError.js +11 -0
  338. package/dist/src/common.d.ts +1 -1
  339. package/dist/src/common.d.ts.map +1 -1
  340. package/dist/src/common.js +3 -3
  341. package/dist/src/index.d.ts +4 -2
  342. package/dist/src/index.d.ts.map +1 -1
  343. package/dist/src/index.js +6 -5
  344. package/dist/tsconfig.tsbuildinfo +3458 -153
  345. package/package.json +27 -3
  346. package/dist/src/bigojsError.d.ts.map +0 -1
  347. package/dist/src/bigojsError.js +0 -11
  348. package/dist/src/v2/environments.d.ts.map +0 -1
  349. package/dist/src/v2/environments.js +0 -142
  350. package/dist/src/v2/index.d.ts +0 -3
  351. package/dist/src/v2/index.d.ts.map +0 -1
  352. package/dist/src/v2/types.d.ts +0 -2
  353. package/dist/src/v2/types.d.ts.map +0 -1
  354. package/dist/src/v2/types.js +0 -3
@@ -0,0 +1,20 @@
1
+ import * as superagent from 'superagent';
2
+ export interface BitGoRequest<ResultType = any> extends superagent.SuperAgentRequest {
3
+ result: (optionalField?: string) => Promise<ResultType>;
4
+ }
5
+ export interface DecryptOptions {
6
+ input: string;
7
+ password?: string;
8
+ }
9
+ export interface EncryptOptions {
10
+ input: string;
11
+ password?: string;
12
+ }
13
+ export interface GetSharingKeyOptions {
14
+ email: string;
15
+ }
16
+ export interface IRequestTracer {
17
+ inc(): void;
18
+ toString(): string;
19
+ }
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,YAAY,CAAC;AAEzC,MAAM,WAAW,YAAY,CAAC,UAAU,GAAG,GAAG,CAAE,SAAQ,UAAU,CAAC,iBAAiB;IAClF,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,IAAI,IAAI,CAAC;IACZ,QAAQ,IAAI,MAAM,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBzdXBlcmFnZW50IGZyb20gJ3N1cGVyYWdlbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJpdEdvUmVxdWVzdDxSZXN1bHRUeXBlID0gYW55PiBleHRlbmRzIHN1cGVyYWdlbnQuU3VwZXJBZ2VudFJlcXVlc3Qge1xuICByZXN1bHQ6IChvcHRpb25hbEZpZWxkPzogc3RyaW5nKSA9PiBQcm9taXNlPFJlc3VsdFR5cGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlY3J5cHRPcHRpb25zIHtcbiAgaW5wdXQ6IHN0cmluZztcbiAgcGFzc3dvcmQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdE9wdGlvbnMge1xuICBpbnB1dDogc3RyaW5nO1xuICBwYXNzd29yZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTaGFyaW5nS2V5T3B0aW9ucyB7XG4gIGVtYWlsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlcXVlc3RUcmFjZXIge1xuICBpbmMoKTogdm9pZDtcbiAgdG9TdHJpbmcoKTogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,230 @@
1
+ /// <reference types="node" />
2
+ import { InitiateRecoveryOptions } from '../recovery';
3
+ import { BitGoBase } from '../bitgoBase';
4
+ import { Enterprises } from '../enterprise';
5
+ import { Keychains } from '../keychain';
6
+ import { Markets } from '../market';
7
+ import { PendingApprovals } from '../pendingApproval';
8
+ import { Wallets, IWallet } from '../wallet';
9
+ import { Webhooks } from '../webhook';
10
+ import { IBaseCoin, ITransactionExplanation, VerifyTransactionOptions, VerifyAddressOptions, SupplementGenerateWalletOptions, KeychainsTriplet, KeyPair, ExtraPrebuildParamsOptions, TransactionPrebuild, PresignTransactionOptions, FeeEstimateOptions, PrecreateBitGoOptions, ParseTransactionOptions, ParsedTransaction, SignTransactionOptions, SignedTransaction, RecoverWalletTokenOptions, RecoverTokenTransaction } from './iBaseCoin';
11
+ export declare abstract class BaseCoin implements IBaseCoin {
12
+ protected readonly bitgo: BitGoBase;
13
+ protected readonly _url: string;
14
+ protected readonly _enterprises: Enterprises;
15
+ protected readonly _wallets: Wallets;
16
+ protected readonly _keychains: Keychains;
17
+ protected readonly _webhooks: Webhooks;
18
+ protected readonly _pendingApprovals: PendingApprovals;
19
+ protected readonly _markets: Markets;
20
+ protected static readonly _coinTokenPatternSeparator = ":";
21
+ protected constructor(bitgo: BitGoBase);
22
+ url(suffix: string): string;
23
+ wallets(): Wallets;
24
+ enterprises(): Enterprises;
25
+ keychains(): Keychains;
26
+ webhooks(): Webhooks;
27
+ pendingApprovals(): PendingApprovals;
28
+ markets(): Markets;
29
+ static get coinTokenPatternSeparator(): string;
30
+ get type(): string;
31
+ /**
32
+ * Name of the chain which supports this coin (eg, 'btc', 'eth')
33
+ */
34
+ abstract getChain(): string;
35
+ /**
36
+ * Name of the coin family (eg. for tbtc, this would be btc)
37
+ */
38
+ abstract getFamily(): string;
39
+ /**
40
+ * Human readable full name for the coin
41
+ */
42
+ abstract getFullName(): string;
43
+ /**
44
+ * Flag for sending value of 0.
45
+ * @returns {boolean} True if okay to send 0 value, false otherwise
46
+ */
47
+ valuelessTransferAllowed(): boolean;
48
+ /**
49
+ * Use `sendMany()` to perform wallet sweep.
50
+ * FIXME(BG-39738): add coin.sweepWallet() instead
51
+ */
52
+ sweepWithSendMany(): boolean;
53
+ /**
54
+ * Flag for sending data along with transactions
55
+ * @returns {boolean} True if okay to send tx data (ETH), false otherwise
56
+ */
57
+ transactionDataAllowed(): boolean;
58
+ /**
59
+ * Flag for determining whether this coin supports account consolidations
60
+ * from its receive addresses to the root address.
61
+ * @returns {boolean} True if okay to consolidate over this coin; false, otherwise
62
+ */
63
+ allowsAccountConsolidations(): boolean;
64
+ /**
65
+ * Flag indicating if this coin supports TSS wallets.
66
+ * @returns {boolean} True if TSS Wallets can be created for this coin
67
+ */
68
+ supportsTss(): boolean;
69
+ /**
70
+ * Flag indicating if this coin supports BLS-DKG wallets.
71
+ * @returns {boolean} True if BLS-DKG Wallets can be created for this coin
72
+ */
73
+ supportsBlsDkg(): boolean;
74
+ /**
75
+ * Returns the factor between the base unit and its smallest subdivison
76
+ * @return {number}
77
+ */
78
+ abstract getBaseFactor(): number | string;
79
+ /**
80
+ * Convert a currency amount represented in base units (satoshi, wei, atoms, drops, stroops)
81
+ * to big units (btc, eth, xrp, xlm)
82
+ */
83
+ baseUnitsToBigUnits(baseUnits: string | number): string;
84
+ /**
85
+ * Convert a currency amount represented in big units (btc, eth, xrp, xlm)
86
+ * to base units (satoshi, wei, atoms, drops, stroops)
87
+ * @param bigUnits
88
+ */
89
+ bigUnitsToBaseUnits(bigUnits: string | number): string;
90
+ /**
91
+ * Sign message with private key
92
+ *
93
+ * @param key
94
+ * @param message
95
+ */
96
+ signMessage(key: {
97
+ prv: string;
98
+ }, message: string): Promise<Buffer>;
99
+ /**
100
+ * Decompose a raw transaction into useful information.
101
+ * @param options - coin-specific
102
+ */
103
+ explainTransaction(options: Record<string, any>): Promise<ITransactionExplanation<any, string | number> | undefined>;
104
+ /**
105
+ * Verify that a transaction prebuild complies with the original intention
106
+ */
107
+ abstract verifyTransaction(params: VerifyTransactionOptions): Promise<boolean>;
108
+ /**
109
+ * @deprecated use {@see isWalletAddress} instead
110
+ */
111
+ verifyAddress(params: VerifyAddressOptions): boolean;
112
+ /**
113
+ * @param params
114
+ * @return true iff address is a wallet address. Must return false if address is outside wallet.
115
+ */
116
+ abstract isWalletAddress(params: VerifyAddressOptions): boolean;
117
+ /**
118
+ * convert address into desired address format.
119
+ * @param address
120
+ * @param format
121
+ */
122
+ canonicalAddress(address: string, format?: unknown): string;
123
+ /**
124
+ * Check whether a coin supports blockTarget for transactions to be included in
125
+ * @returns {boolean}
126
+ */
127
+ supportsBlockTarget(): boolean;
128
+ /**
129
+ * Hook to add additional parameters to the wallet generation
130
+ * @param walletParams
131
+ * @param keychains
132
+ * @return {*}
133
+ */
134
+ supplementGenerateWallet(walletParams: SupplementGenerateWalletOptions, keychains: KeychainsTriplet): Promise<any>;
135
+ /**
136
+ * Get extra parameters for prebuilding a tx. Add things like hop transaction params
137
+ */
138
+ getExtraPrebuildParams(buildParams: ExtraPrebuildParamsOptions): Promise<Record<string, unknown>>;
139
+ /**
140
+ * Modify prebuild after receiving it from the server. Add things like nlocktime
141
+ */
142
+ postProcessPrebuild(prebuildResponse: TransactionPrebuild): Promise<TransactionPrebuild>;
143
+ /**
144
+ * Coin-specific things done before signing a transaction, i.e. verification
145
+ */
146
+ presignTransaction(params: PresignTransactionOptions): Promise<PresignTransactionOptions>;
147
+ /**
148
+ * Create a new wallet object from a wallet data object
149
+ * @param walletParams
150
+ */
151
+ newWalletObject(walletParams: any): IWallet;
152
+ /**
153
+ * Fetch fee estimate information from the server
154
+ * @param {Object} params The params passed into the function
155
+ * @param {Integer} params.numBlocks The number of blocks to target for conformation (Only works for btc)
156
+ * @returns {Object} The info returned from the merchant server
157
+ */
158
+ feeEstimate(params: FeeEstimateOptions): Promise<any>;
159
+ /**
160
+ * The cold wallet tool uses this function to derive an extended key that is based on the passed key and seed
161
+ * @param key
162
+ * @param seed
163
+ * @returns {{key: string, derivationPath: string}}
164
+ */
165
+ deriveKeyWithSeed({ key, seed }: {
166
+ key: string;
167
+ seed: string;
168
+ }): {
169
+ key: string;
170
+ derivationPath: string;
171
+ };
172
+ /**
173
+ * Specifies what key we will need for signing - right now we just need the
174
+ * user key.
175
+ */
176
+ keyIdsForSigning(): number[];
177
+ /**
178
+ * Perform additional checks before adding a bitgo key. Base controller
179
+ * is a no-op, but coin-specific controller may do something
180
+ * @param params
181
+ */
182
+ preCreateBitGo(params: PrecreateBitGoOptions): void;
183
+ /**
184
+ * @deprecated - use getBip32Keys() in conjunction with isValidAddress instead
185
+ */
186
+ initiateRecovery(params: InitiateRecoveryOptions): never;
187
+ abstract parseTransaction(params: ParseTransactionOptions): Promise<ParsedTransaction>;
188
+ /**
189
+ * Generate a key pair on the curve used by the coin
190
+ *
191
+ * @param seed
192
+ */
193
+ abstract generateKeyPair(seed?: Buffer): KeyPair;
194
+ /**
195
+ * Return boolean indicating whether input is valid public key for the coin.
196
+ *
197
+ * @param {String} pub the pub to be checked
198
+ * @returns {Boolean} is it valid?
199
+ */
200
+ abstract isValidPub(pub: string): boolean;
201
+ /**
202
+ * Return wether the given m of n wallet signers/ key amounts are valid for the coin
203
+ */
204
+ isValidMofNSetup({ m, n }: {
205
+ m?: number;
206
+ n?: number;
207
+ }): boolean;
208
+ /**
209
+ * Check if `address` is a plausibly valid address for the given coin.
210
+ *
211
+ * Does not verify that the address belongs to a wallet. For that,
212
+ * use [[verifyAddress]]
213
+ * @param address
214
+ */
215
+ abstract isValidAddress(address: string): boolean;
216
+ /**
217
+ * Sign a transaction
218
+ */
219
+ abstract signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
220
+ /**
221
+ * Returns the portion of the transaction that needs to be signed in Buffer format.
222
+ * Only needed for coins that support adding signatures directly (e.g. TSS).
223
+ *
224
+ * @param {String} serializedTx - the unsigned transaction in broadcast format
225
+ * @returns {Promise<Buffer>} - the portion of the transaction that needs to be signed
226
+ */
227
+ getSignablePayload(serializedTx: string): Promise<Buffer>;
228
+ recoverToken(params: RecoverWalletTokenOptions): Promise<RecoverTokenTransaction>;
229
+ }
230
+ //# sourceMappingURL=baseCoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseCoin.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/baseCoin/baseCoin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,292 @@
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.BaseCoin = void 0;
23
+ /**
24
+ * @prettier
25
+ */
26
+ const crypto = __importStar(require("crypto"));
27
+ const bip32 = __importStar(require("bip32"));
28
+ const bignumber_js_1 = require("bignumber.js");
29
+ const utxolib = __importStar(require("@bitgo/utxo-lib"));
30
+ const bip32util_1 = require("../bip32util");
31
+ const account_lib_1 = require("../../account-lib");
32
+ const enterprise_1 = require("../enterprise");
33
+ const keychain_1 = require("../keychain");
34
+ const market_1 = require("../market");
35
+ const pendingApproval_1 = require("../pendingApproval");
36
+ const wallet_1 = require("../wallet");
37
+ const webhook_1 = require("../webhook");
38
+ class BaseCoin {
39
+ constructor(bitgo) {
40
+ this.bitgo = bitgo;
41
+ this._url = this.bitgo.url('/', 2);
42
+ this._wallets = new wallet_1.Wallets(this.bitgo, this);
43
+ this._keychains = new keychain_1.Keychains(this.bitgo, this);
44
+ this._webhooks = new webhook_1.Webhooks(this.bitgo, this);
45
+ this._pendingApprovals = new pendingApproval_1.PendingApprovals(this.bitgo, this);
46
+ this._enterprises = new enterprise_1.Enterprises(this.bitgo, this);
47
+ this._markets = new market_1.Markets(this.bitgo, this);
48
+ }
49
+ url(suffix) {
50
+ return this._url + this.getChain() + suffix;
51
+ }
52
+ wallets() {
53
+ return this._wallets;
54
+ }
55
+ enterprises() {
56
+ return this._enterprises;
57
+ }
58
+ keychains() {
59
+ return this._keychains;
60
+ }
61
+ webhooks() {
62
+ return this._webhooks;
63
+ }
64
+ pendingApprovals() {
65
+ return this._pendingApprovals;
66
+ }
67
+ markets() {
68
+ return this._markets;
69
+ }
70
+ static get coinTokenPatternSeparator() {
71
+ return this._coinTokenPatternSeparator;
72
+ }
73
+ get type() {
74
+ return this.getChain();
75
+ }
76
+ /**
77
+ * Flag for sending value of 0.
78
+ * @returns {boolean} True if okay to send 0 value, false otherwise
79
+ */
80
+ valuelessTransferAllowed() {
81
+ return false;
82
+ }
83
+ /**
84
+ * Use `sendMany()` to perform wallet sweep.
85
+ * FIXME(BG-39738): add coin.sweepWallet() instead
86
+ */
87
+ sweepWithSendMany() {
88
+ return false;
89
+ }
90
+ /**
91
+ * Flag for sending data along with transactions
92
+ * @returns {boolean} True if okay to send tx data (ETH), false otherwise
93
+ */
94
+ transactionDataAllowed() {
95
+ return false;
96
+ }
97
+ /**
98
+ * Flag for determining whether this coin supports account consolidations
99
+ * from its receive addresses to the root address.
100
+ * @returns {boolean} True if okay to consolidate over this coin; false, otherwise
101
+ */
102
+ allowsAccountConsolidations() {
103
+ return false;
104
+ }
105
+ /**
106
+ * Flag indicating if this coin supports TSS wallets.
107
+ * @returns {boolean} True if TSS Wallets can be created for this coin
108
+ */
109
+ supportsTss() {
110
+ return false;
111
+ }
112
+ /**
113
+ * Flag indicating if this coin supports BLS-DKG wallets.
114
+ * @returns {boolean} True if BLS-DKG Wallets can be created for this coin
115
+ */
116
+ supportsBlsDkg() {
117
+ return false;
118
+ }
119
+ /**
120
+ * Convert a currency amount represented in base units (satoshi, wei, atoms, drops, stroops)
121
+ * to big units (btc, eth, xrp, xlm)
122
+ */
123
+ baseUnitsToBigUnits(baseUnits) {
124
+ const dividend = this.getBaseFactor();
125
+ const bigNumber = new bignumber_js_1.BigNumber(baseUnits).dividedBy(dividend);
126
+ // set the format so commas aren't added to large coin amounts
127
+ return bigNumber.toFormat(null, null, { groupSeparator: '', decimalSeparator: '.' });
128
+ }
129
+ /**
130
+ * Convert a currency amount represented in big units (btc, eth, xrp, xlm)
131
+ * to base units (satoshi, wei, atoms, drops, stroops)
132
+ * @param bigUnits
133
+ */
134
+ bigUnitsToBaseUnits(bigUnits) {
135
+ const multiplier = this.getBaseFactor();
136
+ const bigNumber = new bignumber_js_1.BigNumber(bigUnits).times(multiplier);
137
+ if (!bigNumber.isInteger()) {
138
+ throw new Error(`non-integer output resulted from multiplying ${bigUnits} by ${multiplier}`);
139
+ }
140
+ return bigNumber.toFixed(0);
141
+ }
142
+ /**
143
+ * Sign message with private key
144
+ *
145
+ * @param key
146
+ * @param message
147
+ */
148
+ async signMessage(key, message) {
149
+ return bip32util_1.signMessage(message, bip32.fromBase58(key.prv), utxolib.networks.bitcoin);
150
+ }
151
+ /**
152
+ * Decompose a raw transaction into useful information.
153
+ * @param options - coin-specific
154
+ */
155
+ explainTransaction(options) {
156
+ throw new Error(`not implemented`);
157
+ }
158
+ /**
159
+ * @deprecated use {@see isWalletAddress} instead
160
+ */
161
+ verifyAddress(params) {
162
+ return this.isWalletAddress(params);
163
+ }
164
+ /**
165
+ * convert address into desired address format.
166
+ * @param address
167
+ * @param format
168
+ */
169
+ canonicalAddress(address, format) {
170
+ return address;
171
+ }
172
+ /**
173
+ * Check whether a coin supports blockTarget for transactions to be included in
174
+ * @returns {boolean}
175
+ */
176
+ supportsBlockTarget() {
177
+ return false;
178
+ }
179
+ /**
180
+ * Hook to add additional parameters to the wallet generation
181
+ * @param walletParams
182
+ * @param keychains
183
+ * @return {*}
184
+ */
185
+ supplementGenerateWallet(walletParams, keychains) {
186
+ return Promise.resolve(walletParams);
187
+ }
188
+ /**
189
+ * Get extra parameters for prebuilding a tx. Add things like hop transaction params
190
+ */
191
+ getExtraPrebuildParams(buildParams) {
192
+ return Promise.resolve({});
193
+ }
194
+ /**
195
+ * Modify prebuild after receiving it from the server. Add things like nlocktime
196
+ */
197
+ postProcessPrebuild(prebuildResponse) {
198
+ return Promise.resolve(prebuildResponse);
199
+ }
200
+ /**
201
+ * Coin-specific things done before signing a transaction, i.e. verification
202
+ */
203
+ presignTransaction(params) {
204
+ return Promise.resolve(params);
205
+ }
206
+ /**
207
+ * Create a new wallet object from a wallet data object
208
+ * @param walletParams
209
+ */
210
+ newWalletObject(walletParams) {
211
+ return new wallet_1.Wallet(this.bitgo, this, walletParams);
212
+ }
213
+ /**
214
+ * Fetch fee estimate information from the server
215
+ * @param {Object} params The params passed into the function
216
+ * @param {Integer} params.numBlocks The number of blocks to target for conformation (Only works for btc)
217
+ * @returns {Object} The info returned from the merchant server
218
+ */
219
+ async feeEstimate(params) {
220
+ const query = {};
221
+ if (params && params.numBlocks) {
222
+ query.numBlocks = params.numBlocks;
223
+ }
224
+ return this.bitgo.get(this.url('/tx/fee')).query(query).result();
225
+ }
226
+ /**
227
+ * The cold wallet tool uses this function to derive an extended key that is based on the passed key and seed
228
+ * @param key
229
+ * @param seed
230
+ * @returns {{key: string, derivationPath: string}}
231
+ */
232
+ deriveKeyWithSeed({ key, seed }) {
233
+ function sha256(input) {
234
+ return crypto.createHash('sha256').update(input).digest();
235
+ }
236
+ const derivationPathInput = sha256(sha256(`${seed}`)).toString('hex');
237
+ const derivationPathParts = [
238
+ parseInt(derivationPathInput.slice(0, 7), 16),
239
+ parseInt(derivationPathInput.slice(7, 14), 16),
240
+ ];
241
+ const derivationPath = 'm/999999/' + derivationPathParts.join('/');
242
+ const keyNode = bip32.fromBase58(key);
243
+ const derivedKeyNode = keyNode.derivePath(derivationPath);
244
+ return {
245
+ key: derivedKeyNode.toBase58(),
246
+ derivationPath: derivationPath,
247
+ };
248
+ }
249
+ /**
250
+ * Specifies what key we will need for signing - right now we just need the
251
+ * user key.
252
+ */
253
+ keyIdsForSigning() {
254
+ return [keychain_1.KeyIndices.USER];
255
+ }
256
+ /**
257
+ * Perform additional checks before adding a bitgo key. Base controller
258
+ * is a no-op, but coin-specific controller may do something
259
+ * @param params
260
+ */
261
+ preCreateBitGo(params) {
262
+ return;
263
+ }
264
+ /**
265
+ * @deprecated - use getBip32Keys() in conjunction with isValidAddress instead
266
+ */
267
+ initiateRecovery(params) {
268
+ throw new Error('deprecated method');
269
+ }
270
+ /**
271
+ * Return wether the given m of n wallet signers/ key amounts are valid for the coin
272
+ */
273
+ isValidMofNSetup({ m, n }) {
274
+ return m === 2 && n === 3;
275
+ }
276
+ /**
277
+ * Returns the portion of the transaction that needs to be signed in Buffer format.
278
+ * Only needed for coins that support adding signatures directly (e.g. TSS).
279
+ *
280
+ * @param {String} serializedTx - the unsigned transaction in broadcast format
281
+ * @returns {Promise<Buffer>} - the portion of the transaction that needs to be signed
282
+ */
283
+ async getSignablePayload(serializedTx) {
284
+ return Buffer.from(serializedTx);
285
+ }
286
+ async recoverToken(params) {
287
+ throw new account_lib_1.NotImplementedError('recoverToken is not supported for this coin');
288
+ }
289
+ }
290
+ exports.BaseCoin = BaseCoin;
291
+ BaseCoin._coinTokenPatternSeparator = ':';
292
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUNvaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vYmFzZUNvaW4vYmFzZUNvaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsK0NBQWlDO0FBQ2pDLDZDQUErQjtBQUMvQiwrQ0FBeUM7QUFFekMseURBQTJDO0FBRzNDLDRDQUEyQztBQUMzQyxtREFBd0Q7QUFFeEQsOENBQTRDO0FBQzVDLDBDQUFvRDtBQUNwRCxzQ0FBb0M7QUFDcEMsd0RBQXNEO0FBQ3RELHNDQUFxRDtBQUNyRCx3Q0FBc0M7QUFzQnRDLE1BQXNCLFFBQVE7SUFXNUIsWUFBc0IsS0FBZ0I7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGdCQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksb0JBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxrQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksa0NBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksd0JBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBTyxDQUFD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M0IsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxjQUFjLENBQUMsTUFBNkI7UUFDMUMsT0FBTztJQUNULENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLE1BQStCO1FBQzlDLE1BQU0sSUFBSSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBbUJEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUE4QjtRQUNuRCxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBZ0JEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxZQUFvQjtRQUMzQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBaUM7UUFDbEQsTUFBTSxJQUFJLGlDQUFtQixDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDL0UsQ0FBQzs7QUF2V0gsNEJBd1dDO0FBL1YyQixtQ0FBMEIsR0FBRyxHQUFHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgKiBhcyBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCAqIGFzIGJpcDMyIGZyb20gJ2JpcDMyJztcbmltcG9ydCB7IEJpZ051bWJlciB9IGZyb20gJ2JpZ251bWJlci5qcyc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcblxuaW1wb3J0IHsgSW5pdGlhdGVSZWNvdmVyeU9wdGlvbnMgfSBmcm9tICcuLi9yZWNvdmVyeSc7XG5pbXBvcnQgeyBzaWduTWVzc2FnZSB9IGZyb20gJy4uL2JpcDMydXRpbCc7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi4vLi4vYWNjb3VudC1saWInO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IEVudGVycHJpc2VzIH0gZnJvbSAnLi4vZW50ZXJwcmlzZSc7XG5pbXBvcnQgeyBLZXljaGFpbnMsIEtleUluZGljZXMgfSBmcm9tICcuLi9rZXljaGFpbic7XG5pbXBvcnQgeyBNYXJrZXRzIH0gZnJvbSAnLi4vbWFya2V0JztcbmltcG9ydCB7IFBlbmRpbmdBcHByb3ZhbHMgfSBmcm9tICcuLi9wZW5kaW5nQXBwcm92YWwnO1xuaW1wb3J0IHsgV2FsbGV0cywgSVdhbGxldCwgV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IFdlYmhvb2tzIH0gZnJvbSAnLi4vd2ViaG9vayc7XG5pbXBvcnQge1xuICBJQmFzZUNvaW4sXG4gIElUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLFxuICBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFZlcmlmeUFkZHJlc3NPcHRpb25zLFxuICBTdXBwbGVtZW50R2VuZXJhdGVXYWxsZXRPcHRpb25zLFxuICBLZXljaGFpbnNUcmlwbGV0LFxuICBLZXlQYWlyLFxuICBFeHRyYVByZWJ1aWxkUGFyYW1zT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25QcmVidWlsZCxcbiAgUHJlc2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgRmVlRXN0aW1hdGVPcHRpb25zLFxuICBQcmVjcmVhdGVCaXRHb09wdGlvbnMsXG4gIFBhcnNlVHJhbnNhY3Rpb25PcHRpb25zLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgU2lnblRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFJlY292ZXJXYWxsZXRUb2tlbk9wdGlvbnMsXG4gIFJlY292ZXJUb2tlblRyYW5zYWN0aW9uLFxufSBmcm9tICcuL2lCYXNlQ29pbic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQ29pbiBpbXBsZW1lbnRzIElCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3VybDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2VudGVycHJpc2VzOiBFbnRlcnByaXNlcztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF93YWxsZXRzOiBXYWxsZXRzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2tleWNoYWluczogS2V5Y2hhaW5zO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3dlYmhvb2tzOiBXZWJob29rcztcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wZW5kaW5nQXBwcm92YWxzOiBQZW5kaW5nQXBwcm92YWxzO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21hcmtldHM6IE1hcmtldHM7XG4gIHByb3RlY3RlZCBzdGF0aWMgcmVhZG9ubHkgX2NvaW5Ub2tlblBhdHRlcm5TZXBhcmF0b3IgPSAnOic7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UpIHtcbiAgICB0aGlzLmJpdGdvID0gYml0Z287XG4gICAgdGhpcy5fdXJsID0gdGhpcy5iaXRnby51cmwoJy8nLCAyKTtcbiAgICB0aGlzLl93YWxsZXRzID0gbmV3IFdhbGxldHModGhpcy5iaXRnbywgdGhpcyk7XG4gICAgdGhpcy5fa2V5Y2hhaW5zID0gbmV3IEtleWNoYWlucyh0aGlzLmJpdGdvLCB0aGlzKTtcbiAgICB0aGlzLl93ZWJob29rcyA9IG5ldyBXZWJob29rcyh0aGlzLmJpdGdvLCB0aGlzKTtcbiAgICB0aGlzLl9wZW5kaW5nQXBwcm92YWxzID0gbmV3IFBlbmRpbmdBcHByb3ZhbHModGhpcy5iaXRnbywgdGhpcyk7XG4gICAgdGhpcy5fZW50ZXJwcmlzZXMgPSBuZXcgRW50ZXJwcmlzZXModGhpcy5iaXRnbywgdGhpcyk7XG4gICAgdGhpcy5fbWFya2V0cyA9IG5ldyBNYXJrZXRzKHRoaXMuYml0Z28sIHRoaXMpO1xuICB9XG5cbiAgcHVibGljIHVybChzdWZmaXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3VybCArIHRoaXMuZ2V0Q2hhaW4oKSArIHN1ZmZpeDtcbiAgfVxuXG4gIHB1YmxpYyB3YWxsZXRzKCk6IFdhbGxldHMge1xuICAgIHJldHVybiB0aGlzLl93YWxsZXRzO1xuICB9XG5cbiAgcHVibGljIGVudGVycHJpc2VzKCk6IEVudGVycHJpc2VzIHtcbiAgICByZXR1cm4gdGhpcy5fZW50ZXJwcmlzZXM7XG4gIH1cblxuICBwdWJsaWMga2V5Y2hhaW5zKCk6IEtleWNoYWlucyB7XG4gICAgcmV0dXJuIHRoaXMuX2tleWNoYWlucztcbiAgfVxuXG4gIHB1YmxpYyB3ZWJob29rcygpOiBXZWJob29rcyB7XG4gICAgcmV0dXJuIHRoaXMuX3dlYmhvb2tzO1xuICB9XG5cbiAgcHVibGljIHBlbmRpbmdBcHByb3ZhbHMoKTogUGVuZGluZ0FwcHJvdmFscyB7XG4gICAgcmV0dXJuIHRoaXMuX3BlbmRpbmdBcHByb3ZhbHM7XG4gIH1cblxuICBwdWJsaWMgbWFya2V0cygpOiBNYXJrZXRzIHtcbiAgICByZXR1cm4gdGhpcy5fbWFya2V0cztcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGNvaW5Ub2tlblBhdHRlcm5TZXBhcmF0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fY29pblRva2VuUGF0dGVyblNlcGFyYXRvcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldENoYWluKCk7XG4gIH1cblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgY2hhaW4gd2hpY2ggc3VwcG9ydHMgdGhpcyBjb2luIChlZywgJ2J0YycsICdldGgnKVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0Q2hhaW4oKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBjb2luIGZhbWlseSAoZWcuIGZvciB0YnRjLCB0aGlzIHdvdWxkIGJlIGJ0YylcbiAgICovXG4gIGFic3RyYWN0IGdldEZhbWlseSgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEh1bWFuIHJlYWRhYmxlIGZ1bGwgbmFtZSBmb3IgdGhlIGNvaW5cbiAgICovXG4gIGFic3RyYWN0IGdldEZ1bGxOYW1lKCk6IHN0cmluZztcblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBva2F5IHRvIHNlbmQgMCB2YWx1ZSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICB2YWx1ZWxlc3NUcmFuc2ZlckFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBgc2VuZE1hbnkoKWAgdG8gcGVyZm9ybSB3YWxsZXQgc3dlZXAuXG4gICAqIEZJWE1FKEJHLTM5NzM4KTogYWRkIGNvaW4uc3dlZXBXYWxsZXQoKSBpbnN0ZWFkXG4gICAqL1xuICBzd2VlcFdpdGhTZW5kTWFueSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyBkYXRhIGFsb25nIHdpdGggdHJhbnNhY3Rpb25zXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIG9rYXkgdG8gc2VuZCB0eCBkYXRhIChFVEgpLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YUFsbG93ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhpcyBjb2luIHN1cHBvcnRzIGFjY291bnQgY29uc29saWRhdGlvbnNcbiAgICogZnJvbSBpdHMgcmVjZWl2ZSBhZGRyZXNzZXMgdG8gdGhlIHJvb3QgYWRkcmVzcy5cbiAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgb2theSB0byBjb25zb2xpZGF0ZSBvdmVyIHRoaXMgY29pbjsgZmFsc2UsIG90aGVyd2lzZVxuICAgKi9cbiAgYWxsb3dzQWNjb3VudENvbnNvbGlkYXRpb25zKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGbGFnIGluZGljYXRpbmcgaWYgdGhpcyBjb2luIHN1cHBvcnRzIFRTUyB3YWxsZXRzLlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBUU1MgV2FsbGV0cyBjYW4gYmUgY3JlYXRlZCBmb3IgdGhpcyBjb2luXG4gICAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBpbmRpY2F0aW5nIGlmIHRoaXMgY29pbiBzdXBwb3J0cyBCTFMtREtHIHdhbGxldHMuXG4gICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIEJMUy1ES0cgV2FsbGV0cyBjYW4gYmUgY3JlYXRlZCBmb3IgdGhpcyBjb2luXG4gICAqL1xuICBzdXBwb3J0c0Jsc0RrZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmFjdG9yIGJldHdlZW4gdGhlIGJhc2UgdW5pdCBhbmQgaXRzIHNtYWxsZXN0IHN1YmRpdmlzb25cbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIgfCBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBjdXJyZW5jeSBhbW91bnQgcmVwcmVzZW50ZWQgaW4gYmFzZSB1bml0cyAoc2F0b3NoaSwgd2VpLCBhdG9tcywgZHJvcHMsIHN0cm9vcHMpXG4gICAqIHRvIGJpZyB1bml0cyAoYnRjLCBldGgsIHhycCwgeGxtKVxuICAgKi9cbiAgYmFzZVVuaXRzVG9CaWdVbml0cyhiYXNlVW5pdHM6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgZGl2aWRlbmQgPSB0aGlzLmdldEJhc2VGYWN0b3IoKTtcbiAgICBjb25zdCBiaWdOdW1iZXIgPSBuZXcgQmlnTnVtYmVyKGJhc2VVbml0cykuZGl2aWRlZEJ5KGRpdmlkZW5kKTtcbiAgICAvLyBzZXQgdGhlIGZvcm1hdCBzbyBjb21tYXMgYXJlbid0IGFkZGVkIHRvIGxhcmdlIGNvaW4gYW1vdW50c1xuICAgIHJldHVybiBiaWdOdW1iZXIudG9Gb3JtYXQobnVsbCBhcyBhbnksIG51bGwgYXMgYW55LCB7IGdyb3VwU2VwYXJhdG9yOiAnJywgZGVjaW1hbFNlcGFyYXRvcjogJy4nIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBjdXJyZW5jeSBhbW91bnQgcmVwcmVzZW50ZWQgaW4gYmlnIHVuaXRzIChidGMsIGV0aCwgeHJwLCB4bG0pXG4gICAqIHRvIGJhc2UgdW5pdHMgKHNhdG9zaGksIHdlaSwgYXRvbXMsIGRyb3BzLCBzdHJvb3BzKVxuICAgKiBAcGFyYW0gYmlnVW5pdHNcbiAgICovXG4gIGJpZ1VuaXRzVG9CYXNlVW5pdHMoYmlnVW5pdHM6IHN0cmluZyB8IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbXVsdGlwbGllciA9IHRoaXMuZ2V0QmFzZUZhY3RvcigpO1xuICAgIGNvbnN0IGJpZ051bWJlciA9IG5ldyBCaWdOdW1iZXIoYmlnVW5pdHMpLnRpbWVzKG11bHRpcGxpZXIpO1xuICAgIGlmICghYmlnTnVtYmVyLmlzSW50ZWdlcigpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYG5vbi1pbnRlZ2VyIG91dHB1dCByZXN1bHRlZCBmcm9tIG11bHRpcGx5aW5nICR7YmlnVW5pdHN9IGJ5ICR7bXVsdGlwbGllcn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGJpZ051bWJlci50b0ZpeGVkKDApO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpZ24gbWVzc2FnZSB3aXRoIHByaXZhdGUga2V5XG4gICAqXG4gICAqIEBwYXJhbSBrZXlcbiAgICogQHBhcmFtIG1lc3NhZ2VcbiAgICovXG4gIGFzeW5jIHNpZ25NZXNzYWdlKGtleTogeyBwcnY6IHN0cmluZyB9LCBtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIHJldHVybiBzaWduTWVzc2FnZShtZXNzYWdlLCBiaXAzMi5mcm9tQmFzZTU4KGtleS5wcnYpLCB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pO1xuICB9XG5cbiAgLyoqXG4gICAqIERlY29tcG9zZSBhIHJhdyB0cmFuc2FjdGlvbiBpbnRvIHVzZWZ1bCBpbmZvcm1hdGlvbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBjb2luLXNwZWNpZmljXG4gICAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24ob3B0aW9uczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8SVRyYW5zYWN0aW9uRXhwbGFuYXRpb248YW55LCBzdHJpbmcgfCBudW1iZXI+IHwgdW5kZWZpbmVkPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBub3QgaW1wbGVtZW50ZWRgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZnkgdGhhdCBhIHRyYW5zYWN0aW9uIHByZWJ1aWxkIGNvbXBsaWVzIHdpdGggdGhlIG9yaWdpbmFsIGludGVudGlvblxuICAgKi9cbiAgYWJzdHJhY3QgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BzZWUgaXNXYWxsZXRBZGRyZXNzfSBpbnN0ZWFkXG4gICAqL1xuICB2ZXJpZnlBZGRyZXNzKHBhcmFtczogVmVyaWZ5QWRkcmVzc09wdGlvbnMpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1dhbGxldEFkZHJlc3MocGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEByZXR1cm4gdHJ1ZSBpZmYgYWRkcmVzcyBpcyBhIHdhbGxldCBhZGRyZXNzLiBNdXN0IHJldHVybiBmYWxzZSBpZiBhZGRyZXNzIGlzIG91dHNpZGUgd2FsbGV0LlxuICAgKi9cbiAgYWJzdHJhY3QgaXNXYWxsZXRBZGRyZXNzKHBhcmFtczogVmVyaWZ5QWRkcmVzc09wdGlvbnMpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBjb252ZXJ0IGFkZHJlc3MgaW50byBkZXNpcmVkIGFkZHJlc3MgZm9ybWF0LlxuICAgKiBAcGFyYW0gYWRkcmVzc1xuICAgKiBAcGFyYW0gZm9ybWF0XG4gICAqL1xuICBjYW5vbmljYWxBZGRyZXNzKGFkZHJlc3M6IHN0cmluZywgZm9ybWF0PzogdW5rbm93bik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGFkZHJlc3M7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgd2hldGhlciBhIGNvaW4gc3VwcG9ydHMgYmxvY2tUYXJnZXQgZm9yIHRyYW5zYWN0aW9ucyB0byBiZSBpbmNsdWRlZCBpblxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIHN1cHBvcnRzQmxvY2tUYXJnZXQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvb2sgdG8gYWRkIGFkZGl0aW9uYWwgcGFyYW1ldGVycyB0byB0aGUgd2FsbGV0IGdlbmVyYXRpb25cbiAgICogQHBhcmFtIHdhbGxldFBhcmFtc1xuICAgKiBAcGFyYW0ga2V5Y2hhaW5zXG4gICAqIEByZXR1cm4geyp9XG4gICAqL1xuICBzdXBwbGVtZW50R2VuZXJhdGVXYWxsZXQod2FsbGV0UGFyYW1zOiBTdXBwbGVtZW50R2VuZXJhdGVXYWxsZXRPcHRpb25zLCBrZXljaGFpbnM6IEtleWNoYWluc1RyaXBsZXQpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUod2FsbGV0UGFyYW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZXh0cmEgcGFyYW1ldGVycyBmb3IgcHJlYnVpbGRpbmcgYSB0eC4gQWRkIHRoaW5ncyBsaWtlIGhvcCB0cmFuc2FjdGlvbiBwYXJhbXNcbiAgICovXG4gIGdldEV4dHJhUHJlYnVpbGRQYXJhbXMoYnVpbGRQYXJhbXM6IEV4dHJhUHJlYnVpbGRQYXJhbXNPcHRpb25zKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoe30pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vZGlmeSBwcmVidWlsZCBhZnRlciByZWNlaXZpbmcgaXQgZnJvbSB0aGUgc2VydmVyLiBBZGQgdGhpbmdzIGxpa2UgbmxvY2t0aW1lXG4gICAqL1xuICBwb3N0UHJvY2Vzc1ByZWJ1aWxkKHByZWJ1aWxkUmVzcG9uc2U6IFRyYW5zYWN0aW9uUHJlYnVpbGQpOiBQcm9taXNlPFRyYW5zYWN0aW9uUHJlYnVpbGQ+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHByZWJ1aWxkUmVzcG9uc2UpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvaW4tc3BlY2lmaWMgdGhpbmdzIGRvbmUgYmVmb3JlIHNpZ25pbmcgYSB0cmFuc2FjdGlvbiwgaS5lLiB2ZXJpZmljYXRpb25cbiAgICovXG4gIHByZXNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFByZXNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFByZXNpZ25UcmFuc2FjdGlvbk9wdGlvbnM+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHdhbGxldCBvYmplY3QgZnJvbSBhIHdhbGxldCBkYXRhIG9iamVjdFxuICAgKiBAcGFyYW0gd2FsbGV0UGFyYW1zXG4gICAqL1xuICBuZXdXYWxsZXRPYmplY3Qod2FsbGV0UGFyYW1zOiBhbnkpOiBJV2FsbGV0IHtcbiAgICByZXR1cm4gbmV3IFdhbGxldCh0aGlzLmJpdGdvLCB0aGlzLCB3YWxsZXRQYXJhbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGZlZSBlc3RpbWF0ZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXJ2ZXJcbiAgICogQHBhcmFtIHtPYmplY3R9IHBhcmFtcyBUaGUgcGFyYW1zIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvblxuICAgKiBAcGFyYW0ge0ludGVnZXJ9IHBhcmFtcy5udW1CbG9ja3MgVGhlIG51bWJlciBvZiBibG9ja3MgdG8gdGFyZ2V0IGZvciBjb25mb3JtYXRpb24gKE9ubHkgd29ya3MgZm9yIGJ0YylcbiAgICogQHJldHVybnMge09iamVjdH0gVGhlIGluZm8gcmV0dXJuZWQgZnJvbSB0aGUgbWVyY2hhbnQgc2VydmVyXG4gICAqL1xuICBhc3luYyBmZWVFc3RpbWF0ZShwYXJhbXM6IEZlZUVzdGltYXRlT3B0aW9ucyk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcXVlcnk6IGFueSA9IHt9O1xuICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zLm51bUJsb2Nrcykge1xuICAgICAgcXVlcnkubnVtQmxvY2tzID0gcGFyYW1zLm51bUJsb2NrcztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5iaXRnby5nZXQodGhpcy51cmwoJy90eC9mZWUnKSkucXVlcnkocXVlcnkpLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb2xkIHdhbGxldCB0b29sIHVzZXMgdGhpcyBmdW5jdGlvbiB0byBkZXJpdmUgYW4gZXh0ZW5kZWQga2V5IHRoYXQgaXMgYmFzZWQgb24gdGhlIHBhc3NlZCBrZXkgYW5kIHNlZWRcbiAgICogQHBhcmFtIGtleVxuICAgKiBAcGFyYW0gc2VlZFxuICAgKiBAcmV0dXJucyB7e2tleTogc3RyaW5nLCBkZXJpdmF0aW9uUGF0aDogc3RyaW5nfX1cbiAgICovXG4gIGRlcml2ZUtleVdpdGhTZWVkKHsga2V5LCBzZWVkIH06IHsga2V5OiBzdHJpbmc7IHNlZWQ6IHN0cmluZyB9KTogeyBrZXk6IHN0cmluZzsgZGVyaXZhdGlvblBhdGg6IHN0cmluZyB9IHtcbiAgICBmdW5jdGlvbiBzaGEyNTYoaW5wdXQpIHtcbiAgICAgIHJldHVybiBjcnlwdG8uY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKGlucHV0KS5kaWdlc3QoKTtcbiAgICB9XG4gICAgY29uc3QgZGVyaXZhdGlvblBhdGhJbnB1dCA9IHNoYTI1NihzaGEyNTYoYCR7c2VlZH1gKSkudG9TdHJpbmcoJ2hleCcpO1xuICAgIGNvbnN0IGRlcml2YXRpb25QYXRoUGFydHMgPSBbXG4gICAgICBwYXJzZUludChkZXJpdmF0aW9uUGF0aElucHV0LnNsaWNlKDAsIDcpLCAxNiksXG4gICAgICBwYXJzZUludChkZXJpdmF0aW9uUGF0aElucHV0LnNsaWNlKDcsIDE0KSwgMTYpLFxuICAgIF07XG4gICAgY29uc3QgZGVyaXZhdGlvblBhdGggPSAnbS85OTk5OTkvJyArIGRlcml2YXRpb25QYXRoUGFydHMuam9pbignLycpO1xuICAgIGNvbnN0IGtleU5vZGUgPSBiaXAzMi5mcm9tQmFzZTU4KGtleSk7XG4gICAgY29uc3QgZGVyaXZlZEtleU5vZGUgPSBrZXlOb2RlLmRlcml2ZVBhdGgoZGVyaXZhdGlvblBhdGgpO1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGRlcml2ZWRLZXlOb2RlLnRvQmFzZTU4KCksXG4gICAgICBkZXJpdmF0aW9uUGF0aDogZGVyaXZhdGlvblBhdGgsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hhdCBrZXkgd2Ugd2lsbCBuZWVkIGZvciBzaWduaW5nIC0gcmlnaHQgbm93IHdlIGp1c3QgbmVlZCB0aGVcbiAgICogdXNlciBrZXkuXG4gICAqL1xuICBrZXlJZHNGb3JTaWduaW5nKCk6IG51bWJlcltdIHtcbiAgICByZXR1cm4gW0tleUluZGljZXMuVVNFUl07XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBiZWZvcmUgYWRkaW5nIGEgYml0Z28ga2V5LiBCYXNlIGNvbnRyb2xsZXJcbiAgICogaXMgYSBuby1vcCwgYnV0IGNvaW4tc3BlY2lmaWMgY29udHJvbGxlciBtYXkgZG8gc29tZXRoaW5nXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICovXG4gIHByZUNyZWF0ZUJpdEdvKHBhcmFtczogUHJlY3JlYXRlQml0R29PcHRpb25zKTogdm9pZCB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIC0gdXNlIGdldEJpcDMyS2V5cygpIGluIGNvbmp1bmN0aW9uIHdpdGggaXNWYWxpZEFkZHJlc3MgaW5zdGVhZFxuICAgKi9cbiAgaW5pdGlhdGVSZWNvdmVyeShwYXJhbXM6IEluaXRpYXRlUmVjb3ZlcnlPcHRpb25zKTogbmV2ZXIge1xuICAgIHRocm93IG5ldyBFcnJvcignZGVwcmVjYXRlZCBtZXRob2QnKTtcbiAgfVxuXG4gIGFic3RyYWN0IHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+O1xuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZSBhIGtleSBwYWlyIG9uIHRoZSBjdXJ2ZSB1c2VkIGJ5IHRoZSBjb2luXG4gICAqXG4gICAqIEBwYXJhbSBzZWVkXG4gICAqL1xuICBhYnN0cmFjdCBnZW5lcmF0ZUtleVBhaXIoc2VlZD86IEJ1ZmZlcik6IEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFJldHVybiBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBpbnB1dCBpcyB2YWxpZCBwdWJsaWMga2V5IGZvciB0aGUgY29pbi5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHB1YiB0aGUgcHViIHRvIGJlIGNoZWNrZWRcbiAgICogQHJldHVybnMge0Jvb2xlYW59IGlzIGl0IHZhbGlkP1xuICAgKi9cbiAgYWJzdHJhY3QgaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFJldHVybiB3ZXRoZXIgdGhlIGdpdmVuIG0gb2YgbiB3YWxsZXQgc2lnbmVycy8ga2V5IGFtb3VudHMgYXJlIHZhbGlkIGZvciB0aGUgY29pblxuICAgKi9cbiAgaXNWYWxpZE1vZk5TZXR1cCh7IG0sIG4gfTogeyBtPzogbnVtYmVyOyBuPzogbnVtYmVyIH0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gbSA9PT0gMiAmJiBuID09PSAzO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGBhZGRyZXNzYCBpcyBhIHBsYXVzaWJseSB2YWxpZCBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gY29pbi5cbiAgICpcbiAgICogRG9lcyBub3QgdmVyaWZ5IHRoYXQgdGhlIGFkZHJlc3MgYmVsb25ncyB0byBhIHdhbGxldC4gRm9yIHRoYXQsXG4gICAqIHVzZSBbW3ZlcmlmeUFkZHJlc3NdXVxuICAgKiBAcGFyYW0gYWRkcmVzc1xuICAgKi9cbiAgYWJzdHJhY3QgaXNWYWxpZEFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2lnbiBhIHRyYW5zYWN0aW9uXG4gICAqL1xuICBhYnN0cmFjdCBzaWduVHJhbnNhY3Rpb24ocGFyYW1zOiBTaWduVHJhbnNhY3Rpb25PcHRpb25zKTogUHJvbWlzZTxTaWduZWRUcmFuc2FjdGlvbj47XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBvcnRpb24gb2YgdGhlIHRyYW5zYWN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgc2lnbmVkIGluIEJ1ZmZlciBmb3JtYXQuXG4gICAqIE9ubHkgbmVlZGVkIGZvciBjb2lucyB0aGF0IHN1cHBvcnQgYWRkaW5nIHNpZ25hdHVyZXMgZGlyZWN0bHkgKGUuZy4gVFNTKS5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IHNlcmlhbGl6ZWRUeCAtIHRoZSB1bnNpZ25lZCB0cmFuc2FjdGlvbiBpbiBicm9hZGNhc3QgZm9ybWF0XG4gICAqIEByZXR1cm5zIHtQcm9taXNlPEJ1ZmZlcj59IC0gdGhlIHBvcnRpb24gb2YgdGhlIHRyYW5zYWN0aW9uIHRoYXQgbmVlZHMgdG8gYmUgc2lnbmVkXG4gICAqL1xuICBhc3luYyBnZXRTaWduYWJsZVBheWxvYWQoc2VyaWFsaXplZFR4OiBzdHJpbmcpOiBQcm9taXNlPEJ1ZmZlcj4ge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShzZXJpYWxpemVkVHgpO1xuICB9XG5cbiAgYXN5bmMgcmVjb3ZlclRva2VuKHBhcmFtczogUmVjb3ZlcldhbGxldFRva2VuT3B0aW9ucyk6IFByb21pc2U8UmVjb3ZlclRva2VuVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigncmVjb3ZlclRva2VuIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRoaXMgY29pbicpO1xuICB9XG59XG4iXX0=