@bitgo-beta/utxo-lib 8.0.3-beta.98 → 8.0.3-beta.981

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 (219) hide show
  1. package/dist/src/address.d.ts +0 -1
  2. package/dist/src/address.d.ts.map +1 -1
  3. package/dist/src/address.js +10 -10
  4. package/dist/src/addressFormat.d.ts +1 -2
  5. package/dist/src/addressFormat.d.ts.map +1 -1
  6. package/dist/src/addressFormat.js +21 -26
  7. package/dist/src/bitgo/Musig2.d.ts +1 -2
  8. package/dist/src/bitgo/Musig2.d.ts.map +1 -1
  9. package/dist/src/bitgo/Musig2.js +42 -42
  10. package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts +27 -0
  11. package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts.map +1 -0
  12. package/dist/src/bitgo/ProprietaryKeyValUtils.js +74 -0
  13. package/dist/src/bitgo/PsbtUtil.d.ts +22 -23
  14. package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -1
  15. package/dist/src/bitgo/PsbtUtil.js +71 -22
  16. package/dist/src/bitgo/Unspent.d.ts +2 -3
  17. package/dist/src/bitgo/Unspent.d.ts.map +1 -1
  18. package/dist/src/bitgo/Unspent.js +14 -15
  19. package/dist/src/bitgo/UtxoPsbt.d.ts +21 -8
  20. package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
  21. package/dist/src/bitgo/UtxoPsbt.js +130 -117
  22. package/dist/src/bitgo/UtxoTransaction.d.ts +0 -1
  23. package/dist/src/bitgo/UtxoTransaction.d.ts.map +1 -1
  24. package/dist/src/bitgo/UtxoTransaction.js +12 -12
  25. package/dist/src/bitgo/UtxoTransactionBuilder.d.ts +0 -1
  26. package/dist/src/bitgo/UtxoTransactionBuilder.d.ts.map +1 -1
  27. package/dist/src/bitgo/UtxoTransactionBuilder.js +1 -1
  28. package/dist/src/bitgo/bitcoincash/address.d.ts +0 -1
  29. package/dist/src/bitgo/bitcoincash/address.d.ts.map +1 -1
  30. package/dist/src/bitgo/bitcoincash/address.js +11 -12
  31. package/dist/src/bitgo/bitcoincash/index.js +6 -2
  32. package/dist/src/bitgo/dash/DashPsbt.d.ts +1 -1
  33. package/dist/src/bitgo/dash/DashPsbt.d.ts.map +1 -1
  34. package/dist/src/bitgo/dash/DashPsbt.js +4 -1
  35. package/dist/src/bitgo/dash/DashTransaction.d.ts +0 -1
  36. package/dist/src/bitgo/dash/DashTransaction.d.ts.map +1 -1
  37. package/dist/src/bitgo/dash/DashTransaction.js +3 -3
  38. package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts +0 -1
  39. package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts.map +1 -1
  40. package/dist/src/bitgo/dash/DashTransactionBuilder.js +1 -1
  41. package/dist/src/bitgo/dash/index.js +6 -2
  42. package/dist/src/bitgo/index.d.ts +4 -1
  43. package/dist/src/bitgo/index.d.ts.map +1 -1
  44. package/dist/src/bitgo/index.js +10 -3
  45. package/dist/src/bitgo/keyutil.d.ts +9 -1
  46. package/dist/src/bitgo/keyutil.d.ts.map +1 -1
  47. package/dist/src/bitgo/keyutil.js +25 -4
  48. package/dist/src/bitgo/legacysafe/index.d.ts +0 -1
  49. package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -1
  50. package/dist/src/bitgo/legacysafe/index.js +12 -9
  51. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +1 -1
  52. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -1
  53. package/dist/src/bitgo/litecoin/LitecoinPsbt.js +4 -1
  54. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +1 -2
  55. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -1
  56. package/dist/src/bitgo/litecoin/LitecoinTransaction.js +2 -2
  57. package/dist/src/bitgo/litecoin/index.js +6 -2
  58. package/dist/src/bitgo/nonStandardHalfSigned.js +2 -3
  59. package/dist/src/bitgo/outputScripts.d.ts +8 -8
  60. package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
  61. package/dist/src/bitgo/outputScripts.js +56 -39
  62. package/dist/src/bitgo/parseInput.d.ts +7 -8
  63. package/dist/src/bitgo/parseInput.d.ts.map +1 -1
  64. package/dist/src/bitgo/parseInput.js +14 -15
  65. package/dist/src/bitgo/psbt/fromHalfSigned.d.ts +0 -1
  66. package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
  67. package/dist/src/bitgo/psbt/fromHalfSigned.js +7 -8
  68. package/dist/src/bitgo/psbt/scriptTypes.d.ts +0 -1
  69. package/dist/src/bitgo/psbt/scriptTypes.d.ts.map +1 -1
  70. package/dist/src/bitgo/psbt/scriptTypes.js +7 -8
  71. package/dist/src/bitgo/signature.d.ts +2 -3
  72. package/dist/src/bitgo/signature.d.ts.map +1 -1
  73. package/dist/src/bitgo/signature.js +25 -17
  74. package/dist/src/bitgo/tnumber.js +2 -3
  75. package/dist/src/bitgo/transaction.d.ts +13 -1
  76. package/dist/src/bitgo/transaction.d.ts.map +1 -1
  77. package/dist/src/bitgo/transaction.js +49 -23
  78. package/dist/src/bitgo/transactionAmounts.d.ts +9 -0
  79. package/dist/src/bitgo/transactionAmounts.d.ts.map +1 -0
  80. package/dist/src/bitgo/transactionAmounts.js +32 -0
  81. package/dist/src/bitgo/types.d.ts +8 -2
  82. package/dist/src/bitgo/types.d.ts.map +1 -1
  83. package/dist/src/bitgo/types.js +12 -4
  84. package/dist/src/bitgo/wallet/Psbt.d.ts +43 -19
  85. package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
  86. package/dist/src/bitgo/wallet/Psbt.js +112 -50
  87. package/dist/src/bitgo/wallet/ScriptId.d.ts +14 -0
  88. package/dist/src/bitgo/wallet/ScriptId.d.ts.map +1 -0
  89. package/dist/src/bitgo/wallet/ScriptId.js +28 -0
  90. package/dist/src/bitgo/wallet/Unspent.d.ts +23 -16
  91. package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
  92. package/dist/src/bitgo/wallet/Unspent.js +68 -64
  93. package/dist/src/bitgo/wallet/WalletKeys.d.ts +1 -2
  94. package/dist/src/bitgo/wallet/WalletKeys.d.ts.map +1 -1
  95. package/dist/src/bitgo/wallet/WalletKeys.js +3 -3
  96. package/dist/src/bitgo/wallet/WalletOutput.d.ts +60 -8
  97. package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
  98. package/dist/src/bitgo/wallet/WalletOutput.js +158 -63
  99. package/dist/src/bitgo/wallet/WalletScripts.js +4 -5
  100. package/dist/src/bitgo/wallet/WalletUnspentSigner.js +7 -7
  101. package/dist/src/bitgo/wallet/chains.d.ts +3 -3
  102. package/dist/src/bitgo/wallet/chains.d.ts.map +1 -1
  103. package/dist/src/bitgo/wallet/chains.js +10 -10
  104. package/dist/src/bitgo/wallet/index.d.ts +3 -0
  105. package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
  106. package/dist/src/bitgo/wallet/index.js +9 -2
  107. package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts +50 -0
  108. package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts.map +1 -0
  109. package/dist/src/bitgo/wallet/psbt/PsbtOutputs.js +85 -0
  110. package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts +32 -0
  111. package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts.map +1 -0
  112. package/dist/src/bitgo/wallet/psbt/RootNodes.js +123 -0
  113. package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts +1 -2
  114. package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts.map +1 -1
  115. package/dist/src/bitgo/zcash/ZcashBufferutils.js +15 -15
  116. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +1 -2
  117. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
  118. package/dist/src/bitgo/zcash/ZcashPsbt.js +12 -17
  119. package/dist/src/bitgo/zcash/ZcashTransaction.d.ts +3 -2
  120. package/dist/src/bitgo/zcash/ZcashTransaction.d.ts.map +1 -1
  121. package/dist/src/bitgo/zcash/ZcashTransaction.js +31 -21
  122. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts +0 -1
  123. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts.map +1 -1
  124. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +6 -4
  125. package/dist/src/bitgo/zcash/address.d.ts +0 -1
  126. package/dist/src/bitgo/zcash/address.d.ts.map +1 -1
  127. package/dist/src/bitgo/zcash/address.js +7 -8
  128. package/dist/src/bitgo/zcash/hashZip0244.d.ts +1 -2
  129. package/dist/src/bitgo/zcash/hashZip0244.d.ts.map +1 -1
  130. package/dist/src/bitgo/zcash/hashZip0244.js +9 -10
  131. package/dist/src/bitgo/zcash/index.js +6 -2
  132. package/dist/src/classify.d.ts +0 -1
  133. package/dist/src/classify.d.ts.map +1 -1
  134. package/dist/src/classify.js +5 -5
  135. package/dist/src/index.d.ts +1 -0
  136. package/dist/src/index.d.ts.map +1 -1
  137. package/dist/src/index.js +8 -3
  138. package/dist/src/networks.d.ts +2 -2
  139. package/dist/src/networks.d.ts.map +1 -1
  140. package/dist/src/networks.js +67 -21
  141. package/dist/src/noble_ecc.d.ts +7 -7
  142. package/dist/src/noble_ecc.d.ts.map +1 -1
  143. package/dist/src/noble_ecc.js +5 -5
  144. package/dist/src/payments/p2tr.js +13 -18
  145. package/dist/src/payments/p2tr_ns.js +3 -5
  146. package/dist/src/taproot.d.ts +1 -2
  147. package/dist/src/taproot.d.ts.map +1 -1
  148. package/dist/src/taproot.js +21 -22
  149. package/dist/src/templates/multisig/input.d.ts +0 -1
  150. package/dist/src/templates/multisig/input.d.ts.map +1 -1
  151. package/dist/src/templates/multisig/input.js +2 -3
  152. package/dist/src/templates/multisig/output.d.ts +0 -1
  153. package/dist/src/templates/multisig/output.d.ts.map +1 -1
  154. package/dist/src/templates/multisig/output.js +2 -3
  155. package/dist/src/templates/nulldata.d.ts +0 -1
  156. package/dist/src/templates/nulldata.d.ts.map +1 -1
  157. package/dist/src/templates/nulldata.js +3 -3
  158. package/dist/src/templates/pubkey/input.d.ts +0 -1
  159. package/dist/src/templates/pubkey/input.d.ts.map +1 -1
  160. package/dist/src/templates/pubkey/input.js +2 -3
  161. package/dist/src/templates/pubkey/output.d.ts +0 -1
  162. package/dist/src/templates/pubkey/output.d.ts.map +1 -1
  163. package/dist/src/templates/pubkey/output.js +2 -3
  164. package/dist/src/templates/pubkeyhash/input.d.ts +0 -1
  165. package/dist/src/templates/pubkeyhash/input.d.ts.map +1 -1
  166. package/dist/src/templates/pubkeyhash/input.js +2 -3
  167. package/dist/src/templates/pubkeyhash/output.d.ts +0 -1
  168. package/dist/src/templates/pubkeyhash/output.d.ts.map +1 -1
  169. package/dist/src/templates/pubkeyhash/output.js +2 -3
  170. package/dist/src/templates/scripthash/input.d.ts +0 -1
  171. package/dist/src/templates/scripthash/input.d.ts.map +1 -1
  172. package/dist/src/templates/scripthash/input.js +2 -3
  173. package/dist/src/templates/scripthash/output.d.ts +0 -1
  174. package/dist/src/templates/scripthash/output.d.ts.map +1 -1
  175. package/dist/src/templates/scripthash/output.js +2 -3
  176. package/dist/src/templates/taproot/input.d.ts +0 -1
  177. package/dist/src/templates/taproot/input.d.ts.map +1 -1
  178. package/dist/src/templates/taproot/input.js +2 -3
  179. package/dist/src/templates/taproot/output.d.ts +0 -1
  180. package/dist/src/templates/taproot/output.d.ts.map +1 -1
  181. package/dist/src/templates/taproot/output.js +2 -3
  182. package/dist/src/templates/taprootnofn/input.d.ts +0 -1
  183. package/dist/src/templates/taprootnofn/input.d.ts.map +1 -1
  184. package/dist/src/templates/taprootnofn/input.js +2 -3
  185. package/dist/src/templates/taprootnofn/output.d.ts +0 -1
  186. package/dist/src/templates/taprootnofn/output.d.ts.map +1 -1
  187. package/dist/src/templates/taprootnofn/output.js +2 -3
  188. package/dist/src/templates/witnesscommitment/output.d.ts +0 -1
  189. package/dist/src/templates/witnesscommitment/output.d.ts.map +1 -1
  190. package/dist/src/templates/witnesscommitment/output.js +4 -5
  191. package/dist/src/templates/witnesspubkeyhash/input.d.ts +0 -1
  192. package/dist/src/templates/witnesspubkeyhash/input.d.ts.map +1 -1
  193. package/dist/src/templates/witnesspubkeyhash/input.js +2 -3
  194. package/dist/src/templates/witnesspubkeyhash/output.d.ts +0 -1
  195. package/dist/src/templates/witnesspubkeyhash/output.d.ts.map +1 -1
  196. package/dist/src/templates/witnesspubkeyhash/output.js +2 -3
  197. package/dist/src/templates/witnessscripthash/input.d.ts +0 -1
  198. package/dist/src/templates/witnessscripthash/input.d.ts.map +1 -1
  199. package/dist/src/templates/witnessscripthash/input.js +2 -3
  200. package/dist/src/templates/witnessscripthash/output.d.ts +0 -1
  201. package/dist/src/templates/witnessscripthash/output.d.ts.map +1 -1
  202. package/dist/src/templates/witnessscripthash/output.js +2 -3
  203. package/dist/src/testutil/index.js +6 -2
  204. package/dist/src/testutil/keys.d.ts +4 -4
  205. package/dist/src/testutil/keys.d.ts.map +1 -1
  206. package/dist/src/testutil/keys.js +10 -11
  207. package/dist/src/testutil/mock.d.ts +1 -2
  208. package/dist/src/testutil/mock.d.ts.map +1 -1
  209. package/dist/src/testutil/mock.js +21 -21
  210. package/dist/src/testutil/psbt.d.ts +36 -21
  211. package/dist/src/testutil/psbt.d.ts.map +1 -1
  212. package/dist/src/testutil/psbt.js +51 -37
  213. package/dist/src/testutil/transaction.d.ts +2 -2
  214. package/dist/src/testutil/transaction.d.ts.map +1 -1
  215. package/dist/src/testutil/transaction.js +18 -18
  216. package/dist/src/transaction_builder.d.ts +0 -1
  217. package/dist/src/transaction_builder.d.ts.map +1 -1
  218. package/dist/src/transaction_builder.js +13 -18
  219. package/package.json +9 -11
@@ -1,6 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSegwit = exports.isInternalChainCode = exports.isExternalChainCode = exports.getInternalChainCode = exports.getExternalChainCode = exports.scriptTypeForChain = exports.toChainPair = exports.isChainCode = exports.chainCodes = exports.chainCodesP2trMusig2 = exports.chainCodesP2tr = exports.chainCodesP2wsh = exports.chainCodesP2shP2wsh = exports.chainCodesP2sh = void 0;
3
+ exports.chainCodes = exports.chainCodesP2trMusig2 = exports.chainCodesP2tr = exports.chainCodesP2wsh = exports.chainCodesP2shP2wsh = exports.chainCodesP2sh = void 0;
4
+ exports.isChainCode = isChainCode;
5
+ exports.toChainPair = toChainPair;
6
+ exports.scriptTypeForChain = scriptTypeForChain;
7
+ exports.getExternalChainCode = getExternalChainCode;
8
+ exports.getInternalChainCode = getInternalChainCode;
9
+ exports.isExternalChainCode = isExternalChainCode;
10
+ exports.isInternalChainCode = isInternalChainCode;
11
+ exports.isSegwit = isSegwit;
4
12
  /**
5
13
  * All valid chain codes
6
14
  */
@@ -19,7 +27,6 @@ exports.chainCodes = [
19
27
  function isChainCode(n) {
20
28
  return exports.chainCodes.includes(n);
21
29
  }
22
- exports.isChainCode = isChainCode;
23
30
  const map = new Map([
24
31
  ['p2sh', exports.chainCodesP2sh],
25
32
  ['p2shP2wsh', exports.chainCodesP2shP2wsh],
@@ -49,7 +56,6 @@ function toChainPair(v) {
49
56
  }
50
57
  return pair;
51
58
  }
52
- exports.toChainPair = toChainPair;
53
59
  /**
54
60
  * @return ScriptType2Of3 for input
55
61
  */
@@ -61,35 +67,30 @@ function scriptTypeForChain(chain) {
61
67
  }
62
68
  throw new Error(`invalid chain ${chain}`);
63
69
  }
64
- exports.scriptTypeForChain = scriptTypeForChain;
65
70
  /**
66
71
  * @return chain code intended for external addresses
67
72
  */
68
73
  function getExternalChainCode(v) {
69
74
  return toChainPair(v)[0];
70
75
  }
71
- exports.getExternalChainCode = getExternalChainCode;
72
76
  /**
73
77
  * @return chain code intended for change outputs
74
78
  */
75
79
  function getInternalChainCode(v) {
76
80
  return toChainPair(v)[1];
77
81
  }
78
- exports.getInternalChainCode = getInternalChainCode;
79
82
  /**
80
83
  * @return true iff chain code is external
81
84
  */
82
85
  function isExternalChainCode(v) {
83
86
  return toChainPair(v).indexOf(v) === 0;
84
87
  }
85
- exports.isExternalChainCode = isExternalChainCode;
86
88
  /**
87
89
  * @return true iff chain code is internal
88
90
  */
89
91
  function isInternalChainCode(v) {
90
92
  return toChainPair(v).indexOf(v) === 1;
91
93
  }
92
- exports.isInternalChainCode = isInternalChainCode;
93
94
  /**
94
95
  * @return true iff chain code is a segwit address
95
96
  */
@@ -102,5 +103,4 @@ function isSegwit(v) {
102
103
  ];
103
104
  return segwitCodes.includes(v);
104
105
  }
105
- exports.isSegwit = isSegwit;
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9jaGFpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBYUE7O0dBRUc7QUFDVSxRQUFBLGNBQWMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQVUsQ0FBQztBQUNqQyxRQUFBLG1CQUFtQixHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBVSxDQUFDO0FBQ3hDLFFBQUEsZUFBZSxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBVSxDQUFDO0FBQ3BDLFFBQUEsY0FBYyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBVSxDQUFDO0FBQ25DLFFBQUEsb0JBQW9CLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFVLENBQUM7QUFDekMsUUFBQSxVQUFVLEdBQUc7SUFDeEIsR0FBRyxzQkFBYztJQUNqQixHQUFHLDJCQUFtQjtJQUN0QixHQUFHLHVCQUFlO0lBQ2xCLEdBQUcsc0JBQWM7SUFDakIsR0FBRyw0QkFBb0I7Q0FDeEIsQ0FBQztBQUVGLFNBQWdCLFdBQVcsQ0FBQyxDQUFVO0lBQ3BDLE9BQU8sa0JBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBYyxDQUFDLENBQUM7QUFDN0MsQ0FBQztBQUZELGtDQUVDO0FBUUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQ2pCO0lBQ0UsQ0FBQyxNQUFNLEVBQUUsc0JBQWMsQ0FBQztJQUN4QixDQUFDLFdBQVcsRUFBRSwyQkFBbUIsQ0FBQztJQUNsQyxDQUFDLE9BQU8sRUFBRSx1QkFBZSxDQUFDO0lBQzFCLENBQUMsTUFBTSxFQUFFLHNCQUFjLENBQUM7SUFDeEIsQ0FBQyxZQUFZLEVBQUUsNEJBQW9CLENBQUM7Q0FDckMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFtQixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFrQixDQUFDLENBQUMsQ0FDNUUsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUVoQzs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxDQUE2QztJQUN2RSxJQUFJLElBQUksQ0FBQztJQUNULElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNwQixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBa0IsQ0FBQyxFQUFFO1lBQ3RDLElBQUksR0FBRyxDQUFDLENBQUM7U0FDVjtLQUNGO0lBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFDekIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7S0FDbkI7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUN6QixJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3pDO0lBQ0QsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNULE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0M7SUFDRCxPQUFPLElBQXFCLENBQUM7QUFDL0IsQ0FBQztBQWpCRCxrQ0FpQkM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLEtBQWdCO0lBQ2pELEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sVUFBVSxDQUFDO1NBQ25CO0tBQ0Y7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFQRCxnREFPQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsQ0FBNkM7SUFDaEYsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUZELG9EQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxDQUE2QztJQUNoRixPQUFPLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBRkQsb0RBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVk7SUFDOUMsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRkQsa0RBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVk7SUFDOUMsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRkQsa0RBRUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxDQUFZO0lBQ25DLE1BQU0sV0FBVyxHQUFnQjtRQUMvQixHQUFHLDJCQUFtQjtRQUN0QixHQUFHLHVCQUFlO1FBQ2xCLEdBQUcsc0JBQWM7UUFDakIsR0FBRyw0QkFBb0I7S0FDeEIsQ0FBQztJQUNGLE9BQU8sV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBUkQsNEJBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmluZXMgQml0R28gbWFwcGluZ3MgYmV0d2VlbiBiaXAzMiBkZXJpdmF0aW9uIHBhdGggYW5kIHNjcmlwdCB0eXBlLlxuICpcbiAqIFRoZSBzY3JpcHRzIGZvciBhIEJpdEdvIHdhbGxldCBhZGRyZXNzIGFyZSBkZWZpbmVkIGJ5IHRoZWlyIGRlcml2YXRpb24gcGF0aC5cbiAqXG4gKiBUaGUgZGVyaXZhdGlvbiBwYXRoIGhhcyB0aGUgZm9ybWF0IGAwLzAvJHtjaGFpbn0vJHtpbmRleH1gIChpbiByYXJlIGNhc2VzIHRoZSBwcmVmaXggaXMgbm90IDAvMClcbiAqXG4gKiBUaGUgYWRkcmVzcyBzY3JpcHQgdHlwZSAoU2NyaXB0VHlwZTJPZjMpIGlzIGRlZmluZWQgYnkgdGhlIGBjaGFpbmAgcGFyYW1ldGVyLlxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtYXBwaW5nIGJldHdlZW4gY2hhaW4gcGFyYW1ldGVyIGFuZCBhZGRyZXNzIHR5cGUuXG4gKi9cbmltcG9ydCB7IFNjcmlwdFR5cGUyT2YzIH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbi8qKlxuICogQWxsIHZhbGlkIGNoYWluIGNvZGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjaGFpbkNvZGVzUDJzaCA9IFswLCAxXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBjaGFpbkNvZGVzUDJzaFAyd3NoID0gWzEwLCAxMV0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgY2hhaW5Db2Rlc1Ayd3NoID0gWzIwLCAyMV0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgY2hhaW5Db2Rlc1AydHIgPSBbMzAsIDMxXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBjaGFpbkNvZGVzUDJ0ck11c2lnMiA9IFs0MCwgNDFdIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IGNoYWluQ29kZXMgPSBbXG4gIC4uLmNoYWluQ29kZXNQMnNoLFxuICAuLi5jaGFpbkNvZGVzUDJzaFAyd3NoLFxuICAuLi5jaGFpbkNvZGVzUDJ3c2gsXG4gIC4uLmNoYWluQ29kZXNQMnRyLFxuICAuLi5jaGFpbkNvZGVzUDJ0ck11c2lnMixcbl07XG5leHBvcnQgdHlwZSBDaGFpbkNvZGUgPSAodHlwZW9mIGNoYWluQ29kZXMpW251bWJlcl07XG5leHBvcnQgZnVuY3Rpb24gaXNDaGFpbkNvZGUobjogdW5rbm93bik6IG4gaXMgQ2hhaW5Db2RlIHtcbiAgcmV0dXJuIGNoYWluQ29kZXMuaW5jbHVkZXMobiBhcyBDaGFpbkNvZGUpO1xufVxuXG4vKipcbiAqIEEgc2NyaXB0IHR5cGUgbWFwcyB0byB0d28gQ2hhaW5Db2RlczpcbiAqIEV4dGVybmFsIGFkZHJlc3NlcyBhcmUgaW50ZW5kZWQgZm9yIGRlcG9zaXRzLCBpbnRlcm5hbCBhZGRyZXNzZXMgYXJlIGludGVuZGVkIGZvciBjaGFuZ2Ugb3V0cHV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgQ2hhaW5Db2RlUGFpciA9IFJlYWRvbmx5PFtleHRlcm5hbDogQ2hhaW5Db2RlLCBpbnRlcm5hbDogQ2hhaW5Db2RlXT47XG5cbmNvbnN0IG1hcCA9IG5ldyBNYXA8U2NyaXB0VHlwZTJPZjMsIENoYWluQ29kZVBhaXI+KFxuICBbXG4gICAgWydwMnNoJywgY2hhaW5Db2Rlc1Ayc2hdLFxuICAgIFsncDJzaFAyd3NoJywgY2hhaW5Db2Rlc1Ayc2hQMndzaF0sXG4gICAgWydwMndzaCcsIGNoYWluQ29kZXNQMndzaF0sXG4gICAgWydwMnRyJywgY2hhaW5Db2Rlc1AydHJdLFxuICAgIFsncDJ0ck11c2lnMicsIGNoYWluQ29kZXNQMnRyTXVzaWcyXSxcbiAgXS5tYXAoKFtrLCB2XSkgPT4gW2sgYXMgU2NyaXB0VHlwZTJPZjMsIE9iamVjdC5mcmVlemUodikgYXMgQ2hhaW5Db2RlUGFpcl0pXG4pO1xuXG5jb25zdCBwYWlycyA9IFsuLi5tYXAudmFsdWVzKCldO1xuXG4vKipcbiAqIEByZXR1cm4gQ2hhaW5Db2RlUGFpciBmb3IgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2hhaW5QYWlyKHY6IENoYWluQ29kZVBhaXIgfCBDaGFpbkNvZGUgfCBTY3JpcHRUeXBlMk9mMyk6IENoYWluQ29kZVBhaXIge1xuICBsZXQgcGFpcjtcbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICBpZiAocGFpcnMuaW5jbHVkZXModiBhcyBDaGFpbkNvZGVQYWlyKSkge1xuICAgICAgcGFpciA9IHY7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICBwYWlyID0gbWFwLmdldCh2KTtcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XG4gICAgcGFpciA9IHBhaXJzLmZpbmQoKHApID0+IHAuaW5jbHVkZXModikpO1xuICB9XG4gIGlmICghcGFpcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm8gcGFpciBmb3IgaW5wdXQgJHt2fWApO1xuICB9XG4gIHJldHVybiBwYWlyIGFzIENoYWluQ29kZVBhaXI7XG59XG5cbi8qKlxuICogQHJldHVybiBTY3JpcHRUeXBlMk9mMyBmb3IgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbjogQ2hhaW5Db2RlKTogU2NyaXB0VHlwZTJPZjMge1xuICBmb3IgKGNvbnN0IFtzY3JpcHRUeXBlLCBwYWlyXSBvZiBtYXAuZW50cmllcygpKSB7XG4gICAgaWYgKHBhaXIuaW5jbHVkZXMoY2hhaW4pKSB7XG4gICAgICByZXR1cm4gc2NyaXB0VHlwZTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNoYWluICR7Y2hhaW59YCk7XG59XG5cbi8qKlxuICogQHJldHVybiBjaGFpbiBjb2RlIGludGVuZGVkIGZvciBleHRlcm5hbCBhZGRyZXNzZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFsQ2hhaW5Db2RlKHY6IENoYWluQ29kZVBhaXIgfCBTY3JpcHRUeXBlMk9mMyB8IENoYWluQ29kZSk6IENoYWluQ29kZSB7XG4gIHJldHVybiB0b0NoYWluUGFpcih2KVswXTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIGNoYWluIGNvZGUgaW50ZW5kZWQgZm9yIGNoYW5nZSBvdXRwdXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm5hbENoYWluQ29kZSh2OiBDaGFpbkNvZGVQYWlyIHwgU2NyaXB0VHlwZTJPZjMgfCBDaGFpbkNvZGUpOiBDaGFpbkNvZGUge1xuICByZXR1cm4gdG9DaGFpblBhaXIodilbMV07XG59XG5cbi8qKlxuICogQHJldHVybiB0cnVlIGlmZiBjaGFpbiBjb2RlIGlzIGV4dGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsQ2hhaW5Db2RlKHY6IENoYWluQ29kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdG9DaGFpblBhaXIodikuaW5kZXhPZih2KSA9PT0gMDtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHRydWUgaWZmIGNoYWluIGNvZGUgaXMgaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZXJuYWxDaGFpbkNvZGUodjogQ2hhaW5Db2RlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0b0NoYWluUGFpcih2KS5pbmRleE9mKHYpID09PSAxO1xufVxuXG4vKipcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgY2hhaW4gY29kZSBpcyBhIHNlZ3dpdCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlZ3dpdCh2OiBDaGFpbkNvZGUpOiBib29sZWFuIHtcbiAgY29uc3Qgc2Vnd2l0Q29kZXM6IENoYWluQ29kZVtdID0gW1xuICAgIC4uLmNoYWluQ29kZXNQMnNoUDJ3c2gsXG4gICAgLi4uY2hhaW5Db2Rlc1Ayd3NoLFxuICAgIC4uLmNoYWluQ29kZXNQMnRyLFxuICAgIC4uLmNoYWluQ29kZXNQMnRyTXVzaWcyLFxuICBdO1xuICByZXR1cm4gc2Vnd2l0Q29kZXMuaW5jbHVkZXModik7XG59XG4iXX0=
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9jaGFpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBNkJBLGtDQUVDO0FBdUJELGtDQWlCQztBQUtELGdEQU9DO0FBS0Qsb0RBRUM7QUFLRCxvREFFQztBQUtELGtEQUVDO0FBS0Qsa0RBRUM7QUFLRCw0QkFRQztBQS9HRDs7R0FFRztBQUNVLFFBQUEsY0FBYyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBVSxDQUFDO0FBQ2pDLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFVLENBQUM7QUFDeEMsUUFBQSxlQUFlLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFVLENBQUM7QUFDcEMsUUFBQSxjQUFjLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFVLENBQUM7QUFDbkMsUUFBQSxvQkFBb0IsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQVUsQ0FBQztBQUN6QyxRQUFBLFVBQVUsR0FBRztJQUN4QixHQUFHLHNCQUFjO0lBQ2pCLEdBQUcsMkJBQW1CO0lBQ3RCLEdBQUcsdUJBQWU7SUFDbEIsR0FBRyxzQkFBYztJQUNqQixHQUFHLDRCQUFvQjtDQUN4QixDQUFDO0FBRUYsU0FBZ0IsV0FBVyxDQUFDLENBQVU7SUFDcEMsT0FBTyxrQkFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFjLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBUUQsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQ2pCO0lBQ0UsQ0FBQyxNQUFNLEVBQUUsc0JBQWMsQ0FBQztJQUN4QixDQUFDLFdBQVcsRUFBRSwyQkFBbUIsQ0FBQztJQUNsQyxDQUFDLE9BQU8sRUFBRSx1QkFBZSxDQUFDO0lBQzFCLENBQUMsTUFBTSxFQUFFLHNCQUFjLENBQUM7SUFDeEIsQ0FBQyxZQUFZLEVBQUUsNEJBQW9CLENBQUM7Q0FDckMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFtQixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFrQixDQUFDLENBQUMsQ0FDNUUsQ0FBQztBQUVGLE1BQU0sS0FBSyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUVoQzs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxDQUE2QztJQUN2RSxJQUFJLElBQUksQ0FBQztJQUNULElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3JCLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFrQixDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNWLE1BQU0sSUFBSSxLQUFLLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELE9BQU8sSUFBcUIsQ0FBQztBQUMvQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxLQUFnQjtJQUNqRCxLQUFLLE1BQU0sQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDL0MsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDekIsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGlCQUFpQixLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLENBQTZDO0lBQ2hGLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG9CQUFvQixDQUFDLENBQTZDO0lBQ2hGLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLENBQVk7SUFDOUMsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFZO0lBQzlDLE9BQU8sV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLENBQVk7SUFDbkMsTUFBTSxXQUFXLEdBQWdCO1FBQy9CLEdBQUcsMkJBQW1CO1FBQ3RCLEdBQUcsdUJBQWU7UUFDbEIsR0FBRyxzQkFBYztRQUNqQixHQUFHLDRCQUFvQjtLQUN4QixDQUFDO0lBQ0YsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlZmluZXMgQml0R28gbWFwcGluZ3MgYmV0d2VlbiBiaXAzMiBkZXJpdmF0aW9uIHBhdGggYW5kIHNjcmlwdCB0eXBlLlxuICpcbiAqIFRoZSBzY3JpcHRzIGZvciBhIEJpdEdvIHdhbGxldCBhZGRyZXNzIGFyZSBkZWZpbmVkIGJ5IHRoZWlyIGRlcml2YXRpb24gcGF0aC5cbiAqXG4gKiBUaGUgZGVyaXZhdGlvbiBwYXRoIGhhcyB0aGUgZm9ybWF0IGAwLzAvJHtjaGFpbn0vJHtpbmRleH1gIChpbiByYXJlIGNhc2VzIHRoZSBwcmVmaXggaXMgbm90IDAvMClcbiAqXG4gKiBUaGUgYWRkcmVzcyBzY3JpcHQgdHlwZSAoU2NyaXB0VHlwZTJPZjMpIGlzIGRlZmluZWQgYnkgdGhlIGBjaGFpbmAgcGFyYW1ldGVyLlxuICpcbiAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBtYXBwaW5nIGJldHdlZW4gY2hhaW4gcGFyYW1ldGVyIGFuZCBhZGRyZXNzIHR5cGUuXG4gKi9cbmltcG9ydCB7IFNjcmlwdFR5cGUyT2YzIH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbi8qKlxuICogQWxsIHZhbGlkIGNoYWluIGNvZGVzXG4gKi9cbmV4cG9ydCBjb25zdCBjaGFpbkNvZGVzUDJzaCA9IFswLCAxXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBjaGFpbkNvZGVzUDJzaFAyd3NoID0gWzEwLCAxMV0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgY2hhaW5Db2Rlc1Ayd3NoID0gWzIwLCAyMV0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgY2hhaW5Db2Rlc1AydHIgPSBbMzAsIDMxXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBjaGFpbkNvZGVzUDJ0ck11c2lnMiA9IFs0MCwgNDFdIGFzIGNvbnN0O1xuZXhwb3J0IGNvbnN0IGNoYWluQ29kZXMgPSBbXG4gIC4uLmNoYWluQ29kZXNQMnNoLFxuICAuLi5jaGFpbkNvZGVzUDJzaFAyd3NoLFxuICAuLi5jaGFpbkNvZGVzUDJ3c2gsXG4gIC4uLmNoYWluQ29kZXNQMnRyLFxuICAuLi5jaGFpbkNvZGVzUDJ0ck11c2lnMixcbl07XG5leHBvcnQgdHlwZSBDaGFpbkNvZGUgPSAodHlwZW9mIGNoYWluQ29kZXMpW251bWJlcl07XG5leHBvcnQgZnVuY3Rpb24gaXNDaGFpbkNvZGUobjogdW5rbm93bik6IG4gaXMgQ2hhaW5Db2RlIHtcbiAgcmV0dXJuIGNoYWluQ29kZXMuaW5jbHVkZXMobiBhcyBDaGFpbkNvZGUpO1xufVxuXG4vKipcbiAqIEEgc2NyaXB0IHR5cGUgbWFwcyB0byB0d28gQ2hhaW5Db2RlczpcbiAqIEV4dGVybmFsIGFkZHJlc3NlcyBhcmUgaW50ZW5kZWQgZm9yIGRlcG9zaXRzLCBpbnRlcm5hbCBhZGRyZXNzZXMgYXJlIGludGVuZGVkIGZvciBjaGFuZ2Ugb3V0cHV0cy5cbiAqL1xuZXhwb3J0IHR5cGUgQ2hhaW5Db2RlUGFpciA9IFJlYWRvbmx5PFtleHRlcm5hbDogQ2hhaW5Db2RlLCBpbnRlcm5hbDogQ2hhaW5Db2RlXT47XG5cbmNvbnN0IG1hcCA9IG5ldyBNYXA8U2NyaXB0VHlwZTJPZjMsIENoYWluQ29kZVBhaXI+KFxuICBbXG4gICAgWydwMnNoJywgY2hhaW5Db2Rlc1Ayc2hdLFxuICAgIFsncDJzaFAyd3NoJywgY2hhaW5Db2Rlc1Ayc2hQMndzaF0sXG4gICAgWydwMndzaCcsIGNoYWluQ29kZXNQMndzaF0sXG4gICAgWydwMnRyJywgY2hhaW5Db2Rlc1AydHJdLFxuICAgIFsncDJ0ck11c2lnMicsIGNoYWluQ29kZXNQMnRyTXVzaWcyXSxcbiAgXS5tYXAoKFtrLCB2XSkgPT4gW2sgYXMgU2NyaXB0VHlwZTJPZjMsIE9iamVjdC5mcmVlemUodikgYXMgQ2hhaW5Db2RlUGFpcl0pXG4pO1xuXG5jb25zdCBwYWlycyA9IFsuLi5tYXAudmFsdWVzKCldO1xuXG4vKipcbiAqIEByZXR1cm4gQ2hhaW5Db2RlUGFpciBmb3IgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQ2hhaW5QYWlyKHY6IENoYWluQ29kZVBhaXIgfCBDaGFpbkNvZGUgfCBTY3JpcHRUeXBlMk9mMyk6IENoYWluQ29kZVBhaXIge1xuICBsZXQgcGFpcjtcbiAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICBpZiAocGFpcnMuaW5jbHVkZXModiBhcyBDaGFpbkNvZGVQYWlyKSkge1xuICAgICAgcGFpciA9IHY7XG4gICAgfVxuICB9XG4gIGlmICh0eXBlb2YgdiA9PT0gJ3N0cmluZycpIHtcbiAgICBwYWlyID0gbWFwLmdldCh2KTtcbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XG4gICAgcGFpciA9IHBhaXJzLmZpbmQoKHApID0+IHAuaW5jbHVkZXModikpO1xuICB9XG4gIGlmICghcGFpcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgbm8gcGFpciBmb3IgaW5wdXQgJHt2fWApO1xuICB9XG4gIHJldHVybiBwYWlyIGFzIENoYWluQ29kZVBhaXI7XG59XG5cbi8qKlxuICogQHJldHVybiBTY3JpcHRUeXBlMk9mMyBmb3IgaW5wdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbjogQ2hhaW5Db2RlKTogU2NyaXB0VHlwZTJPZjMge1xuICBmb3IgKGNvbnN0IFtzY3JpcHRUeXBlLCBwYWlyXSBvZiBtYXAuZW50cmllcygpKSB7XG4gICAgaWYgKHBhaXIuaW5jbHVkZXMoY2hhaW4pKSB7XG4gICAgICByZXR1cm4gc2NyaXB0VHlwZTtcbiAgICB9XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNoYWluICR7Y2hhaW59YCk7XG59XG5cbi8qKlxuICogQHJldHVybiBjaGFpbiBjb2RlIGludGVuZGVkIGZvciBleHRlcm5hbCBhZGRyZXNzZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVybmFsQ2hhaW5Db2RlKHY6IENoYWluQ29kZVBhaXIgfCBTY3JpcHRUeXBlMk9mMyB8IENoYWluQ29kZSk6IENoYWluQ29kZSB7XG4gIHJldHVybiB0b0NoYWluUGFpcih2KVswXTtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIGNoYWluIGNvZGUgaW50ZW5kZWQgZm9yIGNoYW5nZSBvdXRwdXRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbnRlcm5hbENoYWluQ29kZSh2OiBDaGFpbkNvZGVQYWlyIHwgU2NyaXB0VHlwZTJPZjMgfCBDaGFpbkNvZGUpOiBDaGFpbkNvZGUge1xuICByZXR1cm4gdG9DaGFpblBhaXIodilbMV07XG59XG5cbi8qKlxuICogQHJldHVybiB0cnVlIGlmZiBjaGFpbiBjb2RlIGlzIGV4dGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsQ2hhaW5Db2RlKHY6IENoYWluQ29kZSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdG9DaGFpblBhaXIodikuaW5kZXhPZih2KSA9PT0gMDtcbn1cblxuLyoqXG4gKiBAcmV0dXJuIHRydWUgaWZmIGNoYWluIGNvZGUgaXMgaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZXJuYWxDaGFpbkNvZGUodjogQ2hhaW5Db2RlKTogYm9vbGVhbiB7XG4gIHJldHVybiB0b0NoYWluUGFpcih2KS5pbmRleE9mKHYpID09PSAxO1xufVxuXG4vKipcbiAqIEByZXR1cm4gdHJ1ZSBpZmYgY2hhaW4gY29kZSBpcyBhIHNlZ3dpdCBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1NlZ3dpdCh2OiBDaGFpbkNvZGUpOiBib29sZWFuIHtcbiAgY29uc3Qgc2Vnd2l0Q29kZXM6IENoYWluQ29kZVtdID0gW1xuICAgIC4uLmNoYWluQ29kZXNQMnNoUDJ3c2gsXG4gICAgLi4uY2hhaW5Db2Rlc1Ayd3NoLFxuICAgIC4uLmNoYWluQ29kZXNQMnRyLFxuICAgIC4uLmNoYWluQ29kZXNQMnRyTXVzaWcyLFxuICBdO1xuICByZXR1cm4gc2Vnd2l0Q29kZXMuaW5jbHVkZXModik7XG59XG4iXX0=
@@ -5,4 +5,7 @@ export * from './WalletOutput';
5
5
  export * from './WalletUnspentSigner';
6
6
  export * from './WalletScripts';
7
7
  export * from './WalletKeys';
8
+ export * from './psbt/PsbtOutputs';
9
+ export * from './psbt/RootNodes';
10
+ export * from './ScriptId';
8
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,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];
@@ -17,4 +21,7 @@ __exportStar(require("./WalletOutput"), exports);
17
21
  __exportStar(require("./WalletUnspentSigner"), exports);
18
22
  __exportStar(require("./WalletScripts"), exports);
19
23
  __exportStar(require("./WalletKeys"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6Qix5Q0FBdUI7QUFDdkIsNENBQTBCO0FBQzFCLGlEQUErQjtBQUMvQix3REFBc0M7QUFDdEMsa0RBQWdDO0FBQ2hDLCtDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2hhaW5zJztcbmV4cG9ydCAqIGZyb20gJy4vUHNidCc7XG5leHBvcnQgKiBmcm9tICcuL1Vuc3BlbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9XYWxsZXRPdXRwdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9XYWxsZXRVbnNwZW50U2lnbmVyJztcbmV4cG9ydCAqIGZyb20gJy4vV2FsbGV0U2NyaXB0cyc7XG5leHBvcnQgKiBmcm9tICcuL1dhbGxldEtleXMnO1xuIl19
24
+ __exportStar(require("./psbt/PsbtOutputs"), exports);
25
+ __exportStar(require("./psbt/RootNodes"), exports);
26
+ __exportStar(require("./ScriptId"), exports);
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBeUI7QUFDekIseUNBQXVCO0FBQ3ZCLDRDQUEwQjtBQUMxQixpREFBK0I7QUFDL0Isd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkI7QUFDN0IscURBQW1DO0FBQ25DLG1EQUFpQztBQUNqQyw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NoYWlucyc7XG5leHBvcnQgKiBmcm9tICcuL1BzYnQnO1xuZXhwb3J0ICogZnJvbSAnLi9VbnNwZW50JztcbmV4cG9ydCAqIGZyb20gJy4vV2FsbGV0T3V0cHV0JztcbmV4cG9ydCAqIGZyb20gJy4vV2FsbGV0VW5zcGVudFNpZ25lcic7XG5leHBvcnQgKiBmcm9tICcuL1dhbGxldFNjcmlwdHMnO1xuZXhwb3J0ICogZnJvbSAnLi9XYWxsZXRLZXlzJztcbmV4cG9ydCAqIGZyb20gJy4vcHNidC9Qc2J0T3V0cHV0cyc7XG5leHBvcnQgKiBmcm9tICcuL3BzYnQvUm9vdE5vZGVzJztcbmV4cG9ydCAqIGZyb20gJy4vU2NyaXB0SWQnO1xuIl19
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Contains helper methods for determining if a transaction output belongs to a given BitGo wallet
3
+ */
4
+ import { Triple } from '../../types';
5
+ import { UtxoPsbt } from '../../UtxoPsbt';
6
+ import { BIP32Interface } from 'bip32';
7
+ import { PsbtOutput } from 'bip174/src/lib/interfaces';
8
+ /**
9
+ * Derives the appropriate BIP32 key pair for a given output.
10
+ * It uses either tapBip32Derivation or bip32Derivation paths from the output.
11
+ * @param bip32 - The BIP32Interface object to derive from.
12
+ * @param output - The specific PSBT output to derive for.
13
+ * @returns The derived BIP32 key pair if master fingerprint matches, or undefined.
14
+ */
15
+ export declare function deriveKeyPairForOutput(bip32: BIP32Interface, output: PsbtOutput): BIP32Interface | undefined;
16
+ /**
17
+ * Determines if a specified output in a PSBT is an output of the wallet represented by the given root nodes.
18
+ * @param psbt - The PSBT to check.
19
+ * @param outputIndex - The index of the output to check.
20
+ * @param rootWalletNodes - The root nodes representing the wallet.
21
+ * @returns A boolean indicating if the output belongs to the wallet.
22
+ */
23
+ export declare function isWalletOutput(psbt: UtxoPsbt, outputIndex: number, rootWalletNodes: Triple<BIP32Interface>): boolean;
24
+ /**
25
+ * Finds indices of all outputs in a PSBT that belong to the wallet represented by the given root nodes.
26
+ * @param psbt - The PSBT to search through.
27
+ * @param rootWalletNodes - The root nodes representing the wallet.
28
+ * @returns An array of indices corresponding to wallet outputs.
29
+ */
30
+ export declare function findWalletOutputIndices(psbt: UtxoPsbt, rootWalletNodes: Triple<BIP32Interface>): number[];
31
+ /**
32
+ * Calculates the total amount of all wallet outputs in a PSBT for the wallet represented by the given root nodes.
33
+ * @param psbt - The PSBT to calculate for.
34
+ * @param rootWalletNodes - The root nodes representing the wallet.
35
+ * @returns The total amount of wallet outputs.
36
+ */
37
+ export declare function getTotalAmountOfWalletOutputs(psbt: UtxoPsbt, rootWalletNodes: Triple<BIP32Interface>): bigint;
38
+ /**
39
+ * Finds indices of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
40
+ * @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
41
+ * @returns An array of indices of internal outputs.
42
+ */
43
+ export declare function findInternalOutputIndices(psbt: UtxoPsbt): number[];
44
+ /**
45
+ * Calculates the total amount of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
46
+ * @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
47
+ * @returns The total amount of internal outputs.
48
+ */
49
+ export declare function getTotalAmountOfInternalOutputs(psbt: UtxoPsbt): bigint;
50
+ //# sourceMappingURL=PsbtOutputs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PsbtOutputs.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/wallet/psbt/PsbtOutputs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAiB,MAAM,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGvD;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,cAAc,GAAG,SAAS,CAM5G;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,OAAO,CAapH;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,EAAE,CAEzG;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAI7G;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAGlE;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAGtE"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ /**
3
+ * Contains helper methods for determining if a transaction output belongs to a given BitGo wallet
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.deriveKeyPairForOutput = deriveKeyPairForOutput;
7
+ exports.isWalletOutput = isWalletOutput;
8
+ exports.findWalletOutputIndices = findWalletOutputIndices;
9
+ exports.getTotalAmountOfWalletOutputs = getTotalAmountOfWalletOutputs;
10
+ exports.findInternalOutputIndices = findInternalOutputIndices;
11
+ exports.getTotalAmountOfInternalOutputs = getTotalAmountOfInternalOutputs;
12
+ const types_1 = require("../../types");
13
+ const outputScripts_1 = require("../../outputScripts");
14
+ const UtxoPsbt_1 = require("../../UtxoPsbt");
15
+ const utils_1 = require("bip174/src/lib/utils");
16
+ const RootNodes_1 = require("./RootNodes");
17
+ /**
18
+ * Derives the appropriate BIP32 key pair for a given output.
19
+ * It uses either tapBip32Derivation or bip32Derivation paths from the output.
20
+ * @param bip32 - The BIP32Interface object to derive from.
21
+ * @param output - The specific PSBT output to derive for.
22
+ * @returns The derived BIP32 key pair if master fingerprint matches, or undefined.
23
+ */
24
+ function deriveKeyPairForOutput(bip32, output) {
25
+ return output.tapBip32Derivation?.length
26
+ ? UtxoPsbt_1.UtxoPsbt.deriveKeyPair(bip32, output.tapBip32Derivation, { ignoreY: true })
27
+ : output.bip32Derivation?.length
28
+ ? UtxoPsbt_1.UtxoPsbt.deriveKeyPair(bip32, output.bip32Derivation, { ignoreY: false })
29
+ : undefined;
30
+ }
31
+ /**
32
+ * Determines if a specified output in a PSBT is an output of the wallet represented by the given root nodes.
33
+ * @param psbt - The PSBT to check.
34
+ * @param outputIndex - The index of the output to check.
35
+ * @param rootWalletNodes - The root nodes representing the wallet.
36
+ * @returns A boolean indicating if the output belongs to the wallet.
37
+ */
38
+ function isWalletOutput(psbt, outputIndex, rootWalletNodes) {
39
+ const output = (0, utils_1.checkForOutput)(psbt.data.outputs, outputIndex);
40
+ const pubKeys = rootWalletNodes.map((rootNode) => deriveKeyPairForOutput(rootNode, output)?.publicKey);
41
+ if (!(0, types_1.isBufferArray)(pubKeys)) {
42
+ return false;
43
+ }
44
+ const outputScript = psbt.getOutputScript(outputIndex);
45
+ return outputScripts_1.scriptTypes2Of3.some((scriptType) => (0, outputScripts_1.createOutputScript2of3)(pubKeys, scriptType).scriptPubKey.equals(outputScript));
46
+ }
47
+ /**
48
+ * Finds indices of all outputs in a PSBT that belong to the wallet represented by the given root nodes.
49
+ * @param psbt - The PSBT to search through.
50
+ * @param rootWalletNodes - The root nodes representing the wallet.
51
+ * @returns An array of indices corresponding to wallet outputs.
52
+ */
53
+ function findWalletOutputIndices(psbt, rootWalletNodes) {
54
+ return psbt.data.outputs.flatMap((_, i) => (isWalletOutput(psbt, i, rootWalletNodes) ? [i] : []));
55
+ }
56
+ /**
57
+ * Calculates the total amount of all wallet outputs in a PSBT for the wallet represented by the given root nodes.
58
+ * @param psbt - The PSBT to calculate for.
59
+ * @param rootWalletNodes - The root nodes representing the wallet.
60
+ * @returns The total amount of wallet outputs.
61
+ */
62
+ function getTotalAmountOfWalletOutputs(psbt, rootWalletNodes) {
63
+ const indices = findWalletOutputIndices(psbt, rootWalletNodes);
64
+ const txOutputs = psbt.txOutputs;
65
+ return indices.reduce((sum, i) => sum + txOutputs[i].value, BigInt(0));
66
+ }
67
+ /**
68
+ * Finds indices of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
69
+ * @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
70
+ * @returns An array of indices of internal outputs.
71
+ */
72
+ function findInternalOutputIndices(psbt) {
73
+ const rootNodes = (0, RootNodes_1.getSortedRootNodes)(psbt);
74
+ return findWalletOutputIndices(psbt, rootNodes);
75
+ }
76
+ /**
77
+ * Calculates the total amount of all internal outputs in a PSBT, identified as outputs belonging to the wallet's root nodes within the PSBT.
78
+ * @param psbt - The PSBT containing the wallet's root nodes as indicated by global Xpubs.
79
+ * @returns The total amount of internal outputs.
80
+ */
81
+ function getTotalAmountOfInternalOutputs(psbt) {
82
+ const rootNodes = (0, RootNodes_1.getSortedRootNodes)(psbt);
83
+ return getTotalAmountOfWalletOutputs(psbt, rootNodes);
84
+ }
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHNidE91dHB1dHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYml0Z28vd2FsbGV0L3BzYnQvUHNidE91dHB1dHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOztHQUVHOztBQWlCSCx3REFNQztBQVNELHdDQWFDO0FBUUQsMERBRUM7QUFRRCxzRUFJQztBQU9ELDhEQUdDO0FBT0QsMEVBR0M7QUFyRkQsdUNBQW9EO0FBQ3BELHVEQUE4RTtBQUM5RSw2Q0FBMEM7QUFFMUMsZ0RBQXNEO0FBRXRELDJDQUFpRDtBQUVqRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFxQixFQUFFLE1BQWtCO0lBQzlFLE9BQU8sTUFBTSxDQUFDLGtCQUFrQixFQUFFLE1BQU07UUFDdEMsQ0FBQyxDQUFDLG1CQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0UsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsTUFBTTtZQUNoQyxDQUFDLENBQUMsbUJBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDM0UsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLElBQWMsRUFBRSxXQUFtQixFQUFFLGVBQXVDO0lBQ3pHLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQWMsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUU5RCxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFdkcsSUFBSSxDQUFDLElBQUEscUJBQWEsRUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkQsT0FBTywrQkFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ3pDLElBQUEsc0NBQXNCLEVBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQzlFLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQix1QkFBdUIsQ0FBQyxJQUFjLEVBQUUsZUFBdUM7SUFDN0YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BHLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLDZCQUE2QixDQUFDLElBQWMsRUFBRSxlQUF1QztJQUNuRyxNQUFNLE9BQU8sR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDL0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLHlCQUF5QixDQUFDLElBQWM7SUFDdEQsTUFBTSxTQUFTLEdBQUcsSUFBQSw4QkFBa0IsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxPQUFPLHVCQUF1QixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUNsRCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLCtCQUErQixDQUFDLElBQWM7SUFDNUQsTUFBTSxTQUFTLEdBQUcsSUFBQSw4QkFBa0IsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUMzQyxPQUFPLDZCQUE2QixDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUN4RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb250YWlucyBoZWxwZXIgbWV0aG9kcyBmb3IgZGV0ZXJtaW5pbmcgaWYgYSB0cmFuc2FjdGlvbiBvdXRwdXQgYmVsb25ncyB0byBhIGdpdmVuIEJpdEdvIHdhbGxldFxuICovXG5cbmltcG9ydCB7IGlzQnVmZmVyQXJyYXksIFRyaXBsZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIHNjcmlwdFR5cGVzMk9mMyB9IGZyb20gJy4uLy4uL291dHB1dFNjcmlwdHMnO1xuaW1wb3J0IHsgVXR4b1BzYnQgfSBmcm9tICcuLi8uLi9VdHhvUHNidCc7XG5pbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcbmltcG9ydCB7IGNoZWNrRm9yT3V0cHV0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvdXRpbHMnO1xuaW1wb3J0IHsgUHNidE91dHB1dCB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgZ2V0U29ydGVkUm9vdE5vZGVzIH0gZnJvbSAnLi9Sb290Tm9kZXMnO1xuXG4vKipcbiAqIERlcml2ZXMgdGhlIGFwcHJvcHJpYXRlIEJJUDMyIGtleSBwYWlyIGZvciBhIGdpdmVuIG91dHB1dC5cbiAqIEl0IHVzZXMgZWl0aGVyIHRhcEJpcDMyRGVyaXZhdGlvbiBvciBiaXAzMkRlcml2YXRpb24gcGF0aHMgZnJvbSB0aGUgb3V0cHV0LlxuICogQHBhcmFtIGJpcDMyIC0gVGhlIEJJUDMySW50ZXJmYWNlIG9iamVjdCB0byBkZXJpdmUgZnJvbS5cbiAqIEBwYXJhbSBvdXRwdXQgLSBUaGUgc3BlY2lmaWMgUFNCVCBvdXRwdXQgdG8gZGVyaXZlIGZvci5cbiAqIEByZXR1cm5zIFRoZSBkZXJpdmVkIEJJUDMyIGtleSBwYWlyIGlmIG1hc3RlciBmaW5nZXJwcmludCBtYXRjaGVzLCBvciB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXJpdmVLZXlQYWlyRm9yT3V0cHV0KGJpcDMyOiBCSVAzMkludGVyZmFjZSwgb3V0cHV0OiBQc2J0T3V0cHV0KTogQklQMzJJbnRlcmZhY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gb3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbj8ubGVuZ3RoXG4gICAgPyBVdHhvUHNidC5kZXJpdmVLZXlQYWlyKGJpcDMyLCBvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uLCB7IGlnbm9yZVk6IHRydWUgfSlcbiAgICA6IG91dHB1dC5iaXAzMkRlcml2YXRpb24/Lmxlbmd0aFxuICAgID8gVXR4b1BzYnQuZGVyaXZlS2V5UGFpcihiaXAzMiwgb3V0cHV0LmJpcDMyRGVyaXZhdGlvbiwgeyBpZ25vcmVZOiBmYWxzZSB9KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIERldGVybWluZXMgaWYgYSBzcGVjaWZpZWQgb3V0cHV0IGluIGEgUFNCVCBpcyBhbiBvdXRwdXQgb2YgdGhlIHdhbGxldCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gcm9vdCBub2Rlcy5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gY2hlY2suXG4gKiBAcGFyYW0gb3V0cHV0SW5kZXggLSBUaGUgaW5kZXggb2YgdGhlIG91dHB1dCB0byBjaGVjay5cbiAqIEBwYXJhbSByb290V2FsbGV0Tm9kZXMgLSBUaGUgcm9vdCBub2RlcyByZXByZXNlbnRpbmcgdGhlIHdhbGxldC5cbiAqIEByZXR1cm5zIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBvdXRwdXQgYmVsb25ncyB0byB0aGUgd2FsbGV0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNXYWxsZXRPdXRwdXQocHNidDogVXR4b1BzYnQsIG91dHB1dEluZGV4OiBudW1iZXIsIHJvb3RXYWxsZXROb2RlczogVHJpcGxlPEJJUDMySW50ZXJmYWNlPik6IGJvb2xlYW4ge1xuICBjb25zdCBvdXRwdXQgPSBjaGVja0Zvck91dHB1dChwc2J0LmRhdGEub3V0cHV0cywgb3V0cHV0SW5kZXgpO1xuXG4gIGNvbnN0IHB1YktleXMgPSByb290V2FsbGV0Tm9kZXMubWFwKChyb290Tm9kZSkgPT4gZGVyaXZlS2V5UGFpckZvck91dHB1dChyb290Tm9kZSwgb3V0cHV0KT8ucHVibGljS2V5KTtcblxuICBpZiAoIWlzQnVmZmVyQXJyYXkocHViS2V5cykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBvdXRwdXRTY3JpcHQgPSBwc2J0LmdldE91dHB1dFNjcmlwdChvdXRwdXRJbmRleCk7XG4gIHJldHVybiBzY3JpcHRUeXBlczJPZjMuc29tZSgoc2NyaXB0VHlwZSkgPT5cbiAgICBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHB1YktleXMsIHNjcmlwdFR5cGUpLnNjcmlwdFB1YktleS5lcXVhbHMob3V0cHV0U2NyaXB0KVxuICApO1xufVxuXG4vKipcbiAqIEZpbmRzIGluZGljZXMgb2YgYWxsIG91dHB1dHMgaW4gYSBQU0JUIHRoYXQgYmVsb25nIHRvIHRoZSB3YWxsZXQgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHJvb3Qgbm9kZXMuXG4gKiBAcGFyYW0gcHNidCAtIFRoZSBQU0JUIHRvIHNlYXJjaCB0aHJvdWdoLlxuICogQHBhcmFtIHJvb3RXYWxsZXROb2RlcyAtIFRoZSByb290IG5vZGVzIHJlcHJlc2VudGluZyB0aGUgd2FsbGV0LlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcyBjb3JyZXNwb25kaW5nIHRvIHdhbGxldCBvdXRwdXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZFdhbGxldE91dHB1dEluZGljZXMocHNidDogVXR4b1BzYnQsIHJvb3RXYWxsZXROb2RlczogVHJpcGxlPEJJUDMySW50ZXJmYWNlPik6IG51bWJlcltdIHtcbiAgcmV0dXJuIHBzYnQuZGF0YS5vdXRwdXRzLmZsYXRNYXAoKF8sIGkpID0+IChpc1dhbGxldE91dHB1dChwc2J0LCBpLCByb290V2FsbGV0Tm9kZXMpID8gW2ldIDogW10pKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB0b3RhbCBhbW91bnQgb2YgYWxsIHdhbGxldCBvdXRwdXRzIGluIGEgUFNCVCBmb3IgdGhlIHdhbGxldCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gcm9vdCBub2Rlcy5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gY2FsY3VsYXRlIGZvci5cbiAqIEBwYXJhbSByb290V2FsbGV0Tm9kZXMgLSBUaGUgcm9vdCBub2RlcyByZXByZXNlbnRpbmcgdGhlIHdhbGxldC5cbiAqIEByZXR1cm5zIFRoZSB0b3RhbCBhbW91bnQgb2Ygd2FsbGV0IG91dHB1dHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3RhbEFtb3VudE9mV2FsbGV0T3V0cHV0cyhwc2J0OiBVdHhvUHNidCwgcm9vdFdhbGxldE5vZGVzOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+KTogYmlnaW50IHtcbiAgY29uc3QgaW5kaWNlcyA9IGZpbmRXYWxsZXRPdXRwdXRJbmRpY2VzKHBzYnQsIHJvb3RXYWxsZXROb2Rlcyk7XG4gIGNvbnN0IHR4T3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzO1xuICByZXR1cm4gaW5kaWNlcy5yZWR1Y2UoKHN1bSwgaSkgPT4gc3VtICsgdHhPdXRwdXRzW2ldLnZhbHVlLCBCaWdJbnQoMCkpO1xufVxuXG4vKipcbiAqIEZpbmRzIGluZGljZXMgb2YgYWxsIGludGVybmFsIG91dHB1dHMgaW4gYSBQU0JULCBpZGVudGlmaWVkIGFzIG91dHB1dHMgYmVsb25naW5nIHRvIHRoZSB3YWxsZXQncyByb290IG5vZGVzIHdpdGhpbiB0aGUgUFNCVC5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgY29udGFpbmluZyB0aGUgd2FsbGV0J3Mgcm9vdCBub2RlcyBhcyBpbmRpY2F0ZWQgYnkgZ2xvYmFsIFhwdWJzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgaW5kaWNlcyBvZiBpbnRlcm5hbCBvdXRwdXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZEludGVybmFsT3V0cHV0SW5kaWNlcyhwc2J0OiBVdHhvUHNidCk6IG51bWJlcltdIHtcbiAgY29uc3Qgcm9vdE5vZGVzID0gZ2V0U29ydGVkUm9vdE5vZGVzKHBzYnQpO1xuICByZXR1cm4gZmluZFdhbGxldE91dHB1dEluZGljZXMocHNidCwgcm9vdE5vZGVzKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIHRoZSB0b3RhbCBhbW91bnQgb2YgYWxsIGludGVybmFsIG91dHB1dHMgaW4gYSBQU0JULCBpZGVudGlmaWVkIGFzIG91dHB1dHMgYmVsb25naW5nIHRvIHRoZSB3YWxsZXQncyByb290IG5vZGVzIHdpdGhpbiB0aGUgUFNCVC5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgY29udGFpbmluZyB0aGUgd2FsbGV0J3Mgcm9vdCBub2RlcyBhcyBpbmRpY2F0ZWQgYnkgZ2xvYmFsIFhwdWJzLlxuICogQHJldHVybnMgVGhlIHRvdGFsIGFtb3VudCBvZiBpbnRlcm5hbCBvdXRwdXRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG90YWxBbW91bnRPZkludGVybmFsT3V0cHV0cyhwc2J0OiBVdHhvUHNidCk6IGJpZ2ludCB7XG4gIGNvbnN0IHJvb3ROb2RlcyA9IGdldFNvcnRlZFJvb3ROb2Rlcyhwc2J0KTtcbiAgcmV0dXJuIGdldFRvdGFsQW1vdW50T2ZXYWxsZXRPdXRwdXRzKHBzYnQsIHJvb3ROb2Rlcyk7XG59XG4iXX0=
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Contains helper methods for getting and sorting root nodes from a PSBT.
3
+ */
4
+ import { UtxoPsbt } from '../../UtxoPsbt';
5
+ import { Triple } from '../../types';
6
+ import { BIP32Interface } from 'bip32';
7
+ /**
8
+ * Error thrown when no multi-sig input is found in a PSBT.
9
+ * */
10
+ export declare class ErrorNoMultiSigInputFound extends Error {
11
+ constructor(message: string);
12
+ }
13
+ /**
14
+ * Retrieves unsorted root BIP32Interface nodes from a PSBT if available.
15
+ * @param psbt - The PSBT from which to extract the global Xpubs.
16
+ * @returns An array of BIP32Interface objects or undefined if not available.
17
+ */
18
+ export declare function getUnsortedRootNodes(psbt: UtxoPsbt): Triple<BIP32Interface> | undefined;
19
+ /**
20
+ * Sorts given root nodes based on the script compatibility with the PSBT's multi-sig inputs.
21
+ * @param psbt - The PSBT containing multi-sig inputs.
22
+ * @param rootNodes - Array of root nodes to sort.
23
+ * @returns An array of BIP32Interface objects in the order that matches the multi-sig script.
24
+ */
25
+ export declare function sortRootNodes(psbt: UtxoPsbt, rootNodes: Triple<BIP32Interface>): Triple<BIP32Interface>;
26
+ /**
27
+ * Retrieves sorted root nodes from a PSBT, ensuring they are ordered according to script compatibility.
28
+ * @param psbt - The PSBT to extract and sort root nodes from.
29
+ * @returns An array of sorted BIP32Interface root nodes.
30
+ */
31
+ export declare function getSortedRootNodes(psbt: UtxoPsbt): Triple<BIP32Interface>;
32
+ //# sourceMappingURL=RootNodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RootNodes.d.ts","sourceRoot":"","sources":["../../../../../src/bitgo/wallet/psbt/RootNodes.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAY,MAAM,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAgB,cAAc,EAAE,MAAM,OAAO,CAAC;AASrD;;KAEK;AACL,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAG5B;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,GAAG,SAAS,CAMvF;AAkGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAKvG;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC,CAIzE"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ /**
3
+ * Contains helper methods for getting and sorting root nodes from a PSBT.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ErrorNoMultiSigInputFound = void 0;
7
+ exports.getUnsortedRootNodes = getUnsortedRootNodes;
8
+ exports.sortRootNodes = sortRootNodes;
9
+ exports.getSortedRootNodes = getSortedRootNodes;
10
+ const assert = require("assert");
11
+ const bs58check = require("bs58check");
12
+ const types_1 = require("../../types");
13
+ const bip32_1 = require("bip32");
14
+ const noble_ecc_1 = require("../../../noble_ecc");
15
+ const outputScripts_1 = require("../../outputScripts");
16
+ const transaction_1 = require("../../transaction");
17
+ const Psbt_1 = require("../Psbt");
18
+ /**
19
+ * Error thrown when no multi-sig input is found in a PSBT.
20
+ * */
21
+ class ErrorNoMultiSigInputFound extends Error {
22
+ constructor(message) {
23
+ super(message);
24
+ }
25
+ }
26
+ exports.ErrorNoMultiSigInputFound = ErrorNoMultiSigInputFound;
27
+ /**
28
+ * Retrieves unsorted root BIP32Interface nodes from a PSBT if available.
29
+ * @param psbt - The PSBT from which to extract the global Xpubs.
30
+ * @returns An array of BIP32Interface objects or undefined if not available.
31
+ */
32
+ function getUnsortedRootNodes(psbt) {
33
+ const bip32s = psbt.data.globalMap.globalXpub?.map((xpub) => (0, bip32_1.BIP32Factory)(noble_ecc_1.ecc).fromBase58(bs58check.encode(xpub.extendedPubkey)));
34
+ assert(!bip32s || (0, types_1.isTriple)(bip32s), `Invalid globalXpubs in PSBT. Expected 3 or none. Got ${bip32s?.length}`);
35
+ return bip32s;
36
+ }
37
+ /**
38
+ * Determines if the given public keys' permutation matches a specified script.
39
+ * @param params - Object containing public keys, permutation, script public key, script type, and network.
40
+ * @returns A boolean indicating if the permutation matches the script.
41
+ */
42
+ function matchesScript({ pubKeys, perm, scriptPubKey, parsedScriptType, network, }) {
43
+ const pubKeysPerm = [pubKeys[perm[0]], pubKeys[perm[1]], pubKeys[perm[2]]];
44
+ const scriptTypes = (0, Psbt_1.toScriptType2Of3s)(parsedScriptType);
45
+ return scriptTypes.some((scriptType) => (0, outputScripts_1.createOutputScript2of3)(pubKeysPerm, scriptType, network).scriptPubKey.equals(scriptPubKey));
46
+ }
47
+ /**
48
+ * Finds the correct order of public keys to match a given script.
49
+ * @param pubKeys - Array of public keys involved in the script.
50
+ * @param scriptPubKey - The script public key to match against.
51
+ * @param parsedScriptType - The parsed script type.
52
+ * @param network - Bitcoin network.
53
+ * @returns The order of public keys that match the script.
54
+ */
55
+ function findSortOrderOfPubKeys(pubKeys, scriptPubKey, parsedScriptType, network) {
56
+ const permutations = [
57
+ [0, 1, 2],
58
+ [0, 2, 1],
59
+ [1, 0, 2],
60
+ [1, 2, 0],
61
+ [2, 0, 1],
62
+ [2, 1, 0],
63
+ ];
64
+ const order = permutations.find((perm) => matchesScript({ pubKeys, perm, scriptPubKey, parsedScriptType, network }));
65
+ assert(order, 'Could not find sort order of multi sig public keys');
66
+ return order;
67
+ }
68
+ /**
69
+ * Extracts multi-sig input data, including script type, script public key, and derivation path, from the first relevant PSBT input.
70
+ * @param psbt - The PSBT to extract data from.
71
+ * @returns An object containing the parsed script type, script public key, and derivation path.
72
+ */
73
+ function getFirstMultiSigInputData(psbt) {
74
+ function getScriptPubKey(input, prevOutIndex) {
75
+ const scriptPubKey = input.witnessUtxo?.script ??
76
+ (input.nonWitnessUtxo
77
+ ? (0, transaction_1.createTransactionFromBuffer)(input.nonWitnessUtxo, psbt.network, { amountType: 'bigint' }).outs[prevOutIndex]
78
+ .script
79
+ : undefined);
80
+ assert(scriptPubKey, 'Input scriptPubKey can not be found');
81
+ return scriptPubKey;
82
+ }
83
+ function getDerivationPath(input) {
84
+ const bip32Dv = input?.bip32Derivation ?? input?.tapBip32Derivation;
85
+ assert(bip32Dv?.length, 'Input Bip32Derivation can not be found');
86
+ return bip32Dv[0].path;
87
+ }
88
+ const txInputs = psbt.txInputs;
89
+ for (let i = 0; i < psbt.data.inputs.length; i++) {
90
+ const input = psbt.data.inputs[i];
91
+ const parsedScriptType = (0, Psbt_1.getPsbtInputScriptType)(input);
92
+ if (parsedScriptType === 'p2shP2pk') {
93
+ continue;
94
+ }
95
+ const scriptPubKey = getScriptPubKey(input, txInputs[i].index);
96
+ const derivationPath = getDerivationPath(input);
97
+ return { parsedScriptType, scriptPubKey, derivationPath };
98
+ }
99
+ throw new ErrorNoMultiSigInputFound('No multi sig input found');
100
+ }
101
+ /**
102
+ * Sorts given root nodes based on the script compatibility with the PSBT's multi-sig inputs.
103
+ * @param psbt - The PSBT containing multi-sig inputs.
104
+ * @param rootNodes - Array of root nodes to sort.
105
+ * @returns An array of BIP32Interface objects in the order that matches the multi-sig script.
106
+ */
107
+ function sortRootNodes(psbt, rootNodes) {
108
+ const { parsedScriptType, scriptPubKey, derivationPath } = getFirstMultiSigInputData(psbt);
109
+ const pubKeys = rootNodes.map((rootNode) => rootNode.derivePath(derivationPath).publicKey);
110
+ const order = findSortOrderOfPubKeys(pubKeys, scriptPubKey, parsedScriptType, psbt.network);
111
+ return order.map((i) => rootNodes[i]);
112
+ }
113
+ /**
114
+ * Retrieves sorted root nodes from a PSBT, ensuring they are ordered according to script compatibility.
115
+ * @param psbt - The PSBT to extract and sort root nodes from.
116
+ * @returns An array of sorted BIP32Interface root nodes.
117
+ */
118
+ function getSortedRootNodes(psbt) {
119
+ const unsortedRootNodes = getUnsortedRootNodes(psbt);
120
+ assert(unsortedRootNodes, 'Could not find root nodes in PSBT');
121
+ return sortRootNodes(psbt, unsortedRootNodes);
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm9vdE5vZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9wc2J0L1Jvb3ROb2Rlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQThCSCxvREFNQztBQXdHRCxzQ0FLQztBQU9ELGdEQUlDO0FBMUpELGlDQUFpQztBQUNqQyx1Q0FBdUM7QUFHdkMsdUNBQStDO0FBQy9DLGlDQUFxRDtBQUNyRCxrREFBbUQ7QUFHbkQsdURBQTZEO0FBRTdELG1EQUFnRTtBQUNoRSxrQ0FBb0U7QUFFcEU7O0tBRUs7QUFDTCxNQUFhLHlCQUEwQixTQUFRLEtBQUs7SUFDbEQsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqQixDQUFDO0NBQ0Y7QUFKRCw4REFJQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxJQUFjO0lBQ2pELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUMxRCxJQUFBLG9CQUFZLEVBQUMsZUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQ3ZFLENBQUM7SUFDRixNQUFNLENBQUMsQ0FBQyxNQUFNLElBQUksSUFBQSxnQkFBUSxFQUFDLE1BQU0sQ0FBQyxFQUFFLHdEQUF3RCxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUM5RyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsYUFBYSxDQUFDLEVBQ3JCLE9BQU8sRUFDUCxJQUFJLEVBQ0osWUFBWSxFQUNaLGdCQUFnQixFQUNoQixPQUFPLEdBT1I7SUFDQyxNQUFNLFdBQVcsR0FBbUIsQ0FBQyxPQUFPLENBQUMsSUFB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LENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBnZXR0aW5nIGFuZCBzb3J0aW5nIHJvb3Qgbm9kZXMgZnJvbSBhIFBTQlQuXG4gKi9cblxuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyBiczU4Y2hlY2sgZnJvbSAnYnM1OGNoZWNrJztcblxuaW1wb3J0IHsgVXR4b1BzYnQgfSBmcm9tICcuLi8uLi9VdHhvUHNidCc7XG5pbXBvcnQgeyBpc1RyaXBsZSwgVHJpcGxlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQklQMzJGYWN0b3J5LCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcbmltcG9ydCB7IGVjYyBhcyBlY2NMaWIgfSBmcm9tICcuLi8uLi8uLi9ub2JsZV9lY2MnO1xuaW1wb3J0IHsgUGFyc2VkU2NyaXB0VHlwZTJPZjMgfSBmcm9tICcuLi8uLi9wYXJzZUlucHV0JztcbmltcG9ydCB7IE5ldHdvcmsgfSBmcm9tICcuLi8uLi8uLi9uZXR3b3Jrcyc7XG5pbXBvcnQgeyBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzIH0gZnJvbSAnLi4vLi4vb3V0cHV0U2NyaXB0cyc7XG5pbXBvcnQgeyBQc2J0SW5wdXQgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IGNyZWF0ZVRyYW5zYWN0aW9uRnJvbUJ1ZmZlciB9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uJztcbmltcG9ydCB7IGdldFBzYnRJbnB1dFNjcmlwdFR5cGUsIHRvU2NyaXB0VHlwZTJPZjNzIH0gZnJvbSAnLi4vUHNidCc7XG5cbi8qKlxuICogRXJyb3IgdGhyb3duIHdoZW4gbm8gbXVsdGktc2lnIGlucHV0IGlzIGZvdW5kIGluIGEgUFNCVC5cbiAqICovXG5leHBvcnQgY2xhc3MgRXJyb3JOb011bHRpU2lnSW5wdXRGb3VuZCBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdW5zb3J0ZWQgcm9vdCBCSVAzMkludGVyZmFjZSBub2RlcyBmcm9tIGEgUFNCVCBpZiBhdmFpbGFibGUuXG4gKiBAcGFyYW0gcHNidCAtIFRoZSBQU0JUIGZyb20gd2hpY2ggdG8gZXh0cmFjdCB0aGUgZ2xvYmFsIFhwdWJzLlxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgQklQMzJJbnRlcmZhY2Ugb2JqZWN0cyBvciB1bmRlZmluZWQgaWYgbm90IGF2YWlsYWJsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFVuc29ydGVkUm9vdE5vZGVzKHBzYnQ6IFV0eG9Qc2J0KTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGJpcDMycyA9IHBzYnQuZGF0YS5nbG9iYWxNYXAuZ2xvYmFsWHB1Yj8ubWFwKCh4cHViKSA9PlxuICAgIEJJUDMyRmFjdG9yeShlY2NMaWIpLmZyb21CYXNlNTgoYnM1OGNoZWNrLmVuY29kZSh4cHViLmV4dGVuZGVkUHVia2V5KSlcbiAgKTtcbiAgYXNzZXJ0KCFiaXAzMnMgfHwgaXNUcmlwbGUoYmlwMzJzKSwgYEludmFsaWQgZ2xvYmFsWHB1YnMgaW4gUFNCVC4gRXhwZWN0ZWQgMyBvciBub25lLiBHb3QgJHtiaXAzMnM/Lmxlbmd0aH1gKTtcbiAgcmV0dXJuIGJpcDMycztcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBwdWJsaWMga2V5cycgcGVybXV0YXRpb24gbWF0Y2hlcyBhIHNwZWNpZmllZCBzY3JpcHQuXG4gKiBAcGFyYW0gcGFyYW1zIC0gT2JqZWN0IGNvbnRhaW5pbmcgcHVibGljIGtleXMsIHBlcm11dGF0aW9uLCBzY3JpcHQgcHVibGljIGtleSwgc2NyaXB0IHR5cGUsIGFuZCBuZXR3b3JrLlxuICogQHJldHVybnMgQSBib29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHBlcm11dGF0aW9uIG1hdGNoZXMgdGhlIHNjcmlwdC5cbiAqL1xuZnVuY3Rpb24gbWF0Y2hlc1NjcmlwdCh7XG4gIHB1YktleXMsXG4gIHBlcm0sXG4gIHNjcmlwdFB1YktleSxcbiAgcGFyc2VkU2NyaXB0VHlwZSxcbiAgbmV0d29yayxcbn06IHtcbiAgcHViS2V5czogQnVmZmVyW107XG4gIHBlcm06IFRyaXBsZTxudW1iZXI+O1xuICBzY3JpcHRQdWJLZXk6IEJ1ZmZlcjtcbiAgcGFyc2VkU2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjM7XG4gIG5ldHdvcms6IE5ldHdvcms7XG59KTogYm9vbGVhbiB7XG4gIGNvbnN0IHB1YktleXNQZXJtOiBUcmlwbGU8QnVmZmVyPiA9IFtwdWJLZXlzW3Blcm1bMF1dLCBwdWJLZXlzW3Blcm1bMV1dLCBwdWJLZXlzW3Blcm1bMl1dXTtcbiAgY29uc3Qgc2NyaXB0VHlwZXMgPSB0b1NjcmlwdFR5cGUyT2YzcyhwYXJzZWRTY3JpcHRUeXBlKTtcbiAgcmV0dXJuIHNjcmlwdFR5cGVzLnNvbWUoKHNjcmlwdFR5cGUpID0+XG4gICAgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhwdWJLZXlzUGVybSwgc2NyaXB0VHlwZSwgbmV0d29yaykuc2NyaXB0UHViS2V5LmVxdWFscyhzY3JpcHRQdWJLZXkpXG4gICk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGNvcnJlY3Qgb3JkZXIgb2YgcHVibGljIGtleXMgdG8gbWF0Y2ggYSBnaXZlbiBzY3JpcHQuXG4gKiBAcGFyYW0gcHViS2V5cyAtIEFycmF5IG9mIHB1YmxpYyBrZXlzIGludm9sdmVkIGluIHRoZSBzY3JpcHQuXG4gKiBAcGFyYW0gc2NyaXB0UHViS2V5IC0gVGhlIHNjcmlwdCBwdWJsaWMga2V5IHRvIG1hdGNoIGFnYWluc3QuXG4gKiBAcGFyYW0gcGFyc2VkU2NyaXB0VHlwZSAtIFRoZSBwYXJzZWQgc2NyaXB0IHR5cGUuXG4gKiBAcGFyYW0gbmV0d29yayAtIEJpdGNvaW4gbmV0d29yay5cbiAqIEByZXR1cm5zIFRoZSBvcmRlciBvZiBwdWJsaWMga2V5cyB0aGF0IG1hdGNoIHRoZSBzY3JpcHQuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTb3J0T3JkZXJPZlB1YktleXMoXG4gIHB1YktleXM6IFRyaXBsZTxCdWZmZXI+LFxuICBzY3JpcHRQdWJLZXk6IEJ1ZmZlcixcbiAgcGFyc2VkU2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjMsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IFRyaXBsZTxudW1iZXI+IHtcbiAgY29uc3QgcGVybXV0YXRpb25zOiBBcnJheTxUcmlwbGU8bnVtYmVyPj4gPSBbXG4gICAgWzAsIDEsIDJdLFxuICAgIFswLCAyLCAxXSxcbiAgICBbMSwgMCwgMl0sXG4gICAgWzEsIDIsIDBdLFxuICAgIFsyLCAwLCAxXSxcbiAgICBbMiwgMSwgMF0sXG4gIF07XG5cbiAgY29uc3Qgb3JkZXIgPSBwZXJtdXRhdGlvbnMuZmluZCgocGVybSkgPT4gbWF0Y2hlc1NjcmlwdCh7IHB1YktleXMsIHBlcm0sIHNjcmlwdFB1YktleSwgcGFyc2VkU2NyaXB0VHlwZSwgbmV0d29yayB9KSk7XG4gIGFzc2VydChvcmRlciwgJ0NvdWxkIG5vdCBmaW5kIHNvcnQgb3JkZXIgb2YgbXVsdGkgc2lnIHB1YmxpYyBrZXlzJyk7XG4gIHJldHVybiBvcmRlcjtcbn1cblxuLyoqXG4gKiBFeHRyYWN0cyBtdWx0aS1zaWcgaW5wdXQgZGF0YSwgaW5jbHVkaW5nIHNjcmlwdCB0eXBlLCBzY3JpcHQgcHVibGljIGtleSwgYW5kIGRlcml2YXRpb24gcGF0aCwgZnJvbSB0aGUgZmlyc3QgcmVsZXZhbnQgUFNCVCBpbnB1dC5cbiAqIEBwYXJhbSBwc2J0IC0gVGhlIFBTQlQgdG8gZXh0cmFjdCBkYXRhIGZyb20uXG4gKiBAcmV0dXJucyBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcGFyc2VkIHNjcmlwdCB0eXBlLCBzY3JpcHQgcHVibGljIGtleSwgYW5kIGRlcml2YXRpb24gcGF0aC5cbiAqL1xuZnVuY3Rpb24gZ2V0Rmlyc3RNdWx0aVNpZ0lucHV0RGF0YShwc2J0OiBVdHhvUHNidCk6IHtcbiAgcGFyc2VkU2NyaXB0VHlwZTogUGFyc2VkU2NyaXB0VHlwZTJPZjM7XG4gIHNjcmlwdFB1YktleTogQnVmZmVyO1xuICBkZXJpdmF0aW9uUGF0aDogc3RyaW5nO1xufSB7XG4gIGZ1bmN0aW9uIGdldFNjcmlwdFB1YktleShpbnB1dDogUHNidElucHV0LCBwcmV2T3V0SW5kZXg6IG51bWJlcikge1xuICAgIGNvbnN0IHNjcmlwdFB1YktleSA9XG4gICAgICBpbnB1dC53aXRuZXNzVXR4bz8uc2NyaXB0ID8/XG4gICAgICAoaW5wdXQubm9uV2l0bmVzc1V0eG9cbiAgICAgICAgPyBjcmVhdGVUcmFuc2FjdGlvbkZyb21CdWZmZXIoaW5wdXQubm9uV2l0bmVzc1V0eG8sIHBzYnQubmV0d29yaywgeyBhbW91bnRUeXBlOiAnYmlnaW50JyB9KS5vdXRzW3ByZXZPdXRJbmRleF1cbiAgICAgICAgICAgIC5zY3JpcHRcbiAgICAgICAgOiB1bmRlZmluZWQpO1xuICAgIGFzc2VydChzY3JpcHRQdWJLZXksICdJbnB1dCBzY3JpcHRQdWJLZXkgY2FuIG5vdCBiZSBmb3VuZCcpO1xuICAgIHJldHVybiBzY3JpcHRQdWJLZXk7XG4gIH1cblxuICBmdW5jdGlvbiBnZXREZXJpdmF0aW9uUGF0aChpbnB1dDogUHNidElucHV0KSB7XG4gICAgY29uc3QgYmlwMzJEdiA9IGlucHV0Py5iaXAzMkRlcml2YXRpb24gPz8gaW5wdXQ/LnRhcEJpcDMyRGVyaXZhdGlvbjtcbiAgICBhc3NlcnQoYmlwMzJEdj8ubGVuZ3RoLCAnSW5wdXQgQmlwMzJEZXJpdmF0aW9uIGNhbiBub3QgYmUgZm91bmQnKTtcbiAgICByZXR1cm4gYmlwMzJEdlswXS5wYXRoO1xuICB9XG5cbiAgY29uc3QgdHhJbnB1dHMgPSBwc2J0LnR4SW5wdXRzO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHNidC5kYXRhLmlucHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGlucHV0ID0gcHNidC5kYXRhLmlucHV0c1tpXTtcbiAgICBjb25zdCBwYXJzZWRTY3JpcHRUeXBlID0gZ2V0UHNidElucHV0U2NyaXB0VHlwZShpbnB1dCk7XG4gICAgaWYgKHBhcnNlZFNjcmlwdFR5cGUgPT09ICdwMnNoUDJwaycpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzY3JpcHRQdWJLZXkgPSBnZXRTY3JpcHRQdWJLZXkoaW5wdXQsIHR4SW5wdXRzW2ldLmluZGV4KTtcbiAgICBjb25zdCBkZXJpdmF0aW9uUGF0aCA9IGdldERlcml2YXRpb25QYXRoKGlucHV0KTtcbiAgICByZXR1cm4geyBwYXJzZWRTY3JpcHRUeXBlLCBzY3JpcHRQdWJLZXksIGRlcml2YXRpb25QYXRoIH07XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3JOb011bHRpU2lnSW5wdXRGb3VuZCgnTm8gbXVsdGkgc2lnIGlucHV0IGZvdW5kJyk7XG59XG5cbi8qKlxuICogU29ydHMgZ2l2ZW4gcm9vdCBub2RlcyBiYXNlZCBvbiB0aGUgc2NyaXB0IGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgUFNCVCdzIG11bHRpLXNpZyBpbnB1dHMuXG4gKiBAcGFyYW0gcHNidCAtIFRoZSBQU0JUIGNvbnRhaW5pbmcgbXVsdGktc2lnIGlucHV0cy5cbiAqIEBwYXJhbSByb290Tm9kZXMgLSBBcnJheSBvZiByb290IG5vZGVzIHRvIHNvcnQuXG4gKiBAcmV0dXJucyBBbiBhcnJheSBvZiBCSVAzMkludGVyZmFjZSBvYmplY3RzIGluIHRoZSBvcmRlciB0aGF0IG1hdGNoZXMgdGhlIG11bHRpLXNpZyBzY3JpcHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb3J0Um9vdE5vZGVzKHBzYnQ6IFV0eG9Qc2J0LCByb290Tm9kZXM6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4pOiBUcmlwbGU8QklQMzJJbnRlcmZhY2U+IHtcbiAgY29uc3QgeyBwYXJzZWRTY3JpcHRUeXBlLCBzY3JpcHRQdWJLZXksIGRlcml2YXRpb25QYXRoIH0gPSBnZXRGaXJzdE11bHRpU2lnSW5wdXREYXRhKHBzYnQpO1xuICBjb25zdCBwdWJLZXlzID0gcm9vdE5vZGVzLm1hcCgocm9vdE5vZGUpID0+IHJvb3ROb2RlLmRlcml2ZVBhdGgoZGVyaXZhdGlvblBhdGgpLnB1YmxpY0tleSkgYXMgVHJpcGxlPEJ1ZmZlcj47XG4gIGNvbnN0IG9yZGVyID0gZmluZFNvcnRPcmRlck9mUHViS2V5cyhwdWJLZXlzLCBzY3JpcHRQdWJLZXksIHBhcnNlZFNjcmlwdFR5cGUsIHBzYnQubmV0d29yayk7XG4gIHJldHVybiBvcmRlci5tYXAoKGkpID0+IHJvb3ROb2Rlc1tpXSkgYXMgVHJpcGxlPEJJUDMySW50ZXJmYWNlPjtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgc29ydGVkIHJvb3Qgbm9kZXMgZnJvbSBhIFBTQlQsIGVuc3VyaW5nIHRoZXkgYXJlIG9yZGVyZWQgYWNjb3JkaW5nIHRvIHNjcmlwdCBjb21wYXRpYmlsaXR5LlxuICogQHBhcmFtIHBzYnQgLSBUaGUgUFNCVCB0byBleHRyYWN0IGFuZCBzb3J0IHJvb3Qgbm9kZXMgZnJvbS5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHNvcnRlZCBCSVAzMkludGVyZmFjZSByb290IG5vZGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U29ydGVkUm9vdE5vZGVzKHBzYnQ6IFV0eG9Qc2J0KTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiB7XG4gIGNvbnN0IHVuc29ydGVkUm9vdE5vZGVzID0gZ2V0VW5zb3J0ZWRSb290Tm9kZXMocHNidCk7XG4gIGFzc2VydCh1bnNvcnRlZFJvb3ROb2RlcywgJ0NvdWxkIG5vdCBmaW5kIHJvb3Qgbm9kZXMgaW4gUFNCVCcpO1xuICByZXR1cm4gc29ydFJvb3ROb2Rlcyhwc2J0LCB1bnNvcnRlZFJvb3ROb2Rlcyk7XG59XG4iXX0=
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  /**
3
2
  * Transaction (de)serialization helpers.
4
3
  * Only supports full transparent transactions without shielded inputs or outputs.
@@ -9,7 +8,7 @@
9
8
  import { TxInput, TxOutput } from 'bitcoinjs-lib';
10
9
  import { BufferReader, BufferWriter } from 'bitcoinjs-lib/src/bufferutils';
11
10
  import { ZcashTransaction } from './ZcashTransaction';
12
- export declare const VALUE_INT64_ZERO: Buffer;
11
+ export declare const VALUE_INT64_ZERO: Buffer<ArrayBuffer>;
13
12
  export declare function readInputs(bufferReader: BufferReader): TxInput[];
14
13
  export declare function readOutputs<TNumber extends number | bigint>(bufferReader: BufferReader, amountType?: 'number' | 'bigint'): TxOutput<TNumber>[];
15
14
  export declare function readEmptyVector(bufferReader: BufferReader): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ZcashBufferutils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashBufferutils.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAA+B,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AAEvE,wBAAgB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,EAAE,CAahE;AAED,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACzD,YAAY,EAAE,YAAY,EAC1B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAUrB;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAKhE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAOvE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIxE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIvE;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIzE;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,IAAI,CAyBN;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,IAAI,CAaN;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAQ5E;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,GACxB,IAAI,CAWN;AAED,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACxD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC5B,IAAI,CAoBN;AAED,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACxD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC5B,IAAI,CAYN"}
1
+ {"version":3,"file":"ZcashBufferutils.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/zcash/ZcashBufferutils.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,EAA+B,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEnF,eAAO,MAAM,gBAAgB,qBAAyC,CAAC;AAEvE,wBAAgB,UAAU,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,EAAE,CAahE;AAED,wBAAgB,WAAW,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACzD,YAAY,EAAE,YAAY,EAC1B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAUrB;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAKhE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAOvE;AAED,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIxE;AAED,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIvE;AAED,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAIzE;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,IAAI,CAyBN;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,EAC7B,UAAU,GAAE,QAAQ,GAAG,QAAmB,GACzC,IAAI,CAaN;AAED,wBAAgB,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,CAQ5E;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,GACxB,IAAI,CAWN;AAED,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACxD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC5B,IAAI,CAoBN;AAED,wBAAgB,UAAU,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACxD,YAAY,EAAE,YAAY,EAC1B,EAAE,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAC5B,IAAI,CAYN"}