@bitgo-beta/utxo-lib 8.0.3-beta.13 → 8.0.3-beta.1300

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 (225) hide show
  1. package/README.md +19 -16
  2. package/dist/src/address.d.ts +0 -1
  3. package/dist/src/address.d.ts.map +1 -1
  4. package/dist/src/address.js +10 -10
  5. package/dist/src/addressFormat.d.ts +1 -2
  6. package/dist/src/addressFormat.d.ts.map +1 -1
  7. package/dist/src/addressFormat.js +21 -26
  8. package/dist/src/bitgo/Musig2.d.ts +5 -11
  9. package/dist/src/bitgo/Musig2.d.ts.map +1 -1
  10. package/dist/src/bitgo/Musig2.js +75 -100
  11. package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts +27 -0
  12. package/dist/src/bitgo/ProprietaryKeyValUtils.d.ts.map +1 -0
  13. package/dist/src/bitgo/ProprietaryKeyValUtils.js +74 -0
  14. package/dist/src/bitgo/PsbtUtil.d.ts +54 -0
  15. package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -0
  16. package/dist/src/bitgo/PsbtUtil.js +131 -0
  17. package/dist/src/bitgo/Unspent.d.ts +2 -3
  18. package/dist/src/bitgo/Unspent.d.ts.map +1 -1
  19. package/dist/src/bitgo/Unspent.js +14 -15
  20. package/dist/src/bitgo/UtxoPsbt.d.ts +40 -43
  21. package/dist/src/bitgo/UtxoPsbt.d.ts.map +1 -1
  22. package/dist/src/bitgo/UtxoPsbt.js +235 -209
  23. package/dist/src/bitgo/UtxoTransaction.d.ts +0 -1
  24. package/dist/src/bitgo/UtxoTransaction.d.ts.map +1 -1
  25. package/dist/src/bitgo/UtxoTransaction.js +14 -14
  26. package/dist/src/bitgo/UtxoTransactionBuilder.d.ts +0 -1
  27. package/dist/src/bitgo/UtxoTransactionBuilder.d.ts.map +1 -1
  28. package/dist/src/bitgo/UtxoTransactionBuilder.js +1 -1
  29. package/dist/src/bitgo/bitcoincash/address.d.ts +0 -1
  30. package/dist/src/bitgo/bitcoincash/address.d.ts.map +1 -1
  31. package/dist/src/bitgo/bitcoincash/address.js +11 -12
  32. package/dist/src/bitgo/bitcoincash/index.js +6 -2
  33. package/dist/src/bitgo/dash/DashPsbt.d.ts +1 -1
  34. package/dist/src/bitgo/dash/DashPsbt.d.ts.map +1 -1
  35. package/dist/src/bitgo/dash/DashPsbt.js +4 -1
  36. package/dist/src/bitgo/dash/DashTransaction.d.ts +0 -1
  37. package/dist/src/bitgo/dash/DashTransaction.d.ts.map +1 -1
  38. package/dist/src/bitgo/dash/DashTransaction.js +3 -3
  39. package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts +0 -1
  40. package/dist/src/bitgo/dash/DashTransactionBuilder.d.ts.map +1 -1
  41. package/dist/src/bitgo/dash/DashTransactionBuilder.js +1 -1
  42. package/dist/src/bitgo/dash/index.js +6 -2
  43. package/dist/src/bitgo/index.d.ts +11 -0
  44. package/dist/src/bitgo/index.d.ts.map +1 -1
  45. package/dist/src/bitgo/index.js +11 -3
  46. package/dist/src/bitgo/keyutil.d.ts +10 -2
  47. package/dist/src/bitgo/keyutil.d.ts.map +1 -1
  48. package/dist/src/bitgo/keyutil.js +27 -6
  49. package/dist/src/bitgo/legacysafe/index.d.ts +14 -0
  50. package/dist/src/bitgo/legacysafe/index.d.ts.map +1 -0
  51. package/dist/src/bitgo/legacysafe/index.js +60 -0
  52. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts +1 -1
  53. package/dist/src/bitgo/litecoin/LitecoinPsbt.d.ts.map +1 -1
  54. package/dist/src/bitgo/litecoin/LitecoinPsbt.js +4 -1
  55. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts +1 -2
  56. package/dist/src/bitgo/litecoin/LitecoinTransaction.d.ts.map +1 -1
  57. package/dist/src/bitgo/litecoin/LitecoinTransaction.js +2 -2
  58. package/dist/src/bitgo/litecoin/index.js +6 -2
  59. package/dist/src/bitgo/nonStandardHalfSigned.js +4 -5
  60. package/dist/src/bitgo/outputScripts.d.ts +12 -8
  61. package/dist/src/bitgo/outputScripts.d.ts.map +1 -1
  62. package/dist/src/bitgo/outputScripts.js +68 -50
  63. package/dist/src/bitgo/parseInput.d.ts +7 -8
  64. package/dist/src/bitgo/parseInput.d.ts.map +1 -1
  65. package/dist/src/bitgo/parseInput.js +15 -16
  66. package/dist/src/bitgo/psbt/fromHalfSigned.d.ts +0 -1
  67. package/dist/src/bitgo/psbt/fromHalfSigned.d.ts.map +1 -1
  68. package/dist/src/bitgo/psbt/fromHalfSigned.js +7 -8
  69. package/dist/src/bitgo/psbt/scriptTypes.d.ts +0 -1
  70. package/dist/src/bitgo/psbt/scriptTypes.d.ts.map +1 -1
  71. package/dist/src/bitgo/psbt/scriptTypes.js +7 -8
  72. package/dist/src/bitgo/signature.d.ts +5 -6
  73. package/dist/src/bitgo/signature.d.ts.map +1 -1
  74. package/dist/src/bitgo/signature.js +37 -23
  75. package/dist/src/bitgo/tnumber.js +2 -3
  76. package/dist/src/bitgo/transaction.d.ts +31 -4
  77. package/dist/src/bitgo/transaction.d.ts.map +1 -1
  78. package/dist/src/bitgo/transaction.js +57 -27
  79. package/dist/src/bitgo/transactionAmounts.d.ts +9 -0
  80. package/dist/src/bitgo/transactionAmounts.d.ts.map +1 -0
  81. package/dist/src/bitgo/transactionAmounts.js +32 -0
  82. package/dist/src/bitgo/types.d.ts +8 -2
  83. package/dist/src/bitgo/types.d.ts.map +1 -1
  84. package/dist/src/bitgo/types.js +12 -4
  85. package/dist/src/bitgo/wallet/Psbt.d.ts +91 -27
  86. package/dist/src/bitgo/wallet/Psbt.d.ts.map +1 -1
  87. package/dist/src/bitgo/wallet/Psbt.js +246 -108
  88. package/dist/src/bitgo/wallet/ScriptId.d.ts +14 -0
  89. package/dist/src/bitgo/wallet/ScriptId.d.ts.map +1 -0
  90. package/dist/src/bitgo/wallet/ScriptId.js +28 -0
  91. package/dist/src/bitgo/wallet/Unspent.d.ts +43 -10
  92. package/dist/src/bitgo/wallet/Unspent.d.ts.map +1 -1
  93. package/dist/src/bitgo/wallet/Unspent.js +174 -81
  94. package/dist/src/bitgo/wallet/WalletKeys.d.ts +2 -3
  95. package/dist/src/bitgo/wallet/WalletKeys.d.ts.map +1 -1
  96. package/dist/src/bitgo/wallet/WalletKeys.js +3 -3
  97. package/dist/src/bitgo/wallet/WalletOutput.d.ts +70 -2
  98. package/dist/src/bitgo/wallet/WalletOutput.d.ts.map +1 -1
  99. package/dist/src/bitgo/wallet/WalletOutput.js +179 -43
  100. package/dist/src/bitgo/wallet/WalletScripts.js +4 -5
  101. package/dist/src/bitgo/wallet/WalletUnspentSigner.d.ts +1 -1
  102. package/dist/src/bitgo/wallet/WalletUnspentSigner.d.ts.map +1 -1
  103. package/dist/src/bitgo/wallet/WalletUnspentSigner.js +7 -7
  104. package/dist/src/bitgo/wallet/chains.d.ts +3 -3
  105. package/dist/src/bitgo/wallet/chains.d.ts.map +1 -1
  106. package/dist/src/bitgo/wallet/chains.js +10 -10
  107. package/dist/src/bitgo/wallet/index.d.ts +3 -0
  108. package/dist/src/bitgo/wallet/index.d.ts.map +1 -1
  109. package/dist/src/bitgo/wallet/index.js +9 -2
  110. package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts +50 -0
  111. package/dist/src/bitgo/wallet/psbt/PsbtOutputs.d.ts.map +1 -0
  112. package/dist/src/bitgo/wallet/psbt/PsbtOutputs.js +85 -0
  113. package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts +32 -0
  114. package/dist/src/bitgo/wallet/psbt/RootNodes.d.ts.map +1 -0
  115. package/dist/src/bitgo/wallet/psbt/RootNodes.js +122 -0
  116. package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts +1 -2
  117. package/dist/src/bitgo/zcash/ZcashBufferutils.d.ts.map +1 -1
  118. package/dist/src/bitgo/zcash/ZcashBufferutils.js +15 -15
  119. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts +2 -6
  120. package/dist/src/bitgo/zcash/ZcashPsbt.d.ts.map +1 -1
  121. package/dist/src/bitgo/zcash/ZcashPsbt.js +15 -26
  122. package/dist/src/bitgo/zcash/ZcashTransaction.d.ts +5 -2
  123. package/dist/src/bitgo/zcash/ZcashTransaction.d.ts.map +1 -1
  124. package/dist/src/bitgo/zcash/ZcashTransaction.js +48 -21
  125. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts +0 -1
  126. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.d.ts.map +1 -1
  127. package/dist/src/bitgo/zcash/ZcashTransactionBuilder.js +8 -4
  128. package/dist/src/bitgo/zcash/address.d.ts +0 -1
  129. package/dist/src/bitgo/zcash/address.d.ts.map +1 -1
  130. package/dist/src/bitgo/zcash/address.js +7 -8
  131. package/dist/src/bitgo/zcash/hashZip0244.d.ts +1 -2
  132. package/dist/src/bitgo/zcash/hashZip0244.d.ts.map +1 -1
  133. package/dist/src/bitgo/zcash/hashZip0244.js +9 -10
  134. package/dist/src/bitgo/zcash/index.js +6 -2
  135. package/dist/src/classify.d.ts +0 -1
  136. package/dist/src/classify.d.ts.map +1 -1
  137. package/dist/src/classify.js +5 -5
  138. package/dist/src/index.d.ts +3 -1
  139. package/dist/src/index.d.ts.map +1 -1
  140. package/dist/src/index.js +12 -4
  141. package/dist/src/networks.d.ts +2 -2
  142. package/dist/src/networks.d.ts.map +1 -1
  143. package/dist/src/networks.js +67 -21
  144. package/dist/src/payments/p2tr.d.ts.map +1 -1
  145. package/dist/src/payments/p2tr.js +16 -28
  146. package/dist/src/payments/p2tr_ns.js +3 -5
  147. package/dist/src/taproot.d.ts +80 -6
  148. package/dist/src/taproot.d.ts.map +1 -1
  149. package/dist/src/taproot.js +132 -48
  150. package/dist/src/templates/multisig/input.d.ts +0 -1
  151. package/dist/src/templates/multisig/input.d.ts.map +1 -1
  152. package/dist/src/templates/multisig/input.js +2 -3
  153. package/dist/src/templates/multisig/output.d.ts +0 -1
  154. package/dist/src/templates/multisig/output.d.ts.map +1 -1
  155. package/dist/src/templates/multisig/output.js +2 -3
  156. package/dist/src/templates/nulldata.d.ts +0 -1
  157. package/dist/src/templates/nulldata.d.ts.map +1 -1
  158. package/dist/src/templates/nulldata.js +3 -3
  159. package/dist/src/templates/pubkey/input.d.ts +0 -1
  160. package/dist/src/templates/pubkey/input.d.ts.map +1 -1
  161. package/dist/src/templates/pubkey/input.js +2 -3
  162. package/dist/src/templates/pubkey/output.d.ts +0 -1
  163. package/dist/src/templates/pubkey/output.d.ts.map +1 -1
  164. package/dist/src/templates/pubkey/output.js +2 -3
  165. package/dist/src/templates/pubkeyhash/input.d.ts +0 -1
  166. package/dist/src/templates/pubkeyhash/input.d.ts.map +1 -1
  167. package/dist/src/templates/pubkeyhash/input.js +2 -3
  168. package/dist/src/templates/pubkeyhash/output.d.ts +0 -1
  169. package/dist/src/templates/pubkeyhash/output.d.ts.map +1 -1
  170. package/dist/src/templates/pubkeyhash/output.js +2 -3
  171. package/dist/src/templates/scripthash/input.d.ts +0 -1
  172. package/dist/src/templates/scripthash/input.d.ts.map +1 -1
  173. package/dist/src/templates/scripthash/input.js +2 -3
  174. package/dist/src/templates/scripthash/output.d.ts +0 -1
  175. package/dist/src/templates/scripthash/output.d.ts.map +1 -1
  176. package/dist/src/templates/scripthash/output.js +2 -3
  177. package/dist/src/templates/taproot/input.d.ts +0 -1
  178. package/dist/src/templates/taproot/input.d.ts.map +1 -1
  179. package/dist/src/templates/taproot/input.js +2 -3
  180. package/dist/src/templates/taproot/output.d.ts +0 -1
  181. package/dist/src/templates/taproot/output.d.ts.map +1 -1
  182. package/dist/src/templates/taproot/output.js +2 -3
  183. package/dist/src/templates/taprootnofn/input.d.ts +0 -1
  184. package/dist/src/templates/taprootnofn/input.d.ts.map +1 -1
  185. package/dist/src/templates/taprootnofn/input.js +2 -3
  186. package/dist/src/templates/taprootnofn/output.d.ts +0 -1
  187. package/dist/src/templates/taprootnofn/output.d.ts.map +1 -1
  188. package/dist/src/templates/taprootnofn/output.js +4 -5
  189. package/dist/src/templates/witnesscommitment/output.d.ts +0 -1
  190. package/dist/src/templates/witnesscommitment/output.d.ts.map +1 -1
  191. package/dist/src/templates/witnesscommitment/output.js +4 -5
  192. package/dist/src/templates/witnesspubkeyhash/input.d.ts +0 -1
  193. package/dist/src/templates/witnesspubkeyhash/input.d.ts.map +1 -1
  194. package/dist/src/templates/witnesspubkeyhash/input.js +2 -3
  195. package/dist/src/templates/witnesspubkeyhash/output.d.ts +0 -1
  196. package/dist/src/templates/witnesspubkeyhash/output.d.ts.map +1 -1
  197. package/dist/src/templates/witnesspubkeyhash/output.js +2 -3
  198. package/dist/src/templates/witnessscripthash/input.d.ts +0 -1
  199. package/dist/src/templates/witnessscripthash/input.d.ts.map +1 -1
  200. package/dist/src/templates/witnessscripthash/input.js +2 -3
  201. package/dist/src/templates/witnessscripthash/output.d.ts +0 -1
  202. package/dist/src/templates/witnessscripthash/output.d.ts.map +1 -1
  203. package/dist/src/templates/witnessscripthash/output.js +2 -3
  204. package/dist/src/testutil/index.d.ts +1 -0
  205. package/dist/src/testutil/index.d.ts.map +1 -1
  206. package/dist/src/testutil/index.js +7 -2
  207. package/dist/src/testutil/keys.d.ts +6 -4
  208. package/dist/src/testutil/keys.d.ts.map +1 -1
  209. package/dist/src/testutil/keys.js +25 -12
  210. package/dist/src/testutil/mock.d.ts +3 -4
  211. package/dist/src/testutil/mock.d.ts.map +1 -1
  212. package/dist/src/testutil/mock.js +37 -30
  213. package/dist/src/testutil/psbt.d.ts +41 -16
  214. package/dist/src/testutil/psbt.d.ts.map +1 -1
  215. package/dist/src/testutil/psbt.js +53 -41
  216. package/dist/src/testutil/transaction.d.ts +18 -7
  217. package/dist/src/testutil/transaction.d.ts.map +1 -1
  218. package/dist/src/testutil/transaction.js +35 -28
  219. package/dist/src/transaction_builder.d.ts +0 -1
  220. package/dist/src/transaction_builder.d.ts.map +1 -1
  221. package/dist/src/transaction_builder.js +27 -32
  222. package/package.json +10 -17
  223. package/dist/src/noble_ecc.d.ts +0 -28
  224. package/dist/src/noble_ecc.d.ts.map +0 -1
  225. package/dist/src/noble_ecc.js +0 -172
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../src/templates/witnessscripthash/output.ts"],"names":[],"mappings":";AAKA,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAItE;yBAJe,KAAK"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../../../src/templates/witnessscripthash/output.ts"],"names":[],"mappings":"AAKA,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,OAAO,CAItE;yBAJe,KAAK;sBAKF,MAAM"}
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
  // OP_0 {scriptHash}
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.check = void 0;
4
+ exports.check = check;
5
5
  const __1 = require("../../");
6
6
  const __2 = require("../../");
7
7
  function check(script) {
8
8
  const buffer = __1.script.compile(script);
9
9
  return buffer.length === 34 && buffer[0] === __2.opcodes.OP_0 && buffer[1] === 0x20;
10
10
  }
11
- exports.check = check;
12
11
  check.toJSON = () => {
13
12
  return 'Witness scriptHash output';
14
13
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RlbXBsYXRlcy93aXRuZXNzc2NyaXB0aGFzaC9vdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjs7O0FBRXBCLDhCQUEyQztBQUMzQyw4QkFBaUM7QUFFakMsU0FBZ0IsS0FBSyxDQUFDLE1BQXVDO0lBQzNELE1BQU0sTUFBTSxHQUFHLFVBQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkMsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBTyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDO0FBQ2xGLENBQUM7QUFKRCxzQkFJQztBQUNELEtBQUssQ0FBQyxNQUFNLEdBQUcsR0FBVyxFQUFFO0lBQzFCLE9BQU8sMkJBQTJCLENBQUM7QUFDckMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gT1BfMCB7c2NyaXB0SGFzaH1cblxuaW1wb3J0IHsgc2NyaXB0IGFzIGJzY3JpcHQgfSBmcm9tICcuLi8uLi8nO1xuaW1wb3J0IHsgb3Bjb2RlcyB9IGZyb20gJy4uLy4uLyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGVjayhzY3JpcHQ6IEJ1ZmZlciB8IEFycmF5PG51bWJlciB8IEJ1ZmZlcj4pOiBib29sZWFuIHtcbiAgY29uc3QgYnVmZmVyID0gYnNjcmlwdC5jb21waWxlKHNjcmlwdCk7XG5cbiAgcmV0dXJuIGJ1ZmZlci5sZW5ndGggPT09IDM0ICYmIGJ1ZmZlclswXSA9PT0gb3Bjb2Rlcy5PUF8wICYmIGJ1ZmZlclsxXSA9PT0gMHgyMDtcbn1cbmNoZWNrLnRvSlNPTiA9ICgpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gJ1dpdG5lc3Mgc2NyaXB0SGFzaCBvdXRwdXQnO1xufTtcbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RlbXBsYXRlcy93aXRuZXNzc2NyaXB0aGFzaC9vdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLG9CQUFvQjs7QUFLcEIsc0JBSUM7QUFQRCw4QkFBMkM7QUFDM0MsOEJBQWlDO0FBRWpDLFNBQWdCLEtBQUssQ0FBQyxNQUF1QztJQUMzRCxNQUFNLE1BQU0sR0FBRyxVQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBRXZDLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxFQUFFLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLFdBQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQztBQUNsRixDQUFDO0FBQ0QsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFXLEVBQUU7SUFDMUIsT0FBTywyQkFBMkIsQ0FBQztBQUNyQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBPUF8wIHtzY3JpcHRIYXNofVxuXG5pbXBvcnQgeyBzY3JpcHQgYXMgYnNjcmlwdCB9IGZyb20gJy4uLy4uLyc7XG5pbXBvcnQgeyBvcGNvZGVzIH0gZnJvbSAnLi4vLi4vJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrKHNjcmlwdDogQnVmZmVyIHwgQXJyYXk8bnVtYmVyIHwgQnVmZmVyPik6IGJvb2xlYW4ge1xuICBjb25zdCBidWZmZXIgPSBic2NyaXB0LmNvbXBpbGUoc2NyaXB0KTtcblxuICByZXR1cm4gYnVmZmVyLmxlbmd0aCA9PT0gMzQgJiYgYnVmZmVyWzBdID09PSBvcGNvZGVzLk9QXzAgJiYgYnVmZmVyWzFdID09PSAweDIwO1xufVxuY2hlY2sudG9KU09OID0gKCk6IHN0cmluZyA9PiB7XG4gIHJldHVybiAnV2l0bmVzcyBzY3JpcHRIYXNoIG91dHB1dCc7XG59O1xuIl19
@@ -1,4 +1,5 @@
1
1
  export * from './keys';
2
2
  export * from './mock';
3
3
  export * from './psbt';
4
+ export * from './transaction';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testutil/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,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];
@@ -13,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
13
17
  __exportStar(require("./keys"), exports);
14
18
  __exportStar(require("./mock"), exports);
15
19
  __exportStar(require("./psbt"), exports);
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEseUNBQXVCO0FBQ3ZCLHlDQUF1QjtBQUN2Qix5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2tleXMnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2NrJztcbmV4cG9ydCAqIGZyb20gJy4vcHNidCc7XG4iXX0=
20
+ __exportStar(require("./transaction"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHV0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUF1QjtBQUN2Qix5Q0FBdUI7QUFDdkIseUNBQXVCO0FBQ3ZCLGdEQUE4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4va2V5cyc7XG5leHBvcnQgKiBmcm9tICcuL21vY2snO1xuZXhwb3J0ICogZnJvbSAnLi9wc2J0JztcbmV4cG9ydCAqIGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuIl19
@@ -1,9 +1,11 @@
1
- import { BIP32Interface } from 'bip32';
2
- import { Triple } from '../bitgo';
3
- import { RootWalletKeys } from '../bitgo';
4
- export declare type KeyTriple = Triple<BIP32Interface>;
1
+ import { Triple } from '../bitgo/types';
2
+ import { RootWalletKeys } from '../bitgo/wallet/WalletKeys';
3
+ import { BIP32Interface, ECPairInterface } from '@bitgo-beta/secp256k1';
4
+ export type KeyTriple = Triple<BIP32Interface>;
5
+ export type UncompressedKeyTriple = Triple<ECPairInterface>;
5
6
  export declare function getKey(seed: string): BIP32Interface;
6
7
  export declare function getKeyTriple(seed: string): KeyTriple;
8
+ export declare function getUncompressedKeyTriple(inputs: Triple<number>): UncompressedKeyTriple;
7
9
  export declare function getKeyName(triple: Triple<BIP32Interface>, k: BIP32Interface): string | undefined;
8
10
  export declare function getDefaultCosigner<T>(keyset: Triple<T>, signer: T): T;
9
11
  export declare function getDefaultWalletKeys(): RootWalletKeys;
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/testutil/keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,cAAc,EAAE,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAK1C,oBAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAE/C,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAarE;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../src/testutil/keys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAA0B,cAAc,EAAe,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7G,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;AAE5D,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD;AAaD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,qBAAqB,CAEtF;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEhG;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAarE;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
@@ -1,23 +1,38 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getDefaultWalletKeys = exports.getDefaultCosigner = exports.getKeyName = exports.getKeyTriple = exports.getKey = void 0;
4
- const bip32_1 = require("bip32");
3
+ exports.getKey = getKey;
4
+ exports.getKeyTriple = getKeyTriple;
5
+ exports.getUncompressedKeyTriple = getUncompressedKeyTriple;
6
+ exports.getKeyName = getKeyName;
7
+ exports.getDefaultCosigner = getDefaultCosigner;
8
+ exports.getDefaultWalletKeys = getDefaultWalletKeys;
5
9
  const crypto = require("crypto");
6
- const bitgo_1 = require("../bitgo");
7
- const noble_ecc_1 = require("../noble_ecc");
8
- const bip32 = bip32_1.BIP32Factory(noble_ecc_1.ecc);
10
+ const WalletKeys_1 = require("../bitgo/wallet/WalletKeys");
11
+ const secp256k1_1 = require("@bitgo-beta/secp256k1");
12
+ const networks_1 = require("../networks");
13
+ const bip32 = (0, secp256k1_1.BIP32Factory)(secp256k1_1.ecc);
9
14
  function getKey(seed) {
10
15
  return bip32.fromSeed(crypto.createHash('sha256').update(seed).digest());
11
16
  }
12
- exports.getKey = getKey;
13
17
  function getKeyTriple(seed) {
14
18
  return [getKey(seed + '.0'), getKey(seed + '.1'), getKey(seed + '.2')];
15
19
  }
16
- exports.getKeyTriple = getKeyTriple;
20
+ function getUncompressedKey(input) {
21
+ // Using input for deterministic randomness
22
+ return secp256k1_1.ECPair.makeRandom({
23
+ compressed: false,
24
+ network: networks_1.networks.testnet,
25
+ rng: () => {
26
+ return Buffer.alloc(32, input);
27
+ },
28
+ });
29
+ }
30
+ function getUncompressedKeyTriple(inputs) {
31
+ return [getUncompressedKey(inputs[0]), getUncompressedKey(inputs[1]), getUncompressedKey(inputs[2])];
32
+ }
17
33
  function getKeyName(triple, k) {
18
34
  return ['user', 'backup', 'bitgo'][triple.indexOf(k)];
19
35
  }
20
- exports.getKeyName = getKeyName;
21
36
  function getDefaultCosigner(keyset, signer) {
22
37
  const eq = (a, b) => a === b || (Buffer.isBuffer(a) && Buffer.isBuffer(b) && a.equals(b));
23
38
  const [user, backup, bitgo] = keyset;
@@ -32,9 +47,7 @@ function getDefaultCosigner(keyset, signer) {
32
47
  }
33
48
  throw new Error(`signer not in pubkeys`);
34
49
  }
35
- exports.getDefaultCosigner = getDefaultCosigner;
36
50
  function getDefaultWalletKeys() {
37
- return new bitgo_1.RootWalletKeys(getKeyTriple('default'));
51
+ return new WalletKeys_1.RootWalletKeys(getKeyTriple('default'));
38
52
  }
39
- exports.getDefaultWalletKeys = getDefaultWalletKeys;
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlDQUErRDtBQUMvRCxpQ0FBaUM7QUFHakMsb0NBQTBDO0FBQzFDLDRDQUFtQztBQUVuQyxNQUFNLEtBQUssR0FBYSxvQkFBWSxDQUFDLGVBQUcsQ0FBQyxDQUFDO0FBSTFDLFNBQWdCLE1BQU0sQ0FBQyxJQUFZO0lBQ2pDLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFGRCx3QkFFQztBQUVELFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFGRCxvQ0FFQztBQUVELFNBQWdCLFVBQVUsQ0FBQyxNQUE4QixFQUFFLENBQWlCO0lBQzFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRkQsZ0NBRUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBSSxNQUFpQixFQUFFLE1BQVM7SUFDaEUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFJLEVBQUUsQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDckMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUU7UUFDdEIsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNyQixPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFiRCxnREFhQztBQUVELFNBQWdCLG9CQUFvQjtJQUNsQyxPQUFPLElBQUksc0JBQWMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztBQUNyRCxDQUFDO0FBRkQsb0RBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkFQSSwgQklQMzJGYWN0b3J5LCBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcbmltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuLi9iaXRnbyc7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4uL2JpdGdvJztcbmltcG9ydCB7IGVjYyB9IGZyb20gJy4uL25vYmxlX2VjYyc7XG5cbmNvbnN0IGJpcDMyOiBCSVAzMkFQSSA9IEJJUDMyRmFjdG9yeShlY2MpO1xuXG5leHBvcnQgdHlwZSBLZXlUcmlwbGUgPSBUcmlwbGU8QklQMzJJbnRlcmZhY2U+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5KHNlZWQ6IHN0cmluZyk6IEJJUDMySW50ZXJmYWNlIHtcbiAgcmV0dXJuIGJpcDMyLmZyb21TZWVkKGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoc2VlZCkuZGlnZXN0KCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5VHJpcGxlKHNlZWQ6IHN0cmluZyk6IEtleVRyaXBsZSB7XG4gIHJldHVybiBbZ2V0S2V5KHNlZWQgKyAnLjAnKSwgZ2V0S2V5KHNlZWQgKyAnLjEnKSwgZ2V0S2V5KHNlZWQgKyAnLjInKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRLZXlOYW1lKHRyaXBsZTogVHJpcGxlPEJJUDMySW50ZXJmYWNlPiwgazogQklQMzJJbnRlcmZhY2UpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gWyd1c2VyJywgJ2JhY2t1cCcsICdiaXRnbyddW3RyaXBsZS5pbmRleE9mKGspXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDb3NpZ25lcjxUPihrZXlzZXQ6IFRyaXBsZTxUPiwgc2lnbmVyOiBUKTogVCB7XG4gIGNvbnN0IGVxID0gKGE6IFQsIGI6IFQpID0+IGEgPT09IGIgfHwgKEJ1ZmZlci5pc0J1ZmZlcihhKSAmJiBCdWZmZXIuaXNCdWZmZXIoYikgJiYgYS5lcXVhbHMoYikpO1xuICBjb25zdCBbdXNlciwgYmFja3VwLCBiaXRnb10gPSBrZXlzZXQ7XG4gIGlmIChlcShzaWduZXIsIHVzZXIpKSB7XG4gICAgcmV0dXJuIGJpdGdvO1xuICB9XG4gIGlmIChlcShzaWduZXIsIGJhY2t1cCkpIHtcbiAgICByZXR1cm4gYml0Z287XG4gIH1cbiAgaWYgKGVxKHNpZ25lciwgYml0Z28pKSB7XG4gICAgcmV0dXJuIHVzZXI7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbm90IGluIHB1YmtleXNgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRXYWxsZXRLZXlzKCk6IFJvb3RXYWxsZXRLZXlzIHtcbiAgcmV0dXJuIG5ldyBSb290V2FsbGV0S2V5cyhnZXRLZXlUcmlwbGUoJ2RlZmF1bHQnKSk7XG59XG4iXX0=
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9rZXlzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBWUEsd0JBRUM7QUFFRCxvQ0FFQztBQWFELDREQUVDO0FBRUQsZ0NBRUM7QUFFRCxnREFhQztBQUVELG9EQUVDO0FBeERELGlDQUFpQztBQUdqQywyREFBNEQ7QUFDNUQscURBQTZHO0FBQzdHLDBDQUF1QztBQUV2QyxNQUFNLEtBQUssR0FBYSxJQUFBLHdCQUFZLEVBQUMsZUFBRyxDQUFDLENBQUM7QUFLMUMsU0FBZ0IsTUFBTSxDQUFDLElBQVk7SUFDakMsT0FBTyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDM0UsQ0FBQztBQUVELFNBQWdCLFlBQVksQ0FBQyxJQUFZO0lBQ3ZDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQ3pFLENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEtBQUs7SUFDL0IsMkNBQTJDO0lBQzNDLE9BQU8sa0JBQU0sQ0FBQyxVQUFVLENBQUM7UUFDdkIsVUFBVSxFQUFFLEtBQUs7UUFDakIsT0FBTyxFQUFFLG1CQUFRLENBQUMsT0FBTztRQUN6QixHQUFHLEVBQUUsR0FBVyxFQUFFO1lBQ2hCLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQztLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxNQUFzQjtJQUM3RCxPQUFPLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2RyxDQUFDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLE1BQThCLEVBQUUsQ0FBaUI7SUFDMUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFFRCxTQUFnQixrQkFBa0IsQ0FBSSxNQUFpQixFQUFFLE1BQVM7SUFDaEUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFJLEVBQUUsQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7SUFDckMsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsSUFBSSxFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFnQixvQkFBb0I7SUFDbEMsT0FBTyxJQUFJLDJCQUFjLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuXG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuLi9iaXRnby90eXBlcyc7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4uL2JpdGdvL3dhbGxldC9XYWxsZXRLZXlzJztcbmltcG9ydCB7IEJJUDMyQVBJLCBCSVAzMkZhY3RvcnksIEJJUDMySW50ZXJmYWNlLCBlY2MsIEVDUGFpciwgRUNQYWlySW50ZXJmYWNlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2VjcDI1NmsxJztcbmltcG9ydCB7IG5ldHdvcmtzIH0gZnJvbSAnLi4vbmV0d29ya3MnO1xuXG5jb25zdCBiaXAzMjogQklQMzJBUEkgPSBCSVAzMkZhY3RvcnkoZWNjKTtcblxuZXhwb3J0IHR5cGUgS2V5VHJpcGxlID0gVHJpcGxlPEJJUDMySW50ZXJmYWNlPjtcbmV4cG9ydCB0eXBlIFVuY29tcHJlc3NlZEtleVRyaXBsZSA9IFRyaXBsZTxFQ1BhaXJJbnRlcmZhY2U+O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5KHNlZWQ6IHN0cmluZyk6IEJJUDMySW50ZXJmYWNlIHtcbiAgcmV0dXJuIGJpcDMyLmZyb21TZWVkKGNyeXB0by5jcmVhdGVIYXNoKCdzaGEyNTYnKS51cGRhdGUoc2VlZCkuZGlnZXN0KCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5VHJpcGxlKHNlZWQ6IHN0cmluZyk6IEtleVRyaXBsZSB7XG4gIHJldHVybiBbZ2V0S2V5KHNlZWQgKyAnLjAnKSwgZ2V0S2V5KHNlZWQgKyAnLjEnKSwgZ2V0S2V5KHNlZWQgKyAnLjInKV07XG59XG5cbmZ1bmN0aW9uIGdldFVuY29tcHJlc3NlZEtleShpbnB1dCkge1xuICAvLyBVc2luZyBpbnB1dCBmb3IgZGV0ZXJtaW5pc3RpYyByYW5kb21uZXNzXG4gIHJldHVybiBFQ1BhaXIubWFrZVJhbmRvbSh7XG4gICAgY29tcHJlc3NlZDogZmFsc2UsXG4gICAgbmV0d29yazogbmV0d29ya3MudGVzdG5ldCxcbiAgICBybmc6ICgpOiBCdWZmZXIgPT4ge1xuICAgICAgcmV0dXJuIEJ1ZmZlci5hbGxvYygzMiwgaW5wdXQpO1xuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VW5jb21wcmVzc2VkS2V5VHJpcGxlKGlucHV0czogVHJpcGxlPG51bWJlcj4pOiBVbmNvbXByZXNzZWRLZXlUcmlwbGUge1xuICByZXR1cm4gW2dldFVuY29tcHJlc3NlZEtleShpbnB1dHNbMF0pLCBnZXRVbmNvbXByZXNzZWRLZXkoaW5wdXRzWzFdKSwgZ2V0VW5jb21wcmVzc2VkS2V5KGlucHV0c1syXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0S2V5TmFtZSh0cmlwbGU6IFRyaXBsZTxCSVAzMkludGVyZmFjZT4sIGs6IEJJUDMySW50ZXJmYWNlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIFsndXNlcicsICdiYWNrdXAnLCAnYml0Z28nXVt0cmlwbGUuaW5kZXhPZihrKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0Q29zaWduZXI8VD4oa2V5c2V0OiBUcmlwbGU8VD4sIHNpZ25lcjogVCk6IFQge1xuICBjb25zdCBlcSA9IChhOiBULCBiOiBUKSA9PiBhID09PSBiIHx8IChCdWZmZXIuaXNCdWZmZXIoYSkgJiYgQnVmZmVyLmlzQnVmZmVyKGIpICYmIGEuZXF1YWxzKGIpKTtcbiAgY29uc3QgW3VzZXIsIGJhY2t1cCwgYml0Z29dID0ga2V5c2V0O1xuICBpZiAoZXEoc2lnbmVyLCB1c2VyKSkge1xuICAgIHJldHVybiBiaXRnbztcbiAgfVxuICBpZiAoZXEoc2lnbmVyLCBiYWNrdXApKSB7XG4gICAgcmV0dXJuIGJpdGdvO1xuICB9XG4gIGlmIChlcShzaWduZXIsIGJpdGdvKSkge1xuICAgIHJldHVybiB1c2VyO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgc2lnbmVyIG5vdCBpbiBwdWJrZXlzYCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWZhdWx0V2FsbGV0S2V5cygpOiBSb290V2FsbGV0S2V5cyB7XG4gIHJldHVybiBuZXcgUm9vdFdhbGxldEtleXMoZ2V0S2V5VHJpcGxlKCdkZWZhdWx0JykpO1xufVxuIl19
@@ -1,8 +1,7 @@
1
- /// <reference types="node" />
2
- import { BIP32Interface } from 'bip32';
1
+ import { BIP32Interface } from '@bitgo-beta/secp256k1';
3
2
  import { Network } from '../networks';
4
3
  import { ChainCode, NonWitnessWalletUnspent, outputScripts, RootWalletKeys, Unspent, UnspentWithPrevTx, UtxoTransaction, WalletUnspent } from '../bitgo';
5
- export declare type InputType = outputScripts.ScriptType2Of3;
4
+ export type InputType = outputScripts.ScriptType2Of3;
6
5
  export declare function mockPrevTx(vout: number, outputScript: Buffer, value: bigint, network: Network): UtxoTransaction<bigint>;
7
6
  export declare const replayProtectionKeyPair: BIP32Interface;
8
7
  export declare function isReplayProtectionUnspent<TNumber extends bigint | number>(u: Unspent<TNumber>, network: Network): boolean;
@@ -17,5 +16,5 @@ export declare function mockWalletUnspent<TNumber extends number | bigint>(netwo
17
16
  vout?: number;
18
17
  id?: string;
19
18
  }): WalletUnspent<TNumber> | NonWitnessWalletUnspent<TNumber>;
20
- export declare function mockUnspents<TNumber extends number | bigint>(rootWalletKeys: RootWalletKeys, inputScriptTypes: InputType[], testOutputAmount: TNumber, network: Network): WalletUnspent<TNumber>[];
19
+ export declare function mockUnspents<TNumber extends number | bigint>(rootWalletKeys: RootWalletKeys, inputScriptTypes: (InputType | outputScripts.ScriptTypeP2shP2pk)[], testOutputAmount: TNumber, network: Network): (Unspent<TNumber> | WalletUnspent<TNumber>)[];
21
20
  //# sourceMappingURL=mock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/testutil/mock.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,EAAc,OAAO,EAAY,MAAM,aAAa,CAAC;AAE5D,OAAO,EACL,SAAS,EAMT,uBAAuB,EACvB,aAAa,EACb,cAAc,EAEd,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,aAAa,EACd,MAAM,UAAU,CAAC;AAMlB,oBAAY,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC;AAErD,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,eAAe,CAAC,MAAM,CAAC,CA6BzB;AAED,eAAO,MAAM,uBAAuB,gBAA8B,CAAC;AAGnE,wBAAgB,yBAAyB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACvE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAET;AAED,wBAAgB,2BAA2B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACzE,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,EAAE,GAA6B,EAAE,IAAQ,EAAE,GAAE;IAAE,GAAG,CAAC,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACxF,iBAAiB,CAAC,OAAO,CAAC,CAI5B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/D,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,EACE,KAAS,EACT,KAAS,EACT,IAA6B,EAC7B,IAAQ,EACR,EAAE,GACH,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/F,aAAa,CAAC,OAAO,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,CA0B3D;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,SAAS,EAAE,EAC7B,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,GACf,aAAa,CAAC,OAAO,CAAC,EAAE,CAW1B"}
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/testutil/mock.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAc,OAAO,EAAY,MAAM,aAAa,CAAC;AAE5D,OAAO,EACL,SAAS,EAOT,uBAAuB,EACvB,aAAa,EACb,cAAc,EAEd,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,aAAa,EACd,MAAM,UAAU,CAAC;AAMlB,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,cAAc,CAAC;AAErD,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,eAAe,CAAC,MAAM,CAAC,CA6BzB;AAED,eAAO,MAAM,uBAAuB,gBAA8B,CAAC;AAGnE,wBAAgB,yBAAyB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACvE,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAET;AAED,wBAAgB,2BAA2B,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EACzE,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,EAAE,GAA6B,EAAE,IAAQ,EAAE,GAAE;IAAE,GAAG,CAAC,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GACxF,iBAAiB,CAAC,OAAO,CAAC,CAI5B;AAED,wBAAgB,iBAAiB,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC/D,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EACd,EACE,KAAS,EACT,KAAS,EACT,IAA6B,EAC7B,IAAQ,EACR,EAAE,GACH,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,cAAc,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/F,aAAa,CAAC,OAAO,CAAC,GAAG,uBAAuB,CAAC,OAAO,CAAC,CA0B3D;AAED,wBAAgB,YAAY,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,EAC1D,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,EAAE,EAClE,gBAAgB,EAAE,OAAO,EACzB,OAAO,EAAE,OAAO,GACf,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,EAAE,CAgB/C"}
@@ -1,18 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mockUnspents = exports.mockWalletUnspent = exports.mockReplayProtectionUnspent = exports.isReplayProtectionUnspent = exports.replayProtectionKeyPair = exports.mockPrevTx = void 0;
4
- const noble = require("@noble/secp256k1");
5
- const utxolib = require("..");
3
+ exports.replayProtectionKeyPair = void 0;
4
+ exports.mockPrevTx = mockPrevTx;
5
+ exports.isReplayProtectionUnspent = isReplayProtectionUnspent;
6
+ exports.mockReplayProtectionUnspent = mockReplayProtectionUnspent;
7
+ exports.mockWalletUnspent = mockWalletUnspent;
8
+ exports.mockUnspents = mockUnspents;
9
+ const assert_1 = require("assert");
10
+ const __1 = require("..");
6
11
  const networks_1 = require("../networks");
7
12
  const bitgo_1 = require("../bitgo");
8
13
  const address_1 = require("../address");
9
14
  const outputScripts_1 = require("../bitgo/outputScripts");
10
15
  const keys_1 = require("./keys");
11
16
  function mockPrevTx(vout, outputScript, value, network) {
12
- const psbtFromNetwork = bitgo_1.createPsbtForNetwork({ network });
13
- const privKey = noble.utils.randomPrivateKey();
14
- const pubkey = Buffer.from(noble.getPublicKey(privKey, true));
15
- const payment = utxolib.payments.p2wpkh({ pubkey });
17
+ const psbtFromNetwork = (0, bitgo_1.createPsbtForNetwork)({ network });
18
+ const keypair = (0, keys_1.getKey)('mock-prev-tx');
19
+ const pubkey = keypair.publicKey;
20
+ (0, assert_1.ok)(keypair.privateKey);
21
+ const payment = __1.payments.p2pkh({ pubkey });
16
22
  const destOutput = payment.output;
17
23
  if (!destOutput)
18
24
  throw new Error('Impossible, payment we just constructed has no output');
@@ -29,38 +35,35 @@ function mockPrevTx(vout, outputScript, value, network) {
29
35
  index: 0,
30
36
  witnessUtxo: { script: destOutput, value: value * (BigInt(vout) + BigInt(1)) + BigInt(1000) },
31
37
  });
32
- psbtFromNetwork.signInput(0, {
33
- publicKey: pubkey,
34
- sign: (hash, lowR) => Buffer.from(noble.signSync(hash, privKey, { canonical: !lowR, der: false })),
38
+ // Don't require the prevTx for signing and finalizing for non-segwit input
39
+ (0, bitgo_1.withUnsafeNonSegwit)(psbtFromNetwork, () => {
40
+ psbtFromNetwork.signInput(0, keypair);
41
+ psbtFromNetwork.validateSignaturesOfAllInputs();
42
+ psbtFromNetwork.finalizeAllInputs();
35
43
  });
36
- psbtFromNetwork.validateSignaturesOfAllInputs();
37
- psbtFromNetwork.finalizeAllInputs();
38
44
  return psbtFromNetwork.extractTransaction();
39
45
  }
40
- exports.mockPrevTx = mockPrevTx;
41
- exports.replayProtectionKeyPair = keys_1.getKey('replay-protection');
42
- const replayProtectionScriptPubKey = outputScripts_1.createOutputScriptP2shP2pk(exports.replayProtectionKeyPair.publicKey).scriptPubKey;
46
+ exports.replayProtectionKeyPair = (0, keys_1.getKey)('replay-protection');
47
+ const replayProtectionScriptPubKey = (0, outputScripts_1.createOutputScriptP2shP2pk)(exports.replayProtectionKeyPair.publicKey).scriptPubKey;
43
48
  function isReplayProtectionUnspent(u, network) {
44
- return u.address === address_1.fromOutputScript(replayProtectionScriptPubKey, network);
49
+ return u.address === (0, address_1.fromOutputScript)(replayProtectionScriptPubKey, network);
45
50
  }
46
- exports.isReplayProtectionUnspent = isReplayProtectionUnspent;
47
51
  function mockReplayProtectionUnspent(network, value, { key = exports.replayProtectionKeyPair, vout = 0 } = {}) {
48
- const outputScript = outputScripts_1.createOutputScriptP2shP2pk(key.publicKey).scriptPubKey;
52
+ const outputScript = (0, outputScripts_1.createOutputScriptP2shP2pk)(key.publicKey).scriptPubKey;
49
53
  const prevTransaction = mockPrevTx(vout, outputScript, BigInt(value), network);
50
- return { ...bitgo_1.fromOutputWithPrevTx(prevTransaction, vout), value };
54
+ return { ...(0, bitgo_1.fromOutputWithPrevTx)(prevTransaction, vout), value };
51
55
  }
52
- exports.mockReplayProtectionUnspent = mockReplayProtectionUnspent;
53
- function mockWalletUnspent(network, value, { chain = 0, index = 0, keys = keys_1.getDefaultWalletKeys(), vout = 0, id, } = {}) {
56
+ function mockWalletUnspent(network, value, { chain = 0, index = 0, keys = (0, keys_1.getDefaultWalletKeys)(), vout = 0, id, } = {}) {
54
57
  const derivedKeys = keys.deriveForChainAndIndex(chain, index);
55
- const address = address_1.fromOutputScript(outputScripts_1.createOutputScript2of3(derivedKeys.publicKeys, bitgo_1.scriptTypeForChain(chain)).scriptPubKey, network);
58
+ const address = (0, address_1.fromOutputScript)((0, outputScripts_1.createOutputScript2of3)(derivedKeys.publicKeys, (0, bitgo_1.scriptTypeForChain)(chain)).scriptPubKey, network);
56
59
  if (id && typeof id === 'string') {
57
60
  return { id, address, chain, index, value };
58
61
  }
59
62
  else {
60
- const prevTransaction = mockPrevTx(vout, outputScripts_1.createOutputScript2of3(derivedKeys.publicKeys, bitgo_1.scriptTypeForChain(chain), network).scriptPubKey, BigInt(value), network);
61
- const unspent = bitgo_1.isSegwit(chain) || networks_1.getMainnet(network) === networks_1.networks.zcash
62
- ? bitgo_1.fromOutput(prevTransaction, vout)
63
- : bitgo_1.fromOutputWithPrevTx(prevTransaction, vout);
63
+ const prevTransaction = mockPrevTx(vout, (0, outputScripts_1.createOutputScript2of3)(derivedKeys.publicKeys, (0, bitgo_1.scriptTypeForChain)(chain), network).scriptPubKey, BigInt(value), network);
64
+ const unspent = (0, bitgo_1.isSegwit)(chain) || (0, networks_1.getMainnet)(network) === networks_1.networks.zcash
65
+ ? (0, bitgo_1.fromOutput)(prevTransaction, vout)
66
+ : (0, bitgo_1.fromOutputWithPrevTx)(prevTransaction, vout);
64
67
  return {
65
68
  ...unspent,
66
69
  chain,
@@ -69,18 +72,22 @@ function mockWalletUnspent(network, value, { chain = 0, index = 0, keys = keys_1
69
72
  };
70
73
  }
71
74
  }
72
- exports.mockWalletUnspent = mockWalletUnspent;
73
75
  function mockUnspents(rootWalletKeys, inputScriptTypes, testOutputAmount, network) {
74
76
  return inputScriptTypes.map((t, i) => {
75
77
  if (bitgo_1.outputScripts.isScriptType2Of3(t)) {
76
78
  return mockWalletUnspent(network, testOutputAmount, {
77
79
  keys: rootWalletKeys,
78
- chain: bitgo_1.getExternalChainCode(t),
80
+ chain: (0, bitgo_1.getExternalChainCode)(t),
81
+ vout: i,
82
+ });
83
+ }
84
+ else if (t === bitgo_1.outputScripts.scriptTypeP2shP2pk) {
85
+ return mockReplayProtectionUnspent(network, testOutputAmount, {
86
+ key: exports.replayProtectionKeyPair,
79
87
  vout: i,
80
88
  });
81
89
  }
82
90
  throw new Error(`invalid input type ${t}`);
83
91
  });
84
92
  }
85
- exports.mockUnspents = mockUnspents;
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBDQUEwQztBQUMxQyw4QkFBOEI7QUFDOUIsMENBQTREO0FBRTVELG9DQWVrQjtBQUNsQix3Q0FBOEM7QUFDOUMsMERBQTRGO0FBRTVGLGlDQUFzRDtBQUl0RCxTQUFnQixVQUFVLENBQ3hCLElBQVksRUFDWixZQUFvQixFQUNwQixLQUFhLEVBQ2IsT0FBZ0I7SUFFaEIsTUFBTSxlQUFlLEdBQUcsNEJBQW9CLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRTFELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3BELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDbEMsSUFBSSxDQUFDLFVBQVU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFFMUYsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUMxQyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDbEIsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUM1RDthQUFNO1lBQ0wsZUFBZSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENB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VUFBVSxFQUFFLDBCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFDL0YsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUNiLE9BQU8sQ0FDUixDQUFDO1FBQ0YsTUFBTSxPQUFPLEdBQ1gsZ0JBQVEsQ0FBQyxLQUFLLENBQUMsSUFBSSxxQkFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLG1CQUFRLENBQUMsS0FBSztZQUN2RCxDQUFDLENBQUMsa0JBQVUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDO1lBQ25DLENBQUMsQ0FBQyw0QkFBb0IsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEQsT0FBTztZQUNMLEdBQUcsT0FBTztZQUNWLEtBQUs7WUFDTCxLQUFLO1lBQ0wsS0FBSztTQUNOLENBQUM7S0FDSDtBQUNILENBQUM7QUFwQ0QsOENBb0NDO0FBRUQsU0FBZ0IsWUFBWSxDQUMxQixjQUE4QixFQUM5QixnQkFBNkIsRUFDN0IsZ0JBQXlCLEVBQ3pCLE9BQWdCO0lBRWhCLE9BQU8sZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBMEIsRUFBRTtRQUMzRCxJQUFJLHFCQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDckMsT0FBTyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ2xELElBQUksRUFBRSxjQUFjO2dCQUNwQixLQUFLLEVBQUUsNEJBQW9CLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLEVBQUUsQ0FBQzthQUNSLENBQUMsQ0FBQztTQUNKO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFoQkQsb0NBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdiaXAzMic7XG5pbXBvcnQgKiBhcyBub2JsZSBmcm9tICdAbm9ibGUvc2VjcDI1NmsxJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnLi4nO1xuaW1wb3J0IHsgZ2V0TWFpbm5ldCwgTmV0d29yaywgbmV0d29ya3MgfSBmcm9tICcuLi9uZXR3b3Jrcyc7XG5cbmltcG9ydCB7XG4gIENoYWluQ29kZSxcbiAgY3JlYXRlUHNidEZvck5ldHdvcmssXG4gIGZyb21PdXRwdXQsXG4gIGZyb21PdXRwdXRXaXRoUHJldlR4LFxuICBnZXRFeHRlcm5hbENoYWluQ29kZSxcbiAgaXNTZWd3aXQsXG4gIE5vbldpdG5lc3NXYWxsZXRVbnNwZW50LFxuICBvdXRwdXRTY3JpcHRzLFxuICBSb290V2FsbGV0S2V5cyxcbiAgc2NyaXB0VHlwZUZvckNoYWluLFxuICBVbnNwZW50LFxuICBVbnNwZW50V2l0aFByZXZUeCxcbiAgVXR4b1RyYW5zYWN0aW9uLFxuICBXYWxsZXRVbnNwZW50LFxufSBmcm9tICcuLi9iaXRnbyc7XG5pbXBvcnQgeyBmcm9tT3V0cHV0U2NyaXB0IH0gZnJvbSAnLi4vYWRkcmVzcyc7XG5pbXBvcnQgeyBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzLCBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayB9IGZyb20gJy4uL2JpdGdvL291dHB1dFNjcmlwdHMnO1xuXG5pbXBvcnQgeyBnZXREZWZhdWx0V2FsbGV0S2V5cywgZ2V0S2V5IH0gZnJvbSAnLi9rZXlzJztcblxuZXhwb3J0IHR5cGUgSW5wdXRUeXBlID0gb3V0cHV0U2NyaXB0cy5TY3JpcHRUeXBlMk9mMztcblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tQcmV2VHgoXG4gIHZvdXQ6IG51bWJlcixcbiAgb3V0cHV0U2NyaXB0OiBCdWZmZXIsXG4gIHZhbHVlOiBiaWdpbnQsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IFV0eG9UcmFuc2FjdGlvbjxiaWdpbnQ+IHtcbiAgY29uc3QgcHNidEZyb21OZXR3b3JrID0gY3JlYXRlUHNidEZvck5ldHdvcmsoeyBuZXR3b3JrIH0pO1xuXG4gIGNvbnN0IHByaXZLZXkgPSBub2JsZS51dGlscy5yYW5kb21Qcml2YXRlS2V5KCk7XG4gIGNvbnN0IHB1YmtleSA9IEJ1ZmZlci5mcm9tKG5vYmxlLmdldFB1YmxpY0tleShwcml2S2V5LCB0cnVlKSk7XG4gIGNvbnN0IHBheW1lbnQgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7IHB1YmtleSB9KTtcbiAgY29uc3QgZGVzdE91dHB1dCA9IHBheW1lbnQub3V0cHV0O1xuICBpZiAoIWRlc3RPdXRwdXQpIHRocm93IG5ldyBFcnJvcignSW1wb3NzaWJsZSwgcGF5bWVudCB3ZSBqdXN0IGNvbnN0cnVjdGVkIGhhcyBubyBvdXRwdXQnKTtcblxuICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDw9IHZvdXQ7IGluZGV4KyspIHtcbiAgICBpZiAoaW5kZXggPT09IHZvdXQpIHtcbiAgICAgIHBzYnRGcm9tTmV0d29yay5hZGRPdXRwdXQoeyBzY3JpcHQ6IG91dHB1dFNjcmlwdCwgdmFsdWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBzYnRGcm9tTmV0d29yay5hZGRPdXRwdXQoeyBzY3JpcHQ6IGRlc3RPdXRwdXQsIHZhbHVlIH0pO1xuICAgIH1cbiAgfVxuICBwc2J0RnJvbU5ldHdvcmsuYWRkSW5wdXQoe1xuICAgIGhhc2g6IEJ1ZmZlci5hbGxvYygzMiwgMHgwMSksXG4gICAgaW5kZXg6IDAsXG4gICAgd2l0bmVzc1V0eG86IHsgc2NyaXB0OiBkZXN0T3V0cHV0LCB2YWx1ZTogdmFsdWUgKiAoQmlnSW50KHZvdXQpICsgQmlnSW50KDEpKSArIEJpZ0ludCgxMDAwKSB9LFxuICB9KTtcbiAgcHNidEZyb21OZXR3b3JrLnNpZ25JbnB1dCgwLCB7XG4gICAgcHVibGljS2V5OiBwdWJrZXksXG4gICAgc2lnbjogKGhhc2g6IEJ1ZmZlciwgbG93Uj86IGJvb2xlYW4pID0+XG4gICAgICBCdWZmZXIuZnJvbShub2JsZS5zaWduU3luYyhoYXNoLCBwcml2S2V5LCB7IGNhbm9uaWNhbDogIWxvd1IsIGRlcjogZmFsc2UgfSkpLFxuICB9KTtcbiAgcHNidEZyb21OZXR3b3JrLnZhbGlkYXRlU2lnbmF0dXJlc09mQWxsSW5wdXRzKCk7XG4gIHBzYnRGcm9tTmV0d29yay5maW5hbGl6ZUFsbElucHV0cygpO1xuICByZXR1cm4gcHNidEZyb21OZXR3b3JrLmV4dHJhY3RUcmFuc2FjdGlvbigpIGFzIFV0eG9UcmFuc2FjdGlvbjxiaWdpbnQ+O1xufVxuXG5leHBvcnQgY29uc3QgcmVwbGF5UHJvdGVjdGlvbktleVBhaXIgPSBnZXRLZXkoJ3JlcGxheS1wcm90ZWN0aW9uJyk7XG5jb25zdCByZXBsYXlQcm90ZWN0aW9uU2NyaXB0UHViS2V5ID0gY3JlYXRlT3V0cHV0U2NyaXB0UDJzaFAycGsocmVwbGF5UHJvdGVjdGlvbktleVBhaXIucHVibGljS2V5KS5zY3JpcHRQdWJLZXk7XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlcGxheVByb3RlY3Rpb25VbnNwZW50PFROdW1iZXIgZXh0ZW5kcyBiaWdpbnQgfCBudW1iZXI+KFxuICB1OiBVbnNwZW50PFROdW1iZXI+LFxuICBuZXR3b3JrOiBOZXR3b3JrXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHUuYWRkcmVzcyA9PT0gZnJvbU91dHB1dFNjcmlwdChyZXBsYXlQcm90ZWN0aW9uU2NyaXB0UHViS2V5LCBuZXR3b3JrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tSZXBsYXlQcm90ZWN0aW9uVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgbnVtYmVyIHwgYmlnaW50PihcbiAgbmV0d29yazogTmV0d29yayxcbiAgdmFsdWU6IFROdW1iZXIsXG4gIHsga2V5ID0gcmVwbGF5UHJvdGVjdGlvbktleVBhaXIsIHZvdXQgPSAwIH06IHsga2V5PzogQklQMzJJbnRlcmZhY2U7IHZvdXQ/OiBudW1iZXIgfSA9IHt9XG4pOiBVbnNwZW50V2l0aFByZXZUeDxUTnVtYmVyPiB7XG4gIGNvbnN0IG91dHB1dFNjcmlwdCA9IGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrKGtleS5wdWJsaWNLZXkpLnNjcmlwdFB1YktleTtcbiAgY29uc3QgcHJldlRyYW5zYWN0aW9uID0gbW9ja1ByZXZUeCh2b3V0LCBvdXRwdXRTY3JpcHQsIEJpZ0ludCh2YWx1ZSksIG5ldHdvcmspO1xuICByZXR1cm4geyAuLi5mcm9tT3V0cHV0V2l0aFByZXZUeChwcmV2VHJhbnNhY3Rpb24sIHZvdXQpLCB2YWx1ZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1dhbGxldFVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHZhbHVlOiBUTnVtYmVyLFxuICB7XG4gICAgY2hhaW4gPSAwLFxuICAgIGluZGV4ID0gMCxcbiAgICBrZXlzID0gZ2V0RGVmYXVsdFdhbGxldEtleXMoKSxcbiAgICB2b3V0ID0gMCxcbiAgICBpZCxcbiAgfTogeyBjaGFpbj86IENoYWluQ29kZTsgaW5kZXg/OiBudW1iZXI7IGtleXM/OiBSb290V2FsbGV0S2V5czsgdm91dD86IG51bWJlcjsgaWQ/OiBzdHJpbmcgfSA9IHt9XG4pOiBXYWxsZXRVbnNwZW50PFROdW1iZXI+IHwgTm9uV2l0bmVzc1dhbGxldFVuc3BlbnQ8VE51bWJlcj4ge1xuICBjb25zdCBkZXJpdmVkS2V5cyA9IGtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpO1xuICBjb25zdCBhZGRyZXNzID0gZnJvbU91dHB1dFNjcmlwdChcbiAgICBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKGRlcml2ZWRLZXlzLnB1YmxpY0tleXMsIHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbikpLnNjcmlwdFB1YktleSxcbiAgICBuZXR3b3JrXG4gICk7XG4gIGlmIChpZCAmJiB0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHsgaWQsIGFkZHJlc3MsIGNoYWluLCBpbmRleCwgdmFsdWUgfTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwcmV2VHJhbnNhY3Rpb24gPSBtb2NrUHJldlR4KFxuICAgICAgdm91dCxcbiAgICAgIGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMoZGVyaXZlZEtleXMucHVibGljS2V5cywgc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKSwgbmV0d29yaykuc2NyaXB0UHViS2V5LFxuICAgICAgQmlnSW50KHZhbHVlKSxcbiAgICAgIG5ldHdvcmtcbiAgICApO1xuICAgIGNvbnN0IHVuc3BlbnQgPVxuICAgICAgaXNTZWd3aXQoY2hhaW4pIHx8IGdldE1haW5uZXQobmV0d29yaykgPT09IG5ldHdvcmtzLnpjYXNoXG4gICAgICAgID8gZnJvbU91dHB1dChwcmV2VHJhbnNhY3Rpb24sIHZvdXQpXG4gICAgICAgIDogZnJvbU91dHB1dFdpdGhQcmV2VHgocHJldlRyYW5zYWN0aW9uLCB2b3V0KTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4udW5zcGVudCxcbiAgICAgIGNoYWluLFxuICAgICAgaW5kZXgsXG4gICAgICB2YWx1ZSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrVW5zcGVudHM8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgaW5wdXRTY3JpcHRUeXBlczogSW5wdXRUeXBlW10sXG4gIHRlc3RPdXRwdXRBbW91bnQ6IFROdW1iZXIsXG4gIG5ldHdvcms6IE5ldHdvcmtcbik6IFdhbGxldFVuc3BlbnQ8VE51bWJlcj5bXSB7XG4gIHJldHVybiBpbnB1dFNjcmlwdFR5cGVzLm1hcCgodCwgaSk6IFdhbGxldFVuc3BlbnQ8VE51bWJlcj4gPT4ge1xuICAgIGlmIChvdXRwdXRTY3JpcHRzLmlzU2NyaXB0VHlwZTJPZjModCkpIHtcbiAgICAgIHJldHVybiBtb2NrV2FsbGV0VW5zcGVudChuZXR3b3JrLCB0ZXN0T3V0cHV0QW1vdW50LCB7XG4gICAgICAgIGtleXM6IHJvb3RXYWxsZXRLZXlzLFxuICAgICAgICBjaGFpbjogZ2V0RXh0ZXJuYWxDaGFpbkNvZGUodCksXG4gICAgICAgIHZvdXQ6IGksXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGlucHV0IHR5cGUgJHt0fWApO1xuICB9KTtcbn1cbiJdfQ==
93
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9jay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZXN0dXRpbC9tb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTZCQSxnQ0FrQ0M7QUFLRCw4REFLQztBQUVELGtFQVFDO0FBRUQsOENBb0NDO0FBRUQsb0NBcUJDO0FBaEpELG1DQUFzQztBQUV0QywwQkFBOEI7QUFDOUIsMENBQTREO0FBRTVELG9DQWdCa0I7QUFDbEIsd0NBQThDO0FBQzlDLDBEQUE0RjtBQUU1RixpQ0FBc0Q7QUFJdEQsU0FBZ0IsVUFBVSxDQUN4QixJQUFZLEVBQ1osWUFBb0IsRUFDcEIsS0FBYSxFQUNiLE9BQWdCO0lBRWhCLE1BQU0sZUFBZSxHQUFHLElBQUEsNEJBQW9CLEVBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBRTFELE1BQU0sT0FBTyxHQUFHLElBQUEsYUFBTSxFQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7SUFDakMsSUFBQSxXQUFNLEVBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sT0FBTyxHQUFHLFlBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzNDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7SUFDbEMsSUFBSSxDQUFDLFVBQVU7UUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7SUFFMUYsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO1FBQzNDLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25CLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQzthQUFNLENB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TUFBTSxJQUFJLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBvayBhcyBhc3NlcnQgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdAYml0Z28tYmV0YS9zZWNwMjU2azEnO1xuaW1wb3J0IHsgcGF5bWVudHMgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBnZXRNYWlubmV0LCBOZXR3b3JrLCBuZXR3b3JrcyB9IGZyb20gJy4uL25ldHdvcmtzJztcblxuaW1wb3J0IHtcbiAgQ2hhaW5Db2RlLFxuICB3aXRoVW5zYWZlTm9uU2Vnd2l0LFxuICBjcmVhdGVQc2J0Rm9yTmV0d29yayxcbiAgZnJvbU91dHB1dCxcbiAgZnJvbU91dHB1dFdpdGhQcmV2VHgsXG4gIGdldEV4dGVybmFsQ2hhaW5Db2RlLFxuICBpc1NlZ3dpdCxcbiAgTm9uV2l0bmVzc1dhbGxldFVuc3BlbnQsXG4gIG91dHB1dFNjcmlwdHMsXG4gIFJvb3RXYWxsZXRLZXlzLFxuICBzY3JpcHRUeXBlRm9yQ2hhaW4sXG4gIFVuc3BlbnQsXG4gIFVuc3BlbnRXaXRoUHJldlR4LFxuICBVdHhvVHJhbnNhY3Rpb24sXG4gIFdhbGxldFVuc3BlbnQsXG59IGZyb20gJy4uL2JpdGdvJztcbmltcG9ydCB7IGZyb21PdXRwdXRTY3JpcHQgfSBmcm9tICcuLi9hZGRyZXNzJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrIH0gZnJvbSAnLi4vYml0Z28vb3V0cHV0U2NyaXB0cyc7XG5cbmltcG9ydCB7IGdldERlZmF1bHRXYWxsZXRLZXlzLCBnZXRLZXkgfSBmcm9tICcuL2tleXMnO1xuXG5leHBvcnQgdHlwZSBJbnB1dFR5cGUgPSBvdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGUyT2YzO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1ByZXZUeChcbiAgdm91dDogbnVtYmVyLFxuICBvdXRwdXRTY3JpcHQ6IEJ1ZmZlcixcbiAgdmFsdWU6IGJpZ2ludCxcbiAgbmV0d29yazogTmV0d29ya1xuKTogVXR4b1RyYW5zYWN0aW9uPGJpZ2ludD4ge1xuICBjb25zdCBwc2J0RnJvbU5ldHdvcmsgPSBjcmVhdGVQc2J0Rm9yTmV0d29yayh7IG5ldHdvcmsgfSk7XG5cbiAgY29uc3Qga2V5cGFpciA9IGdldEtleSgnbW9jay1wcmV2LXR4Jyk7XG4gIGNvbnN0IHB1YmtleSA9IGtleXBhaXIucHVibGljS2V5O1xuICBhc3NlcnQoa2V5cGFpci5wcml2YXRlS2V5KTtcbiAgY29uc3QgcGF5bWVudCA9IHBheW1lbnRzLnAycGtoKHsgcHVia2V5IH0pO1xuICBjb25zdCBkZXN0T3V0cHV0ID0gcGF5bWVudC5vdXRwdXQ7XG4gIGlmICghZGVzdE91dHB1dCkgdGhyb3cgbmV3IEVycm9yKCdJbXBvc3NpYmxlLCBwYXltZW50IHdlIGp1c3QgY29uc3RydWN0ZWQgaGFzIG5vIG91dHB1dCcpO1xuXG4gIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPD0gdm91dDsgaW5kZXgrKykge1xuICAgIGlmIChpbmRleCA9PT0gdm91dCkge1xuICAgICAgcHNidEZyb21OZXR3b3JrLmFkZE91dHB1dCh7IHNjcmlwdDogb3V0cHV0U2NyaXB0LCB2YWx1ZSB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcHNidEZyb21OZXR3b3JrLmFkZE91dHB1dCh7IHNjcmlwdDogZGVzdE91dHB1dCwgdmFsdWUgfSk7XG4gICAgfVxuICB9XG4gIHBzYnRGcm9tTmV0d29yay5hZGRJbnB1dCh7XG4gICAgaGFzaDogQnVmZmVyLmFsbG9jKDMyLCAweDAxKSxcbiAgICBpbmRleDogMCxcbiAgICB3aXRuZXNzVXR4bzogeyBzY3JpcHQ6IGRlc3RPdXRwdXQsIHZhbHVlOiB2YWx1ZSAqIChCaWdJbnQodm91dCkgKyBCaWdJbnQoMSkpICsgQmlnSW50KDEwMDApIH0sXG4gIH0pO1xuICAvLyBEb24ndCByZXF1aXJlIHRoZSBwcmV2VHggZm9yIHNpZ25pbmcgYW5kIGZpbmFsaXppbmcgZm9yIG5vbi1zZWd3aXQgaW5wdXRcbiAgd2l0aFVuc2FmZU5vblNlZ3dpdChwc2J0RnJvbU5ldHdvcmssICgpID0+IHtcbiAgICBwc2J0RnJvbU5ldHdvcmsuc2lnbklucHV0KDAsIGtleXBhaXIpO1xuICAgIHBzYnRGcm9tTmV0d29yay52YWxpZGF0ZVNpZ25hdHVyZXNPZkFsbElucHV0cygpO1xuICAgIHBzYnRGcm9tTmV0d29yay5maW5hbGl6ZUFsbElucHV0cygpO1xuICB9KTtcbiAgcmV0dXJuIHBzYnRGcm9tTmV0d29yay5leHRyYWN0VHJhbnNhY3Rpb24oKTtcbn1cblxuZXhwb3J0IGNvbnN0IHJlcGxheVByb3RlY3Rpb25LZXlQYWlyID0gZ2V0S2V5KCdyZXBsYXktcHJvdGVjdGlvbicpO1xuY29uc3QgcmVwbGF5UHJvdGVjdGlvblNjcmlwdFB1YktleSA9IGNyZWF0ZU91dHB1dFNjcmlwdFAyc2hQMnBrKHJlcGxheVByb3RlY3Rpb25LZXlQYWlyLnB1YmxpY0tleSkuc2NyaXB0UHViS2V5O1xuXG5leHBvcnQgZnVuY3Rpb24gaXNSZXBsYXlQcm90ZWN0aW9uVW5zcGVudDxUTnVtYmVyIGV4dGVuZHMgYmlnaW50IHwgbnVtYmVyPihcbiAgdTogVW5zcGVudDxUTnVtYmVyPixcbiAgbmV0d29yazogTmV0d29ya1xuKTogYm9vbGVhbiB7XG4gIHJldHVybiB1LmFkZHJlc3MgPT09IGZyb21PdXRwdXRTY3JpcHQocmVwbGF5UHJvdGVjdGlvblNjcmlwdFB1YktleSwgbmV0d29yayk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQ8VE51bWJlciBleHRlbmRzIG51bWJlciB8IGJpZ2ludD4oXG4gIG5ldHdvcms6IE5ldHdvcmssXG4gIHZhbHVlOiBUTnVtYmVyLFxuICB7IGtleSA9IHJlcGxheVByb3RlY3Rpb25LZXlQYWlyLCB2b3V0ID0gMCB9OiB7IGtleT86IEJJUDMySW50ZXJmYWNlOyB2b3V0PzogbnVtYmVyIH0gPSB7fVxuKTogVW5zcGVudFdpdGhQcmV2VHg8VE51bWJlcj4ge1xuICBjb25zdCBvdXRwdXRTY3JpcHQgPSBjcmVhdGVPdXRwdXRTY3JpcHRQMnNoUDJwayhrZXkucHVibGljS2V5KS5zY3JpcHRQdWJLZXk7XG4gIGNvbnN0IHByZXZUcmFuc2FjdGlvbiA9IG1vY2tQcmV2VHgodm91dCwgb3V0cHV0U2NyaXB0LCBCaWdJbnQodmFsdWUpLCBuZXR3b3JrKTtcbiAgcmV0dXJuIHsgLi4uZnJvbU91dHB1dFdpdGhQcmV2VHgocHJldlRyYW5zYWN0aW9uLCB2b3V0KSwgdmFsdWUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vY2tXYWxsZXRVbnNwZW50PFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICBuZXR3b3JrOiBOZXR3b3JrLFxuICB2YWx1ZTogVE51bWJlcixcbiAge1xuICAgIGNoYWluID0gMCxcbiAgICBpbmRleCA9IDAsXG4gICAga2V5cyA9IGdldERlZmF1bHRXYWxsZXRLZXlzKCksXG4gICAgdm91dCA9IDAsXG4gICAgaWQsXG4gIH06IHsgY2hhaW4/OiBDaGFpbkNvZGU7IGluZGV4PzogbnVtYmVyOyBrZXlzPzogUm9vdFdhbGxldEtleXM7IHZvdXQ/OiBudW1iZXI7IGlkPzogc3RyaW5nIH0gPSB7fVxuKTogV2FsbGV0VW5zcGVudDxUTnVtYmVyPiB8IE5vbldpdG5lc3NXYWxsZXRVbnNwZW50PFROdW1iZXI+IHtcbiAgY29uc3QgZGVyaXZlZEtleXMgPSBrZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KTtcbiAgY29uc3QgYWRkcmVzcyA9IGZyb21PdXRwdXRTY3JpcHQoXG4gICAgY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhkZXJpdmVkS2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pKS5zY3JpcHRQdWJLZXksXG4gICAgbmV0d29ya1xuICApO1xuICBpZiAoaWQgJiYgdHlwZW9mIGlkID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB7IGlkLCBhZGRyZXNzLCBjaGFpbiwgaW5kZXgsIHZhbHVlIH07XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcHJldlRyYW5zYWN0aW9uID0gbW9ja1ByZXZUeChcbiAgICAgIHZvdXQsXG4gICAgICBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKGRlcml2ZWRLZXlzLnB1YmxpY0tleXMsIHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbiksIG5ldHdvcmspLnNjcmlwdFB1YktleSxcbiAgICAgIEJpZ0ludCh2YWx1ZSksXG4gICAgICBuZXR3b3JrXG4gICAgKTtcbiAgICBjb25zdCB1bnNwZW50ID1cbiAgICAgIGlzU2Vnd2l0KGNoYWluKSB8fCBnZXRNYWlubmV0KG5ldHdvcmspID09PSBuZXR3b3Jrcy56Y2FzaFxuICAgICAgICA/IGZyb21PdXRwdXQocHJldlRyYW5zYWN0aW9uLCB2b3V0KVxuICAgICAgICA6IGZyb21PdXRwdXRXaXRoUHJldlR4KHByZXZUcmFuc2FjdGlvbiwgdm91dCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnVuc3BlbnQsXG4gICAgICBjaGFpbixcbiAgICAgIGluZGV4LFxuICAgICAgdmFsdWUsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9ja1Vuc3BlbnRzPFROdW1iZXIgZXh0ZW5kcyBudW1iZXIgfCBiaWdpbnQ+KFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGlucHV0U2NyaXB0VHlwZXM6IChJbnB1dFR5cGUgfCBvdXRwdXRTY3JpcHRzLlNjcmlwdFR5cGVQMnNoUDJwaylbXSxcbiAgdGVzdE91dHB1dEFtb3VudDogVE51bWJlcixcbiAgbmV0d29yazogTmV0d29ya1xuKTogKFVuc3BlbnQ8VE51bWJlcj4gfCBXYWxsZXRVbnNwZW50PFROdW1iZXI+KVtdIHtcbiAgcmV0dXJuIGlucHV0U2NyaXB0VHlwZXMubWFwKCh0LCBpKTogVW5zcGVudDxUTnVtYmVyPiA9PiB7XG4gICAgaWYgKG91dHB1dFNjcmlwdHMuaXNTY3JpcHRUeXBlMk9mMyh0KSkge1xuICAgICAgcmV0dXJuIG1vY2tXYWxsZXRVbnNwZW50KG5ldHdvcmssIHRlc3RPdXRwdXRBbW91bnQsIHtcbiAgICAgICAga2V5czogcm9vdFdhbGxldEtleXMsXG4gICAgICAgIGNoYWluOiBnZXRFeHRlcm5hbENoYWluQ29kZSh0KSxcbiAgICAgICAgdm91dDogaSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAodCA9PT0gb3V0cHV0U2NyaXB0cy5zY3JpcHRUeXBlUDJzaFAycGspIHtcbiAgICAgIHJldHVybiBtb2NrUmVwbGF5UHJvdGVjdGlvblVuc3BlbnQobmV0d29yaywgdGVzdE91dHB1dEFtb3VudCwge1xuICAgICAgICBrZXk6IHJlcGxheVByb3RlY3Rpb25LZXlQYWlyLFxuICAgICAgICB2b3V0OiBpLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBpbnB1dCB0eXBlICR7dH1gKTtcbiAgfSk7XG59XG4iXX0=
@@ -1,30 +1,33 @@
1
1
  import { ScriptType, ScriptType2Of3 } from '../bitgo/outputScripts';
2
- import { KeyName, RootWalletKeys, Unspent, UtxoPsbt, UtxoTransaction, WalletUnspent } from '../bitgo';
2
+ import { KeyName, RootWalletKeys, Unspent, UtxoPsbt, UtxoTransaction } from '../bitgo';
3
3
  import { Network } from '../networks';
4
4
  /**
5
5
  * input script type and value.
6
6
  * use p2trMusig2 for p2trMusig2 script path.
7
7
  * use taprootKeyPathSpend for p2trMusig2 key path.
8
8
  */
9
- export declare type InputScriptType = ScriptType | 'taprootKeyPathSpend';
10
- export declare type OutputScriptType = ScriptType2Of3;
9
+ export type InputScriptType = ScriptType | 'taprootKeyPathSpend';
10
+ export type OutputScriptType = ScriptType2Of3;
11
11
  /**
12
- * output script type and value
12
+ * input script type and value
13
13
  */
14
- export interface Input {
14
+ export type Input = {
15
15
  scriptType: InputScriptType;
16
16
  value: bigint;
17
- }
17
+ };
18
18
  /**
19
- * should set either address or scriptType, never both.
20
- * set isInternalAddress=true for internal output address
19
+ * Set isInternalAddress=true for internal output address
21
20
  */
22
- export interface Output {
23
- address?: string;
24
- scriptType?: OutputScriptType;
21
+ export type Output = {
25
22
  value: bigint;
26
23
  isInternalAddress?: boolean;
27
- }
24
+ } & ({
25
+ scriptType: OutputScriptType;
26
+ } | {
27
+ address: string;
28
+ } | {
29
+ script: string;
30
+ });
28
31
  /**
29
32
  * array of supported input script types.
30
33
  * use p2trMusig2 for p2trMusig2 script path.
@@ -53,19 +56,41 @@ export declare function getSigners(inputType: InputScriptType): {
53
56
  * signs with first or second signature for single input.
54
57
  * p2shP2pk is signed only with first sign.
55
58
  */
56
- export declare function signPsbtInput(psbt: UtxoPsbt, input: Input, inputIndex: number, rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned'): void;
59
+ export declare function signPsbtInput(psbt: UtxoPsbt, input: Input, inputIndex: number, rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned', params?: {
60
+ signers?: {
61
+ signerName: KeyName;
62
+ cosignerName?: KeyName;
63
+ };
64
+ deterministic?: boolean;
65
+ skipNonWitnessUtxo?: boolean;
66
+ }): void;
57
67
  /**
58
68
  * signs with first or second signature for all inputs.
59
69
  * p2shP2pk is signed only with first sign.
60
70
  */
61
- export declare function signAllPsbtInputs(psbt: UtxoPsbt, inputs: Input[], rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned'): void;
71
+ export declare function signAllPsbtInputs(psbt: UtxoPsbt, inputs: Input[], rootWalletKeys: RootWalletKeys, sign: 'halfsigned' | 'fullsigned', params?: {
72
+ signers?: {
73
+ signerName: KeyName;
74
+ cosignerName?: KeyName;
75
+ };
76
+ deterministic?: boolean;
77
+ skipNonWitnessUtxo?: boolean;
78
+ }): void;
62
79
  /**
63
80
  * construct psbt for given inputs, outputs, network and root wallet keys.
64
81
  */
65
- export declare function constructPsbt(inputs: Input[], outputs: Output[], network: Network, rootWalletKeys: RootWalletKeys, sign: 'unsigned' | 'halfsigned' | 'fullsigned'): UtxoPsbt;
82
+ export declare function constructPsbt(inputs: Input[], outputs: Output[], network: Network, rootWalletKeys: RootWalletKeys, sign: 'unsigned' | 'halfsigned' | 'fullsigned', params?: {
83
+ signers?: {
84
+ signerName: KeyName;
85
+ cosignerName?: KeyName;
86
+ };
87
+ deterministic?: boolean;
88
+ skipNonWitnessUtxo?: boolean;
89
+ addGlobalXPubs?: boolean;
90
+ }): UtxoPsbt;
66
91
  /**
67
92
  * Verifies signatures of fully signed tx (with taproot key path support).
68
93
  * NOTE: taproot key path tx can only be built and signed with PSBT.
69
94
  */
70
- export declare function verifyFullySignedSignatures(tx: UtxoTransaction<bigint>, unspents: WalletUnspent<bigint>[], walletKeys: RootWalletKeys, signer: KeyName, cosigner: KeyName): boolean;
95
+ export declare function verifyFullySignedSignatures(tx: UtxoTransaction<bigint>, unspents: Unspent<bigint>[], walletKeys: RootWalletKeys, signer: KeyName, cosigner: KeyName): boolean;
71
96
  //# sourceMappingURL=psbt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../src/testutil/psbt.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,UAAU,EACV,cAAc,EAGf,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAQL,OAAO,EAGP,cAAc,EAEd,OAAO,EACP,QAAQ,EACR,eAAe,EAEf,aAAa,EACd,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;GAIG;AACH,oBAAY,eAAe,GAAG,UAAU,GAAG,qBAAqB,CAAC;AACjE,oBAAY,gBAAgB,GAAG,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,MAAM;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kGAA2E,CAAC;AAEzG;;GAEG;AACH,eAAO,MAAM,iBAAiB,+DAAkB,CAAC;AAEjD;;GAEG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,GAC7B,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,eAAe,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,CAKtG;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,YAAY,GAAG,YAAY,GAChC,IAAI,CAYN;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,KAAK,EAAE,EACf,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,YAAY,GAAG,YAAY,GAChC,IAAI,CAIN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,KAAK,EAAE,EACf,OAAO,EAAE,MAAM,EAAE,EACjB,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,YAAY,GAC7C,QAAQ,CAoDV;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,EAC3B,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,EACjC,UAAU,EAAE,cAAc,EAC1B,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,OAAO,GAChB,OAAO,CAiBT"}
1
+ {"version":3,"file":"psbt.d.ts","sourceRoot":"","sources":["../../../src/testutil/psbt.ts"],"names":[],"mappings":"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"}