@bitgo-beta/utxo-lib 8.0.3-beta.95 → 8.0.3-beta.951

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 +20 -22
  14. package/dist/src/bitgo/PsbtUtil.d.ts.map +1 -1
  15. package/dist/src/bitgo/PsbtUtil.js +70 -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 +6 -3
  205. package/dist/src/testutil/keys.d.ts.map +1 -1
  206. package/dist/src/testutil/keys.js +24 -10
  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,20 +1,43 @@
1
+ import { Payment } from 'bitcoinjs-lib';
2
+ import { PsbtOutput, PsbtOutputUpdate } from 'bip174/src/lib/interfaces';
1
3
  import { UtxoPsbt } from '../UtxoPsbt';
2
- import { RootWalletKeys } from './WalletKeys';
4
+ import { RootWalletKeys, DerivedWalletKeys } from './WalletKeys';
3
5
  import { ChainCode } from './chains';
6
+ import { ScriptId } from './ScriptId';
4
7
  /**
5
- * Add a verifiable wallet output to the PSBT. The output and all data
6
- * needed to verify it from public keys only are added to the PSBT.
7
- * Typically these are change outputs.
8
+ * Get the BIP32 derivation data for a PSBT output.
8
9
  *
9
- * @param psbt the PSBT to add change output to
10
+ * @param rootWalletKeys root wallet keys used for master fingerprints
11
+ * @param walletKeys derived wallet keys for the specific chain and index
12
+ * @param scriptType the script type to determine whether to use regular or taproot derivation
13
+ * @param payment optional payment object for taproot scripts to calculate leaf hashes
14
+ * @returns Object containing BIP32 derivation data
15
+ */
16
+ export declare function getPsbtBip32DerivationOutputUpdate(rootWalletKeys: RootWalletKeys, walletKeys: DerivedWalletKeys, scriptType: string, payment?: Payment): PsbtOutputUpdate;
17
+ /**
18
+ * Get the PSBT output update object from a PSBT output and output script.
19
+ *
20
+ * @param output the PSBT output to get update for
21
+ * @param outputScript the output script
22
+ * @param rootWalletKeys keys that will be able to spend the output
23
+ * @param chain chain code to use for deriving scripts (and to determine script type)
24
+ * @param index derivation index for the change address
25
+ * @returns PsbtOutputUpdate object with the required information
26
+ */
27
+ export declare function getPsbtOutputUpdateFromPsbtOutput(output: PsbtOutput, outputScript: Buffer, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number): PsbtOutputUpdate;
28
+ /**
29
+ * Get the PSBT output update object with the required information.
30
+ *
31
+ * @param psbt the PSBT to get output update for
10
32
  * @param rootWalletKeys keys that will be able to spend the output
33
+ * @param outputIndex output index where to update the output
11
34
  * @param chain chain code to use for deriving scripts (and to determine script
12
35
  * type) chain is an API parameter in the BitGo API, and may be
13
36
  * any valid ChainCode
14
37
  * @param index derivation index for the change address
15
- * @param value value of the change output
38
+ * @returns PsbtOutputUpdate object with the required information
16
39
  */
17
- export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint): void;
40
+ export declare function getPsbtOutputUpdate(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, outputIndex: number, chain: ChainCode, index: number): PsbtOutputUpdate;
18
41
  /**
19
42
  * Update the wallet output with the required information when necessary. If the
20
43
  * information is there already, it will skip over it.
@@ -28,7 +51,36 @@ export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: Ro
28
51
  * type) chain is an API parameter in the BitGo API, and may be
29
52
  * any valid ChainCode
30
53
  * @param index derivation index for the change address
31
- * @param value value of the change output
32
54
  */
33
55
  export declare function updateWalletOutputForPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, outputIndex: number, chain: ChainCode, index: number): void;
56
+ /**
57
+ * Add a verifiable wallet output to the PSBT. The output and all data
58
+ * needed to verify it from public keys only are added to the PSBT.
59
+ * Typically these are change outputs.
60
+ *
61
+ * @param psbt the PSBT to add change output to
62
+ * @param rootWalletKeys keys that will be able to spend the output
63
+ * @param chain chain code to use for deriving scripts (and to determine script
64
+ * type) chain is an API parameter in the BitGo API, and may be
65
+ * any valid ChainCode
66
+ * @param index derivation index for the change address
67
+ * @param value value of the change output
68
+ */
69
+ export declare function addWalletOutputToPsbt(psbt: UtxoPsbt, rootWalletKeys: RootWalletKeys, chain: ChainCode, index: number, value: bigint): void;
70
+ /**
71
+ * Get the script id from the output.
72
+ * The output can have either bip32Derivation or tapBip32Derivation, but not both.
73
+ * @param output
74
+ * @throws Error if neither or both bip32Derivation and tapBip32Derivation are present
75
+ * @throws Error if the output is empty
76
+ * @throws Error if we cannot fold the script ids into a single script id
77
+ */
78
+ export declare function getScriptIdFromOutput(output: {
79
+ bip32Derivation?: {
80
+ path: string;
81
+ }[];
82
+ tapBip32Derivation?: {
83
+ path: string;
84
+ }[];
85
+ }): ScriptId;
34
86
  //# sourceMappingURL=WalletOutput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAGzD;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,IAAI,CAYN;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAgEN"}
1
+ {"version":3,"file":"WalletOutput.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/WalletOutput.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAW,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AACzD,OAAO,EAAuB,QAAQ,EAAE,MAAM,YAAY,CAAC;AAG3D;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,iBAAiB,EAC7B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,OAAO,GAChB,gBAAgB,CAqClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,iCAAiC,CAC/C,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CA2ClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,gBAAgB,CAWlB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,GACZ,IAAI,CAEN;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,QAAQ,EACd,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,IAAI,CAYN;AAqBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzC,GAAG,QAAQ,CAWX"}
@@ -1,66 +1,77 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateWalletOutputForPsbt = exports.addWalletOutputToPsbt = void 0;
3
+ exports.getPsbtBip32DerivationOutputUpdate = getPsbtBip32DerivationOutputUpdate;
4
+ exports.getPsbtOutputUpdateFromPsbtOutput = getPsbtOutputUpdateFromPsbtOutput;
5
+ exports.getPsbtOutputUpdate = getPsbtOutputUpdate;
6
+ exports.updateWalletOutputForPsbt = updateWalletOutputForPsbt;
7
+ exports.addWalletOutputToPsbt = addWalletOutputToPsbt;
8
+ exports.getScriptIdFromOutput = getScriptIdFromOutput;
9
+ const assert = require("assert");
4
10
  const bitcoinjs_lib_1 = require("bitcoinjs-lib");
5
11
  const chains_1 = require("./chains");
12
+ const ScriptId_1 = require("./ScriptId");
6
13
  const outputScripts_1 = require("../outputScripts");
7
14
  /**
8
- * Add a verifiable wallet output to the PSBT. The output and all data
9
- * needed to verify it from public keys only are added to the PSBT.
10
- * Typically these are change outputs.
15
+ * Get the BIP32 derivation data for a PSBT output.
11
16
  *
12
- * @param psbt the PSBT to add change output to
13
- * @param rootWalletKeys keys that will be able to spend the output
14
- * @param chain chain code to use for deriving scripts (and to determine script
15
- * type) chain is an API parameter in the BitGo API, and may be
16
- * any valid ChainCode
17
- * @param index derivation index for the change address
18
- * @param value value of the change output
17
+ * @param rootWalletKeys root wallet keys used for master fingerprints
18
+ * @param walletKeys derived wallet keys for the specific chain and index
19
+ * @param scriptType the script type to determine whether to use regular or taproot derivation
20
+ * @param payment optional payment object for taproot scripts to calculate leaf hashes
21
+ * @returns Object containing BIP32 derivation data
19
22
  */
20
- function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
21
- const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
22
- const scriptType = chains_1.scriptTypeForChain(chain);
23
+ function getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType, payment) {
24
+ const update = {};
23
25
  if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
24
- const payment = scriptType === 'p2tr' ? outputScripts_1.createPaymentP2tr(walletKeys.publicKeys) : outputScripts_1.createPaymentP2trMusig2(walletKeys.publicKeys);
25
- psbt.addOutput({ script: payment.output, value });
26
+ if (!payment || !payment.redeems) {
27
+ throw new Error('Payment object with redeems is required for taproot derivation');
28
+ }
29
+ const allLeafHashes = payment.redeems.map((r) => bitcoinjs_lib_1.taproot.hashTapLeaf(r.output));
30
+ update.tapBip32Derivation = [0, 1, 2].map((idx) => {
31
+ const pubkey = (0, outputScripts_1.toXOnlyPublicKey)(walletKeys.triple[idx].publicKey);
32
+ const leafHashes = [];
33
+ assert(payment.redeems);
34
+ payment.redeems.forEach((r, redeemIdx) => {
35
+ if (r.pubkeys.find((pk) => pk.equals(pubkey))) {
36
+ leafHashes.push(allLeafHashes[redeemIdx]);
37
+ }
38
+ });
39
+ return {
40
+ leafHashes,
41
+ pubkey,
42
+ path: walletKeys.paths[idx],
43
+ masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
44
+ };
45
+ });
26
46
  }
27
47
  else {
28
- const { scriptPubKey: script } = outputScripts_1.createOutputScript2of3(walletKeys.publicKeys, scriptType);
29
- psbt.addOutput({ script, value });
48
+ update.bip32Derivation = [0, 1, 2].map((idx) => ({
49
+ pubkey: walletKeys.triple[idx].publicKey,
50
+ path: walletKeys.paths[idx],
51
+ masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
52
+ }));
30
53
  }
31
- updateWalletOutputForPsbt(psbt, rootWalletKeys, psbt.data.outputs.length - 1, chain, index);
54
+ return update;
32
55
  }
33
- exports.addWalletOutputToPsbt = addWalletOutputToPsbt;
34
56
  /**
35
- * Update the wallet output with the required information when necessary. If the
36
- * information is there already, it will skip over it.
37
- *
38
- * This function assumes that the output script and value have already been set.
57
+ * Get the PSBT output update object from a PSBT output and output script.
39
58
  *
40
- * @param psbt the PSBT to update change output at
59
+ * @param output the PSBT output to get update for
60
+ * @param outputScript the output script
41
61
  * @param rootWalletKeys keys that will be able to spend the output
42
- * @param outputIndex output index where to update the output
43
- * @param chain chain code to use for deriving scripts (and to determine script
44
- * type) chain is an API parameter in the BitGo API, and may be
45
- * any valid ChainCode
62
+ * @param chain chain code to use for deriving scripts (and to determine script type)
46
63
  * @param index derivation index for the change address
47
- * @param value value of the change output
64
+ * @returns PsbtOutputUpdate object with the required information
48
65
  */
49
- function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, index) {
50
- if (psbt.data.outputs.length <= outputIndex) {
51
- throw new Error(`outputIndex (${outputIndex}) is too large for the number of outputs (${psbt.data.outputs.length})`);
52
- }
53
- const outputScript = psbt.getOutputScript(outputIndex);
66
+ function getPsbtOutputUpdateFromPsbtOutput(output, outputScript, rootWalletKeys, chain, index) {
54
67
  const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
55
- const scriptType = chains_1.scriptTypeForChain(chain);
56
- const output = psbt.data.outputs[outputIndex];
68
+ const scriptType = (0, chains_1.scriptTypeForChain)(chain);
57
69
  const update = {};
58
70
  if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
59
- const payment = scriptType === 'p2tr' ? outputScripts_1.createPaymentP2tr(walletKeys.publicKeys) : outputScripts_1.createPaymentP2trMusig2(walletKeys.publicKeys);
71
+ const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
60
72
  if (!payment.output || !payment.output.equals(outputScript)) {
61
73
  throw new Error(`cannot update a p2tr output where the scripts do not match - Failing.`);
62
74
  }
63
- const allLeafHashes = payment.redeems.map((r) => bitcoinjs_lib_1.taproot.hashTapLeaf(r.output));
64
75
  if (!output.tapTree) {
65
76
  update.tapTree = payment.tapTree;
66
77
  }
@@ -68,34 +79,18 @@ function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, ind
68
79
  update.tapInternalKey = payment.internalPubkey;
69
80
  }
70
81
  if (!output.tapBip32Derivation) {
71
- update.tapBip32Derivation = [0, 1, 2].map((idx) => {
72
- const pubkey = outputScripts_1.toXOnlyPublicKey(walletKeys.triple[idx].publicKey);
73
- const leafHashes = [];
74
- payment.redeems.forEach((r, idx) => {
75
- if (r.pubkeys.find((pk) => pk.equals(pubkey))) {
76
- leafHashes.push(allLeafHashes[idx]);
77
- }
78
- });
79
- return {
80
- leafHashes,
81
- pubkey,
82
- path: walletKeys.paths[idx],
83
- masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
84
- };
85
- });
82
+ const derivationUpdate = getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType, payment);
83
+ update.tapBip32Derivation = derivationUpdate.tapBip32Derivation;
86
84
  }
87
85
  }
88
86
  else {
89
- const { scriptPubKey, witnessScript, redeemScript } = outputScripts_1.createOutputScript2of3(walletKeys.publicKeys, scriptType);
87
+ const { scriptPubKey, witnessScript, redeemScript } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
90
88
  if (!scriptPubKey.equals(outputScript)) {
91
89
  throw new Error(`cannot update an output where the scripts do not match - Failing.`);
92
90
  }
93
91
  if (!output.bip32Derivation) {
94
- update.bip32Derivation = [0, 1, 2].map((idx) => ({
95
- pubkey: walletKeys.triple[idx].publicKey,
96
- path: walletKeys.paths[idx],
97
- masterFingerprint: rootWalletKeys.triple[idx].fingerprint,
98
- }));
92
+ const derivationUpdate = getPsbtBip32DerivationOutputUpdate(rootWalletKeys, walletKeys, scriptType);
93
+ update.bip32Derivation = derivationUpdate.bip32Derivation;
99
94
  }
100
95
  if (!output.witnessScript && witnessScript) {
101
96
  update.witnessScript = witnessScript;
@@ -104,7 +99,107 @@ function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, ind
104
99
  update.redeemScript = redeemScript;
105
100
  }
106
101
  }
107
- psbt.updateOutput(outputIndex, update);
102
+ return update;
108
103
  }
109
- exports.updateWalletOutputForPsbt = updateWalletOutputForPsbt;
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQXdDO0FBSXhDLHFDQUF5RDtBQUN6RCxvREFBd0g7QUFFeEg7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQ25DLElBQWMsRUFDZCxjQUE4QixFQUM5QixLQUFnQixFQUNoQixLQUFhLEVBQ2IsS0FBYTtJQUViLE1BQU0sVUFBVSxHQUFHLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDdkUsTUFBTSxVQUFVLEdBQUcsMkJBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsSUFBSSxVQUFVLEtBQUssTUFBTSxJQUFJLFVBQVUsS0FBSyxZQUFZLEVBQUU7UUFDeEQsTUFBTSxPQUFPLEdBQ1gsVUFBVSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUNBQWlCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyx1Q0FBdUIsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEgsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDcEQ7U0FBTTtRQUNMLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsc0NBQXNCLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUMzRixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7S0FDbkM7SUFDRCx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlGLENBQUM7QUFsQkQsc0RBa0JDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxTQUFnQix5QkFBeUIsQ0FDdkMsSUFBYyxFQUNkLGNBQThCLEVBQzlCLFdBQW1CLEVBQ25CLEtBQWdCLEVBQ2hCLEtBQWE7SUFFYixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxXQUFXLEVBQUU7UUFDM0MsTUFBTSxJQUFJLEtBQUssQ0FDYixnQkFBZ0IsV0FBVyw2Q0FBNkMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQ3BHLENBQUM7S0FDSDtJQUVELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFdkQsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RSxNQUFNLFVBQVUsR0FBRywyQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM5QyxNQUFNLE1BQU0sR0FBcUIsRUFBRSxDQUFDO0lBQ3BDLElBQUksVUFBVSxLQUFLLE1BQU0sSUFBSSxVQUFVLEtBQUssWUFBWSxFQUFFO1FBQ3hELE1BQU0sT0FBTyxHQUNYLFVBQVUsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlDQUFpQixDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsdUNBQXVCLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BILElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQUU7WUFDM0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO1NBQzFGO1FBQ0QsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE9BQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHVCQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxNQUFPLENBQUMsQ0FBQyxDQUFDO1FBRWxGLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztTQUNoRDtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUU7WUFDOUIsTUFBTSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDaEQsTUFBTSxNQUFNLEdBQUcsZ0NBQWdCLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbEUsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFDO2dCQUNoQyxPQUFPLENBQUMsT0FBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRTtvQkFDbEMsSUFBSSxDQUFDLENBQUMsT0FBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFO3dCQUM5QyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO3FCQUNyQztnQkFDSCxDQUFDLENBQUMsQ0FBQztnQkFDSCxPQUFPO29CQUNMLFVBQVU7b0JBQ1YsTUFBTTtvQkFDTixJQUFJLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQzNCLGlCQUFpQixFQUFFLGNBQWMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBVztpQkFDMUQsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ0o7S0FDRjtTQUFNO1FBQ0wsTUFBTSxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLEdBQUcsc0NBQXNCLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNoSCxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsRUFBRTtZQUN0QyxNQUFNLElBQUksS0FBSyxDQUFDLG1FQUFtRSxDQUFDLENBQUM7U0FDdEY7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRTtZQUMzQixNQUFNLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQy9DLE1BQU0sRUFBRSxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3hDLElBQUksRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztnQkFDM0IsaUJBQWlCLEVBQUUsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXO2FBQzFELENBQUMsQ0FBQyxDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsSUFBSSxhQUFhLEVBQUU7WUFDMUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxZQUFZLEVBQUU7WUFDeEMsTUFBTSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7U0FDcEM7S0FDRjtJQUNELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUF0RUQsOERBc0VDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdGFwcm9vdCB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuaW1wb3J0IHsgUHNidE91dHB1dFVwZGF0ZSB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVXR4b1BzYnQgfSBmcm9tICcuLi9VdHhvUHNidCc7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBDaGFpbkNvZGUsIHNjcmlwdFR5cGVGb3JDaGFpbiB9IGZyb20gJy4vY2hhaW5zJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIGNyZWF0ZVBheW1lbnRQMnRyLCBjcmVhdGVQYXltZW50UDJ0ck11c2lnMiwgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG4vKipcbiAqIEFkZCBhIHZlcmlmaWFibGUgd2FsbGV0IG91dHB1dCB0byB0aGUgUFNCVC4gVGhlIG91dHB1dCBhbmQgYWxsIGRhdGFcbiAqIG5lZWRlZCB0byB2ZXJpZnkgaXQgZnJvbSBwdWJsaWMga2V5cyBvbmx5IGFyZSBhZGRlZCB0byB0aGUgUFNCVC5cbiAqIFR5cGljYWxseSB0aGVzZSBhcmUgY2hhbmdlIG91dHB1dHMuXG4gKlxuICogQHBhcmFtIHBzYnQgdGhlIFBTQlQgdG8gYWRkIGNoYW5nZSBvdXRwdXQgdG9cbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKiBAcGFyYW0gdmFsdWUgdmFsdWUgb2YgdGhlIGNoYW5nZSBvdXRwdXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZFdhbGxldE91dHB1dFRvUHNidChcbiAgcHNidDogVXR4b1BzYnQsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlcixcbiAgdmFsdWU6IGJpZ2ludFxuKTogdm9pZCB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgcHNidC5hZGRPdXRwdXQoeyBzY3JpcHQ6IHBheW1lbnQub3V0cHV0ISwgdmFsdWUgfSk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgeyBzY3JpcHRQdWJLZXk6IHNjcmlwdCB9ID0gY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyh3YWxsZXRLZXlzLnB1YmxpY0tleXMsIHNjcmlwdFR5cGUpO1xuICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0LCB2YWx1ZSB9KTtcbiAgfVxuICB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KHBzYnQsIHJvb3RXYWxsZXRLZXlzLCBwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggLSAxLCBjaGFpbiwgaW5kZXgpO1xufVxuXG4vKipcbiAqIFVwZGF0ZSB0aGUgd2FsbGV0IG91dHB1dCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbiB3aGVuIG5lY2Vzc2FyeS4gSWYgdGhlXG4gKiBpbmZvcm1hdGlvbiBpcyB0aGVyZSBhbHJlYWR5LCBpdCB3aWxsIHNraXAgb3ZlciBpdC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB0aGUgb3V0cHV0IHNjcmlwdCBhbmQgdmFsdWUgaGF2ZSBhbHJlYWR5IGJlZW4gc2V0LlxuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIHVwZGF0ZSBjaGFuZ2Ugb3V0cHV0IGF0XG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gb3V0cHV0SW5kZXggb3V0cHV0IGluZGV4IHdoZXJlIHRvIHVwZGF0ZSB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgaWYgKHBzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aCA8PSBvdXRwdXRJbmRleCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBvdXRwdXRJbmRleCAoJHtvdXRwdXRJbmRleH0pIGlzIHRvbyBsYXJnZSBmb3IgdGhlIG51bWJlciBvZiBvdXRwdXRzICgke3BzYnQuZGF0YS5vdXRwdXRzLmxlbmd0aH0pYFxuICAgICk7XG4gIH1cblxuICBjb25zdCBvdXRwdXRTY3JpcHQgPSBwc2J0LmdldE91dHB1dFNjcmlwdChvdXRwdXRJbmRleCk7XG5cbiAgY29uc3Qgd2FsbGV0S2V5cyA9IHJvb3RXYWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KTtcbiAgY29uc3Qgc2NyaXB0VHlwZSA9IHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbik7XG4gIGNvbnN0IG91dHB1dCA9IHBzYnQuZGF0YS5vdXRwdXRzW291dHB1dEluZGV4XTtcbiAgY29uc3QgdXBkYXRlOiBQc2J0T3V0cHV0VXBkYXRlID0ge307XG4gIGlmIChzY3JpcHRUeXBlID09PSAncDJ0cicgfHwgc2NyaXB0VHlwZSA9PT0gJ3AydHJNdXNpZzInKSB7XG4gICAgY29uc3QgcGF5bWVudCA9XG4gICAgICBzY3JpcHRUeXBlID09PSAncDJ0cicgPyBjcmVhdGVQYXltZW50UDJ0cih3YWxsZXRLZXlzLnB1YmxpY0tleXMpIDogY3JlYXRlUGF5bWVudFAydHJNdXNpZzIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKTtcbiAgICBpZiAoIXBheW1lbnQub3V0cHV0IHx8ICFwYXltZW50Lm91dHB1dC5lcXVhbHMob3V0cHV0U2NyaXB0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgdXBkYXRlIGEgcDJ0ciBvdXRwdXQgd2hlcmUgdGhlIHNjcmlwdHMgZG8gbm90IG1hdGNoIC0gRmFpbGluZy5gKTtcbiAgICB9XG4gICAgY29uc3QgYWxsTGVhZkhhc2hlcyA9IHBheW1lbnQucmVkZWVtcyEubWFwKChyKSA9PiB0YXByb290Lmhhc2hUYXBMZWFmKHIub3V0cHV0ISkpO1xuXG4gICAgaWYgKCFvdXRwdXQudGFwVHJlZSkge1xuICAgICAgdXBkYXRlLnRhcFRyZWUgPSBwYXltZW50LnRhcFRyZWU7XG4gICAgfVxuICAgIGlmICghb3V0cHV0LnRhcEludGVybmFsS2V5KSB7XG4gICAgICB1cGRhdGUudGFwSW50ZXJuYWxLZXkgPSBwYXltZW50LmludGVybmFsUHVia2V5O1xuICAgIH1cbiAgICBpZiAoIW91dHB1dC50YXBCaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIHVwZGF0ZS50YXBCaXAzMkRlcml2YXRpb24gPSBbMCwgMSwgMl0ubWFwKChpZHgpID0+IHtcbiAgICAgICAgY29uc3QgcHVia2V5ID0gdG9YT25seVB1YmxpY0tleSh3YWxsZXRLZXlzLnRyaXBsZVtpZHhdLnB1YmxpY0tleSk7XG4gICAgICAgIGNvbnN0IGxlYWZIYXNoZXM6IEJ1ZmZlcltdID0gW107XG4gICAgICAgIHBheW1lbnQucmVkZWVtcyEuZm9yRWFjaCgociwgaWR4KSA9PiB7XG4gICAgICAgICAgaWYgKHIucHVia2V5cyEuZmluZCgocGspID0+IHBrLmVxdWFscyhwdWJrZXkpKSkge1xuICAgICAgICAgICAgbGVhZkhhc2hlcy5wdXNoKGFsbExlYWZIYXNoZXNbaWR4XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsZWFmSGFzaGVzLFxuICAgICAgICAgIHB1YmtleSxcbiAgICAgICAgICBwYXRoOiB3YWxsZXRLZXlzLnBhdGhzW2lkeF0sXG4gICAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgc2NyaXB0UHViS2V5LCB3aXRuZXNzU2NyaXB0LCByZWRlZW1TY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICBpZiAoIXNjcmlwdFB1YktleS5lcXVhbHMob3V0cHV0U2NyaXB0KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgdXBkYXRlIGFuIG91dHB1dCB3aGVyZSB0aGUgc2NyaXB0cyBkbyBub3QgbWF0Y2ggLSBGYWlsaW5nLmApO1xuICAgIH1cbiAgICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIHVwZGF0ZS5iaXAzMkRlcml2YXRpb24gPSBbMCwgMSwgMl0ubWFwKChpZHgpID0+ICh7XG4gICAgICAgIHB1YmtleTogd2FsbGV0S2V5cy50cmlwbGVbaWR4XS5wdWJsaWNLZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfSkpO1xuICAgIH1cbiAgICBpZiAoIW91dHB1dC53aXRuZXNzU2NyaXB0ICYmIHdpdG5lc3NTY3JpcHQpIHtcbiAgICAgIHVwZGF0ZS53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdDtcbiAgICB9XG4gICAgaWYgKCFvdXRwdXQucmVkZWVtU2NyaXB0ICYmIHJlZGVlbVNjcmlwdCkge1xuICAgICAgdXBkYXRlLnJlZGVlbVNjcmlwdCA9IHJlZGVlbVNjcmlwdDtcbiAgICB9XG4gIH1cbiAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIHVwZGF0ZSk7XG59XG4iXX0=
104
+ /**
105
+ * Get the PSBT output update object with the required information.
106
+ *
107
+ * @param psbt the PSBT to get output update for
108
+ * @param rootWalletKeys keys that will be able to spend the output
109
+ * @param outputIndex output index where to update the output
110
+ * @param chain chain code to use for deriving scripts (and to determine script
111
+ * type) chain is an API parameter in the BitGo API, and may be
112
+ * any valid ChainCode
113
+ * @param index derivation index for the change address
114
+ * @returns PsbtOutputUpdate object with the required information
115
+ */
116
+ function getPsbtOutputUpdate(psbt, rootWalletKeys, outputIndex, chain, index) {
117
+ if (psbt.data.outputs.length <= outputIndex) {
118
+ throw new Error(`outputIndex (${outputIndex}) is too large for the number of outputs (${psbt.data.outputs.length})`);
119
+ }
120
+ const outputScript = psbt.getOutputScript(outputIndex);
121
+ const output = psbt.data.outputs[outputIndex];
122
+ return getPsbtOutputUpdateFromPsbtOutput(output, outputScript, rootWalletKeys, chain, index);
123
+ }
124
+ /**
125
+ * Update the wallet output with the required information when necessary. If the
126
+ * information is there already, it will skip over it.
127
+ *
128
+ * This function assumes that the output script and value have already been set.
129
+ *
130
+ * @param psbt the PSBT to update change output at
131
+ * @param rootWalletKeys keys that will be able to spend the output
132
+ * @param outputIndex output index where to update the output
133
+ * @param chain chain code to use for deriving scripts (and to determine script
134
+ * type) chain is an API parameter in the BitGo API, and may be
135
+ * any valid ChainCode
136
+ * @param index derivation index for the change address
137
+ */
138
+ function updateWalletOutputForPsbt(psbt, rootWalletKeys, outputIndex, chain, index) {
139
+ psbt.updateOutput(outputIndex, getPsbtOutputUpdate(psbt, rootWalletKeys, outputIndex, chain, index));
140
+ }
141
+ /**
142
+ * Add a verifiable wallet output to the PSBT. The output and all data
143
+ * needed to verify it from public keys only are added to the PSBT.
144
+ * Typically these are change outputs.
145
+ *
146
+ * @param psbt the PSBT to add change output to
147
+ * @param rootWalletKeys keys that will be able to spend the output
148
+ * @param chain chain code to use for deriving scripts (and to determine script
149
+ * type) chain is an API parameter in the BitGo API, and may be
150
+ * any valid ChainCode
151
+ * @param index derivation index for the change address
152
+ * @param value value of the change output
153
+ */
154
+ function addWalletOutputToPsbt(psbt, rootWalletKeys, chain, index, value) {
155
+ const walletKeys = rootWalletKeys.deriveForChainAndIndex(chain, index);
156
+ const scriptType = (0, chains_1.scriptTypeForChain)(chain);
157
+ if (scriptType === 'p2tr' || scriptType === 'p2trMusig2') {
158
+ const payment = scriptType === 'p2tr' ? (0, outputScripts_1.createPaymentP2tr)(walletKeys.publicKeys) : (0, outputScripts_1.createPaymentP2trMusig2)(walletKeys.publicKeys);
159
+ psbt.addOutput({ script: payment.output, value });
160
+ }
161
+ else {
162
+ const { scriptPubKey: script } = (0, outputScripts_1.createOutputScript2of3)(walletKeys.publicKeys, scriptType);
163
+ psbt.addOutput({ script, value });
164
+ }
165
+ updateWalletOutputForPsbt(psbt, rootWalletKeys, psbt.data.outputs.length - 1, chain, index);
166
+ }
167
+ /**
168
+ * Fold the script ids into a single script id, if they are all the same.
169
+ * @param scriptIds
170
+ */
171
+ function foldScriptIds(scriptIds) {
172
+ if (scriptIds.length === 0) {
173
+ throw new Error('cannot fold empty script ids');
174
+ }
175
+ scriptIds.forEach((scriptId, i) => {
176
+ if (scriptId.chain !== scriptIds[0].chain) {
177
+ throw new Error(`chain mismatch: ${scriptId.chain} != ${scriptIds[0].chain}`);
178
+ }
179
+ if (scriptId.index !== scriptIds[0].index) {
180
+ throw new Error(`index mismatch: ${scriptId.index} != ${scriptIds[0].index}`);
181
+ }
182
+ });
183
+ return scriptIds[0];
184
+ }
185
+ /**
186
+ * Get the script id from the output.
187
+ * The output can have either bip32Derivation or tapBip32Derivation, but not both.
188
+ * @param output
189
+ * @throws Error if neither or both bip32Derivation and tapBip32Derivation are present
190
+ * @throws Error if the output is empty
191
+ * @throws Error if we cannot fold the script ids into a single script id
192
+ */
193
+ function getScriptIdFromOutput(output) {
194
+ if (output.bip32Derivation && output.tapBip32Derivation) {
195
+ throw new Error('cannot get script id from output with both bip32Derivation and tapBip32Derivation');
196
+ }
197
+ if (output.bip32Derivation) {
198
+ return foldScriptIds(output.bip32Derivation.map((d) => (0, ScriptId_1.getScriptIdFromPath)(d.path)));
199
+ }
200
+ if (output.tapBip32Derivation) {
201
+ return foldScriptIds(output.tapBip32Derivation.map((d) => (0, ScriptId_1.getScriptIdFromPath)(d.path)));
202
+ }
203
+ throw new Error('cannot get script id from output without bip32Derivation or tapBip32Derivation');
204
+ }
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0T3V0cHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2JpdGdvL3dhbGxldC9XYWxsZXRPdXRwdXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFtQkEsZ0ZBMENDO0FBWUQsOEVBaURDO0FBY0Qsa0RBaUJDO0FBZ0JELDhEQVFDO0FBZUQsc0RBa0JDO0FBNkJELHNEQWNDO0FBN1BELGlDQUFpQztBQUVqQyxpREFBaUQ7QUFJakQscUNBQXlEO0FBQ3pELHlDQUEyRDtBQUMzRCxvREFBd0g7QUFFeEg7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixrQ0FBa0MsQ0FDaEQsY0FBOEIsRUFDOUIsVUFBNkIsRUFDN0IsVUFBa0IsRUFDbEIsT0FBaUI7SUFFakIsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztJQUVwQyxJQUFJLFVBQVUsS0FBSyxNQUFNLElBQUksVUFBVSxLQUFLLFlBQVksRUFBRSxDQUFDO1FBQ3pELElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO1FBQ3BGLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsdUJBQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLENBQUM7UUFFakYsTUFBTSxDQUFDLGtCQUFrQixHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFBLGdDQUFnQixFQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDbEUsTUFBTSxVQUFVLEdBQWEsRUFBRSxDQUFD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SUFDSCxPQUFPLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLE1BR3JDO0lBQ0MsSUFBSSxNQUFNLENBQUMsZUFBZSxJQUFJLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ3hELE1BQU0sSUFBSSxLQUFLLENBQUMsbUZBQW1GLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDM0IsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsOEJBQW1CLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBQ0QsSUFBSSxNQUFNLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUM5QixPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFBLDhCQUFtQixFQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsZ0ZBQWdGLENBQUMsQ0FBQztBQUNwRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCB7IFBheW1lbnQsIHRhcHJvb3QgfSBmcm9tICdiaXRjb2luanMtbGliJztcbmltcG9ydCB7IFBzYnRPdXRwdXQsIFBzYnRPdXRwdXRVcGRhdGUgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFV0eG9Qc2J0IH0gZnJvbSAnLi4vVXR4b1BzYnQnO1xuaW1wb3J0IHsgUm9vdFdhbGxldEtleXMsIERlcml2ZWRXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IENoYWluQ29kZSwgc2NyaXB0VHlwZUZvckNoYWluIH0gZnJvbSAnLi9jaGFpbnMnO1xuaW1wb3J0IHsgZ2V0U2NyaXB0SWRGcm9tUGF0aCwgU2NyaXB0SWQgfSBmcm9tICcuL1NjcmlwdElkJztcbmltcG9ydCB7IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMsIGNyZWF0ZVBheW1lbnRQMnRyLCBjcmVhdGVQYXltZW50UDJ0ck11c2lnMiwgdG9YT25seVB1YmxpY0tleSB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG4vKipcbiAqIEdldCB0aGUgQklQMzIgZGVyaXZhdGlvbiBkYXRhIGZvciBhIFBTQlQgb3V0cHV0LlxuICpcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyByb290IHdhbGxldCBrZXlzIHVzZWQgZm9yIG1hc3RlciBmaW5nZXJwcmludHNcbiAqIEBwYXJhbSB3YWxsZXRLZXlzIGRlcml2ZWQgd2FsbGV0IGtleXMgZm9yIHRoZSBzcGVjaWZpYyBjaGFpbiBhbmQgaW5kZXhcbiAqIEBwYXJhbSBzY3JpcHRUeXBlIHRoZSBzY3JpcHQgdHlwZSB0byBkZXRlcm1pbmUgd2hldGhlciB0byB1c2UgcmVndWxhciBvciB0YXByb290IGRlcml2YXRpb25cbiAqIEBwYXJhbSBwYXltZW50IG9wdGlvbmFsIHBheW1lbnQgb2JqZWN0IGZvciB0YXByb290IHNjcmlwdHMgdG8gY2FsY3VsYXRlIGxlYWYgaGFzaGVzXG4gKiBAcmV0dXJucyBPYmplY3QgY29udGFpbmluZyBCSVAzMiBkZXJpdmF0aW9uIGRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUoXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgd2FsbGV0S2V5czogRGVyaXZlZFdhbGxldEtleXMsXG4gIHNjcmlwdFR5cGU6IHN0cmluZyxcbiAgcGF5bWVudD86IFBheW1lbnRcbik6IFBzYnRPdXRwdXRVcGRhdGUge1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGlmICghcGF5bWVudCB8fCAhcGF5bWVudC5yZWRlZW1zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BheW1lbnQgb2JqZWN0IHdpdGggcmVkZWVtcyBpcyByZXF1aXJlZCBmb3IgdGFwcm9vdCBkZXJpdmF0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsTGVhZkhhc2hlcyA9IHBheW1lbnQucmVkZWVtcy5tYXAoKHIpID0+IHRhcHJvb3QuaGFzaFRhcExlYWYoci5vdXRwdXQhKSk7XG5cbiAgICB1cGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiB7XG4gICAgICBjb25zdCBwdWJrZXkgPSB0b1hPbmx5UHVibGljS2V5KHdhbGxldEtleXMudHJpcGxlW2lkeF0ucHVibGljS2V5KTtcbiAgICAgIGNvbnN0IGxlYWZIYXNoZXM6IEJ1ZmZlcltdID0gW107XG5cbiAgICAgIGFzc2VydChwYXltZW50LnJlZGVlbXMpO1xuICAgICAgcGF5bWVudC5yZWRlZW1zLmZvckVhY2goKHI6IGFueSwgcmVkZWVtSWR4OiBudW1iZXIpID0+IHtcbiAgICAgICAgaWYgKHIucHVia2V5cyEuZmluZCgocGs6IEJ1ZmZlcikgPT4gcGsuZXF1YWxzKHB1YmtleSkpKSB7XG4gICAgICAgICAgbGVhZkhhc2hlcy5wdXNoKGFsbExlYWZIYXNoZXNbcmVkZWVtSWR4XSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBsZWFmSGFzaGVzLFxuICAgICAgICBwdWJrZXksXG4gICAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHJvb3RXYWxsZXRLZXlzLnRyaXBsZVtpZHhdLmZpbmdlcnByaW50LFxuICAgICAgfTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGUuYmlwMzJEZXJpdmF0aW9uID0gWzAsIDEsIDJdLm1hcCgoaWR4KSA9PiAoe1xuICAgICAgcHVia2V5OiB3YWxsZXRLZXlzLnRyaXBsZVtpZHhdLnB1YmxpY0tleSxcbiAgICAgIHBhdGg6IHdhbGxldEtleXMucGF0aHNbaWR4XSxcbiAgICAgIG1hc3RlckZpbmdlcnByaW50OiByb290V2FsbGV0S2V5cy50cmlwbGVbaWR4XS5maW5nZXJwcmludCxcbiAgICB9KSk7XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCBmcm9tIGEgUFNCVCBvdXRwdXQgYW5kIG91dHB1dCBzY3JpcHQuXG4gKlxuICogQHBhcmFtIG91dHB1dCB0aGUgUFNCVCBvdXRwdXQgdG8gZ2V0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSBvdXRwdXRTY3JpcHQgdGhlIG91dHB1dCBzY3JpcHRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHQgdHlwZSlcbiAqIEBwYXJhbSBpbmRleCBkZXJpdmF0aW9uIGluZGV4IGZvciB0aGUgY2hhbmdlIGFkZHJlc3NcbiAqIEByZXR1cm5zIFBzYnRPdXRwdXRVcGRhdGUgb2JqZWN0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQc2J0T3V0cHV0VXBkYXRlRnJvbVBzYnRPdXRwdXQoXG4gIG91dHB1dDogUHNidE91dHB1dCxcbiAgb3V0cHV0U2NyaXB0OiBCdWZmZXIsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGNvbnN0IHdhbGxldEtleXMgPSByb290V2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCk7XG4gIGNvbnN0IHNjcmlwdFR5cGUgPSBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pO1xuICBjb25zdCB1cGRhdGU6IFBzYnRPdXRwdXRVcGRhdGUgPSB7fTtcblxuICBpZiAoc2NyaXB0VHlwZSA9PT0gJ3AydHInIHx8IHNjcmlwdFR5cGUgPT09ICdwMnRyTXVzaWcyJykge1xuICAgIGNvbnN0IHBheW1lbnQgPVxuICAgICAgc2NyaXB0VHlwZSA9PT0gJ3AydHInID8gY3JlYXRlUGF5bWVudFAydHIod2FsbGV0S2V5cy5wdWJsaWNLZXlzKSA6IGNyZWF0ZVBheW1lbnRQMnRyTXVzaWcyKHdhbGxldEtleXMucHVibGljS2V5cyk7XG4gICAgaWYgKCFwYXltZW50Lm91dHB1dCB8fCAhcGF5bWVudC5vdXRwdXQuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhIHAydHIgb3V0cHV0IHdoZXJlIHRoZSBzY3JpcHRzIGRvIG5vdCBtYXRjaCAtIEZhaWxpbmcuYCk7XG4gICAgfVxuXG4gICAgaWYgKCFvdXRwdXQudGFwVHJlZSkge1xuICAgICAgdXBkYXRlLnRhcFRyZWUgPSBwYXltZW50LnRhcFRyZWU7XG4gICAgfVxuICAgIGlmICghb3V0cHV0LnRhcEludGVybmFsS2V5KSB7XG4gICAgICB1cGRhdGUudGFwSW50ZXJuYWxLZXkgPSBwYXltZW50LmludGVybmFsUHVia2V5O1xuICAgIH1cblxuICAgIGlmICghb3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbikge1xuICAgICAgY29uc3QgZGVyaXZhdGlvblVwZGF0ZSA9IGdldFBzYnRCaXAzMkRlcml2YXRpb25PdXRwdXRVcGRhdGUocm9vdFdhbGxldEtleXMsIHdhbGxldEtleXMsIHNjcmlwdFR5cGUsIHBheW1lbnQpO1xuICAgICAgdXBkYXRlLnRhcEJpcDMyRGVyaXZhdGlvbiA9IGRlcml2YXRpb25VcGRhdGUudGFwQmlwMzJEZXJpdmF0aW9uO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IHNjcmlwdFB1YktleSwgd2l0bmVzc1NjcmlwdCwgcmVkZWVtU2NyaXB0IH0gPSBjcmVhdGVPdXRwdXRTY3JpcHQyb2YzKHdhbGxldEtleXMucHVibGljS2V5cywgc2NyaXB0VHlwZSk7XG4gICAgaWYgKCFzY3JpcHRQdWJLZXkuZXF1YWxzKG91dHB1dFNjcmlwdCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IHVwZGF0ZSBhbiBvdXRwdXQgd2hlcmUgdGhlIHNjcmlwdHMgZG8gbm90IG1hdGNoIC0gRmFpbGluZy5gKTtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24pIHtcbiAgICAgIGNvbnN0IGRlcml2YXRpb25VcGRhdGUgPSBnZXRQc2J0QmlwMzJEZXJpdmF0aW9uT3V0cHV0VXBkYXRlKHJvb3RXYWxsZXRLZXlzLCB3YWxsZXRLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICAgIHVwZGF0ZS5iaXAzMkRlcml2YXRpb24gPSBkZXJpdmF0aW9uVXBkYXRlLmJpcDMyRGVyaXZhdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoIW91dHB1dC53aXRuZXNzU2NyaXB0ICYmIHdpdG5lc3NTY3JpcHQpIHtcbiAgICAgIHVwZGF0ZS53aXRuZXNzU2NyaXB0ID0gd2l0bmVzc1NjcmlwdDtcbiAgICB9XG4gICAgaWYgKCFvdXRwdXQucmVkZWVtU2NyaXB0ICYmIHJlZGVlbVNjcmlwdCkge1xuICAgICAgdXBkYXRlLnJlZGVlbVNjcmlwdCA9IHJlZGVlbVNjcmlwdDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdXBkYXRlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgUFNCVCBvdXRwdXQgdXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0gcHNidCB0aGUgUFNCVCB0byBnZXQgb3V0cHV0IHVwZGF0ZSBmb3JcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKiBAcmV0dXJucyBQc2J0T3V0cHV0VXBkYXRlIG9iamVjdCB3aXRoIHRoZSByZXF1aXJlZCBpbmZvcm1hdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UHNidE91dHB1dFVwZGF0ZShcbiAgcHNidDogVXR4b1BzYnQsXG4gIHJvb3RXYWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgb3V0cHV0SW5kZXg6IG51bWJlcixcbiAgY2hhaW46IENoYWluQ29kZSxcbiAgaW5kZXg6IG51bWJlclxuKTogUHNidE91dHB1dFVwZGF0ZSB7XG4gIGlmIChwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGggPD0gb3V0cHV0SW5kZXgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgb3V0cHV0SW5kZXggKCR7b3V0cHV0SW5kZXh9KSBpcyB0b28gbGFyZ2UgZm9yIHRoZSBudW1iZXIgb2Ygb3V0cHV0cyAoJHtwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGh9KWBcbiAgICApO1xuICB9XG5cbiAgY29uc3Qgb3V0cHV0U2NyaXB0ID0gcHNidC5nZXRPdXRwdXRTY3JpcHQob3V0cHV0SW5kZXgpO1xuICBjb25zdCBvdXRwdXQgPSBwc2J0LmRhdGEub3V0cHV0c1tvdXRwdXRJbmRleF07XG5cbiAgcmV0dXJuIGdldFBzYnRPdXRwdXRVcGRhdGVGcm9tUHNidE91dHB1dChvdXRwdXQsIG91dHB1dFNjcmlwdCwgcm9vdFdhbGxldEtleXMsIGNoYWluLCBpbmRleCk7XG59XG5cbi8qKlxuICogVXBkYXRlIHRoZSB3YWxsZXQgb3V0cHV0IHdpdGggdGhlIHJlcXVpcmVkIGluZm9ybWF0aW9uIHdoZW4gbmVjZXNzYXJ5LiBJZiB0aGVcbiAqIGluZm9ybWF0aW9uIGlzIHRoZXJlIGFscmVhZHksIGl0IHdpbGwgc2tpcCBvdmVyIGl0LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IHRoZSBvdXRwdXQgc2NyaXB0IGFuZCB2YWx1ZSBoYXZlIGFscmVhZHkgYmVlbiBzZXQuXG4gKlxuICogQHBhcmFtIHBzYnQgdGhlIFBTQlQgdG8gdXBkYXRlIGNoYW5nZSBvdXRwdXQgYXRcbiAqIEBwYXJhbSByb290V2FsbGV0S2V5cyBrZXlzIHRoYXQgd2lsbCBiZSBhYmxlIHRvIHNwZW5kIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBvdXRwdXRJbmRleCBvdXRwdXQgaW5kZXggd2hlcmUgdG8gdXBkYXRlIHRoZSBvdXRwdXRcbiAqIEBwYXJhbSBjaGFpbiBjaGFpbiBjb2RlIHRvIHVzZSBmb3IgZGVyaXZpbmcgc2NyaXB0cyAoYW5kIHRvIGRldGVybWluZSBzY3JpcHRcbiAqICAgICAgICAgICAgICB0eXBlKSBjaGFpbiBpcyBhbiBBUEkgcGFyYW1ldGVyIGluIHRoZSBCaXRHbyBBUEksIGFuZCBtYXkgYmVcbiAqICAgICAgICAgICAgICBhbnkgdmFsaWQgQ2hhaW5Db2RlXG4gKiBAcGFyYW0gaW5kZXggZGVyaXZhdGlvbiBpbmRleCBmb3IgdGhlIGNoYW5nZSBhZGRyZXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVXYWxsZXRPdXRwdXRGb3JQc2J0KFxuICBwc2J0OiBVdHhvUHNidCxcbiAgcm9vdFdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICBvdXRwdXRJbmRleDogbnVtYmVyLFxuICBjaGFpbjogQ2hhaW5Db2RlLFxuICBpbmRleDogbnVtYmVyXG4pOiB2b2lkIHtcbiAgcHNidC51cGRhdGVPdXRwdXQob3V0cHV0SW5kZXgsIGdldFBzYnRPdXRwdXRVcGRhdGUocHNidCwgcm9vdFdhbGxldEtleXMsIG91dHB1dEluZGV4LCBjaGFpbiwgaW5kZXgpKTtcbn1cblxuLyoqXG4gKiBBZGQgYSB2ZXJpZmlhYmxlIHdhbGxldCBvdXRwdXQgdG8gdGhlIFBTQlQuIFRoZSBvdXRwdXQgYW5kIGFsbCBkYXRhXG4gKiBuZWVkZWQgdG8gdmVyaWZ5IGl0IGZyb20gcHVibGljIGtleXMgb25seSBhcmUgYWRkZWQgdG8gdGhlIFBTQlQuXG4gKiBUeXBpY2FsbHkgdGhlc2UgYXJlIGNoYW5nZSBvdXRwdXRzLlxuICpcbiAqIEBwYXJhbSBwc2J0IHRoZSBQU0JUIHRvIGFkZCBjaGFuZ2Ugb3V0cHV0IHRvXG4gKiBAcGFyYW0gcm9vdFdhbGxldEtleXMga2V5cyB0aGF0IHdpbGwgYmUgYWJsZSB0byBzcGVuZCB0aGUgb3V0cHV0XG4gKiBAcGFyYW0gY2hhaW4gY2hhaW4gY29kZSB0byB1c2UgZm9yIGRlcml2aW5nIHNjcmlwdHMgKGFuZCB0byBkZXRlcm1pbmUgc2NyaXB0XG4gKiAgICAgICAgICAgICAgdHlwZSkgY2hhaW4gaXMgYW4gQVBJIHBhcmFtZXRlciBpbiB0aGUgQml0R28gQVBJLCBhbmQgbWF5IGJlXG4gKiAgICAgICAgICAgICAgYW55IHZhbGlkIENoYWluQ29kZVxuICogQHBhcmFtIGluZGV4IGRlcml2YXRpb24gaW5kZXggZm9yIHRoZSBjaGFuZ2UgYWRkcmVzc1xuICogQHBhcmFtIHZhbHVlIHZhbHVlIG9mIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGRXYWxsZXRPdXRwdXRUb1BzYnQoXG4gIHBzYnQ6IFV0eG9Qc2J0LFxuICByb290V2FsbGV0S2V5czogUm9vdFdhbGxldEtleXMsXG4gIGNoYWluOiBDaGFpbkNvZGUsXG4gIGluZGV4OiBudW1iZXIsXG4gIHZhbHVlOiBiaWdpbnRcbik6IHZvaWQge1xuICBjb25zdCB3YWxsZXRLZXlzID0gcm9vdFdhbGxldEtleXMuZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbiwgaW5kZXgpO1xuICBjb25zdCBzY3JpcHRUeXBlID0gc2NyaXB0VHlwZUZvckNoYWluKGNoYWluKTtcbiAgaWYgKHNjcmlwdFR5cGUgPT09ICdwMnRyJyB8fCBzY3JpcHRUeXBlID09PSAncDJ0ck11c2lnMicpIHtcbiAgICBjb25zdCBwYXltZW50ID1cbiAgICAgIHNjcmlwdFR5cGUgPT09ICdwMnRyJyA/IGNyZWF0ZVBheW1lbnRQMnRyKHdhbGxldEtleXMucHVibGljS2V5cykgOiBjcmVhdGVQYXltZW50UDJ0ck11c2lnMih3YWxsZXRLZXlzLnB1YmxpY0tleXMpO1xuICAgIHBzYnQuYWRkT3V0cHV0KHsgc2NyaXB0OiBwYXltZW50Lm91dHB1dCEsIHZhbHVlIH0pO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHsgc2NyaXB0UHViS2V5OiBzY3JpcHQgfSA9IGNyZWF0ZU91dHB1dFNjcmlwdDJvZjMod2FsbGV0S2V5cy5wdWJsaWNLZXlzLCBzY3JpcHRUeXBlKTtcbiAgICBwc2J0LmFkZE91dHB1dCh7IHNjcmlwdCwgdmFsdWUgfSk7XG4gIH1cbiAgdXBkYXRlV2FsbGV0T3V0cHV0Rm9yUHNidChwc2J0LCByb290V2FsbGV0S2V5cywgcHNidC5kYXRhLm91dHB1dHMubGVuZ3RoIC0gMSwgY2hhaW4sIGluZGV4KTtcbn1cblxuLyoqXG4gKiBGb2xkIHRoZSBzY3JpcHQgaWRzIGludG8gYSBzaW5nbGUgc2NyaXB0IGlkLCBpZiB0aGV5IGFyZSBhbGwgdGhlIHNhbWUuXG4gKiBAcGFyYW0gc2NyaXB0SWRzXG4gKi9cbmZ1bmN0aW9uIGZvbGRTY3JpcHRJZHMoc2NyaXB0SWRzOiBTY3JpcHRJZFtdKTogU2NyaXB0SWQge1xuICBpZiAoc2NyaXB0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2Fubm90IGZvbGQgZW1wdHkgc2NyaXB0IGlkcycpO1xuICB9XG4gIHNjcmlwdElkcy5mb3JFYWNoKChzY3JpcHRJZCwgaSkgPT4ge1xuICAgIGlmIChzY3JpcHRJZC5jaGFpbiAhPT0gc2NyaXB0SWRzWzBdLmNoYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNoYWluIG1pc21hdGNoOiAke3NjcmlwdElkLmNoYWlufSAhPSAke3NjcmlwdElkc1swXS5jaGFpbn1gKTtcbiAgICB9XG4gICAgaWYgKHNjcmlwdElkLmluZGV4ICE9PSBzY3JpcHRJZHNbMF0uaW5kZXgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgaW5kZXggbWlzbWF0Y2g6ICR7c2NyaXB0SWQuaW5kZXh9ICE9ICR7c2NyaXB0SWRzWzBdLmluZGV4fWApO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBzY3JpcHRJZHNbMF07XG59XG5cbi8qKlxuICogR2V0IHRoZSBzY3JpcHQgaWQgZnJvbSB0aGUgb3V0cHV0LlxuICogVGhlIG91dHB1dCBjYW4gaGF2ZSBlaXRoZXIgYmlwMzJEZXJpdmF0aW9uIG9yIHRhcEJpcDMyRGVyaXZhdGlvbiwgYnV0IG5vdCBib3RoLlxuICogQHBhcmFtIG91dHB1dFxuICogQHRocm93cyBFcnJvciBpZiBuZWl0aGVyIG9yIGJvdGggYmlwMzJEZXJpdmF0aW9uIGFuZCB0YXBCaXAzMkRlcml2YXRpb24gYXJlIHByZXNlbnRcbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIG91dHB1dCBpcyBlbXB0eVxuICogQHRocm93cyBFcnJvciBpZiB3ZSBjYW5ub3QgZm9sZCB0aGUgc2NyaXB0IGlkcyBpbnRvIGEgc2luZ2xlIHNjcmlwdCBpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0SWRGcm9tT3V0cHV0KG91dHB1dDoge1xuICBiaXAzMkRlcml2YXRpb24/OiB7IHBhdGg6IHN0cmluZyB9W107XG4gIHRhcEJpcDMyRGVyaXZhdGlvbj86IHsgcGF0aDogc3RyaW5nIH1bXTtcbn0pOiBTY3JpcHRJZCB7XG4gIGlmIChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uICYmIG91dHB1dC50YXBCaXAzMkRlcml2YXRpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2Nhbm5vdCBnZXQgc2NyaXB0IGlkIGZyb20gb3V0cHV0IHdpdGggYm90aCBiaXAzMkRlcml2YXRpb24gYW5kIHRhcEJpcDMyRGVyaXZhdGlvbicpO1xuICB9XG4gIGlmIChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgcmV0dXJuIGZvbGRTY3JpcHRJZHMob3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5tYXAoKGQpID0+IGdldFNjcmlwdElkRnJvbVBhdGgoZC5wYXRoKSkpO1xuICB9XG4gIGlmIChvdXRwdXQudGFwQmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgcmV0dXJuIGZvbGRTY3JpcHRJZHMob3V0cHV0LnRhcEJpcDMyRGVyaXZhdGlvbi5tYXAoKGQpID0+IGdldFNjcmlwdElkRnJvbVBhdGgoZC5wYXRoKSkpO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignY2Fubm90IGdldCBzY3JpcHQgaWQgZnJvbSBvdXRwdXQgd2l0aG91dCBiaXAzMkRlcml2YXRpb24gb3IgdGFwQmlwMzJEZXJpdmF0aW9uJyk7XG59XG4iXX0=
@@ -1,15 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWalletAddress = exports.getWalletOutputScripts = void 0;
3
+ exports.getWalletOutputScripts = getWalletOutputScripts;
4
+ exports.getWalletAddress = getWalletAddress;
4
5
  const __1 = require("../..");
5
6
  const __2 = require("..");
6
7
  const outputScripts_1 = require("../outputScripts");
7
8
  function getWalletOutputScripts(keys, chain, index) {
8
- return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, outputScripts_1.scriptTypeForChain(chain));
9
+ return __2.outputScripts.createOutputScript2of3(keys.deriveForChainAndIndex(chain, index).publicKeys, (0, outputScripts_1.scriptTypeForChain)(chain));
9
10
  }
10
- exports.getWalletOutputScripts = getWalletOutputScripts;
11
11
  function getWalletAddress(keys, chain, index, network) {
12
12
  return __1.address.fromOutputScript(getWalletOutputScripts(keys, chain, index).scriptPubKey, network);
13
13
  }
14
- exports.getWalletAddress = getWalletAddress;
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0U2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBeUM7QUFDekMsMEJBQThDO0FBRTlDLG9EQUF1RTtBQUV2RSxTQUFnQixzQkFBc0IsQ0FBQyxJQUFvQixFQUFFLEtBQWdCLEVBQUUsS0FBYTtJQUMxRixPQUFPLGlCQUFhLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUNwRCxrQ0FBa0IsQ0FBQyxLQUFLLENBQUMsQ0FDMUIsQ0FBQztBQUNKLENBQUM7QUFMRCx3REFLQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLElBQW9CLEVBQUUsS0FBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0I7SUFDdEcsT0FBTyxXQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEcsQ0FBQztBQUZELDRDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmV0d29yaywgYWRkcmVzcyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IENoYWluQ29kZSwgb3V0cHV0U2NyaXB0cyB9IGZyb20gJy4uJztcbmltcG9ydCB7IFJvb3RXYWxsZXRLZXlzIH0gZnJvbSAnLi9XYWxsZXRLZXlzJztcbmltcG9ydCB7IHNjcmlwdFR5cGVGb3JDaGFpbiwgU3BlbmRhYmxlU2NyaXB0IH0gZnJvbSAnLi4vb3V0cHV0U2NyaXB0cyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXYWxsZXRPdXRwdXRTY3JpcHRzKGtleXM6IFJvb3RXYWxsZXRLZXlzLCBjaGFpbjogQ2hhaW5Db2RlLCBpbmRleDogbnVtYmVyKTogU3BlbmRhYmxlU2NyaXB0IHtcbiAgcmV0dXJuIG91dHB1dFNjcmlwdHMuY3JlYXRlT3V0cHV0U2NyaXB0Mm9mMyhcbiAgICBrZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KS5wdWJsaWNLZXlzLFxuICAgIHNjcmlwdFR5cGVGb3JDaGFpbihjaGFpbilcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFdhbGxldEFkZHJlc3Moa2V5czogUm9vdFdhbGxldEtleXMsIGNoYWluOiBDaGFpbkNvZGUsIGluZGV4OiBudW1iZXIsIG5ldHdvcms6IE5ldHdvcmspOiBzdHJpbmcge1xuICByZXR1cm4gYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KGdldFdhbGxldE91dHB1dFNjcmlwdHMoa2V5cywgY2hhaW4sIGluZGV4KS5zY3JpcHRQdWJLZXksIG5ldHdvcmspO1xufVxuIl19
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0U2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0U2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLHdEQUtDO0FBRUQsNENBRUM7QUFkRCw2QkFBeUM7QUFDekMsMEJBQThDO0FBRTlDLG9EQUF1RTtBQUV2RSxTQUFnQixzQkFBc0IsQ0FBQyxJQUFvQixFQUFFLEtBQWdCLEVBQUUsS0FBYTtJQUMxRixPQUFPLGlCQUFhLENBQUMsc0JBQXNCLENBQ3pDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsVUFBVSxFQUNwRCxJQUFBLGtDQUFrQixFQUFDLEtBQUssQ0FBQyxDQUMxQixDQUFDO0FBQ0osQ0FBQztBQUVELFNBQWdCLGdCQUFnQixDQUFDLElBQW9CLEVBQUUsS0FBZ0IsRUFBRSxLQUFhLEVBQUUsT0FBZ0I7SUFDdEcsT0FBTyxXQUFPLENBQUMsZ0JBQWdCLENBQUMsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDcEcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5ldHdvcmssIGFkZHJlc3MgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBDaGFpbkNvZGUsIG91dHB1dFNjcmlwdHMgfSBmcm9tICcuLic7XG5pbXBvcnQgeyBSb290V2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBzY3JpcHRUeXBlRm9yQ2hhaW4sIFNwZW5kYWJsZVNjcmlwdCB9IGZyb20gJy4uL291dHB1dFNjcmlwdHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0V2FsbGV0T3V0cHV0U2NyaXB0cyhrZXlzOiBSb290V2FsbGV0S2V5cywgY2hhaW46IENoYWluQ29kZSwgaW5kZXg6IG51bWJlcik6IFNwZW5kYWJsZVNjcmlwdCB7XG4gIHJldHVybiBvdXRwdXRTY3JpcHRzLmNyZWF0ZU91dHB1dFNjcmlwdDJvZjMoXG4gICAga2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCkucHVibGljS2V5cyxcbiAgICBzY3JpcHRUeXBlRm9yQ2hhaW4oY2hhaW4pXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXYWxsZXRBZGRyZXNzKGtleXM6IFJvb3RXYWxsZXRLZXlzLCBjaGFpbjogQ2hhaW5Db2RlLCBpbmRleDogbnVtYmVyLCBuZXR3b3JrOiBOZXR3b3JrKTogc3RyaW5nIHtcbiAgcmV0dXJuIGFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdChnZXRXYWxsZXRPdXRwdXRTY3JpcHRzKGtleXMsIGNoYWluLCBpbmRleCkuc2NyaXB0UHViS2V5LCBuZXR3b3JrKTtcbn1cbiJdfQ==
@@ -3,31 +3,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WalletUnspentSigner = void 0;
4
4
  const WalletKeys_1 = require("./WalletKeys");
5
5
  class WalletUnspentSigner {
6
+ static from(walletKeys, signer, cosigner) {
7
+ return new WalletUnspentSigner(walletKeys, signer, cosigner);
8
+ }
6
9
  constructor(walletKeys, signer, cosigner) {
7
10
  this.signer = signer;
8
11
  this.cosigner = cosigner;
9
12
  if (Array.isArray(walletKeys)) {
10
13
  walletKeys = new WalletKeys_1.RootWalletKeys(walletKeys);
11
14
  }
12
- this.signerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, signer));
15
+ this.signerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, signer));
13
16
  if (this.signerIndex === undefined) {
14
17
  throw new Error(`signer not part of walletKeys`);
15
18
  }
16
- this.cosignerIndex = walletKeys.triple.findIndex((k) => WalletKeys_1.eqPublicKey(k, cosigner));
19
+ this.cosignerIndex = walletKeys.triple.findIndex((k) => (0, WalletKeys_1.eqPublicKey)(k, cosigner));
17
20
  if (this.cosignerIndex === undefined) {
18
21
  throw new Error(`cosigner not part of walletKeys`);
19
22
  }
20
23
  this.walletKeys = walletKeys;
21
- if (WalletKeys_1.eqPublicKey(signer, cosigner)) {
24
+ if ((0, WalletKeys_1.eqPublicKey)(signer, cosigner)) {
22
25
  throw new Error(`signer must not equal cosigner`);
23
26
  }
24
27
  if (signer.isNeutered()) {
25
28
  throw new Error(`signer must have private key`);
26
29
  }
27
30
  }
28
- static from(walletKeys, signer, cosigner) {
29
- return new WalletUnspentSigner(walletKeys, signer, cosigner);
30
- }
31
31
  /**
32
32
  * @param chain
33
33
  * @param index
@@ -44,4 +44,4 @@ class WalletUnspentSigner {
44
44
  }
45
45
  }
46
46
  exports.WalletUnspentSigner = WalletUnspentSigner;
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0VW5zcGVudFNpZ25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0VW5zcGVudFNpZ25lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw2Q0FBMEY7QUFHMUYsTUFBYSxtQkFBbUI7SUFjOUIsWUFDRSxVQUErQyxFQUN4QyxNQUFzQixFQUN0QixRQUF3QjtRQUR4QixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQUUvQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDN0IsVUFBVSxHQUFHLElBQUksMkJBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM3QztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLHdCQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDOUUsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7U0FDbEQ7UUFDRCxJQUFJLENBQUMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyx3QkFBVyxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLElBQUksSUFBSSxDQUFDLGFBQWEsS0FBSyxTQUFTLEVBQUU7WUFDcEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFlLENBQUM7UUFFbEMsSUFBSSx3QkFBVyxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsRUFBRTtZQUNqQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDbkQ7UUFDRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRTtZQUN2QixNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBcENELE1BQU0sQ0FBQyxJQUFJLENBQ1QsVUFBMEIsRUFDMUIsTUFBc0IsRUFDdEIsUUFBd0I7UUFFeEIsT0FBTyxJQUFJLG1CQUFtQixDQUFpQixVQUFVLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFnQ0Q7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pELElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSw4QkFBaUIsRUFBRTtZQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7U0FDL0Q7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLFlBQVksMkJBQWMsRUFBRTtZQUM3QyxPQUFPLElBQUksbUJBQW1CLENBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3BGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDekYsQ0FBQztTQUNIO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUE3REQsa0RBNkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQklQMzJJbnRlcmZhY2UgfSBmcm9tICdiaXAzMic7XG5cbmltcG9ydCB7IERlcml2ZWRXYWxsZXRLZXlzLCBlcVB1YmxpY0tleSwgUm9vdFdhbGxldEtleXMsIFdhbGxldEtleXMgfSBmcm9tICcuL1dhbGxldEtleXMnO1xuaW1wb3J0IHsgVHJpcGxlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgV2FsbGV0VW5zcGVudFNpZ25lcjxUIGV4dGVuZHMgV2FsbGV0S2V5cz4ge1xuICBwdWJsaWMgcmVhZG9ubHkgd2FsbGV0S2V5czogVDtcblxuICBzdGF0aWMgZnJvbShcbiAgICB3YWxsZXRLZXlzOiBSb290V2FsbGV0S2V5cyxcbiAgICBzaWduZXI6IEJJUDMySW50ZXJmYWNlLFxuICAgIGNvc2lnbmVyOiBCSVAzMkludGVyZmFjZVxuICApOiBXYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPiB7XG4gICAgcmV0dXJuIG5ldyBXYWxsZXRVbnNwZW50U2lnbmVyPFJvb3RXYWxsZXRLZXlzPih3YWxsZXRLZXlzLCBzaWduZXIsIGNvc2lnbmVyKTtcbiAgfVxuXG4gIHJlYWRvbmx5IHNpZ25lckluZGV4O1xuICByZWFkb25seSBjb3NpZ25lckluZGV4O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHdhbGxldEtleXM6IFdhbGxldEtleXMgfCBUcmlwbGU8QklQMzJJbnRlcmZhY2U+LFxuICAgIHB1YmxpYyBzaWduZXI6IEJJUDMySW50ZXJmYWNlLFxuICAgIHB1YmxpYyBjb3NpZ25lcjogQklQMzJJbnRlcmZhY2VcbiAgKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkod2FsbGV0S2V5cykpIHtcbiAgICAgIHdhbGxldEtleXMgPSBuZXcgUm9vdFdhbGxldEtleXMod2FsbGV0S2V5cyk7XG4gICAgfVxuICAgIHRoaXMuc2lnbmVySW5kZXggPSB3YWxsZXRLZXlzLnRyaXBsZS5maW5kSW5kZXgoKGspID0+IGVxUHVibGljS2V5KGssIHNpZ25lcikpO1xuICAgIGlmICh0aGlzLnNpZ25lckluZGV4ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmVyIG5vdCBwYXJ0IG9mIHdhbGxldEtleXNgKTtcbiAgICB9XG4gICAgdGhpcy5jb3NpZ25lckluZGV4ID0gd2FsbGV0S2V5cy50cmlwbGUuZmluZEluZGV4KChrKSA9PiBlcVB1YmxpY0tleShrLCBjb3NpZ25lcikpO1xuICAgIGlmICh0aGlzLmNvc2lnbmVySW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjb3NpZ25lciBub3QgcGFydCBvZiB3YWxsZXRLZXlzYCk7XG4gICAgfVxuXG4gICAgdGhpcy53YWxsZXRLZXlzID0gd2FsbGV0S2V5cyBhcyBUO1xuXG4gICAgaWYgKGVxUHVibGljS2V5KHNpZ25lciwgY29zaWduZXIpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNpZ25lciBtdXN0IG5vdCBlcXVhbCBjb3NpZ25lcmApO1xuICAgIH1cbiAgICBpZiAoc2lnbmVyLmlzTmV1dGVyZWQoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbXVzdCBoYXZlIHByaXZhdGUga2V5YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBjaGFpblxuICAgKiBAcGFyYW0gaW5kZXhcbiAgICogQHJldHVybiBXYWxsZXRVbnNwZW50U2lnbmVyIHRoYXQgY29udGFpbnMga2V5cyBmb3IgZ2VuZXJhdGluZyBvdXRwdXQgc2NyaXB0cyBhbmQgc2lnbmF0dXJlcy5cbiAgICovXG4gIGRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW46IG51bWJlciwgaW5kZXg6IG51bWJlcik6IFdhbGxldFVuc3BlbnRTaWduZXI8RGVyaXZlZFdhbGxldEtleXM+IHtcbiAgICBpZiAodGhpcy53YWxsZXRLZXlzIGluc3RhbmNlb2YgRGVyaXZlZFdhbGxldEtleXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IGRlcml2ZSBhZ2FpbiBmcm9tIERlcml2ZWRXYWxsZXRLZXlzYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMud2FsbGV0S2V5cyBpbnN0YW5jZW9mIFJvb3RXYWxsZXRLZXlzKSB7XG4gICAgICByZXR1cm4gbmV3IFdhbGxldFVuc3BlbnRTaWduZXIoXG4gICAgICAgIHRoaXMud2FsbGV0S2V5cy5kZXJpdmVGb3JDaGFpbkFuZEluZGV4KGNoYWluLCBpbmRleCksXG4gICAgICAgIHRoaXMuc2lnbmVyLmRlcml2ZVBhdGgodGhpcy53YWxsZXRLZXlzLmdldERlcml2YXRpb25QYXRoKHRoaXMuc2lnbmVyLCBjaGFpbiwgaW5kZXgpKSxcbiAgICAgICAgdGhpcy5jb3NpZ25lci5kZXJpdmVQYXRoKHRoaXMud2FsbGV0S2V5cy5nZXREZXJpdmF0aW9uUGF0aCh0aGlzLmNvc2lnbmVyLCBjaGFpbiwgaW5kZXgpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgc3RhdGVgKTtcbiAgfVxufVxuIl19
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FsbGV0VW5zcGVudFNpZ25lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9iaXRnby93YWxsZXQvV2FsbGV0VW5zcGVudFNpZ25lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw2Q0FBMEY7QUFHMUYsTUFBYSxtQkFBbUI7SUFHOUIsTUFBTSxDQUFDLElBQUksQ0FDVCxVQUEwQixFQUMxQixNQUFzQixFQUN0QixRQUF3QjtRQUV4QixPQUFPLElBQUksbUJBQW1CLENBQWlCLFVBQVUsRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUtELFlBQ0UsVUFBK0MsRUFDeEMsTUFBc0IsRUFDdEIsUUFBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBZ0I7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFFL0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDOUIsVUFBVSxHQUFHLElBQUksMkJBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSx3QkFBVyxFQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQzlFLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDbkQsQ0FBQztRQUNELElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUEsd0JBQVcsRUFBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDckMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7UUFFRCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQWUsQ0FBQztRQUVsQyxJQUFJLElBQUEsd0JBQVcsRUFBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1FBQ2xELENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHNCQUFzQixDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pELElBQUksSUFBSSxDQUFDLFVBQVUsWUFBWSw4QkFBaUIsRUFBRSxDQUFDO1lBQ2pELE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxZQUFZLDJCQUFjLEVBQUUsQ0FBQztZQUM5QyxPQUFPLElBQUksbUJBQW1CLENBQzVCLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxFQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLEVBQ3BGLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDekYsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQTdERCxrREE2REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ2JpcDMyJztcblxuaW1wb3J0IHsgRGVyaXZlZFdhbGxldEtleXMsIGVxUHVibGljS2V5LCBSb290V2FsbGV0S2V5cywgV2FsbGV0S2V5cyB9IGZyb20gJy4vV2FsbGV0S2V5cyc7XG5pbXBvcnQgeyBUcmlwbGUgfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBXYWxsZXRVbnNwZW50U2lnbmVyPFQgZXh0ZW5kcyBXYWxsZXRLZXlzPiB7XG4gIHB1YmxpYyByZWFkb25seSB3YWxsZXRLZXlzOiBUO1xuXG4gIHN0YXRpYyBmcm9tKFxuICAgIHdhbGxldEtleXM6IFJvb3RXYWxsZXRLZXlzLFxuICAgIHNpZ25lcjogQklQMzJJbnRlcmZhY2UsXG4gICAgY29zaWduZXI6IEJJUDMySW50ZXJmYWNlXG4gICk6IFdhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+IHtcbiAgICByZXR1cm4gbmV3IFdhbGxldFVuc3BlbnRTaWduZXI8Um9vdFdhbGxldEtleXM+KHdhbGxldEtleXMsIHNpZ25lciwgY29zaWduZXIpO1xuICB9XG5cbiAgcmVhZG9ubHkgc2lnbmVySW5kZXg7XG4gIHJlYWRvbmx5IGNvc2lnbmVySW5kZXg7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgd2FsbGV0S2V5czogV2FsbGV0S2V5cyB8IFRyaXBsZTxCSVAzMkludGVyZmFjZT4sXG4gICAgcHVibGljIHNpZ25lcjogQklQMzJJbnRlcmZhY2UsXG4gICAgcHVibGljIGNvc2lnbmVyOiBCSVAzMkludGVyZmFjZVxuICApIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh3YWxsZXRLZXlzKSkge1xuICAgICAgd2FsbGV0S2V5cyA9IG5ldyBSb290V2FsbGV0S2V5cyh3YWxsZXRLZXlzKTtcbiAgICB9XG4gICAgdGhpcy5zaWduZXJJbmRleCA9IHdhbGxldEtleXMudHJpcGxlLmZpbmRJbmRleCgoaykgPT4gZXFQdWJsaWNLZXkoaywgc2lnbmVyKSk7XG4gICAgaWYgKHRoaXMuc2lnbmVySW5kZXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBzaWduZXIgbm90IHBhcnQgb2Ygd2FsbGV0S2V5c2ApO1xuICAgIH1cbiAgICB0aGlzLmNvc2lnbmVySW5kZXggPSB3YWxsZXRLZXlzLnRyaXBsZS5maW5kSW5kZXgoKGspID0+IGVxUHVibGljS2V5KGssIGNvc2lnbmVyKSk7XG4gICAgaWYgKHRoaXMuY29zaWduZXJJbmRleCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGNvc2lnbmVyIG5vdCBwYXJ0IG9mIHdhbGxldEtleXNgKTtcbiAgICB9XG5cbiAgICB0aGlzLndhbGxldEtleXMgPSB3YWxsZXRLZXlzIGFzIFQ7XG5cbiAgICBpZiAoZXFQdWJsaWNLZXkoc2lnbmVyLCBjb3NpZ25lcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgc2lnbmVyIG11c3Qgbm90IGVxdWFsIGNvc2lnbmVyYCk7XG4gICAgfVxuICAgIGlmIChzaWduZXIuaXNOZXV0ZXJlZCgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYHNpZ25lciBtdXN0IGhhdmUgcHJpdmF0ZSBrZXlgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGNoYWluXG4gICAqIEBwYXJhbSBpbmRleFxuICAgKiBAcmV0dXJuIFdhbGxldFVuc3BlbnRTaWduZXIgdGhhdCBjb250YWlucyBrZXlzIGZvciBnZW5lcmF0aW5nIG91dHB1dCBzY3JpcHRzIGFuZCBzaWduYXR1cmVzLlxuICAgKi9cbiAgZGVyaXZlRm9yQ2hhaW5BbmRJbmRleChjaGFpbjogbnVtYmVyLCBpbmRleDogbnVtYmVyKTogV2FsbGV0VW5zcGVudFNpZ25lcjxEZXJpdmVkV2FsbGV0S2V5cz4ge1xuICAgIGlmICh0aGlzLndhbGxldEtleXMgaW5zdGFuY2VvZiBEZXJpdmVkV2FsbGV0S2V5cykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW5ub3QgZGVyaXZlIGFnYWluIGZyb20gRGVyaXZlZFdhbGxldEtleXNgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy53YWxsZXRLZXlzIGluc3RhbmNlb2YgUm9vdFdhbGxldEtleXMpIHtcbiAgICAgIHJldHVybiBuZXcgV2FsbGV0VW5zcGVudFNpZ25lcihcbiAgICAgICAgdGhpcy53YWxsZXRLZXlzLmRlcml2ZUZvckNoYWluQW5kSW5kZXgoY2hhaW4sIGluZGV4KSxcbiAgICAgICAgdGhpcy5zaWduZXIuZGVyaXZlUGF0aCh0aGlzLndhbGxldEtleXMuZ2V0RGVyaXZhdGlvblBhdGgodGhpcy5zaWduZXIsIGNoYWluLCBpbmRleCkpLFxuICAgICAgICB0aGlzLmNvc2lnbmVyLmRlcml2ZVBhdGgodGhpcy53YWxsZXRLZXlzLmdldERlcml2YXRpb25QYXRoKHRoaXMuY29zaWduZXIsIGNoYWluLCBpbmRleCkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBzdGF0ZWApO1xuICB9XG59XG4iXX0=
@@ -18,14 +18,14 @@ export declare const chainCodesP2shP2wsh: readonly [10, 11];
18
18
  export declare const chainCodesP2wsh: readonly [20, 21];
19
19
  export declare const chainCodesP2tr: readonly [30, 31];
20
20
  export declare const chainCodesP2trMusig2: readonly [40, 41];
21
- export declare const chainCodes: (0 | 1 | 31 | 10 | 11 | 20 | 21 | 30 | 40 | 41)[];
22
- export declare type ChainCode = (typeof chainCodes)[number];
21
+ export declare const chainCodes: (0 | 1 | 31 | 30 | 10 | 11 | 20 | 21 | 40 | 41)[];
22
+ export type ChainCode = (typeof chainCodes)[number];
23
23
  export declare function isChainCode(n: unknown): n is ChainCode;
24
24
  /**
25
25
  * A script type maps to two ChainCodes:
26
26
  * External addresses are intended for deposits, internal addresses are intended for change outputs.
27
27
  */
28
- export declare type ChainCodePair = Readonly<[external: ChainCode, internal: ChainCode]>;
28
+ export type ChainCodePair = Readonly<[external: ChainCode, internal: ChainCode]>;
29
29
  /**
30
30
  * @return ChainCodePair for input
31
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,iBAAkB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAoB,CAAC;AACrD,eAAO,MAAM,eAAe,mBAAoB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAoB,CAAC;AAChD,eAAO,MAAM,oBAAoB,mBAAoB,CAAC;AACtD,eAAO,MAAM,UAAU,mDAMtB,CAAC;AACF,oBAAY,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAEtD;AAED;;;GAGG;AACH,oBAAY,aAAa,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAcjF;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,CAiBxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAOnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAQ9C"}
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../../src/bitgo/wallet/chains.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,cAAc,iBAAkB,CAAC;AAC9C,eAAO,MAAM,mBAAmB,mBAAoB,CAAC;AACrD,eAAO,MAAM,eAAe,mBAAoB,CAAC;AACjD,eAAO,MAAM,cAAc,mBAAoB,CAAC;AAChD,eAAO,MAAM,oBAAoB,mBAAoB,CAAC;AACtD,eAAO,MAAM,UAAU,mDAMtB,CAAC;AACF,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACpD,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAEtD;AAED;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAcjF;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,cAAc,GAAG,aAAa,CAiBxF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,cAAc,CAOnE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,CAE7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAQ9C"}