@bitgo/sdk-core 1.1.0-rc.2 → 1.1.0-rc.5

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 (283) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/dist/src/account-lib/baseCoin/errors.d.ts +0 -6
  3. package/dist/src/account-lib/baseCoin/errors.d.ts.map +1 -1
  4. package/dist/src/account-lib/baseCoin/errors.js +2 -11
  5. package/dist/src/account-lib/baseCoin/iface.d.ts +2 -9
  6. package/dist/src/account-lib/baseCoin/iface.d.ts.map +1 -1
  7. package/dist/src/account-lib/baseCoin/iface.js +1 -1
  8. package/dist/src/account-lib/index.d.ts +1 -0
  9. package/dist/src/account-lib/index.d.ts.map +1 -1
  10. package/dist/src/account-lib/index.js +2 -1
  11. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts +19 -0
  12. package/dist/src/account-lib/mpc/curves/baseCurve.d.ts.map +1 -0
  13. package/dist/src/account-lib/mpc/curves/baseCurve.js +6 -0
  14. package/dist/src/account-lib/mpc/curves/ed25519.d.ts +17 -0
  15. package/dist/src/account-lib/mpc/curves/ed25519.d.ts.map +1 -0
  16. package/dist/src/account-lib/mpc/curves/ed25519.js +57 -0
  17. package/dist/src/account-lib/mpc/curves/index.d.ts +6 -0
  18. package/dist/src/account-lib/mpc/curves/index.d.ts.map +1 -0
  19. package/dist/src/account-lib/mpc/curves/index.js +8 -0
  20. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts +16 -0
  21. package/dist/src/account-lib/mpc/curves/secp256k1.d.ts.map +1 -0
  22. package/dist/src/account-lib/mpc/curves/secp256k1.js +66 -0
  23. package/dist/src/account-lib/mpc/hdTree.d.ts +24 -0
  24. package/dist/src/account-lib/mpc/hdTree.d.ts.map +1 -0
  25. package/dist/src/account-lib/mpc/hdTree.js +94 -0
  26. package/dist/src/account-lib/mpc/index.d.ts +7 -0
  27. package/dist/src/account-lib/mpc/index.d.ts.map +1 -0
  28. package/dist/src/account-lib/mpc/index.js +23 -0
  29. package/dist/src/account-lib/mpc/shamir.d.ts +26 -0
  30. package/dist/src/account-lib/mpc/shamir.d.ts.map +1 -0
  31. package/dist/src/account-lib/mpc/shamir.js +86 -0
  32. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts +29 -0
  33. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.d.ts.map +1 -0
  34. package/dist/src/account-lib/mpc/tss/eddsa/eddsa.js +273 -0
  35. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts +4 -0
  36. package/dist/src/account-lib/mpc/tss/eddsa/index.d.ts.map +1 -0
  37. package/dist/src/account-lib/mpc/tss/eddsa/index.js +30 -0
  38. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts +70 -0
  39. package/dist/src/account-lib/mpc/tss/eddsa/types.d.ts.map +1 -0
  40. package/dist/src/account-lib/mpc/tss/eddsa/types.js +3 -0
  41. package/dist/src/account-lib/mpc/tss/index.d.ts +5 -0
  42. package/dist/src/account-lib/mpc/tss/index.d.ts.map +1 -0
  43. package/dist/src/account-lib/mpc/tss/index.js +32 -0
  44. package/dist/src/account-lib/mpc/util.d.ts +8 -0
  45. package/dist/src/account-lib/mpc/util.d.ts.map +1 -0
  46. package/dist/src/account-lib/mpc/util.js +42 -0
  47. package/dist/src/api/bip32path.d.ts +24 -0
  48. package/dist/src/api/bip32path.d.ts.map +1 -0
  49. package/dist/src/api/bip32path.js +45 -0
  50. package/dist/src/api/index.d.ts +3 -0
  51. package/dist/src/api/index.d.ts.map +1 -0
  52. package/dist/src/{v2 → api}/index.js +2 -2
  53. package/dist/src/api/types.d.ts +20 -0
  54. package/dist/src/api/types.d.ts.map +1 -0
  55. package/dist/src/api/types.js +3 -0
  56. package/dist/src/bitgo/baseCoin/baseCoin.d.ts +230 -0
  57. package/dist/src/bitgo/baseCoin/baseCoin.d.ts.map +1 -0
  58. package/dist/src/bitgo/baseCoin/baseCoin.js +292 -0
  59. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts +257 -0
  60. package/dist/src/bitgo/baseCoin/iBaseCoin.d.ts.map +1 -0
  61. package/dist/src/bitgo/baseCoin/iBaseCoin.js +3 -0
  62. package/dist/src/bitgo/baseCoin/index.d.ts +3 -0
  63. package/dist/src/bitgo/baseCoin/index.d.ts.map +1 -0
  64. package/dist/src/bitgo/baseCoin/index.js +15 -0
  65. package/dist/src/bitgo/bip32util.d.ts +17 -0
  66. package/dist/src/bitgo/bip32util.d.ts.map +1 -0
  67. package/dist/src/bitgo/bip32util.js +59 -0
  68. package/dist/src/bitgo/bitcoin.d.ts +16 -0
  69. package/dist/src/bitgo/bitcoin.d.ts.map +1 -0
  70. package/dist/src/bitgo/bitcoin.js +52 -0
  71. package/dist/src/bitgo/bitgoBase.d.ts +22 -0
  72. package/dist/src/bitgo/bitgoBase.d.ts.map +1 -0
  73. package/dist/src/bitgo/bitgoBase.js +3 -0
  74. package/dist/src/bitgo/config.d.ts +8 -0
  75. package/dist/src/bitgo/config.d.ts.map +1 -0
  76. package/dist/src/bitgo/config.js +25 -0
  77. package/dist/src/bitgo/ecdh.d.ts +24 -0
  78. package/dist/src/bitgo/ecdh.d.ts.map +1 -0
  79. package/dist/src/bitgo/ecdh.js +80 -0
  80. package/dist/src/bitgo/enterprise/enterprise.d.ts +64 -0
  81. package/dist/src/bitgo/enterprise/enterprise.d.ts.map +1 -0
  82. package/dist/src/bitgo/enterprise/enterprise.js +120 -0
  83. package/dist/src/bitgo/enterprise/enterprises.d.ts +25 -0
  84. package/dist/src/bitgo/enterprise/enterprises.d.ts.map +1 -0
  85. package/dist/src/bitgo/enterprise/enterprises.js +70 -0
  86. package/dist/src/bitgo/enterprise/iEnterprise.d.ts +15 -0
  87. package/dist/src/bitgo/enterprise/iEnterprise.d.ts.map +1 -0
  88. package/dist/src/bitgo/enterprise/iEnterprise.js +3 -0
  89. package/dist/src/bitgo/enterprise/iEnterprises.d.ts +10 -0
  90. package/dist/src/bitgo/enterprise/iEnterprises.d.ts.map +1 -0
  91. package/dist/src/bitgo/enterprise/iEnterprises.js +3 -0
  92. package/dist/src/bitgo/enterprise/index.d.ts +5 -0
  93. package/dist/src/bitgo/enterprise/index.d.ts.map +1 -0
  94. package/dist/src/bitgo/enterprise/index.js +17 -0
  95. package/dist/src/{v2 → bitgo}/environments.d.ts +0 -0
  96. package/dist/src/bitgo/environments.d.ts.map +1 -0
  97. package/dist/src/bitgo/environments.js +142 -0
  98. package/dist/src/bitgo/errors.d.ts +83 -0
  99. package/dist/src/bitgo/errors.d.ts.map +1 -0
  100. package/dist/src/bitgo/errors.js +163 -0
  101. package/dist/src/bitgo/index.d.ts +25 -0
  102. package/dist/src/bitgo/index.d.ts.map +1 -0
  103. package/dist/src/bitgo/index.js +50 -0
  104. package/dist/src/bitgo/internal/index.d.ts +3 -0
  105. package/dist/src/bitgo/internal/index.d.ts.map +1 -0
  106. package/dist/src/bitgo/internal/index.js +15 -0
  107. package/dist/src/bitgo/internal/internal.d.ts +19 -0
  108. package/dist/src/bitgo/internal/internal.d.ts.map +1 -0
  109. package/dist/src/bitgo/internal/internal.js +33 -0
  110. package/dist/src/bitgo/internal/keycard.d.ts +33 -0
  111. package/dist/src/bitgo/internal/keycard.d.ts.map +1 -0
  112. package/dist/src/bitgo/internal/keycard.js +304 -0
  113. package/dist/src/bitgo/keychain/iKeychains.d.ts +118 -0
  114. package/dist/src/bitgo/keychain/iKeychains.d.ts.map +1 -0
  115. package/dist/src/bitgo/keychain/iKeychains.js +10 -0
  116. package/dist/src/bitgo/keychain/index.d.ts +3 -0
  117. package/dist/src/bitgo/keychain/index.d.ts.map +1 -0
  118. package/dist/src/bitgo/keychain/index.js +15 -0
  119. package/dist/src/bitgo/keychain/keychains.d.ts +90 -0
  120. package/dist/src/bitgo/keychain/keychains.d.ts.map +1 -0
  121. package/dist/src/bitgo/keychain/keychains.js +280 -0
  122. package/dist/src/bitgo/market/iMarkets.d.ts +12 -0
  123. package/dist/src/bitgo/market/iMarkets.d.ts.map +1 -0
  124. package/dist/src/bitgo/market/iMarkets.js +3 -0
  125. package/dist/src/bitgo/market/index.d.ts +3 -0
  126. package/dist/src/bitgo/market/index.d.ts.map +1 -0
  127. package/dist/src/bitgo/market/index.js +15 -0
  128. package/dist/src/bitgo/market/markets.d.ts +29 -0
  129. package/dist/src/bitgo/market/markets.d.ts.map +1 -0
  130. package/dist/src/bitgo/market/markets.js +70 -0
  131. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts +73 -0
  132. package/dist/src/bitgo/pendingApproval/iPendingApproval.d.ts.map +1 -0
  133. package/dist/src/bitgo/pendingApproval/iPendingApproval.js +28 -0
  134. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts +16 -0
  135. package/dist/src/bitgo/pendingApproval/iPendingApprovals.d.ts.map +1 -0
  136. package/dist/src/bitgo/pendingApproval/iPendingApprovals.js +3 -0
  137. package/dist/src/bitgo/pendingApproval/index.d.ts +5 -0
  138. package/dist/src/bitgo/pendingApproval/index.d.ts.map +1 -0
  139. package/dist/src/bitgo/pendingApproval/index.js +17 -0
  140. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts +99 -0
  141. package/dist/src/bitgo/pendingApproval/pendingApproval.d.ts.map +1 -0
  142. package/dist/src/bitgo/pendingApproval/pendingApproval.js +319 -0
  143. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts +19 -0
  144. package/dist/src/bitgo/pendingApproval/pendingApprovals.d.ts.map +1 -0
  145. package/dist/src/bitgo/pendingApproval/pendingApprovals.js +76 -0
  146. package/dist/src/bitgo/recovery/index.d.ts +2 -0
  147. package/dist/src/bitgo/recovery/index.d.ts.map +1 -0
  148. package/dist/src/bitgo/recovery/index.js +14 -0
  149. package/dist/src/bitgo/recovery/initiate.d.ts +49 -0
  150. package/dist/src/bitgo/recovery/initiate.d.ts.map +1 -0
  151. package/dist/src/bitgo/recovery/initiate.js +119 -0
  152. package/dist/src/bitgo/trading/affirmation.d.ts +35 -0
  153. package/dist/src/bitgo/trading/affirmation.d.ts.map +1 -0
  154. package/dist/src/bitgo/trading/affirmation.js +53 -0
  155. package/dist/src/bitgo/trading/affirmations.d.ts +23 -0
  156. package/dist/src/bitgo/trading/affirmations.d.ts.map +1 -0
  157. package/dist/src/bitgo/trading/affirmations.js +45 -0
  158. package/dist/src/bitgo/trading/iAffirmation.d.ts +15 -0
  159. package/dist/src/bitgo/trading/iAffirmation.d.ts.map +1 -0
  160. package/dist/src/bitgo/trading/iAffirmation.js +13 -0
  161. package/dist/src/bitgo/trading/iAffirmations.d.ts +10 -0
  162. package/dist/src/bitgo/trading/iAffirmations.d.ts.map +1 -0
  163. package/dist/src/bitgo/trading/iAffirmations.js +3 -0
  164. package/dist/src/bitgo/trading/iSettlement.d.ts +25 -0
  165. package/dist/src/bitgo/trading/iSettlement.d.ts.map +1 -0
  166. package/dist/src/bitgo/trading/iSettlement.js +17 -0
  167. package/dist/src/bitgo/trading/iSettlements.d.ts +19 -0
  168. package/dist/src/bitgo/trading/iSettlements.d.ts.map +1 -0
  169. package/dist/src/bitgo/trading/iSettlements.js +3 -0
  170. package/dist/src/bitgo/trading/iTradingAccount.d.ts +41 -0
  171. package/dist/src/bitgo/trading/iTradingAccount.d.ts.map +1 -0
  172. package/dist/src/bitgo/trading/iTradingAccount.js +3 -0
  173. package/dist/src/bitgo/trading/iTradingPartner.d.ts +14 -0
  174. package/dist/src/bitgo/trading/iTradingPartner.d.ts.map +1 -0
  175. package/dist/src/bitgo/trading/iTradingPartner.js +17 -0
  176. package/dist/src/bitgo/trading/iTradingPartners.d.ts +15 -0
  177. package/dist/src/bitgo/trading/iTradingPartners.d.ts.map +1 -0
  178. package/dist/src/bitgo/trading/iTradingPartners.js +9 -0
  179. package/dist/src/bitgo/trading/index.d.ts +18 -0
  180. package/dist/src/bitgo/trading/index.d.ts.map +1 -0
  181. package/dist/src/bitgo/trading/index.js +30 -0
  182. package/dist/src/bitgo/trading/lock.d.ts +16 -0
  183. package/dist/src/bitgo/trading/lock.d.ts.map +1 -0
  184. package/dist/src/bitgo/trading/lock.js +12 -0
  185. package/dist/src/bitgo/trading/payload.d.ts +22 -0
  186. package/dist/src/bitgo/trading/payload.d.ts.map +1 -0
  187. package/dist/src/bitgo/trading/payload.js +3 -0
  188. package/dist/src/bitgo/trading/settlement.d.ts +16 -0
  189. package/dist/src/bitgo/trading/settlement.d.ts.map +1 -0
  190. package/dist/src/bitgo/trading/settlement.js +21 -0
  191. package/dist/src/bitgo/trading/settlements.d.ts +32 -0
  192. package/dist/src/bitgo/trading/settlements.d.ts.map +1 -0
  193. package/dist/src/bitgo/trading/settlements.js +61 -0
  194. package/dist/src/bitgo/trading/trade.d.ts +29 -0
  195. package/dist/src/bitgo/trading/trade.d.ts.map +1 -0
  196. package/dist/src/bitgo/trading/trade.js +11 -0
  197. package/dist/src/bitgo/trading/tradingAccount.d.ts +53 -0
  198. package/dist/src/bitgo/trading/tradingAccount.d.ts.map +1 -0
  199. package/dist/src/bitgo/trading/tradingAccount.js +127 -0
  200. package/dist/src/bitgo/trading/tradingPartner.d.ts +26 -0
  201. package/dist/src/bitgo/trading/tradingPartner.d.ts.map +1 -0
  202. package/dist/src/bitgo/trading/tradingPartner.js +31 -0
  203. package/dist/src/bitgo/trading/tradingPartners.d.ts +24 -0
  204. package/dist/src/bitgo/trading/tradingPartners.d.ts.map +1 -0
  205. package/dist/src/bitgo/trading/tradingPartners.js +32 -0
  206. package/dist/src/bitgo/tss.d.ts +127 -0
  207. package/dist/src/bitgo/tss.d.ts.map +1 -0
  208. package/dist/src/bitgo/tss.js +261 -0
  209. package/dist/src/bitgo/types.d.ts +4 -0
  210. package/dist/src/bitgo/types.d.ts.map +1 -0
  211. package/dist/src/bitgo/types.js +3 -0
  212. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts +6 -0
  213. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.d.ts.map +1 -0
  214. package/dist/src/bitgo/utils/abstractUtxoCoinUtil.js +30 -0
  215. package/dist/src/bitgo/utils/blsUtils.d.ts +51 -0
  216. package/dist/src/bitgo/utils/blsUtils.d.ts.map +1 -0
  217. package/dist/src/bitgo/utils/blsUtils.js +166 -0
  218. package/dist/src/bitgo/utils/iBlsUtils.d.ts +14 -0
  219. package/dist/src/bitgo/utils/iBlsUtils.d.ts.map +1 -0
  220. package/dist/src/bitgo/utils/iBlsUtils.js +3 -0
  221. package/dist/src/bitgo/utils/iTssUtils.d.ts +64 -0
  222. package/dist/src/bitgo/utils/iTssUtils.d.ts.map +1 -0
  223. package/dist/src/bitgo/utils/iTssUtils.js +10 -0
  224. package/dist/src/bitgo/utils/index.d.ts +12 -0
  225. package/dist/src/bitgo/utils/index.d.ts.map +1 -0
  226. package/dist/src/bitgo/utils/index.js +37 -0
  227. package/dist/src/bitgo/utils/mpcUtils.d.ts +31 -0
  228. package/dist/src/bitgo/utils/mpcUtils.d.ts.map +1 -0
  229. package/dist/src/bitgo/utils/mpcUtils.js +55 -0
  230. package/dist/src/bitgo/utils/opengpgUtils.d.ts +51 -0
  231. package/dist/src/bitgo/utils/opengpgUtils.d.ts.map +1 -0
  232. package/dist/src/bitgo/utils/opengpgUtils.js +136 -0
  233. package/dist/src/bitgo/utils/promise-utils.d.ts +5 -0
  234. package/dist/src/bitgo/utils/promise-utils.d.ts.map +1 -0
  235. package/dist/src/bitgo/utils/promise-utils.js +12 -0
  236. package/dist/src/bitgo/utils/tssUtils.d.ts +117 -0
  237. package/dist/src/bitgo/utils/tssUtils.d.ts.map +1 -0
  238. package/dist/src/bitgo/utils/tssUtils.js +348 -0
  239. package/dist/src/bitgo/utils/util.d.ts +77 -0
  240. package/dist/src/bitgo/utils/util.d.ts.map +1 -0
  241. package/dist/src/bitgo/utils/util.js +198 -0
  242. package/dist/src/bitgo/wallet/iWallet.d.ts +510 -0
  243. package/dist/src/bitgo/wallet/iWallet.d.ts.map +1 -0
  244. package/dist/src/bitgo/wallet/iWallet.js +3 -0
  245. package/dist/src/bitgo/wallet/iWallets.d.ts +105 -0
  246. package/dist/src/bitgo/wallet/iWallets.d.ts.map +1 -0
  247. package/dist/src/bitgo/wallet/iWallets.js +3 -0
  248. package/dist/src/bitgo/wallet/index.d.ts +5 -0
  249. package/dist/src/bitgo/wallet/index.d.ts.map +1 -0
  250. package/dist/src/bitgo/wallet/index.js +17 -0
  251. package/dist/src/bitgo/wallet/wallet.d.ts +650 -0
  252. package/dist/src/bitgo/wallet/wallet.d.ts.map +1 -0
  253. package/dist/src/bitgo/wallet/wallet.js +2024 -0
  254. package/dist/src/bitgo/wallet/wallets.d.ts +134 -0
  255. package/dist/src/bitgo/wallet/wallets.d.ts.map +1 -0
  256. package/dist/src/bitgo/wallet/wallets.js +605 -0
  257. package/dist/src/bitgo/webhook/iWebhooks.d.ts +26 -0
  258. package/dist/src/bitgo/webhook/iWebhooks.d.ts.map +1 -0
  259. package/dist/src/bitgo/webhook/iWebhooks.js +3 -0
  260. package/dist/src/bitgo/webhook/index.d.ts +3 -0
  261. package/dist/src/bitgo/webhook/index.d.ts.map +1 -0
  262. package/dist/src/bitgo/webhook/index.js +15 -0
  263. package/dist/src/bitgo/webhook/webhooks.d.ts +43 -0
  264. package/dist/src/bitgo/webhook/webhooks.d.ts.map +1 -0
  265. package/dist/src/bitgo/webhook/webhooks.js +102 -0
  266. package/dist/src/bitgojsError.d.ts +4 -0
  267. package/dist/src/bitgojsError.d.ts.map +1 -0
  268. package/dist/src/bitgojsError.js +11 -0
  269. package/dist/src/common.d.ts +1 -1
  270. package/dist/src/common.d.ts.map +1 -1
  271. package/dist/src/common.js +3 -3
  272. package/dist/src/index.d.ts +3 -2
  273. package/dist/src/index.d.ts.map +1 -1
  274. package/dist/src/index.js +5 -5
  275. package/dist/tsconfig.tsbuildinfo +2343 -217
  276. package/package.json +11 -4
  277. package/dist/src/v2/environments.d.ts.map +0 -1
  278. package/dist/src/v2/environments.js +0 -142
  279. package/dist/src/v2/index.d.ts +0 -3
  280. package/dist/src/v2/index.d.ts.map +0 -1
  281. package/dist/src/v2/types.d.ts +0 -2
  282. package/dist/src/v2/types.d.ts.map +0 -1
  283. package/dist/src/v2/types.js +0 -3
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TradingAccount = void 0;
4
+ /**
5
+ * @prettier
6
+ */
7
+ const bignumber_js_1 = require("bignumber.js");
8
+ const trading_1 = require("../trading");
9
+ const TRADE_PAYLOAD_VERSION = '1.2.0';
10
+ class TradingAccount {
11
+ constructor(enterpriseId, wallet, bitgo) {
12
+ this.enterpriseId = enterpriseId;
13
+ this.wallet = wallet;
14
+ this.bitgo = bitgo;
15
+ }
16
+ get id() {
17
+ return this.wallet.id();
18
+ }
19
+ /**
20
+ * Builds a payload authorizing trade from this trading account.
21
+ * @param params
22
+ * @param params.amounts[] array of amounts that will be traded as part of the settlement
23
+ * @param params.amounts[].accountId the accountId corresponding with the sending and receiving amounts for the settlement
24
+ * @param params.amounts[].sendAmount amount of currency sent by trading account of given accountId
25
+ * @param params.amounts[].sendCurrency currency of amount sent by trading account of given accountId
26
+ * @param params.amounts[].receiveAmount amount of currency received by trading account of given accountId
27
+ * @param params.amounts[].receiveCurrency currency of amount received by trading account of given accountId
28
+ * @returns unsigned trade payload for the given parameters. This object should be stringified with JSON.stringify() before being submitted
29
+ */
30
+ async buildPayload(params) {
31
+ const url = this.bitgo.microservicesUrl(`/api/trade/v1/enterprise/${this.enterpriseId}/account/${this.id}/payload`);
32
+ const body = {
33
+ version: TRADE_PAYLOAD_VERSION,
34
+ amounts: params.amounts,
35
+ };
36
+ const response = (await this.bitgo.post(url).send(body).result());
37
+ if (!this.verifyPayload(params, response.payload)) {
38
+ throw new Error('Unable to verify trade payload. You may need to update the BitGo SDK, or the payload may have been tampered with.');
39
+ }
40
+ return JSON.parse(response.payload);
41
+ }
42
+ /**
43
+ * Verifies that a payload received from BitGo sufficiently matches the expected parameters. This is used to prevent
44
+ * man-in-the-middle attacks which could maliciously alter the contents of a payload.
45
+ * @param params parameters used to build the payload
46
+ * @param payload payload received from the BitGo API
47
+ * @returns true if the payload's sensitive fields match, false if the payload may have been tampered with
48
+ */
49
+ verifyPayload(params, payload) {
50
+ const payloadObj = JSON.parse(payload);
51
+ const paramsCopy = JSON.parse(JSON.stringify(params)); // needs to be a deep copy
52
+ // Verifies that for each party in the payload, we requested a matching party, only checking sensitive fields
53
+ let validAmounts = 0;
54
+ for (const amount of payloadObj.amounts) {
55
+ const matchingExpectedParty = paramsCopy.amounts.findIndex((expectedAmount) => amount.accountId === expectedAmount.accountId &&
56
+ amount.sendCurrency === expectedAmount.sendCurrency &&
57
+ amount.sendSubtotal === expectedAmount.sendAmount &&
58
+ amount.receiveAmount === expectedAmount.receiveAmount &&
59
+ amount.receiveCurrency === expectedAmount.receiveCurrency);
60
+ if (matchingExpectedParty === -1) {
61
+ // matchingExpectedParty not found to the payloadObject
62
+ // payload is not valid
63
+ break;
64
+ }
65
+ if (amount.fees && amount.fees.length > 0) {
66
+ let feeTotal = new bignumber_js_1.BigNumber(0);
67
+ for (const fee of amount.fees) {
68
+ feeTotal = feeTotal.plus(new bignumber_js_1.BigNumber(fee.feeAmount));
69
+ }
70
+ const expectedTotalAmount = new bignumber_js_1.BigNumber(paramsCopy.amounts[matchingExpectedParty].sendAmount).plus(feeTotal);
71
+ if (expectedTotalAmount.toString() !== amount.sendAmount) {
72
+ // expected total does not match the sendAmount of the payload
73
+ // payload is not valid
74
+ break;
75
+ }
76
+ }
77
+ // matching party found, and fee found
78
+ validAmounts = validAmounts + 1;
79
+ // delete so we ensure no duplicates
80
+ paramsCopy.amounts.splice(matchingExpectedParty, 1);
81
+ }
82
+ return (payloadObj.accountId === this.id &&
83
+ payloadObj.amounts.length === params.amounts.length &&
84
+ validAmounts === payloadObj.amounts.length);
85
+ }
86
+ /**
87
+ * Calculates the necessary fees to complete a settlement between two parties, based on the amounts and currencies of the settlement.
88
+ * @param params
89
+ * @param params.counterpartyAccountId Account ID of the counterparty of the settlement
90
+ * @param params.sendCurrency Currency to be sent as part of the settlement
91
+ * @param params.sendAmount Amount of currency (in base units such as cents, satoshis, or wei) to be sent
92
+ * @param params.receiveCurrency Currency to be received as part of the settlement
93
+ * @param params.receiveAmount Amount of currency (in base units such as cents, satoshis, or wei) to be received
94
+ * @returns Fee rate, currency, and total amount of the described settlement
95
+ */
96
+ async calculateSettlementFees(params) {
97
+ const url = this.bitgo.microservicesUrl(`/api/trade/v1/enterprise/${this.enterpriseId}/account/${this.id}/calculatefees`);
98
+ return await this.bitgo.post(url).send(params).result();
99
+ }
100
+ /**
101
+ * Signs a pre-built trade payload with the user key on this trading account
102
+ * @param params
103
+ * @param params.payload trade payload object from TradingAccount::buildPayload()
104
+ * @param params.walletPassphrase passphrase on this trading account, used to unlock the account user key
105
+ * @returns hex-encoded signature of the payload
106
+ */
107
+ async signPayload(params) {
108
+ const key = (await this.wallet.baseCoin.keychains().get({ id: this.wallet.keyIds()[0] }));
109
+ const prv = this.wallet.bitgo.decrypt({
110
+ input: key.encryptedPrv,
111
+ password: params.walletPassphrase,
112
+ });
113
+ const payload = JSON.stringify(params.payload);
114
+ return (await this.wallet.baseCoin.signMessage({ prv }, payload)).toString('hex');
115
+ }
116
+ affirmations() {
117
+ return new trading_1.Affirmations(this.bitgo, this.enterpriseId, this);
118
+ }
119
+ settlements() {
120
+ return new trading_1.Settlements(this.bitgo, this.enterpriseId, this);
121
+ }
122
+ partners() {
123
+ return new trading_1.TradingPartners(this.bitgo, this.enterpriseId, this);
124
+ }
125
+ }
126
+ exports.TradingAccount = TradingAccount;
127
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZGluZ0FjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy90cmFkaW5nQWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILCtDQUF5QztBQUV6Qyx3Q0Fhb0I7QUFHcEIsTUFBTSxxQkFBcUIsR0FBRyxPQUFPLENBQUM7QUFFdEMsTUFBYSxjQUFjO0lBTXpCLFlBQVksWUFBb0IsRUFBRSxNQUFlLEVBQUUsS0FBZ0I7UUFDakUsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksRUFBRTtRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsTUFBOEI7UUFDL0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyw0QkFBNEIsSUFBSSxDQUFDLFlBQVksWUFBWSxJQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUVwSCxNQUFNLElBQUksR0FBRztZQUNYLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1NBQ3hCLENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFRLENBQUM7UUFFekUsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqRCxN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QUFwSkQsd0NBb0pDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQmlnTnVtYmVyIH0gZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEJpdEdvQmFzZSB9IGZyb20gJy4uL2JpdGdvQmFzZSc7XG5pbXBvcnQge1xuICBBZmZpcm1hdGlvbnMsXG4gIEJ1aWxkUGF5bG9hZFBhcmFtZXRlcnMsXG4gIENhbGN1bGF0ZVNldHRsZW1lbnRGZWVzUGFyYW1zLFxuICBJQWZmaXJtYXRpb25zLFxuICBJU2V0dGxlbWVudHMsXG4gIElUcmFkaW5nQWNjb3VudCxcbiAgSVRyYWRpbmdQYXJ0bmVycyxcbiAgUGF5bG9hZCxcbiAgU2V0dGxlbWVudEZlZXMsXG4gIFNldHRsZW1lbnRzLFxuICBTaWduUGF5bG9hZFBhcmFtZXRlcnMsXG4gIFRyYWRpbmdQYXJ0bmVycyxcbn0gZnJvbSAnLi4vdHJhZGluZyc7XG5pbXBvcnQgeyBJV2FsbGV0IH0gZnJvbSAnLi4vd2FsbGV0JztcblxuY29uc3QgVFJBREVfUEFZTE9BRF9WRVJTSU9OID0gJzEuMi4wJztcblxuZXhwb3J0IGNsYXNzIFRyYWRpbmdBY2NvdW50IGltcGxlbWVudHMgSVRyYWRpbmdBY2NvdW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBiaXRnbzogQml0R29CYXNlO1xuICBwcml2YXRlIHJlYWRvbmx5IGVudGVycHJpc2VJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyB3YWxsZXQ6IElXYWxsZXQ7XG5cbiAgY29uc3RydWN0b3IoZW50ZXJwcmlzZUlkOiBzdHJpbmcsIHdhbGxldDogSVdhbGxldCwgYml0Z286IEJpdEdvQmFzZSkge1xuICAgIHRoaXMuZW50ZXJwcmlzZUlkID0gZW50ZXJwcmlzZUlkO1xuICAgIHRoaXMud2FsbGV0ID0gd2FsbGV0O1xuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgfVxuXG4gIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy53YWxsZXQuaWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBwYXlsb2FkIGF1dGhvcml6aW5nIHRyYWRlIGZyb20gdGhpcyB0cmFkaW5nIGFjY291bnQuXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy5hbW91bnRzW10gYXJyYXkgb2YgYW1vdW50cyB0aGF0IHdpbGwgYmUgdHJhZGVkIGFzIHBhcnQgb2YgdGhlIHNldHRsZW1lbnRcbiAgICogQHBhcmFtIHBhcmFtcy5hbW91bnRzW10uYWNjb3VudElkIHRoZSBhY2NvdW50SWQgY29ycmVzcG9uZGluZyB3aXRoIHRoZSBzZW5kaW5nIGFuZCByZWNlaXZpbmcgYW1vdW50cyBmb3IgdGhlIHNldHRsZW1lbnRcbiAgICogQHBhcmFtIHBhcmFtcy5hbW91bnRzW10uc2VuZEFtb3VudCBhbW91bnQgb2YgY3VycmVuY3kgc2VudCBieSB0cmFkaW5nIGFjY291bnQgb2YgZ2l2ZW4gYWNjb3VudElkXG4gICAqIEBwYXJhbSBwYXJhbXMuYW1vdW50c1tdLnNlbmRDdXJyZW5jeSBjdXJyZW5jeSBvZiBhbW91bnQgc2VudCBieSB0cmFkaW5nIGFjY291bnQgb2YgZ2l2ZW4gYWNjb3VudElkXG4gICAqIEBwYXJhbSBwYXJhbXMuYW1vdW50c1tdLnJlY2VpdmVBbW91bnQgYW1vdW50IG9mIGN1cnJlbmN5IHJlY2VpdmVkIGJ5IHRyYWRpbmcgYWNjb3VudCBvZiBnaXZlbiBhY2NvdW50SWRcbiAgICogQHBhcmFtIHBhcmFtcy5hbW91bnRzW10ucmVjZWl2ZUN1cnJlbmN5IGN1cnJlbmN5IG9mIGFtb3VudCByZWNlaXZlZCBieSB0cmFkaW5nIGFjY291bnQgb2YgZ2l2ZW4gYWNjb3VudElkXG4gICAqIEByZXR1cm5zIHVuc2lnbmVkIHRyYWRlIHBheWxvYWQgZm9yIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiBUaGlzIG9iamVjdCBzaG91bGQgYmUgc3RyaW5naWZpZWQgd2l0aCBKU09OLnN0cmluZ2lmeSgpIGJlZm9yZSBiZWluZyBzdWJtaXR0ZWRcbiAgICovXG4gIGFzeW5jIGJ1aWxkUGF5bG9hZChwYXJhbXM6IEJ1aWxkUGF5bG9hZFBhcmFtZXRlcnMpOiBQcm9taXNlPFBheWxvYWQ+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoYC9hcGkvdHJhZGUvdjEvZW50ZXJwcmlzZS8ke3RoaXMuZW50ZXJwcmlzZUlkfS9hY2NvdW50LyR7dGhpcy5pZH0vcGF5bG9hZGApO1xuXG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIHZlcnNpb246IFRSQURFX1BBWUxPQURfVkVSU0lPTixcbiAgICAgIGFtb3VudHM6IHBhcmFtcy5hbW91bnRzLFxuICAgIH07XG5cbiAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCB0aGlzLmJpdGdvLnBvc3QodXJsKS5zZW5kKGJvZHkpLnJlc3VsdCgpKSBhcyBhbnk7XG5cbiAgICBpZiAoIXRoaXMudmVyaWZ5UGF5bG9hZChwYXJhbXMsIHJlc3BvbnNlLnBheWxvYWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gdmVyaWZ5IHRyYWRlIHBheWxvYWQuIFlvdSBtYXkgbmVlZCB0byB1cGRhdGUgdGhlIEJpdEdvIFNESywgb3IgdGhlIHBheWxvYWQgbWF5IGhhdmUgYmVlbiB0YW1wZXJlZCB3aXRoLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVzcG9uc2UucGF5bG9hZCkgYXMgUGF5bG9hZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmllcyB0aGF0IGEgcGF5bG9hZCByZWNlaXZlZCBmcm9tIEJpdEdvIHN1ZmZpY2llbnRseSBtYXRjaGVzIHRoZSBleHBlY3RlZCBwYXJhbWV0ZXJzLiBUaGlzIGlzIHVzZWQgdG8gcHJldmVudFxuICAgKiBtYW4taW4tdGhlLW1pZGRsZSBhdHRhY2tzIHdoaWNoIGNvdWxkIG1hbGljaW91c2x5IGFsdGVyIHRoZSBjb250ZW50cyBvZiBhIHBheWxvYWQuXG4gICAqIEBwYXJhbSBwYXJhbXMgcGFyYW1ldGVycyB1c2VkIHRvIGJ1aWxkIHRoZSBwYXlsb2FkXG4gICAqIEBwYXJhbSBwYXlsb2FkIHBheWxvYWQgcmVjZWl2ZWQgZnJvbSB0aGUgQml0R28gQVBJXG4gICAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHBheWxvYWQncyBzZW5zaXRpdmUgZmllbGRzIG1hdGNoLCBmYWxzZSBpZiB0aGUgcGF5bG9hZCBtYXkgaGF2ZSBiZWVuIHRhbXBlcmVkIHdpdGhcbiAgICovXG4gIHZlcmlmeVBheWxvYWQocGFyYW1zOiBCdWlsZFBheWxvYWRQYXJhbWV0ZXJzLCBwYXlsb2FkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBwYXlsb2FkT2JqID0gSlNPTi5wYXJzZShwYXlsb2FkKTtcbiAgICBjb25zdCBwYXJhbXNDb3B5ID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShwYXJhbXMpKTsgLy8gbmVlZHMgdG8gYmUgYSBkZWVwIGNvcHlcblxuICAgIC8vIFZlcmlmaWVzIHRoYXQgZm9yIGVhY2ggcGFydHkgaW4gdGhlIHBheWxvYWQsIHdlIHJlcXVlc3RlZCBhIG1hdGNoaW5nIHBhcnR5LCBvbmx5IGNoZWNraW5nIHNlbnNpdGl2ZSBmaWVsZHNcbiAgICBsZXQgdmFsaWRBbW91bnRzID0gMDtcbiAgICBmb3IgKGNvbnN0IGFtb3VudCBvZiBwYXlsb2FkT2JqLmFtb3VudHMpIHtcbiAgICAgIGNvbnN0IG1hdGNoaW5nRXhwZWN0ZWRQYXJ0eSA9IHBhcmFtc0NvcHkuYW1vdW50cy5maW5kSW5kZXgoXG4gICAgICAgIChleHBlY3RlZEFtb3VudCkgPT5cbiAgICAgICAgICBhbW91bnQuYWNjb3VudElkID09PSBleHBlY3RlZEFtb3VudC5hY2NvdW50SWQgJiZcbiAgICAgICAgICBhbW91bnQuc2VuZEN1cnJlbmN5ID09PSBleHBlY3RlZEFtb3VudC5zZW5kQ3VycmVuY3kgJiZcbiAgICAgICAgICBhbW91bnQuc2VuZFN1YnRvdGFsID09PSBleHBlY3RlZEFtb3VudC5zZW5kQW1vdW50ICYmXG4gICAgICAgICAgYW1vdW50LnJlY2VpdmVBbW91bnQgPT09IGV4cGVjdGVkQW1vdW50LnJlY2VpdmVBbW91bnQgJiZcbiAgICAgICAgICBhbW91bnQucmVjZWl2ZUN1cnJlbmN5ID09PSBleHBlY3RlZEFtb3VudC5yZWNlaXZlQ3VycmVuY3lcbiAgICAgICk7XG5cbiAgICAgIGlmIChtYXRjaGluZ0V4cGVjdGVkUGFydHkgPT09IC0xKSB7XG4gICAgICAgIC8vIG1hdGNoaW5nRXhwZWN0ZWRQYXJ0eSBub3QgZm91bmQgdG8gdGhlIHBheWxvYWRPYmplY3RcbiAgICAgICAgLy8gcGF5bG9hZCBpcyBub3QgdmFsaWRcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGlmIChhbW91bnQuZmVlcyAmJiBhbW91bnQuZmVlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGxldCBmZWVUb3RhbCA9IG5ldyBCaWdOdW1iZXIoMCk7XG4gICAgICAgIGZvciAoY29uc3QgZmVlIG9mIGFtb3VudC5mZWVzKSB7XG4gICAgICAgICAgZmVlVG90YWwgPSBmZWVUb3RhbC5wbHVzKG5ldyBCaWdOdW1iZXIoZmVlLmZlZUFtb3VudCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXhwZWN0ZWRUb3RhbEFtb3VudCA9IG5ldyBCaWdOdW1iZXIocGFyYW1zQ29weS5hbW91bnRzW21hdGNoaW5nRXhwZWN0ZWRQYXJ0eV0uc2VuZEFtb3VudCkucGx1cyhmZWVUb3RhbCk7XG4gICAgICAgIGlmIChleHBlY3RlZFRvdGFsQW1vdW50LnRvU3RyaW5nKCkgIT09IGFtb3VudC5zZW5kQW1vdW50KSB7XG4gICAgICAgICAgLy8gZXhwZWN0ZWQgdG90YWwgZG9lcyBub3QgbWF0Y2ggdGhlIHNlbmRBbW91bnQgb2YgdGhlIHBheWxvYWRcbiAgICAgICAgICAvLyBwYXlsb2FkIGlzIG5vdCB2YWxpZFxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIG1hdGNoaW5nIHBhcnR5IGZvdW5kLCBhbmQgZmVlIGZvdW5kXG4gICAgICB2YWxpZEFtb3VudHMgPSB2YWxpZEFtb3VudHMgKyAxO1xuICAgICAgLy8gZGVsZXRlIHNvIHdlIGVuc3VyZSBubyBkdXBsaWNhdGVzXG4gICAgICBwYXJhbXNDb3B5LmFtb3VudHMuc3BsaWNlKG1hdGNoaW5nRXhwZWN0ZWRQYXJ0eSwgMSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIHBheWxvYWRPYmouYWNjb3VudElkID09PSB0aGlzLmlkICYmXG4gICAgICBwYXlsb2FkT2JqLmFtb3VudHMubGVuZ3RoID09PSBwYXJhbXMuYW1vdW50cy5sZW5ndGggJiZcbiAgICAgIHZhbGlkQW1vdW50cyA9PT0gcGF5bG9hZE9iai5hbW91bnRzLmxlbmd0aFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsY3VsYXRlcyB0aGUgbmVjZXNzYXJ5IGZlZXMgdG8gY29tcGxldGUgYSBzZXR0bGVtZW50IGJldHdlZW4gdHdvIHBhcnRpZXMsIGJhc2VkIG9uIHRoZSBhbW91bnRzIGFuZCBjdXJyZW5jaWVzIG9mIHRoZSBzZXR0bGVtZW50LlxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMuY291bnRlcnBhcnR5QWNjb3VudElkIEFjY291bnQgSUQgb2YgdGhlIGNvdW50ZXJwYXJ0eSBvZiB0aGUgc2V0dGxlbWVudFxuICAgKiBAcGFyYW0gcGFyYW1zLnNlbmRDdXJyZW5jeSBDdXJyZW5jeSB0byBiZSBzZW50IGFzIHBhcnQgb2YgdGhlIHNldHRsZW1lbnRcbiAgICogQHBhcmFtIHBhcmFtcy5zZW5kQW1vdW50IEFtb3VudCBvZiBjdXJyZW5jeSAoaW4gYmFzZSB1bml0cyBzdWNoIGFzIGNlbnRzLCBzYXRvc2hpcywgb3Igd2VpKSB0byBiZSBzZW50XG4gICAqIEBwYXJhbSBwYXJhbXMucmVjZWl2ZUN1cnJlbmN5IEN1cnJlbmN5IHRvIGJlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhlIHNldHRsZW1lbnRcbiAgICogQHBhcmFtIHBhcmFtcy5yZWNlaXZlQW1vdW50IEFtb3VudCBvZiBjdXJyZW5jeSAoaW4gYmFzZSB1bml0cyBzdWNoIGFzIGNlbnRzLCBzYXRvc2hpcywgb3Igd2VpKSB0byBiZSByZWNlaXZlZFxuICAgKiBAcmV0dXJucyBGZWUgcmF0ZSwgY3VycmVuY3ksIGFuZCB0b3RhbCBhbW91bnQgb2YgdGhlIGRlc2NyaWJlZCBzZXR0bGVtZW50XG4gICAqL1xuICBhc3luYyBjYWxjdWxhdGVTZXR0bGVtZW50RmVlcyhwYXJhbXM6IENhbGN1bGF0ZVNldHRsZW1lbnRGZWVzUGFyYW1zKTogUHJvbWlzZTxTZXR0bGVtZW50RmVlcz4ge1xuICAgIGNvbnN0IHVybCA9IHRoaXMuYml0Z28ubWljcm9zZXJ2aWNlc1VybChcbiAgICAgIGAvYXBpL3RyYWRlL3YxL2VudGVycHJpc2UvJHt0aGlzLmVudGVycHJpc2VJZH0vYWNjb3VudC8ke3RoaXMuaWR9L2NhbGN1bGF0ZWZlZXNgXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLnBvc3QodXJsKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cblxuICAvKipcbiAgICogU2lnbnMgYSBwcmUtYnVpbHQgdHJhZGUgcGF5bG9hZCB3aXRoIHRoZSB1c2VyIGtleSBvbiB0aGlzIHRyYWRpbmcgYWNjb3VudFxuICAgKiBAcGFyYW0gcGFyYW1zXG4gICAqIEBwYXJhbSBwYXJhbXMucGF5bG9hZCB0cmFkZSBwYXlsb2FkIG9iamVjdCBmcm9tIFRyYWRpbmdBY2NvdW50OjpidWlsZFBheWxvYWQoKVxuICAgKiBAcGFyYW0gcGFyYW1zLndhbGxldFBhc3NwaHJhc2UgcGFzc3BocmFzZSBvbiB0aGlzIHRyYWRpbmcgYWNjb3VudCwgdXNlZCB0byB1bmxvY2sgdGhlIGFjY291bnQgdXNlciBrZXlcbiAgICogQHJldHVybnMgaGV4LWVuY29kZWQgc2lnbmF0dXJlIG9mIHRoZSBwYXlsb2FkXG4gICAqL1xuICBhc3luYyBzaWduUGF5bG9hZChwYXJhbXM6IFNpZ25QYXlsb2FkUGFyYW1ldGVycyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qga2V5ID0gKGF3YWl0IHRoaXMud2FsbGV0LmJhc2VDb2luLmtleWNoYWlucygpLmdldCh7IGlkOiB0aGlzLndhbGxldC5rZXlJZHMoKVswXSB9KSkgYXMgYW55O1xuICAgIGNvbnN0IHBydiA9IHRoaXMud2FsbGV0LmJpdGdvLmRlY3J5cHQoe1xuICAgICAgaW5wdXQ6IGtleS5lbmNyeXB0ZWRQcnYsXG4gICAgICBwYXNzd29yZDogcGFyYW1zLndhbGxldFBhc3NwaHJhc2UsXG4gICAgfSk7XG4gICAgY29uc3QgcGF5bG9hZCA9IEpTT04uc3RyaW5naWZ5KHBhcmFtcy5wYXlsb2FkKTtcbiAgICByZXR1cm4gKChhd2FpdCB0aGlzLndhbGxldC5iYXNlQ29pbi5zaWduTWVzc2FnZSh7IHBydiB9LCBwYXlsb2FkKSkgYXMgYW55KS50b1N0cmluZygnaGV4Jyk7XG4gIH1cblxuICBhZmZpcm1hdGlvbnMoKTogSUFmZmlybWF0aW9ucyB7XG4gICAgcmV0dXJuIG5ldyBBZmZpcm1hdGlvbnModGhpcy5iaXRnbywgdGhpcy5lbnRlcnByaXNlSWQsIHRoaXMpO1xuICB9XG5cbiAgc2V0dGxlbWVudHMoKTogSVNldHRsZW1lbnRzIHtcbiAgICByZXR1cm4gbmV3IFNldHRsZW1lbnRzKHRoaXMuYml0Z28sIHRoaXMuZW50ZXJwcmlzZUlkLCB0aGlzKTtcbiAgfVxuXG4gIHBhcnRuZXJzKCk6IElUcmFkaW5nUGFydG5lcnMge1xuICAgIHJldHVybiBuZXcgVHJhZGluZ1BhcnRuZXJzKHRoaXMuYml0Z28sIHRoaXMuZW50ZXJwcmlzZUlkLCB0aGlzKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { BitGoBase } from '../bitgoBase';
5
+ import { ITradingPartner, TradingAccount, TradingPartnerStatus, TradingPartnerType } from '../trading';
6
+ export declare class TradingPartner implements ITradingPartner {
7
+ private bitgo;
8
+ private enterpriseId;
9
+ private currentAccount;
10
+ id: string;
11
+ primaryEnterpriseName: string;
12
+ primaryAccountId: string;
13
+ secondaryEnterpriseName: string;
14
+ secondaryAccountId: string;
15
+ requesterAccountId: string;
16
+ status: TradingPartnerStatus;
17
+ type: TradingPartnerType;
18
+ constructor(tradingPartnerData: any, bitgo: BitGoBase, enterpriseId: string, currentAccount: TradingAccount);
19
+ /**
20
+ * Check if a trading partner has enough funds to cover the cost of a trade.
21
+ * @param currency the currency to check
22
+ * @param amount the amount of currency to check, represented in base units (such as cents, satoshi, or wei)
23
+ */
24
+ checkBalance(currency: string, amount: string): Promise<boolean>;
25
+ }
26
+ //# sourceMappingURL=tradingPartner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradingPartner.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/tradingPartner.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvG,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAiB;IAEhC,EAAE,EAAE,MAAM,CAAC;IACX,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,kBAAkB,CAAC;gBAEpB,kBAAkB,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc;IAe3G;;;;OAIG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAWvE"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TradingPartner = void 0;
4
+ class TradingPartner {
5
+ constructor(tradingPartnerData, bitgo, enterpriseId, currentAccount) {
6
+ this.id = tradingPartnerData.id;
7
+ this.primaryEnterpriseName = tradingPartnerData.primaryEnterpriseName;
8
+ this.primaryAccountId = tradingPartnerData.primaryAccountId;
9
+ this.secondaryEnterpriseName = tradingPartnerData.secondaryEnterpriseName;
10
+ this.secondaryAccountId = tradingPartnerData.secondaryAccountId;
11
+ this.requesterAccountId = tradingPartnerData.requesterAccountId;
12
+ this.status = tradingPartnerData.status;
13
+ this.type = tradingPartnerData.type;
14
+ this.bitgo = bitgo;
15
+ this.enterpriseId = enterpriseId;
16
+ this.currentAccount = currentAccount;
17
+ }
18
+ /**
19
+ * Check if a trading partner has enough funds to cover the cost of a trade.
20
+ * @param currency the currency to check
21
+ * @param amount the amount of currency to check, represented in base units (such as cents, satoshi, or wei)
22
+ */
23
+ async checkBalance(currency, amount) {
24
+ const partnerAccountId = this.primaryAccountId === this.currentAccount.id ? this.secondaryAccountId : this.primaryAccountId;
25
+ const url = this.bitgo.microservicesUrl(`/api/trade/v1/enterprise/${this.enterpriseId}/account/${this.currentAccount.id}/tradingpartners/${partnerAccountId}/balance`);
26
+ const response = (await this.bitgo.get(url).query({ currency, amount }).result());
27
+ return response.check;
28
+ }
29
+ }
30
+ exports.TradingPartner = TradingPartner;
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZGluZ1BhcnRuZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vdHJhZGluZy90cmFkaW5nUGFydG5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFhLGNBQWM7SUFjekIsWUFBWSxrQkFBdUIsRUFBRSxLQUFnQixFQUFFLFlBQW9CLEVBQUUsY0FBOEI7UUFDekcsSUFBSSxDQUFDLEVBQUUsR0FBRyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDO1FBQ3RFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM1RCxJQUFJLENBQUMsdUJBQXVCLEdBQUcsa0JBQWtCLENBQUMsdUJBQXVCLENBQUM7UUFDMUUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDO1FBQ2hFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUNoRSxJQUFJLENBQUMsTUFBTSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztRQUN4QyxJQUFJLENBQUMsSUFBSSxHQUFHLGtCQUFrQixDQUFDLElBQUksQ0FBQztRQUVwQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILEtBQUssQ0FBQyxZQUFZLENBQUMsUUFBZ0IsRUFBRSxNQUFjO1FBQ2pELE1BQU0sZ0JBQWdCLEdBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDckcsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDckMsNEJBQTRCLElBQUksQ0FBQyxZQUFZLFlBQVksSUFBSSxDQUFDLGNBQWMsQ0FBQyxFQUFFLG9CQUFvQixnQkFBZ0IsVUFBVSxDQUM5SCxDQUFDO1FBRUYsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFRLENBQUM7UUFFekYsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQ3hCLENBQUM7Q0FDRjtBQTdDRCx3Q0E2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBwcmV0dGllclxuICovXG5pbXBvcnQgeyBCaXRHb0Jhc2UgfSBmcm9tICcuLi9iaXRnb0Jhc2UnO1xuaW1wb3J0IHsgSVRyYWRpbmdQYXJ0bmVyLCBUcmFkaW5nQWNjb3VudCwgVHJhZGluZ1BhcnRuZXJTdGF0dXMsIFRyYWRpbmdQYXJ0bmVyVHlwZSB9IGZyb20gJy4uL3RyYWRpbmcnO1xuXG5leHBvcnQgY2xhc3MgVHJhZGluZ1BhcnRuZXIgaW1wbGVtZW50cyBJVHJhZGluZ1BhcnRuZXIge1xuICBwcml2YXRlIGJpdGdvOiBCaXRHb0Jhc2U7XG4gIHByaXZhdGUgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgY3VycmVudEFjY291bnQ6IFRyYWRpbmdBY2NvdW50OyAvLyBhY2NvdW50IG9mIHRoZSB1c2VyIHVzaW5nIHRoZSBTREssIG5lZWRlZCB0byBjb25zdHJ1Y3QgYmFsYW5jZSBjaGVjayBVUkxcblxuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIHByaW1hcnlFbnRlcnByaXNlTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcHJpbWFyeUFjY291bnRJZDogc3RyaW5nO1xuICBwdWJsaWMgc2Vjb25kYXJ5RW50ZXJwcmlzZU5hbWU6IHN0cmluZztcbiAgcHVibGljIHNlY29uZGFyeUFjY291bnRJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVxdWVzdGVyQWNjb3VudElkOiBzdHJpbmc7XG4gIHB1YmxpYyBzdGF0dXM6IFRyYWRpbmdQYXJ0bmVyU3RhdHVzO1xuICBwdWJsaWMgdHlwZTogVHJhZGluZ1BhcnRuZXJUeXBlO1xuXG4gIGNvbnN0cnVjdG9yKHRyYWRpbmdQYXJ0bmVyRGF0YTogYW55LCBiaXRnbzogQml0R29CYXNlLCBlbnRlcnByaXNlSWQ6IHN0cmluZywgY3VycmVudEFjY291bnQ6IFRyYWRpbmdBY2NvdW50KSB7XG4gICAgdGhpcy5pZCA9IHRyYWRpbmdQYXJ0bmVyRGF0YS5pZDtcbiAgICB0aGlzLnByaW1hcnlFbnRlcnByaXNlTmFtZSA9IHRyYWRpbmdQYXJ0bmVyRGF0YS5wcmltYXJ5RW50ZXJwcmlzZU5hbWU7XG4gICAgdGhpcy5wcmltYXJ5QWNjb3VudElkID0gdHJhZGluZ1BhcnRuZXJEYXRhLnByaW1hcnlBY2NvdW50SWQ7XG4gICAgdGhpcy5zZWNvbmRhcnlFbnRlcnByaXNlTmFtZSA9IHRyYWRpbmdQYXJ0bmVyRGF0YS5zZWNvbmRhcnlFbnRlcnByaXNlTmFtZTtcbiAgICB0aGlzLnNlY29uZGFyeUFjY291bnRJZCA9IHRyYWRpbmdQYXJ0bmVyRGF0YS5zZWNvbmRhcnlBY2NvdW50SWQ7XG4gICAgdGhpcy5yZXF1ZXN0ZXJBY2NvdW50SWQgPSB0cmFkaW5nUGFydG5lckRhdGEucmVxdWVzdGVyQWNjb3VudElkO1xuICAgIHRoaXMuc3RhdHVzID0gdHJhZGluZ1BhcnRuZXJEYXRhLnN0YXR1cztcbiAgICB0aGlzLnR5cGUgPSB0cmFkaW5nUGFydG5lckRhdGEudHlwZTtcblxuICAgIHRoaXMuYml0Z28gPSBiaXRnbztcbiAgICB0aGlzLmVudGVycHJpc2VJZCA9IGVudGVycHJpc2VJZDtcbiAgICB0aGlzLmN1cnJlbnRBY2NvdW50ID0gY3VycmVudEFjY291bnQ7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgYSB0cmFkaW5nIHBhcnRuZXIgaGFzIGVub3VnaCBmdW5kcyB0byBjb3ZlciB0aGUgY29zdCBvZiBhIHRyYWRlLlxuICAgKiBAcGFyYW0gY3VycmVuY3kgdGhlIGN1cnJlbmN5IHRvIGNoZWNrXG4gICAqIEBwYXJhbSBhbW91bnQgdGhlIGFtb3VudCBvZiBjdXJyZW5jeSB0byBjaGVjaywgcmVwcmVzZW50ZWQgaW4gYmFzZSB1bml0cyAoc3VjaCBhcyBjZW50cywgc2F0b3NoaSwgb3Igd2VpKVxuICAgKi9cbiAgYXN5bmMgY2hlY2tCYWxhbmNlKGN1cnJlbmN5OiBzdHJpbmcsIGFtb3VudDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcGFydG5lckFjY291bnRJZCA9XG4gICAgICB0aGlzLnByaW1hcnlBY2NvdW50SWQgPT09IHRoaXMuY3VycmVudEFjY291bnQuaWQgPyB0aGlzLnNlY29uZGFyeUFjY291bnRJZCA6IHRoaXMucHJpbWFyeUFjY291bnRJZDtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoXG4gICAgICBgL2FwaS90cmFkZS92MS9lbnRlcnByaXNlLyR7dGhpcy5lbnRlcnByaXNlSWR9L2FjY291bnQvJHt0aGlzLmN1cnJlbnRBY2NvdW50LmlkfS90cmFkaW5ncGFydG5lcnMvJHtwYXJ0bmVyQWNjb3VudElkfS9iYWxhbmNlYFxuICAgICk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IChhd2FpdCB0aGlzLmJpdGdvLmdldCh1cmwpLnF1ZXJ5KHsgY3VycmVuY3ksIGFtb3VudCB9KS5yZXN1bHQoKSkgYXMgYW55O1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLmNoZWNrO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @prettier
3
+ */
4
+ import { BitGoBase } from '../bitgoBase';
5
+ import { ITradingPartners, TradingAccount, TradingPartner, TradingPartnerAddByCodeParameters } from '../trading';
6
+ export declare class TradingPartners implements ITradingPartners {
7
+ private bitgo;
8
+ private enterpriseId;
9
+ private account;
10
+ constructor(bitgo: BitGoBase, enterpriseId: string, account: TradingAccount);
11
+ /**
12
+ * List all trading partners of your trading account. Your trading partners are the accounts you are allowed to settle with.
13
+ */
14
+ list(): Promise<TradingPartner[]>;
15
+ /**
16
+ * Add trading partner given the unique referralCode provided by trading partner.
17
+ * @param params
18
+ * @param params.referralCode unique referral code provided by counterparty
19
+ * @param params.type type of trading partnership
20
+ * @param params.requesterSide side of the requester (primary or secondary) important for agency relationships
21
+ */
22
+ addByCode(params: TradingPartnerAddByCodeParameters): Promise<TradingPartner>;
23
+ }
24
+ //# sourceMappingURL=tradingPartners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tradingPartners.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/trading/tradingPartners.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,cAAc,EAAE,iCAAiC,EAAE,MAAM,YAAY,CAAC;AAEjH,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,KAAK,CAAY;IAEzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAiB;gBAEpB,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc;IAM3E;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAWvC;;;;;;OAMG;IACG,SAAS,CAAC,MAAM,EAAE,iCAAiC,GAAG,OAAO,CAAC,cAAc,CAAC;CAMpF"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TradingPartners = void 0;
4
+ const trading_1 = require("../trading");
5
+ class TradingPartners {
6
+ constructor(bitgo, enterpriseId, account) {
7
+ this.bitgo = bitgo;
8
+ this.enterpriseId = enterpriseId;
9
+ this.account = account;
10
+ }
11
+ /**
12
+ * List all trading partners of your trading account. Your trading partners are the accounts you are allowed to settle with.
13
+ */
14
+ async list() {
15
+ const url = this.bitgo.microservicesUrl(`/api/trade/v1/enterprise/${this.enterpriseId}/account/${this.account.id}/tradingpartners`);
16
+ const response = (await this.bitgo.get(url).result());
17
+ return response.tradingPartners.map((partner) => new trading_1.TradingPartner(partner, this.bitgo, this.enterpriseId, this.account));
18
+ }
19
+ /**
20
+ * Add trading partner given the unique referralCode provided by trading partner.
21
+ * @param params
22
+ * @param params.referralCode unique referral code provided by counterparty
23
+ * @param params.type type of trading partnership
24
+ * @param params.requesterSide side of the requester (primary or secondary) important for agency relationships
25
+ */
26
+ async addByCode(params) {
27
+ const url = this.bitgo.microservicesUrl(`/api/trade/v1/enterprise/${this.enterpriseId}/account/${this.account.id}/tradingpartners`);
28
+ return await this.bitgo.post(url).send(params).result();
29
+ }
30
+ }
31
+ exports.TradingPartners = TradingPartners;
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhZGluZ1BhcnRuZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3RyYWRpbmcvdHJhZGluZ1BhcnRuZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHdDQUFpSDtBQUVqSCxNQUFhLGVBQWU7SUFNMUIsWUFBWSxLQUFnQixFQUFFLFlBQW9CLEVBQUUsT0FBdUI7UUFDekUsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLElBQUk7UUFDUixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUNyQyw0QkFBNEIsSUFBSSxDQUFDLFlBQVksWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsa0JBQWtCLENBQzNGLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQVEsQ0FBQztRQUU3RCxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUNqQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsSUFBSSx3QkFBYyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUN0RixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBeUM7UUFDdkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDckMsNEJBQTRCLElBQUksQ0FBQyxZQUFZLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLGtCQUFrQixDQUMzRixDQUFDO1FBQ0YsT0FBTyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUF2Q0QsMENBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29CYXNlIH0gZnJvbSAnLi4vYml0Z29CYXNlJztcbmltcG9ydCB7IElUcmFkaW5nUGFydG5lcnMsIFRyYWRpbmdBY2NvdW50LCBUcmFkaW5nUGFydG5lciwgVHJhZGluZ1BhcnRuZXJBZGRCeUNvZGVQYXJhbWV0ZXJzIH0gZnJvbSAnLi4vdHJhZGluZyc7XG5cbmV4cG9ydCBjbGFzcyBUcmFkaW5nUGFydG5lcnMgaW1wbGVtZW50cyBJVHJhZGluZ1BhcnRuZXJzIHtcbiAgcHJpdmF0ZSBiaXRnbzogQml0R29CYXNlO1xuXG4gIHByaXZhdGUgZW50ZXJwcmlzZUlkOiBzdHJpbmc7XG4gIHByaXZhdGUgYWNjb3VudDogVHJhZGluZ0FjY291bnQ7XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgZW50ZXJwcmlzZUlkOiBzdHJpbmcsIGFjY291bnQ6IFRyYWRpbmdBY2NvdW50KSB7XG4gICAgdGhpcy5iaXRnbyA9IGJpdGdvO1xuICAgIHRoaXMuZW50ZXJwcmlzZUlkID0gZW50ZXJwcmlzZUlkO1xuICAgIHRoaXMuYWNjb3VudCA9IGFjY291bnQ7XG4gIH1cblxuICAvKipcbiAgICogTGlzdCBhbGwgdHJhZGluZyBwYXJ0bmVycyBvZiB5b3VyIHRyYWRpbmcgYWNjb3VudC4gWW91ciB0cmFkaW5nIHBhcnRuZXJzIGFyZSB0aGUgYWNjb3VudHMgeW91IGFyZSBhbGxvd2VkIHRvIHNldHRsZSB3aXRoLlxuICAgKi9cbiAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPFRyYWRpbmdQYXJ0bmVyW10+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoXG4gICAgICBgL2FwaS90cmFkZS92MS9lbnRlcnByaXNlLyR7dGhpcy5lbnRlcnByaXNlSWR9L2FjY291bnQvJHt0aGlzLmFjY291bnQuaWR9L3RyYWRpbmdwYXJ0bmVyc2BcbiAgICApO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gKGF3YWl0IHRoaXMuYml0Z28uZ2V0KHVybCkucmVzdWx0KCkpIGFzIGFueTtcblxuICAgIHJldHVybiByZXNwb25zZS50cmFkaW5nUGFydG5lcnMubWFwKFxuICAgICAgKHBhcnRuZXIpID0+IG5ldyBUcmFkaW5nUGFydG5lcihwYXJ0bmVyLCB0aGlzLmJpdGdvLCB0aGlzLmVudGVycHJpc2VJZCwgdGhpcy5hY2NvdW50KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRyYWRpbmcgcGFydG5lciBnaXZlbiB0aGUgdW5pcXVlIHJlZmVycmFsQ29kZSBwcm92aWRlZCBieSB0cmFkaW5nIHBhcnRuZXIuXG4gICAqIEBwYXJhbSBwYXJhbXNcbiAgICogQHBhcmFtIHBhcmFtcy5yZWZlcnJhbENvZGUgdW5pcXVlIHJlZmVycmFsIGNvZGUgcHJvdmlkZWQgYnkgY291bnRlcnBhcnR5XG4gICAqIEBwYXJhbSBwYXJhbXMudHlwZSB0eXBlIG9mIHRyYWRpbmcgcGFydG5lcnNoaXBcbiAgICogQHBhcmFtIHBhcmFtcy5yZXF1ZXN0ZXJTaWRlIHNpZGUgb2YgdGhlIHJlcXVlc3RlciAocHJpbWFyeSBvciBzZWNvbmRhcnkpIGltcG9ydGFudCBmb3IgYWdlbmN5IHJlbGF0aW9uc2hpcHNcbiAgICovXG4gIGFzeW5jIGFkZEJ5Q29kZShwYXJhbXM6IFRyYWRpbmdQYXJ0bmVyQWRkQnlDb2RlUGFyYW1ldGVycyk6IFByb21pc2U8VHJhZGluZ1BhcnRuZXI+IHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJpdGdvLm1pY3Jvc2VydmljZXNVcmwoXG4gICAgICBgL2FwaS90cmFkZS92MS9lbnRlcnByaXNlLyR7dGhpcy5lbnRlcnByaXNlSWR9L2FjY291bnQvJHt0aGlzLmFjY291bnQuaWR9L3RyYWRpbmdwYXJ0bmVyc2BcbiAgICApO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJpdGdvLnBvc3QodXJsKS5zZW5kKHBhcmFtcykucmVzdWx0KCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,127 @@
1
+ /// <reference types="node" />
2
+ import { GShare, KeyShare, PShare, SignShare, UShare, YShare } from '../account-lib/mpc/tss';
3
+ import { BitGoBase } from './bitgoBase';
4
+ import { SignatureShareRecord, TxRequest } from './utils';
5
+ export declare type EncryptedYShare = {
6
+ i: number;
7
+ j: number;
8
+ publicShare: string;
9
+ encryptedPrivateShare: string;
10
+ };
11
+ export declare type DecryptableYShare = {
12
+ yShare: EncryptedYShare;
13
+ recipientPrivateArmor: string;
14
+ senderPublicArmor: string;
15
+ };
16
+ export declare type CombinedKey = {
17
+ commonKeychain: string;
18
+ signingMaterial: SigningMaterial;
19
+ };
20
+ export declare type SigningMaterial = {
21
+ uShare: UShare;
22
+ bitgoYShare: YShare;
23
+ backupYShare?: YShare;
24
+ userYShare?: YShare;
25
+ };
26
+ export declare enum ShareKeyPosition {
27
+ USER = 1,
28
+ BACKUP = 2,
29
+ BITGO = 3
30
+ }
31
+ /**
32
+ * Prepares a YShare to be exchanged with other key holders.
33
+ * Output is in a format that is usable within BitGo's ecosystem.
34
+ *
35
+ * @param params.keyShare - TSS key share of the party preparing exchange materials
36
+ * @param params.recipientIndex - index of the recipient (1, 2, or 3)
37
+ * @param params.recipientGpgPublicArmor - recipient's public gpg key in armor format
38
+ * @param params.senderGpgPrivateArmor - sender's private gpg key in armor format
39
+ * @returns { EncryptedYShare } encrypted Y Share
40
+ */
41
+ export declare function encryptYShare(params: {
42
+ keyShare: KeyShare;
43
+ recipientIndex: number;
44
+ recipientGpgPublicArmor: string;
45
+ senderGpgPrivateArmor: string;
46
+ }): Promise<EncryptedYShare>;
47
+ /**
48
+ * Combines YShares to combine the final TSS key
49
+ * This can only be used to create the User or Backup key since it requires the common keychain from BitGo first
50
+ *
51
+ * @param params.keyShare - TSS key share
52
+ * @param params.encryptedYShares - encrypted YShares with information on how to decrypt
53
+ * @param params.commonKeychain - expected common keychain of the combined key
54
+ * @returns {CombinedKey} combined TSS key
55
+ */
56
+ export declare function createCombinedKey(params: {
57
+ keyShare: KeyShare;
58
+ encryptedYShares: DecryptableYShare[];
59
+ commonKeychain: string;
60
+ }): Promise<CombinedKey>;
61
+ /**
62
+ * Creates the User Sign Share containing the User XShare and the User to Bitgo RShare
63
+ *
64
+ * @param {Buffer} signablePayload - the signablePayload as a buffer
65
+ * @param {PShare} pShare - User's signing material
66
+ * @returns {Promise<SignShare>} - User Sign Share
67
+ */
68
+ export declare function createUserSignShare(signablePayload: Buffer, pShare: PShare): Promise<SignShare>;
69
+ /**
70
+ * Creates the User to Bitgo GShare
71
+ *
72
+ * @param {SignShare} userSignShare - the User Sign Share
73
+ * @param {SignatureShareRecord} bitgoToUserRShare - the Bitgo to User RShare
74
+ * @param {YShare} backupToUserYShare - the backup key Y share received during wallet creation
75
+ * @param {Buffer} signablePayload - the signable payload from a tx
76
+ * @returns {Promise<GShare>} - the User to Bitgo GShare
77
+ */
78
+ export declare function createUserToBitGoGShare(userSignShare: SignShare, bitgoToUserRShare: SignatureShareRecord, backupToUserYShare: YShare, bitgoToUserYShare: YShare, signablePayload: Buffer): Promise<GShare>;
79
+ /**
80
+ * Sends the User to Bitgo RShare to Bitgo
81
+ * @param {BitGoBase} bitgo - the bitgo instance
82
+ * @param {String} walletId - the wallet id
83
+ * @param {String} txRequestId - the txRequest Id
84
+ * @param {SignShare} userSignShare - the user Sign Share
85
+ * @param {String} encryptedSignerShare - signer share encrypted to bitgo key
86
+ * @returns {Promise<void>}
87
+ */
88
+ export declare function offerUserToBitgoRShare(bitgo: BitGoBase, walletId: string, txRequestId: string, userSignShare: SignShare, encryptedSignerShare: string): Promise<void>;
89
+ /**
90
+ * Gets the Bitgo to User RShare from Bitgo
91
+ *
92
+ * @param {BitGoBase} bitgo - the bitgo instance
93
+ * @param {String} walletId - the wallet id
94
+ * @param {String} txRequestId - the txRequest Id
95
+ * @returns {Promise<SignatureShareRecord>} - a Signature Share
96
+ */
97
+ export declare function getBitgoToUserRShare(bitgo: BitGoBase, walletId: string, txRequestId: string): Promise<SignatureShareRecord>;
98
+ /**
99
+ * Sends the User to Bitgo GShare to Bitgo
100
+ *
101
+ * @param {BitGoBase} bitgo - the bitgo instance
102
+ * @param {String} walletId - the wallet id
103
+ * @param {String} txRequestId - the txRequest Id
104
+ * @param {GShare} userToBitgoGShare - the User to Bitgo GShare
105
+ * @returns {Promise<void>}
106
+ */
107
+ export declare function sendUserToBitgoGShare(bitgo: BitGoBase, walletId: string, txRequestId: string, userToBitgoGShare: GShare): Promise<void>;
108
+ /**
109
+ * Gets the latest Tx Request by id
110
+ *
111
+ * @param {BitGoBase} bitgo - the bitgo instance
112
+ * @param {String} walletId - the wallet id
113
+ * @param {String} txRequestId - the txRequest Id
114
+ * @returns {Promise<TxRequest>}
115
+ */
116
+ export declare function getTxRequest(bitgo: BitGoBase, walletId: string, txRequestId: string): Promise<TxRequest>;
117
+ /**
118
+ * Sends a Signature Share
119
+ *
120
+ * @param {BitGoBase} bitgo - the bitgo instance
121
+ * @param {String} walletId - the wallet id *
122
+ * @param {String} txRequestId - the txRequest Id
123
+ * @param {SignatureShareRecord} signatureShare - a Signature Share
124
+ * @returns {Promise<SignatureShareRecord>} - a Signature Share
125
+ */
126
+ export declare function sendSignatureShare(bitgo: BitGoBase, walletId: string, txRequestId: string, signatureShare: SignatureShareRecord, signerShare?: string): Promise<SignatureShareRecord>;
127
+ //# sourceMappingURL=tss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tss.d.ts","sourceRoot":"","sources":["../../../src/bitgo/tss.ts"],"names":[],"mappings":"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"}