@bitgo-beta/abstract-utxo 1.6.1-alpha.237 → 1.6.1-alpha.239

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 (180) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/src/abstractUtxoCoin.d.ts +28 -47
  3. package/dist/src/abstractUtxoCoin.d.ts.map +1 -1
  4. package/dist/src/abstractUtxoCoin.js +140 -451
  5. package/dist/src/core/descriptor/DescriptorMap.d.ts +9 -0
  6. package/dist/src/core/descriptor/DescriptorMap.d.ts.map +1 -0
  7. package/dist/src/core/descriptor/DescriptorMap.js +9 -0
  8. package/dist/src/core/descriptor/Output.d.ts +24 -0
  9. package/dist/src/core/descriptor/Output.d.ts.map +1 -0
  10. package/dist/src/core/descriptor/Output.js +22 -0
  11. package/dist/src/core/descriptor/VirtualSize.d.ts +21 -0
  12. package/dist/src/core/descriptor/VirtualSize.d.ts.map +1 -0
  13. package/dist/src/core/descriptor/VirtualSize.js +83 -0
  14. package/dist/src/core/descriptor/address.d.ts +5 -0
  15. package/dist/src/core/descriptor/address.d.ts.map +1 -0
  16. package/dist/src/core/descriptor/address.js +48 -0
  17. package/dist/src/core/descriptor/index.d.ts +9 -0
  18. package/dist/src/core/descriptor/index.d.ts.map +1 -0
  19. package/dist/src/core/descriptor/index.js +17 -0
  20. package/dist/src/core/descriptor/psbt/assertSatisfiable.d.ts +20 -0
  21. package/dist/src/core/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  22. package/dist/src/core/descriptor/psbt/assertSatisfiable.js +75 -0
  23. package/dist/src/core/descriptor/psbt/createPsbt.d.ts +15 -0
  24. package/dist/src/core/descriptor/psbt/createPsbt.d.ts.map +1 -0
  25. package/dist/src/core/descriptor/psbt/createPsbt.js +83 -0
  26. package/dist/src/core/descriptor/psbt/findDescriptors.d.ts +22 -0
  27. package/dist/src/core/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  28. package/dist/src/core/descriptor/psbt/findDescriptors.js +75 -0
  29. package/dist/src/core/descriptor/psbt/index.d.ts +5 -0
  30. package/dist/src/core/descriptor/psbt/index.d.ts.map +1 -0
  31. package/dist/src/core/descriptor/psbt/index.js +10 -0
  32. package/dist/src/core/descriptor/psbt/parse.d.ts +27 -0
  33. package/dist/src/core/descriptor/psbt/parse.d.ts.map +1 -0
  34. package/dist/src/core/descriptor/psbt/parse.js +87 -0
  35. package/dist/src/core/descriptor/psbt/wrap.d.ts +12 -0
  36. package/dist/src/core/descriptor/psbt/wrap.d.ts.map +1 -0
  37. package/dist/src/core/descriptor/psbt/wrap.js +76 -0
  38. package/dist/src/core/descriptor/signTxLocal.d.ts +3 -0
  39. package/dist/src/core/descriptor/signTxLocal.d.ts.map +1 -0
  40. package/dist/src/core/descriptor/signTxLocal.js +9 -0
  41. package/dist/src/descriptor/NamedDescriptor.js +35 -2
  42. package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts +2 -1
  43. package/dist/src/descriptor/assertDescriptorWalletAddress.d.ts.map +1 -1
  44. package/dist/src/descriptor/assertDescriptorWalletAddress.js +46 -17
  45. package/dist/src/descriptor/builder/builder.d.ts +13 -0
  46. package/dist/src/descriptor/builder/builder.d.ts.map +1 -0
  47. package/dist/src/descriptor/builder/builder.js +35 -0
  48. package/dist/src/descriptor/builder/index.d.ts +3 -0
  49. package/dist/src/descriptor/builder/index.d.ts.map +1 -0
  50. package/dist/src/descriptor/builder/index.js +8 -0
  51. package/dist/src/descriptor/builder/parse.d.ts +5 -0
  52. package/dist/src/descriptor/builder/parse.d.ts.map +1 -0
  53. package/dist/src/descriptor/builder/parse.js +138 -0
  54. package/dist/src/descriptor/descriptorWallet.d.ts +19 -0
  55. package/dist/src/descriptor/descriptorWallet.d.ts.map +1 -0
  56. package/dist/src/descriptor/descriptorWallet.js +58 -0
  57. package/dist/src/descriptor/index.d.ts +1 -0
  58. package/dist/src/descriptor/index.d.ts.map +1 -1
  59. package/dist/src/descriptor/index.js +7 -2
  60. package/dist/src/index.d.ts +3 -0
  61. package/dist/src/index.d.ts.map +1 -1
  62. package/dist/src/index.js +29 -3
  63. package/dist/src/keychains.d.ts +10 -0
  64. package/dist/src/keychains.d.ts.map +1 -0
  65. package/dist/src/keychains.js +20 -0
  66. package/dist/src/names.d.ts +13 -0
  67. package/dist/src/names.d.ts.map +1 -0
  68. package/dist/src/names.js +175 -0
  69. package/dist/src/recovery/RecoveryProvider.js +2 -3
  70. package/dist/src/recovery/backupKeyRecovery.d.ts +0 -3
  71. package/dist/src/recovery/backupKeyRecovery.d.ts.map +1 -1
  72. package/dist/src/recovery/backupKeyRecovery.js +50 -18
  73. package/dist/src/recovery/baseApi.d.ts +1 -4
  74. package/dist/src/recovery/baseApi.d.ts.map +1 -1
  75. package/dist/src/recovery/baseApi.js +6 -6
  76. package/dist/src/recovery/coingeckoApi.d.ts +0 -3
  77. package/dist/src/recovery/coingeckoApi.d.ts.map +1 -1
  78. package/dist/src/recovery/coingeckoApi.js +1 -4
  79. package/dist/src/recovery/crossChainRecovery.d.ts.map +1 -1
  80. package/dist/src/recovery/crossChainRecovery.js +44 -12
  81. package/dist/src/recovery/mempoolApi.d.ts.map +1 -1
  82. package/dist/src/recovery/mempoolApi.js +7 -7
  83. package/dist/src/replayProtection.js +37 -5
  84. package/dist/src/sign.d.ts +0 -3
  85. package/dist/src/sign.d.ts.map +1 -1
  86. package/dist/src/sign.js +44 -11
  87. package/dist/src/transaction/descriptor/explainPsbt.d.ts +5 -0
  88. package/dist/src/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  89. package/dist/src/transaction/descriptor/explainPsbt.js +80 -0
  90. package/dist/src/transaction/descriptor/index.d.ts +3 -0
  91. package/dist/src/transaction/descriptor/index.d.ts.map +1 -0
  92. package/dist/src/transaction/descriptor/index.js +6 -0
  93. package/dist/src/transaction/explainTransaction.d.ts +17 -0
  94. package/dist/src/transaction/explainTransaction.d.ts.map +1 -0
  95. package/dist/src/transaction/explainTransaction.js +55 -0
  96. package/dist/src/transaction/fetchInputs.d.ts +26 -0
  97. package/dist/src/transaction/fetchInputs.d.ts.map +1 -0
  98. package/dist/src/transaction/fetchInputs.js +110 -0
  99. package/dist/src/transaction/fixedScript/explainTransaction.d.ts +30 -0
  100. package/dist/src/transaction/fixedScript/explainTransaction.d.ts.map +1 -0
  101. package/dist/src/transaction/fixedScript/explainTransaction.js +220 -0
  102. package/dist/src/transaction/fixedScript/index.d.ts +5 -0
  103. package/dist/src/transaction/fixedScript/index.d.ts.map +1 -0
  104. package/dist/src/transaction/fixedScript/index.js +11 -0
  105. package/dist/src/{parseOutput.d.ts → transaction/fixedScript/parseOutput.d.ts} +6 -6
  106. package/dist/src/transaction/fixedScript/parseOutput.d.ts.map +1 -0
  107. package/dist/src/transaction/fixedScript/parseOutput.js +214 -0
  108. package/dist/src/transaction/fixedScript/parseTransaction.d.ts +9 -0
  109. package/dist/src/transaction/fixedScript/parseTransaction.d.ts.map +1 -0
  110. package/dist/src/transaction/fixedScript/parseTransaction.js +207 -0
  111. package/dist/src/transaction/fixedScript/verifyTransaction.d.ts +4 -0
  112. package/dist/src/transaction/fixedScript/verifyTransaction.d.ts.map +1 -0
  113. package/dist/src/transaction/fixedScript/verifyTransaction.js +177 -0
  114. package/dist/src/transaction/index.d.ts +6 -0
  115. package/dist/src/transaction/index.d.ts.map +1 -0
  116. package/dist/src/transaction/index.js +26 -0
  117. package/dist/src/transaction/parseTransaction.d.ts +3 -0
  118. package/dist/src/transaction/parseTransaction.d.ts.map +1 -0
  119. package/dist/src/transaction/parseTransaction.js +47 -0
  120. package/dist/src/transaction/recipient.d.ts +28 -0
  121. package/dist/src/transaction/recipient.d.ts.map +1 -0
  122. package/dist/src/transaction/recipient.js +80 -0
  123. package/dist/src/transaction/verifyTransaction.d.ts +4 -0
  124. package/dist/src/transaction/verifyTransaction.d.ts.map +1 -0
  125. package/dist/src/transaction/verifyTransaction.js +47 -0
  126. package/dist/src/verifyKey.d.ts +27 -0
  127. package/dist/src/verifyKey.d.ts.map +1 -0
  128. package/dist/src/verifyKey.js +168 -0
  129. package/dist/test/core/descriptor/descriptor.utils.d.ts +10 -0
  130. package/dist/test/core/descriptor/descriptor.utils.d.ts.map +1 -0
  131. package/dist/test/core/descriptor/descriptor.utils.js +63 -0
  132. package/dist/test/core/descriptor/psbt/VirtualSize.d.ts +2 -0
  133. package/dist/test/core/descriptor/psbt/VirtualSize.d.ts.map +1 -0
  134. package/dist/test/core/descriptor/psbt/VirtualSize.js +78 -0
  135. package/dist/test/core/descriptor/psbt/assertSatisfiable.d.ts +2 -0
  136. package/dist/test/core/descriptor/psbt/assertSatisfiable.d.ts.map +1 -0
  137. package/dist/test/core/descriptor/psbt/assertSatisfiable.js +56 -0
  138. package/dist/test/core/descriptor/psbt/createPsbt.d.ts +2 -0
  139. package/dist/test/core/descriptor/psbt/createPsbt.d.ts.map +1 -0
  140. package/dist/test/core/descriptor/psbt/createPsbt.js +85 -0
  141. package/dist/test/core/descriptor/psbt/findDescriptors.d.ts +2 -0
  142. package/dist/test/core/descriptor/psbt/findDescriptors.d.ts.map +1 -0
  143. package/dist/test/core/descriptor/psbt/findDescriptors.js +66 -0
  144. package/dist/test/core/descriptor/psbt/mock.utils.d.ts +34 -0
  145. package/dist/test/core/descriptor/psbt/mock.utils.d.ts.map +1 -0
  146. package/dist/test/core/descriptor/psbt/mock.utils.js +89 -0
  147. package/dist/test/core/descriptor/psbt/parse.d.ts +2 -0
  148. package/dist/test/core/descriptor/psbt/parse.d.ts.map +1 -0
  149. package/dist/test/core/descriptor/psbt/parse.js +32 -0
  150. package/dist/test/core/descriptor/psbt/psbt.utils.d.ts +4 -0
  151. package/dist/test/core/descriptor/psbt/psbt.utils.d.ts.map +1 -0
  152. package/dist/test/core/descriptor/psbt/psbt.utils.js +20 -0
  153. package/dist/test/core/fixtures.utils.d.ts +15 -0
  154. package/dist/test/core/fixtures.utils.d.ts.map +1 -0
  155. package/dist/test/core/fixtures.utils.js +114 -0
  156. package/dist/test/core/key.utils.d.ts +16 -0
  157. package/dist/test/core/key.utils.d.ts.map +1 -0
  158. package/dist/test/core/key.utils.js +59 -0
  159. package/dist/test/core/toPlainObject.utils.d.ts +11 -0
  160. package/dist/test/core/toPlainObject.utils.d.ts.map +1 -0
  161. package/dist/test/core/toPlainObject.utils.js +76 -0
  162. package/dist/test/descriptor/builder.d.ts +2 -0
  163. package/dist/test/descriptor/builder.d.ts.map +1 -0
  164. package/dist/test/descriptor/builder.js +70 -0
  165. package/dist/test/descriptor/descriptorWallet.d.ts +2 -0
  166. package/dist/test/descriptor/descriptorWallet.d.ts.map +1 -0
  167. package/dist/test/descriptor/descriptorWallet.js +24 -0
  168. package/dist/test/outputDifference.d.ts +2 -0
  169. package/dist/test/outputDifference.d.ts.map +1 -0
  170. package/dist/test/outputDifference.js +86 -0
  171. package/dist/test/transaction/descriptor/explainPsbt.d.ts +2 -0
  172. package/dist/test/transaction/descriptor/explainPsbt.d.ts.map +1 -0
  173. package/dist/test/transaction/descriptor/explainPsbt.js +31 -0
  174. package/dist/tsconfig.tsbuildinfo +1 -1
  175. package/package.json +13 -10
  176. package/dist/src/parseOutput.d.ts.map +0 -1
  177. package/dist/src/parseOutput.js +0 -215
  178. package/dist/src/transaction.d.ts +0 -64
  179. package/dist/src/transaction.d.ts.map +0 -1
  180. package/dist/src/transaction.js +0 -323
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.findDescriptorForInput = findDescriptorForInput;
4
+ exports.findDescriptorForOutput = findDescriptorForOutput;
5
+ /**
6
+ * Find a descriptor in the descriptor map that matches the given script and derivation index.
7
+ * @param script
8
+ * @param index
9
+ * @param descriptorMap
10
+ * @returns DescriptorWithIndex if found, undefined otherwise
11
+ */
12
+ function findDescriptorForDerivationIndex(script, index, descriptorMap) {
13
+ for (const descriptor of descriptorMap.values()) {
14
+ if (Buffer.from(descriptor.atDerivationIndex(index).scriptPubkey()).equals(script)) {
15
+ return { descriptor, index };
16
+ }
17
+ }
18
+ return undefined;
19
+ }
20
+ function getDerivationIndexFromPath(path) {
21
+ const indexStr = path.split('/').pop();
22
+ if (!indexStr) {
23
+ throw new Error('Invalid derivation path');
24
+ }
25
+ const index = parseInt(indexStr, 10);
26
+ if (index.toString() !== indexStr) {
27
+ throw new Error(`Invalid derivation path ${path}`);
28
+ }
29
+ return index;
30
+ }
31
+ /**
32
+ * Wrapper around findDescriptorForDerivationPath that tries multiple derivation paths.
33
+ * @param script
34
+ * @param derivationPaths
35
+ * @param descriptorMap
36
+ */
37
+ function findDescriptorForAnyDerivationPath(script, derivationPaths, descriptorMap) {
38
+ const derivationIndexSet = new Set(derivationPaths.map((p) => getDerivationIndexFromPath(p)));
39
+ for (const index of [...derivationIndexSet]) {
40
+ const desc = findDescriptorForDerivationIndex(script, index, descriptorMap);
41
+ if (desc) {
42
+ return desc;
43
+ }
44
+ }
45
+ return undefined;
46
+ }
47
+ /**
48
+ * @param input
49
+ * @param descriptorMap
50
+ * @returns DescriptorWithIndex for the input if found, undefined otherwise
51
+ */
52
+ function findDescriptorForInput(input, descriptorMap) {
53
+ var _a;
54
+ const script = (_a = input.witnessUtxo) === null || _a === void 0 ? void 0 : _a.script;
55
+ if (!script) {
56
+ throw new Error('Missing script');
57
+ }
58
+ if (!input.bip32Derivation) {
59
+ throw new Error('Missing derivation paths');
60
+ }
61
+ return findDescriptorForAnyDerivationPath(script, input.bip32Derivation.map((v) => v.path), descriptorMap);
62
+ }
63
+ /**
64
+ * @param script - the output script
65
+ * @param output - the PSBT output
66
+ * @param descriptorMap
67
+ * @returns DescriptorWithIndex for the output if found, undefined otherwise
68
+ */
69
+ function findDescriptorForOutput(script, output, descriptorMap) {
70
+ if (!output.bip32Derivation) {
71
+ return undefined;
72
+ }
73
+ return findDescriptorForAnyDerivationPath(script, output.bip32Derivation.map((d) => d.path), descriptorMap);
74
+ }
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZERlc2NyaXB0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvcmUvZGVzY3JpcHRvci9wc2J0L2ZpbmREZXNjcmlwdG9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQThFQSx3REFnQkM7QUFRRCwwREFhQztBQWpHRDs7Ozs7O0dBTUc7QUFDSCxTQUFTLGdDQUFnQyxDQUN2QyxNQUFjLEVBQ2QsS0FBYSxFQUNiLGFBQTRCO0lBRTVCLEtBQUssTUFBTSxVQUFVLElBQUksYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDaEQsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ25GLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDO0FBRUQsU0FBUywwQkFBMEIsQ0FBQyxJQUFZO0lBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdkMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JDLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxrQ0FBa0MsQ0FDekMsTUFBYyxFQUNkLGVBQXlCLEVBQ3pCLGFBQTRCO0lBRTVCLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsMEJBQTBCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlGLEtBQUssTUFBTSxLQUFLLElBQUksQ0FBQyxHQUFHLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxnQ0FBZ0MsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQzVFLElBQUksSUFBSSxFQUFFLENBQUM7WUFDVCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixzQkFBc0IsQ0FDcEMsS0FBZ0IsRUFDaEIsYUFBNEI7O0lBRTVCLE1BQU0sTUFBTSxHQUFHLE1BQUEsS0FBSyxDQUFDLFdBQVcsMENBQUUsTUFBTSxDQUFDO0lBQ3pDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUMzQixNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUNELE9BQU8sa0NBQWtDLENBQ3ZDLE1BQU0sRUFDTixLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUN4QyxhQUFhLENBQ2QsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLHVCQUF1QixDQUNyQyxNQUFjLEVBQ2QsTUFBa0IsRUFDbEIsYUFBNEI7SUFFNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QixPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsT0FBTyxrQ0FBa0MsQ0FDdkMsTUFBTSxFQUNOLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQ3pDLGFBQWEsQ0FDZCxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5cblV0aWxpdGllcyBmb3IgbWFwcGluZyBiYWNrIGZyb20gUFNCVCBpbnB1dHMgdG8gZGVzY3JpcHRvcnMuXG5cblRoaXMgaXMgYSBzb21ld2hhdCBicnV0ZS1mb3JjZSBhdHRlbXB0IHRoYXQgcmVsaWVzIG9uIHRoZSBgYmlwMzJEZXJpdmF0aW9uYCBmaWVsZCB0byBiZSBzZXQuXG5cbkl0IHdpbGwgcHJvYmFibHkgb25seSB3b3JrIGNvcnJlY3RseSBpZiBhbGwgeHB1YnMgaW4gdGhlIGRlc2NyaXB0b3IgYXJlIGRlcml2YWJsZS5cblxuV2Ugc2hvdWxkIHRha2UgYSBsb29rIGF0IGEgbW9yZSByb2J1c3QgYW5kIHN0YW5kYXJkIGFwcHJvYWNoIGxpa2UgdGhpczogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYmlwcy9wdWxsLzE1NDhcblxuICovXG5pbXBvcnQgeyBQc2J0SW5wdXQsIFBzYnRPdXRwdXQgfSBmcm9tICdiaXAxNzQvc3JjL2xpYi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcblxuaW1wb3J0IHsgRGVzY3JpcHRvck1hcCB9IGZyb20gJy4uL0Rlc2NyaXB0b3JNYXAnO1xuXG50eXBlIERlc2NyaXB0b3JXaXRoSW5kZXggPSB7IGRlc2NyaXB0b3I6IERlc2NyaXB0b3I7IGluZGV4OiBudW1iZXIgfTtcblxuLyoqXG4gKiBGaW5kIGEgZGVzY3JpcHRvciBpbiB0aGUgZGVzY3JpcHRvciBtYXAgdGhhdCBtYXRjaGVzIHRoZSBnaXZlbiBzY3JpcHQgYW5kIGRlcml2YXRpb24gaW5kZXguXG4gKiBAcGFyYW0gc2NyaXB0XG4gKiBAcGFyYW0gaW5kZXhcbiAqIEBwYXJhbSBkZXNjcmlwdG9yTWFwXG4gKiBAcmV0dXJucyBEZXNjcmlwdG9yV2l0aEluZGV4IGlmIGZvdW5kLCB1bmRlZmluZWQgb3RoZXJ3aXNlXG4gKi9cbmZ1bmN0aW9uIGZpbmREZXNjcmlwdG9yRm9yRGVyaXZhdGlvbkluZGV4KFxuICBzY3JpcHQ6IEJ1ZmZlcixcbiAgaW5kZXg6IG51bWJlcixcbiAgZGVzY3JpcHRvck1hcDogRGVzY3JpcHRvck1hcFxuKTogRGVzY3JpcHRvcldpdGhJbmRleCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3QgZGVzY3JpcHRvciBvZiBkZXNjcmlwdG9yTWFwLnZhbHVlcygpKSB7XG4gICAgaWYgKEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3IuYXREZXJpdmF0aW9uSW5kZXgoaW5kZXgpLnNjcmlwdFB1YmtleSgpKS5lcXVhbHMoc2NyaXB0KSkge1xuICAgICAgcmV0dXJuIHsgZGVzY3JpcHRvciwgaW5kZXggfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBnZXREZXJpdmF0aW9uSW5kZXhGcm9tUGF0aChwYXRoOiBzdHJpbmcpOiBudW1iZXIge1xuICBjb25zdCBpbmRleFN0ciA9IHBhdGguc3BsaXQoJy8nKS5wb3AoKTtcbiAgaWYgKCFpbmRleFN0cikge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBkZXJpdmF0aW9uIHBhdGgnKTtcbiAgfVxuICBjb25zdCBpbmRleCA9IHBhcnNlSW50KGluZGV4U3RyLCAxMCk7XG4gIGlmIChpbmRleC50b1N0cmluZygpICE9PSBpbmRleFN0cikge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBkZXJpdmF0aW9uIHBhdGggJHtwYXRofWApO1xuICB9XG4gIHJldHVybiBpbmRleDtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGFyb3VuZCBmaW5kRGVzY3JpcHRvckZvckRlcml2YXRpb25QYXRoIHRoYXQgdHJpZXMgbXVsdGlwbGUgZGVyaXZhdGlvbiBwYXRocy5cbiAqIEBwYXJhbSBzY3JpcHRcbiAqIEBwYXJhbSBkZXJpdmF0aW9uUGF0aHNcbiAqIEBwYXJhbSBkZXNjcmlwdG9yTWFwXG4gKi9cbmZ1bmN0aW9uIGZpbmREZXNjcmlwdG9yRm9yQW55RGVyaXZhdGlvblBhdGgoXG4gIHNjcmlwdDogQnVmZmVyLFxuICBkZXJpdmF0aW9uUGF0aHM6IHN0cmluZ1tdLFxuICBkZXNjcmlwdG9yTWFwOiBEZXNjcmlwdG9yTWFwXG4pOiBEZXNjcmlwdG9yV2l0aEluZGV4IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVyaXZhdGlvbkluZGV4U2V0ID0gbmV3IFNldChkZXJpdmF0aW9uUGF0aHMubWFwKChwKSA9PiBnZXREZXJpdmF0aW9uSW5kZXhGcm9tUGF0aChwKSkpO1xuICBmb3IgKGNvbnN0IGluZGV4IG9mIFsuLi5kZXJpdmF0aW9uSW5kZXhTZXRdKSB7XG4gICAgY29uc3QgZGVzYyA9IGZpbmREZXNjcmlwdG9yRm9yRGVyaXZhdGlvbkluZGV4KHNjcmlwdCwgaW5kZXgsIGRlc2NyaXB0b3JNYXApO1xuICAgIGlmIChkZXNjKSB7XG4gICAgICByZXR1cm4gZGVzYztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBwYXJhbSBpbnB1dFxuICogQHBhcmFtIGRlc2NyaXB0b3JNYXBcbiAqIEByZXR1cm5zIERlc2NyaXB0b3JXaXRoSW5kZXggZm9yIHRoZSBpbnB1dCBpZiBmb3VuZCwgdW5kZWZpbmVkIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlc2NyaXB0b3JGb3JJbnB1dChcbiAgaW5wdXQ6IFBzYnRJbnB1dCxcbiAgZGVzY3JpcHRvck1hcDogRGVzY3JpcHRvck1hcFxuKTogRGVzY3JpcHRvcldpdGhJbmRleCB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHNjcmlwdCA9IGlucHV0LndpdG5lc3NVdHhvPy5zY3JpcHQ7XG4gIGlmICghc2NyaXB0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHNjcmlwdCcpO1xuICB9XG4gIGlmICghaW5wdXQuYmlwMzJEZXJpdmF0aW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIGRlcml2YXRpb24gcGF0aHMnKTtcbiAgfVxuICByZXR1cm4gZmluZERlc2NyaXB0b3JGb3JBbnlEZXJpdmF0aW9uUGF0aChcbiAgICBzY3JpcHQsXG4gICAgaW5wdXQuYmlwMzJEZXJpdmF0aW9uLm1hcCgodikgPT4gdi5wYXRoKSxcbiAgICBkZXNjcmlwdG9yTWFwXG4gICk7XG59XG5cbi8qKlxuICogQHBhcmFtIHNjcmlwdCAtIHRoZSBvdXRwdXQgc2NyaXB0XG4gKiBAcGFyYW0gb3V0cHV0IC0gdGhlIFBTQlQgb3V0cHV0XG4gKiBAcGFyYW0gZGVzY3JpcHRvck1hcFxuICogQHJldHVybnMgRGVzY3JpcHRvcldpdGhJbmRleCBmb3IgdGhlIG91dHB1dCBpZiBmb3VuZCwgdW5kZWZpbmVkIG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluZERlc2NyaXB0b3JGb3JPdXRwdXQoXG4gIHNjcmlwdDogQnVmZmVyLFxuICBvdXRwdXQ6IFBzYnRPdXRwdXQsXG4gIGRlc2NyaXB0b3JNYXA6IERlc2NyaXB0b3JNYXBcbik6IERlc2NyaXB0b3JXaXRoSW5kZXggfCB1bmRlZmluZWQge1xuICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24pIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIHJldHVybiBmaW5kRGVzY3JpcHRvckZvckFueURlcml2YXRpb25QYXRoKFxuICAgIHNjcmlwdCxcbiAgICBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLm1hcCgoZCkgPT4gZC5wYXRoKSxcbiAgICBkZXNjcmlwdG9yTWFwXG4gICk7XG59XG4iXX0=
@@ -0,0 +1,5 @@
1
+ export type { PsbtParams } from './createPsbt';
2
+ export { createPsbt } from './createPsbt';
3
+ export { parse } from './parse';
4
+ export { finalizePsbt } from './wrap';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/descriptor/psbt/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.finalizePsbt = exports.parse = exports.createPsbt = void 0;
4
+ var createPsbt_1 = require("./createPsbt");
5
+ Object.defineProperty(exports, "createPsbt", { enumerable: true, get: function () { return createPsbt_1.createPsbt; } });
6
+ var parse_1 = require("./parse");
7
+ Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parse_1.parse; } });
8
+ var wrap_1 = require("./wrap");
9
+ Object.defineProperty(exports, "finalizePsbt", { enumerable: true, get: function () { return wrap_1.finalizePsbt; } });
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9kZXNjcmlwdG9yL3BzYnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkNBQTBDO0FBQWpDLHdHQUFBLFVBQVUsT0FBQTtBQUNuQixpQ0FBZ0M7QUFBdkIsOEZBQUEsS0FBSyxPQUFBO0FBRWQsK0JBQXNDO0FBQTdCLG9HQUFBLFlBQVksT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHsgUHNidFBhcmFtcyB9IGZyb20gJy4vY3JlYXRlUHNidCc7XG5leHBvcnQgeyBjcmVhdGVQc2J0IH0gZnJvbSAnLi9jcmVhdGVQc2J0JztcbmV4cG9ydCB7IHBhcnNlIH0gZnJvbSAnLi9wYXJzZSc7XG5cbmV4cG9ydCB7IGZpbmFsaXplUHNidCB9IGZyb20gJy4vd3JhcCc7XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import { Descriptor } from '@bitgo/wasm-miniscript';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ import { DescriptorMap } from '../DescriptorMap';
4
+ export type ScriptId = {
5
+ descriptor: Descriptor;
6
+ index: number;
7
+ };
8
+ export type ParsedInput = {
9
+ address: string;
10
+ value: bigint;
11
+ scriptId: ScriptId;
12
+ };
13
+ export type ParsedOutput = {
14
+ address?: string;
15
+ script: Buffer;
16
+ value: bigint;
17
+ scriptId?: ScriptId;
18
+ };
19
+ export type ParsedDescriptorTransaction = {
20
+ inputs: ParsedInput[];
21
+ outputs: ParsedOutput[];
22
+ spendAmount: bigint;
23
+ minerFee: bigint;
24
+ virtualSize: number;
25
+ };
26
+ export declare function parse(psbt: utxolib.Psbt, descriptorMap: DescriptorMap, network: utxolib.Network): ParsedDescriptorTransaction;
27
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../../src/core/descriptor/psbt/parse.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAKjD,MAAM,MAAM,QAAQ,GAAG;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjE,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF,wBAAgB,KAAK,CACnB,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,2BAA2B,CA0C7B"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = 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);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parse = parse;
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ const VirtualSize_1 = require("../VirtualSize");
39
+ const findDescriptors_1 = require("./findDescriptors");
40
+ const assertSatisfiable_1 = require("./assertSatisfiable");
41
+ function sum(...values) {
42
+ return values.reduce((a, b) => a + b, BigInt(0));
43
+ }
44
+ function parse(psbt, descriptorMap, network) {
45
+ const inputs = psbt.data.inputs.map((input, inputIndex) => {
46
+ if (!input.witnessUtxo) {
47
+ throw new Error('invalid input: no witnessUtxo');
48
+ }
49
+ if (!input.witnessUtxo.value) {
50
+ throw new Error('invalid input: no value');
51
+ }
52
+ const descriptorWithIndex = (0, findDescriptors_1.findDescriptorForInput)(input, descriptorMap);
53
+ if (!descriptorWithIndex) {
54
+ throw new Error('invalid input: no descriptor found');
55
+ }
56
+ (0, assertSatisfiable_1.assertSatisfiable)(psbt, inputIndex, descriptorWithIndex.descriptor);
57
+ return {
58
+ address: utxolib.address.fromOutputScript(input.witnessUtxo.script, network),
59
+ value: input.witnessUtxo.value,
60
+ scriptId: descriptorWithIndex,
61
+ };
62
+ });
63
+ const outputs = psbt.txOutputs.map((output, i) => {
64
+ if (output.value === undefined) {
65
+ throw new Error('invalid output: no value');
66
+ }
67
+ const descriptorWithIndex = (0, findDescriptors_1.findDescriptorForOutput)(output.script, psbt.data.outputs[i], descriptorMap);
68
+ return {
69
+ address: output.address,
70
+ script: output.script,
71
+ value: output.value,
72
+ scriptId: descriptorWithIndex,
73
+ };
74
+ });
75
+ const inputAmount = sum(...inputs.map((input) => input.value));
76
+ const outputSum = sum(...outputs.map((output) => output.value));
77
+ const spendAmount = sum(...outputs.filter((output) => !('descriptor' in output)).map((output) => output.value));
78
+ const minerFee = inputAmount - outputSum;
79
+ return {
80
+ inputs,
81
+ outputs,
82
+ spendAmount,
83
+ minerFee,
84
+ virtualSize: (0, VirtualSize_1.getVirtualSize)({ inputs: inputs.map((i) => i.scriptId.descriptor), outputs }),
85
+ };
86
+ }
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29yZS9kZXNjcmlwdG9yL3BzYnQvcGFyc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFtQ0Esc0JBOENDO0FBaEZELDhEQUFnRDtBQUdoRCxnREFBZ0Q7QUFDaEQsdURBQW9GO0FBQ3BGLDJEQUF3RDtBQXlCeEQsU0FBUyxHQUFHLENBQUMsR0FBRyxNQUFnQjtJQUM5QixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxTQUFnQixLQUFLLENBQ25CLElBQWtCLEVBQ2xCLGFBQTRCLEVBQzVCLE9BQXdCO0lBRXhCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQWUsRUFBRTtRQUNyRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdDLENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUFHLElBQUEsd0NBQXNCLEVBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUN4RCxDQUFDO1FBQ0QsSUFBQSxxQ0FBaUIsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLG1CQUFtQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BFLE9BQU87WUFDTCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7WUFDNUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSztZQUM5QixRQUFRLEVBQUUsbUJBQW1CO1NBQzlCLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBZ0IsRUFBRTtRQUM3RCxJQUFJLE1BQU0sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0IsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlDLENBQUM7UUFDRCxNQUFNLG1CQUFtQixHQUFHLElBQUEseUNBQXVCLEVBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUN4RyxPQUFPO1lBQ0wsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1lBQ3ZCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsUUFBUSxFQUFFLG1CQUFtQjtTQUM5QixDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7SUFDSCxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMvRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoRSxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNoSCxNQUFNLFFBQVEsR0FBRyxXQUFXLEdBQUcsU0FBUyxDQUFDO0lBQ3pDLE9BQU87UUFDTCxNQUFNO1FBQ04sT0FBTztRQUNQLFdBQVc7UUFDWCxRQUFRO1FBQ1IsV0FBVyxFQUFFLElBQUEsNEJBQWMsRUFBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDO0tBQzNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmltcG9ydCB7IERlc2NyaXB0b3JNYXAgfSBmcm9tICcuLi9EZXNjcmlwdG9yTWFwJztcbmltcG9ydCB7IGdldFZpcnR1YWxTaXplIH0gZnJvbSAnLi4vVmlydHVhbFNpemUnO1xuaW1wb3J0IHsgZmluZERlc2NyaXB0b3JGb3JJbnB1dCwgZmluZERlc2NyaXB0b3JGb3JPdXRwdXQgfSBmcm9tICcuL2ZpbmREZXNjcmlwdG9ycyc7XG5pbXBvcnQgeyBhc3NlcnRTYXRpc2ZpYWJsZSB9IGZyb20gJy4vYXNzZXJ0U2F0aXNmaWFibGUnO1xuXG5leHBvcnQgdHlwZSBTY3JpcHRJZCA9IHsgZGVzY3JpcHRvcjogRGVzY3JpcHRvcjsgaW5kZXg6IG51bWJlciB9O1xuXG5leHBvcnQgdHlwZSBQYXJzZWRJbnB1dCA9IHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICB2YWx1ZTogYmlnaW50O1xuICBzY3JpcHRJZDogU2NyaXB0SWQ7XG59O1xuXG5leHBvcnQgdHlwZSBQYXJzZWRPdXRwdXQgPSB7XG4gIGFkZHJlc3M/OiBzdHJpbmc7XG4gIHNjcmlwdDogQnVmZmVyO1xuICB2YWx1ZTogYmlnaW50O1xuICBzY3JpcHRJZD86IFNjcmlwdElkO1xufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VkRGVzY3JpcHRvclRyYW5zYWN0aW9uID0ge1xuICBpbnB1dHM6IFBhcnNlZElucHV0W107XG4gIG91dHB1dHM6IFBhcnNlZE91dHB1dFtdO1xuICBzcGVuZEFtb3VudDogYmlnaW50O1xuICBtaW5lckZlZTogYmlnaW50O1xuICB2aXJ0dWFsU2l6ZTogbnVtYmVyO1xufTtcblxuZnVuY3Rpb24gc3VtKC4uLnZhbHVlczogYmlnaW50W10pOiBiaWdpbnQge1xuICByZXR1cm4gdmFsdWVzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIEJpZ0ludCgwKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZShcbiAgcHNidDogdXR4b2xpYi5Qc2J0LFxuICBkZXNjcmlwdG9yTWFwOiBEZXNjcmlwdG9yTWFwLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IFBhcnNlZERlc2NyaXB0b3JUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IGlucHV0cyA9IHBzYnQuZGF0YS5pbnB1dHMubWFwKChpbnB1dCwgaW5wdXRJbmRleCk6IFBhcnNlZElucHV0ID0+IHtcbiAgICBpZiAoIWlucHV0LndpdG5lc3NVdHhvKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgaW5wdXQ6IG5vIHdpdG5lc3NVdHhvJyk7XG4gICAgfVxuICAgIGlmICghaW5wdXQud2l0bmVzc1V0eG8udmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBpbnB1dDogbm8gdmFsdWUnKTtcbiAgICB9XG4gICAgY29uc3QgZGVzY3JpcHRvcldpdGhJbmRleCA9IGZpbmREZXNjcmlwdG9yRm9ySW5wdXQoaW5wdXQsIGRlc2NyaXB0b3JNYXApO1xuICAgIGlmICghZGVzY3JpcHRvcldpdGhJbmRleCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGlucHV0OiBubyBkZXNjcmlwdG9yIGZvdW5kJyk7XG4gICAgfVxuICAgIGFzc2VydFNhdGlzZmlhYmxlKHBzYnQsIGlucHV0SW5kZXgsIGRlc2NyaXB0b3JXaXRoSW5kZXguZGVzY3JpcHRvcik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KGlucHV0LndpdG5lc3NVdHhvLnNjcmlwdCwgbmV0d29yayksXG4gICAgICB2YWx1ZTogaW5wdXQud2l0bmVzc1V0eG8udmFsdWUsXG4gICAgICBzY3JpcHRJZDogZGVzY3JpcHRvcldpdGhJbmRleCxcbiAgICB9O1xuICB9KTtcbiAgY29uc3Qgb3V0cHV0cyA9IHBzYnQudHhPdXRwdXRzLm1hcCgob3V0cHV0LCBpKTogUGFyc2VkT3V0cHV0ID0+IHtcbiAgICBpZiAob3V0cHV0LnZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignaW52YWxpZCBvdXRwdXQ6IG5vIHZhbHVlJyk7XG4gICAgfVxuICAgIGNvbnN0IGRlc2NyaXB0b3JXaXRoSW5kZXggPSBmaW5kRGVzY3JpcHRvckZvck91dHB1dChvdXRwdXQuc2NyaXB0LCBwc2J0LmRhdGEub3V0cHV0c1tpXSwgZGVzY3JpcHRvck1hcCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFkZHJlc3M6IG91dHB1dC5hZGRyZXNzLFxuICAgICAgc2NyaXB0OiBvdXRwdXQuc2NyaXB0LFxuICAgICAgdmFsdWU6IG91dHB1dC52YWx1ZSxcbiAgICAgIHNjcmlwdElkOiBkZXNjcmlwdG9yV2l0aEluZGV4LFxuICAgIH07XG4gIH0pO1xuICBjb25zdCBpbnB1dEFtb3VudCA9IHN1bSguLi5pbnB1dHMubWFwKChpbnB1dCkgPT4gaW5wdXQudmFsdWUpKTtcbiAgY29uc3Qgb3V0cHV0U3VtID0gc3VtKC4uLm91dHB1dHMubWFwKChvdXRwdXQpID0+IG91dHB1dC52YWx1ZSkpO1xuICBjb25zdCBzcGVuZEFtb3VudCA9IHN1bSguLi5vdXRwdXRzLmZpbHRlcigob3V0cHV0KSA9PiAhKCdkZXNjcmlwdG9yJyBpbiBvdXRwdXQpKS5tYXAoKG91dHB1dCkgPT4gb3V0cHV0LnZhbHVlKSk7XG4gIGNvbnN0IG1pbmVyRmVlID0gaW5wdXRBbW91bnQgLSBvdXRwdXRTdW07XG4gIHJldHVybiB7XG4gICAgaW5wdXRzLFxuICAgIG91dHB1dHMsXG4gICAgc3BlbmRBbW91bnQsXG4gICAgbWluZXJGZWUsXG4gICAgdmlydHVhbFNpemU6IGdldFZpcnR1YWxTaXplKHsgaW5wdXRzOiBpbnB1dHMubWFwKChpKSA9PiBpLnNjcmlwdElkLmRlc2NyaXB0b3IpLCBvdXRwdXRzIH0pLFxuICB9O1xufVxuIl19
@@ -0,0 +1,12 @@
1
+ import { Psbt as WasmPsbt } from '@bitgo/wasm-miniscript';
2
+ import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ export declare function toWrappedPsbt(psbt: utxolib.bitgo.UtxoPsbt | utxolib.Psbt | Buffer | Uint8Array): WasmPsbt;
4
+ export declare function toUtxoPsbt(psbt: WasmPsbt | Buffer | Uint8Array, network: utxolib.Network): utxolib.bitgo.UtxoPsbt;
5
+ /**
6
+ * Use `wasm-miniscript` to finalize a PSBT.
7
+ * Miniscript based finalization is more powerful than bitcoinjs-lib's / utxo-lib's finalization
8
+ * and can finalize more complex scripts (e.g. miniscript descriptors).
9
+ * @param psbt
10
+ */
11
+ export declare function finalizePsbt(psbt: utxolib.bitgo.UtxoPsbt): void;
12
+ //# sourceMappingURL=wrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrap.d.ts","sourceRoot":"","sources":["../../../../../src/core/descriptor/psbt/wrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,CAQzG;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAQjH;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAU/D"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = 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);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.toWrappedPsbt = toWrappedPsbt;
37
+ exports.toUtxoPsbt = toUtxoPsbt;
38
+ exports.finalizePsbt = finalizePsbt;
39
+ const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
40
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
41
+ function toWrappedPsbt(psbt) {
42
+ if (psbt instanceof utxolib.bitgo.UtxoPsbt || psbt instanceof utxolib.Psbt) {
43
+ psbt = psbt.toBuffer();
44
+ }
45
+ if (psbt instanceof Buffer || psbt instanceof Uint8Array) {
46
+ return wasm_miniscript_1.Psbt.deserialize(psbt);
47
+ }
48
+ throw new Error('Invalid input');
49
+ }
50
+ function toUtxoPsbt(psbt, network) {
51
+ if (psbt instanceof wasm_miniscript_1.Psbt) {
52
+ psbt = psbt.serialize();
53
+ }
54
+ if (psbt instanceof Buffer || psbt instanceof Uint8Array) {
55
+ return utxolib.bitgo.UtxoPsbt.fromBuffer(Buffer.from(psbt), { network });
56
+ }
57
+ throw new Error('Invalid input');
58
+ }
59
+ /**
60
+ * Use `wasm-miniscript` to finalize a PSBT.
61
+ * Miniscript based finalization is more powerful than bitcoinjs-lib's / utxo-lib's finalization
62
+ * and can finalize more complex scripts (e.g. miniscript descriptors).
63
+ * @param psbt
64
+ */
65
+ function finalizePsbt(psbt) {
66
+ if (utxolib.getMainnet(psbt.network) !== utxolib.networks.bitcoin) {
67
+ throw new Error('only bitcoin and testnet are supported');
68
+ }
69
+ const wrappedPsbt = toWrappedPsbt(psbt);
70
+ wrappedPsbt.finalize();
71
+ const unwrappedPsbt = toUtxoPsbt(wrappedPsbt, psbt.network);
72
+ for (let i = 0; i < psbt.data.inputs.length; i++) {
73
+ psbt.data.inputs[i] = unwrappedPsbt.data.inputs[i];
74
+ }
75
+ }
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb3JlL2Rlc2NyaXB0b3IvcHNidC93cmFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0Esc0NBUUM7QUFFRCxnQ0FRQztBQVFELG9DQVVDO0FBdkNELDREQUEwRDtBQUMxRCw4REFBZ0Q7QUFFaEQsU0FBZ0IsYUFBYSxDQUFDLElBQWlFO0lBQzdGLElBQUksSUFBSSxZQUFZLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksWUFBWSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0UsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxJQUFJLFlBQVksTUFBTSxJQUFJLElBQUksWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUN6RCxPQUFPLHNCQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLENBQUM7QUFFRCxTQUFnQixVQUFVLENBQUMsSUFBb0MsRUFBRSxPQUF3QjtJQUN2RixJQUFJLElBQUksWUFBWSxzQkFBUSxFQUFFLENBQUM7UUFDN0IsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBQ0QsSUFBSSxJQUFJLFlBQVksTUFBTSxJQUFJLElBQUksWUFBWSxVQUFVLEVBQUUsQ0FBQztRQUN6RCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNuQyxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixZQUFZLENBQUMsSUFBNEI7SUFDdkQsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2xFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0NBQXdDLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUN2QixNQUFNLGFBQWEsR0FBRyxVQUFVLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQc2J0IGFzIFdhc21Qc2J0IH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvV3JhcHBlZFBzYnQocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB8IHV0eG9saWIuUHNidCB8IEJ1ZmZlciB8IFVpbnQ4QXJyYXkpOiBXYXNtUHNidCB7XG4gIGlmIChwc2J0IGluc3RhbmNlb2YgdXR4b2xpYi5iaXRnby5VdHhvUHNidCB8fCBwc2J0IGluc3RhbmNlb2YgdXR4b2xpYi5Qc2J0KSB7XG4gICAgcHNidCA9IHBzYnQudG9CdWZmZXIoKTtcbiAgfVxuICBpZiAocHNidCBpbnN0YW5jZW9mIEJ1ZmZlciB8fCBwc2J0IGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgIHJldHVybiBXYXNtUHNidC5kZXNlcmlhbGl6ZShwc2J0KTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgaW5wdXQnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvVXR4b1BzYnQocHNidDogV2FzbVBzYnQgfCBCdWZmZXIgfCBVaW50OEFycmF5LCBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmspOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgaWYgKHBzYnQgaW5zdGFuY2VvZiBXYXNtUHNidCkge1xuICAgIHBzYnQgPSBwc2J0LnNlcmlhbGl6ZSgpO1xuICB9XG4gIGlmIChwc2J0IGluc3RhbmNlb2YgQnVmZmVyIHx8IHBzYnQgaW5zdGFuY2VvZiBVaW50OEFycmF5KSB7XG4gICAgcmV0dXJuIHV0eG9saWIuYml0Z28uVXR4b1BzYnQuZnJvbUJ1ZmZlcihCdWZmZXIuZnJvbShwc2J0KSwgeyBuZXR3b3JrIH0pO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBpbnB1dCcpO1xufVxuXG4vKipcbiAqIFVzZSBgd2FzbS1taW5pc2NyaXB0YCB0byBmaW5hbGl6ZSBhIFBTQlQuXG4gKiBNaW5pc2NyaXB0IGJhc2VkIGZpbmFsaXphdGlvbiBpcyBtb3JlIHBvd2VyZnVsIHRoYW4gYml0Y29pbmpzLWxpYidzIC8gdXR4by1saWIncyBmaW5hbGl6YXRpb25cbiAqIGFuZCBjYW4gZmluYWxpemUgbW9yZSBjb21wbGV4IHNjcmlwdHMgKGUuZy4gbWluaXNjcmlwdCBkZXNjcmlwdG9ycykuXG4gKiBAcGFyYW0gcHNidFxuICovXG5leHBvcnQgZnVuY3Rpb24gZmluYWxpemVQc2J0KHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQpOiB2b2lkIHtcbiAgaWYgKHV0eG9saWIuZ2V0TWFpbm5ldChwc2J0Lm5ldHdvcmspICE9PSB1dHhvbGliLm5ldHdvcmtzLmJpdGNvaW4pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ29ubHkgYml0Y29pbiBhbmQgdGVzdG5ldCBhcmUgc3VwcG9ydGVkJyk7XG4gIH1cbiAgY29uc3Qgd3JhcHBlZFBzYnQgPSB0b1dyYXBwZWRQc2J0KHBzYnQpO1xuICB3cmFwcGVkUHNidC5maW5hbGl6ZSgpO1xuICBjb25zdCB1bndyYXBwZWRQc2J0ID0gdG9VdHhvUHNidCh3cmFwcGVkUHNidCwgcHNidC5uZXR3b3JrKTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwc2J0LmRhdGEuaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgcHNidC5kYXRhLmlucHV0c1tpXSA9IHVud3JhcHBlZFBzYnQuZGF0YS5pbnB1dHNbaV07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare function signTxLocal(tx: utxolib.bitgo.UtxoPsbt, key: utxolib.BIP32Interface): utxolib.bitgo.UtxoPsbt;
3
+ //# sourceMappingURL=signTxLocal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signTxLocal.d.ts","sourceRoot":"","sources":["../../../../src/core/descriptor/signTxLocal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,wBAAgB,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAI3G"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signTxLocal = signTxLocal;
4
+ function signTxLocal(tx, key) {
5
+ tx = tx.clone();
6
+ tx.signAllInputsHD(key);
7
+ return tx;
8
+ }
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnblR4TG9jYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29yZS9kZXNjcmlwdG9yL3NpZ25UeExvY2FsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBRUEsa0NBSUM7QUFKRCxTQUFnQixXQUFXLENBQUMsRUFBMEIsRUFBRSxHQUEyQjtJQUNqRixFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hCLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEIsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduVHhMb2NhbCh0eDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCwga2V5OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIHR4ID0gdHguY2xvbmUoKTtcbiAgdHguc2lnbkFsbElucHV0c0hEKGtleSk7XG4gIHJldHVybiB0eDtcbn1cbiJdfQ==
@@ -1,9 +1,42 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = 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);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.NamedDescriptor = void 0;
4
- const t = require("io-ts");
37
+ const t = __importStar(require("io-ts"));
5
38
  exports.NamedDescriptor = t.type({
6
39
  name: t.string,
7
40
  value: t.string,
8
41
  });
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZWREZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvTmFtZWREZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJCQUEyQjtBQUVkLFFBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuXG5leHBvcnQgY29uc3QgTmFtZWREZXNjcmlwdG9yID0gdC50eXBlKHtcbiAgbmFtZTogdC5zdHJpbmcsXG4gIHZhbHVlOiB0LnN0cmluZyxcbn0pO1xuXG5leHBvcnQgdHlwZSBOYW1lZERlc2NyaXB0b3IgPSB0LlR5cGVPZjx0eXBlb2YgTmFtZWREZXNjcmlwdG9yPjtcbiJdfQ==
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTmFtZWREZXNjcmlwdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Rlc2NyaXB0b3IvTmFtZWREZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlDQUEyQjtBQUVkLFFBQUEsZUFBZSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ2QsS0FBSyxFQUFFLENBQUMsQ0FBQyxNQUFNO0NBQ2hCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHQgZnJvbSAnaW8tdHMnO1xuXG5leHBvcnQgY29uc3QgTmFtZWREZXNjcmlwdG9yID0gdC50eXBlKHtcbiAgbmFtZTogdC5zdHJpbmcsXG4gIHZhbHVlOiB0LnN0cmluZyxcbn0pO1xuXG5leHBvcnQgdHlwZSBOYW1lZERlc2NyaXB0b3IgPSB0LlR5cGVPZjx0eXBlb2YgTmFtZWREZXNjcmlwdG9yPjtcbiJdfQ==
@@ -1,4 +1,5 @@
1
1
  import * as utxolib from '@bitgo-beta/utxo-lib';
2
2
  import { UtxoCoinSpecific, VerifyAddressOptions } from '../abstractUtxoCoin';
3
- export declare function assertDescriptorWalletAddress(network: utxolib.Network, params: VerifyAddressOptions<UtxoCoinSpecific>, descriptors: unknown): void;
3
+ import { DescriptorMap } from '../core/descriptor';
4
+ export declare function assertDescriptorWalletAddress(network: utxolib.Network, params: VerifyAddressOptions<UtxoCoinSpecific>, descriptors: DescriptorMap): void;
4
5
  //# sourceMappingURL=assertDescriptorWalletAddress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assertDescriptorWalletAddress.d.ts","sourceRoot":"","sources":["../../../src/descriptor/assertDescriptorWalletAddress.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAW7E,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,MAAM,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,EAC9C,WAAW,EAAE,OAAO,GACnB,IAAI,CAuBN"}
1
+ {"version":3,"file":"assertDescriptorWalletAddress.d.ts","sourceRoot":"","sources":["../../../src/descriptor/assertDescriptorWalletAddress.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,MAAM,EAAE,oBAAoB,CAAC,gBAAgB,CAAC,EAC9C,WAAW,EAAE,aAAa,GACzB,IAAI,CAoBN"}
@@ -1,28 +1,58 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = 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);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
2
38
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertDescriptorWalletAddress = void 0;
4
- const assert = require("assert");
5
- const t = require("io-ts");
6
- const utxolib = require("@bitgo-beta/utxo-lib");
7
- const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
8
- const NamedDescriptor_1 = require("./NamedDescriptor");
39
+ exports.assertDescriptorWalletAddress = assertDescriptorWalletAddress;
40
+ const assert_1 = __importDefault(require("assert"));
41
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
9
42
  class DescriptorAddressMismatchError extends Error {
10
43
  constructor(descriptor, index, derivedAddress, expectedAddress) {
11
44
  super(`Address mismatch for descriptor ${descriptor.toString()} at index ${index}: ${derivedAddress} !== ${expectedAddress}`);
12
45
  }
13
46
  }
14
47
  function assertDescriptorWalletAddress(network, params, descriptors) {
15
- assert(params.coinSpecific);
16
- assert(t.array(NamedDescriptor_1.NamedDescriptor).is(descriptors));
17
- assert('descriptorName' in params.coinSpecific);
18
- assert('descriptorChecksum' in params.coinSpecific);
19
- const descriptorName = params.coinSpecific.descriptorName;
20
- const descriptorChecksum = params.coinSpecific.descriptorChecksum;
21
- const namedDescriptor = descriptors.find((d) => d.name === descriptorName);
22
- if (!namedDescriptor) {
48
+ (0, assert_1.default)(params.coinSpecific);
49
+ (0, assert_1.default)('descriptorName' in params.coinSpecific);
50
+ (0, assert_1.default)('descriptorChecksum' in params.coinSpecific);
51
+ const { descriptorName, descriptorChecksum } = params.coinSpecific;
52
+ const descriptor = descriptors.get(params.coinSpecific.descriptorName);
53
+ if (!descriptor) {
23
54
  throw new Error(`Descriptor ${descriptorName} not found`);
24
55
  }
25
- const descriptor = wasm_miniscript_1.Descriptor.fromString(namedDescriptor.value, 'derivable');
26
56
  const checksum = descriptor.toString().slice(-8);
27
57
  if (checksum !== descriptorChecksum) {
28
58
  throw new Error(`Descriptor checksum mismatch for descriptor name=${descriptorName}: ${checksum} !== ${descriptorChecksum}`);
@@ -33,5 +63,4 @@ function assertDescriptorWalletAddress(network, params, descriptors) {
33
63
  throw new DescriptorAddressMismatchError(descriptor, params.index, derivedAddress, params.address);
34
64
  }
35
65
  }
36
- exports.assertDescriptorWalletAddress = assertDescriptorWalletAddress;
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0RGVzY3JpcHRvcldhbGxldEFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9hc3NlcnREZXNjcmlwdG9yV2FsbGV0QWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxpQ0FBaUM7QUFDakMsMkJBQTJCO0FBQzNCLGdEQUFnRDtBQUNoRCw0REFBb0Q7QUFHcEQsdURBQW9EO0FBRXBELE1BQU0sOEJBQStCLFNBQVEsS0FBSztJQUNoRCxZQUFZLFVBQXNCLEVBQUUsS0FBYSxFQUFFLGNBQXNCLEVBQUUsZUFBdUI7UUFDaEcsS0FBSyxDQUNILG1DQUFtQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsS0FBSyxLQUFLLGNBQWMsUUFBUSxlQUFlLEVBQUUsQ0FDdkgsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELFNBQWdCLDZCQUE2QixDQUMzQyxPQUF3QixFQUN4QixNQUE4QyxFQUM5QyxXQUFvQjtJQUVwQixNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVCLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGlDQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNqRCxNQUFNLENBQUMsZ0JBQWdCLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hELE1BQU0sQ0FBQyxvQkFBb0IsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDcEQsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUM7SUFDMUQsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLGtCQUFrQixDQUFDO0lBQ2xFLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7SUFDM0UsSUFBSSxDQUFDLGVBQWUsRUFBRTtRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLGNBQWMsY0FBYyxZQUFZLENBQUMsQ0FBQztLQUMzRDtJQUNELE1BQU0sVUFBVSxHQUFHLDRCQUFVLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDN0UsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksUUFBUSxLQUFLLGtCQUFrQixFQUFFO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2Isb0RBQW9ELGNBQWMsS0FBSyxRQUFRLFFBQVEsa0JBQWtCLEVBQUUsQ0FDNUcsQ0FBQztLQUNIO0lBQ0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDN0YsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLGNBQWMsRUFBRTtRQUNyQyxNQUFNLElBQUksOEJBQThCLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsY0FBYyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztLQUNwRztBQUNILENBQUM7QUEzQkQsc0VBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgKiBhcyB0IGZyb20gJ2lvLXRzJztcbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG5pbXBvcnQgeyBVdHhvQ29pblNwZWNpZmljLCBWZXJpZnlBZGRyZXNzT3B0aW9ucyB9IGZyb20gJy4uL2Fic3RyYWN0VXR4b0NvaW4nO1xuaW1wb3J0IHsgTmFtZWREZXNjcmlwdG9yIH0gZnJvbSAnLi9OYW1lZERlc2NyaXB0b3InO1xuXG5jbGFzcyBEZXNjcmlwdG9yQWRkcmVzc01pc21hdGNoRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGRlc2NyaXB0b3I6IERlc2NyaXB0b3IsIGluZGV4OiBudW1iZXIsIGRlcml2ZWRBZGRyZXNzOiBzdHJpbmcsIGV4cGVjdGVkQWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoXG4gICAgICBgQWRkcmVzcyBtaXNtYXRjaCBmb3IgZGVzY3JpcHRvciAke2Rlc2NyaXB0b3IudG9TdHJpbmcoKX0gYXQgaW5kZXggJHtpbmRleH06ICR7ZGVyaXZlZEFkZHJlc3N9ICE9PSAke2V4cGVjdGVkQWRkcmVzc31gXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RGVzY3JpcHRvcldhbGxldEFkZHJlc3MoXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAgcGFyYW1zOiBWZXJpZnlBZGRyZXNzT3B0aW9uczxVdHhvQ29pblNwZWNpZmljPixcbiAgZGVzY3JpcHRvcnM6IHVua25vd25cbik6IHZvaWQge1xuICBhc3NlcnQocGFyYW1zLmNvaW5TcGVjaWZpYyk7XG4gIGFzc2VydCh0LmFycmF5KE5hbWVkRGVzY3JpcHRvcikuaXMoZGVzY3JpcHRvcnMpKTtcbiAgYXNzZXJ0KCdkZXNjcmlwdG9yTmFtZScgaW4gcGFyYW1zLmNvaW5TcGVjaWZpYyk7XG4gIGFzc2VydCgnZGVzY3JpcHRvckNoZWNrc3VtJyBpbiBwYXJhbXMuY29pblNwZWNpZmljKTtcbiAgY29uc3QgZGVzY3JpcHRvck5hbWUgPSBwYXJhbXMuY29pblNwZWNpZmljLmRlc2NyaXB0b3JOYW1lO1xuICBjb25zdCBkZXNjcmlwdG9yQ2hlY2tzdW0gPSBwYXJhbXMuY29pblNwZWNpZmljLmRlc2NyaXB0b3JDaGVja3N1bTtcbiAgY29uc3QgbmFtZWREZXNjcmlwdG9yID0gZGVzY3JpcHRvcnMuZmluZCgoZCkgPT4gZC5uYW1lID09PSBkZXNjcmlwdG9yTmFtZSk7XG4gIGlmICghbmFtZWREZXNjcmlwdG9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXNjcmlwdG9yICR7ZGVzY3JpcHRvck5hbWV9IG5vdCBmb3VuZGApO1xuICB9XG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBEZXNjcmlwdG9yLmZyb21TdHJpbmcobmFtZWREZXNjcmlwdG9yLnZhbHVlLCAnZGVyaXZhYmxlJyk7XG4gIGNvbnN0IGNoZWNrc3VtID0gZGVzY3JpcHRvci50b1N0cmluZygpLnNsaWNlKC04KTtcbiAgaWYgKGNoZWNrc3VtICE9PSBkZXNjcmlwdG9yQ2hlY2tzdW0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgRGVzY3JpcHRvciBjaGVja3N1bSBtaXNtYXRjaCBmb3IgZGVzY3JpcHRvciBuYW1lPSR7ZGVzY3JpcHRvck5hbWV9OiAke2NoZWNrc3VtfSAhPT0gJHtkZXNjcmlwdG9yQ2hlY2tzdW19YFxuICAgICk7XG4gIH1cbiAgY29uc3QgZGVyaXZlZFNjcmlwdCA9IEJ1ZmZlci5mcm9tKGRlc2NyaXB0b3IuYXREZXJpdmF0aW9uSW5kZXgocGFyYW1zLmluZGV4KS5zY3JpcHRQdWJrZXkoKSk7XG4gIGNvbnN0IGRlcml2ZWRBZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQoZGVyaXZlZFNjcmlwdCwgbmV0d29yayk7XG4gIGlmIChwYXJhbXMuYWRkcmVzcyAhPT0gZGVyaXZlZEFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRGVzY3JpcHRvckFkZHJlc3NNaXNtYXRjaEVycm9yKGRlc2NyaXB0b3IsIHBhcmFtcy5pbmRleCwgZGVyaXZlZEFkZHJlc3MsIHBhcmFtcy5hZGRyZXNzKTtcbiAgfVxufVxuIl19
66
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXJ0RGVzY3JpcHRvcldhbGxldEFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9hc3NlcnREZXNjcmlwdG9yV2FsbGV0QWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWVBLHNFQXdCQztBQXZDRCxvREFBNEI7QUFDNUIsOERBQWdEO0FBTWhELE1BQU0sOEJBQStCLFNBQVEsS0FBSztJQUNoRCxZQUFZLFVBQXNCLEVBQUUsS0FBYSxFQUFFLGNBQXNCLEVBQUUsZUFBdUI7UUFDaEcsS0FBSyxDQUNILG1DQUFtQyxVQUFVLENBQUMsUUFBUSxFQUFFLGFBQWEsS0FBSyxLQUFLLGNBQWMsUUFBUSxlQUFlLEVBQUUsQ0FDdkgsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELFNBQWdCLDZCQUE2QixDQUMzQyxPQUF3QixFQUN4QixNQUE4QyxFQUM5QyxXQUEwQjtJQUUxQixJQUFBLGdCQUFNLEVBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVCLElBQUEsZ0JBQU0sRUFBQyxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEQsSUFBQSxnQkFBTSxFQUFDLG9CQUFvQixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRCxNQUFNLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNuRSxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdkUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxjQUFjLFlBQVksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsSUFBSSxRQUFRLEtBQUssa0JBQWtCLEVBQUUsQ0FBQztRQUNwQyxNQUFNLElBQUksS0FBSyxDQUNiLG9EQUFvRCxjQUFjLEtBQUssUUFBUSxRQUFRLGtCQUFrQixFQUFFLENBQzVHLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7SUFDN0YsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDaEYsSUFBSSxNQUFNLENBQUMsT0FBTyxLQUFLLGNBQWMsRUFBRSxDQUFDO1FBQ3RDLE1BQU0sSUFBSSw4QkFBOEIsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxjQUFjLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JHLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5cbmltcG9ydCB7IFV0eG9Db2luU3BlY2lmaWMsIFZlcmlmeUFkZHJlc3NPcHRpb25zIH0gZnJvbSAnLi4vYWJzdHJhY3RVdHhvQ29pbic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yTWFwIH0gZnJvbSAnLi4vY29yZS9kZXNjcmlwdG9yJztcblxuY2xhc3MgRGVzY3JpcHRvckFkZHJlc3NNaXNtYXRjaEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihkZXNjcmlwdG9yOiBEZXNjcmlwdG9yLCBpbmRleDogbnVtYmVyLCBkZXJpdmVkQWRkcmVzczogc3RyaW5nLCBleHBlY3RlZEFkZHJlc3M6IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgYEFkZHJlc3MgbWlzbWF0Y2ggZm9yIGRlc2NyaXB0b3IgJHtkZXNjcmlwdG9yLnRvU3RyaW5nKCl9IGF0IGluZGV4ICR7aW5kZXh9OiAke2Rlcml2ZWRBZGRyZXNzfSAhPT0gJHtleHBlY3RlZEFkZHJlc3N9YFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydERlc2NyaXB0b3JXYWxsZXRBZGRyZXNzKFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIHBhcmFtczogVmVyaWZ5QWRkcmVzc09wdGlvbnM8VXR4b0NvaW5TcGVjaWZpYz4sXG4gIGRlc2NyaXB0b3JzOiBEZXNjcmlwdG9yTWFwXG4pOiB2b2lkIHtcbiAgYXNzZXJ0KHBhcmFtcy5jb2luU3BlY2lmaWMpO1xuICBhc3NlcnQoJ2Rlc2NyaXB0b3JOYW1lJyBpbiBwYXJhbXMuY29pblNwZWNpZmljKTtcbiAgYXNzZXJ0KCdkZXNjcmlwdG9yQ2hlY2tzdW0nIGluIHBhcmFtcy5jb2luU3BlY2lmaWMpO1xuICBjb25zdCB7IGRlc2NyaXB0b3JOYW1lLCBkZXNjcmlwdG9yQ2hlY2tzdW0gfSA9IHBhcmFtcy5jb2luU3BlY2lmaWM7XG4gIGNvbnN0IGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9ycy5nZXQocGFyYW1zLmNvaW5TcGVjaWZpYy5kZXNjcmlwdG9yTmFtZSk7XG4gIGlmICghZGVzY3JpcHRvcikge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGVzY3JpcHRvciAke2Rlc2NyaXB0b3JOYW1lfSBub3QgZm91bmRgKTtcbiAgfVxuICBjb25zdCBjaGVja3N1bSA9IGRlc2NyaXB0b3IudG9TdHJpbmcoKS5zbGljZSgtOCk7XG4gIGlmIChjaGVja3N1bSAhPT0gZGVzY3JpcHRvckNoZWNrc3VtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERlc2NyaXB0b3IgY2hlY2tzdW0gbWlzbWF0Y2ggZm9yIGRlc2NyaXB0b3IgbmFtZT0ke2Rlc2NyaXB0b3JOYW1lfTogJHtjaGVja3N1bX0gIT09ICR7ZGVzY3JpcHRvckNoZWNrc3VtfWBcbiAgICApO1xuICB9XG4gIGNvbnN0IGRlcml2ZWRTY3JpcHQgPSBCdWZmZXIuZnJvbShkZXNjcmlwdG9yLmF0RGVyaXZhdGlvbkluZGV4KHBhcmFtcy5pbmRleCkuc2NyaXB0UHVia2V5KCkpO1xuICBjb25zdCBkZXJpdmVkQWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy5mcm9tT3V0cHV0U2NyaXB0KGRlcml2ZWRTY3JpcHQsIG5ldHdvcmspO1xuICBpZiAocGFyYW1zLmFkZHJlc3MgIT09IGRlcml2ZWRBZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IERlc2NyaXB0b3JBZGRyZXNzTWlzbWF0Y2hFcnJvcihkZXNjcmlwdG9yLCBwYXJhbXMuaW5kZXgsIGRlcml2ZWRBZGRyZXNzLCBwYXJhbXMuYWRkcmVzcyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,13 @@
1
+ import { BIP32Interface } from '@bitgo-beta/utxo-lib';
2
+ import { Descriptor } from '@bitgo/wasm-miniscript';
3
+ type DescriptorWithKeys<TName extends string> = {
4
+ name: TName;
5
+ keys: BIP32Interface[];
6
+ path: string;
7
+ };
8
+ export type DescriptorBuilder = DescriptorWithKeys<'Wsh2Of2'> | DescriptorWithKeys<'Wsh2Of3'> | (DescriptorWithKeys<'ShWsh2Of3CltvDrop'> & {
9
+ locktime: number;
10
+ });
11
+ export declare function getDescriptorFromBuilder(builder: DescriptorBuilder): Descriptor;
12
+ export {};
13
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/builder/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,KAAK,kBAAkB,CAAC,KAAK,SAAS,MAAM,IAAI;IAC9C,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,CAAC,SAAS,CAAC,GAC7B,kBAAkB,CAAC,SAAS,CAAC,GAM7B,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAgCrE,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,CAE/E"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDescriptorFromBuilder = getDescriptorFromBuilder;
4
+ const wasm_miniscript_1 = require("@bitgo/wasm-miniscript");
5
+ function toXPub(k) {
6
+ if (typeof k === 'string') {
7
+ return k;
8
+ }
9
+ return k.neutered().toBase58();
10
+ }
11
+ function multi(m, n, keys, path) {
12
+ if (n < m) {
13
+ throw new Error(`Cannot create ${m} of ${n} multisig`);
14
+ }
15
+ if (keys.length < n) {
16
+ throw new Error(`Not enough keys for ${m} of ${n} multisig: keys.length=${keys.length}`);
17
+ }
18
+ keys = keys.slice(0, n);
19
+ return `multi(${m},${keys.map((k) => `${toXPub(k)}/${path}`).join(',')})`;
20
+ }
21
+ function getDescriptorString(builder) {
22
+ switch (builder.name) {
23
+ case 'Wsh2Of3':
24
+ return `wsh(${multi(2, 3, builder.keys, builder.path)})`;
25
+ case 'Wsh2Of2':
26
+ return `wsh(${multi(2, 2, builder.keys, builder.path)})`;
27
+ case 'ShWsh2Of3CltvDrop':
28
+ return `sh(wsh(and_v(r:after(${builder.locktime}),${multi(2, 3, builder.keys, builder.path)})))`;
29
+ }
30
+ throw new Error(`Unknown descriptor template: ${builder}`);
31
+ }
32
+ function getDescriptorFromBuilder(builder) {
33
+ return wasm_miniscript_1.Descriptor.fromString(getDescriptorString(builder), 'derivable');
34
+ }
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL2J1aWxkZXIvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWlEQSw0REFFQztBQWxERCw0REFBb0Q7QUFrQnBELFNBQVMsTUFBTSxDQUFDLENBQTBCO0lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDMUIsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDakMsQ0FBQztBQUVELFNBQVMsS0FBSyxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsSUFBaUMsRUFBRSxJQUFZO0lBQ2xGLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQywwQkFBMEIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDM0YsQ0FBQztJQUNELElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixPQUFPLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7QUFDNUUsQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsT0FBMEI7SUFDckQsUUFBUSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDckIsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0QsS0FBSyxTQUFTO1lBQ1osT0FBTyxPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDM0QsS0FBSyxtQkFBbUI7WUFDdEIsT0FBTyx3QkFBd0IsT0FBTyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3JHLENBQUM7SUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzdELENBQUM7QUFFRCxTQUFnQix3QkFBd0IsQ0FBQyxPQUEwQjtJQUNqRSxPQUFPLDRCQUFVLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBQzFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCSVAzMkludGVyZmFjZSB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcblxudHlwZSBEZXNjcmlwdG9yV2l0aEtleXM8VE5hbWUgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBuYW1lOiBUTmFtZTtcbiAga2V5czogQklQMzJJbnRlcmZhY2VbXTtcbiAgcGF0aDogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgRGVzY3JpcHRvckJ1aWxkZXIgPVxuICB8IERlc2NyaXB0b3JXaXRoS2V5czwnV3NoMk9mMic+XG4gIHwgRGVzY3JpcHRvcldpdGhLZXlzPCdXc2gyT2YzJz5cbiAgLypcbiAgICogVGhpcyBpcyBhIHdyYXBwZWQgc2Vnd2l0IDJvZjMgbXVsdGlzaWcgdGhhdCBhbHNvIHVzZXMgYSByZWxhdGl2ZSBsb2NrdGltZSB3aXRoXG4gICAqIGFuIE9QX0RST1AgKHJlcXVpcmluZyBhIG1pbmlzY3JpcHQgZXh0ZW5zaW9uKS5cbiAgICogSXQgaXMgYmFzaWNhbGx5IHdoYXQgaXMgdXNlZCBpbiBDb3JlRGFvIHN0YWtpbmcgdHJhbnNhY3Rpb25zLlxuICAgKi9cbiAgfCAoRGVzY3JpcHRvcldpdGhLZXlzPCdTaFdzaDJPZjNDbHR2RHJvcCc+ICYgeyBsb2NrdGltZTogbnVtYmVyIH0pO1xuXG5mdW5jdGlvbiB0b1hQdWIoazogQklQMzJJbnRlcmZhY2UgfCBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGs7XG4gIH1cbiAgcmV0dXJuIGsubmV1dGVyZWQoKS50b0Jhc2U1OCgpO1xufVxuXG5mdW5jdGlvbiBtdWx0aShtOiBudW1iZXIsIG46IG51bWJlciwga2V5czogQklQMzJJbnRlcmZhY2VbXSB8IHN0cmluZ1tdLCBwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBpZiAobiA8IG0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgJHttfSBvZiAke259IG11bHRpc2lnYCk7XG4gIH1cbiAgaWYgKGtleXMubGVuZ3RoIDwgbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgTm90IGVub3VnaCBrZXlzIGZvciAke219IG9mICR7bn0gbXVsdGlzaWc6IGtleXMubGVuZ3RoPSR7a2V5cy5sZW5ndGh9YCk7XG4gIH1cbiAga2V5cyA9IGtleXMuc2xpY2UoMCwgbik7XG4gIHJldHVybiBgbXVsdGkoJHttfSwke2tleXMubWFwKChrKSA9PiBgJHt0b1hQdWIoayl9LyR7cGF0aH1gKS5qb2luKCcsJyl9KWA7XG59XG5cbmZ1bmN0aW9uIGdldERlc2NyaXB0b3JTdHJpbmcoYnVpbGRlcjogRGVzY3JpcHRvckJ1aWxkZXIpOiBzdHJpbmcge1xuICBzd2l0Y2ggKGJ1aWxkZXIubmFtZSkge1xuICAgIGNhc2UgJ1dzaDJPZjMnOlxuICAgICAgcmV0dXJuIGB3c2goJHttdWx0aSgyLCAzLCBidWlsZGVyLmtleXMsIGJ1aWxkZXIucGF0aCl9KWA7XG4gICAgY2FzZSAnV3NoMk9mMic6XG4gICAgICByZXR1cm4gYHdzaCgke211bHRpKDIsIDIsIGJ1aWxkZXIua2V5cywgYnVpbGRlci5wYXRoKX0pYDtcbiAgICBjYXNlICdTaFdzaDJPZjNDbHR2RHJvcCc6XG4gICAgICByZXR1cm4gYHNoKHdzaChhbmRfdihyOmFmdGVyKCR7YnVpbGRlci5sb2NrdGltZX0pLCR7bXVsdGkoMiwgMywgYnVpbGRlci5rZXlzLCBidWlsZGVyLnBhdGgpfSkpKWA7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRlc2NyaXB0b3IgdGVtcGxhdGU6ICR7YnVpbGRlcn1gKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlc2NyaXB0b3JGcm9tQnVpbGRlcihidWlsZGVyOiBEZXNjcmlwdG9yQnVpbGRlcik6IERlc2NyaXB0b3Ige1xuICByZXR1cm4gRGVzY3JpcHRvci5mcm9tU3RyaW5nKGdldERlc2NyaXB0b3JTdHJpbmcoYnVpbGRlciksICdkZXJpdmFibGUnKTtcbn1cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { getDescriptorFromBuilder, DescriptorBuilder } from './builder';
2
+ export { parseDescriptor } from './parse';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/builder/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseDescriptor = exports.getDescriptorFromBuilder = void 0;
4
+ var builder_1 = require("./builder");
5
+ Object.defineProperty(exports, "getDescriptorFromBuilder", { enumerable: true, get: function () { return builder_1.getDescriptorFromBuilder; } });
6
+ var parse_1 = require("./parse");
7
+ Object.defineProperty(exports, "parseDescriptor", { enumerable: true, get: function () { return parse_1.parseDescriptor; } });
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9idWlsZGVyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUF3RTtBQUEvRCxtSEFBQSx3QkFBd0IsT0FBQTtBQUNqQyxpQ0FBMEM7QUFBakMsd0dBQUEsZUFBZSxPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgZ2V0RGVzY3JpcHRvckZyb21CdWlsZGVyLCBEZXNjcmlwdG9yQnVpbGRlciB9IGZyb20gJy4vYnVpbGRlcic7XG5leHBvcnQgeyBwYXJzZURlc2NyaXB0b3IgfSBmcm9tICcuL3BhcnNlJztcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import { Descriptor } from '@bitgo/wasm-miniscript';
2
+ import { DescriptorBuilder } from './builder';
3
+ export declare function parseDescriptorNode(node: unknown): DescriptorBuilder;
4
+ export declare function parseDescriptor(descriptor: Descriptor): DescriptorBuilder;
5
+ //# sourceMappingURL=parse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/builder/parse.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAA4B,MAAM,WAAW,CAAC;AA0DxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,iBAAiB,CA2CpE;AAED,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,iBAAiB,CAMzE"}