@bitgo-beta/sdk-core 8.2.1-beta.211 → 8.2.1-beta.2110

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 (806) hide show
  1. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +0 -1
  2. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
  3. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +3 -3
  4. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  5. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +4 -3
  6. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +1 -0
  7. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
  8. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +43 -31
  9. package/dist/src/account-lib/baseCoin/enum.d.ts +59 -5
  10. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  11. package/dist/src/account-lib/baseCoin/enum.js +112 -10
  12. package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
  13. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  14. package/dist/src/account-lib/baseCoin/errors.js +8 -2
  15. package/dist/src/account-lib/baseCoin/iface.d.ts +19 -35
  16. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  17. package/dist/src/account-lib/baseCoin/iface.js +26 -18
  18. package/dist/src/account-lib/baseCoin/index.d.ts +1 -1
  19. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
  20. package/dist/src/account-lib/baseCoin/index.js +8 -5
  21. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts +88 -0
  22. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  23. package/dist/src/account-lib/baseCoin/messages/baseMessage.js +154 -0
  24. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +67 -0
  25. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  26. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.js +144 -0
  27. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +33 -0
  28. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  29. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +45 -0
  30. package/dist/src/account-lib/baseCoin/messages/iface.d.ts +164 -0
  31. package/dist/src/account-lib/baseCoin/messages/iface.d.ts.map +1 -0
  32. package/dist/src/account-lib/baseCoin/messages/iface.js +3 -0
  33. package/dist/src/account-lib/baseCoin/messages/index.d.ts +6 -0
  34. package/dist/src/account-lib/baseCoin/messages/index.d.ts.map +1 -0
  35. package/dist/src/account-lib/baseCoin/messages/index.js +22 -0
  36. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts +3 -0
  37. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts.map +1 -0
  38. package/dist/src/account-lib/baseCoin/messages/simple/index.js +19 -0
  39. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts +13 -0
  40. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts.map +1 -0
  41. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.js +28 -0
  42. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts +21 -0
  43. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts.map +1 -0
  44. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.js +28 -0
  45. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -2
  46. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  47. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +38 -26
  48. package/dist/src/account-lib/index.d.ts +0 -1
  49. package/dist/src/account-lib/index.d.ts.map +1 -1
  50. package/dist/src/account-lib/index.js +23 -10
  51. package/dist/src/account-lib/mpc/index.d.ts +1 -1
  52. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  53. package/dist/src/account-lib/mpc/index.js +6 -2
  54. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -3
  55. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  56. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +376 -354
  57. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
  58. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  59. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  60. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  61. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +46 -53
  62. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  63. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  64. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +0 -1
  65. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  66. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +66 -69
  67. package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
  68. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
  69. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  70. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  71. package/dist/src/account-lib/mpc/tss/index.js +23 -9
  72. package/dist/src/account-lib/mpc/util.d.ts +7 -1
  73. package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
  74. package/dist/src/account-lib/mpc/util.js +24 -1
  75. package/dist/src/account-lib/staking/index.js +6 -2
  76. package/dist/src/account-lib/staking/utils.js +3 -3
  77. package/dist/src/account-lib/util/crypto.d.ts +8 -2
  78. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  79. package/dist/src/account-lib/util/crypto.js +69 -38
  80. package/dist/src/api/bip32path.js +2 -3
  81. package/dist/src/api/index.js +6 -2
  82. package/dist/src/api/types.d.ts +37 -0
  83. package/dist/src/api/types.d.ts.map +1 -1
  84. package/dist/src/api/types.js +8 -1
  85. package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -1
  86. package/dist/src/bitgo/address-book/address-book.js +20 -12
  87. package/dist/src/bitgo/address-book/index.js +6 -2
  88. package/dist/src/bitgo/address-book/types.d.ts +36 -36
  89. package/dist/src/bitgo/address-book/types.d.ts.map +1 -1
  90. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +123 -13
  91. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  92. package/dist/src/bitgo/baseCoin/baseCoin.js +200 -16
  93. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +337 -33
  94. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  95. package/dist/src/bitgo/baseCoin/iBaseCoin.js +14 -3
  96. package/dist/src/bitgo/baseCoin/index.js +6 -2
  97. package/dist/src/bitgo/bip32util.d.ts +3 -16
  98. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  99. package/dist/src/bitgo/bip32util.js +4 -56
  100. package/dist/src/bitgo/bitcoin.d.ts +0 -1
  101. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  102. package/dist/src/bitgo/bitcoin.js +26 -13
  103. package/dist/src/bitgo/bitgoBase.d.ts +17 -4
  104. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  105. package/dist/src/bitgo/bitgoBase.js +1 -1
  106. package/dist/src/bitgo/coinFactory.d.ts +24 -3
  107. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  108. package/dist/src/bitgo/coinFactory.js +35 -3
  109. package/dist/src/bitgo/config.d.ts +3 -101
  110. package/dist/src/bitgo/config.d.ts.map +1 -1
  111. package/dist/src/bitgo/config.js +26 -15
  112. package/dist/src/bitgo/defi/defiVault.d.ts +171 -0
  113. package/dist/src/bitgo/defi/defiVault.d.ts.map +1 -0
  114. package/dist/src/bitgo/defi/defiVault.js +445 -0
  115. package/dist/src/bitgo/defi/iDefiVault.d.ts +101 -0
  116. package/dist/src/bitgo/defi/iDefiVault.d.ts.map +1 -0
  117. package/dist/src/bitgo/defi/iDefiVault.js +6 -0
  118. package/dist/src/bitgo/defi/index.d.ts +3 -0
  119. package/dist/src/bitgo/defi/index.d.ts.map +1 -0
  120. package/dist/src/bitgo/defi/index.js +22 -0
  121. package/dist/src/bitgo/ecdh.d.ts +0 -1
  122. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  123. package/dist/src/bitgo/ecdh.js +26 -13
  124. package/dist/src/bitgo/enterprise/enterprise.d.ts +9 -4
  125. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  126. package/dist/src/bitgo/enterprise/enterprise.js +47 -21
  127. package/dist/src/bitgo/enterprise/enterprises.js +27 -13
  128. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +5 -3
  129. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  130. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  131. package/dist/src/bitgo/enterprise/index.js +6 -2
  132. package/dist/src/bitgo/environments.d.ts +73 -3
  133. package/dist/src/bitgo/environments.d.ts.map +1 -1
  134. package/dist/src/bitgo/environments.js +415 -34
  135. package/dist/src/bitgo/errors.d.ts +189 -1
  136. package/dist/src/bitgo/errors.d.ts.map +1 -1
  137. package/dist/src/bitgo/errors.js +187 -3
  138. package/dist/src/bitgo/evm/evmUtils.d.ts +26 -0
  139. package/dist/src/bitgo/evm/evmUtils.d.ts.map +1 -0
  140. package/dist/src/bitgo/evm/evmUtils.js +50 -0
  141. package/dist/src/bitgo/index.d.ts +6 -1
  142. package/dist/src/bitgo/index.d.ts.map +1 -1
  143. package/dist/src/bitgo/index.js +32 -11
  144. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
  145. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
  146. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
  147. package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
  148. package/dist/src/bitgo/internal/index.js +6 -2
  149. package/dist/src/bitgo/internal/internal.js +5 -6
  150. package/dist/src/bitgo/internal/keycard.d.ts +13 -8
  151. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -1
  152. package/dist/src/bitgo/internal/keycard.js +63 -48
  153. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +14 -0
  154. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
  155. package/dist/src/bitgo/keychain/decryptKeychain.js +36 -0
  156. package/dist/src/bitgo/keychain/iKeychains.d.ts +180 -11
  157. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  158. package/dist/src/bitgo/keychain/iKeychains.js +2 -2
  159. package/dist/src/bitgo/keychain/index.d.ts +1 -0
  160. package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
  161. package/dist/src/bitgo/keychain/index.js +7 -2
  162. package/dist/src/bitgo/keychain/keychains.d.ts +106 -13
  163. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  164. package/dist/src/bitgo/keychain/keychains.js +423 -72
  165. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
  166. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  167. package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
  168. package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
  169. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
  170. package/dist/src/bitgo/legacyBitcoin.js +27 -13
  171. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts +7 -0
  172. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts.map +1 -0
  173. package/dist/src/bitgo/lightning/lightningWalletUtil.js +25 -0
  174. package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
  175. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
  176. package/dist/src/bitgo/market/index.js +6 -2
  177. package/dist/src/bitgo/market/markets.js +23 -9
  178. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +5 -1
  179. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  180. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
  181. package/dist/src/bitgo/pendingApproval/index.js +6 -2
  182. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
  183. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  184. package/dist/src/bitgo/pendingApproval/pendingApproval.js +246 -111
  185. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
  186. package/dist/src/bitgo/proofs/WalletProofs.d.ts +19 -0
  187. package/dist/src/bitgo/proofs/WalletProofs.d.ts.map +1 -0
  188. package/dist/src/bitgo/proofs/WalletProofs.js +37 -0
  189. package/dist/src/bitgo/proofs/index.d.ts +2 -0
  190. package/dist/src/bitgo/proofs/index.d.ts.map +1 -0
  191. package/dist/src/bitgo/proofs/index.js +6 -0
  192. package/dist/src/bitgo/proofs/types.d.ts +80 -0
  193. package/dist/src/bitgo/proofs/types.d.ts.map +1 -0
  194. package/dist/src/bitgo/proofs/types.js +80 -0
  195. package/dist/src/bitgo/recovery/index.js +6 -2
  196. package/dist/src/bitgo/recovery/initiate.d.ts +13 -3
  197. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  198. package/dist/src/bitgo/recovery/initiate.js +49 -41
  199. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts +13 -0
  200. package/dist/src/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  201. package/dist/src/bitgo/safe/derivableEd25519Pub.js +35 -0
  202. package/dist/src/bitgo/safe/iSafe.d.ts +124 -0
  203. package/dist/src/bitgo/safe/iSafe.d.ts.map +1 -0
  204. package/dist/src/bitgo/safe/iSafe.js +3 -0
  205. package/dist/src/bitgo/safe/iSafes.d.ts +94 -0
  206. package/dist/src/bitgo/safe/iSafes.d.ts.map +1 -0
  207. package/dist/src/bitgo/safe/iSafes.js +3 -0
  208. package/dist/src/bitgo/safe/index.d.ts +8 -0
  209. package/dist/src/bitgo/safe/index.d.ts.map +1 -0
  210. package/dist/src/bitgo/safe/index.js +24 -0
  211. package/dist/src/bitgo/safe/recovery.d.ts +105 -0
  212. package/dist/src/bitgo/safe/recovery.d.ts.map +1 -0
  213. package/dist/src/bitgo/safe/recovery.js +178 -0
  214. package/dist/src/bitgo/safe/rootCoin.d.ts +15 -0
  215. package/dist/src/bitgo/safe/rootCoin.d.ts.map +1 -0
  216. package/dist/src/bitgo/safe/rootCoin.js +47 -0
  217. package/dist/src/bitgo/safe/safe.d.ts +88 -0
  218. package/dist/src/bitgo/safe/safe.d.ts.map +1 -0
  219. package/dist/src/bitgo/safe/safe.js +409 -0
  220. package/dist/src/bitgo/safe/safes.d.ts +102 -0
  221. package/dist/src/bitgo/safe/safes.d.ts.map +1 -0
  222. package/dist/src/bitgo/safe/safes.js +281 -0
  223. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +136 -0
  224. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
  225. package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
  226. package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
  227. package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
  228. package/dist/src/bitgo/staking/goStakingWallet.js +141 -0
  229. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
  230. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
  231. package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
  232. package/dist/src/bitgo/staking/iStakingWallet.d.ts +161 -8
  233. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  234. package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
  235. package/dist/src/bitgo/staking/index.d.ts +3 -0
  236. package/dist/src/bitgo/staking/index.d.ts.map +1 -1
  237. package/dist/src/bitgo/staking/index.js +9 -2
  238. package/dist/src/bitgo/staking/stakingWallet.d.ts +21 -8
  239. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  240. package/dist/src/bitgo/staking/stakingWallet.js +153 -7
  241. package/dist/src/bitgo/trading/iTradingAccount.d.ts +13 -1
  242. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  243. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  244. package/dist/src/bitgo/trading/index.d.ts +1 -0
  245. package/dist/src/bitgo/trading/index.d.ts.map +1 -1
  246. package/dist/src/bitgo/trading/index.js +7 -2
  247. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
  248. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
  249. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
  250. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
  251. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
  252. package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
  253. package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
  254. package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
  255. package/dist/src/bitgo/trading/network/decrypt.js +23 -0
  256. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
  257. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
  258. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
  259. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
  260. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
  261. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
  262. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
  263. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
  264. package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
  265. package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
  266. package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
  267. package/dist/src/bitgo/trading/network/encrypt.js +58 -0
  268. package/dist/src/bitgo/trading/network/index.d.ts +2 -0
  269. package/dist/src/bitgo/trading/network/index.d.ts.map +1 -1
  270. package/dist/src/bitgo/trading/network/index.js +8 -2
  271. package/dist/src/bitgo/trading/network/network.d.ts +4 -3
  272. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -1
  273. package/dist/src/bitgo/trading/network/network.js +24 -27
  274. package/dist/src/bitgo/trading/network/types.d.ts +79 -46
  275. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -1
  276. package/dist/src/bitgo/trading/network/types.js +1 -1
  277. package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
  278. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
  279. package/dist/src/bitgo/trading/network/utils.js +54 -0
  280. package/dist/src/bitgo/trading/tradingAccount.d.ts +15 -1
  281. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  282. package/dist/src/bitgo/trading/tradingAccount.js +55 -7
  283. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +49 -0
  284. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  285. package/dist/src/bitgo/tss/bitgoPubKeys.js +92 -0
  286. package/dist/src/bitgo/tss/common.d.ts +41 -6
  287. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  288. package/dist/src/bitgo/tss/common.js +127 -17
  289. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
  290. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  291. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
  292. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
  293. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  294. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +167 -0
  295. package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
  296. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  297. package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
  298. package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
  299. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  300. package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
  301. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -6
  302. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  303. package/dist/src/bitgo/tss/eddsa/eddsa.js +47 -40
  304. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts +42 -0
  305. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  306. package/dist/src/bitgo/tss/eddsa/eddsaMPCv2.js +104 -0
  307. package/dist/src/bitgo/tss/eddsa/index.js +23 -9
  308. package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
  309. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
  310. package/dist/src/bitgo/tss/index.d.ts +3 -2
  311. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  312. package/dist/src/bitgo/tss/index.js +26 -10
  313. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts +79 -0
  314. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  315. package/dist/src/bitgo/tss/redpallas/redpallasMPCv2.js +179 -0
  316. package/dist/src/bitgo/tss/types.d.ts +3 -3
  317. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  318. package/dist/src/bitgo/tss/types.js +2 -2
  319. package/dist/src/bitgo/types.d.ts +3 -3
  320. package/dist/src/bitgo/types.d.ts.map +1 -1
  321. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +10 -0
  322. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  323. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +76 -14
  324. package/dist/src/bitgo/utils/codecProps.js +24 -11
  325. package/dist/src/bitgo/utils/codecs.d.ts +11 -0
  326. package/dist/src/bitgo/utils/codecs.d.ts.map +1 -0
  327. package/dist/src/bitgo/utils/codecs.js +59 -0
  328. package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
  329. package/dist/src/bitgo/utils/decode.js +30 -16
  330. package/dist/src/bitgo/utils/index.d.ts +5 -2
  331. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  332. package/dist/src/bitgo/utils/index.js +28 -11
  333. package/dist/src/bitgo/utils/messageTypes.d.ts +46 -0
  334. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
  335. package/dist/src/bitgo/utils/messageTypes.js +23 -0
  336. package/dist/src/bitgo/utils/mpcUtils.d.ts +4 -4
  337. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  338. package/dist/src/bitgo/utils/mpcUtils.js +208 -14
  339. package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
  340. package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
  341. package/dist/src/bitgo/utils/notEmpty.js +7 -0
  342. package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -7
  343. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  344. package/dist/src/bitgo/utils/opengpgUtils.js +79 -62
  345. package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -1
  346. package/dist/src/bitgo/utils/postWithCodec.js +3 -41
  347. package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
  348. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
  349. package/dist/src/bitgo/utils/promise-utils.js +2 -3
  350. package/dist/src/bitgo/utils/siws.d.ts +17 -0
  351. package/dist/src/bitgo/utils/siws.d.ts.map +1 -0
  352. package/dist/src/bitgo/utils/siws.js +171 -0
  353. package/dist/src/bitgo/utils/transactionUtils.d.ts +9 -0
  354. package/dist/src/bitgo/utils/transactionUtils.d.ts.map +1 -0
  355. package/dist/src/bitgo/utils/transactionUtils.js +29 -0
  356. package/dist/src/bitgo/utils/triple.d.ts +1 -1
  357. package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
  358. package/dist/src/bitgo/utils/triple.js +2 -3
  359. package/dist/src/bitgo/utils/tss/addressVerification.d.ts +62 -0
  360. package/dist/src/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  361. package/dist/src/bitgo/utils/tss/addressVerification.js +93 -0
  362. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +99 -17
  363. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  364. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +321 -45
  365. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +456 -55
  366. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  367. package/dist/src/bitgo/utils/tss/baseTypes.js +47 -22
  368. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
  369. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
  370. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
  371. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
  372. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
  373. package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
  374. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +25 -51
  375. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  376. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +173 -246
  377. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +240 -0
  378. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  379. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1076 -0
  380. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +16 -0
  381. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
  382. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +37 -0
  383. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts +69 -0
  384. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.d.ts.map +1 -0
  385. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaVrfMPCv2.js +442 -0
  386. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +5 -0
  387. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  388. package/dist/src/bitgo/utils/tss/ecdsa/index.js +11 -2
  389. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +7 -10
  390. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  391. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  392. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +125 -0
  393. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
  394. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
  395. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts +21 -0
  396. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.d.ts.map +1 -0
  397. package/dist/src/bitgo/utils/tss/eddsa/SMC/utils.js +119 -0
  398. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts +18 -0
  399. package/dist/src/bitgo/utils/tss/eddsa/base.d.ts.map +1 -0
  400. package/dist/src/bitgo/utils/tss/eddsa/base.js +64 -0
  401. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +43 -11
  402. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  403. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +261 -96
  404. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +260 -0
  405. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  406. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2.js +995 -0
  407. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts +11 -0
  408. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.d.ts.map +1 -0
  409. package/dist/src/bitgo/utils/tss/eddsa/eddsaMPCv2KeyGenSender.js +26 -0
  410. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +42 -0
  411. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  412. package/dist/src/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +267 -0
  413. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts +5 -0
  414. package/dist/src/bitgo/utils/tss/eddsa/index.d.ts.map +1 -1
  415. package/dist/src/bitgo/utils/tss/eddsa/index.js +30 -8
  416. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +15 -7
  417. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  418. package/dist/src/bitgo/utils/tss/eddsa/types.js +1 -1
  419. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts +75 -0
  420. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.d.ts.map +1 -0
  421. package/dist/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2.js +44 -0
  422. package/dist/src/bitgo/utils/tss/index.d.ts +7 -0
  423. package/dist/src/bitgo/utils/tss/index.d.ts.map +1 -1
  424. package/dist/src/bitgo/utils/tss/index.js +31 -10
  425. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts +40 -0
  426. package/dist/src/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  427. package/dist/src/bitgo/utils/tss/keyShareEnvelope.js +103 -0
  428. package/dist/src/bitgo/utils/tss/keyVerification.d.ts +45 -0
  429. package/dist/src/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
  430. package/dist/src/bitgo/utils/tss/keyVerification.js +192 -0
  431. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts +23 -0
  432. package/dist/src/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  433. package/dist/src/bitgo/utils/tss/preHashedSignable.js +26 -0
  434. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts +42 -0
  435. package/dist/src/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  436. package/dist/src/bitgo/utils/tss/recipientUtils.js +179 -0
  437. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts +29 -0
  438. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.d.ts.map +1 -0
  439. package/dist/src/bitgo/utils/tss/redpallas/SMC/utils.js +126 -0
  440. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts +4 -0
  441. package/dist/src/bitgo/utils/tss/redpallas/index.d.ts.map +1 -0
  442. package/dist/src/bitgo/utils/tss/redpallas/index.js +20 -0
  443. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +27 -0
  444. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  445. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2.js +43 -0
  446. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts +45 -0
  447. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.d.ts.map +1 -0
  448. package/dist/src/bitgo/utils/tss/redpallas/redpallasMPCv2KeyGenSender.js +55 -0
  449. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts +8 -0
  450. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.d.ts.map +1 -0
  451. package/dist/src/bitgo/utils/tss/serializedTxHexVerify.js +13 -0
  452. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts +12 -0
  453. package/dist/src/bitgo/utils/tss/signableConsistency.d.ts.map +1 -0
  454. package/dist/src/bitgo/utils/tss/signableConsistency.js +9 -0
  455. package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
  456. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
  457. package/dist/src/bitgo/utils/txRequest.js +49 -0
  458. package/dist/src/bitgo/utils/util.js +24 -10
  459. package/dist/src/bitgo/utils/wallet.d.ts +7 -0
  460. package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
  461. package/dist/src/bitgo/utils/wallet.js +48 -0
  462. package/dist/src/bitgo/v1Wallets.d.ts +170 -0
  463. package/dist/src/bitgo/v1Wallets.d.ts.map +1 -0
  464. package/dist/src/bitgo/v1Wallets.js +3 -0
  465. package/dist/src/bitgo/wallet/BuildParams.d.ts +91 -1
  466. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  467. package/dist/src/bitgo/wallet/BuildParams.js +96 -11
  468. package/dist/src/bitgo/wallet/iWallet.d.ts +630 -33
  469. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  470. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  471. package/dist/src/bitgo/wallet/iWallets.d.ts +311 -16
  472. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  473. package/dist/src/bitgo/wallet/iWallets.js +84 -3
  474. package/dist/src/bitgo/wallet/index.d.ts +1 -0
  475. package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
  476. package/dist/src/bitgo/wallet/index.js +7 -2
  477. package/dist/src/bitgo/wallet/safeKeychain.d.ts +75 -0
  478. package/dist/src/bitgo/wallet/safeKeychain.d.ts.map +1 -0
  479. package/dist/src/bitgo/wallet/safeKeychain.js +151 -0
  480. package/dist/src/bitgo/wallet/wallet.d.ts +410 -27
  481. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  482. package/dist/src/bitgo/wallet/wallet.js +2516 -510
  483. package/dist/src/bitgo/wallet/wallets.d.ts +99 -4
  484. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  485. package/dist/src/bitgo/wallet/wallets.js +1256 -156
  486. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts +12 -0
  487. package/dist/src/bitgo/walletUtil/iMessageProvider.d.ts.map +1 -0
  488. package/dist/src/bitgo/walletUtil/iMessageProvider.js +3 -0
  489. package/dist/src/bitgo/walletUtil/index.d.ts +3 -0
  490. package/dist/src/bitgo/walletUtil/index.d.ts.map +1 -0
  491. package/dist/src/bitgo/walletUtil/index.js +19 -0
  492. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts +22 -0
  493. package/dist/src/bitgo/walletUtil/midnightMessageProvider.d.ts.map +1 -0
  494. package/dist/src/bitgo/walletUtil/midnightMessageProvider.js +95 -0
  495. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts +9 -0
  496. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.d.ts.map +1 -0
  497. package/dist/src/bitgo/walletUtil/signAccountBasedMidnightClaimMessages.js +72 -0
  498. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts +15 -0
  499. package/dist/src/bitgo/walletUtil/utxoMessageProof.d.ts.map +1 -0
  500. package/dist/src/bitgo/walletUtil/utxoMessageProof.js +40 -0
  501. package/dist/src/bitgo/webauthn/base64url.d.ts +16 -0
  502. package/dist/src/bitgo/webauthn/base64url.d.ts.map +1 -0
  503. package/dist/src/bitgo/webauthn/base64url.js +27 -0
  504. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts +18 -0
  505. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.d.ts.map +1 -0
  506. package/dist/src/bitgo/webauthn/deriveEnterpriseSalt.js +26 -0
  507. package/dist/src/bitgo/webauthn/derivePassword.d.ts +11 -0
  508. package/dist/src/bitgo/webauthn/derivePassword.d.ts.map +1 -0
  509. package/dist/src/bitgo/webauthn/derivePassword.js +16 -0
  510. package/dist/src/bitgo/webauthn/index.d.ts +5 -0
  511. package/dist/src/bitgo/webauthn/index.d.ts.map +1 -0
  512. package/dist/src/bitgo/webauthn/index.js +21 -0
  513. package/dist/src/bitgo/webauthn/types.d.ts +18 -0
  514. package/dist/src/bitgo/webauthn/types.d.ts.map +1 -0
  515. package/dist/src/bitgo/webauthn/types.js +3 -0
  516. package/dist/src/bitgo/webhook/index.js +6 -2
  517. package/dist/src/bitgo/webhook/webhooks.js +23 -9
  518. package/dist/src/coins/fiat.d.ts +45 -0
  519. package/dist/src/coins/fiat.d.ts.map +1 -0
  520. package/dist/src/coins/fiat.js +94 -0
  521. package/dist/src/coins/index.d.ts +1 -6
  522. package/dist/src/coins/index.d.ts.map +1 -1
  523. package/dist/src/coins/index.js +7 -8
  524. package/dist/src/coins/ofc.d.ts +21 -2
  525. package/dist/src/coins/ofc.d.ts.map +1 -1
  526. package/dist/src/coins/ofc.js +29 -3
  527. package/dist/src/coins/ofcToken.d.ts +15 -4
  528. package/dist/src/coins/ofcToken.d.ts.map +1 -1
  529. package/dist/src/coins/ofcToken.js +43 -5
  530. package/dist/src/coins/susd.d.ts +3 -2
  531. package/dist/src/coins/susd.d.ts.map +1 -1
  532. package/dist/src/coins/susd.js +5 -1
  533. package/dist/src/common.js +27 -13
  534. package/dist/src/index.d.ts +9 -1
  535. package/dist/src/index.d.ts.map +1 -1
  536. package/dist/src/index.js +40 -11
  537. package/dist/src/lightning.d.ts +20 -0
  538. package/dist/src/lightning.d.ts.map +1 -0
  539. package/dist/src/lightning.js +13 -0
  540. package/dist/src/units.js +5 -6
  541. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
  542. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  543. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +207 -0
  544. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
  545. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  546. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +174 -0
  547. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
  548. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  549. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +108 -0
  550. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
  551. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
  552. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +69 -0
  553. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +91 -29
  554. package/dist/test/unit/account-lib/mpc/util.d.ts +2 -0
  555. package/dist/test/unit/account-lib/mpc/util.d.ts.map +1 -0
  556. package/dist/test/unit/account-lib/mpc/util.js +53 -0
  557. package/dist/test/unit/bitgo/address-book/address-book.d.ts +2 -0
  558. package/dist/test/unit/bitgo/address-book/address-book.d.ts.map +1 -0
  559. package/dist/test/unit/bitgo/address-book/address-book.js +159 -0
  560. package/dist/test/unit/bitgo/defi/defiVault.d.ts +2 -0
  561. package/dist/test/unit/bitgo/defi/defiVault.d.ts.map +1 -0
  562. package/dist/test/unit/bitgo/defi/defiVault.js +863 -0
  563. package/dist/test/unit/bitgo/environment.d.ts +2 -0
  564. package/dist/test/unit/bitgo/environment.d.ts.map +1 -0
  565. package/dist/test/unit/bitgo/environment.js +38 -0
  566. package/dist/test/unit/bitgo/errors.d.ts +2 -0
  567. package/dist/test/unit/bitgo/errors.d.ts.map +1 -0
  568. package/dist/test/unit/bitgo/errors.js +262 -0
  569. package/dist/test/unit/bitgo/keychain/keychains.d.ts +2 -0
  570. package/dist/test/unit/bitgo/keychain/keychains.d.ts.map +1 -0
  571. package/dist/test/unit/bitgo/keychain/keychains.js +426 -0
  572. package/dist/test/unit/bitgo/recovery/initiate.d.ts +2 -0
  573. package/dist/test/unit/bitgo/recovery/initiate.d.ts.map +1 -0
  574. package/dist/test/unit/bitgo/recovery/initiate.js +159 -0
  575. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts +2 -0
  576. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.d.ts.map +1 -0
  577. package/dist/test/unit/bitgo/safe/derivableEd25519Pub.js +133 -0
  578. package/dist/test/unit/bitgo/safe/fixtures/derivableEd25519Pub.json +72 -0
  579. package/dist/test/unit/bitgo/safe/recovery.d.ts +2 -0
  580. package/dist/test/unit/bitgo/safe/recovery.d.ts.map +1 -0
  581. package/dist/test/unit/bitgo/safe/recovery.js +437 -0
  582. package/dist/test/unit/bitgo/safe/rootCoin.d.ts +2 -0
  583. package/dist/test/unit/bitgo/safe/rootCoin.d.ts.map +1 -0
  584. package/dist/test/unit/bitgo/safe/rootCoin.js +13 -0
  585. package/dist/test/unit/bitgo/safe/safe.d.ts +2 -0
  586. package/dist/test/unit/bitgo/safe/safe.d.ts.map +1 -0
  587. package/dist/test/unit/bitgo/safe/safe.js +585 -0
  588. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts +2 -0
  589. package/dist/test/unit/bitgo/safe/safeDerivation.d.ts.map +1 -0
  590. package/dist/test/unit/bitgo/safe/safeDerivation.js +75 -0
  591. package/dist/test/unit/bitgo/safe/safes.d.ts +2 -0
  592. package/dist/test/unit/bitgo/safe/safes.d.ts.map +1 -0
  593. package/dist/test/unit/bitgo/safe/safes.js +376 -0
  594. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
  595. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
  596. package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
  597. package/dist/test/unit/bitgo/trading/network/network.test.d.ts +2 -0
  598. package/dist/test/unit/bitgo/trading/network/network.test.d.ts.map +1 -0
  599. package/dist/test/unit/bitgo/trading/network/network.test.js +136 -0
  600. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts +2 -0
  601. package/dist/test/unit/bitgo/trading/tradingAccount.d.ts.map +1 -0
  602. package/dist/test/unit/bitgo/trading/tradingAccount.js +192 -0
  603. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts +2 -0
  604. package/dist/test/unit/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  605. package/dist/test/unit/bitgo/tss/bitgoPubKeys.js +66 -0
  606. package/dist/test/unit/bitgo/tss/common.d.ts +2 -0
  607. package/dist/test/unit/bitgo/tss/common.d.ts.map +1 -0
  608. package/dist/test/unit/bitgo/tss/common.js +77 -0
  609. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  610. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  611. package/dist/test/unit/bitgo/tss/redpallas/redpallasMPCv2.js +249 -0
  612. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -4
  613. package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
  614. package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
  615. package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
  616. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts +2 -0
  617. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.d.ts.map +1 -0
  618. package/dist/test/unit/bitgo/utils/mpcUtils.unwrap.js +109 -0
  619. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts +2 -0
  620. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.d.ts.map +1 -0
  621. package/dist/test/unit/bitgo/utils/mpcUtils.wrapApprove.js +106 -0
  622. package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
  623. package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
  624. package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
  625. package/dist/test/unit/bitgo/utils/postWithCodec.js +32 -34
  626. package/dist/test/unit/bitgo/utils/siws.d.ts +2 -0
  627. package/dist/test/unit/bitgo/utils/siws.d.ts.map +1 -0
  628. package/dist/test/unit/bitgo/utils/siws.js +206 -0
  629. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts +2 -0
  630. package/dist/test/unit/bitgo/utils/tss/addressVerification.d.ts.map +1 -0
  631. package/dist/test/unit/bitgo/utils/tss/addressVerification.js +251 -0
  632. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts +2 -0
  633. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -0
  634. package/dist/test/unit/bitgo/utils/tss/baseTSSUtils.js +348 -0
  635. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts +2 -0
  636. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.d.ts.map +1 -0
  637. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaEncryptionVersion.js +94 -0
  638. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +2 -0
  639. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  640. package/dist/test/unit/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +1068 -0
  641. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts +5 -0
  642. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.d.ts.map +1 -0
  643. package/dist/test/unit/bitgo/utils/tss/ecdsa/gpgKeys.js +36 -0
  644. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts +2 -0
  645. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.d.ts.map +1 -0
  646. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaExternalSigner.js +158 -0
  647. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts +2 -0
  648. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.d.ts.map +1 -0
  649. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaMPCv2.js +2410 -0
  650. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts +2 -0
  651. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.d.ts.map +1 -0
  652. package/dist/test/unit/bitgo/utils/tss/eddsa/eddsaVrfMPCv2.js +549 -0
  653. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts +2 -0
  654. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.d.ts.map +1 -0
  655. package/dist/test/unit/bitgo/utils/tss/eddsa/smcUtil.js +376 -0
  656. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts +2 -0
  657. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.d.ts.map +1 -0
  658. package/dist/test/unit/bitgo/utils/tss/keyShareEnvelope.js +83 -0
  659. package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts +2 -0
  660. package/dist/test/unit/bitgo/utils/tss/keyVerification.d.ts.map +1 -0
  661. package/dist/test/unit/bitgo/utils/tss/keyVerification.js +229 -0
  662. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts +2 -0
  663. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.d.ts.map +1 -0
  664. package/dist/test/unit/bitgo/utils/tss/preHashedSignable.js +55 -0
  665. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts +2 -0
  666. package/dist/test/unit/bitgo/utils/tss/recipientUtils.d.ts.map +1 -0
  667. package/dist/test/unit/bitgo/utils/tss/recipientUtils.js +498 -0
  668. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts +2 -0
  669. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.d.ts.map +1 -0
  670. package/dist/test/unit/bitgo/utils/tss/redpallas/redpallasMPCv2.js +80 -0
  671. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts +2 -0
  672. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.d.ts.map +1 -0
  673. package/dist/test/unit/bitgo/utils/tss/redpallas/smcUtil.js +279 -0
  674. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts +2 -0
  675. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.d.ts.map +1 -0
  676. package/dist/test/unit/bitgo/utils/tss/redpallasBitgoGpgKey.js +111 -0
  677. package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
  678. package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
  679. package/dist/test/unit/bitgo/utils/txRequest.js +179 -0
  680. package/dist/test/unit/bitgo/utils/wallet.d.ts +2 -0
  681. package/dist/test/unit/bitgo/utils/wallet.d.ts.map +1 -0
  682. package/dist/test/unit/bitgo/utils/wallet.js +55 -0
  683. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
  684. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
  685. package/dist/test/unit/bitgo/wallet/BuildParams.js +167 -0
  686. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +79 -9
  687. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts +2 -0
  688. package/dist/test/unit/bitgo/wallet/getAccountResources.d.ts.map +1 -0
  689. package/dist/test/unit/bitgo/wallet/getAccountResources.js +133 -0
  690. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts +2 -0
  691. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.d.ts.map +1 -0
  692. package/dist/test/unit/bitgo/wallet/getPotentialStuckTxs.js +88 -0
  693. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts +2 -0
  694. package/dist/test/unit/bitgo/wallet/getResourceDelegations.d.ts.map +1 -0
  695. package/dist/test/unit/bitgo/wallet/getResourceDelegations.js +118 -0
  696. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts +2 -0
  697. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.d.ts.map +1 -0
  698. package/dist/test/unit/bitgo/wallet/ofcWalletAddressCreation.js +141 -0
  699. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts +2 -0
  700. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.d.ts.map +1 -0
  701. package/dist/test/unit/bitgo/wallet/ofcWalletSignTransaction.js +185 -0
  702. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts +2 -0
  703. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.d.ts.map +1 -0
  704. package/dist/test/unit/bitgo/wallet/prebuildTransactionTypes.js +20 -0
  705. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts +3 -0
  706. package/dist/test/unit/bitgo/wallet/resourceManagement.d.ts.map +1 -0
  707. package/dist/test/unit/bitgo/wallet/resourceManagement.js +441 -0
  708. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts +5 -0
  709. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.d.ts.map +1 -0
  710. package/dist/test/unit/bitgo/wallet/safeGetUserPrv.js +671 -0
  711. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts +9 -0
  712. package/dist/test/unit/bitgo/wallet/safeShareWallet.d.ts.map +1 -0
  713. package/dist/test/unit/bitgo/wallet/safeShareWallet.js +303 -0
  714. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts +2 -0
  715. package/dist/test/unit/bitgo/wallet/tokenApproval.d.ts.map +1 -0
  716. package/dist/test/unit/bitgo/wallet/tokenApproval.js +210 -0
  717. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts +2 -0
  718. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.d.ts.map +1 -0
  719. package/dist/test/unit/bitgo/wallet/walletEvmAddressCreation.js +181 -0
  720. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts +2 -0
  721. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.d.ts.map +1 -0
  722. package/dist/test/unit/bitgo/wallet/walletOptionsCodecs.js +69 -0
  723. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts +2 -0
  724. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.d.ts.map +1 -0
  725. package/dist/test/unit/bitgo/wallet/walletTssAddressVerification.js +320 -0
  726. package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts +2 -0
  727. package/dist/test/unit/bitgo/wallet/walletVerifyKey.d.ts.map +1 -0
  728. package/dist/test/unit/bitgo/wallet/walletVerifyKey.js +160 -0
  729. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts +2 -0
  730. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.d.ts.map +1 -0
  731. package/dist/test/unit/bitgo/wallet/walletsEncryptionVersion.js +304 -0
  732. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts +2 -0
  733. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.d.ts.map +1 -0
  734. package/dist/test/unit/bitgo/wallet/walletsEvmKeyring.js +216 -0
  735. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts +2 -0
  736. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.d.ts.map +1 -0
  737. package/dist/test/unit/bitgo/wallet/walletsExternalSigner.js +853 -0
  738. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts +2 -0
  739. package/dist/test/unit/bitgo/wallet/walletsGoAccount.d.ts.map +1 -0
  740. package/dist/test/unit/bitgo/wallet/walletsGoAccount.js +150 -0
  741. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts +2 -0
  742. package/dist/test/unit/bitgo/wallet/walletsWebauthn.d.ts.map +1 -0
  743. package/dist/test/unit/bitgo/wallet/walletsWebauthn.js +201 -0
  744. package/dist/test/unit/coins/ofc.d.ts +2 -0
  745. package/dist/test/unit/coins/ofc.d.ts.map +1 -0
  746. package/dist/test/unit/coins/ofc.js +124 -0
  747. package/dist/test/unit/lightning.d.ts +2 -0
  748. package/dist/test/unit/lightning.d.ts.map +1 -0
  749. package/dist/test/unit/lightning.js +23 -0
  750. package/dist/test/unit/units.d.ts.map +1 -1
  751. package/dist/test/unit/units.js +64 -64
  752. package/dist/tsconfig.tsbuildinfo +1 -1
  753. package/package.json +25 -22
  754. package/.eslintignore +0 -5
  755. package/CHANGELOG.md +0 -1866
  756. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
  757. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
  758. package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
  759. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +0 -49
  760. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +0 -1
  761. package/dist/src/account-lib/util/ed25519KeyDeriver.js +0 -87
  762. package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
  763. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  764. package/dist/src/bitgo/lightning/iLightning.js +0 -106
  765. package/dist/src/bitgo/lightning/index.d.ts +0 -5
  766. package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
  767. package/dist/src/bitgo/lightning/index.js +0 -17
  768. package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
  769. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  770. package/dist/src/bitgo/lightning/lightning.js +0 -111
  771. package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
  772. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  773. package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
  774. package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
  775. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  776. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  777. package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
  778. package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
  779. package/dist/src/bitgo/utils/blsUtils.js +0 -237
  780. package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
  781. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
  782. package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
  783. package/dist/src/coins/fiateur.d.ts +0 -31
  784. package/dist/src/coins/fiateur.d.ts.map +0 -1
  785. package/dist/src/coins/fiateur.js +0 -57
  786. package/dist/src/coins/fiatgbp.d.ts +0 -31
  787. package/dist/src/coins/fiatgbp.d.ts.map +0 -1
  788. package/dist/src/coins/fiatgbp.js +0 -57
  789. package/dist/src/coins/fiatusd.d.ts +0 -31
  790. package/dist/src/coins/fiatusd.d.ts.map +0 -1
  791. package/dist/src/coins/fiatusd.js +0 -57
  792. package/dist/src/coins/tfiateur.d.ts +0 -11
  793. package/dist/src/coins/tfiateur.d.ts.map +0 -1
  794. package/dist/src/coins/tfiateur.js +0 -17
  795. package/dist/src/coins/tfiatgbp.d.ts +0 -11
  796. package/dist/src/coins/tfiatgbp.d.ts.map +0 -1
  797. package/dist/src/coins/tfiatgbp.js +0 -17
  798. package/dist/src/coins/tfiatusd.d.ts +0 -11
  799. package/dist/src/coins/tfiatusd.d.ts.map +0 -1
  800. package/dist/src/coins/tfiatusd.js +0 -17
  801. package/dist/src/openssl/index.d.ts +0 -5
  802. package/dist/src/openssl/index.d.ts.map +0 -1
  803. package/dist/src/openssl/index.js +0 -9
  804. package/dist/test/unit/openssl.d.ts +0 -2
  805. package/dist/test/unit/openssl.d.ts.map +0 -1
  806. package/dist/test/unit/openssl.js +0 -39
@@ -0,0 +1,437 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const assert_1 = __importDefault(require("assert"));
40
+ require("should");
41
+ const sinon = __importStar(require("sinon"));
42
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
43
+ const ed25519_1 = require("@noble/curves/ed25519");
44
+ const sjcl = __importStar(require("@bitgo-beta/sjcl"));
45
+ const sdk_lib_mpc_1 = require("@bitgo-beta/sdk-lib-mpc");
46
+ const keyShareEnvelope_1 = require("../../../../src/bitgo/utils/tss/keyShareEnvelope");
47
+ const errors_1 = require("../../../../src/bitgo/errors");
48
+ const recovery_1 = require("../../../../src/bitgo/safe/recovery");
49
+ const eddsa_1 = require("../../../../src/bitgo/tss/eddsa/eddsa");
50
+ const eddsaMPCv2_1 = require("../../../../src/bitgo/utils/tss/eddsa/eddsaMPCv2");
51
+ const PASSWORD = 'safe-password';
52
+ function makeMockBitGo(decryptImpl) {
53
+ return {
54
+ decrypt: sinon.stub().callsFake(async (params) => decryptImpl(params)),
55
+ };
56
+ }
57
+ /** A fake decrypt that only recognizes the user/backup tokens; any other input (e.g. a Box C public) throws. */
58
+ function makeDecryptMap(entries) {
59
+ return ({ password, input }) => {
60
+ password.should.equal(PASSWORD);
61
+ if (!(input in entries)) {
62
+ throw new Error(`unexpected decrypt input: ${input}`);
63
+ }
64
+ return entries[input];
65
+ };
66
+ }
67
+ function box(values) {
68
+ return JSON.stringify(values);
69
+ }
70
+ describe('decryptSafeKeycard', () => {
71
+ afterEach(() => {
72
+ sinon.restore();
73
+ });
74
+ it('decrypts onchain roots to strings and returns Box C verbatim', async () => {
75
+ const userBox = box({
76
+ secp256k1Multisig: 'enc-user-secp',
77
+ ed25519Multisig: 'enc-user-ed25519',
78
+ ecdsaMpc: 'enc-user-ecdsa',
79
+ eddsaMpc: 'enc-user-eddsa',
80
+ });
81
+ const backupBox = box({
82
+ secp256k1Multisig: 'enc-backup-secp',
83
+ ed25519Multisig: { prv: 'enc-backup-ed25519', chainCode: 'C'.repeat(52) },
84
+ ecdsaMpc: 'enc-backup-ecdsa',
85
+ eddsaMpc: 'enc-backup-eddsa',
86
+ });
87
+ const bitgoBox = box({
88
+ secp256k1Multisig: 'xpub-secp-bitgo',
89
+ ed25519Multisig: 'pub-ed25519-bitgo',
90
+ ecdsaMpc: 'common-ecdsa-bitgo',
91
+ eddsaMpc: 'common-eddsa-bitgo',
92
+ });
93
+ const mpcUser = (0, keyShareEnvelope_1.buildSafeMpcKeyEnvelopes)(Buffer.from('user-signing'), Buffer.from('user-reduced'), Buffer.from('user-vrf'));
94
+ const mpcBackup = (0, keyShareEnvelope_1.buildSafeMpcKeyEnvelopes)(Buffer.from('backup-signing'), Buffer.from('backup-reduced'), Buffer.from('backup-vrf'));
95
+ const bitgo = makeMockBitGo(makeDecryptMap({
96
+ 'enc-user-secp': 'xprv-user',
97
+ 'enc-backup-secp': 'xprv-backup',
98
+ 'enc-user-ed25519': 'S-user-seed',
99
+ 'enc-backup-ed25519': 'S-backup-seed',
100
+ 'enc-user-ecdsa': mpcUser.reducedEnvelope.toString('base64'),
101
+ 'enc-backup-ecdsa': mpcBackup.reducedEnvelope.toString('base64'),
102
+ 'enc-user-eddsa': mpcUser.reducedEnvelope.toString('base64'),
103
+ 'enc-backup-eddsa': mpcBackup.reducedEnvelope.toString('base64'),
104
+ }));
105
+ const result = await (0, recovery_1.decryptSafeKeycard)({
106
+ bitgo,
107
+ userKeyBox: userBox,
108
+ backupKeyBox: backupBox,
109
+ bitgoKeyBox: bitgoBox,
110
+ password: PASSWORD,
111
+ });
112
+ result.secp256k1Multisig.user.should.equal('xprv-user');
113
+ result.secp256k1Multisig.backup.should.equal('xprv-backup');
114
+ result.secp256k1Multisig.bitgo.should.equal('xpub-secp-bitgo');
115
+ result.ed25519Multisig.user.should.equal('S-user-seed');
116
+ result.ed25519Multisig.backup.prv.should.equal('S-backup-seed');
117
+ result.ed25519Multisig.backup.chainCode.should.equal('C'.repeat(52));
118
+ result.ed25519Multisig.bitgo.should.equal('pub-ed25519-bitgo');
119
+ result.ecdsaMpc.user.signing.toString('hex').should.equal(Buffer.from('user-reduced').toString('hex'));
120
+ result.ecdsaMpc.user.vrf.toString('hex').should.equal(Buffer.from('user-vrf').toString('hex'));
121
+ result.ecdsaMpc.backup.signing.toString('hex').should.equal(Buffer.from('backup-reduced').toString('hex'));
122
+ result.ecdsaMpc.backup.vrf.toString('hex').should.equal(Buffer.from('backup-vrf').toString('hex'));
123
+ result.ecdsaMpc.bitgo.should.equal('common-ecdsa-bitgo');
124
+ result.eddsaMpc.bitgo.should.equal('common-eddsa-bitgo');
125
+ // 4 slots × (user + backup) = 8 decrypts; BitGo (Box C) is never decrypted.
126
+ bitgo.decrypt.callCount.should.equal(8);
127
+ });
128
+ it('decrypts the seed from an object-form ed25519Multisig backup entry', async () => {
129
+ const userBox = box({
130
+ secp256k1Multisig: 'enc-user-secp',
131
+ ed25519Multisig: 'enc-user-ed25519',
132
+ ecdsaMpc: 'enc-user-ecdsa',
133
+ eddsaMpc: 'enc-user-eddsa',
134
+ });
135
+ const backupBox = JSON.stringify({
136
+ secp256k1Multisig: 'enc-backup-secp',
137
+ ed25519Multisig: { prv: 'enc-backup-ed25519', chainCode: 'A'.repeat(52) },
138
+ ecdsaMpc: 'enc-backup-ecdsa',
139
+ eddsaMpc: 'enc-backup-eddsa',
140
+ });
141
+ const bitgoBox = box({
142
+ secp256k1Multisig: 'xpub-secp-bitgo',
143
+ ed25519Multisig: 'pub-ed25519-bitgo',
144
+ ecdsaMpc: 'common-ecdsa-bitgo',
145
+ eddsaMpc: 'common-eddsa-bitgo',
146
+ });
147
+ const mpcUser = (0, keyShareEnvelope_1.buildSafeMpcKeyEnvelopes)(Buffer.from('user-signing'), Buffer.from('user-reduced'), Buffer.from('user-vrf'));
148
+ const mpcBackup = (0, keyShareEnvelope_1.buildSafeMpcKeyEnvelopes)(Buffer.from('backup-signing'), Buffer.from('backup-reduced'), Buffer.from('backup-vrf'));
149
+ const bitgo = makeMockBitGo(makeDecryptMap({
150
+ 'enc-user-secp': 'xprv-user',
151
+ 'enc-backup-secp': 'xprv-backup',
152
+ 'enc-user-ed25519': 'S-user-seed',
153
+ 'enc-backup-ed25519': 'S-backup-seed',
154
+ 'enc-user-ecdsa': mpcUser.reducedEnvelope.toString('base64'),
155
+ 'enc-backup-ecdsa': mpcBackup.reducedEnvelope.toString('base64'),
156
+ 'enc-user-eddsa': mpcUser.reducedEnvelope.toString('base64'),
157
+ 'enc-backup-eddsa': mpcBackup.reducedEnvelope.toString('base64'),
158
+ }));
159
+ const result = await (0, recovery_1.decryptSafeKeycard)({
160
+ bitgo,
161
+ userKeyBox: userBox,
162
+ backupKeyBox: backupBox,
163
+ bitgoKeyBox: bitgoBox,
164
+ password: PASSWORD,
165
+ });
166
+ result.ed25519Multisig.backup.prv.should.equal('S-backup-seed');
167
+ result.ed25519Multisig.backup.chainCode.should.equal('A'.repeat(52));
168
+ });
169
+ it('rejects an ed25519 chain-code entry in a non-backup slot (fail closed)', async () => {
170
+ const userBox = JSON.stringify({
171
+ secp256k1Multisig: { prv: 'enc-user-secp', chainCode: 'A'.repeat(52) },
172
+ ed25519Multisig: 'enc-user-ed25519',
173
+ ecdsaMpc: 'enc-user-ecdsa',
174
+ eddsaMpc: 'enc-user-eddsa',
175
+ });
176
+ await (0, recovery_1.decryptSafeKeycard)({
177
+ bitgo: makeMockBitGo(makeDecryptMap({})),
178
+ userKeyBox: userBox,
179
+ backupKeyBox: userBox,
180
+ bitgoKeyBox: userBox,
181
+ password: PASSWORD,
182
+ }).should.be.rejectedWith(/unexpected ed25519 chain-code entry/);
183
+ });
184
+ it('throws IncorrectPasswordError when decryption fails (wrong password)', async () => {
185
+ const userBox = box({
186
+ secp256k1Multisig: 'enc-user-secp',
187
+ ed25519Multisig: 'enc-user-ed25519',
188
+ ecdsaMpc: 'enc-user-ecdsa',
189
+ eddsaMpc: 'enc-user-eddsa',
190
+ });
191
+ const bitgo = makeMockBitGo(() => {
192
+ throw new Error('argon2: tag does not match');
193
+ });
194
+ await (0, recovery_1.decryptSafeKeycard)({
195
+ bitgo,
196
+ userKeyBox: userBox,
197
+ backupKeyBox: userBox,
198
+ bitgoKeyBox: userBox,
199
+ password: 'wrong-password',
200
+ }).should.be.rejectedWith(errors_1.IncorrectPasswordError);
201
+ });
202
+ });
203
+ const MPC_ROOT = { signing: Buffer.alloc(0), vrf: Buffer.alloc(0) };
204
+ function makeRoots(secp) {
205
+ return {
206
+ secp256k1Multisig: secp,
207
+ ed25519Multisig: { user: 'u', backup: { prv: 'b', chainCode: 'c' }, bitgo: 'g' },
208
+ ecdsaMpc: { user: MPC_ROOT, backup: MPC_ROOT, bitgo: 'g' },
209
+ eddsaMpc: { user: MPC_ROOT, backup: MPC_ROOT, bitgo: 'g' },
210
+ };
211
+ }
212
+ describe('deriveSafeWalletKeys', () => {
213
+ const userRoot = utxo_lib_1.bip32.fromSeed(Buffer.from('000102030405060708090a0b0c0d0e0f', 'hex'));
214
+ const backupRoot = utxo_lib_1.bip32.fromSeed(Buffer.from('1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100', 'hex'));
215
+ const bitgoRoot = utxo_lib_1.bip32
216
+ .fromSeed(Buffer.from('2f2e2d2c2b2a292827262524232221201f1e1d1c1b1a19181716151413121110', 'hex'))
217
+ .neutered();
218
+ const roots = makeRoots({
219
+ user: userRoot.toBase58(),
220
+ backup: backupRoot.toBase58(),
221
+ bitgo: bitgoRoot.toBase58(),
222
+ });
223
+ it('derives the BIP44 child triplet for slot 1', async () => {
224
+ const result = await (0, recovery_1.deriveSafeWalletKeys)({ coin: 'btc', slot: 'secp256k1Multisig', account: 0, roots });
225
+ if (result.slot !== 'secp256k1Multisig') {
226
+ throw new Error('expected secp256k1Multisig slot');
227
+ }
228
+ result.path.should.equal("m/44'/0'/1'/0'");
229
+ result.keys.user.prv.should.equal(userRoot.derivePath("m/44'/0'/1'/0'").toBase58());
230
+ result.keys.user.pub.should.equal(userRoot.derivePath("m/44'/0'/1'/0'").neutered().toBase58());
231
+ result.keys.backup.prv.should.equal(backupRoot.derivePath('m/44/0/1/0').toBase58());
232
+ result.keys.bitgo.pub.should.equal(bitgoRoot.derivePath('m/44/0/1/0').toBase58());
233
+ });
234
+ it('varies the path with the account', async () => {
235
+ const result = await (0, recovery_1.deriveSafeWalletKeys)({ coin: 'btc', slot: 'secp256k1Multisig', account: 2, roots });
236
+ result.path.should.equal("m/44'/0'/1'/2'");
237
+ });
238
+ it('derives the ecdsaMpc child via the DKLs ceremony', async () => {
239
+ const [userDkg, backupDkg] = await sdk_lib_mpc_1.DklsUtils.generateDKGKeyShares();
240
+ const [vrfUser, vrfBackup] = await sdk_lib_mpc_1.DklsVrfUtils.generateVrfDKGKeyShares();
241
+ const mpcRoots = {
242
+ ...roots,
243
+ ecdsaMpc: {
244
+ user: { signing: userDkg.getReducedKeyShare(), vrf: vrfUser.getKeyShare() },
245
+ backup: { signing: backupDkg.getReducedKeyShare(), vrf: vrfBackup.getKeyShare() },
246
+ bitgo: 'g',
247
+ },
248
+ };
249
+ const result = await (0, recovery_1.deriveSafeWalletKeys)({ coin: 'eth', slot: 'ecdsaMpc', account: 0, roots: mpcRoots });
250
+ if (result.slot !== 'ecdsaMpc') {
251
+ throw new Error('expected ecdsaMpc slot');
252
+ }
253
+ result.path.should.equal("m/44'/60'/3'/0'");
254
+ result.keys.commonKeychain.should.be.a.String();
255
+ result.keys.user.should.be.a.String();
256
+ result.keys.backup.should.be.a.String();
257
+ });
258
+ it('derives and signs the eddsaMpc slot-4 BIP44 child', async function () {
259
+ const [userDkg, backupDkg, bitgoDkg] = await sdk_lib_mpc_1.MPSUtil.generateEdDsaDKGKeyShares();
260
+ const [vrfUser, vrfBackup, vrfBitgo] = await sdk_lib_mpc_1.MpsVrfUtils.generateVrfDKGKeyShares();
261
+ const mpcRoots = {
262
+ ...roots,
263
+ eddsaMpc: {
264
+ user: { signing: userDkg.getReducedKeyShare(), vrf: vrfUser.getKeyShare() },
265
+ backup: { signing: backupDkg.getReducedKeyShare(), vrf: vrfBackup.getKeyShare() },
266
+ bitgo: bitgoDkg.getCommonKeychain(),
267
+ },
268
+ };
269
+ const result = await (0, recovery_1.deriveSafeWalletKeys)({ coin: 'sol', slot: 'eddsaMpc', account: 0, roots: mpcRoots });
270
+ if (result.slot !== 'eddsaMpc') {
271
+ throw new Error('expected eddsaMpc slot');
272
+ }
273
+ result.path.should.equal("m/44'/501'/4'/0'");
274
+ // Play mint's user↔BitGo role locally at the same BIP44 path; no dev-minted wallet is needed.
275
+ const userMint = new sdk_lib_mpc_1.MpsDerive.Derive(3, 2, 0, userDkg.getKeyShare(), vrfUser.getKeyShare(), result.path);
276
+ const bitgoMint = new sdk_lib_mpc_1.MpsDerive.Derive(3, 2, 2, bitgoDkg.getKeyShare(), vrfBitgo.getKeyShare(), result.path);
277
+ const [userRound0, bitgoRound0] = await Promise.all([userMint.initDerive(), bitgoMint.initDerive()]);
278
+ const [userRound1] = userMint.handleIncomingMessages([bitgoRound0]);
279
+ const [bitgoRound1] = bitgoMint.handleIncomingMessages([userRound0]);
280
+ if (!userRound1 || !bitgoRound1) {
281
+ throw new Error('expected user and BitGo derive round-1 messages');
282
+ }
283
+ assert_1.default.deepStrictEqual(userMint.handleIncomingMessages([bitgoRound1]), []);
284
+ assert_1.default.deepStrictEqual(bitgoMint.handleIncomingMessages([userRound1]), []);
285
+ const mintedChildCommonKeychain = userMint.getCommonKeychain();
286
+ assert_1.default.strictEqual(bitgoMint.getCommonKeychain(), mintedChildCommonKeychain);
287
+ assert_1.default.strictEqual(result.keys.commonKeychain, mintedChildCommonKeychain);
288
+ const walletPassphrase = 'safe-recovery-passphrase';
289
+ const userKey = sjcl.encrypt(walletPassphrase, result.keys.user);
290
+ const backupKey = sjcl.encrypt(walletPassphrase, result.keys.backup);
291
+ const rootCommonKeychain = userDkg.getCommonKeychain();
292
+ await assert_1.default.rejects((0, eddsaMPCv2_1.signEddsaMpcV2RecoveryTx)({
293
+ message: Buffer.from('wrong keychain must fail'),
294
+ userKey,
295
+ backupKey,
296
+ walletPassphrase,
297
+ bitgoKey: rootCommonKeychain,
298
+ derivationPath: 'm/0',
299
+ }), /commonKeyChain from keycard does not match bitgoKey/);
300
+ const mpc = await (0, eddsa_1.getInitializedMpcInstance)();
301
+ for (const derivationPath of ['m/0', 'm/3']) {
302
+ const message = Buffer.from(`Safe EdDSA recovery ${derivationPath}`);
303
+ const signature = await (0, eddsaMPCv2_1.signEddsaMpcV2RecoveryTx)({
304
+ message,
305
+ userKey,
306
+ backupKey,
307
+ walletPassphrase,
308
+ bitgoKey: result.keys.commonKeychain,
309
+ derivationPath,
310
+ });
311
+ const derivedKeychain = mpc.deriveUnhardened(result.keys.commonKeychain, derivationPath);
312
+ const publicKeyBytes = Buffer.from(derivedKeychain.slice(0, 64), 'hex');
313
+ assert_1.default.strictEqual(ed25519_1.ed25519.verify(new Uint8Array(signature), new Uint8Array(message), new Uint8Array(publicKeyBytes)), true);
314
+ }
315
+ });
316
+ it('rejects the unsupported ed25519Multisig slot', async () => {
317
+ await (0, recovery_1.deriveSafeWalletKeys)({ coin: 'btc', slot: 'ed25519Multisig', account: 0, roots }).should.be.rejectedWith(/not supported yet/);
318
+ });
319
+ it('rejects a non-integer account', async () => {
320
+ await (0, recovery_1.deriveSafeWalletKeys)({ coin: 'btc', slot: 'secp256k1Multisig', account: 1.5, roots }).should.be.rejectedWith(/invalid account/);
321
+ });
322
+ });
323
+ describe('buildSafeRecoverKeyParams', () => {
324
+ afterEach(() => {
325
+ sinon.restore();
326
+ });
327
+ const userRoot = utxo_lib_1.bip32.fromSeed(Buffer.from('000102030405060708090a0b0c0d0e0f', 'hex'));
328
+ const backupRoot = utxo_lib_1.bip32.fromSeed(Buffer.from('1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100', 'hex'));
329
+ const bitgoRoot = utxo_lib_1.bip32
330
+ .fromSeed(Buffer.from('2f2e2d2c2b2a292827262524232221201f1e1d1c1b1a19181716151413121110', 'hex'))
331
+ .neutered();
332
+ const keys = {
333
+ user: { prv: userRoot.toBase58(), pub: userRoot.neutered().toBase58() },
334
+ backup: { prv: backupRoot.toBase58(), pub: backupRoot.neutered().toBase58() },
335
+ bitgo: { pub: bitgoRoot.toBase58() },
336
+ };
337
+ it('signed mode re-encrypts child xprvs under a single ephemeral passphrase', async () => {
338
+ const passphrases = [];
339
+ const encrypt = sinon.stub().callsFake(async ({ input, password, encryptionVersion }) => {
340
+ passphrases.push(password);
341
+ encryptionVersion.should.equal(1);
342
+ return `enc(${input})`;
343
+ });
344
+ const bitgo = { encrypt };
345
+ const result = await (0, recovery_1.buildSafeRecoverKeyParams)({
346
+ bitgo,
347
+ coin: 'btc',
348
+ slot: 'secp256k1Multisig',
349
+ keys,
350
+ mode: 'signed',
351
+ });
352
+ result.userKey.should.equal(`enc(${keys.user.prv})`);
353
+ result.backupKey.should.equal(`enc(${keys.backup.prv})`);
354
+ result.bitgoKey.should.equal(keys.bitgo.pub);
355
+ result.walletPassphrase.should.be.a.String();
356
+ passphrases.should.have.length(2);
357
+ passphrases[0].should.equal(passphrases[1]);
358
+ passphrases[0].should.equal(result.walletPassphrase);
359
+ encrypt.callCount.should.equal(2);
360
+ });
361
+ it('rejects non-private child keys in signed mode', async () => {
362
+ const bitgo = { encrypt: sinon.stub() };
363
+ await (0, recovery_1.buildSafeRecoverKeyParams)({
364
+ bitgo,
365
+ coin: 'btc',
366
+ slot: 'secp256k1Multisig',
367
+ keys: { user: { prv: keys.user.pub, pub: keys.user.pub }, backup: keys.backup, bitgo: keys.bitgo },
368
+ mode: 'signed',
369
+ }).should.be.rejectedWith(/must be private xprvs/);
370
+ });
371
+ it('unsigned mode returns pubs and never encrypts', async () => {
372
+ const encrypt = sinon.stub().callsFake(async () => {
373
+ throw new Error('encrypt should not be called');
374
+ });
375
+ const bitgo = { encrypt };
376
+ const result = await (0, recovery_1.buildSafeRecoverKeyParams)({
377
+ bitgo,
378
+ coin: 'btc',
379
+ slot: 'secp256k1Multisig',
380
+ keys,
381
+ mode: 'unsigned',
382
+ });
383
+ result.userKey.should.equal(keys.user.pub);
384
+ result.backupKey.should.equal(keys.backup.pub);
385
+ result.bitgoKey.should.equal(keys.bitgo.pub);
386
+ result.should.not.have.property('walletPassphrase');
387
+ encrypt.callCount.should.equal(0);
388
+ });
389
+ it('rejects unsupported slots', async () => {
390
+ const bitgo = { encrypt: sinon.stub() };
391
+ await (0, recovery_1.buildSafeRecoverKeyParams)({
392
+ bitgo,
393
+ coin: 'btc',
394
+ slot: 'eddsaMpc',
395
+ keys,
396
+ mode: 'signed',
397
+ }).should.be.rejectedWith(/not supported yet/);
398
+ });
399
+ });
400
+ describe('Safe ecdsaMpc derive → sign (gate)', function () {
401
+ it('derives a child, rebuilds 2-of-2 shares, and signs a message verified at m/0', async function () {
402
+ const [userDkg, backupDkg] = await sdk_lib_mpc_1.DklsUtils.generateDKGKeyShares();
403
+ const [vrfUser, vrfBackup] = await sdk_lib_mpc_1.DklsVrfUtils.generateVrfDKGKeyShares();
404
+ const rootCommonKeychain = sdk_lib_mpc_1.DklsTypes.getCommonKeychain(userDkg.getKeyShare());
405
+ const { commonKeychain, userChild, backupChild } = await sdk_lib_mpc_1.DklsVrfUtils.deriveSafeEcdsaMpcChild({
406
+ userRoot: { signing: userDkg.getReducedKeyShare(), vrf: vrfUser.getKeyShare() },
407
+ backupRoot: { signing: backupDkg.getReducedKeyShare(), vrf: vrfBackup.getKeyShare() },
408
+ account: 0,
409
+ coinType: 60,
410
+ safeSlotOrdinal: 3,
411
+ });
412
+ // The derived child must never be the root (the "root envelope in the child position" footgun).
413
+ commonKeychain.should.not.equal(rootCommonKeychain);
414
+ // Rebuild 2-of-2 keyshares from the derived reduced CBOR, exactly as the signer's retrofit does.
415
+ const toRetrofit = (b64) => {
416
+ const reduced = sdk_lib_mpc_1.DklsTypes.getDecodedReducedKeyShare(Buffer.from(b64, 'base64'));
417
+ return {
418
+ xShare: {
419
+ x: Buffer.from(reduced.prv).toString('hex'),
420
+ y: Buffer.from(reduced.pub).toString('hex'),
421
+ chaincode: Buffer.from(reduced.rootChainCode).toString('hex'),
422
+ },
423
+ xiList: reduced.xList.slice(0, 2),
424
+ };
425
+ };
426
+ const [user2of2, backup2of2] = await sdk_lib_mpc_1.DklsUtils.generate2of2KeyShares(toRetrofit(userChild), toRetrofit(backupChild));
427
+ const messageHash = Buffer.from('0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef', 'hex');
428
+ const userDsg = new sdk_lib_mpc_1.DklsDsg.Dsg(user2of2.getKeyShare(), 0, 'm/0', messageHash);
429
+ const backupDsg = new sdk_lib_mpc_1.DklsDsg.Dsg(backup2of2.getKeyShare(), 1, 'm/0', messageHash);
430
+ const signatureString = sdk_lib_mpc_1.DklsUtils.verifyAndConvertDklsSignature(messageHash, (await sdk_lib_mpc_1.DklsUtils.executeTillRound(5, userDsg, backupDsg)), commonKeychain, 'm/0', undefined, false);
431
+ // verifyAndConvertDklsSignature recovers the pubkey from the signature and checks it against
432
+ // deriveUnhardened(childCK, 'm/0'); it throws on mismatch, so a returned string is proof.
433
+ signatureString.should.be.a.String();
434
+ signatureString.should.match(/^\d+:[0-9a-f]+:[0-9a-f]+:[0-9a-f]+$/);
435
+ });
436
+ });
437
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3ZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9yZWNvdmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QixrQkFBZ0I7QUFDaEIsNkNBQStCO0FBQy9CLG1EQUE2QztBQUM3QyxtREFBZ0Q7QUFDaEQsdURBQXlDO0FBQ3pDLHlEQUF1SDtBQUN2SCx1RkFBNEY7QUFDNUYseURBQXNFO0FBQ3RFLGtFQUs2QztBQUU3QyxpRUFBa0Y7QUFDbEYsaUZBQTRGO0FBRTVGLE1BQU0sUUFBUSxHQUFHLGVBQWUsQ0FBQztBQUVqQyxTQUFTLGFBQWEsQ0FBQyxXQUFvRTtJQUN6RixPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQTJDLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUNwRixDQUFDO0FBQzVCLENBQUM7QUFFRCxnSEFBZ0g7QUFDaEgsU0FBUyxjQUFjLENBQUMsT0FBK0I7SUFDckQsT0FBTyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDN0IsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsR0FBRyxDQUFDLE1BS1o7SUFDQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFB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LE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNyRSxNQUFNLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFL0QsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDdkcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMzRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRyxNQUFNLENBQUMsUUFB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LFdBQVcsQ0FBQyxDQUFDO1FBQy9FLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDbkYsTUFBTSxlQUFlLEdBQUcsdUJBQVMsQ0FBQyw2QkFBNkIsQ0FDN0QsV0FBVyxFQUNYLENBQUMsTUFBTSx1QkFBUyxDQUFDLGdCQUFnQixDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQXdDLEVBQ2hHLGNBQWMsRUFDZCxLQUFLLEVBQ0wsU0FBUyxFQUNULEtBQUssQ0FDTixDQUFDO1FBRUYsNkZBQTZGO1FBQzdGLDBGQUEwRjtRQUMxRixlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMscUNBQXFDLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICdzaG91bGQnO1xuaW1wb3J0ICogYXMgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IHsgYmlwMzIgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBlZDI1NTE5IH0gZnJvbSAnQG5vYmxlL2N1cnZlcy9lZDI1NTE5JztcbmltcG9ydCAqIGFzIHNqY2wgZnJvbSAnQGJpdGdvLWJldGEvc2pjbCc7XG5pbXBvcnQgeyBEa2xzRHNnLCBEa2xzVHlwZXMsIERrbHNVdGlscywgRGtsc1ZyZlV0aWxzLCBNUFNVdGlsLCBNcHNEZXJpdmUsIE1wc1ZyZlV0aWxzIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHsgYnVpbGRTYWZlTXBjS2V5RW52ZWxvcGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3V0aWxzL3Rzcy9rZXlTaGFyZUVudmVsb3BlJztcbmltcG9ydCB7IEluY29ycmVjdFBhc3N3b3JkRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vZXJyb3JzJztcbmltcG9ydCB7XG4gIERlY3J5cHRlZFNhZmVSb290cyxcbiAgYnVpbGRTYWZlUmVjb3ZlcktleVBhcmFtcyxcbiAgZGVjcnlwdFNhZmVLZXljYXJkLFxuICBkZXJpdmVTYWZlV2FsbGV0S2V5cyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3NhZmUvcmVjb3ZlcnknO1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBnZXRJbml0aWFsaXplZE1wY0luc3RhbmNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3Rzcy9lZGRzYS9lZGRzYSc7XG5pbXBvcnQgeyBzaWduRWRkc2FNcGNWMlJlY292ZXJ5VHggfSBmcm9tICcuLi8uLi8uLi8uLi9zcmMvYml0Z28vdXRpbHMvdHNzL2VkZHNhL2VkZHNhTVBDdjInO1xuXG5jb25zdCBQQVNTV09SRCA9ICdzYWZlLXBhc3N3b3JkJztcblxuZnVuY3Rpb24gbWFrZU1vY2tCaXRHbyhkZWNyeXB0SW1wbDogKHBhcmFtczogeyBwYXNzd29yZDogc3RyaW5nOyBpbnB1dDogc3RyaW5nIH0pID0+IHN0cmluZyk6IEJpdEdvQmFzZSB7XG4gIHJldHVybiB7XG4gICAgZGVjcnlwdDogc2lub24uc3R1YigpLmNhbGxzRmFrZShhc3luYyAocGFyYW1zOiB7IHBhc3N3b3JkOiBzdHJpbmc7IGlucHV0OiBzdHJpbmcgfSkgPT4gZGVjcnlwdEltcGwocGFyYW1zKSksXG4gIH0gYXMgdW5rbm93biBhcyBCaXRHb0Jhc2U7XG59XG5cbi8qKiBBIGZha2UgZGVjcnlwdCB0aGF0IG9ubHkgcmVjb2duaXplcyB0aGUgdXNlci9iYWNrdXAgdG9rZW5zOyBhbnkgb3RoZXIgaW5wdXQgKGUuZy4gYSBCb3ggQyBwdWJsaWMpIHRocm93cy4gKi9cbmZ1bmN0aW9uIG1ha2VEZWNyeXB0TWFwKGVudHJpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiAocGFyYW1zOiB7IHBhc3N3b3JkOiBzdHJpbmc7IGlucHV0OiBzdHJpbmcgfSkgPT4gc3RyaW5nIHtcbiAgcmV0dXJuICh7IHBhc3N3b3JkLCBpbnB1dCB9KSA9PiB7XG4gICAgcGFzc3dvcmQuc2hvdWxkLmVxdWFsKFBBU1NXT1JEKTtcbiAgICBpZiAoIShpbnB1dCBpbiBlbnRyaWVzKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGB1bmV4cGVjdGVkIGRlY3J5cHQgaW5wdXQ6ICR7aW5wdXR9YCk7XG4gICAgfVxuICAgIHJldHVybiBlbnRyaWVzW2lucHV0XTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYm94KHZhbHVlczoge1xuICBzZWNwMjU2azFNdWx0aXNpZzogc3RyaW5nO1xuICBlZDI1NTE5TXVsdGlzaWc6IHN0cmluZyB8IHsgcHJ2OiBzdHJpbmc7IGNoYWluQ29kZTogc3RyaW5nIH07XG4gIGVjZHNhTXBjOiBzdHJpbmc7XG4gIGVkZHNhTXBjOiBzdHJpbmc7XG59KTogc3RyaW5nIHtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlcyk7XG59XG5cbmRlc2NyaWJlKCdkZWNyeXB0U2FmZUtleWNhcmQnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnZGVjcnlwdHMgb25jaGFpbiByb290cyB0byBzdHJpbmdzIGFuZCByZXR1cm5zIEJveCBDIHZlcmJhdGltJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXJCb3ggPSBib3goe1xuICAgICAgc2VjcDI1NmsxTXVsdGlzaWc6ICdlbmMtdXNlci1zZWNwJyxcbiAgICAgIGVkMjU1MTlNdWx0aXNpZzogJ2VuYy11c2VyLWVkMjU1MTknLFxuICAgICAgZWNkc2FNcGM6ICdlbmMtdXNlci1lY2RzYScsXG4gICAgICBlZGRzYU1wYzogJ2VuYy11c2VyLWVkZHNhJyxcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrdXBCb3ggPSBib3goe1xuICAgICAgc2VjcDI1NmsxTXVsdGlzaWc6ICdlbmMtYmFja3VwLXNlY3AnLFxuICAgICAgZWQyNTUxOU11bHRpc2lnOiB7IHBydjogJ2VuYy1iYWNrdXAtZWQyNTUxOScsIGNoYWluQ29kZTogJ0MnLnJlcGVhdCg1MikgfSxcbiAgICAgIGVjZHNhTXBjOiAnZW5jLWJhY2t1cC1lY2RzYScsXG4gICAgICBlZGRzYU1wYzogJ2VuYy1iYWNrdXAtZWRkc2EnLFxuICAgIH0pO1xuICAgIGNvbnN0IGJpdGdvQm94ID0gYm94KHtcbiAgICAgIHNlY3AyNTZrMU11bHRpc2lnOiAneHB1Yi1zZWNwLWJpdGdvJyxcbiAgICAgIGVkMjU1MTlNdWx0aXNpZzogJ3B1Yi1lZDI1NTE5LWJpdGdvJyxcbiAgICAgIGVjZHNhTXBjOiAnY29tbW9uLWVjZHNhLWJpdGdvJyxcbiAgICAgIGVkZHNhTXBjOiAnY29tbW9uLWVkZHNhLWJpdGdvJyxcbiAgICB9KTtcblxuICAgIGNvbnN0IG1wY1VzZXIgPSBidWlsZFNhZmVNcGNLZXlFbnZlbG9wZXMoXG4gICAgICBCdWZmZXIuZnJvbSgndXNlci1zaWduaW5nJyksXG4gICAgICBCdWZmZXIuZnJvbSgndXNlci1yZWR1Y2VkJyksXG4gICAgICBCdWZmZXIuZnJvbSgndXNlci12cmYnKVxuICAgICk7XG4gICAgY29uc3QgbXBjQmFja3VwID0gYnVpbGRTYWZlTXBjS2V5RW52ZWxvcGVzKFxuICAgICAgQnVmZmVyLmZyb20oJ2JhY2t1cC1zaWduaW5nJyksXG4gICAgICBCdWZmZXIuZnJvbSgnYmFja3VwLXJlZHVjZWQnKSxcbiAgICAgIEJ1ZmZlci5mcm9tKCdiYWNrdXAtdnJmJylcbiAgICApO1xuXG4gICAgY29uc3QgYml0Z28gPSBtYWtlTW9ja0JpdEdvKFxuICAgICAgbWFrZURlY3J5cHRNYXAoe1xuICAgICAgICAnZW5jLXVzZXItc2VjcCc6ICd4cHJ2LXVzZXInLFxuICAgICAgICAnZW5jLWJhY2t1cC1zZWNwJzogJ3hwcnYtYmFja3VwJyxcbiAgICAgICAgJ2VuYy11c2VyLWVkMjU1MTknOiAnUy11c2VyLXNlZWQnLFxuICAgICAgICAnZW5jLWJhY2t1cC1lZDI1NTE5JzogJ1MtYmFja3VwLXNlZWQnLFxuICAgICAgICAnZW5jLXVzZXItZWNkc2EnOiBtcGNVc2VyLnJlZHVjZWRFbnZlbG9wZS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICdlbmMtYmFja3VwLWVjZHNhJzogbXBjQmFja3VwLnJlZHVjZWRFbnZlbG9wZS50b1N0cmluZygnYmFzZTY0JyksXG4gICAgICAgICdlbmMtdXNlci1lZGRzYSc6IG1wY1VzZXIucmVkdWNlZEVudmVsb3BlLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgJ2VuYy1iYWNrdXAtZWRkc2EnOiBtcGNCYWNrdXAucmVkdWNlZEVudmVsb3BlLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlY3J5cHRTYWZlS2V5Y2FyZCh7XG4gICAgICBiaXRnbyxcbiAgICAgIHVzZXJLZXlCb3g6IHVzZXJCb3gsXG4gICAgICBiYWNrdXBLZXlCb3g6IGJhY2t1cEJveCxcbiAgICAgIGJpdGdvS2V5Qm94OiBiaXRnb0JveCxcbiAgICAgIHBhc3N3b3JkOiBQQVNTV09SRCxcbiAgICB9KTtcblxuICAgIHJlc3VsdC5zZWNwMjU2azFNdWx0aXNpZy51c2VyLnNob3VsZC5lcXVhbCgneHBydi11c2VyJyk7XG4gICAgcmVzdWx0LnNlY3AyNTZrMU11bHRpc2lnLmJhY2t1cC5zaG91bGQuZXF1YWwoJ3hwcnYtYmFja3VwJyk7XG4gICAgcmVzdWx0LnNlY3AyNTZrMU11bHRpc2lnLmJpdGdvLnNob3VsZC5lcXVhbCgneHB1Yi1zZWNwLWJpdGdvJyk7XG5cbiAgICByZXN1bHQuZWQyNTUxOU11bHRpc2lnLnVzZXIuc2hvdWxkLmVxdWFsKCdTLXVzZXItc2VlZCcpO1xuICAgIHJlc3VsdC5lZDI1NTE5TXVsdGlzaWcuYmFja3VwLnBydi5zaG91bGQuZXF1YWwoJ1MtYmFja3VwLXNlZWQnKTtcbiAgICByZXN1bHQuZWQyNTUxOU11bHRpc2lnLmJhY2t1cC5jaGFpbkNvZGUuc2hvdWxkLmVxdWFsKCdDJy5yZXBlYXQoNTIpKTtcbiAgICByZXN1bHQuZWQyNTUxOU11bHRpc2lnLmJpdGdvLnNob3VsZC5lcXVhbCgncHViLWVkMjU1MTktYml0Z28nKTtcblxuICAgIHJlc3VsdC5lY2RzYU1wYy51c2VyLnNpZ25pbmcudG9TdHJpbmcoJ2hleCcpLnNob3VsZC5lcXVhbChCdWZmZXIuZnJvbSgndXNlci1yZWR1Y2VkJykudG9TdHJpbmcoJ2hleCcpKTtcbiAgICByZXN1bHQuZWNkc2FNcGMudXNlci52cmYudG9TdHJpbmcoJ2hleCcpLnNob3VsZC5lcXVhbChCdWZmZXIuZnJvbSgndXNlci12cmYnKS50b1N0cmluZygnaGV4JykpO1xuICAgIHJlc3VsdC5lY2RzYU1wYy5iYWNrdXAuc2lnbmluZy50b1N0cmluZygnaGV4Jykuc2hvdWxkLmVxdWFsKEJ1ZmZlci5mcm9tKCdiYWNrdXAtcmVkdWNlZCcpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgcmVzdWx0LmVjZHNhTXBjLmJhY2t1cC52cmYudG9TdHJpbmcoJ2hleCcpLnNob3VsZC5lcXVhbChCdWZmZXIuZnJvbSgnYmFja3VwLXZyZicpLnRvU3RyaW5nKCdoZXgnKSk7XG4gICAgcmVzdWx0LmVjZHNhTXBjLmJpdGdvLnNob3VsZC5lcXVhbCgnY29tbW9uLWVjZHNhLWJpdGdvJyk7XG5cbiAgICByZXN1bHQuZWRkc2FNcGMuYml0Z28uc2hvdWxkLmVxdWFsKCdjb21tb24tZWRkc2EtYml0Z28nKTtcblxuICAgIC8vIDQgc2xvdHMgw5cgKHVzZXIgKyBiYWNrdXApID0gOCBkZWNyeXB0czsgQml0R28gKEJveCBDKSBpcyBuZXZlciBkZWNyeXB0ZWQuXG4gICAgKGJpdGdvLmRlY3J5cHQgYXMgc2lub24uU2lub25TdHViKS5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDgpO1xuICB9KTtcblxuICBpdCgnZGVjcnlwdHMgdGhlIHNlZWQgZnJvbSBhbiBvYmplY3QtZm9ybSBlZDI1NTE5TXVsdGlzaWcgYmFja3VwIGVudHJ5JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHVzZXJCb3ggPSBib3goe1xuICAgICAgc2VjcDI1NmsxTXVsdGlzaWc6ICdlbmMtdXNlci1zZWNwJyxcbiAgICAgIGVkMjU1MTlNdWx0aXNpZzogJ2VuYy11c2VyLWVkMjU1MTknLFxuICAgICAgZWNkc2FNcGM6ICdlbmMtdXNlci1lY2RzYScsXG4gICAgICBlZGRzYU1wYzogJ2VuYy11c2VyLWVkZHNhJyxcbiAgICB9KTtcbiAgICBjb25zdCBiYWNrdXBCb3ggPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBzZWNwMjU2azFNdWx0aXNpZzogJ2VuYy1iYWNrdXAtc2VjcCcsXG4gICAgICBlZDI1NTE5TXVsdGlzaWc6IHsgcHJ2OiAnZW5jLWJhY2t1cC1lZDI1NTE5JywgY2hhaW5Db2RlOiAnQScucmVwZWF0KDUyKSB9LFxuICAgICAgZWNkc2FNcGM6ICdlbmMtYmFja3VwLWVjZHNhJyxcbiAgICAgIGVkZHNhTXBjOiAnZW5jLWJhY2t1cC1lZGRzYScsXG4gICAgfSk7XG4gICAgY29uc3QgYml0Z29Cb3ggPSBib3goe1xuICAgICAgc2VjcDI1NmsxTXVsdGlzaWc6ICd4cHViLXNlY3AtYml0Z28nLFxuICAgICAgZWQyNTUxOU11bHRpc2lnOiAncHViLWVkMjU1MTktYml0Z28nLFxuICAgICAgZWNkc2FNcGM6ICdjb21tb24tZWNkc2EtYml0Z28nLFxuICAgICAgZWRkc2FNcGM6ICdjb21tb24tZWRkc2EtYml0Z28nLFxuICAgIH0pO1xuXG4gICAgY29uc3QgbXBjVXNlciA9IGJ1aWxkU2FmZU1wY0tleUVudmVsb3BlcyhcbiAgICAgIEJ1ZmZlci5mcm9tKCd1c2VyLXNpZ25pbmcnKSxcbiAgICAgIEJ1ZmZlci5mcm9tKCd1c2VyLXJlZHVjZWQnKSxcbiAgICAgIEJ1ZmZlci5mcm9tKCd1c2VyLXZyZicpXG4gICAgKTtcbiAgICBjb25zdCBtcGNCYWNrdXAgPSBidWlsZFNhZmVNcGNLZXlFbnZlbG9wZXMoXG4gICAgICBCdWZmZXIuZnJvbSgnYmFja3VwLXNpZ25pbmcnKSxcbiAgICAgIEJ1ZmZlci5mcm9tKCdiYWNrdXAtcmVkdWNlZCcpLFxuICAgICAgQnVmZmVyLmZyb20oJ2JhY2t1cC12cmYnKVxuICAgICk7XG5cbiAgICBjb25zdCBiaXRnbyA9IG1ha2VNb2NrQml0R28oXG4gICAgICBtYWtlRGVjcnlwdE1hcCh7XG4gICAgICAgICdlbmMtdXNlci1zZWNwJzogJ3hwcnYtdXNlcicsXG4gICAgICAgICdlbmMtYmFja3VwLXNlY3AnOiAneHBydi1iYWNrdXAnLFxuICAgICAgICAnZW5jLXVzZXItZWQyNTUxOSc6ICdTLXVzZXItc2VlZCcsXG4gICAgICAgICdlbmMtYmFja3VwLWVkMjU1MTknOiAnUy1iYWNrdXAtc2VlZCcsXG4gICAgICAgICdlbmMtdXNlci1lY2RzYSc6IG1wY1VzZXIucmVkdWNlZEVudmVsb3BlLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgJ2VuYy1iYWNrdXAtZWNkc2EnOiBtcGNCYWNrdXAucmVkdWNlZEVudmVsb3BlLnRvU3RyaW5nKCdiYXNlNjQnKSxcbiAgICAgICAgJ2VuYy11c2VyLWVkZHNhJzogbXBjVXNlci5yZWR1Y2VkRW52ZWxvcGUudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgICAnZW5jLWJhY2t1cC1lZGRzYSc6IG1wY0JhY2t1cC5yZWR1Y2VkRW52ZWxvcGUudG9TdHJpbmcoJ2Jhc2U2NCcpLFxuICAgICAgfSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVjcnlwdFNhZmVLZXljYXJkKHtcbiAgICAgIGJpdGdvLFxuICAgICAgdXNlcktleUJveDogdXNlckJveCxcbiAgICAgIGJhY2t1cEtleUJveDogYmFja3VwQm94LFxuICAgICAgYml0Z29LZXlCb3g6IGJpdGdvQm94LFxuICAgICAgcGFzc3dvcmQ6IFBBU1NXT1JELFxuICAgIH0pO1xuXG4gICAgcmVzdWx0LmVkMjU1MTlNdWx0aXNpZy5iYWNrdXAucHJ2LnNob3VsZC5lcXVhbCgnUy1iYWNrdXAtc2VlZCcpO1xuICAgIHJlc3VsdC5lZDI1NTE5TXVsdGlzaWcuYmFja3VwLmNoYWluQ29kZS5zaG91bGQuZXF1YWwoJ0EnLnJlcGVhdCg1MikpO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyBhbiBlZDI1NTE5IGNoYWluLWNvZGUgZW50cnkgaW4gYSBub24tYmFja3VwIHNsb3QgKGZhaWwgY2xvc2VkKScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyQm94ID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgc2VjcDI1NmsxTXVsdGlzaWc6IHsgcHJ2OiAnZW5jLXVzZXItc2VjcCcsIGNoYWluQ29kZTogJ0EnLnJlcGVhdCg1MikgfSxcbiAgICAgIGVkMjU1MTlNdWx0aXNpZzogJ2VuYy11c2VyLWVkMjU1MTknLFxuICAgICAgZWNkc2FNcGM6ICdlbmMtdXNlci1lY2RzYScsXG4gICAgICBlZGRzYU1wYzogJ2VuYy11c2VyLWVkZHNhJyxcbiAgICB9KTtcblxuICAgIGF3YWl0IGRlY3J5cHRTYWZlS2V5Y2FyZCh7XG4gICAgICBiaXRnbzogbWFrZU1vY2tCaXRHbyhtYWtlRGVjcnlwdE1hcCh7fSkpLFxuICAgICAgdXNlcktleUJveDogdXNlckJveCxcbiAgICAgIGJhY2t1cEtleUJveDogdXNlckJveCxcbiAgICAgIGJpdGdvS2V5Qm94OiB1c2VyQm94LFxuICAgICAgcGFzc3dvcmQ6IFBBU1NXT1JELFxuICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3VuZXhwZWN0ZWQgZWQyNTUxOSBjaGFpbi1jb2RlIGVudHJ5Lyk7XG4gIH0pO1xuXG4gIGl0KCd0aHJvd3MgSW5jb3JyZWN0UGFzc3dvcmRFcnJvciB3aGVuIGRlY3J5cHRpb24gZmFpbHMgKHdyb25nIHBhc3N3b3JkKScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB1c2VyQm94ID0gYm94KHtcbiAgICAgIHNlY3AyNTZrMU11bHRpc2lnOiAnZW5jLXVzZXItc2VjcCcsXG4gICAgICBlZDI1NTE5TXVsdGlzaWc6ICdlbmMtdXNlci1lZDI1NTE5JyxcbiAgICAgIGVjZHNhTXBjOiAnZW5jLXVzZXItZWNkc2EnLFxuICAgICAgZWRkc2FNcGM6ICdlbmMtdXNlci1lZGRzYScsXG4gICAgfSk7XG4gICAgY29uc3QgYml0Z28gPSBtYWtlTW9ja0JpdEdvKCgpID0+IHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYXJnb24yOiB0YWcgZG9lcyBub3QgbWF0Y2gnKTtcbiAgICB9KTtcblxuICAgIGF3YWl0IGRlY3J5cHRTYWZlS2V5Y2FyZCh7XG4gICAgICBiaXRnbyxcbiAgICAgIHVzZXJLZXlCb3g6IHVzZXJCb3gsXG4gICAgICBiYWNrdXBLZXlCb3g6IHVzZXJCb3gsXG4gICAgICBiaXRnb0tleUJveDogdXNlckJveCxcbiAgICAgIHBhc3N3b3JkOiAnd3JvbmctcGFzc3dvcmQnLFxuICAgIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoSW5jb3JyZWN0UGFzc3dvcmRFcnJvcik7XG4gIH0pO1xufSk7XG5cbmNvbnN0IE1QQ19ST09UID0geyBzaWduaW5nOiBCdWZmZXIuYWxsb2MoMCksIHZyZjogQnVmZmVyLmFsbG9jKDApIH07XG5cbmZ1bmN0aW9uIG1ha2VSb290cyhzZWNwOiB7IHVzZXI6IHN0cmluZzsgYmFja3VwOiBzdHJpbmc7IGJpdGdvOiBzdHJpbmcgfSk6IERlY3J5cHRlZFNhZmVSb290cyB7XG4gIHJldHVybiB7XG4gICAgc2VjcDI1NmsxTXVsdGlzaWc6IHNlY3AsXG4gICAgZWQyNTUxOU11bHRpc2lnOiB7IHVzZXI6ICd1JywgYmFja3VwOiB7IHBydjogJ2InLCBjaGFpbkNvZGU6ICdjJyB9LCBiaXRnbzogJ2cnIH0sXG4gICAgZWNkc2FNcGM6IHsgdXNlcjogTVBDX1JPT1QsIGJhY2t1cDogTVBDX1JPT1QsIGJpdGdvOiAnZycgfSxcbiAgICBlZGRzYU1wYzogeyB1c2VyOiBNUENfUk9PVCwgYmFja3VwOiBNUENfUk9PVCwgYml0Z286ICdnJyB9LFxuICB9O1xufVxuXG5kZXNjcmliZSgnZGVyaXZlU2FmZVdhbGxldEtleXMnLCAoKSA9PiB7XG4gIGNvbnN0IHVzZXJSb290ID0gYmlwMzIuZnJvbVNlZWQoQnVmZmVyLmZyb20oJzAwMDEwMjAzMDQwNTA2MDcwODA5MGEwYjBjMGQwZTBmJywgJ2hleCcpKTtcbiAgY29uc3QgYmFja3VwUm9vdCA9IGJpcDMyLmZyb21TZWVkKFxuICAgIEJ1ZmZlci5mcm9tKCcxZjFlMWQxYzFiMWExOTE4MTcxNjE1MTQxMzEyMTExMDBmMGUwZDBjMGIwYTA5MDgwNzA2MDUwNDAzMDIwMTAwJywgJ2hleCcpXG4gICk7XG4gIGNvbnN0IGJpdGdvUm9vdCA9IGJpcDMyXG4gICAgLmZyb21TZWVkKEJ1ZmZlci5mcm9tKCcyZjJlMmQyYzJiMmEyOTI4MjcyNjI1MjQyMzIyMjEyMDFmMWUxZDFjMWIxYTE5MTgxNzE2MTUxNDEzMTIxMTEwJywgJ2hleCcpKVxuICAgIC5uZXV0ZXJlZCgpO1xuXG4gIGNvbnN0IHJvb3RzID0gbWFrZVJvb3RzKHtcbiAgICB1c2VyOiB1c2VyUm9vdC50b0Jhc2U1OCgpLFxuICAgIGJhY2t1cDogYmFja3VwUm9vdC50b0Jhc2U1OCgpLFxuICAgIGJpdGdvOiBiaXRnb1Jvb3QudG9CYXNlNTgoKSxcbiAgfSk7XG5cbiAgaXQoJ2Rlcml2ZXMgdGhlIEJJUDQ0IGNoaWxkIHRyaXBsZXQgZm9yIHNsb3QgMScsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZXJpdmVTYWZlV2FsbGV0S2V5cyh7IGNvaW46ICdidGMnLCBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnLCBhY2NvdW50OiAwLCByb290cyB9KTtcbiAgICBpZiAocmVzdWx0LnNsb3QgIT09ICdzZWNwMjU2azFNdWx0aXNpZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgc2VjcDI1NmsxTXVsdGlzaWcgc2xvdCcpO1xuICAgIH1cblxuICAgIHJlc3VsdC5wYXRoLnNob3VsZC5lcXVhbChcIm0vNDQnLzAnLzEnLzAnXCIpO1xuICAgIHJlc3VsdC5rZXlzLnVzZXIucHJ2LnNob3VsZC5lcXVhbCh1c2VyUm9vdC5kZXJpdmVQYXRoKFwibS80NCcvMCcvMScvMCdcIikudG9CYXNlNTgoKSk7XG4gICAgcmVzdWx0LmtleXMudXNlci5wdWIuc2hvdWxkLmVxdWFsKHVzZXJSb290LmRlcml2ZVBhdGgoXCJtLzQ0Jy8wJy8xJy8wJ1wiKS5uZXV0ZXJlZCgpLnRvQmFzZTU4KCkpO1xuICAgIHJlc3VsdC5rZXlzLmJhY2t1cC5wcnYuc2hvdWxkLmVxdWFsKGJhY2t1cFJvb3QuZGVyaXZlUGF0aCgnbS80NC8wLzEvMCcpLnRvQmFzZTU4KCkpO1xuICAgIHJlc3VsdC5rZXlzLmJpdGdvLnB1Yi5zaG91bGQuZXF1YWwoYml0Z29Sb290LmRlcml2ZVBhdGgoJ20vNDQvMC8xLzAnKS50b0Jhc2U1OCgpKTtcbiAgfSk7XG5cbiAgaXQoJ3ZhcmllcyB0aGUgcGF0aCB3aXRoIHRoZSBhY2NvdW50JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlcml2ZVNhZmVXYWxsZXRLZXlzKHsgY29pbjogJ2J0YycsIHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycsIGFjY291bnQ6IDIsIHJvb3RzIH0pO1xuICAgIHJlc3VsdC5wYXRoLnNob3VsZC5lcXVhbChcIm0vNDQnLzAnLzEnLzInXCIpO1xuICB9KTtcblxuICBpdCgnZGVyaXZlcyB0aGUgZWNkc2FNcGMgY2hpbGQgdmlhIHRoZSBES0xzIGNlcmVtb255JywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IFt1c2VyRGtnLCBiYWNrdXBEa2ddID0gYXdhaXQgRGtsc1V0aWxzLmdlbmVyYXRlREtHS2V5U2hhcmVzKCk7XG4gICAgY29uc3QgW3ZyZlVzZXIsIHZyZkJhY2t1cF0gPSBhd2FpdCBEa2xzVnJmVXRpbHMuZ2VuZXJhdGVWcmZES0dLZXlTaGFyZXMoKTtcblxuICAgIGNvbnN0IG1wY1Jvb3RzOiBEZWNyeXB0ZWRTYWZlUm9vdHMgPSB7XG4gICAgICAuLi5yb290cyxcbiAgICAgIGVjZHNhTXBjOiB7XG4gICAgICAgIHVzZXI6IHsgc2lnbmluZzogdXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKSwgdnJmOiB2cmZVc2VyLmdldEtleVNoYXJlKCkgfSxcbiAgICAgICAgYmFja3VwOiB7IHNpZ25pbmc6IGJhY2t1cERrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKSwgdnJmOiB2cmZCYWNrdXAuZ2V0S2V5U2hhcmUoKSB9LFxuICAgICAgICBiaXRnbzogJ2cnLFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVyaXZlU2FmZVdhbGxldEtleXMoeyBjb2luOiAnZXRoJywgc2xvdDogJ2VjZHNhTXBjJywgYWNjb3VudDogMCwgcm9vdHM6IG1wY1Jvb3RzIH0pO1xuICAgIGlmIChyZXN1bHQuc2xvdCAhPT0gJ2VjZHNhTXBjJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCBlY2RzYU1wYyBzbG90Jyk7XG4gICAgfVxuXG4gICAgcmVzdWx0LnBhdGguc2hvdWxkLmVxdWFsKFwibS80NCcvNjAnLzMnLzAnXCIpO1xuICAgIHJlc3VsdC5rZXlzLmNvbW1vbktleWNoYWluLnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHJlc3VsdC5rZXlzLnVzZXIuc2hvdWxkLmJlLmEuU3RyaW5nKCk7XG4gICAgcmVzdWx0LmtleXMuYmFja3VwLnNob3VsZC5iZS5hLlN0cmluZygpO1xuICB9KTtcblxuICBpdCgnZGVyaXZlcyBhbmQgc2lnbnMgdGhlIGVkZHNhTXBjIHNsb3QtNCBCSVA0NCBjaGlsZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBbdXNlckRrZywgYmFja3VwRGtnLCBiaXRnb0RrZ10gPSBhd2FpdCBNUFNVdGlsLmdlbmVyYXRlRWREc2FES0dLZXlTaGFyZXMoKTtcbiAgICBjb25zdCBbdnJmVXNlciwgdnJmQmFja3VwLCB2cmZCaXRnb10gPSBhd2FpdCBNcHNWcmZVdGlscy5nZW5lcmF0ZVZyZkRLR0tleVNoYXJlcygpO1xuICAgIGNvbnN0IG1wY1Jvb3RzOiBEZWNyeXB0ZWRTYWZlUm9vdHMgPSB7XG4gICAgICAuLi5yb290cyxcbiAgICAgIGVkZHNhTXBjOiB7XG4gICAgICAgIHVzZXI6IHsgc2lnbmluZzogdXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKSwgdnJmOiB2cmZVc2VyLmdldEtleVNoYXJlKCkgfSxcbiAgICAgICAgYmFja3VwOiB7IHNpZ25pbmc6IGJhY2t1cERrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKSwgdnJmOiB2cmZCYWNrdXAuZ2V0S2V5U2hhcmUoKSB9LFxuICAgICAgICBiaXRnbzogYml0Z29Ea2cuZ2V0Q29tbW9uS2V5Y2hhaW4oKSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRlcml2ZVNhZmVXYWxsZXRLZXlzKHsgY29pbjogJ3NvbCcsIHNsb3Q6ICdlZGRzYU1wYycsIGFjY291bnQ6IDAsIHJvb3RzOiBtcGNSb290cyB9KTtcbiAgICBpZiAocmVzdWx0LnNsb3QgIT09ICdlZGRzYU1wYycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignZXhwZWN0ZWQgZWRkc2FNcGMgc2xvdCcpO1xuICAgIH1cbiAgICByZXN1bHQucGF0aC5zaG91bGQuZXF1YWwoXCJtLzQ0Jy81MDEnLzQnLzAnXCIpO1xuXG4gICAgLy8gUGxheSBtaW50J3MgdXNlcuKGlEJpdEdvIHJvbGUgbG9jYWxseSBhdCB0aGUgc2FtZSBCSVA0NCBwYXRoOyBubyBkZXYtbWludGVkIHdhbGxldCBpcyBuZWVkZWQuXG4gICAgY29uc3QgdXNlck1pbnQgPSBuZXcgTXBzRGVyaXZlLkRlcml2ZSgzLCAyLCAwLCB1c2VyRGtnLmdldEtleVNoYXJlKCksIHZyZlVzZXIuZ2V0S2V5U2hhcmUoKSwgcmVzdWx0LnBhdGgpO1xuICAgIGNvbnN0IGJpdGdvTWludCA9IG5ldyBNcHNEZXJpdmUuRGVyaXZlKDMsIDIsIDIsIGJpdGdvRGtnLmdldEtleVNoYXJlKCksIHZyZkJpdGdvLmdldEtleVNoYXJlKCksIHJlc3VsdC5wYXRoKTtcbiAgICBjb25zdCBbdXNlclJvdW5kMCwgYml0Z29Sb3VuZDBdID0gYXdhaXQgUHJvbWlzZS5hbGwoW3VzZXJNaW50LmluaXREZXJpdmUoKSwgYml0Z29NaW50LmluaXREZXJpdmUoKV0pO1xuICAgIGNvbnN0IFt1c2VyUm91bmQxXSA9IHVzZXJNaW50LmhhbmRsZUluY29taW5nTWVzc2FnZXMoW2JpdGdvUm91bmQwXSk7XG4gICAgY29uc3QgW2JpdGdvUm91bmQxXSA9IGJpdGdvTWludC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFt1c2VyUm91bmQwXSk7XG4gICAgaWYgKCF1c2VyUm91bmQxIHx8ICFiaXRnb1JvdW5kMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdleHBlY3RlZCB1c2VyIGFuZCBCaXRHbyBkZXJpdmUgcm91bmQtMSBtZXNzYWdlcycpO1xuICAgIH1cbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKHVzZXJNaW50LmhhbmRsZUluY29taW5nTWVzc2FnZXMoW2JpdGdvUm91bmQxXSksIFtdKTtcbiAgICBhc3NlcnQuZGVlcFN0cmljdEVxdWFsKGJpdGdvTWludC5oYW5kbGVJbmNvbWluZ01lc3NhZ2VzKFt1c2VyUm91bmQxXSksIFtdKTtcbiAgICBjb25zdCBtaW50ZWRDaGlsZENvbW1vbktleWNoYWluID0gdXNlck1pbnQuZ2V0Q29tbW9uS2V5Y2hhaW4oKTtcbiAgICBhc3NlcnQuc3RyaWN0RXF1YWwoYml0Z29NaW50LmdldENvbW1vbktleWNoYWluKCksIG1pbnRlZENoaWxkQ29tbW9uS2V5Y2hhaW4pO1xuICAgIGFzc2VydC5zdHJpY3RFcXVhbChyZXN1bHQua2V5cy5jb21tb25LZXljaGFpbiwgbWludGVkQ2hpbGRDb21tb25LZXljaGFpbik7XG5cbiAgICBjb25zdCB3YWxsZXRQYXNzcGhyYXNlID0gJ3NhZmUtcmVjb3ZlcnktcGFzc3BocmFzZSc7XG4gICAgY29uc3QgdXNlcktleSA9IHNqY2wuZW5jcnlwdCh3YWxsZXRQYXNzcGhyYXNlLCByZXN1bHQua2V5cy51c2VyKTtcbiAgICBjb25zdCBiYWNrdXBLZXkgPSBzamNsLmVuY3J5cHQod2FsbGV0UGFzc3BocmFzZSwgcmVzdWx0LmtleXMuYmFja3VwKTtcbiAgICBjb25zdCByb290Q29tbW9uS2V5Y2hhaW4gPSB1c2VyRGtnLmdldENvbW1vbktleWNoYWluKCk7XG4gICAgYXdhaXQgYXNzZXJ0LnJlamVjdHMoXG4gICAgICBzaWduRWRkc2FNcGNWMlJlY292ZXJ5VHgoe1xuICAgICAgICBtZXNzYWdlOiBCdWZmZXIuZnJvbSgnd3Jvbmcga2V5Y2hhaW4gbXVzdCBmYWlsJyksXG4gICAgICAgIHVzZXJLZXksXG4gICAgICAgIGJhY2t1cEtleSxcbiAgICAgICAgd2FsbGV0UGFzc3BocmFzZSxcbiAgICAgICAgYml0Z29LZXk6IHJvb3RDb21tb25LZXljaGFpbixcbiAgICAgICAgZGVyaXZhdGlvblBhdGg6ICdtLzAnLFxuICAgICAgfSksXG4gICAgICAvY29tbW9uS2V5Q2hhaW4gZnJvbSBrZXljYXJkIGRvZXMgbm90IG1hdGNoIGJpdGdvS2V5L1xuICAgICk7XG5cbiAgICBjb25zdCBtcGMgPSBhd2FpdCBnZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgZm9yIChjb25zdCBkZXJpdmF0aW9uUGF0aCBvZiBbJ20vMCcsICdtLzMnXSkge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IEJ1ZmZlci5mcm9tKGBTYWZlIEVkRFNBIHJlY292ZXJ5ICR7ZGVyaXZhdGlvblBhdGh9YCk7XG4gICAgICBjb25zdCBzaWduYXR1cmUgPSBhd2FpdCBzaWduRWRkc2FNcGNWMlJlY292ZXJ5VHgoe1xuICAgICAgICBtZXNzYWdlLFxuICAgICAgICB1c2VyS2V5LFxuICAgICAgICBiYWNrdXBLZXksXG4gICAgICAgIHdhbGxldFBhc3NwaHJhc2UsXG4gICAgICAgIGJpdGdvS2V5OiByZXN1bHQua2V5cy5jb21tb25LZXljaGFpbixcbiAgICAgICAgZGVyaXZhdGlvblBhdGgsXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGRlcml2ZWRLZXljaGFpbiA9IG1wYy5kZXJpdmVVbmhhcmRlbmVkKHJlc3VsdC5rZXlzLmNvbW1vbktleWNoYWluLCBkZXJpdmF0aW9uUGF0aCk7XG4gICAgICBjb25zdCBwdWJsaWNLZXlCeXRlcyA9IEJ1ZmZlci5mcm9tKGRlcml2ZWRLZXljaGFpbi5zbGljZSgwLCA2NCksICdoZXgnKTtcbiAgICAgIGFzc2VydC5zdHJpY3RFcXVhbChcbiAgICAgICAgZWQyNTUxOS52ZXJpZnkobmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlKSwgbmV3IFVpbnQ4QXJyYXkobWVzc2FnZSksIG5ldyBVaW50OEFycmF5KHB1YmxpY0tleUJ5dGVzKSksXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICB9KTtcblxuICBpdCgncmVqZWN0cyB0aGUgdW5zdXBwb3J0ZWQgZWQyNTUxOU11bHRpc2lnIHNsb3QnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZGVyaXZlU2FmZVdhbGxldEtleXMoeyBjb2luOiAnYnRjJywgc2xvdDogJ2VkMjU1MTlNdWx0aXNpZycsIGFjY291bnQ6IDAsIHJvb3RzIH0pLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAvbm90IHN1cHBvcnRlZCB5ZXQvXG4gICAgKTtcbiAgfSk7XG5cbiAgaXQoJ3JlamVjdHMgYSBub24taW50ZWdlciBhY2NvdW50JywgYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGRlcml2ZVNhZmVXYWxsZXRLZXlzKHsgY29pbjogJ2J0YycsIHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycsIGFjY291bnQ6IDEuNSwgcm9vdHMgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aChcbiAgICAgIC9pbnZhbGlkIGFjY291bnQvXG4gICAgKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ2J1aWxkU2FmZVJlY292ZXJLZXlQYXJhbXMnLCAoKSA9PiB7XG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgc2lub24ucmVzdG9yZSgpO1xuICB9KTtcblxuICBjb25zdCB1c2VyUm9vdCA9IGJpcDMyLmZyb21TZWVkKEJ1ZmZlci5mcm9tKCcwMDAxMDIwMzA0MDUwNjA3MDgwOTBhMGIwYzBkMGUwZicsICdoZXgnKSk7XG4gIGNvbnN0IGJhY2t1cFJvb3QgPSBiaXAzMi5mcm9tU2VlZChcbiAgICBCdWZmZXIuZnJvbSgnMWYxZTFkMWMxYjFhMTkxODE3MTYxNTE0MTMxMjExMTAwZjBlMGQwYzBiMGEwOTA4MDcwNjA1MDQwMzAyMDEwMCcsICdoZXgnKVxuICApO1xuICBjb25zdCBiaXRnb1Jvb3QgPSBiaXAzMlxuICAgIC5mcm9tU2VlZChCdWZmZXIuZnJvbSgnMmYyZTJkMmMyYjJhMjkyODI3MjYyNTI0MjMyMjIxMjAxZjFlMWQxYzFiMWExOTE4MTcxNjE1MTQxMzEyMTExMCcsICdoZXgnKSlcbiAgICAubmV1dGVyZWQoKTtcblxuICBjb25zdCBrZXlzID0ge1xuICAgIHVzZXI6IHsgcHJ2OiB1c2VyUm9vdC50b0Jhc2U1OCgpLCBwdWI6IHVzZXJSb290Lm5ldXRlcmVkKCkudG9CYXNlNTgoKSB9LFxuICAgIGJhY2t1cDogeyBwcnY6IGJhY2t1cFJvb3QudG9CYXNlNTgoKSwgcHViOiBiYWNrdXBSb290Lm5ldXRlcmVkKCkudG9CYXNlNTgoKSB9LFxuICAgIGJpdGdvOiB7IHB1YjogYml0Z29Sb290LnRvQmFzZTU4KCkgfSxcbiAgfTtcblxuICBpdCgnc2lnbmVkIG1vZGUgcmUtZW5jcnlwdHMgY2hpbGQgeHBydnMgdW5kZXIgYSBzaW5nbGUgZXBoZW1lcmFsIHBhc3NwaHJhc2UnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgcGFzc3BocmFzZXM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3QgZW5jcnlwdCA9IHNpbm9uLnN0dWIoKS5jYWxsc0Zha2UoYXN5bmMgKHsgaW5wdXQsIHBhc3N3b3JkLCBlbmNyeXB0aW9uVmVyc2lvbiB9KSA9PiB7XG4gICAgICBwYXNzcGhyYXNlcy5wdXNoKHBhc3N3b3JkKTtcbiAgICAgIGVuY3J5cHRpb25WZXJzaW9uLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHJldHVybiBgZW5jKCR7aW5wdXR9KWA7XG4gICAgfSk7XG4gICAgY29uc3QgYml0Z28gPSB7IGVuY3J5cHQgfSBhcyB1bmtub3duIGFzIEJpdEdvQmFzZTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGJ1aWxkU2FmZVJlY292ZXJLZXlQYXJhbXMoe1xuICAgICAgYml0Z28sXG4gICAgICBjb2luOiAnYnRjJyxcbiAgICAgIHNsb3Q6ICdzZWNwMjU2azFNdWx0aXNpZycsXG4gICAgICBrZXlzLFxuICAgICAgbW9kZTogJ3NpZ25lZCcsXG4gICAgfSk7XG5cbiAgICByZXN1bHQudXNlcktleS5zaG91bGQuZXF1YWwoYGVuYygke2tleXMudXNlci5wcnZ9KWApO1xuICAgIHJlc3VsdC5iYWNrdXBLZXkuc2hvdWxkLmVxdWFsKGBlbmMoJHtrZXlzLmJhY2t1cC5wcnZ9KWApO1xuICAgIHJlc3VsdC5iaXRnb0tleS5zaG91bGQuZXF1YWwoa2V5cy5iaXRnby5wdWIpO1xuICAgIChyZXN1bHQud2FsbGV0UGFzc3BocmFzZSBhcyBzdHJpbmcpLnNob3VsZC5iZS5hLlN0cmluZygpO1xuICAgIHBhc3NwaHJhc2VzLnNob3VsZC5oYXZlLmxlbmd0aCgyKTtcbiAgICBwYXNzcGhyYXNlc1swXS5zaG91bGQuZXF1YWwocGFzc3BocmFzZXNbMV0pO1xuICAgIHBhc3NwaHJhc2VzWzBdLnNob3VsZC5lcXVhbChyZXN1bHQud2FsbGV0UGFzc3BocmFzZSk7XG4gICAgZW5jcnlwdC5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDIpO1xuICB9KTtcblxuICBpdCgncmVqZWN0cyBub24tcHJpdmF0ZSBjaGlsZCBrZXlzIGluIHNpZ25lZCBtb2RlJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGJpdGdvID0geyBlbmNyeXB0OiBzaW5vbi5zdHViKCkgfSBhcyB1bmtub3duIGFzIEJpdEdvQmFzZTtcbiAgICBhd2FpdCBidWlsZFNhZmVSZWNvdmVyS2V5UGFyYW1zKHtcbiAgICAgIGJpdGdvLFxuICAgICAgY29pbjogJ2J0YycsXG4gICAgICBzbG90OiAnc2VjcDI1NmsxTXVsdGlzaWcnLFxuICAgICAga2V5czogeyB1c2VyOiB7IHBydjoga2V5cy51c2VyLnB1YiwgcHViOiBrZXlzLnVzZXIucHViIH0sIGJhY2t1cDoga2V5cy5iYWNrdXAsIGJpdGdvOiBrZXlzLmJpdGdvIH0sXG4gICAgICBtb2RlOiAnc2lnbmVkJyxcbiAgICB9KS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9tdXN0IGJlIHByaXZhdGUgeHBydnMvKTtcbiAgfSk7XG5cbiAgaXQoJ3Vuc2lnbmVkIG1vZGUgcmV0dXJucyBwdWJzIGFuZCBuZXZlciBlbmNyeXB0cycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBlbmNyeXB0ID0gc2lub24uc3R1YigpLmNhbGxzRmFrZShhc3luYyAoKSA9PiB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2VuY3J5cHQgc2hvdWxkIG5vdCBiZSBjYWxsZWQnKTtcbiAgICB9KTtcbiAgICBjb25zdCBiaXRnbyA9IHsgZW5jcnlwdCB9IGFzIHVua25vd24gYXMgQml0R29CYXNlO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYnVpbGRTYWZlUmVjb3ZlcktleVBhcmFtcyh7XG4gICAgICBiaXRnbyxcbiAgICAgIGNvaW46ICdidGMnLFxuICAgICAgc2xvdDogJ3NlY3AyNTZrMU11bHRpc2lnJyxcbiAgICAgIGtleXMsXG4gICAgICBtb2RlOiAndW5zaWduZWQnLFxuICAgIH0pO1xuXG4gICAgcmVzdWx0LnVzZXJLZXkuc2hvdWxkLmVxdWFsKGtleXMudXNlci5wdWIpO1xuICAgIHJlc3VsdC5iYWNrdXBLZXkuc2hvdWxkLmVxdWFsKGtleXMuYmFja3VwLnB1Yik7XG4gICAgcmVzdWx0LmJpdGdvS2V5LnNob3VsZC5lcXVhbChrZXlzLmJpdGdvLnB1Yik7XG4gICAgcmVzdWx0LnNob3VsZC5ub3QuaGF2ZS5wcm9wZXJ0eSgnd2FsbGV0UGFzc3BocmFzZScpO1xuICAgIGVuY3J5cHQuY2FsbENvdW50LnNob3VsZC5lcXVhbCgwKTtcbiAgfSk7XG5cbiAgaXQoJ3JlamVjdHMgdW5zdXBwb3J0ZWQgc2xvdHMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYml0Z28gPSB7IGVuY3J5cHQ6IHNpbm9uLnN0dWIoKSB9IGFzIHVua25vd24gYXMgQml0R29CYXNlO1xuICAgIGF3YWl0IGJ1aWxkU2FmZVJlY292ZXJLZXlQYXJhbXMoe1xuICAgICAgYml0Z28sXG4gICAgICBjb2luOiAnYnRjJyxcbiAgICAgIHNsb3Q6ICdlZGRzYU1wYycsXG4gICAgICBrZXlzLFxuICAgICAgbW9kZTogJ3NpZ25lZCcsXG4gICAgfSkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvbm90IHN1cHBvcnRlZCB5ZXQvKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ1NhZmUgZWNkc2FNcGMgZGVyaXZlIOKGkiBzaWduIChnYXRlKScsIGZ1bmN0aW9uICgpIHtcbiAgaXQoJ2Rlcml2ZXMgYSBjaGlsZCwgcmVidWlsZHMgMi1vZi0yIHNoYXJlcywgYW5kIHNpZ25zIGEgbWVzc2FnZSB2ZXJpZmllZCBhdCBtLzAnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgW3VzZXJEa2csIGJhY2t1cERrZ10gPSBhd2FpdCBEa2xzVXRpbHMuZ2VuZXJhdGVES0dLZXlTaGFyZXMoKTtcbiAgICBjb25zdCBbdnJmVXNlciwgdnJmQmFja3VwXSA9IGF3YWl0IERrbHNWcmZVdGlscy5nZW5lcmF0ZVZyZkRLR0tleVNoYXJlcygpO1xuXG4gICAgY29uc3Qgcm9vdENvbW1vbktleWNoYWluID0gRGtsc1R5cGVzLmdldENvbW1vbktleWNoYWluKHVzZXJEa2cuZ2V0S2V5U2hhcmUoKSk7XG5cbiAgICBjb25zdCB7IGNvbW1vbktleWNoYWluLCB1c2VyQ2hpbGQsIGJhY2t1cENoaWxkIH0gPSBhd2FpdCBEa2xzVnJmVXRpbHMuZGVyaXZlU2FmZUVjZHNhTXBjQ2hpbGQoe1xuICAgICAgdXNlclJvb3Q6IHsgc2lnbmluZzogdXNlckRrZy5nZXRSZWR1Y2VkS2V5U2hhcmUoKSwgdnJmOiB2cmZVc2VyLmdldEtleVNoYXJlKCkgfSxcbiAgICAgIGJhY2t1cFJvb3Q6IHsgc2lnbmluZzogYmFja3VwRGtnLmdldFJlZHVjZWRLZXlTaGFyZSgpLCB2cmY6IHZyZkJhY2t1cC5nZXRLZXlTaGFyZSgpIH0sXG4gICAgICBhY2NvdW50OiAwLFxuICAgICAgY29pblR5cGU6IDYwLFxuICAgICAgc2FmZVNsb3RPcmRpbmFsOiAzLFxuICAgIH0pO1xuXG4gICAgLy8gVGhlIGRlcml2ZWQgY2hpbGQgbXVzdCBuZXZlciBiZSB0aGUgcm9vdCAodGhlIFwicm9vdCBlbnZlbG9wZSBpbiB0aGUgY2hpbGQgcG9zaXRpb25cIiBmb290Z3VuKS5cbiAgICBjb21tb25LZXljaGFpbi5zaG91bGQubm90LmVxdWFsKHJvb3RDb21tb25LZXljaGFpbik7XG5cbiAgICAvLyBSZWJ1aWxkIDItb2YtMiBrZXlzaGFyZXMgZnJvbSB0aGUgZGVyaXZlZCByZWR1Y2VkIENCT1IsIGV4YWN0bHkgYXMgdGhlIHNpZ25lcidzIHJldHJvZml0IGRvZXMuXG4gICAgY29uc3QgdG9SZXRyb2ZpdCA9IChiNjQ6IHN0cmluZyk6IERrbHNUeXBlcy5SZXRyb2ZpdERhdGEgPT4ge1xuICAgICAgY29uc3QgcmVkdWNlZCA9IERrbHNUeXBlcy5nZXREZWNvZGVkUmVkdWNlZEtleVNoYXJlKEJ1ZmZlci5mcm9tKGI2NCwgJ2Jhc2U2NCcpKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHhTaGFyZToge1xuICAgICAgICAgIHg6IEJ1ZmZlci5mcm9tKHJlZHVjZWQucHJ2KS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgeTogQnVmZmVyLmZyb20ocmVkdWNlZC5wdWIpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgICAgICBjaGFpbmNvZGU6IEJ1ZmZlci5mcm9tKHJlZHVjZWQucm9vdENoYWluQ29kZSkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgICB9LFxuICAgICAgICB4aUxpc3Q6IHJlZHVjZWQueExpc3Quc2xpY2UoMCwgMiksXG4gICAgICB9O1xuICAgIH07XG4gICAgY29uc3QgW3VzZXIyb2YyLCBiYWNrdXAyb2YyXSA9IGF3YWl0IERrbHNVdGlscy5nZW5lcmF0ZTJvZjJLZXlTaGFyZXMoXG4gICAgICB0b1JldHJvZml0KHVzZXJDaGlsZCksXG4gICAgICB0b1JldHJvZml0KGJhY2t1cENoaWxkKVxuICAgICk7XG5cbiAgICBjb25zdCBtZXNzYWdlSGFzaCA9IEJ1ZmZlci5mcm9tKCcwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmJywgJ2hleCcpO1xuICAgIGNvbnN0IHVzZXJEc2cgPSBuZXcgRGtsc0RzZy5Ec2codXNlcjJvZjIuZ2V0S2V5U2hhcmUoKSwgMCwgJ20vMCcsIG1lc3NhZ2VIYXNoKTtcbiAgICBjb25zdCBiYWNrdXBEc2cgPSBuZXcgRGtsc0RzZy5Ec2coYmFja3VwMm9mMi5nZXRLZXlTaGFyZSgpLCAxLCAnbS8wJywgbWVzc2FnZUhhc2gpO1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0cmluZyA9IERrbHNVdGlscy52ZXJpZnlBbmRDb252ZXJ0RGtsc1NpZ25hdHVyZShcbiAgICAgIG1lc3NhZ2VIYXNoLFxuICAgICAgKGF3YWl0IERrbHNVdGlscy5leGVjdXRlVGlsbFJvdW5kKDUsIHVzZXJEc2csIGJhY2t1cERzZykpIGFzIERrbHNUeXBlcy5EZXNlcmlhbGl6ZWREa2xzU2lnbmF0dXJlLFxuICAgICAgY29tbW9uS2V5Y2hhaW4sXG4gICAgICAnbS8wJyxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGZhbHNlXG4gICAgKTtcblxuICAgIC8vIHZlcmlmeUFuZENvbnZlcnREa2xzU2lnbmF0dXJlIHJlY292ZXJzIHRoZSBwdWJrZXkgZnJvbSB0aGUgc2lnbmF0dXJlIGFuZCBjaGVja3MgaXQgYWdhaW5zdFxuICAgIC8vIGRlcml2ZVVuaGFyZGVuZWQoY2hpbGRDSywgJ20vMCcpOyBpdCB0aHJvd3Mgb24gbWlzbWF0Y2gsIHNvIGEgcmV0dXJuZWQgc3RyaW5nIGlzIHByb29mLlxuICAgIHNpZ25hdHVyZVN0cmluZy5zaG91bGQuYmUuYS5TdHJpbmcoKTtcbiAgICBzaWduYXR1cmVTdHJpbmcuc2hvdWxkLm1hdGNoKC9eXFxkKzpbMC05YS1mXSs6WzAtOWEtZl0rOlswLTlhLWZdKyQvKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rootCoin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rootCoin.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/safe/rootCoin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const statics_1 = require("@bitgo-beta/statics");
4
+ const rootCoin_1 = require("../../../../src/bitgo/safe/rootCoin");
5
+ describe('SAFE_ROOT_SLOTS', function () {
6
+ it('should match the slot ordinals served from statics, in order', function () {
7
+ // typed as Record<RootKeyType, number>, so a slot missing from statics is a compile error
8
+ const ordinals = statics_1.SAFE_ROOT_SLOT_ORDINALS;
9
+ rootCoin_1.SAFE_ROOT_SLOTS.map((slot) => ordinals[slot]).should.deepEqual(rootCoin_1.SAFE_ROOT_SLOTS.map((_, i) => i + 1));
10
+ Object.keys(statics_1.SAFE_ROOT_SLOT_ORDINALS).should.deepEqual(rootCoin_1.SAFE_ROOT_SLOTS);
11
+ });
12
+ });
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9vdENvaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi90ZXN0L3VuaXQvYml0Z28vc2FmZS9yb290Q29pbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGlEQUE4RDtBQUU5RCxrRUFBc0U7QUFFdEUsUUFBUSxDQUFDLGlCQUFpQixFQUFFO0lBQzFCLEVBQUUsQ0FBQyw4REFBOEQsRUFBRTtRQUNqRSwwRkFBMEY7UUFDMUYsTUFBTSxRQUFRLEdBQWdDLGlDQUF1QixDQUFDO1FBQ3RFLDBCQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLDBCQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckcsTUFBTSxDQUFDLElBQUksQ0FBQyxpQ0FBdUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsMEJBQWUsQ0FBQyxDQUFDO0lBQ3pFLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTQUZFX1JPT1RfU0xPVF9PUkRJTkFMUyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHR5cGUgeyBSb290S2V5VHlwZSB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgU0FGRV9ST09UX1NMT1RTIH0gZnJvbSAnLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3NhZmUvcm9vdENvaW4nO1xuXG5kZXNjcmliZSgnU0FGRV9ST09UX1NMT1RTJywgZnVuY3Rpb24gKCkge1xuICBpdCgnc2hvdWxkIG1hdGNoIHRoZSBzbG90IG9yZGluYWxzIHNlcnZlZCBmcm9tIHN0YXRpY3MsIGluIG9yZGVyJywgZnVuY3Rpb24gKCkge1xuICAgIC8vIHR5cGVkIGFzIFJlY29yZDxSb290S2V5VHlwZSwgbnVtYmVyPiwgc28gYSBzbG90IG1pc3NpbmcgZnJvbSBzdGF0aWNzIGlzIGEgY29tcGlsZSBlcnJvclxuICAgIGNvbnN0IG9yZGluYWxzOiBSZWNvcmQ8Um9vdEtleVR5cGUsIG51bWJlcj4gPSBTQUZFX1JPT1RfU0xPVF9PUkRJTkFMUztcbiAgICBTQUZFX1JPT1RfU0xPVFMubWFwKChzbG90KSA9PiBvcmRpbmFsc1tzbG90XSkuc2hvdWxkLmRlZXBFcXVhbChTQUZFX1JPT1RfU0xPVFMubWFwKChfLCBpKSA9PiBpICsgMSkpO1xuICAgIE9iamVjdC5rZXlzKFNBRkVfUk9PVF9TTE9UX09SRElOQUxTKS5zaG91bGQuZGVlcEVxdWFsKFNBRkVfUk9PVF9TTE9UUyk7XG4gIH0pO1xufSk7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ import 'should';
2
+ //# sourceMappingURL=safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safe.d.ts","sourceRoot":"","sources":["../../../../../test/unit/bitgo/safe/safe.ts"],"names":[],"mappings":"AACA,OAAO,QAAQ,CAAC"}