@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,106 @@
1
+ /// <reference types="node" />
2
+ import { ExtendedKeys } from '../baseCoin/iface';
3
+ /**
4
+ * @param {string} xpub - a base-58 encoded extended public key (BIP32)
5
+ * @returns {string} the uncompressed public key in hexadecimal
6
+ */
7
+ export declare function xpubToUncompressedPub(xpub: string): string;
8
+ /**
9
+ * @param {string} xprv - base58-encoded extended private key (BIP32)
10
+ * @returns {string} the hex-encoded raw private key
11
+ */
12
+ export declare function xprvToRawPrv(xprv: string): string;
13
+ /**
14
+ * @param {string} prv - Private key in hex format to get the extended keys for
15
+ * @returns {ExtendedKeys} xprv and xpub in string format
16
+ */
17
+ export declare function rawPrvToExtendedKeys(prv: string): ExtendedKeys;
18
+ /**
19
+ * Whether the input is a valid BIP32 xpub or not
20
+ *
21
+ * @param xpub
22
+ */
23
+ export declare function isValidXpub(xpub: string): boolean;
24
+ /**
25
+ * Whether the input is a valid BIP32 xprv or not
26
+ *
27
+ * @param xprv
28
+ */
29
+ export declare function isValidXprv(xprv: string): boolean;
30
+ /**
31
+ * Whether the input is a valid secp256k1 public key
32
+ *
33
+ * @param pub
34
+ */
35
+ export declare function isValidPub(pub: string): boolean;
36
+ /**
37
+ * Whether the input is a valid secp256k1 private key
38
+ *
39
+ * @param prv
40
+ */
41
+ export declare function isValidPrv(prv: string): boolean;
42
+ /**
43
+ * Whether the input is a valid ed25519 private key
44
+ *
45
+ * @param {string} prv A hexadecimal private key to validate
46
+ * @returns {boolean} Whether the input is a valid public key or not
47
+ */
48
+ export declare function isValidEd25519Seed(prv: string): boolean;
49
+ /**
50
+ * Whether the input is a valid ed25519 private key
51
+ *
52
+ * @param {string} prv A hexadecimal private key to validate
53
+ * @returns {boolean} Whether the input is a valid public key or not
54
+ */
55
+ export declare function isValidEd25519SecretKey(prv: string): boolean;
56
+ /**
57
+ * Whether the input is a valid ed25519 public key
58
+ *
59
+ * @param {string} pub A hexadecimal public key to validate
60
+ * @returns {boolean} Whether the input is a valid public key or not
61
+ */
62
+ export declare function isValidEd25519PublicKey(pub: string): boolean;
63
+ /**
64
+ * Whether the input is a valid BLS private key
65
+ *
66
+ * @param {string} prv a private key to validate
67
+ * @returns {boolean} Whether the input is a valid private key or not
68
+ */
69
+ export declare function isValidBLSPrivateKey(prv: string): boolean;
70
+ /**
71
+ * Whether input is a valid BLS public key
72
+ *
73
+ * @param {string} pub the public key to validate
74
+ * @returns {boolean} Whether input is a valid public key or not
75
+ */
76
+ export declare function isValidBLSPublicKey(pub: string): boolean;
77
+ /**
78
+ * Returns an hex string of the given buffer
79
+ *
80
+ * @param {Buffer | Uint8Array} buffer - the buffer to be converted to hex
81
+ * @returns {string} - the hex value
82
+ */
83
+ export declare function toHex(buffer: Buffer | Uint8Array): string;
84
+ /**
85
+ * Returns an hex string of the given bigint
86
+ *
87
+ * @param {bigint} bigint - the bigint to be converted to hex
88
+ * @returns {string} - the hex value
89
+ */
90
+ export declare function bigIntToHex(bigint: bigint): string;
91
+ /**
92
+ * Check if base58 decoded string is equale to length
93
+ *
94
+ * @param {string} value - string to be checked
95
+ * @param {number} length - expected decoded length
96
+ * @return {boolean} if the string can decoded as base58 and match the expected length
97
+ */
98
+ export declare function isBase58(value: string, length: number): boolean;
99
+ /**
100
+ * Returns a Uint8Array of the given hex string
101
+ *
102
+ * @param {string} str - the hex string to be converted
103
+ * @returns {string} - the Uint8Array value
104
+ */
105
+ export declare function toUint8Array(str: string): Uint8Array;
106
+ //# sourceMappingURL=crypto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/util/crypto.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO/C;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOvD;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAO5D;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAMzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOxD;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED;;;;;;GAMG;AAEH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAM/D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAEpD"}
@@ -0,0 +1,269 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
22
+ return (mod && mod.__esModule) ? mod : { "default": mod };
23
+ };
24
+ Object.defineProperty(exports, "__esModule", { value: true });
25
+ exports.toUint8Array = exports.isBase58 = exports.bigIntToHex = exports.toHex = exports.isValidBLSPublicKey = exports.isValidBLSPrivateKey = exports.isValidEd25519PublicKey = exports.isValidEd25519SecretKey = exports.isValidEd25519Seed = exports.isValidPrv = exports.isValidPub = exports.isValidXprv = exports.isValidXpub = exports.rawPrvToExtendedKeys = exports.xprvToRawPrv = exports.xpubToUncompressedPub = void 0;
26
+ const bip32 = __importStar(require("bip32"));
27
+ const bitcoinjs_lib_1 = require("bitcoinjs-lib");
28
+ const nacl = __importStar(require("tweetnacl"));
29
+ const hex = __importStar(require("@stablelib/hex"));
30
+ const bls = __importStar(require("noble-bls12-381"));
31
+ const strip_hex_prefix_1 = __importDefault(require("strip-hex-prefix"));
32
+ const bs58_1 = __importDefault(require("bs58"));
33
+ /**
34
+ * @param {string} xpub - a base-58 encoded extended public key (BIP32)
35
+ * @returns {string} the uncompressed public key in hexadecimal
36
+ */
37
+ function xpubToUncompressedPub(xpub) {
38
+ if (!isValidXpub(xpub)) {
39
+ throw new Error('invalid xpub');
40
+ }
41
+ return bitcoinjs_lib_1.ECPair.fromPublicKey(bip32.fromBase58(xpub, bitcoinjs_lib_1.networks.bitcoin).publicKey, {
42
+ compressed: false,
43
+ }).publicKey.toString('hex');
44
+ }
45
+ exports.xpubToUncompressedPub = xpubToUncompressedPub;
46
+ /**
47
+ * @param {string} xprv - base58-encoded extended private key (BIP32)
48
+ * @returns {string} the hex-encoded raw private key
49
+ */
50
+ function xprvToRawPrv(xprv) {
51
+ if (!isValidXprv(xprv)) {
52
+ throw new Error('invalid xprv');
53
+ }
54
+ const { privateKey } = bip32.fromBase58(xprv, bitcoinjs_lib_1.networks.bitcoin);
55
+ if (!privateKey) {
56
+ throw new Error('invalid xprv');
57
+ }
58
+ return privateKey.toString('hex');
59
+ }
60
+ exports.xprvToRawPrv = xprvToRawPrv;
61
+ /**
62
+ * @param {string} prv - Private key in hex format to get the extended keys for
63
+ * @returns {ExtendedKeys} xprv and xpub in string format
64
+ */
65
+ function rawPrvToExtendedKeys(prv) {
66
+ const hd = bip32.fromPrivateKey(Buffer.from(prv, 'hex'), Buffer.alloc(32));
67
+ return {
68
+ xprv: hd.toBase58(),
69
+ xpub: hd.neutered().toBase58(),
70
+ };
71
+ }
72
+ exports.rawPrvToExtendedKeys = rawPrvToExtendedKeys;
73
+ /**
74
+ * Whether the input is a valid BIP32 xpub or not
75
+ *
76
+ * @param xpub
77
+ */
78
+ function isValidXpub(xpub) {
79
+ if (xpub.substr(0, 4) !== 'xpub') {
80
+ // check for xpub formats we don't support, such as tpub
81
+ return false;
82
+ }
83
+ try {
84
+ bip32.fromBase58(xpub, bitcoinjs_lib_1.networks.bitcoin);
85
+ }
86
+ catch (err) {
87
+ return false;
88
+ }
89
+ // if HD generation didn't throw, it is a valid xpub
90
+ return true;
91
+ }
92
+ exports.isValidXpub = isValidXpub;
93
+ /**
94
+ * Whether the input is a valid BIP32 xprv or not
95
+ *
96
+ * @param xprv
97
+ */
98
+ function isValidXprv(xprv) {
99
+ if (xprv.substr(0, 4) !== 'xprv') {
100
+ // check for xprv formats we don't support
101
+ return false;
102
+ }
103
+ try {
104
+ bip32.fromBase58(xprv, bitcoinjs_lib_1.networks.bitcoin);
105
+ }
106
+ catch (err) {
107
+ return false;
108
+ }
109
+ // if HD generation didn't throw, it is a valid xprv
110
+ return true;
111
+ }
112
+ exports.isValidXprv = isValidXprv;
113
+ /**
114
+ * Whether the input is a valid secp256k1 public key
115
+ *
116
+ * @param pub
117
+ */
118
+ function isValidPub(pub) {
119
+ try {
120
+ bitcoinjs_lib_1.ECPair.fromPublicKey(Buffer.from(pub, 'hex'));
121
+ }
122
+ catch (e) {
123
+ return false;
124
+ }
125
+ return true;
126
+ }
127
+ exports.isValidPub = isValidPub;
128
+ /**
129
+ * Whether the input is a valid secp256k1 private key
130
+ *
131
+ * @param prv
132
+ */
133
+ function isValidPrv(prv) {
134
+ try {
135
+ bitcoinjs_lib_1.ECPair.fromPrivateKey(Buffer.from(prv, 'hex'));
136
+ }
137
+ catch (e) {
138
+ return false;
139
+ }
140
+ return true;
141
+ }
142
+ exports.isValidPrv = isValidPrv;
143
+ /**
144
+ * Whether the input is a valid ed25519 private key
145
+ *
146
+ * @param {string} prv A hexadecimal private key to validate
147
+ * @returns {boolean} Whether the input is a valid public key or not
148
+ */
149
+ function isValidEd25519Seed(prv) {
150
+ try {
151
+ const decodedPrv = toUint8Array(prv);
152
+ return decodedPrv.length === nacl.sign.seedLength;
153
+ }
154
+ catch (e) {
155
+ return false;
156
+ }
157
+ }
158
+ exports.isValidEd25519Seed = isValidEd25519Seed;
159
+ /**
160
+ * Whether the input is a valid ed25519 private key
161
+ *
162
+ * @param {string} prv A hexadecimal private key to validate
163
+ * @returns {boolean} Whether the input is a valid public key or not
164
+ */
165
+ function isValidEd25519SecretKey(prv) {
166
+ try {
167
+ const decodedPrv = toUint8Array(prv);
168
+ return decodedPrv.length === nacl.sign.secretKeyLength;
169
+ }
170
+ catch (e) {
171
+ return false;
172
+ }
173
+ }
174
+ exports.isValidEd25519SecretKey = isValidEd25519SecretKey;
175
+ /**
176
+ * Whether the input is a valid ed25519 public key
177
+ *
178
+ * @param {string} pub A hexadecimal public key to validate
179
+ * @returns {boolean} Whether the input is a valid public key or not
180
+ */
181
+ function isValidEd25519PublicKey(pub) {
182
+ try {
183
+ const decodedPub = new Uint8Array(Buffer.from(pub, 'hex'));
184
+ return decodedPub.length === nacl.sign.publicKeyLength;
185
+ }
186
+ catch (e) {
187
+ return false;
188
+ }
189
+ }
190
+ exports.isValidEd25519PublicKey = isValidEd25519PublicKey;
191
+ /**
192
+ * Whether the input is a valid BLS private key
193
+ *
194
+ * @param {string} prv a private key to validate
195
+ * @returns {boolean} Whether the input is a valid private key or not
196
+ */
197
+ function isValidBLSPrivateKey(prv) {
198
+ try {
199
+ return bls.Fr.isValid(BigInt(prv));
200
+ }
201
+ catch (e) {
202
+ return false;
203
+ }
204
+ }
205
+ exports.isValidBLSPrivateKey = isValidBLSPrivateKey;
206
+ /**
207
+ * Whether input is a valid BLS public key
208
+ *
209
+ * @param {string} pub the public key to validate
210
+ * @returns {boolean} Whether input is a valid public key or not
211
+ */
212
+ function isValidBLSPublicKey(pub) {
213
+ try {
214
+ bls.PointG1.fromCompressedHex(strip_hex_prefix_1.default(pub)).assertValidity();
215
+ return true;
216
+ }
217
+ catch (e) {
218
+ return false;
219
+ }
220
+ }
221
+ exports.isValidBLSPublicKey = isValidBLSPublicKey;
222
+ /**
223
+ * Returns an hex string of the given buffer
224
+ *
225
+ * @param {Buffer | Uint8Array} buffer - the buffer to be converted to hex
226
+ * @returns {string} - the hex value
227
+ */
228
+ function toHex(buffer) {
229
+ return hex.encode(buffer, true);
230
+ }
231
+ exports.toHex = toHex;
232
+ /**
233
+ * Returns an hex string of the given bigint
234
+ *
235
+ * @param {bigint} bigint - the bigint to be converted to hex
236
+ * @returns {string} - the hex value
237
+ */
238
+ function bigIntToHex(bigint) {
239
+ const hex = bigint.toString(16);
240
+ return '0x' + '0'.slice(0, hex.length % 2) + hex;
241
+ }
242
+ exports.bigIntToHex = bigIntToHex;
243
+ /**
244
+ * Check if base58 decoded string is equale to length
245
+ *
246
+ * @param {string} value - string to be checked
247
+ * @param {number} length - expected decoded length
248
+ * @return {boolean} if the string can decoded as base58 and match the expected length
249
+ */
250
+ function isBase58(value, length) {
251
+ try {
252
+ return !!value && bs58_1.default.decode(value).length === length;
253
+ }
254
+ catch (e) {
255
+ return false;
256
+ }
257
+ }
258
+ exports.isBase58 = isBase58;
259
+ /**
260
+ * Returns a Uint8Array of the given hex string
261
+ *
262
+ * @param {string} str - the hex string to be converted
263
+ * @returns {string} - the Uint8Array value
264
+ */
265
+ function toUint8Array(str) {
266
+ return hex.decode(str);
267
+ }
268
+ exports.toUint8Array = toUint8Array;
269
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FjY291bnQtbGliL3V0aWwvY3J5cHRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0I7QUFDL0IsaURBQWlEO0FBQ2pELGdEQUFrQztBQUNsQyxvREFBc0M7QUFDdEMscURBQXVDO0FBQ3ZDLHdFQUE4QztBQUU5QyxnREFBd0I7QUFFeEI7OztHQUdHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsSUFBWTtJQUNoRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7S0FDakM7SUFDRCxPQUFPLHNCQUFNLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLHdCQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFO1FBQzlFLFVBQVUsRUFBRSxLQUFLO0tBQ2xCLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFQRCxzREFPQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNqQztJQUVELE1BQU0sRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSx3QkFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hFLElBQUksQ0FBQyxVQUFVLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBQ2pDO0lBQ0QsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BDLENB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SUFDeEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxPQUFPLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNuRCxDQUFDO0FBSEQsa0NBR0M7QUFFRDs7Ozs7O0dBTUc7QUFFSCxTQUFnQixRQUFRLENBQUMsS0FBYSxFQUFFLE1BQWM7SUFDcEQsSUFBSTtRQUNGLE9BQU8sQ0FBQyxDQUFDLEtBQUssSUFBSSxjQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7S0FDeEQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7QUFDSCxDQUFDO0FBTkQsNEJBTUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLFlBQVksQ0FBQyxHQUFXO0lBQ3RDLE9BQU8sR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBRkQsb0NBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiaXAzMiBmcm9tICdiaXAzMic7XG5pbXBvcnQgeyBFQ1BhaXIsIG5ldHdvcmtzIH0gZnJvbSAnYml0Y29pbmpzLWxpYic7XG5pbXBvcnQgKiBhcyBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgKiBhcyBoZXggZnJvbSAnQHN0YWJsZWxpYi9oZXgnO1xuaW1wb3J0ICogYXMgYmxzIGZyb20gJ25vYmxlLWJsczEyLTM4MSc7XG5pbXBvcnQgc3RyaXBIZXhQcmVmaXggZnJvbSAnc3RyaXAtaGV4LXByZWZpeCc7XG5pbXBvcnQgeyBFeHRlbmRlZEtleXMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgYnM1OCBmcm9tICdiczU4JztcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30geHB1YiAtIGEgYmFzZS01OCBlbmNvZGVkIGV4dGVuZGVkIHB1YmxpYyBrZXkgKEJJUDMyKVxuICogQHJldHVybnMge3N0cmluZ30gdGhlIHVuY29tcHJlc3NlZCBwdWJsaWMga2V5IGluIGhleGFkZWNpbWFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4cHViVG9VbmNvbXByZXNzZWRQdWIoeHB1Yjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkWHB1Yih4cHViKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHViJyk7XG4gIH1cbiAgcmV0dXJuIEVDUGFpci5mcm9tUHVibGljS2V5KGJpcDMyLmZyb21CYXNlNTgoeHB1YiwgbmV0d29ya3MuYml0Y29pbikucHVibGljS2V5LCB7XG4gICAgY29tcHJlc3NlZDogZmFsc2UsXG4gIH0pLnB1YmxpY0tleS50b1N0cmluZygnaGV4Jyk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHhwcnYgLSBiYXNlNTgtZW5jb2RlZCBleHRlbmRlZCBwcml2YXRlIGtleSAoQklQMzIpXG4gKiBAcmV0dXJucyB7c3RyaW5nfSB0aGUgaGV4LWVuY29kZWQgcmF3IHByaXZhdGUga2V5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB4cHJ2VG9SYXdQcnYoeHBydjogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFpc1ZhbGlkWHBydih4cHJ2KSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHJ2Jyk7XG4gIH1cblxuICBjb25zdCB7IHByaXZhdGVLZXkgfSA9IGJpcDMyLmZyb21CYXNlNTgoeHBydiwgbmV0d29ya3MuYml0Y29pbik7XG4gIGlmICghcHJpdmF0ZUtleSkge1xuICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCB4cHJ2Jyk7XG4gIH1cbiAgcmV0dXJuIHByaXZhdGVLZXkudG9TdHJpbmcoJ2hleCcpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgLSBQcml2YXRlIGtleSBpbiBoZXggZm9ybWF0IHRvIGdldCB0aGUgZXh0ZW5kZWQga2V5cyBmb3JcbiAqIEByZXR1cm5zIHtFeHRlbmRlZEtleXN9IHhwcnYgYW5kIHhwdWIgaW4gc3RyaW5nIGZvcm1hdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmF3UHJ2VG9FeHRlbmRlZEtleXMocHJ2OiBzdHJpbmcpOiBFeHRlbmRlZEtleXMge1xuICBjb25zdCBoZCA9IGJpcDMyLmZyb21Qcml2YXRlS2V5KEJ1ZmZlci5mcm9tKHBydiwgJ2hleCcpLCBCdWZmZXIuYWxsb2MoMzIpKTtcbiAgcmV0dXJuIHtcbiAgICB4cHJ2OiBoZC50b0Jhc2U1OCgpLFxuICAgIHhwdWI6IGhkLm5ldXRlcmVkKCkudG9CYXNlNTgoKSxcbiAgfTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIEJJUDMyIHhwdWIgb3Igbm90XG4gKlxuICogQHBhcmFtIHhwdWJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRYcHViKHhwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBpZiAoeHB1Yi5zdWJzdHIoMCwgNCkgIT09ICd4cHViJykge1xuICAgIC8vIGNoZWNrIGZvciB4cHViIGZvcm1hdHMgd2UgZG9uJ3Qgc3VwcG9ydCwgc3VjaCBhcyB0cHViXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHRyeSB7XG4gICAgYmlwMzIuZnJvbUJhc2U1OCh4cHViLCBuZXR3b3Jrcy5iaXRjb2luKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIGlmIEhEIGdlbmVyYXRpb24gZGlkbid0IHRocm93LCBpdCBpcyBhIHZhbGlkIHhwdWJcbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBCSVAzMiB4cHJ2IG9yIG5vdFxuICpcbiAqIEBwYXJhbSB4cHJ2XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkWHBydih4cHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgaWYgKHhwcnYuc3Vic3RyKDAsIDQpICE9PSAneHBydicpIHtcbiAgICAvLyBjaGVjayBmb3IgeHBydiBmb3JtYXRzIHdlIGRvbid0IHN1cHBvcnRcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdHJ5IHtcbiAgICBiaXAzMi5mcm9tQmFzZTU4KHhwcnYsIG5ldHdvcmtzLmJpdGNvaW4pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLy8gaWYgSEQgZ2VuZXJhdGlvbiBkaWRuJ3QgdGhyb3csIGl0IGlzIGEgdmFsaWQgeHBydlxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHNlY3AyNTZrMSBwdWJsaWMga2V5XG4gKlxuICogQHBhcmFtIHB1YlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFB1YihwdWI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIEVDUGFpci5mcm9tUHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIHNlY3AyNTZrMSBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSBwcnZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRQcnYocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBFQ1BhaXIuZnJvbVByaXZhdGVLZXkoQnVmZmVyLmZyb20ocHJ2LCAnaGV4JykpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgZWQyNTUxOSBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgQSBoZXhhZGVjaW1hbCBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5U2VlZChwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRlY29kZWRQcnYgPSB0b1VpbnQ4QXJyYXkocHJ2KTtcbiAgICByZXR1cm4gZGVjb2RlZFBydi5sZW5ndGggPT09IG5hY2wuc2lnbi5zZWVkTGVuZ3RoO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBlZDI1NTE5IHByaXZhdGUga2V5XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHBydiBBIGhleGFkZWNpbWFsIHByaXZhdGUga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBwdWJsaWMga2V5IG9yIG5vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZEVkMjU1MTlTZWNyZXRLZXkocHJ2OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZWNvZGVkUHJ2ID0gdG9VaW50OEFycmF5KHBydik7XG4gICAgcmV0dXJuIGRlY29kZWRQcnYubGVuZ3RoID09PSBuYWNsLnNpZ24uc2VjcmV0S2V5TGVuZ3RoO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSB2YWxpZCBlZDI1NTE5IHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHViIEEgaGV4YWRlY2ltYWwgcHVibGljIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHVibGljIGtleSBvciBub3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZFB1YiA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKHB1YiwgJ2hleCcpKTtcbiAgICByZXR1cm4gZGVjb2RlZFB1Yi5sZW5ndGggPT09IG5hY2wuc2lnbi5wdWJsaWNLZXlMZW5ndGg7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBpbnB1dCBpcyBhIHZhbGlkIEJMUyBwcml2YXRlIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcnYgYSBwcml2YXRlIGtleSB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IFdoZXRoZXIgdGhlIGlucHV0IGlzIGEgdmFsaWQgcHJpdmF0ZSBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQkxTUHJpdmF0ZUtleShwcnY6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiBibHMuRnIuaXNWYWxpZChCaWdJbnQocHJ2KSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBXaGV0aGVyIGlucHV0IGlzIGEgdmFsaWQgQkxTIHB1YmxpYyBrZXlcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcHViIHRoZSBwdWJsaWMga2V5IHRvIHZhbGlkYXRlXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gV2hldGhlciBpbnB1dCBpcyBhIHZhbGlkIHB1YmxpYyBrZXkgb3Igbm90XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQkxTUHVibGljS2V5KHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHRyeSB7XG4gICAgYmxzLlBvaW50RzEuZnJvbUNvbXByZXNzZWRIZXgoc3RyaXBIZXhQcmVmaXgocHViKSkuYXNzZXJ0VmFsaWRpdHkoKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gaGV4IHN0cmluZyBvZiB0aGUgZ2l2ZW4gYnVmZmVyXG4gKlxuICogQHBhcmFtIHtCdWZmZXIgfCBVaW50OEFycmF5fSBidWZmZXIgLSB0aGUgYnVmZmVyIHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9IZXgoYnVmZmVyOiBCdWZmZXIgfCBVaW50OEFycmF5KTogc3RyaW5nIHtcbiAgcmV0dXJuIGhleC5lbmNvZGUoYnVmZmVyLCB0cnVlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGhleCBzdHJpbmcgb2YgdGhlIGdpdmVuIGJpZ2ludFxuICpcbiAqIEBwYXJhbSB7YmlnaW50fSBiaWdpbnQgLSB0aGUgYmlnaW50IHRvIGJlIGNvbnZlcnRlZCB0byBoZXhcbiAqIEByZXR1cm5zIHtzdHJpbmd9IC0gdGhlIGhleCB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gYmlnSW50VG9IZXgoYmlnaW50OiBiaWdpbnQpOiBzdHJpbmcge1xuICBjb25zdCBoZXggPSBiaWdpbnQudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gJzB4JyArICcwJy5zbGljZSgwLCBoZXgubGVuZ3RoICUgMikgKyBoZXg7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYmFzZTU4IGRlY29kZWQgc3RyaW5nIGlzIGVxdWFsZSB0byBsZW5ndGhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgLSBzdHJpbmcgdG8gYmUgY2hlY2tlZFxuICogQHBhcmFtIHtudW1iZXJ9IGxlbmd0aCAtIGV4cGVjdGVkIGRlY29kZWQgbGVuZ3RoXG4gKiBAcmV0dXJuIHtib29sZWFufSBpZiB0aGUgc3RyaW5nIGNhbiBkZWNvZGVkIGFzIGJhc2U1OCBhbmQgbWF0Y2ggdGhlIGV4cGVjdGVkIGxlbmd0aFxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Jhc2U1OCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIHJldHVybiAhIXZhbHVlICYmIGJzNTguZGVjb2RlKHZhbHVlKS5sZW5ndGggPT09IGxlbmd0aDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHVybnMgYSBVaW50OEFycmF5IG9mIHRoZSBnaXZlbiBoZXggc3RyaW5nXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0ciAtIHRoZSBoZXggc3RyaW5nIHRvIGJlIGNvbnZlcnRlZFxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgVWludDhBcnJheSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9VaW50OEFycmF5KHN0cjogc3RyaW5nKTogVWludDhBcnJheSB7XG4gIHJldHVybiBoZXguZGVjb2RlKHN0cik7XG59XG4iXX0=
@@ -0,0 +1,49 @@
1
+ /// <reference types="node" />
2
+ export interface HdKeypair {
3
+ key: Buffer;
4
+ chainCode: Buffer;
5
+ }
6
+ /**
7
+ * Heirarchical determinisitic key derivation for the ed25519 elliptic curve,
8
+ * as defined in SLIP-0010.
9
+ *
10
+ * https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0005.md
11
+ * https://github.com/satoshilabs/slips/blob/master/slip-0010.md
12
+ */
13
+ export declare class Ed25519KeyDeriver {
14
+ /**
15
+ * This key derivation code was copied and adapted from:
16
+ * https://github.com/chatch/stellar-hd-wallet/blob/612c12325ca9047dce460016fb7d148f55f575ca/src/hd-key.js
17
+ *
18
+ * There have been some slight modifications to improve typescript support.
19
+ *
20
+ * The original ed25519-hd-key module is licensed under "GPL-3".
21
+ */
22
+ private static readonly ED25519_CURVE;
23
+ private static readonly HARDENED_OFFSET;
24
+ private static readonly PATH_REGEX;
25
+ /**
26
+ * Derive a SLIP-0010 key given a path and master key seed.
27
+ *
28
+ * @param path derivation path
29
+ * @param seed key seed
30
+ */
31
+ static derivePath(path: string, seed: string): HdKeypair;
32
+ /**
33
+ * Generate a SLIP-0010 master key from the entropy seed
34
+ *
35
+ * @param seed master key seed used to recreate master key
36
+ */
37
+ private static getMasterKeyFromSeed;
38
+ /**
39
+ * Calculate a child private key given the parent key, the chain code, and the child index.
40
+ *
41
+ * @param key parent key
42
+ * @param chainCode chain code for parent key
43
+ * @param index index of child to derive
44
+ */
45
+ private static CKDPriv;
46
+ private static replaceDerive;
47
+ private static isValidPath;
48
+ }
49
+ //# sourceMappingURL=ed25519KeyDeriver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ed25519KeyDeriver.d.ts","sourceRoot":"","sources":["../../../../src/account-lib/util/ed25519KeyDeriver.ts"],"names":[],"mappings":";AAKA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;OAOG;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAkB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAc;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAEpE;;;;;OAKG;WACW,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS;IAY/D;;;;OAIG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAWnC;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,OAAO;IAatB,OAAO,CAAC,MAAM,CAAC,aAAa,CAA+D;IAC3F,OAAO,CAAC,MAAM,CAAC,WAAW;CAM3B"}
@@ -0,0 +1,87 @@
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.Ed25519KeyDeriver = void 0;
7
+ /**
8
+ * @prettier
9
+ */
10
+ const create_hmac_1 = __importDefault(require("create-hmac"));
11
+ /**
12
+ * Heirarchical determinisitic key derivation for the ed25519 elliptic curve,
13
+ * as defined in SLIP-0010.
14
+ *
15
+ * https://github.com/stellar/stellar-protocol/blob/master/ecosystem/sep-0005.md
16
+ * https://github.com/satoshilabs/slips/blob/master/slip-0010.md
17
+ */
18
+ class Ed25519KeyDeriver {
19
+ /**
20
+ * Derive a SLIP-0010 key given a path and master key seed.
21
+ *
22
+ * @param path derivation path
23
+ * @param seed key seed
24
+ */
25
+ static derivePath(path, seed) {
26
+ if (!this.isValidPath(path)) {
27
+ throw new Error('Invalid derivation path');
28
+ }
29
+ const { key, chainCode } = this.getMasterKeyFromSeed(seed);
30
+ const segments = path.split('/').slice(1).map(this.replaceDerive);
31
+ return segments.reduce((parentKeys, segment) => this.CKDPriv(parentKeys, segment + Ed25519KeyDeriver.HARDENED_OFFSET), { key, chainCode });
32
+ }
33
+ /**
34
+ * Generate a SLIP-0010 master key from the entropy seed
35
+ *
36
+ * @param seed master key seed used to recreate master key
37
+ */
38
+ static getMasterKeyFromSeed(seed) {
39
+ const hmac = create_hmac_1.default('sha512', Ed25519KeyDeriver.ED25519_CURVE);
40
+ const I = hmac.update(Buffer.from(seed, 'hex')).digest();
41
+ const IL = I.slice(0, 32);
42
+ const IR = I.slice(32);
43
+ return {
44
+ key: IL,
45
+ chainCode: IR,
46
+ };
47
+ }
48
+ /**
49
+ * Calculate a child private key given the parent key, the chain code, and the child index.
50
+ *
51
+ * @param key parent key
52
+ * @param chainCode chain code for parent key
53
+ * @param index index of child to derive
54
+ */
55
+ static CKDPriv({ key, chainCode }, index) {
56
+ const indexBuffer = Buffer.allocUnsafe(4);
57
+ indexBuffer.writeUInt32BE(index, 0);
58
+ const data = Buffer.concat([Buffer.alloc(1, 0), key, indexBuffer]);
59
+ const I = create_hmac_1.default('sha512', chainCode).update(data).digest();
60
+ const IL = I.slice(0, 32);
61
+ const IR = I.slice(32);
62
+ return {
63
+ key: IL,
64
+ chainCode: IR,
65
+ };
66
+ }
67
+ static isValidPath(path) {
68
+ if (!Ed25519KeyDeriver.PATH_REGEX.test(path)) {
69
+ return false;
70
+ }
71
+ return !path.split('/').slice(1).map(this.replaceDerive).some(isNaN);
72
+ }
73
+ }
74
+ exports.Ed25519KeyDeriver = Ed25519KeyDeriver;
75
+ /**
76
+ * This key derivation code was copied and adapted from:
77
+ * https://github.com/chatch/stellar-hd-wallet/blob/612c12325ca9047dce460016fb7d148f55f575ca/src/hd-key.js
78
+ *
79
+ * There have been some slight modifications to improve typescript support.
80
+ *
81
+ * The original ed25519-hd-key module is licensed under "GPL-3".
82
+ */
83
+ Ed25519KeyDeriver.ED25519_CURVE = 'ed25519 seed';
84
+ Ed25519KeyDeriver.HARDENED_OFFSET = 0x80000000;
85
+ Ed25519KeyDeriver.PATH_REGEX = new RegExp("^m(\\/[0-9]+')+$");
86
+ Ed25519KeyDeriver.replaceDerive = (val) => parseInt(val.replace("'", ''), 10);
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWQyNTUxOUtleURlcml2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYWNjb3VudC1saWIvdXRpbC9lZDI1NTE5S2V5RGVyaXZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7R0FFRztBQUNILDhEQUFxQztBQU9yQzs7Ozs7O0dBTUc7QUFDSCxNQUFhLGlCQUFpQjtJQWM1Qjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1NBQzVDO1FBQ0QsTUFBTSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNsRSxPQUFPLFFBQVEsQ0FBQyxNQUFNLENBQ3BCLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQyxFQUM5RixFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FDbkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQVk7UUFDOUMsTUFBTSxJQUFJLEdBQUcscUJBQVUsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDbkUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3pELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdkIsT0FBTztZQUNMLEdBQUcsRUFBRSxFQUFFO1lBQ1AsU0FBUyxFQUFFLEVBQUU7U0FDZCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFhLEVBQUUsS0FBYTtRQUNqRSxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUNuRSxNQUFNLENBQUMsR0FBRyxxQkFBVSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixPQUFPO1lBQ0wsR0FBRyxFQUFFLEVBQUU7WUFDUCxTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUM7SUFDSixDQUFDO0lBR08sTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFZO1FBQ3JDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzVDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkUsQ0FBQzs7QUExRUgsOENBMkVDO0FBMUVDOzs7Ozs7O0dBT0c7QUFFcUIsK0JBQWEsR0FBRyxjQUFjLENBQUM7QUFDL0IsaUNBQWUsR0FBRyxVQUFVLENBQUM7QUFDN0IsNEJBQVUsR0FBRyxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBd0RyRCwrQkFBYSxHQUFHLENBQUMsR0FBVyxFQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgY3JlYXRlSG1hYyBmcm9tICdjcmVhdGUtaG1hYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGRLZXlwYWlyIHtcbiAga2V5OiBCdWZmZXI7XG4gIGNoYWluQ29kZTogQnVmZmVyO1xufVxuXG4vKipcbiAqIEhlaXJhcmNoaWNhbCBkZXRlcm1pbmlzaXRpYyBrZXkgZGVyaXZhdGlvbiBmb3IgdGhlIGVkMjU1MTkgZWxsaXB0aWMgY3VydmUsXG4gKiBhcyBkZWZpbmVkIGluIFNMSVAtMDAxMC5cbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vc3RlbGxhci9zdGVsbGFyLXByb3RvY29sL2Jsb2IvbWFzdGVyL2Vjb3N5c3RlbS9zZXAtMDAwNS5tZFxuICogaHR0cHM6Ly9naXRodWIuY29tL3NhdG9zaGlsYWJzL3NsaXBzL2Jsb2IvbWFzdGVyL3NsaXAtMDAxMC5tZFxuICovXG5leHBvcnQgY2xhc3MgRWQyNTUxOUtleURlcml2ZXIge1xuICAvKipcbiAgICogVGhpcyBrZXkgZGVyaXZhdGlvbiBjb2RlIHdhcyBjb3BpZWQgYW5kIGFkYXB0ZWQgZnJvbTpcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL2NoYXRjaC9zdGVsbGFyLWhkLXdhbGxldC9ibG9iLzYxMmMxMjMyNWNhOTA0N2RjZTQ2MDAxNmZiN2QxNDhmNTVmNTc1Y2Evc3JjL2hkLWtleS5qc1xuICAgKlxuICAgKiBUaGVyZSBoYXZlIGJlZW4gc29tZSBzbGlnaHQgbW9kaWZpY2F0aW9ucyB0byBpbXByb3ZlIHR5cGVzY3JpcHQgc3VwcG9ydC5cbiAgICpcbiAgICogVGhlIG9yaWdpbmFsIGVkMjU1MTktaGQta2V5IG1vZHVsZSBpcyBsaWNlbnNlZCB1bmRlciBcIkdQTC0zXCIuXG4gICAqL1xuXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEVEMjU1MTlfQ1VSVkUgPSAnZWQyNTUxOSBzZWVkJztcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSEFSREVORURfT0ZGU0VUID0gMHg4MDAwMDAwMDtcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgUEFUSF9SRUdFWCA9IG5ldyBSZWdFeHAoXCJebShcXFxcL1swLTldKycpKyRcIik7XG5cbiAgLyoqXG4gICAqIERlcml2ZSBhIFNMSVAtMDAxMCBrZXkgZ2l2ZW4gYSBwYXRoIGFuZCBtYXN0ZXIga2V5IHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIGRlcml2YXRpb24gcGF0aFxuICAgKiBAcGFyYW0gc2VlZCBrZXkgc2VlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZXJpdmVQYXRoKHBhdGg6IHN0cmluZywgc2VlZDogc3RyaW5nKTogSGRLZXlwYWlyIHtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZFBhdGgocGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkZXJpdmF0aW9uIHBhdGgnKTtcbiAgICB9XG4gICAgY29uc3QgeyBrZXksIGNoYWluQ29kZSB9ID0gdGhpcy5nZXRNYXN0ZXJLZXlGcm9tU2VlZChzZWVkKTtcbiAgICBjb25zdCBzZWdtZW50cyA9IHBhdGguc3BsaXQoJy8nKS5zbGljZSgxKS5tYXAodGhpcy5yZXBsYWNlRGVyaXZlKTtcbiAgICByZXR1cm4gc2VnbWVudHMucmVkdWNlKFxuICAgICAgKHBhcmVudEtleXMsIHNlZ21lbnQpID0+IHRoaXMuQ0tEUHJpdihwYXJlbnRLZXlzLCBzZWdtZW50ICsgRWQyNTUxOUtleURlcml2ZXIuSEFSREVORURfT0ZGU0VUKSxcbiAgICAgIHsga2V5LCBjaGFpbkNvZGUgfVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgYSBTTElQLTAwMTAgbWFzdGVyIGtleSBmcm9tIHRoZSBlbnRyb3B5IHNlZWRcbiAgICpcbiAgICogQHBhcmFtIHNlZWQgbWFzdGVyIGtleSBzZWVkIHVzZWQgdG8gcmVjcmVhdGUgbWFzdGVyIGtleVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0TWFzdGVyS2V5RnJvbVNlZWQoc2VlZDogc3RyaW5nKSB7XG4gICAgY29uc3QgaG1hYyA9IGNyZWF0ZUhtYWMoJ3NoYTUxMicsIEVkMjU1MTlLZXlEZXJpdmVyLkVEMjU1MTlfQ1VSVkUpO1xuICAgIGNvbnN0IEkgPSBobWFjLnVwZGF0ZShCdWZmZXIuZnJvbShzZWVkLCAnaGV4JykpLmRpZ2VzdCgpO1xuICAgIGNvbnN0IElMID0gSS5zbGljZSgwLCAzMik7XG4gICAgY29uc3QgSVIgPSBJLnNsaWNlKDMyKTtcbiAgICByZXR1cm4ge1xuICAgICAga2V5OiBJTCxcbiAgICAgIGNoYWluQ29kZTogSVIsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgYSBjaGlsZCBwcml2YXRlIGtleSBnaXZlbiB0aGUgcGFyZW50IGtleSwgdGhlIGNoYWluIGNvZGUsIGFuZCB0aGUgY2hpbGQgaW5kZXguXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgcGFyZW50IGtleVxuICAgKiBAcGFyYW0gY2hhaW5Db2RlIGNoYWluIGNvZGUgZm9yIHBhcmVudCBrZXlcbiAgICogQHBhcmFtIGluZGV4IGluZGV4IG9mIGNoaWxkIHRvIGRlcml2ZVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgQ0tEUHJpdih7IGtleSwgY2hhaW5Db2RlIH06IEhkS2V5cGFpciwgaW5kZXg6IG51bWJlcik6IEhkS2V5cGFpciB7XG4gICAgY29uc3QgaW5kZXhCdWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUoNCk7XG4gICAgaW5kZXhCdWZmZXIud3JpdGVVSW50MzJCRShpbmRleCwgMCk7XG4gICAgY29uc3QgZGF0YSA9IEJ1ZmZlci5jb25jYXQoW0J1ZmZlci5hbGxvYygxLCAwKSwga2V5LCBpbmRleEJ1ZmZlcl0pO1xuICAgIGNvbnN0IEkgPSBjcmVhdGVIbWFjKCdzaGE1MTInLCBjaGFpbkNvZGUpLnVwZGF0ZShkYXRhKS5kaWdlc3QoKTtcbiAgICBjb25zdCBJTCA9IEkuc2xpY2UoMCwgMzIpO1xuICAgIGNvbnN0IElSID0gSS5zbGljZSgzMik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGtleTogSUwsXG4gICAgICBjaGFpbkNvZGU6IElSLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyByZXBsYWNlRGVyaXZlID0gKHZhbDogc3RyaW5nKTogbnVtYmVyID0+IHBhcnNlSW50KHZhbC5yZXBsYWNlKFwiJ1wiLCAnJyksIDEwKTtcbiAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZFBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgaWYgKCFFZDI1NTE5S2V5RGVyaXZlci5QQVRIX1JFR0VYLnRlc3QocGF0aCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuICFwYXRoLnNwbGl0KCcvJykuc2xpY2UoMSkubWFwKHRoaXMucmVwbGFjZURlcml2ZSkuc29tZShpc05hTik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ /**
5
+ * BitGoJS includes some custom hand-rolled bip32 derivation logic in `bitcoin.ts`, which sadly
6
+ * has numerous bugs.
7
+ *
8
+ * One of the effects is that the methods accept invalid bip32 paths:
9
+ * - the `m` prefix is ignored ('m/0' === '0')
10
+ * - path components that cannot be parsed as base-10 numbers are mapped to `0` ('0/x' === '0/0')
11
+ * - path components with trailing characters after numerals are accepted, trailing characters
12
+ * are ignored ('1x' === '1')
13
+ *
14
+ * This probably does not cover everything but it should cover most bugs encountered in our code.
15
+ *
16
+ * This method attempts to convert a "legacy path", which may be invalid, to a standard bip32 path:
17
+ * meaning the result should be equivalent to the input path when passed to either our custom
18
+ * derivation log or when passed to a standard bip32 library.
19
+ *
20
+ * @param path - legacy path
21
+ * @return string - somewhat sanitized path that can be passed to standard bip32 libraries
22
+ */
23
+ export declare function sanitizeLegacyPath(path: string): string;
24
+ //# sourceMappingURL=bip32path.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bip32path.d.ts","sourceRoot":"","sources":["../../../src/api/bip32path.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkBvD"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ /**
3
+ * @prettier
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.sanitizeLegacyPath = void 0;
7
+ /**
8
+ * BitGoJS includes some custom hand-rolled bip32 derivation logic in `bitcoin.ts`, which sadly
9
+ * has numerous bugs.
10
+ *
11
+ * One of the effects is that the methods accept invalid bip32 paths:
12
+ * - the `m` prefix is ignored ('m/0' === '0')
13
+ * - path components that cannot be parsed as base-10 numbers are mapped to `0` ('0/x' === '0/0')
14
+ * - path components with trailing characters after numerals are accepted, trailing characters
15
+ * are ignored ('1x' === '1')
16
+ *
17
+ * This probably does not cover everything but it should cover most bugs encountered in our code.
18
+ *
19
+ * This method attempts to convert a "legacy path", which may be invalid, to a standard bip32 path:
20
+ * meaning the result should be equivalent to the input path when passed to either our custom
21
+ * derivation log or when passed to a standard bip32 library.
22
+ *
23
+ * @param path - legacy path
24
+ * @return string - somewhat sanitized path that can be passed to standard bip32 libraries
25
+ */
26
+ function sanitizeLegacyPath(path) {
27
+ const parts = path
28
+ .split('/')
29
+ .filter((p) => p !== '')
30
+ .filter((p, i) => i !== 0 || p !== 'm')
31
+ .map((p) => {
32
+ const hardened = p.slice(-1) === "'";
33
+ const v = parseInt(p.slice(0, hardened ? -1 : undefined), 10);
34
+ if (Number.isNaN(v)) {
35
+ return '0';
36
+ }
37
+ return String(v) + (hardened ? "'" : '');
38
+ });
39
+ if (parts.length === 0) {
40
+ throw new Error(`empty path`);
41
+ }
42
+ return parts.join('/');
43
+ }
44
+ exports.sanitizeLegacyPath = sanitizeLegacyPath;
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlwMzJwYXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9iaXAzMnBhdGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOzs7QUFFSDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxNQUFNLEtBQUssR0FBYSxJQUFJO1NBQ3pCLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDVixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDdkIsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDO1NBQ3RDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ1QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQztRQUNyQyxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ25CLE9BQU8sR0FBRyxDQUFDO1NBQ1o7UUFDRCxPQUFPLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUMsQ0FBQztJQUVMLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7UUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztLQUMvQjtJQUNELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBbEJELGdEQWtCQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cblxuLyoqXG4gKiBCaXRHb0pTIGluY2x1ZGVzIHNvbWUgY3VzdG9tIGhhbmQtcm9sbGVkIGJpcDMyIGRlcml2YXRpb24gbG9naWMgaW4gYGJpdGNvaW4udHNgLCB3aGljaCBzYWRseVxuICogaGFzIG51bWVyb3VzIGJ1Z3MuXG4gKlxuICogT25lIG9mIHRoZSBlZmZlY3RzIGlzIHRoYXQgdGhlIG1ldGhvZHMgYWNjZXB0IGludmFsaWQgYmlwMzIgcGF0aHM6XG4gKiAtIHRoZSBgbWAgcHJlZml4IGlzIGlnbm9yZWQgKCdtLzAnID09PSAnMCcpXG4gKiAtIHBhdGggY29tcG9uZW50cyB0aGF0IGNhbm5vdCBiZSBwYXJzZWQgYXMgYmFzZS0xMCBudW1iZXJzIGFyZSBtYXBwZWQgdG8gYDBgICgnMC94JyA9PT0gJzAvMCcpXG4gKiAtIHBhdGggY29tcG9uZW50cyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgYWZ0ZXIgbnVtZXJhbHMgYXJlIGFjY2VwdGVkLCB0cmFpbGluZyBjaGFyYWN0ZXJzXG4gKiAgIGFyZSBpZ25vcmVkICgnMXgnID09PSAnMScpXG4gKlxuICogVGhpcyBwcm9iYWJseSBkb2VzIG5vdCBjb3ZlciBldmVyeXRoaW5nIGJ1dCBpdCBzaG91bGQgY292ZXIgbW9zdCBidWdzIGVuY291bnRlcmVkIGluIG91ciBjb2RlLlxuICpcbiAqIFRoaXMgbWV0aG9kIGF0dGVtcHRzIHRvIGNvbnZlcnQgYSBcImxlZ2FjeSBwYXRoXCIsIHdoaWNoIG1heSBiZSBpbnZhbGlkLCB0byBhIHN0YW5kYXJkIGJpcDMyIHBhdGg6XG4gKiBtZWFuaW5nIHRoZSByZXN1bHQgc2hvdWxkIGJlIGVxdWl2YWxlbnQgdG8gdGhlIGlucHV0IHBhdGggd2hlbiBwYXNzZWQgdG8gZWl0aGVyIG91ciBjdXN0b21cbiAqIGRlcml2YXRpb24gbG9nIG9yIHdoZW4gcGFzc2VkIHRvIGEgc3RhbmRhcmQgYmlwMzIgbGlicmFyeS5cbiAqXG4gKiBAcGFyYW0gcGF0aCAtIGxlZ2FjeSBwYXRoXG4gKiBAcmV0dXJuIHN0cmluZyAtIHNvbWV3aGF0IHNhbml0aXplZCBwYXRoIHRoYXQgY2FuIGJlIHBhc3NlZCB0byBzdGFuZGFyZCBiaXAzMiBsaWJyYXJpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNhbml0aXplTGVnYWN5UGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBwYXRoXG4gICAgLnNwbGl0KCcvJylcbiAgICAuZmlsdGVyKChwKSA9PiBwICE9PSAnJylcbiAgICAuZmlsdGVyKChwLCBpKSA9PiBpICE9PSAwIHx8IHAgIT09ICdtJylcbiAgICAubWFwKChwKSA9PiB7XG4gICAgICBjb25zdCBoYXJkZW5lZCA9IHAuc2xpY2UoLTEpID09PSBcIidcIjtcbiAgICAgIGNvbnN0IHYgPSBwYXJzZUludChwLnNsaWNlKDAsIGhhcmRlbmVkID8gLTEgOiB1bmRlZmluZWQpLCAxMCk7XG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKHYpKSB7XG4gICAgICAgIHJldHVybiAnMCc7XG4gICAgICB9XG4gICAgICByZXR1cm4gU3RyaW5nKHYpICsgKGhhcmRlbmVkID8gXCInXCIgOiAnJyk7XG4gICAgfSk7XG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgZW1wdHkgcGF0aGApO1xuICB9XG4gIHJldHVybiBwYXJ0cy5qb2luKCcvJyk7XG59XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './bip32path';
2
+ export * from './types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
@@ -10,6 +10,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
10
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./environments"), exports);
13
+ __exportStar(require("./bip32path"), exports);
14
14
  __exportStar(require("./types"), exports);
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdjIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsaURBQStCO0FBQy9CLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZW52aXJvbm1lbnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QjtBQUM1QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2JpcDMycGF0aCc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJztcbiJdfQ==