@bitgo-beta/sdk-core 8.2.1-beta.113 → 8.2.1-beta.1131

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 (531) hide show
  1. package/CHANGELOG.md +2760 -0
  2. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts +0 -1
  3. package/dist/src/account-lib/baseCoin/baseTransaction.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts +3 -3
  5. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  6. package/dist/src/account-lib/baseCoin/baseTransactionBuilder.js +4 -3
  7. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts +1 -0
  8. package/dist/src/account-lib/baseCoin/ed25519KeyPair.d.ts.map +1 -1
  9. package/dist/src/account-lib/baseCoin/ed25519KeyPair.js +41 -29
  10. package/dist/src/account-lib/baseCoin/enum.d.ts +17 -3
  11. package/dist/src/account-lib/baseCoin/enum.d.ts.map +1 -1
  12. package/dist/src/account-lib/baseCoin/enum.js +32 -7
  13. package/dist/src/account-lib/baseCoin/errors.d.ts +3 -0
  14. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  15. package/dist/src/account-lib/baseCoin/errors.js +8 -2
  16. package/dist/src/account-lib/baseCoin/iface.d.ts +19 -35
  17. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  18. package/dist/src/account-lib/baseCoin/iface.js +26 -18
  19. package/dist/src/account-lib/baseCoin/index.d.ts +1 -1
  20. package/dist/src/account-lib/baseCoin/index.d.ts.map +1 -1
  21. package/dist/src/account-lib/baseCoin/index.js +8 -5
  22. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts +88 -0
  23. package/dist/src/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  24. package/dist/src/account-lib/baseCoin/messages/baseMessage.js +154 -0
  25. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +67 -0
  26. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  27. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilder.js +144 -0
  28. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +33 -0
  29. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  30. package/dist/src/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +45 -0
  31. package/dist/src/account-lib/baseCoin/messages/iface.d.ts +164 -0
  32. package/dist/src/account-lib/baseCoin/messages/iface.d.ts.map +1 -0
  33. package/dist/src/account-lib/baseCoin/messages/iface.js +3 -0
  34. package/dist/src/account-lib/baseCoin/messages/index.d.ts +6 -0
  35. package/dist/src/account-lib/baseCoin/messages/index.d.ts.map +1 -0
  36. package/dist/src/account-lib/baseCoin/messages/index.js +22 -0
  37. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts +3 -0
  38. package/dist/src/account-lib/baseCoin/messages/simple/index.d.ts.map +1 -0
  39. package/dist/src/account-lib/baseCoin/messages/simple/index.js +19 -0
  40. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts +13 -0
  41. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.d.ts.map +1 -0
  42. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessage.js +28 -0
  43. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts +21 -0
  44. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.d.ts.map +1 -0
  45. package/dist/src/account-lib/baseCoin/messages/simple/simpleMessageBuilder.js +28 -0
  46. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts +1 -2
  47. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.d.ts.map +1 -1
  48. package/dist/src/account-lib/baseCoin/secp256k1ExtendedKeyPair.js +38 -26
  49. package/dist/src/account-lib/index.js +23 -9
  50. package/dist/src/account-lib/mpc/index.d.ts +1 -1
  51. package/dist/src/account-lib/mpc/index.d.ts.map +1 -1
  52. package/dist/src/account-lib/mpc/index.js +6 -2
  53. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +38 -8
  54. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -1
  55. package/dist/src/account-lib/mpc/tss/ecdsa/ecdsa.js +493 -344
  56. package/dist/src/account-lib/mpc/tss/ecdsa/index.js +23 -9
  57. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts +2 -2
  58. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.d.ts.map +1 -1
  59. package/dist/src/account-lib/mpc/tss/ecdsa/rangeproof.js +3 -3
  60. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts +73 -52
  61. package/dist/src/account-lib/mpc/tss/ecdsa/types.d.ts.map +1 -1
  62. package/dist/src/account-lib/mpc/tss/ecdsa/types.js +1 -1
  63. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +0 -1
  64. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -1
  65. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +66 -69
  66. package/dist/src/account-lib/mpc/tss/eddsa/index.js +23 -9
  67. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +1 -1
  68. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -1
  69. package/dist/src/account-lib/mpc/tss/eddsa/types.js +1 -1
  70. package/dist/src/account-lib/mpc/tss/index.js +23 -9
  71. package/dist/src/account-lib/mpc/util.d.ts +7 -1
  72. package/dist/src/account-lib/mpc/util.d.ts.map +1 -1
  73. package/dist/src/account-lib/mpc/util.js +19 -1
  74. package/dist/src/account-lib/staking/index.js +6 -2
  75. package/dist/src/account-lib/staking/utils.js +3 -3
  76. package/dist/src/account-lib/util/crypto.d.ts +8 -2
  77. package/dist/src/account-lib/util/crypto.d.ts.map +1 -1
  78. package/dist/src/account-lib/util/crypto.js +69 -38
  79. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts +2 -1
  80. package/dist/src/account-lib/util/ed25519KeyDeriver.d.ts.map +1 -1
  81. package/dist/src/account-lib/util/ed25519KeyDeriver.js +5 -3
  82. package/dist/src/api/bip32path.js +2 -3
  83. package/dist/src/api/index.js +6 -2
  84. package/dist/src/api/types.d.ts +8 -0
  85. package/dist/src/api/types.d.ts.map +1 -1
  86. package/dist/src/api/types.js +1 -1
  87. package/dist/src/bitgo/address-book/address-book.d.ts +61 -0
  88. package/dist/src/bitgo/address-book/address-book.d.ts.map +1 -0
  89. package/dist/src/bitgo/address-book/address-book.js +139 -0
  90. package/dist/src/bitgo/address-book/index.d.ts +3 -0
  91. package/dist/src/bitgo/address-book/index.d.ts.map +1 -0
  92. package/dist/src/bitgo/address-book/index.js +19 -0
  93. package/dist/src/bitgo/address-book/types.d.ts +170 -0
  94. package/dist/src/bitgo/address-book/types.d.ts.map +1 -0
  95. package/dist/src/bitgo/address-book/types.js +3 -0
  96. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +90 -10
  97. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -1
  98. package/dist/src/bitgo/baseCoin/baseCoin.js +142 -16
  99. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +115 -19
  100. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -1
  101. package/dist/src/bitgo/baseCoin/iBaseCoin.js +7 -3
  102. package/dist/src/bitgo/baseCoin/index.js +6 -2
  103. package/dist/src/bitgo/bip32util.d.ts +3 -16
  104. package/dist/src/bitgo/bip32util.d.ts.map +1 -1
  105. package/dist/src/bitgo/bip32util.js +4 -56
  106. package/dist/src/bitgo/bitcoin.d.ts +0 -1
  107. package/dist/src/bitgo/bitcoin.d.ts.map +1 -1
  108. package/dist/src/bitgo/bitcoin.js +26 -13
  109. package/dist/src/bitgo/bitgoBase.d.ts +4 -1
  110. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -1
  111. package/dist/src/bitgo/bitgoBase.js +1 -1
  112. package/dist/src/bitgo/coinFactory.d.ts +17 -3
  113. package/dist/src/bitgo/coinFactory.d.ts.map +1 -1
  114. package/dist/src/bitgo/coinFactory.js +26 -3
  115. package/dist/src/bitgo/config.d.ts +116 -20
  116. package/dist/src/bitgo/config.d.ts.map +1 -1
  117. package/dist/src/bitgo/config.js +26 -15
  118. package/dist/src/bitgo/ecdh.d.ts +0 -1
  119. package/dist/src/bitgo/ecdh.d.ts.map +1 -1
  120. package/dist/src/bitgo/ecdh.js +26 -13
  121. package/dist/src/bitgo/enterprise/enterprise.d.ts +3 -13
  122. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -1
  123. package/dist/src/bitgo/enterprise/enterprise.js +39 -34
  124. package/dist/src/bitgo/enterprise/enterprises.js +27 -13
  125. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +2 -6
  126. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -1
  127. package/dist/src/bitgo/enterprise/iEnterprise.js +1 -1
  128. package/dist/src/bitgo/enterprise/index.js +6 -2
  129. package/dist/src/bitgo/environments.d.ts +69 -5
  130. package/dist/src/bitgo/environments.d.ts.map +1 -1
  131. package/dist/src/bitgo/environments.js +183 -32
  132. package/dist/src/bitgo/errors.d.ts +9 -0
  133. package/dist/src/bitgo/errors.d.ts.map +1 -1
  134. package/dist/src/bitgo/errors.js +20 -2
  135. package/dist/src/bitgo/index.d.ts +2 -1
  136. package/dist/src/bitgo/index.d.ts.map +1 -1
  137. package/dist/src/bitgo/index.js +28 -11
  138. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts +3 -3
  139. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.d.ts.map +1 -1
  140. package/dist/src/bitgo/inscriptionBuilder/iInscriptionBuilder.js +1 -1
  141. package/dist/src/bitgo/inscriptionBuilder/index.js +6 -2
  142. package/dist/src/bitgo/internal/index.js +6 -2
  143. package/dist/src/bitgo/internal/internal.js +5 -6
  144. package/dist/src/bitgo/internal/keycard.js +6 -7
  145. package/dist/src/bitgo/keychain/decryptKeychain.d.ts +13 -0
  146. package/dist/src/bitgo/keychain/decryptKeychain.d.ts.map +1 -0
  147. package/dist/src/bitgo/keychain/decryptKeychain.js +35 -0
  148. package/dist/src/bitgo/keychain/iKeychains.d.ts +58 -7
  149. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -1
  150. package/dist/src/bitgo/keychain/iKeychains.js +2 -2
  151. package/dist/src/bitgo/keychain/index.d.ts +1 -0
  152. package/dist/src/bitgo/keychain/index.d.ts.map +1 -1
  153. package/dist/src/bitgo/keychain/index.js +7 -2
  154. package/dist/src/bitgo/keychain/keychains.d.ts +13 -3
  155. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -1
  156. package/dist/src/bitgo/keychain/keychains.js +128 -37
  157. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts +3 -3
  158. package/dist/src/bitgo/keychain/ovcJsonCodec.d.ts.map +1 -1
  159. package/dist/src/bitgo/keychain/ovcJsonCodec.js +23 -9
  160. package/dist/src/bitgo/legacyBitcoin.d.ts +0 -1
  161. package/dist/src/bitgo/legacyBitcoin.d.ts.map +1 -1
  162. package/dist/src/bitgo/legacyBitcoin.js +27 -13
  163. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts +7 -0
  164. package/dist/src/bitgo/lightning/lightningWalletUtil.d.ts.map +1 -0
  165. package/dist/src/bitgo/lightning/lightningWalletUtil.js +25 -0
  166. package/dist/src/bitgo/market/iMarkets.d.ts +2 -2
  167. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -1
  168. package/dist/src/bitgo/market/index.js +6 -2
  169. package/dist/src/bitgo/market/markets.js +23 -9
  170. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +1 -0
  171. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -1
  172. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +4 -4
  173. package/dist/src/bitgo/pendingApproval/index.js +6 -2
  174. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +20 -8
  175. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -1
  176. package/dist/src/bitgo/pendingApproval/pendingApproval.js +221 -107
  177. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +23 -9
  178. package/dist/src/bitgo/proofs/WalletProofs.d.ts +19 -0
  179. package/dist/src/bitgo/proofs/WalletProofs.d.ts.map +1 -0
  180. package/dist/src/bitgo/proofs/WalletProofs.js +37 -0
  181. package/dist/src/bitgo/proofs/index.d.ts +2 -0
  182. package/dist/src/bitgo/proofs/index.d.ts.map +1 -0
  183. package/dist/src/bitgo/proofs/index.js +6 -0
  184. package/dist/src/bitgo/proofs/types.d.ts +80 -0
  185. package/dist/src/bitgo/proofs/types.d.ts.map +1 -0
  186. package/dist/src/bitgo/proofs/types.js +80 -0
  187. package/dist/src/bitgo/recovery/index.js +6 -2
  188. package/dist/src/bitgo/recovery/initiate.d.ts +8 -1
  189. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -1
  190. package/dist/src/bitgo/recovery/initiate.js +14 -8
  191. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts +129 -0
  192. package/dist/src/bitgo/staking/goStakingInterfaces.d.ts.map +1 -0
  193. package/dist/src/bitgo/staking/goStakingInterfaces.js +3 -0
  194. package/dist/src/bitgo/staking/goStakingWallet.d.ts +62 -0
  195. package/dist/src/bitgo/staking/goStakingWallet.d.ts.map +1 -0
  196. package/dist/src/bitgo/staking/goStakingWallet.js +143 -0
  197. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts +17 -0
  198. package/dist/src/bitgo/staking/iGoStakingWallet.d.ts.map +1 -0
  199. package/dist/src/bitgo/staking/iGoStakingWallet.js +3 -0
  200. package/dist/src/bitgo/staking/iStakingWallet.d.ts +133 -5
  201. package/dist/src/bitgo/staking/iStakingWallet.d.ts.map +1 -1
  202. package/dist/src/bitgo/staking/iStakingWallet.js +2 -2
  203. package/dist/src/bitgo/staking/index.d.ts +3 -0
  204. package/dist/src/bitgo/staking/index.d.ts.map +1 -1
  205. package/dist/src/bitgo/staking/index.js +9 -2
  206. package/dist/src/bitgo/staking/stakingWallet.d.ts +14 -2
  207. package/dist/src/bitgo/staking/stakingWallet.d.ts.map +1 -1
  208. package/dist/src/bitgo/staking/stakingWallet.js +104 -5
  209. package/dist/src/bitgo/trading/iTradingAccount.d.ts +2 -32
  210. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -1
  211. package/dist/src/bitgo/trading/iTradingAccount.js +1 -1
  212. package/dist/src/bitgo/trading/index.d.ts +1 -15
  213. package/dist/src/bitgo/trading/index.d.ts.map +1 -1
  214. package/dist/src/bitgo/trading/index.js +7 -17
  215. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts +8 -0
  216. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.d.ts.map +1 -0
  217. package/dist/src/bitgo/trading/network/decrypt-aes-gcm.js +31 -0
  218. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts +8 -0
  219. package/dist/src/bitgo/trading/network/decrypt-rsa.d.ts.map +1 -0
  220. package/dist/src/bitgo/trading/network/decrypt-rsa.js +23 -0
  221. package/dist/src/bitgo/trading/network/decrypt.d.ts +14 -0
  222. package/dist/src/bitgo/trading/network/decrypt.d.ts.map +1 -0
  223. package/dist/src/bitgo/trading/network/decrypt.js +23 -0
  224. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts +8 -0
  225. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.d.ts.map +1 -0
  226. package/dist/src/bitgo/trading/network/encrypt-aes-gcm.js +25 -0
  227. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts +8 -0
  228. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.d.ts.map +1 -0
  229. package/dist/src/bitgo/trading/network/encrypt-rsa-browser.js +65 -0
  230. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts +8 -0
  231. package/dist/src/bitgo/trading/network/encrypt-rsa.d.ts.map +1 -0
  232. package/dist/src/bitgo/trading/network/encrypt-rsa.js +23 -0
  233. package/dist/src/bitgo/trading/network/encrypt.d.ts +37 -0
  234. package/dist/src/bitgo/trading/network/encrypt.d.ts.map +1 -0
  235. package/dist/src/bitgo/trading/network/encrypt.js +58 -0
  236. package/dist/src/bitgo/trading/network/index.d.ts +5 -0
  237. package/dist/src/bitgo/trading/network/index.d.ts.map +1 -0
  238. package/dist/src/bitgo/trading/network/index.js +21 -0
  239. package/dist/src/bitgo/trading/network/network.d.ts +36 -0
  240. package/dist/src/bitgo/trading/network/network.d.ts.map +1 -0
  241. package/dist/src/bitgo/trading/network/network.js +101 -0
  242. package/dist/src/bitgo/trading/network/types.d.ts +277 -0
  243. package/dist/src/bitgo/trading/network/types.d.ts.map +1 -0
  244. package/dist/src/bitgo/trading/network/types.js +3 -0
  245. package/dist/src/bitgo/trading/network/utils.d.ts +20 -0
  246. package/dist/src/bitgo/trading/network/utils.d.ts.map +1 -0
  247. package/dist/src/bitgo/trading/network/utils.js +54 -0
  248. package/dist/src/bitgo/trading/tradingAccount.d.ts +11 -35
  249. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -1
  250. package/dist/src/bitgo/trading/tradingAccount.js +9 -96
  251. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts +27 -0
  252. package/dist/src/bitgo/tss/bitgoPubKeys.d.ts.map +1 -0
  253. package/dist/src/bitgo/tss/bitgoPubKeys.js +61 -0
  254. package/dist/src/bitgo/tss/common.d.ts +37 -5
  255. package/dist/src/bitgo/tss/common.d.ts.map +1 -1
  256. package/dist/src/bitgo/tss/common.js +103 -17
  257. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts +6 -4
  258. package/dist/src/bitgo/tss/ecdsa/ecdsa.d.ts.map +1 -1
  259. package/dist/src/bitgo/tss/ecdsa/ecdsa.js +78 -66
  260. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts +15 -0
  261. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  262. package/dist/src/bitgo/tss/ecdsa/ecdsaMPCv2.js +162 -0
  263. package/dist/src/bitgo/tss/ecdsa/index.d.ts +1 -0
  264. package/dist/src/bitgo/tss/ecdsa/index.d.ts.map +1 -1
  265. package/dist/src/bitgo/tss/ecdsa/index.js +25 -10
  266. package/dist/src/bitgo/tss/ecdsa/types.d.ts +27 -27
  267. package/dist/src/bitgo/tss/ecdsa/types.d.ts.map +1 -1
  268. package/dist/src/bitgo/tss/ecdsa/types.js +3 -3
  269. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts +15 -6
  270. package/dist/src/bitgo/tss/eddsa/eddsa.d.ts.map +1 -1
  271. package/dist/src/bitgo/tss/eddsa/eddsa.js +47 -40
  272. package/dist/src/bitgo/tss/eddsa/index.js +23 -9
  273. package/dist/src/bitgo/tss/eddsa/types.d.ts +4 -4
  274. package/dist/src/bitgo/tss/eddsa/types.d.ts.map +1 -1
  275. package/dist/src/bitgo/tss/index.d.ts +3 -2
  276. package/dist/src/bitgo/tss/index.d.ts.map +1 -1
  277. package/dist/src/bitgo/tss/index.js +26 -10
  278. package/dist/src/bitgo/tss/types.d.ts +3 -3
  279. package/dist/src/bitgo/tss/types.d.ts.map +1 -1
  280. package/dist/src/bitgo/tss/types.js +2 -2
  281. package/dist/src/bitgo/types.d.ts +3 -3
  282. package/dist/src/bitgo/types.d.ts.map +1 -1
  283. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +11 -0
  284. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -1
  285. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +66 -10
  286. package/dist/src/bitgo/utils/codecProps.js +24 -11
  287. package/dist/src/bitgo/utils/decode.d.ts.map +1 -1
  288. package/dist/src/bitgo/utils/decode.js +30 -16
  289. package/dist/src/bitgo/utils/index.d.ts +3 -2
  290. package/dist/src/bitgo/utils/index.d.ts.map +1 -1
  291. package/dist/src/bitgo/utils/index.js +26 -11
  292. package/dist/src/bitgo/utils/messageTypes.d.ts +37 -0
  293. package/dist/src/bitgo/utils/messageTypes.d.ts.map +1 -0
  294. package/dist/src/bitgo/utils/messageTypes.js +14 -0
  295. package/dist/src/bitgo/utils/mpcUtils.d.ts +2 -3
  296. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -1
  297. package/dist/src/bitgo/utils/mpcUtils.js +45 -13
  298. package/dist/src/bitgo/utils/notEmpty.d.ts +2 -0
  299. package/dist/src/bitgo/utils/notEmpty.d.ts.map +1 -0
  300. package/dist/src/bitgo/utils/notEmpty.js +7 -0
  301. package/dist/src/bitgo/utils/opengpgUtils.d.ts +11 -9
  302. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -1
  303. package/dist/src/bitgo/utils/opengpgUtils.js +68 -64
  304. package/dist/src/bitgo/utils/postWithCodec.d.ts.map +1 -1
  305. package/dist/src/bitgo/utils/postWithCodec.js +4 -38
  306. package/dist/src/bitgo/utils/promise-utils.d.ts +1 -1
  307. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -1
  308. package/dist/src/bitgo/utils/promise-utils.js +2 -3
  309. package/dist/src/bitgo/utils/transactionUtils.d.ts +9 -0
  310. package/dist/src/bitgo/utils/transactionUtils.d.ts.map +1 -0
  311. package/dist/src/bitgo/utils/transactionUtils.js +29 -0
  312. package/dist/src/bitgo/utils/triple.d.ts +1 -1
  313. package/dist/src/bitgo/utils/triple.d.ts.map +1 -1
  314. package/dist/src/bitgo/utils/triple.js +2 -3
  315. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts +52 -14
  316. package/dist/src/bitgo/utils/tss/baseTSSUtils.d.ts.map +1 -1
  317. package/dist/src/bitgo/utils/tss/baseTSSUtils.js +186 -44
  318. package/dist/src/bitgo/utils/tss/baseTypes.d.ts +158 -37
  319. package/dist/src/bitgo/utils/tss/baseTypes.d.ts.map +1 -1
  320. package/dist/src/bitgo/utils/tss/baseTypes.js +22 -20
  321. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts +23 -0
  322. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.d.ts.map +1 -0
  323. package/dist/src/bitgo/utils/tss/ecdsa/SMC/utils.js +157 -0
  324. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts +28 -0
  325. package/dist/src/bitgo/utils/tss/ecdsa/base.d.ts.map +1 -0
  326. package/dist/src/bitgo/utils/tss/ecdsa/base.js +53 -0
  327. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts +17 -50
  328. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.d.ts.map +1 -1
  329. package/dist/src/bitgo/utils/tss/ecdsa/ecdsa.js +132 -238
  330. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts +199 -0
  331. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.d.ts.map +1 -0
  332. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2.js +950 -0
  333. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts +8 -0
  334. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.d.ts.map +1 -0
  335. package/dist/src/bitgo/utils/tss/ecdsa/ecdsaMPCv2KeyGenSender.js +13 -0
  336. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts +4 -0
  337. package/dist/src/bitgo/utils/tss/ecdsa/index.d.ts.map +1 -1
  338. package/dist/src/bitgo/utils/tss/ecdsa/index.js +10 -2
  339. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts +7 -10
  340. package/dist/src/bitgo/utils/tss/ecdsa/types.d.ts.map +1 -1
  341. package/dist/src/bitgo/utils/tss/ecdsa/types.js +1 -1
  342. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts +107 -0
  343. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.d.ts.map +1 -0
  344. package/dist/src/bitgo/utils/tss/ecdsa/typesMPCv2.js +55 -0
  345. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts +22 -8
  346. package/dist/src/bitgo/utils/tss/eddsa/eddsa.d.ts.map +1 -1
  347. package/dist/src/bitgo/utils/tss/eddsa/eddsa.js +111 -60
  348. package/dist/src/bitgo/utils/tss/eddsa/index.js +23 -9
  349. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts +7 -7
  350. package/dist/src/bitgo/utils/tss/eddsa/types.d.ts.map +1 -1
  351. package/dist/src/bitgo/utils/tss/index.js +23 -9
  352. package/dist/src/bitgo/utils/txRequest.d.ts +10 -0
  353. package/dist/src/bitgo/utils/txRequest.d.ts.map +1 -0
  354. package/dist/src/bitgo/utils/txRequest.js +47 -0
  355. package/dist/src/bitgo/utils/util.js +24 -10
  356. package/dist/src/bitgo/utils/wallet.d.ts +7 -0
  357. package/dist/src/bitgo/utils/wallet.d.ts.map +1 -0
  358. package/dist/src/bitgo/utils/wallet.js +48 -0
  359. package/dist/src/bitgo/wallet/BuildParams.d.ts +23 -1
  360. package/dist/src/bitgo/wallet/BuildParams.d.ts.map +1 -1
  361. package/dist/src/bitgo/wallet/BuildParams.js +40 -12
  362. package/dist/src/bitgo/wallet/iWallet.d.ts +220 -19
  363. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -1
  364. package/dist/src/bitgo/wallet/iWallet.js +1 -1
  365. package/dist/src/bitgo/wallet/iWallets.d.ts +91 -16
  366. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -1
  367. package/dist/src/bitgo/wallet/iWallets.js +43 -3
  368. package/dist/src/bitgo/wallet/index.js +6 -2
  369. package/dist/src/bitgo/wallet/wallet.d.ts +198 -25
  370. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -1
  371. package/dist/src/bitgo/wallet/wallet.js +1017 -311
  372. package/dist/src/bitgo/wallet/wallets.d.ts +97 -9
  373. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -1
  374. package/dist/src/bitgo/wallet/wallets.js +870 -193
  375. package/dist/src/bitgo/webhook/index.js +6 -2
  376. package/dist/src/bitgo/webhook/webhooks.js +23 -9
  377. package/dist/src/coins/fiataed.d.ts +32 -0
  378. package/dist/src/coins/fiataed.d.ts.map +1 -0
  379. package/dist/src/coins/fiataed.js +61 -0
  380. package/dist/src/coins/fiateur.d.ts +3 -2
  381. package/dist/src/coins/fiateur.d.ts.map +1 -1
  382. package/dist/src/coins/fiateur.js +5 -1
  383. package/dist/src/coins/fiatgbp.d.ts +3 -2
  384. package/dist/src/coins/fiatgbp.d.ts.map +1 -1
  385. package/dist/src/coins/fiatgbp.js +5 -1
  386. package/dist/src/coins/fiatsgd.d.ts +32 -0
  387. package/dist/src/coins/fiatsgd.d.ts.map +1 -0
  388. package/dist/src/coins/fiatsgd.js +61 -0
  389. package/dist/src/coins/fiatusd.d.ts +3 -2
  390. package/dist/src/coins/fiatusd.d.ts.map +1 -1
  391. package/dist/src/coins/fiatusd.js +5 -1
  392. package/dist/src/coins/index.d.ts +4 -0
  393. package/dist/src/coins/index.d.ts.map +1 -1
  394. package/dist/src/coins/index.js +10 -2
  395. package/dist/src/coins/ofc.d.ts +3 -2
  396. package/dist/src/coins/ofc.d.ts.map +1 -1
  397. package/dist/src/coins/ofc.js +6 -2
  398. package/dist/src/coins/ofcToken.js +2 -2
  399. package/dist/src/coins/susd.d.ts +3 -2
  400. package/dist/src/coins/susd.d.ts.map +1 -1
  401. package/dist/src/coins/susd.js +5 -1
  402. package/dist/src/coins/tfiataed.d.ts +11 -0
  403. package/dist/src/coins/tfiataed.d.ts.map +1 -0
  404. package/dist/src/coins/tfiataed.js +17 -0
  405. package/dist/src/coins/tfiatsgd.d.ts +11 -0
  406. package/dist/src/coins/tfiatsgd.d.ts.map +1 -0
  407. package/dist/src/coins/tfiatsgd.js +17 -0
  408. package/dist/src/common.js +27 -13
  409. package/dist/src/index.d.ts +2 -1
  410. package/dist/src/index.d.ts.map +1 -1
  411. package/dist/src/index.js +26 -11
  412. package/dist/src/units.js +5 -6
  413. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts +2 -0
  414. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.d.ts.map +1 -0
  415. package/dist/test/unit/account-lib/baseCoin/messages/baseMessage.js +207 -0
  416. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts +2 -0
  417. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.d.ts.map +1 -0
  418. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilder.js +174 -0
  419. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts +2 -0
  420. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.d.ts.map +1 -0
  421. package/dist/test/unit/account-lib/baseCoin/messages/baseMessageBuilderFactory.js +108 -0
  422. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts +46 -0
  423. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.d.ts.map +1 -0
  424. package/dist/test/unit/account-lib/baseCoin/messages/fixtures.js +69 -0
  425. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts +2 -0
  426. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.d.ts.map +1 -0
  427. package/dist/test/unit/account-lib/mpc/tss/ecdsa/ecdsa.js +233 -0
  428. package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts +3 -0
  429. package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.d.ts.map +1 -0
  430. package/dist/test/unit/account-lib/mpc/tss/ecdsa/fixtures.js +24 -0
  431. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts +2 -0
  432. package/dist/test/unit/bitgo/trading/network/encrypt.d.ts.map +1 -0
  433. package/dist/test/unit/bitgo/trading/network/encrypt.js +71 -0
  434. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.d.ts +2 -0
  435. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  436. package/dist/test/unit/bitgo/utils/abstractUtxoCoinUtil.js +45 -0
  437. package/dist/test/unit/bitgo/utils/messageTypes.d.ts +2 -0
  438. package/dist/test/unit/bitgo/utils/messageTypes.d.ts.map +1 -0
  439. package/dist/test/unit/bitgo/utils/messageTypes.js +64 -0
  440. package/dist/test/unit/bitgo/utils/notEmpty.d.ts +2 -0
  441. package/dist/test/unit/bitgo/utils/notEmpty.d.ts.map +1 -0
  442. package/dist/test/unit/bitgo/utils/notEmpty.js +15 -0
  443. package/dist/test/unit/bitgo/utils/postWithCodec.js +32 -38
  444. package/dist/test/unit/bitgo/utils/txRequest.d.ts +2 -0
  445. package/dist/test/unit/bitgo/utils/txRequest.d.ts.map +1 -0
  446. package/dist/test/unit/bitgo/utils/txRequest.js +105 -0
  447. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts +2 -0
  448. package/dist/test/unit/bitgo/wallet/BuildParams.d.ts.map +1 -0
  449. package/dist/test/unit/bitgo/wallet/BuildParams.js +68 -0
  450. package/dist/test/unit/bitgo/wallet/SendTransactionRequest.js +27 -18
  451. package/dist/test/unit/units.js +63 -63
  452. package/dist/tsconfig.tsbuildinfo +1 -1
  453. package/package.json +23 -20
  454. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts +0 -77
  455. package/dist/src/account-lib/baseCoin/blsKeyPair.d.ts.map +0 -1
  456. package/dist/src/account-lib/baseCoin/blsKeyPair.js +0 -209
  457. package/dist/src/bitgo/lightning/iLightning.d.ts +0 -186
  458. package/dist/src/bitgo/lightning/iLightning.d.ts.map +0 -1
  459. package/dist/src/bitgo/lightning/iLightning.js +0 -106
  460. package/dist/src/bitgo/lightning/index.d.ts +0 -5
  461. package/dist/src/bitgo/lightning/index.d.ts.map +0 -1
  462. package/dist/src/bitgo/lightning/index.js +0 -17
  463. package/dist/src/bitgo/lightning/lightning.d.ts +0 -25
  464. package/dist/src/bitgo/lightning/lightning.d.ts.map +0 -1
  465. package/dist/src/bitgo/lightning/lightning.js +0 -111
  466. package/dist/src/bitgo/lightning/lightningUtils.d.ts +0 -46
  467. package/dist/src/bitgo/lightning/lightningUtils.d.ts.map +0 -1
  468. package/dist/src/bitgo/lightning/lightningUtils.js +0 -133
  469. package/dist/src/bitgo/lightning/lnurlCodec.d.ts +0 -3
  470. package/dist/src/bitgo/lightning/lnurlCodec.d.ts.map +0 -1
  471. package/dist/src/bitgo/lightning/lnurlCodec.js +0 -28
  472. package/dist/src/bitgo/trading/affirmation.d.ts +0 -35
  473. package/dist/src/bitgo/trading/affirmation.d.ts.map +0 -1
  474. package/dist/src/bitgo/trading/affirmation.js +0 -53
  475. package/dist/src/bitgo/trading/affirmations.d.ts +0 -23
  476. package/dist/src/bitgo/trading/affirmations.d.ts.map +0 -1
  477. package/dist/src/bitgo/trading/affirmations.js +0 -45
  478. package/dist/src/bitgo/trading/iAffirmation.d.ts +0 -15
  479. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +0 -1
  480. package/dist/src/bitgo/trading/iAffirmation.js +0 -13
  481. package/dist/src/bitgo/trading/iAffirmations.d.ts +0 -10
  482. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +0 -1
  483. package/dist/src/bitgo/trading/iAffirmations.js +0 -3
  484. package/dist/src/bitgo/trading/iSettlement.d.ts +0 -25
  485. package/dist/src/bitgo/trading/iSettlement.d.ts.map +0 -1
  486. package/dist/src/bitgo/trading/iSettlement.js +0 -17
  487. package/dist/src/bitgo/trading/iSettlements.d.ts +0 -19
  488. package/dist/src/bitgo/trading/iSettlements.d.ts.map +0 -1
  489. package/dist/src/bitgo/trading/iSettlements.js +0 -3
  490. package/dist/src/bitgo/trading/iTradingPartner.d.ts +0 -14
  491. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +0 -1
  492. package/dist/src/bitgo/trading/iTradingPartner.js +0 -17
  493. package/dist/src/bitgo/trading/iTradingPartners.d.ts +0 -15
  494. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +0 -1
  495. package/dist/src/bitgo/trading/iTradingPartners.js +0 -9
  496. package/dist/src/bitgo/trading/lock.d.ts +0 -16
  497. package/dist/src/bitgo/trading/lock.d.ts.map +0 -1
  498. package/dist/src/bitgo/trading/lock.js +0 -12
  499. package/dist/src/bitgo/trading/payload.d.ts +0 -22
  500. package/dist/src/bitgo/trading/payload.d.ts.map +0 -1
  501. package/dist/src/bitgo/trading/payload.js +0 -3
  502. package/dist/src/bitgo/trading/settlement.d.ts +0 -16
  503. package/dist/src/bitgo/trading/settlement.d.ts.map +0 -1
  504. package/dist/src/bitgo/trading/settlement.js +0 -21
  505. package/dist/src/bitgo/trading/settlements.d.ts +0 -32
  506. package/dist/src/bitgo/trading/settlements.d.ts.map +0 -1
  507. package/dist/src/bitgo/trading/settlements.js +0 -61
  508. package/dist/src/bitgo/trading/trade.d.ts +0 -29
  509. package/dist/src/bitgo/trading/trade.d.ts.map +0 -1
  510. package/dist/src/bitgo/trading/trade.js +0 -11
  511. package/dist/src/bitgo/trading/tradingPartner.d.ts +0 -26
  512. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +0 -1
  513. package/dist/src/bitgo/trading/tradingPartner.js +0 -31
  514. package/dist/src/bitgo/trading/tradingPartners.d.ts +0 -24
  515. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +0 -1
  516. package/dist/src/bitgo/trading/tradingPartners.js +0 -32
  517. package/dist/src/bitgo/utils/blsUtils.d.ts +0 -52
  518. package/dist/src/bitgo/utils/blsUtils.d.ts.map +0 -1
  519. package/dist/src/bitgo/utils/blsUtils.js +0 -237
  520. package/dist/src/bitgo/utils/iBlsUtils.d.ts +0 -14
  521. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +0 -1
  522. package/dist/src/bitgo/utils/iBlsUtils.js +0 -3
  523. package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts +0 -92
  524. package/dist/src/bitgo/wallet/SendTransactionRequest.d.ts.map +0 -1
  525. package/dist/src/bitgo/wallet/SendTransactionRequest.js +0 -41
  526. package/dist/src/openssl/index.d.ts +0 -5
  527. package/dist/src/openssl/index.d.ts.map +0 -1
  528. package/dist/src/openssl/index.js +0 -9
  529. package/dist/test/unit/openssl.d.ts +0 -2
  530. package/dist/test/unit/openssl.d.ts.map +0 -1
  531. package/dist/test/unit/openssl.js +0 -39
@@ -1,7 +1,13 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.StakingWallet = void 0;
4
7
  const utils_1 = require("../utils");
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const transactionUtils_1 = require("../utils/transactionUtils");
10
+ const debug_1 = __importDefault(require("debug"));
5
11
  class StakingWallet {
6
12
  constructor(wallet, isEthTss) {
7
13
  this.wallet = wallet;
@@ -92,7 +98,7 @@ class StakingWallet {
92
98
  * @param transaction - staking transaction to build
93
99
  */
94
100
  async build(transaction) {
95
- if ((this.wallet.baseCoin.supportsTss() && this.wallet.baseCoin.getFamily() !== 'eth') || this.isEthTss) {
101
+ if ((this.wallet.multisigType() === 'tss' && this.wallet.baseCoin.getFamily() !== 'eth') || this.isEthTss) {
96
102
  if (!transaction.txRequestId) {
97
103
  throw new Error('txRequestId is required to sign and send');
98
104
  }
@@ -111,9 +117,14 @@ class StakingWallet {
111
117
  if (!transaction.buildParams) {
112
118
  throw Error(`Staking transaction ${transaction.id} build params not expanded`);
113
119
  }
120
+ const isBtcUndelegate = this.wallet.baseCoin.getFamily() === 'btc' &&
121
+ transaction.transactionType.toLowerCase() === 'undelegate_withdraw';
122
+ const wallet = isBtcUndelegate
123
+ ? await this.getDescriptorWallet(transaction)
124
+ : await this.getWalletForBuildingAndSigning();
114
125
  return {
115
126
  transaction: transaction,
116
- result: await (await this.getWalletForBuildingAndSigning()).prebuildTransaction(transaction.buildParams),
127
+ result: await wallet.prebuildTransaction(transaction.buildParams),
117
128
  };
118
129
  }
119
130
  }
@@ -124,13 +135,18 @@ class StakingWallet {
124
135
  */
125
136
  async sign(signOptions, stakingPrebuildTransaction) {
126
137
  const reqId = new utils_1.RequestTracer();
127
- const keychain = await this.wallet.baseCoin.keychains().getKeysForSigning({
138
+ const isBtcUndelegate = this.wallet.baseCoin.getFamily() === 'btc' &&
139
+ stakingPrebuildTransaction.transaction.transactionType.toLowerCase() === 'undelegate_withdraw';
140
+ const wallet = isBtcUndelegate
141
+ ? await this.getDescriptorWallet(stakingPrebuildTransaction.transaction)
142
+ : await this.getWalletForBuildingAndSigning();
143
+ const keychain = await wallet.baseCoin.keychains().getKeysForSigning({
128
144
  wallet: this.wallet,
129
145
  reqId: reqId,
130
146
  });
131
147
  return {
132
148
  transaction: stakingPrebuildTransaction.transaction,
133
- signed: await (await this.getWalletForBuildingAndSigning()).signTransaction({
149
+ signed: await wallet.signTransaction({
134
150
  txPrebuild: stakingPrebuildTransaction.result,
135
151
  walletPassphrase: signOptions.walletPassphrase,
136
152
  keychain: keychain[0],
@@ -152,6 +168,7 @@ class StakingWallet {
152
168
  return signedTransaction.transaction;
153
169
  }
154
170
  /**
171
+ * @Deprecated use buildAndSign
155
172
  * Build, sign and send the transaction.
156
173
  * @param signOptions
157
174
  * @param transaction
@@ -161,6 +178,28 @@ class StakingWallet {
161
178
  return this.send(result);
162
179
  });
163
180
  }
181
+ /**
182
+ * Create prebuilt staking transaction.
183
+ *
184
+ * for transactions with tx request id (TSS transactions), we need to delete signature shares before creating prebuild transaction
185
+ * we only need to get transaction build params if they exist to pre build
186
+ *
187
+ * @param transaction
188
+ */
189
+ async prebuildSelfManagedStakingTransaction(transaction) {
190
+ if (transaction.txRequestId) {
191
+ await this.tssUtil.deleteSignatureShares(transaction.txRequestId);
192
+ }
193
+ const buildParams = (await this.expandBuildParams(transaction)).buildParams;
194
+ const formattedParams = {
195
+ ...buildParams,
196
+ coin: this.coin,
197
+ walletId: this.walletId,
198
+ walletType: this.wallet.type(),
199
+ preview: true,
200
+ };
201
+ return await (await this.getWalletForBuildingAndSigning()).prebuildTransaction(formattedParams);
202
+ }
164
203
  /**
165
204
  * Build and sign the transaction.
166
205
  * @param signOptions
@@ -168,6 +207,11 @@ class StakingWallet {
168
207
  */
169
208
  async buildAndSign(signOptions, transaction) {
170
209
  const builtTx = await this.build(transaction);
210
+ // default to verifying a transaction unless explicitly skipped
211
+ const skipVerification = signOptions.transactionVerificationOptions?.skipTransactionVerification ?? false;
212
+ if (!isStakingTxRequestPrebuildResult(builtTx.result) && !skipVerification) {
213
+ await this.validateBuiltStakingTransaction(transaction, builtTx);
214
+ }
171
215
  return await this.sign(signOptions, builtTx);
172
216
  }
173
217
  async expandBuildParams(stakingTransaction) {
@@ -230,6 +274,61 @@ class StakingWallet {
230
274
  return true;
231
275
  }
232
276
  }
277
+ async getDescriptorWallet(transaction) {
278
+ (0, assert_1.default)(transaction.buildParams?.senderWalletId, 'senderWalletId is required for btc undelegate transaction');
279
+ return await this.wallet.baseCoin.wallets().get({ id: transaction.buildParams.senderWalletId });
280
+ }
281
+ async validateBuiltStakingTransaction(transaction, prebuiltStakingTransaction) {
282
+ const { buildParams } = transaction;
283
+ const { result } = prebuiltStakingTransaction;
284
+ const coin = this.wallet.baseCoin;
285
+ (0, debug_1.default)(`Validating staking transaction ${transaction.stakingRequestId} with prebuilt transaction`);
286
+ if (!('txHex' in result) || !result.txHex) {
287
+ (0, debug_1.default)(`Skipping validation for staking transaction ${transaction.stakingRequestId} - txHex is undefined`);
288
+ return;
289
+ }
290
+ const explainedTransaction = await coin.explainTransaction(result);
291
+ if (buildParams?.recipients) {
292
+ const userRecipientMap = new Map(buildParams.recipients.map((recipient) => [recipient.address.toLowerCase(), recipient]));
293
+ const platformRecipientMap = new Map((explainedTransaction?.outputs ?? []).map((recipient) => [recipient.address.toLowerCase(), recipient]));
294
+ const mismatchErrors = [];
295
+ for (const [recipientAddress, recipientInfo] of platformRecipientMap) {
296
+ if (userRecipientMap.has(recipientAddress)) {
297
+ const userRecipient = userRecipientMap.get(recipientAddress);
298
+ if (!userRecipient) {
299
+ console.error('Unable to determine recipient address');
300
+ return;
301
+ }
302
+ const matchResult = (0, transactionUtils_1.transactionRecipientsMatch)(userRecipient, recipientInfo);
303
+ if (!matchResult.exactMatch) {
304
+ if (!matchResult.tokenMatch) {
305
+ mismatchErrors.push(`Invalid token ${recipientInfo.tokenName} transfer with amount ${recipientInfo.amount} to ${recipientInfo.address} found in built transaction, specified ${userRecipient.tokenName}`);
306
+ }
307
+ if (!matchResult.amountMatch) {
308
+ mismatchErrors.push(`Invalid recipient amount for ${recipientInfo.address}, specified ${userRecipient.amount} got ${recipientInfo.amount}`);
309
+ }
310
+ }
311
+ }
312
+ else {
313
+ mismatchErrors.push(`Invalid recipient address: ${recipientAddress}`);
314
+ }
315
+ }
316
+ const missingRecipientAddresses = Array.from(userRecipientMap.keys()).filter((address) => !platformRecipientMap.has(address));
317
+ if (missingRecipientAddresses.length > 0) {
318
+ mismatchErrors.push(`Missing recipient address(es): ${missingRecipientAddresses.join(', ')}`);
319
+ }
320
+ if (mismatchErrors.length > 0) {
321
+ console.error(mismatchErrors.join(', '));
322
+ return;
323
+ }
324
+ }
325
+ else {
326
+ (0, debug_1.default)(`Cannot validate staking transaction ${transaction.stakingRequestId} without specified build params`);
327
+ }
328
+ }
233
329
  }
234
330
  exports.StakingWallet = StakingWallet;
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1dhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9zdGFraW5nL3N0YWtpbmdXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBcUJBLG9DQUE4RDtBQUU5RCxNQUFhLGFBQWE7SUFReEIsWUFBWSxNQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFxQjtRQUMvQixPQUFPLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBMkM7UUFDdkQsT0FBTyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFP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V0FBVyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7Z0JBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLO3FCQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztxQkFDM0MsT0FBTyxFQUFFO3FCQUNULEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUNsQztZQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO1NBQy9CO2FBQU07WUFDTCxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxrQkFBa0I7UUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsS0FBSyxLQUFLLEVBQUU7WUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7U0FDdkI7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzdDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLEtBQUssT0FBTyxDQUFDO1NBQzNEO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztDQUNGO0FBblJELHNDQW1SQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7XG4gIERlbGVnYXRpb25PcHRpb25zLFxuICBEZWxlZ2F0aW9uUmVzdWx0cyxcbiAgSVN0YWtpbmdXYWxsZXQsXG4gIFN0YWtlT3B0aW9ucyxcbiAgU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQsXG4gIFN0YWtpbmdSZXF1ZXN0LFxuICBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgU3Rha2luZ1RyYW5zYWN0aW9uLFxuICBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zLFxuICBUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbixcbiAgVW5zdGFrZU9wdGlvbnMsXG4gIEV0aFVuc3Rha2VPcHRpb25zLFxuICBDbGFpbVJld2FyZHNPcHRpb25zLFxufSBmcm9tICcuL2lTdGFraW5nV2FsbGV0JztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcbmltcG9ydCB7IElUc3NVdGlscywgUmVxdWVzdFRyYWNlciwgVHNzVXRpbHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nV2FsbGV0IGltcGxlbWVudHMgSVN0YWtpbmdXYWxsZXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgdG9rZW5QYXJlbnRXYWxsZXQ/OiBJV2FsbGV0O1xuICBwcml2YXRlIHJlYWRvbmx5IGlzRXRoVHNzOiBib29sZWFuO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG4gIHB1YmxpYyB0c3NVdGlsOiBJVHNzVXRpbHM7XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0LCBpc0V0aFRzczogYm9vbGVhbikge1xuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuICAgIHRoaXMuYml0Z28gPSB3YWxsZXQuYml0Z287XG4gICAgdGhpcy50c3NVdGlsID0gbmV3IFRzc1V0aWxzKHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmJhc2VDb2luLCB0aGlzLndhbGxldCk7XG4gICAgdGhpcy5pc0V0aFRzcyA9IGlzRXRoVHNzO1xuICB9XG5cbiAgZ2V0IHdhbGxldElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMud2FsbGV0LmlkKCk7XG4gIH1cblxuICBnZXQgY29pbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndhbGxldC5iYXNlQ29pbi50b2tlbkNvbmZpZyA/IHRoaXMud2FsbGV0LmJhc2VDb2luLnRva2VuQ29uZmlnLnR5cGUgOiB0aGlzLndhbGxldC5jb2luKCk7XG4gIH1cblxuICAvKipcbiAgICogU3Rha2UgY29pbnNcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBzdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHN0YWtlKG9wdGlvbnM6IFN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnU1RBS0UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN0YWtlIGNvaW5zXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gdW5zdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHVuc3Rha2Uob3B0aW9uczogVW5zdGFrZU9wdGlvbnMgfCBFdGhVbnN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnVU5TVEFLRScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBhIHJlcXVlc3QgdG8gc3dpdGNoIHRoZSB2YWxpZGF0b3IgdXNlZCBmb3IgYSBzcGVjaWZpYyBkZWxlZ2F0aW9uXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiB3aXRoIHRoZSBuZXcgdmFsaWRhdG9yIGFkZHJlc3MgYW5kIG1hcmsgdGhlIG9sZCBkZWxlZ2F0aW9uIGFzIGluYWN0aXZlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gc3dpdGNoIHZhbGlkYXRvciBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHN3aXRjaFZhbGlkYXRvcihvcHRpb25zOiBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNyZWF0ZVN0YWtpbmdSZXF1ZXN0KG9wdGlvbnMsICdTV0lUQ0hfVkFMSURBVE9SJyk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0IGEgcmVxdWVzdCB0byBjbGFpbSByZXdhcmRzIGZvciBhIHNwZWNpZmljIGRlbGVnYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBjbGFpbSByZXdhcmRzIG9wdGlvbnNcbiAgICogQHJldHVybiBTdGFraW5nUmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgY2xhaW1SZXdhcmRzKG9wdGlvbnM6IENsYWltUmV3YXJkc09wdGlvbnMpOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlU3Rha2luZ1JlcXVlc3Qob3B0aW9ucywgJ0NMQUlNX1JFV0FSRFMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgc3Rha2luZyByZXF1ZXN0XG4gICAqIEBwYXJhbSBzdGFraW5nUmVxdWVzdElkIC0gaWQgb2YgdGhlIHN0YWtpbmcgcmVxdWVzdCB0byBjYW5jZWxcbiAgICogQHJldHVybiBTdGFraW5nUmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgY2FuY2VsU3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmRlbCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkKSkpLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGRlbGVnYXRpb25zIGZvciBhIHNwZWNpZmljIHdhbGxldFxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIHVuc3Rha2Ugb3B0aW9uc1xuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBkZWxlZ2F0aW9ucyhvcHRpb25zOiBEZWxlZ2F0aW9uT3B0aW9ucyk6IFByb21pc2U8RGVsZWdhdGlvblJlc3VsdHM+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREZWxlZ2F0aW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzdGFraW5nIHJlcXVlc3QgYnkgSURcbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWQgLSBpZCBvZiB0aGUgc3Rha2luZyByZXF1ZXN0IHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIGdldFN0YWtpbmdSZXF1ZXN0KHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1JlcXVlc3RVcmwoc3Rha2luZ1JlcXVlc3RJZCkpKS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJhbnNhY3Rpb25zIHJlYWR5IHRvIHNpZ25cbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWRcbiAgICogQHJldHVybiBUcmFuc2FjdGlvbnNSZWFkeVRvU2lnblxuICAgKi9cbiAgYXN5bmMgZ2V0VHJhbnNhY3Rpb25zUmVhZHlUb1NpZ24oc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbj4ge1xuICAgIGNvbnN0IHN0YWtpbmdSZXF1ZXN0OiBTdGFraW5nUmVxdWVzdCA9IGF3YWl0IHRoaXMuZ2V0U3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZCk7XG4gICAgY29uc3QgcmVhZHlUb1NpZ246IFN0YWtpbmdUcmFuc2FjdGlvbltdID0gc3Rha2luZ1JlcXVlc3QudHJhbnNhY3Rpb25zLmZpbHRlcihcbiAgICAgICh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKSA9PiB0cmFuc2FjdGlvbi5zdGF0dXMgPT09IGBSRUFEWWBcbiAgICApO1xuICAgIGNvbnN0IG5ld1RyYW5zYWN0aW9uczogU3Rha2luZ1RyYW5zYWN0aW9uW10gPSBzdGFraW5nUmVxdWVzdC50cmFuc2FjdGlvbnMuZmlsdGVyKFxuICAgICAgKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pID0+IHRyYW5zYWN0aW9uLnN0YXR1cyA9PT0gYE5FV2BcbiAgICApO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICBhbGxTaWduaW5nQ29tcGxldGU6XG4gICAgICAgIHN0YWtpbmdSZXF1ZXN0LnRyYW5zYWN0aW9ucy5sZW5ndGggPiAwICYmIG5ld1RyYW5zYWN0aW9ucy5sZW5ndGggPT09IDAgJiYgcmVhZHlUb1NpZ24ubGVuZ3RoID09PSAwLFxuICAgICAgdHJhbnNhY3Rpb25zOiByZWFkeVRvU2lnbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKiBJZiBUU1MgZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMsIGVsc2UgZXhwYW5kIGJ1aWxkIHBhcmFtcyBhbmQgdGhlbiBidWlsZFxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBzdGFraW5nIHRyYW5zYWN0aW9uIHRvIGJ1aWxkXG4gICAqL1xuICBhc3luYyBidWlsZCh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIGlmICgodGhpcy53YWxsZXQuYmFzZUNvaW4uc3VwcG9ydHNUc3MoKSAmJiB0aGlzLndhbGxldC5iYXNlQ29pbi5nZXRGYW1pbHkoKSAhPT0gJ2V0aCcpIHx8IHRoaXMuaXNFdGhUc3MpIHtcbiAgICAgIGlmICghdHJhbnNhY3Rpb24udHhSZXF1ZXN0SWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd0eFJlcXVlc3RJZCBpcyByZXF1aXJlZCB0byBzaWduIGFuZCBzZW5kJyk7XG4gICAgICB9XG4gICAgICAvLyBkZWxldGUgc2lnbmF0dXJlIHNoYXJlcyBiZWZvcmUgc2lnbmluZyBmb3IgdHJhbnNhY3Rpb24gcmVxdWVzdCBBUElcbiAgICAgIGF3YWl0IHRoaXMudHNzVXRpbC5kZWxldGVTaWduYXR1cmVTaGFyZXModHJhbnNhY3Rpb24udHhSZXF1ZXN0SWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHJhbnNhY3Rpb246IHRyYW5zYWN0aW9uLFxuICAgICAgICByZXN1bHQ6IHtcbiAgICAgICAgICB3YWxsZXRJZDogdGhpcy53YWxsZXRJZCxcbiAgICAgICAgICB0eFJlcXVlc3RJZDogdHJhbnNhY3Rpb24udHhSZXF1ZXN0SWQsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmFuc2FjdGlvbiA9IGF3YWl0IHRoaXMuZXhwYW5kQnVpbGRQYXJhbXModHJhbnNhY3Rpb24pO1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbi5idWlsZFBhcmFtcykge1xuICAgICAgICB0aHJvdyBFcnJvcihgU3Rha2luZyB0cmFuc2FjdGlvbiAke3RyYW5zYWN0aW9uLmlkfSBidWlsZCBwYXJhbXMgbm90IGV4cGFuZGVkYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2FjdGlvbjogdHJhbnNhY3Rpb24sXG4gICAgICAgIHJlc3VsdDogYXdhaXQgKGF3YWl0IHRoaXMuZ2V0V2FsbGV0Rm9yQnVpbGRpbmdBbmRTaWduaW5nKCkpLnByZWJ1aWxkVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24uYnVpbGRQYXJhbXMpLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2lnbiB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gc2lnbk9wdGlvbnNcbiAgICogQHBhcmFtIHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBzaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb246IFN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0XG4gICk6IFByb21pc2U8U3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgcmVxSWQgPSBuZXcgUmVxdWVzdFRyYWNlcigpO1xuICAgIGNvbnN0IGtleWNoYWluID0gYXdhaXQgdGhpcy53YWxsZXQuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuZ2V0S2V5c0ZvclNpZ25pbmcoe1xuICAgICAgd2FsbGV0OiB0aGlzLndhbGxldCxcbiAgICAgIHJlcUlkOiByZXFJZCxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNhY3Rpb246IHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uLFxuICAgICAgc2lnbmVkOiBhd2FpdCAoXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0V2FsbGV0Rm9yQnVpbGRpbmdBbmRTaWduaW5nKClcbiAgICAgICkuc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDogc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb24ucmVzdWx0LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBzaWduT3B0aW9ucy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBrZXljaGFpbjoga2V5Y2hhaW5bMF0sXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgdGhlIHNpZ25lZCBzdGFraW5nIHRyYW5zYWN0aW9uIGlmIHJlcXVpcmVkLiBTZW5kIGNhbGwgaXMgbm90IHJlcXVpcmVkIGlmIGFwaSB2ZXJzaW9uIGlzIGZ1bGxcbiAgICogYW5kIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIGZyb20gdGhlIGluY29taW5nIG9iamVjdC5cbiAgICogQHBhcmFtIHNpZ25lZFRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBzZW5kKHNpZ25lZFRyYW5zYWN0aW9uOiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdUcmFuc2FjdGlvbj4ge1xuICAgIGlmICh0aGlzLmlzU2VuZENhbGxSZXF1aXJlZCgpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgICAucG9zdCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nVHJhbnNhY3Rpb25VUkwoc2lnbmVkVHJhbnNhY3Rpb24udHJhbnNhY3Rpb24pKSlcbiAgICAgICAgLnNlbmQoc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmVkKVxuICAgICAgICAucmVzdWx0KCk7XG4gICAgfVxuICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCwgc2lnbiBhbmQgc2VuZCB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSBzaWduT3B0aW9uc1xuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIGJ1aWxkU2lnbkFuZFNlbmQoXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uXG4gICk6IFByb21pc2U8U3Rha2luZ1RyYW5zYWN0aW9uPiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRBbmRTaWduKHNpZ25PcHRpb25zLCB0cmFuc2FjdGlvbikudGhlbigocmVzdWx0OiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNlbmQocmVzdWx0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCBhbmQgc2lnbiB0aGUgdHJhbnNhY3Rpb24uXG4gICAqIEBwYXJhbSBzaWduT3B0aW9uc1xuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb25cbiAgICovXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRBbmRTaWduKFxuICAgIHNpZ25PcHRpb25zOiBTdGFraW5nU2lnbk9wdGlvbnMsXG4gICAgdHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvblxuICApOiBQcm9taXNlPFN0YWtpbmdTaWduZWRUcmFuc2FjdGlvbj4ge1xuICAgIGNvbnN0IGJ1aWx0VHggPSBhd2FpdCB0aGlzLmJ1aWxkKHRyYW5zYWN0aW9uKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5zaWduKHNpZ25PcHRpb25zLCBidWlsdFR4KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZXhwYW5kQnVpbGRQYXJhbXMoc3Rha2luZ1RyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdUcmFuc2FjdGlvbj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAuZ2V0KHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybCh0aGlzLnN0YWtpbmdUcmFuc2FjdGlvblVSTChzdGFraW5nVHJhbnNhY3Rpb24pKSlcbiAgICAgIC5xdWVyeSh7IGV4cGFuZEJ1aWxkUGFyYW1zOiB0cnVlIH0pXG4gICAgICAucmVzdWx0KCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVN0YWtpbmdSZXF1ZXN0KFxuICAgIG9wdGlvbnM6IFN0YWtlT3B0aW9ucyB8IFVuc3Rha2VPcHRpb25zIHwgRXRoVW5zdGFrZU9wdGlvbnMgfCBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zIHwgQ2xhaW1SZXdhcmRzT3B0aW9ucyxcbiAgICB0eXBlOiBzdHJpbmdcbiAgKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvXG4gICAgICAucG9zdCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nUmVxdWVzdHNVUkwoKSkpXG4gICAgICAuc2VuZCh7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICB9KVxuICAgICAgLnJlc3VsdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFraW5nUmVxdWVzdHNVUkwoKSB7XG4gICAgcmV0dXJuIGAvYXBpL3N0YWtpbmcvdjEvJHt0aGlzLmNvaW59L3dhbGxldHMvJHt0aGlzLndhbGxldElkfS9yZXF1ZXN0c2A7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldERlbGVnYXRpb25zKG9wdGlvbnM6IERlbGVnYXRpb25PcHRpb25zKTogUHJvbWlzZTxEZWxlZ2F0aW9uUmVzdWx0cz4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nRGVsZWdhdGlvbnNVUkwoKSkpLnF1ZXJ5KG9wdGlvbnMpLnJlc3VsdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFraW5nRGVsZWdhdGlvbnNVUkwoKSB7XG4gICAgcmV0dXJuIGAvYXBpL3N0YWtpbmcvdjEvJHt0aGlzLmNvaW59L3dhbGxldHMvJHt0aGlzLndhbGxldElkfS9kZWxlZ2F0aW9uc2A7XG4gIH1cblxuICBwcml2YXRlIHN0YWtpbmdSZXF1ZXN0VXJsKHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3Rha2luZ1JlcXVlc3RzVVJMKCl9LyR7c3Rha2luZ1JlcXVlc3RJZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFraW5nVHJhbnNhY3Rpb25VUkwoc3Rha2luZ1RyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YWtpbmdSZXF1ZXN0VXJsKHN0YWtpbmdUcmFuc2FjdGlvbi5zdGFraW5nUmVxdWVzdElkKX0vdHJhbnNhY3Rpb25zLyR7c3Rha2luZ1RyYW5zYWN0aW9uLmlkfWA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFdhbGxldEZvckJ1aWxkaW5nQW5kU2lnbmluZygpOiBQcm9taXNlPElXYWxsZXQ+IHtcbiAgICBpZiAodGhpcy53YWxsZXQuYmFzZUNvaW4udG9rZW5Db25maWcpIHtcbiAgICAgIGlmICghdGhpcy50b2tlblBhcmVudFdhbGxldCkge1xuICAgICAgICB0aGlzLnRva2VuUGFyZW50V2FsbGV0ID0gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgICAgIC5jb2luKHRoaXMud2FsbGV0LmJhc2VDb2luLnRva2VuQ29uZmlnLmNvaW4pXG4gICAgICAgICAgLndhbGxldHMoKVxuICAgICAgICAgIC5nZXQoeyBpZDogdGhpcy53YWxsZXQuaWQoKSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnRva2VuUGFyZW50V2FsbGV0O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMud2FsbGV0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VuZCBBUEkgY2FsbCBpcyBvbmx5IHJlcXVpcmVkIGZvciBUU1MgVHhSZXF1ZXN0IGFwaSB2ZXJzaW9uIGxpdGUgb3IgbXVsdGktc2lnIHRyYW5zYWN0aW9ucy5cbiAgICogRm9yIEZ1bGwgYXBpIHZlcnNpb24sIHNpZ24gdHJhbnNhY3Rpb24gbW92ZXMgdGhlIHRyYW5zYWN0aW9uIHRvIGRlbGl2ZXJlZCBzdGF0ZS5cbiAgICogQHJldHVybnMgdHJ1ZSBpZiBzZW5kIEFQSSBjYWxsIHRvIHN0YWtpbmcgc2VydmljZSBpcyByZXF1aXJlZCBlbHNlIGZhbHNlXG4gICAqL1xuICBwcml2YXRlIGlzU2VuZENhbGxSZXF1aXJlZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0RmFtaWx5KCkgPT09ICdldGgnKSB7XG4gICAgICByZXR1cm4gIXRoaXMuaXNFdGhUc3M7XG4gICAgfSBlbHNlIGlmICh0aGlzLndhbGxldC5iYXNlQ29pbi5zdXBwb3J0c1RzcygpKSB7XG4gICAgICByZXR1cm4gdGhpcy53YWxsZXQuYmFzZUNvaW4uZ2V0TVBDQWxnb3JpdGhtKCkgIT09ICdlY2RzYSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxufVxuIl19
331
+ function isStakingTxRequestPrebuildResult(tx) {
332
+ return tx.txRequestId !== undefined;
333
+ }
334
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Rha2luZ1dhbGxldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby9zdGFraW5nL3N0YWtpbmdXYWxsZXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBc0JBLG9DQUE4RDtBQUM5RCxvREFBNEI7QUFDNUIsZ0VBQXVFO0FBQ3ZFLGtEQUEwQjtBQUUxQixNQUFhLGFBQWE7SUFReEIsWUFBWSxNQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxnQkFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3ZHLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFxQjtRQUMvQixPQUFPLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBMkM7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SCxDQUFDO0NBQ0Y7QUFwWUQsc0NBb1lDO0FBRUQsU0FBUyxnQ0FBZ0MsQ0FDdkMsRUFBOEM7SUFFOUMsT0FBUSxFQUFnRCxDQUFDLFdBQVcsS0FBSyxTQUFTLENBQUM7QUFDckYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKi9cbmltcG9ydCB7XG4gIERlbGVnYXRpb25PcHRpb25zLFxuICBEZWxlZ2F0aW9uUmVzdWx0cyxcbiAgSVN0YWtpbmdXYWxsZXQsXG4gIFN0YWtlT3B0aW9ucyxcbiAgU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHQsXG4gIFN0YWtpbmdSZXF1ZXN0LFxuICBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgU3Rha2luZ1RyYW5zYWN0aW9uLFxuICBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zLFxuICBUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbixcbiAgVW5zdGFrZU9wdGlvbnMsXG4gIEV0aFVuc3Rha2VPcHRpb25zLFxuICBDbGFpbVJld2FyZHNPcHRpb25zLFxuICBTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCxcbn0gZnJvbSAnLi9pU3Rha2luZ1dhbGxldCc7XG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSVdhbGxldCwgUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCB9IGZyb20gJy4uL3dhbGxldCc7XG5pbXBvcnQgeyBJVHNzVXRpbHMsIFJlcXVlc3RUcmFjZXIsIFRzc1V0aWxzIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgdHJhbnNhY3Rpb25SZWNpcGllbnRzTWF0Y2ggfSBmcm9tICcuLi91dGlscy90cmFuc2FjdGlvblV0aWxzJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmV4cG9ydCBjbGFzcyBTdGFraW5nV2FsbGV0IGltcGxlbWVudHMgSVN0YWtpbmdXYWxsZXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgdG9rZW5QYXJlbnRXYWxsZXQ/OiBJV2FsbGV0O1xuICBwcml2YXRlIHJlYWRvbmx5IGlzRXRoVHNzOiBib29sZWFuO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG4gIHB1YmxpYyB0c3NVdGlsOiBJVHNzVXRpbHM7XG5cbiAgY29uc3RydWN0b3Iod2FsbGV0OiBJV2FsbGV0LCBpc0V0aFRzczogYm9vbGVhbikge1xuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuICAgIHRoaXMuYml0Z28gPSB3YWxsZXQuYml0Z287XG4gICAgdGhpcy50c3NVdGlsID0gbmV3IFRzc1V0aWxzKHRoaXMuYml0Z28sIHRoaXMud2FsbGV0LmJhc2VDb2luLCB0aGlzLndhbGxldCk7XG4gICAgdGhpcy5pc0V0aFRzcyA9IGlzRXRoVHNzO1xuICB9XG5cbiAgZ2V0IHdhbGxldElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMud2FsbGV0LmlkKCk7XG4gIH1cblxuICBnZXQgY29pbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLndhbGxldC5iYXNlQ29pbi50b2tlbkNvbmZpZyA/IHRoaXMud2FsbGV0LmJhc2VDb2luLnRva2VuQ29uZmlnLnR5cGUgOiB0aGlzLndhbGxldC5jb2luKCk7XG4gIH1cblxuICAvKipcbiAgICogU3Rha2UgY29pbnNcbiAgICogQHBhcmFtIG9wdGlvbnMgLSBzdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHN0YWtlKG9wdGlvbnM6IFN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnU1RBS0UnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnN0YWtlIGNvaW5zXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gdW5zdGFrZSBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHVuc3Rha2Uob3B0aW9uczogVW5zdGFrZU9wdGlvbnMgfCBFdGhVbnN0YWtlT3B0aW9ucyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5jcmVhdGVTdGFraW5nUmVxdWVzdChvcHRpb25zLCAnVU5TVEFLRScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1Ym1pdCBhIHJlcXVlc3QgdG8gc3dpdGNoIHRoZSB2YWxpZGF0b3IgdXNlZCBmb3IgYSBzcGVjaWZpYyBkZWxlZ2F0aW9uXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiB3aXRoIHRoZSBuZXcgdmFsaWRhdG9yIGFkZHJlc3MgYW5kIG1hcmsgdGhlIG9sZCBkZWxlZ2F0aW9uIGFzIGluYWN0aXZlXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gc3dpdGNoIHZhbGlkYXRvciBvcHRpb25zXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIHN3aXRjaFZhbGlkYXRvcihvcHRpb25zOiBTd2l0Y2hWYWxpZGF0b3JPcHRpb25zKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmNyZWF0ZVN0YWtpbmdSZXF1ZXN0KG9wdGlvbnMsICdTV0lUQ0hfVkFMSURBVE9SJyk7XG4gIH1cblxuICAvKipcbiAgICogU3VibWl0IGEgcmVxdWVzdCB0byBjbGFpbSByZXdhcmRzIGZvciBhIHNwZWNpZmljIGRlbGVnYXRpb25cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBjbGFpbSByZXdhcmRzIG9wdGlvbnNcbiAgICogQHJldHVybiBTdGFraW5nUmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgY2xhaW1SZXdhcmRzKG9wdGlvbnM6IENsYWltUmV3YXJkc09wdGlvbnMpOiBQcm9taXNlPFN0YWtpbmdSZXF1ZXN0PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuY3JlYXRlU3Rha2luZ1JlcXVlc3Qob3B0aW9ucywgJ0NMQUlNX1JFV0FSRFMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW5jZWwgc3Rha2luZyByZXF1ZXN0XG4gICAqIEBwYXJhbSBzdGFraW5nUmVxdWVzdElkIC0gaWQgb2YgdGhlIHN0YWtpbmcgcmVxdWVzdCB0byBjYW5jZWxcbiAgICogQHJldHVybiBTdGFraW5nUmVxdWVzdFxuICAgKi9cbiAgYXN5bmMgY2FuY2VsU3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxTdGFraW5nUmVxdWVzdD4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLmRlbCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkKSkpLnJlc3VsdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIGRlbGVnYXRpb25zIGZvciBhIHNwZWNpZmljIHdhbGxldFxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIHVuc3Rha2Ugb3B0aW9uc1xuICAgKiBAcmV0dXJuIFN0YWtpbmdSZXF1ZXN0XG4gICAqL1xuICBhc3luYyBkZWxlZ2F0aW9ucyhvcHRpb25zOiBEZWxlZ2F0aW9uT3B0aW9ucyk6IFByb21pc2U8RGVsZWdhdGlvblJlc3VsdHM+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXREZWxlZ2F0aW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzdGFraW5nIHJlcXVlc3QgYnkgSURcbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWQgLSBpZCBvZiB0aGUgc3Rha2luZyByZXF1ZXN0IHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm4gU3Rha2luZ1JlcXVlc3RcbiAgICovXG4gIGFzeW5jIGdldFN0YWtpbmdSZXF1ZXN0KHN0YWtpbmdSZXF1ZXN0SWQ6IHN0cmluZyk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1JlcXVlc3RVcmwoc3Rha2luZ1JlcXVlc3RJZCkpKS5yZXN1bHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJhbnNhY3Rpb25zIHJlYWR5IHRvIHNpZ25cbiAgICogQHBhcmFtIHN0YWtpbmdSZXF1ZXN0SWRcbiAgICogQHJldHVybiBUcmFuc2FjdGlvbnNSZWFkeVRvU2lnblxuICAgKi9cbiAgYXN5bmMgZ2V0VHJhbnNhY3Rpb25zUmVhZHlUb1NpZ24oc3Rha2luZ1JlcXVlc3RJZDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNSZWFkeVRvU2lnbj4ge1xuICAgIGNvbnN0IHN0YWtpbmdSZXF1ZXN0OiBTdGFraW5nUmVxdWVzdCA9IGF3YWl0IHRoaXMuZ2V0U3Rha2luZ1JlcXVlc3Qoc3Rha2luZ1JlcXVlc3RJZCk7XG4gICAgY29uc3QgcmVhZHlUb1NpZ246IFN0YWtpbmdUcmFuc2FjdGlvbltdID0gc3Rha2luZ1JlcXVlc3QudHJhbnNhY3Rpb25zLmZpbHRlcihcbiAgICAgICh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKSA9PiB0cmFuc2FjdGlvbi5zdGF0dXMgPT09IGBSRUFEWWBcbiAgICApO1xuICAgIGNvbnN0IG5ld1RyYW5zYWN0aW9uczogU3Rha2luZ1RyYW5zYWN0aW9uW10gPSBzdGFraW5nUmVxdWVzdC50cmFuc2FjdGlvbnMuZmlsdGVyKFxuICAgICAgKHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb24pID0+IHRyYW5zYWN0aW9uLnN0YXR1cyA9PT0gYE5FV2BcbiAgICApO1xuXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7XG4gICAgICBhbGxTaWduaW5nQ29tcGxldGU6XG4gICAgICAgIHN0YWtpbmdSZXF1ZXN0LnRyYW5zYWN0aW9ucy5sZW5ndGggPiAwICYmIG5ld1RyYW5zYWN0aW9ucy5sZW5ndGggPT09IDAgJiYgcmVhZHlUb1NpZ24ubGVuZ3RoID09PSAwLFxuICAgICAgdHJhbnNhY3Rpb25zOiByZWFkeVRvU2lnbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZCB0aGUgc3Rha2luZyB0cmFuc2FjdGlvblxuICAgKiBJZiBUU1MgZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMsIGVsc2UgZXhwYW5kIGJ1aWxkIHBhcmFtcyBhbmQgdGhlbiBidWlsZFxuICAgKiBAcGFyYW0gdHJhbnNhY3Rpb24gLSBzdGFraW5nIHRyYW5zYWN0aW9uIHRvIGJ1aWxkXG4gICAqL1xuICBhc3luYyBidWlsZCh0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdD4ge1xuICAgIGlmICgodGhpcy53YWxsZXQubXVsdGlzaWdUeXBlKCkgPT09ICd0c3MnICYmIHRoaXMud2FsbGV0LmJhc2VDb2luLmdldEZhbWlseSgpICE9PSAnZXRoJykgfHwgdGhpcy5pc0V0aFRzcykge1xuICAgICAgaWYgKCF0cmFuc2FjdGlvbi50eFJlcXVlc3RJZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3R4UmVxdWVzdElkIGlzIHJlcXVpcmVkIHRvIHNpZ24gYW5kIHNlbmQnKTtcbiAgICAgIH1cbiAgICAgIC8vIGRlbGV0ZSBzaWduYXR1cmUgc2hhcmVzIGJlZm9yZSBzaWduaW5nIGZvciB0cmFuc2FjdGlvbiByZXF1ZXN0IEFQSVxuICAgICAgYXdhaXQgdGhpcy50c3NVdGlsLmRlbGV0ZVNpZ25hdHVyZVNoYXJlcyh0cmFuc2FjdGlvbi50eFJlcXVlc3RJZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmFuc2FjdGlvbjogdHJhbnNhY3Rpb24sXG4gICAgICAgIHJlc3VsdDoge1xuICAgICAgICAgIHdhbGxldElkOiB0aGlzLndhbGxldElkLFxuICAgICAgICAgIHR4UmVxdWVzdElkOiB0cmFuc2FjdGlvbi50eFJlcXVlc3RJZCxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRyYW5zYWN0aW9uID0gYXdhaXQgdGhpcy5leHBhbmRCdWlsZFBhcmFtcyh0cmFuc2FjdGlvbik7XG4gICAgICBpZiAoIXRyYW5zYWN0aW9uLmJ1aWxkUGFyYW1zKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBTdGFraW5nIHRyYW5zYWN0aW9uICR7dHJhbnNhY3Rpb24uaWR9IGJ1aWxkIHBhcmFtcyBub3QgZXhwYW5kZWRgKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGlzQnRjVW5kZWxlZ2F0ZSA9XG4gICAgICAgIHRoaXMud2FsbGV0LmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnYnRjJyAmJlxuICAgICAgICB0cmFuc2FjdGlvbi50cmFuc2FjdGlvblR5cGUudG9Mb3dlckNhc2UoKSA9PT0gJ3VuZGVsZWdhdGVfd2l0aGRyYXcnO1xuICAgICAgY29uc3Qgd2FsbGV0ID0gaXNCdGNVbmRlbGVnYXRlXG4gICAgICAgID8gYXdhaXQgdGhpcy5nZXREZXNjcmlwdG9yV2FsbGV0KHRyYW5zYWN0aW9uKVxuICAgICAgICA6IGF3YWl0IHRoaXMuZ2V0V2FsbGV0Rm9yQnVpbGRpbmdBbmRTaWduaW5nKCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRyYW5zYWN0aW9uOiB0cmFuc2FjdGlvbixcbiAgICAgICAgcmVzdWx0OiBhd2FpdCB3YWxsZXQucHJlYnVpbGRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbi5idWlsZFBhcmFtcyksXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSBzaWduT3B0aW9uc1xuICAgKiBAcGFyYW0gc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25cbiAgICovXG4gIGFzeW5jIHNpZ24oXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICBzdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvbjogU3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb25SZXN1bHRcbiAgKTogUHJvbWlzZTxTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24+IHtcbiAgICBjb25zdCByZXFJZCA9IG5ldyBSZXF1ZXN0VHJhY2VyKCk7XG4gICAgY29uc3QgaXNCdGNVbmRlbGVnYXRlID1cbiAgICAgIHRoaXMud2FsbGV0LmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnYnRjJyAmJlxuICAgICAgc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb24udHJhbnNhY3Rpb24udHJhbnNhY3Rpb25UeXBlLnRvTG93ZXJDYXNlKCkgPT09ICd1bmRlbGVnYXRlX3dpdGhkcmF3JztcbiAgICBjb25zdCB3YWxsZXQgPSBpc0J0Y1VuZGVsZWdhdGVcbiAgICAgID8gYXdhaXQgdGhpcy5nZXREZXNjcmlwdG9yV2FsbGV0KHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uKVxuICAgICAgOiBhd2FpdCB0aGlzLmdldFdhbGxldEZvckJ1aWxkaW5nQW5kU2lnbmluZygpO1xuXG4gICAgY29uc3Qga2V5Y2hhaW4gPSBhd2FpdCB3YWxsZXQuYmFzZUNvaW4ua2V5Y2hhaW5zKCkuZ2V0S2V5c0ZvclNpZ25pbmcoe1xuICAgICAgd2FsbGV0OiB0aGlzLndhbGxldCxcbiAgICAgIHJlcUlkOiByZXFJZCxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgdHJhbnNhY3Rpb246IHN0YWtpbmdQcmVidWlsZFRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uLFxuICAgICAgc2lnbmVkOiBhd2FpdCB3YWxsZXQuc2lnblRyYW5zYWN0aW9uKHtcbiAgICAgICAgdHhQcmVidWlsZDogc3Rha2luZ1ByZWJ1aWxkVHJhbnNhY3Rpb24ucmVzdWx0LFxuICAgICAgICB3YWxsZXRQYXNzcGhyYXNlOiBzaWduT3B0aW9ucy53YWxsZXRQYXNzcGhyYXNlLFxuICAgICAgICBrZXljaGFpbjoga2V5Y2hhaW5bMF0sXG4gICAgICB9KSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgdGhlIHNpZ25lZCBzdGFraW5nIHRyYW5zYWN0aW9uIGlmIHJlcXVpcmVkLiBTZW5kIGNhbGwgaXMgbm90IHJlcXVpcmVkIGlmIGFwaSB2ZXJzaW9uIGlzIGZ1bGxcbiAgICogYW5kIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRoZSBzdGFraW5nIHRyYW5zYWN0aW9uIGZyb20gdGhlIGluY29taW5nIG9iamVjdC5cbiAgICogQHBhcmFtIHNpZ25lZFRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBzZW5kKHNpZ25lZFRyYW5zYWN0aW9uOiBTdGFraW5nU2lnbmVkVHJhbnNhY3Rpb24pOiBQcm9taXNlPFN0YWtpbmdUcmFuc2FjdGlvbj4ge1xuICAgIGlmICh0aGlzLmlzU2VuZENhbGxSZXF1aXJlZCgpKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgICAucG9zdCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nVHJhbnNhY3Rpb25VUkwoc2lnbmVkVHJhbnNhY3Rpb24udHJhbnNhY3Rpb24pKSlcbiAgICAgICAgLnNlbmQoc2lnbmVkVHJhbnNhY3Rpb24uc2lnbmVkKVxuICAgICAgICAucmVzdWx0KCk7XG4gICAgfVxuICAgIHJldHVybiBzaWduZWRUcmFuc2FjdGlvbi50cmFuc2FjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBARGVwcmVjYXRlZCB1c2UgYnVpbGRBbmRTaWduXG4gICAqIEJ1aWxkLCBzaWduIGFuZCBzZW5kIHRoZSB0cmFuc2FjdGlvbi5cbiAgICogQHBhcmFtIHNpZ25PcHRpb25zXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgYnVpbGRTaWduQW5kU2VuZChcbiAgICBzaWduT3B0aW9uczogU3Rha2luZ1NpZ25PcHRpb25zLFxuICAgIHRyYW5zYWN0aW9uOiBTdGFraW5nVHJhbnNhY3Rpb25cbiAgKTogUHJvbWlzZTxTdGFraW5nVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5idWlsZEFuZFNpZ24oc2lnbk9wdGlvbnMsIHRyYW5zYWN0aW9uKS50aGVuKChyZXN1bHQ6IFN0YWtpbmdTaWduZWRUcmFuc2FjdGlvbikgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuc2VuZChyZXN1bHQpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBwcmVidWlsdCBzdGFraW5nIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBmb3IgdHJhbnNhY3Rpb25zIHdpdGggdHggcmVxdWVzdCBpZCAoVFNTIHRyYW5zYWN0aW9ucyksIHdlIG5lZWQgdG8gZGVsZXRlIHNpZ25hdHVyZSBzaGFyZXMgYmVmb3JlIGNyZWF0aW5nIHByZWJ1aWxkIHRyYW5zYWN0aW9uXG4gICAqIHdlIG9ubHkgbmVlZCB0byBnZXQgdHJhbnNhY3Rpb24gYnVpbGQgcGFyYW1zIGlmIHRoZXkgZXhpc3QgdG8gcHJlIGJ1aWxkXG4gICAqXG4gICAqIEBwYXJhbSB0cmFuc2FjdGlvblxuICAgKi9cbiAgYXN5bmMgcHJlYnVpbGRTZWxmTWFuYWdlZFN0YWtpbmdUcmFuc2FjdGlvbih0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0PiB7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKSB7XG4gICAgICBhd2FpdCB0aGlzLnRzc1V0aWwuZGVsZXRlU2lnbmF0dXJlU2hhcmVzKHRyYW5zYWN0aW9uLnR4UmVxdWVzdElkKTtcbiAgICB9XG4gICAgY29uc3QgYnVpbGRQYXJhbXMgPSAoYXdhaXQgdGhpcy5leHBhbmRCdWlsZFBhcmFtcyh0cmFuc2FjdGlvbikpLmJ1aWxkUGFyYW1zO1xuICAgIGNvbnN0IGZvcm1hdHRlZFBhcmFtcyA9IHtcbiAgICAgIC4uLmJ1aWxkUGFyYW1zLFxuICAgICAgY29pbjogdGhpcy5jb2luLFxuICAgICAgd2FsbGV0SWQ6IHRoaXMud2FsbGV0SWQsXG4gICAgICB3YWxsZXRUeXBlOiB0aGlzLndhbGxldC50eXBlKCksXG4gICAgICBwcmV2aWV3OiB0cnVlLFxuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLmdldFdhbGxldEZvckJ1aWxkaW5nQW5kU2lnbmluZygpKS5wcmVidWlsZFRyYW5zYWN0aW9uKGZvcm1hdHRlZFBhcmFtcyk7XG4gIH1cblxuICAvKipcbiAgICogQnVpbGQgYW5kIHNpZ24gdGhlIHRyYW5zYWN0aW9uLlxuICAgKiBAcGFyYW0gc2lnbk9wdGlvbnNcbiAgICogQHBhcmFtIHRyYW5zYWN0aW9uXG4gICAqL1xuICBhc3luYyBidWlsZEFuZFNpZ24oXG4gICAgc2lnbk9wdGlvbnM6IFN0YWtpbmdTaWduT3B0aW9ucyxcbiAgICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uXG4gICk6IFByb21pc2U8U3Rha2luZ1NpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgY29uc3QgYnVpbHRUeCA9IGF3YWl0IHRoaXMuYnVpbGQodHJhbnNhY3Rpb24pO1xuICAgIC8vIGRlZmF1bHQgdG8gdmVyaWZ5aW5nIGEgdHJhbnNhY3Rpb24gdW5sZXNzIGV4cGxpY2l0bHkgc2tpcHBlZFxuICAgIGNvbnN0IHNraXBWZXJpZmljYXRpb24gPSBzaWduT3B0aW9ucy50cmFuc2FjdGlvblZlcmlmaWNhdGlvbk9wdGlvbnM/LnNraXBUcmFuc2FjdGlvblZlcmlmaWNhdGlvbiA/PyBmYWxzZTtcbiAgICBpZiAoIWlzU3Rha2luZ1R4UmVxdWVzdFByZWJ1aWxkUmVzdWx0KGJ1aWx0VHgucmVzdWx0KSAmJiAhc2tpcFZlcmlmaWNhdGlvbikge1xuICAgICAgYXdhaXQgdGhpcy52YWxpZGF0ZUJ1aWx0U3Rha2luZ1RyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBidWlsdFR4KTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuc2lnbihzaWduT3B0aW9ucywgYnVpbHRUeCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGV4cGFuZEJ1aWxkUGFyYW1zKHN0YWtpbmdUcmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogUHJvbWlzZTxTdGFraW5nVHJhbnNhY3Rpb24+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLmdldCh0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwodGhpcy5zdGFraW5nVHJhbnNhY3Rpb25VUkwoc3Rha2luZ1RyYW5zYWN0aW9uKSkpXG4gICAgICAucXVlcnkoeyBleHBhbmRCdWlsZFBhcmFtczogdHJ1ZSB9KVxuICAgICAgLnJlc3VsdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVTdGFraW5nUmVxdWVzdChcbiAgICBvcHRpb25zOiBTdGFrZU9wdGlvbnMgfCBVbnN0YWtlT3B0aW9ucyB8IEV0aFVuc3Rha2VPcHRpb25zIHwgU3dpdGNoVmFsaWRhdG9yT3B0aW9ucyB8IENsYWltUmV3YXJkc09wdGlvbnMsXG4gICAgdHlwZTogc3RyaW5nXG4gICk6IFByb21pc2U8U3Rha2luZ1JlcXVlc3Q+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnb1xuICAgICAgLnBvc3QodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ1JlcXVlc3RzVVJMKCkpKVxuICAgICAgLnNlbmQoe1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgfSlcbiAgICAgIC5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1JlcXVlc3RzVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9zdGFraW5nL3YxLyR7dGhpcy5jb2lufS93YWxsZXRzLyR7dGhpcy53YWxsZXRJZH0vcmVxdWVzdHNgO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXREZWxlZ2F0aW9ucyhvcHRpb25zOiBEZWxlZ2F0aW9uT3B0aW9ucyk6IFByb21pc2U8RGVsZWdhdGlvblJlc3VsdHM+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5iaXRnby5nZXQodGhpcy5iaXRnby5taWNyb3NlcnZpY2VzVXJsKHRoaXMuc3Rha2luZ0RlbGVnYXRpb25zVVJMKCkpKS5xdWVyeShvcHRpb25zKS5yZXN1bHQoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ0RlbGVnYXRpb25zVVJMKCkge1xuICAgIHJldHVybiBgL2FwaS9zdGFraW5nL3YxLyR7dGhpcy5jb2lufS93YWxsZXRzLyR7dGhpcy53YWxsZXRJZH0vZGVsZWdhdGlvbnNgO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFraW5nUmVxdWVzdFVybChzdGFraW5nUmVxdWVzdElkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN0YWtpbmdSZXF1ZXN0c1VSTCgpfS8ke3N0YWtpbmdSZXF1ZXN0SWR9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3Rha2luZ1RyYW5zYWN0aW9uVVJMKHN0YWtpbmdUcmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zdGFraW5nUmVxdWVzdFVybChzdGFraW5nVHJhbnNhY3Rpb24uc3Rha2luZ1JlcXVlc3RJZCl9L3RyYW5zYWN0aW9ucy8ke3N0YWtpbmdUcmFuc2FjdGlvbi5pZH1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRXYWxsZXRGb3JCdWlsZGluZ0FuZFNpZ25pbmcoKTogUHJvbWlzZTxJV2FsbGV0PiB7XG4gICAgaWYgKHRoaXMud2FsbGV0LmJhc2VDb2luLnRva2VuQ29uZmlnKSB7XG4gICAgICBpZiAoIXRoaXMudG9rZW5QYXJlbnRXYWxsZXQpIHtcbiAgICAgICAgdGhpcy50b2tlblBhcmVudFdhbGxldCA9IGF3YWl0IHRoaXMuYml0Z29cbiAgICAgICAgICAuY29pbih0aGlzLndhbGxldC5iYXNlQ29pbi50b2tlbkNvbmZpZy5jb2luKVxuICAgICAgICAgIC53YWxsZXRzKClcbiAgICAgICAgICAuZ2V0KHsgaWQ6IHRoaXMud2FsbGV0LmlkKCkgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy50b2tlblBhcmVudFdhbGxldDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLndhbGxldCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNlbmQgQVBJIGNhbGwgaXMgb25seSByZXF1aXJlZCBmb3IgVFNTIFR4UmVxdWVzdCBhcGkgdmVyc2lvbiBsaXRlIG9yIG11bHRpLXNpZyB0cmFuc2FjdGlvbnMuXG4gICAqIEZvciBGdWxsIGFwaSB2ZXJzaW9uLCBzaWduIHRyYW5zYWN0aW9uIG1vdmVzIHRoZSB0cmFuc2FjdGlvbiB0byBkZWxpdmVyZWQgc3RhdGUuXG4gICAqIEByZXR1cm5zIHRydWUgaWYgc2VuZCBBUEkgY2FsbCB0byBzdGFraW5nIHNlcnZpY2UgaXMgcmVxdWlyZWQgZWxzZSBmYWxzZVxuICAgKi9cbiAgcHJpdmF0ZSBpc1NlbmRDYWxsUmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMud2FsbGV0LmJhc2VDb2luLmdldEZhbWlseSgpID09PSAnZXRoJykge1xuICAgICAgcmV0dXJuICF0aGlzLmlzRXRoVHNzO1xuICAgIH0gZWxzZSBpZiAodGhpcy53YWxsZXQuYmFzZUNvaW4uc3VwcG9ydHNUc3MoKSkge1xuICAgICAgcmV0dXJuIHRoaXMud2FsbGV0LmJhc2VDb2luLmdldE1QQ0FsZ29yaXRobSgpICE9PSAnZWNkc2EnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldERlc2NyaXB0b3JXYWxsZXQodHJhbnNhY3Rpb246IFN0YWtpbmdUcmFuc2FjdGlvbik6IFByb21pc2U8SVdhbGxldD4ge1xuICAgIGFzc2VydCh0cmFuc2FjdGlvbi5idWlsZFBhcmFtcz8uc2VuZGVyV2FsbGV0SWQsICdzZW5kZXJXYWxsZXRJZCBpcyByZXF1aXJlZCBmb3IgYnRjIHVuZGVsZWdhdGUgdHJhbnNhY3Rpb24nKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy53YWxsZXQuYmFzZUNvaW4ud2FsbGV0cygpLmdldCh7IGlkOiB0cmFuc2FjdGlvbi5idWlsZFBhcmFtcy5zZW5kZXJXYWxsZXRJZCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgdmFsaWRhdGVCdWlsdFN0YWtpbmdUcmFuc2FjdGlvbihcbiAgICB0cmFuc2FjdGlvbjogU3Rha2luZ1RyYW5zYWN0aW9uLFxuICAgIHByZWJ1aWx0U3Rha2luZ1RyYW5zYWN0aW9uOiBTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdFxuICApIHtcbiAgICBjb25zdCB7IGJ1aWxkUGFyYW1zIH0gPSB0cmFuc2FjdGlvbjtcbiAgICBjb25zdCB7IHJlc3VsdCB9ID0gcHJlYnVpbHRTdGFraW5nVHJhbnNhY3Rpb247XG4gICAgY29uc3QgY29pbiA9IHRoaXMud2FsbGV0LmJhc2VDb2luO1xuICAgIGRlYnVnKGBWYWxpZGF0aW5nIHN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5zdGFraW5nUmVxdWVzdElkfSB3aXRoIHByZWJ1aWx0IHRyYW5zYWN0aW9uYCk7XG5cbiAgICBpZiAoISgndHhIZXgnIGluIHJlc3VsdCkgfHwgIXJlc3VsdC50eEhleCkge1xuICAgICAgZGVidWcoYFNraXBwaW5nIHZhbGlkYXRpb24gZm9yIHN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5zdGFraW5nUmVxdWVzdElkfSAtIHR4SGV4IGlzIHVuZGVmaW5lZGApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGV4cGxhaW5lZFRyYW5zYWN0aW9uID0gYXdhaXQgY29pbi5leHBsYWluVHJhbnNhY3Rpb24ocmVzdWx0KTtcblxuICAgIGlmIChidWlsZFBhcmFtcz8ucmVjaXBpZW50cykge1xuICAgICAgY29uc3QgdXNlclJlY2lwaWVudE1hcCA9IG5ldyBNYXAoXG4gICAgICAgIGJ1aWxkUGFyYW1zLnJlY2lwaWVudHMubWFwKChyZWNpcGllbnQpID0+IFtyZWNpcGllbnQuYWRkcmVzcy50b0xvd2VyQ2FzZSgpLCByZWNpcGllbnRdKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHBsYXRmb3JtUmVjaXBpZW50TWFwID0gbmV3IE1hcChcbiAgICAgICAgKGV4cGxhaW5lZFRyYW5zYWN0aW9uPy5vdXRwdXRzID8/IFtdKS5tYXAoKHJlY2lwaWVudCkgPT4gW3JlY2lwaWVudC5hZGRyZXNzLnRvTG93ZXJDYXNlKCksIHJlY2lwaWVudF0pXG4gICAgICApO1xuXG4gICAgICBjb25zdCBtaXNtYXRjaEVycm9yczogc3RyaW5nW10gPSBbXTtcblxuICAgICAgZm9yIChjb25zdCBbcmVjaXBpZW50QWRkcmVzcywgcmVjaXBpZW50SW5mb10gb2YgcGxhdGZvcm1SZWNpcGllbnRNYXApIHtcbiAgICAgICAgaWYgKHVzZXJSZWNpcGllbnRNYXAuaGFzKHJlY2lwaWVudEFkZHJlc3MpKSB7XG4gICAgICAgICAgY29uc3QgdXNlclJlY2lwaWVudCA9IHVzZXJSZWNpcGllbnRNYXAuZ2V0KHJlY2lwaWVudEFkZHJlc3MpO1xuICAgICAgICAgIGlmICghdXNlclJlY2lwaWVudCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIGRldGVybWluZSByZWNpcGllbnQgYWRkcmVzcycpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBtYXRjaFJlc3VsdCA9IHRyYW5zYWN0aW9uUmVjaXBpZW50c01hdGNoKHVzZXJSZWNpcGllbnQsIHJlY2lwaWVudEluZm8pO1xuICAgICAgICAgIGlmICghbWF0Y2hSZXN1bHQuZXhhY3RNYXRjaCkge1xuICAgICAgICAgICAgaWYgKCFtYXRjaFJlc3VsdC50b2tlbk1hdGNoKSB7XG4gICAgICAgICAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgYEludmFsaWQgdG9rZW4gJHtyZWNpcGllbnRJbmZvLnRva2VuTmFtZX0gdHJhbnNmZXIgd2l0aCBhbW91bnQgJHtyZWNpcGllbnRJbmZvLmFtb3VudH0gdG8gJHtyZWNpcGllbnRJbmZvLmFkZHJlc3N9IGZvdW5kIGluIGJ1aWx0IHRyYW5zYWN0aW9uLCBzcGVjaWZpZWQgJHt1c2VyUmVjaXBpZW50LnRva2VuTmFtZX1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1hdGNoUmVzdWx0LmFtb3VudE1hdGNoKSB7XG4gICAgICAgICAgICAgIG1pc21hdGNoRXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgYEludmFsaWQgcmVjaXBpZW50IGFtb3VudCBmb3IgJHtyZWNpcGllbnRJbmZvLmFkZHJlc3N9LCBzcGVjaWZpZWQgJHt1c2VyUmVjaXBpZW50LmFtb3VudH0gZ290ICR7cmVjaXBpZW50SW5mby5hbW91bnR9YFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtaXNtYXRjaEVycm9ycy5wdXNoKGBJbnZhbGlkIHJlY2lwaWVudCBhZGRyZXNzOiAke3JlY2lwaWVudEFkZHJlc3N9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgbWlzc2luZ1JlY2lwaWVudEFkZHJlc3NlcyA9IEFycmF5LmZyb20odXNlclJlY2lwaWVudE1hcC5rZXlzKCkpLmZpbHRlcihcbiAgICAgICAgKGFkZHJlc3MpID0+ICFwbGF0Zm9ybVJlY2lwaWVudE1hcC5oYXMoYWRkcmVzcylcbiAgICAgICk7XG5cbiAgICAgIGlmIChtaXNzaW5nUmVjaXBpZW50QWRkcmVzc2VzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgbWlzbWF0Y2hFcnJvcnMucHVzaChgTWlzc2luZyByZWNpcGllbnQgYWRkcmVzcyhlcyk6ICR7bWlzc2luZ1JlY2lwaWVudEFkZHJlc3Nlcy5qb2luKCcsICcpfWApO1xuICAgICAgfVxuICAgICAgaWYgKG1pc21hdGNoRXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihtaXNtYXRjaEVycm9ycy5qb2luKCcsICcpKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZyhgQ2Fubm90IHZhbGlkYXRlIHN0YWtpbmcgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5zdGFraW5nUmVxdWVzdElkfSB3aXRob3V0IHNwZWNpZmllZCBidWlsZCBwYXJhbXNgKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRSZXN1bHQoXG4gIHR4OiBTdGFraW5nUHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdFsncmVzdWx0J11cbik6IHR4IGlzIFN0YWtpbmdUeFJlcXVlc3RQcmVidWlsZFRyYW5zYWN0aW9uUmVzdWx0IHtcbiAgcmV0dXJuICh0eCBhcyBTdGFraW5nVHhSZXF1ZXN0UHJlYnVpbGRUcmFuc2FjdGlvblJlc3VsdCkudHhSZXF1ZXN0SWQgIT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -1,41 +1,11 @@
1
- import { IAffirmations } from './iAffirmations';
2
- import { ISettlements } from './iSettlements';
3
- import { ITradingPartners } from './iTradingPartners';
4
- import { Payload } from './payload';
5
- export interface BuildPayloadParameters {
6
- amounts: BuildPayloadAmounts[];
7
- }
8
- export interface BuildPayloadAmounts {
9
- accountId: string;
10
- sendAmount: string;
11
- sendCurrency: string;
12
- receiveAmount: string;
13
- receiveCurrency: string;
14
- }
1
+ import { ITradingNetwork } from './network';
15
2
  export interface SignPayloadParameters {
16
3
  payload: string | Record<string, unknown>;
17
4
  walletPassphrase: string;
18
5
  }
19
- export interface SettlementFees {
20
- feeRate: string;
21
- feeAmount: string;
22
- feeCurrency: string;
23
- }
24
- export interface CalculateSettlementFeesParams {
25
- counterpartyAccountId: string;
26
- sendCurrency: string;
27
- sendAmount: string;
28
- receiveCurrency: string;
29
- receiveAmount: string;
30
- }
31
6
  export interface ITradingAccount {
32
7
  readonly id: string;
33
- buildPayload(params: BuildPayloadParameters): Promise<Payload>;
34
- verifyPayload(params: BuildPayloadParameters, payload: string): boolean;
35
- calculateSettlementFees(params: CalculateSettlementFeesParams): Promise<SettlementFees>;
36
8
  signPayload(params: SignPayloadParameters): Promise<string>;
37
- affirmations(): IAffirmations;
38
- settlements(): ISettlements;
39
- partners(): ITradingPartners;
9
+ toNetwork(): ITradingNetwork;
40
10
  }
41
11
  //# sourceMappingURL=iTradingAccount.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"iTradingAccount.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/iTradingAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,6BAA6B;IAC5C,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,aAAa,CAAC,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACxE,uBAAuB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxF,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,YAAY,IAAI,aAAa,CAAC;IAC9B,WAAW,IAAI,YAAY,CAAC;IAC5B,QAAQ,IAAI,gBAAgB,CAAC;CAC9B"}
1
+ {"version":3,"file":"iTradingAccount.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/iTradingAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,SAAS,IAAI,eAAe,CAAC;CAC9B"}
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVRyYWRpbmdBY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3RyYWRpbmcvaVRyYWRpbmdBY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJQWZmaXJtYXRpb25zIH0gZnJvbSAnLi9pQWZmaXJtYXRpb25zJztcbmltcG9ydCB7IElTZXR0bGVtZW50cyB9IGZyb20gJy4vaVNldHRsZW1lbnRzJztcbmltcG9ydCB7IElUcmFkaW5nUGFydG5lcnMgfSBmcm9tICcuL2lUcmFkaW5nUGFydG5lcnMnO1xuaW1wb3J0IHsgUGF5bG9hZCB9IGZyb20gJy4vcGF5bG9hZCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRQYXlsb2FkUGFyYW1ldGVycyB7XG4gIGFtb3VudHM6IEJ1aWxkUGF5bG9hZEFtb3VudHNbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFBheWxvYWRBbW91bnRzIHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIHNlbmRBbW91bnQ6IHN0cmluZztcbiAgc2VuZEN1cnJlbmN5OiBzdHJpbmc7XG4gIHJlY2VpdmVBbW91bnQ6IHN0cmluZztcbiAgcmVjZWl2ZUN1cnJlbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblBheWxvYWRQYXJhbWV0ZXJzIHtcbiAgcGF5bG9hZDogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHdhbGxldFBhc3NwaHJhc2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXR0bGVtZW50RmVlcyB7XG4gIGZlZVJhdGU6IHN0cmluZztcbiAgZmVlQW1vdW50OiBzdHJpbmc7XG4gIGZlZUN1cnJlbmN5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FsY3VsYXRlU2V0dGxlbWVudEZlZXNQYXJhbXMge1xuICBjb3VudGVycGFydHlBY2NvdW50SWQ6IHN0cmluZztcbiAgc2VuZEN1cnJlbmN5OiBzdHJpbmc7XG4gIHNlbmRBbW91bnQ6IHN0cmluZztcbiAgcmVjZWl2ZUN1cnJlbmN5OiBzdHJpbmc7XG4gIHJlY2VpdmVBbW91bnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVHJhZGluZ0FjY291bnQge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICBidWlsZFBheWxvYWQocGFyYW1zOiBCdWlsZFBheWxvYWRQYXJhbWV0ZXJzKTogUHJvbWlzZTxQYXlsb2FkPjtcbiAgdmVyaWZ5UGF5bG9hZChwYXJhbXM6IEJ1aWxkUGF5bG9hZFBhcmFtZXRlcnMsIHBheWxvYWQ6IHN0cmluZyk6IGJvb2xlYW47XG4gIGNhbGN1bGF0ZVNldHRsZW1lbnRGZWVzKHBhcmFtczogQ2FsY3VsYXRlU2V0dGxlbWVudEZlZXNQYXJhbXMpOiBQcm9taXNlPFNldHRsZW1lbnRGZWVzPjtcbiAgc2lnblBheWxvYWQocGFyYW1zOiBTaWduUGF5bG9hZFBhcmFtZXRlcnMpOiBQcm9taXNlPHN0cmluZz47XG4gIGFmZmlybWF0aW9ucygpOiBJQWZmaXJtYXRpb25zO1xuICBzZXR0bGVtZW50cygpOiBJU2V0dGxlbWVudHM7XG4gIHBhcnRuZXJzKCk6IElUcmFkaW5nUGFydG5lcnM7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaVRyYWRpbmdBY2NvdW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3RyYWRpbmcvaVRyYWRpbmdBY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJVHJhZGluZ05ldHdvcmsgfSBmcm9tICcuL25ldHdvcmsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25QYXlsb2FkUGFyYW1ldGVycyB7XG4gIHBheWxvYWQ6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB3YWxsZXRQYXNzcGhyYXNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRyYWRpbmdBY2NvdW50IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgc2lnblBheWxvYWQocGFyYW1zOiBTaWduUGF5bG9hZFBhcmFtZXRlcnMpOiBQcm9taXNlPHN0cmluZz47XG4gIHRvTmV0d29yaygpOiBJVHJhZGluZ05ldHdvcms7XG59XG4iXX0=
@@ -1,18 +1,4 @@
1
- export * from './affirmation';
2
- export * from './affirmations';
3
- export * from './iAffirmation';
4
- export * from './iAffirmations';
5
- export * from './iSettlement';
6
- export * from './iSettlements';
1
+ export * from './network';
7
2
  export * from './iTradingAccount';
8
- export * from './iTradingPartner';
9
- export * from './iTradingPartners';
10
- export * from './lock';
11
- export * from './payload';
12
- export * from './settlement';
13
- export * from './settlements';
14
- export * from './trade';
15
3
  export * from './tradingAccount';
16
- export * from './tradingPartner';
17
- export * from './tradingPartners';
18
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC"}
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[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);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -10,21 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
15
  };
12
16
  Object.defineProperty(exports, "__esModule", { value: true });
13
- __exportStar(require("./affirmation"), exports);
14
- __exportStar(require("./affirmations"), exports);
15
- __exportStar(require("./iAffirmation"), exports);
16
- __exportStar(require("./iAffirmations"), exports);
17
- __exportStar(require("./iSettlement"), exports);
18
- __exportStar(require("./iSettlements"), exports);
17
+ __exportStar(require("./network"), exports);
19
18
  __exportStar(require("./iTradingAccount"), exports);
20
- __exportStar(require("./iTradingPartner"), exports);
21
- __exportStar(require("./iTradingPartners"), exports);
22
- __exportStar(require("./lock"), exports);
23
- __exportStar(require("./payload"), exports);
24
- __exportStar(require("./settlement"), exports);
25
- __exportStar(require("./settlements"), exports);
26
- __exportStar(require("./trade"), exports);
27
19
  __exportStar(require("./tradingAccount"), exports);
28
- __exportStar(require("./tradingPartner"), exports);
29
- __exportStar(require("./tradingPartners"), exports);
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxnREFBOEI7QUFDOUIsaURBQStCO0FBQy9CLGlEQUErQjtBQUMvQixrREFBZ0M7QUFDaEMsZ0RBQThCO0FBQzlCLGlEQUErQjtBQUMvQixvREFBa0M7QUFDbEMsb0RBQWtDO0FBQ2xDLHFEQUFtQztBQUNuQyx5Q0FBdUI7QUFDdkIsNENBQTBCO0FBQzFCLCtDQUE2QjtBQUM3QixnREFBOEI7QUFDOUIsMENBQXdCO0FBQ3hCLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hZmZpcm1hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2FmZmlybWF0aW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL2lBZmZpcm1hdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2lBZmZpcm1hdGlvbnMnO1xuZXhwb3J0ICogZnJvbSAnLi9pU2V0dGxlbWVudCc7XG5leHBvcnQgKiBmcm9tICcuL2lTZXR0bGVtZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL2lUcmFkaW5nQWNjb3VudCc7XG5leHBvcnQgKiBmcm9tICcuL2lUcmFkaW5nUGFydG5lcic7XG5leHBvcnQgKiBmcm9tICcuL2lUcmFkaW5nUGFydG5lcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9sb2NrJztcbmV4cG9ydCAqIGZyb20gJy4vcGF5bG9hZCc7XG5leHBvcnQgKiBmcm9tICcuL3NldHRsZW1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXR0bGVtZW50cyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYWRlJztcbmV4cG9ydCAqIGZyb20gJy4vdHJhZGluZ0FjY291bnQnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFkaW5nUGFydG5lcic7XG5leHBvcnQgKiBmcm9tICcuL3RyYWRpbmdQYXJ0bmVycyc7XG4iXX0=
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCO0FBQzFCLG9EQUFrQztBQUNsQyxtREFBaUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL25ldHdvcmsnO1xuZXhwb3J0ICogZnJvbSAnLi9pVHJhZGluZ0FjY291bnQnO1xuZXhwb3J0ICogZnJvbSAnLi90cmFkaW5nQWNjb3VudCc7XG4iXX0=
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Decrypts a string using AES-GCM
3
+ * @param {string | Buffer} secret The secret to use for decryption
4
+ * @param {string} encryptedText The text to decrypt
5
+ * @returns {string} The decrypted text
6
+ */
7
+ export declare function _decryptAesGcm(secret: string | Buffer, encryptedText: string): Promise<string>;
8
+ //# sourceMappingURL=decrypt-aes-gcm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrypt-aes-gcm.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/decrypt-aes-gcm.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBpG"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports._decryptAesGcm = _decryptAesGcm;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const utils_1 = require("./utils");
9
+ /**
10
+ * Decrypts a string using AES-GCM
11
+ * @param {string | Buffer} secret The secret to use for decryption
12
+ * @param {string} encryptedText The text to decrypt
13
+ * @returns {string} The decrypted text
14
+ */
15
+ async function _decryptAesGcm(secret, encryptedText) {
16
+ const data = Buffer.from(encryptedText, 'base64');
17
+ const version = data.slice(0, 1);
18
+ if (version.readInt8() !== 1) {
19
+ throw new Error('Unknown encryption version');
20
+ }
21
+ const salt = data.slice(1, 17);
22
+ const iv = data.slice(17, 29);
23
+ const authTag = data.slice(-16);
24
+ const encrypted = data.slice(29, -16);
25
+ const key = await (0, utils_1.computeKey)(secret, salt);
26
+ const decipher = crypto_1.default.createDecipheriv('aes-256-gcm', key, iv);
27
+ decipher.setAuthTag(authTag);
28
+ const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]);
29
+ return decrypted.toString('utf8');
30
+ }
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC1hZXMtZ2NtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3RyYWRpbmcvbmV0d29yay9kZWNyeXB0LWFlcy1nY20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSx3Q0FxQkM7QUE5QkQsb0RBQTRCO0FBQzVCLG1DQUFxQztBQUVyQzs7Ozs7R0FLRztBQUNJLEtBQUssVUFBVSxjQUFjLENBQUMsTUFBdUIsRUFBRSxhQUFxQjtJQUNqRixNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUVsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNoQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRXRDLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBQSxrQkFBVSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztJQUUzQyxNQUFNLFFBQVEsR0FBRyxnQkFBTSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDakUsUUFBUSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUU3QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWhGLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgY29tcHV0ZUtleSB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIERlY3J5cHRzIGEgc3RyaW5nIHVzaW5nIEFFUy1HQ01cbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBzZWNyZXQgVGhlIHNlY3JldCB0byB1c2UgZm9yIGRlY3J5cHRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBlbmNyeXB0ZWRUZXh0IFRoZSB0ZXh0IHRvIGRlY3J5cHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBkZWNyeXB0ZWQgdGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX2RlY3J5cHRBZXNHY20oc2VjcmV0OiBzdHJpbmcgfCBCdWZmZXIsIGVuY3J5cHRlZFRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IGRhdGEgPSBCdWZmZXIuZnJvbShlbmNyeXB0ZWRUZXh0LCAnYmFzZTY0Jyk7XG5cbiAgY29uc3QgdmVyc2lvbiA9IGRhdGEuc2xpY2UoMCwgMSk7XG4gIGlmICh2ZXJzaW9uLnJlYWRJbnQ4KCkgIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gZW5jcnlwdGlvbiB2ZXJzaW9uJyk7XG4gIH1cblxuICBjb25zdCBzYWx0ID0gZGF0YS5zbGljZSgxLCAxNyk7XG4gIGNvbnN0IGl2ID0gZGF0YS5zbGljZSgxNywgMjkpO1xuICBjb25zdCBhdXRoVGFnID0gZGF0YS5zbGljZSgtMTYpO1xuICBjb25zdCBlbmNyeXB0ZWQgPSBkYXRhLnNsaWNlKDI5LCAtMTYpO1xuXG4gIGNvbnN0IGtleSA9IGF3YWl0IGNvbXB1dGVLZXkoc2VjcmV0LCBzYWx0KTtcblxuICBjb25zdCBkZWNpcGhlciA9IGNyeXB0by5jcmVhdGVEZWNpcGhlcml2KCdhZXMtMjU2LWdjbScsIGtleSwgaXYpO1xuICBkZWNpcGhlci5zZXRBdXRoVGFnKGF1dGhUYWcpO1xuXG4gIGNvbnN0IGRlY3J5cHRlZCA9IEJ1ZmZlci5jb25jYXQoW2RlY2lwaGVyLnVwZGF0ZShlbmNyeXB0ZWQpLCBkZWNpcGhlci5maW5hbCgpXSk7XG5cbiAgcmV0dXJuIGRlY3J5cHRlZC50b1N0cmluZygndXRmOCcpO1xufVxuIl19
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Decrypts a string using RSA
3
+ * @param {string} privateKey The private key to use for decryption
4
+ * @param {string} encryptedText The text to decrypt
5
+ * @returns {string} The decrypted text
6
+ */
7
+ export declare function _decryptRsa(privateKey: string, encryptedText: string): string;
8
+ //# sourceMappingURL=decrypt-rsa.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrypt-rsa.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/decrypt-rsa.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAY7E"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports._decryptRsa = _decryptRsa;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ /**
9
+ * Decrypts a string using RSA
10
+ * @param {string} privateKey The private key to use for decryption
11
+ * @param {string} encryptedText The text to decrypt
12
+ * @returns {string} The decrypted text
13
+ */
14
+ function _decryptRsa(privateKey, encryptedText) {
15
+ const key = crypto_1.default.createPrivateKey(privateKey);
16
+ const decryptedData = crypto_1.default.privateDecrypt({
17
+ key,
18
+ padding: crypto_1.default.constants.RSA_PKCS1_OAEP_PADDING,
19
+ oaepHash: 'sha256',
20
+ }, Buffer.from(encryptedText, 'base64'));
21
+ return decryptedData.toString();
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC1yc2EuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy9uZXR3b3JrL2RlY3J5cHQtcnNhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBUUEsa0NBWUM7QUFwQkQsb0RBQTRCO0FBRTVCOzs7OztHQUtHO0FBQ0gsU0FBZ0IsV0FBVyxDQUFDLFVBQWtCLEVBQUUsYUFBcUI7SUFDbkUsTUFBTSxHQUFHLEdBQUcsZ0JBQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoRCxNQUFNLGFBQWEsR0FBRyxnQkFBTSxDQUFDLGNBQWMsQ0FDekM7UUFDRSxHQUFHO1FBQ0gsT0FBTyxFQUFFLGdCQUFNLENBQUMsU0FBUyxDQUFDLHNCQUFzQjtRQUNoRCxRQUFRLEVBQUUsUUFBUTtLQUNuQixFQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUNyQyxDQUFDO0lBRUYsT0FBTyxhQUFhLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcblxuLyoqXG4gKiBEZWNyeXB0cyBhIHN0cmluZyB1c2luZyBSU0FcbiAqIEBwYXJhbSB7c3RyaW5nfSBwcml2YXRlS2V5IFRoZSBwcml2YXRlIGtleSB0byB1c2UgZm9yIGRlY3J5cHRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBlbmNyeXB0ZWRUZXh0IFRoZSB0ZXh0IHRvIGRlY3J5cHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBkZWNyeXB0ZWQgdGV4dFxuICovXG5leHBvcnQgZnVuY3Rpb24gX2RlY3J5cHRSc2EocHJpdmF0ZUtleTogc3RyaW5nLCBlbmNyeXB0ZWRUZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBrZXkgPSBjcnlwdG8uY3JlYXRlUHJpdmF0ZUtleShwcml2YXRlS2V5KTtcbiAgY29uc3QgZGVjcnlwdGVkRGF0YSA9IGNyeXB0by5wcml2YXRlRGVjcnlwdChcbiAgICB7XG4gICAgICBrZXksXG4gICAgICBwYWRkaW5nOiBjcnlwdG8uY29uc3RhbnRzLlJTQV9QS0NTMV9PQUVQX1BBRERJTkcsXG4gICAgICBvYWVwSGFzaDogJ3NoYTI1NicsXG4gICAgfSxcbiAgICBCdWZmZXIuZnJvbShlbmNyeXB0ZWRUZXh0LCAnYmFzZTY0JylcbiAgKTtcblxuICByZXR1cm4gZGVjcnlwdGVkRGF0YS50b1N0cmluZygpO1xufVxuIl19
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Provided an X.509/ OpenSSL PEM private key, and a string of text to decrypt,
3
+ * This function will
4
+ * 1. Split the encrypted text into the encrypted key and the encrypted text
5
+ * 2. Decrypt the key using RSA-OAEP with the provided private key
6
+ * 3. Decrypt the text using AES-GCM with the decrypted key
7
+ * 4. Return the decrypted text
8
+ *
9
+ * @param {string} privateKey - The private key corresponding to the public key used for encryption
10
+ * @param {string} encryptedText - The encrypted text to decrypt
11
+ * @returns {string} The decrypted text
12
+ */
13
+ export declare function decryptRsaWithAesGcm(privateKey: string, encryptedText: string): Promise<string>;
14
+ //# sourceMappingURL=decrypt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decrypt.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/decrypt.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMrG"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.decryptRsaWithAesGcm = decryptRsaWithAesGcm;
4
+ const decrypt_aes_gcm_1 = require("./decrypt-aes-gcm");
5
+ const decrypt_rsa_1 = require("./decrypt-rsa");
6
+ /**
7
+ * Provided an X.509/ OpenSSL PEM private key, and a string of text to decrypt,
8
+ * This function will
9
+ * 1. Split the encrypted text into the encrypted key and the encrypted text
10
+ * 2. Decrypt the key using RSA-OAEP with the provided private key
11
+ * 3. Decrypt the text using AES-GCM with the decrypted key
12
+ * 4. Return the decrypted text
13
+ *
14
+ * @param {string} privateKey - The private key corresponding to the public key used for encryption
15
+ * @param {string} encryptedText - The encrypted text to decrypt
16
+ * @returns {string} The decrypted text
17
+ */
18
+ async function decryptRsaWithAesGcm(privateKey, encryptedText) {
19
+ const [encryptedKey, encrypted] = encryptedText.split('\n');
20
+ const gcmKey = await (0, decrypt_rsa_1._decryptRsa)(privateKey, encryptedKey);
21
+ return (0, decrypt_aes_gcm_1._decryptAesGcm)(Buffer.from(gcmKey, 'base64').toString(), encrypted);
22
+ }
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9iaXRnby90cmFkaW5nL25ldHdvcmsvZGVjcnlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWVBLG9EQU1DO0FBckJELHVEQUFtRDtBQUNuRCwrQ0FBNEM7QUFFNUM7Ozs7Ozs7Ozs7O0dBV0c7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQUMsVUFBa0IsRUFBRSxhQUFxQjtJQUNsRixNQUFNLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFNUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLHlCQUFXLEVBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRTNELE9BQU8sSUFBQSxnQ0FBYyxFQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQzdFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBfZGVjcnlwdEFlc0djbSB9IGZyb20gJy4vZGVjcnlwdC1hZXMtZ2NtJztcbmltcG9ydCB7IF9kZWNyeXB0UnNhIH0gZnJvbSAnLi9kZWNyeXB0LXJzYSc7XG5cbi8qKlxuICogUHJvdmlkZWQgYW4gWC41MDkvIE9wZW5TU0wgUEVNIHByaXZhdGUga2V5LCBhbmQgYSBzdHJpbmcgb2YgdGV4dCB0byBkZWNyeXB0LFxuICogVGhpcyBmdW5jdGlvbiB3aWxsXG4gKiAxLiBTcGxpdCB0aGUgZW5jcnlwdGVkIHRleHQgaW50byB0aGUgZW5jcnlwdGVkIGtleSBhbmQgdGhlIGVuY3J5cHRlZCB0ZXh0XG4gKiAyLiBEZWNyeXB0IHRoZSBrZXkgdXNpbmcgUlNBLU9BRVAgd2l0aCB0aGUgcHJvdmlkZWQgcHJpdmF0ZSBrZXlcbiAqIDMuIERlY3J5cHQgdGhlIHRleHQgdXNpbmcgQUVTLUdDTSB3aXRoIHRoZSBkZWNyeXB0ZWQga2V5XG4gKiA0LiBSZXR1cm4gdGhlIGRlY3J5cHRlZCB0ZXh0XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHByaXZhdGVLZXkgLSBUaGUgcHJpdmF0ZSBrZXkgY29ycmVzcG9uZGluZyB0byB0aGUgcHVibGljIGtleSB1c2VkIGZvciBlbmNyeXB0aW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gZW5jcnlwdGVkVGV4dCAtIFRoZSBlbmNyeXB0ZWQgdGV4dCB0byBkZWNyeXB0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZGVjcnlwdGVkIHRleHRcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGRlY3J5cHRSc2FXaXRoQWVzR2NtKHByaXZhdGVLZXk6IHN0cmluZywgZW5jcnlwdGVkVGV4dDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgW2VuY3J5cHRlZEtleSwgZW5jcnlwdGVkXSA9IGVuY3J5cHRlZFRleHQuc3BsaXQoJ1xcbicpO1xuXG4gIGNvbnN0IGdjbUtleSA9IGF3YWl0IF9kZWNyeXB0UnNhKHByaXZhdGVLZXksIGVuY3J5cHRlZEtleSk7XG5cbiAgcmV0dXJuIF9kZWNyeXB0QWVzR2NtKEJ1ZmZlci5mcm9tKGdjbUtleSwgJ2Jhc2U2NCcpLnRvU3RyaW5nKCksIGVuY3J5cHRlZCk7XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Encrypts a string using AES-GCM
3
+ * @param {string | Buffer} secret The secret to use for encryption
4
+ * @param {string} text The text to encrypt
5
+ * @returns {string} The encrypted text
6
+ */
7
+ export declare function _encryptAesGcm(secret: string | Buffer, text: string): Promise<string>;
8
+ //# sourceMappingURL=encrypt-aes-gcm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypt-aes-gcm.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/encrypt-aes-gcm.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAc3F"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports._encryptAesGcm = _encryptAesGcm;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const utils_1 = require("./utils");
9
+ /**
10
+ * Encrypts a string using AES-GCM
11
+ * @param {string | Buffer} secret The secret to use for encryption
12
+ * @param {string} text The text to encrypt
13
+ * @returns {string} The encrypted text
14
+ */
15
+ async function _encryptAesGcm(secret, text) {
16
+ const version = Buffer.alloc(1, 1);
17
+ const salt = crypto_1.default.randomBytes(16);
18
+ const iv = crypto_1.default.randomBytes(12);
19
+ const key = await (0, utils_1.computeKey)(secret, salt);
20
+ const cipher = crypto_1.default.createCipheriv('aes-256-gcm', key, iv);
21
+ const encrypted = Buffer.concat([cipher.update(text, 'utf8'), cipher.final()]);
22
+ const authTag = cipher.getAuthTag();
23
+ return Buffer.concat([version, salt, iv, encrypted, authTag]).toString('base64');
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5jcnlwdC1hZXMtZ2NtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3RyYWRpbmcvbmV0d29yay9lbmNyeXB0LWFlcy1nY20udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSx3Q0FjQztBQXZCRCxvREFBNEI7QUFDNUIsbUNBQXFDO0FBRXJDOzs7OztHQUtHO0FBQ0ksS0FBSyxVQUFVLGNBQWMsQ0FBQyxNQUF1QixFQUFFLElBQVk7SUFDeEUsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbkMsTUFBTSxJQUFJLEdBQUcsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFFcEMsTUFBTSxFQUFFLEdBQUcsZ0JBQU0sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDbEMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFBLGtCQUFVLEVBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTNDLE1BQU0sTUFBTSxHQUFHLGdCQUFNLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDN0QsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFL0UsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBRXBDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgY29tcHV0ZUtleSB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIEVuY3J5cHRzIGEgc3RyaW5nIHVzaW5nIEFFUy1HQ01cbiAqIEBwYXJhbSB7c3RyaW5nIHwgQnVmZmVyfSBzZWNyZXQgVGhlIHNlY3JldCB0byB1c2UgZm9yIGVuY3J5cHRpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IHRvIGVuY3J5cHRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBlbmNyeXB0ZWQgdGV4dFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gX2VuY3J5cHRBZXNHY20oc2VjcmV0OiBzdHJpbmcgfCBCdWZmZXIsIHRleHQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gIGNvbnN0IHZlcnNpb24gPSBCdWZmZXIuYWxsb2MoMSwgMSk7XG5cbiAgY29uc3Qgc2FsdCA9IGNyeXB0by5yYW5kb21CeXRlcygxNik7XG5cbiAgY29uc3QgaXYgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMTIpO1xuICBjb25zdCBrZXkgPSBhd2FpdCBjb21wdXRlS2V5KHNlY3JldCwgc2FsdCk7XG5cbiAgY29uc3QgY2lwaGVyID0gY3J5cHRvLmNyZWF0ZUNpcGhlcml2KCdhZXMtMjU2LWdjbScsIGtleSwgaXYpO1xuICBjb25zdCBlbmNyeXB0ZWQgPSBCdWZmZXIuY29uY2F0KFtjaXBoZXIudXBkYXRlKHRleHQsICd1dGY4JyksIGNpcGhlci5maW5hbCgpXSk7XG5cbiAgY29uc3QgYXV0aFRhZyA9IGNpcGhlci5nZXRBdXRoVGFnKCk7XG5cbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW3ZlcnNpb24sIHNhbHQsIGl2LCBlbmNyeXB0ZWQsIGF1dGhUYWddKS50b1N0cmluZygnYmFzZTY0Jyk7XG59XG4iXX0=
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Import a public RSA key and encrypt a plaintext
3
+ * @param {string} publicKey PEM-formatted public RSA key
4
+ * @param {string} text The text to encrypt
5
+ * @returns {string} The encrypted text
6
+ */
7
+ export declare function _encryptBrowserRsa(publicKey: string, text: string): Promise<string>;
8
+ //# sourceMappingURL=encrypt-rsa-browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encrypt-rsa-browser.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/trading/network/encrypt-rsa-browser.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAIzF"}