@bitgo-beta/utxo-core 1.8.1-beta.20 → 1.8.1-beta.200

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 (68) hide show
  1. package/dist/src/bip322/index.d.ts +4 -0
  2. package/dist/src/bip322/index.d.ts.map +1 -0
  3. package/dist/src/bip322/index.js +20 -0
  4. package/dist/src/bip322/toSign.d.ts +19 -0
  5. package/dist/src/bip322/toSign.d.ts.map +1 -0
  6. package/dist/src/bip322/toSign.js +61 -0
  7. package/dist/src/bip322/toSpend.d.ts +22 -0
  8. package/dist/src/bip322/toSpend.d.ts.map +1 -0
  9. package/dist/src/bip322/toSpend.js +76 -0
  10. package/dist/src/bip322/utils.d.ts +6 -0
  11. package/dist/src/bip322/utils.d.ts.map +1 -0
  12. package/dist/src/bip322/utils.js +71 -0
  13. package/dist/src/bip32utils.d.ts +16 -0
  14. package/dist/src/bip32utils.d.ts.map +1 -0
  15. package/dist/src/bip32utils.js +71 -0
  16. package/dist/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
  17. package/dist/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  18. package/dist/src/descriptor/fromFixedScriptWallet.js +88 -0
  19. package/dist/src/descriptor/index.d.ts +2 -0
  20. package/dist/src/descriptor/index.d.ts.map +1 -1
  21. package/dist/src/descriptor/index.js +3 -1
  22. package/dist/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  23. package/dist/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  24. package/dist/src/descriptor/parse/PatternMatcher.js +60 -0
  25. package/dist/src/descriptor/psbt/createPsbt.d.ts +4 -0
  26. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +1 -1
  27. package/dist/src/descriptor/psbt/createPsbt.js +34 -9
  28. package/dist/src/index.d.ts +3 -0
  29. package/dist/src/index.d.ts.map +1 -1
  30. package/dist/src/index.js +5 -2
  31. package/dist/src/paygo/attestation.d.ts +11 -0
  32. package/dist/src/paygo/attestation.d.ts.map +1 -0
  33. package/dist/src/paygo/attestation.js +58 -0
  34. package/dist/src/paygo/index.d.ts +3 -0
  35. package/dist/src/paygo/index.d.ts.map +1 -0
  36. package/dist/src/paygo/index.js +19 -0
  37. package/dist/src/paygo/parsePayGoAttestation.d.ts +16 -0
  38. package/dist/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  39. package/dist/src/paygo/parsePayGoAttestation.js +50 -0
  40. package/dist/src/paygo/psbt/Errors.d.ts +22 -0
  41. package/dist/src/paygo/psbt/Errors.d.ts.map +1 -0
  42. package/dist/src/paygo/psbt/Errors.js +44 -0
  43. package/dist/src/paygo/psbt/index.d.ts +2 -0
  44. package/dist/src/paygo/psbt/index.d.ts.map +1 -0
  45. package/dist/src/paygo/psbt/index.js +18 -0
  46. package/dist/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  47. package/dist/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  48. package/dist/src/paygo/psbt/payGoAddressProof.js +124 -0
  49. package/dist/src/testutil/descriptor/descriptors.d.ts +4 -1
  50. package/dist/src/testutil/descriptor/descriptors.d.ts.map +1 -1
  51. package/dist/src/testutil/descriptor/descriptors.js +38 -1
  52. package/dist/src/testutil/descriptor/mock.utils.d.ts +3 -1
  53. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +1 -1
  54. package/dist/src/testutil/descriptor/mock.utils.js +2 -1
  55. package/dist/src/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  56. package/dist/src/testutil/descriptor/psbt.utils.js +2 -1
  57. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  58. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  59. package/dist/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  60. package/dist/src/testutil/index.d.ts +2 -0
  61. package/dist/src/testutil/index.d.ts.map +1 -1
  62. package/dist/src/testutil/index.js +3 -1
  63. package/dist/src/testutil/toPlainObject.utils.d.ts.map +1 -1
  64. package/dist/src/testutil/toPlainObject.utils.js +16 -2
  65. package/dist/src/testutil/trimMessagePrefix.d.ts +11 -0
  66. package/dist/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  67. package/dist/src/testutil/trimMessagePrefix.js +60 -0
  68. package/package.json +9 -6
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PatternMatcher = void 0;
4
+ class PatternMatcher {
5
+ match(node, pattern) {
6
+ const vars = {};
7
+ return this.matchNode(node, pattern, vars) ? vars : null;
8
+ }
9
+ matchNode(node, pattern, vars) {
10
+ // Variable placeholder
11
+ if (this.isPatternVar(pattern)) {
12
+ const varName = pattern.$var;
13
+ if (varName in vars) {
14
+ return this.deepEqual(vars[varName], node);
15
+ }
16
+ vars[varName] = node;
17
+ return true;
18
+ }
19
+ // Primitive values
20
+ if (typeof node !== typeof pattern)
21
+ return false;
22
+ if (typeof node === 'string' || typeof node === 'number') {
23
+ return node === pattern;
24
+ }
25
+ // Arrays
26
+ if (Array.isArray(node) && Array.isArray(pattern)) {
27
+ return node.length === pattern.length && node.every((item, i) => this.matchNode(item, pattern[i], vars));
28
+ }
29
+ // Objects
30
+ if (typeof node === 'object' && typeof pattern === 'object' && node !== null && pattern !== null) {
31
+ const nodeKeys = Object.keys(node);
32
+ const patternKeys = Object.keys(pattern);
33
+ return (nodeKeys.length === patternKeys.length &&
34
+ nodeKeys.every((key) => patternKeys.includes(key) &&
35
+ this.matchNode(node[key], pattern[key], vars)));
36
+ }
37
+ return false;
38
+ }
39
+ isPatternVar(value) {
40
+ return value !== null && typeof value === 'object' && '$var' in value;
41
+ }
42
+ deepEqual(a, b) {
43
+ if (a === b)
44
+ return true;
45
+ if (typeof a !== typeof b)
46
+ return false;
47
+ if (Array.isArray(a) && Array.isArray(b)) {
48
+ return a.length === b.length && a.every((item, i) => this.deepEqual(item, b[i]));
49
+ }
50
+ if (typeof a === 'object' && a !== null && typeof b === 'object' && b !== null) {
51
+ const keysA = Object.keys(a);
52
+ const keysB = Object.keys(b);
53
+ return (keysA.length === keysB.length &&
54
+ keysA.every((key) => this.deepEqual(a[key], b[key])));
55
+ }
56
+ return false;
57
+ }
58
+ }
59
+ exports.PatternMatcher = PatternMatcher;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGF0dGVybk1hdGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9wYXJzZS9QYXR0ZXJuTWF0Y2hlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxNQUFhLGNBQWM7SUFDekIsS0FBSyxDQUFDLElBQWEsRUFBRSxPQUFnQjtRQUNuQyxNQUFNLElBQUksR0FBa0IsRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUMzRCxDQUFDO0lBRU8sU0FBUyxDQUFDLElBQWEsRUFBRSxPQUFnQixFQUFFLElBQW1CO1FBQ3BFLHVCQUF1QjtRQUN2QixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQzdCLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNwQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzdDLENBQUM7WUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixJQUFJLE9BQU8sSUFBSSxLQUFLLE9BQU8sT0FBTztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ2pELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3pELE9BQU8sSUFBSSxLQUFLLE9BQU8sQ0FBQztRQUMxQixDQUFDO1FBRUQsU0FBUztRQUNULElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLE9BQU8sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNHLENBQUM7UUFFRCxVQUFVO1FBQ1YsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pHLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUV6QyxPQUFPLENBQ0wsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTTtnQkFDdEMsUUFBUSxDQUFDLEtBQUssQ0FDWixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQ04sV0FBVyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUUsSUFBZ0MsQ0FBQyxHQUFHLENBQUMsRUFBRyxPQUFtQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUMxRyxDQUNGLENBQUM7UUFDSixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sWUFBWSxDQUFDLEtBQWM7UUFDakMsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksS0FBSyxDQUFDO0lBQ3hFLENBQUM7SUFFTyxTQUFTLENBQUMsQ0FBVSxFQUFFLENBQVU7UUFDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pCLElBQUksT0FBTyxDQUFDLEtBQUssT0FBTyxDQUFDO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN6QyxPQUFPLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQy9FLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixPQUFPLENBQ0wsS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtnQkFDN0IsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUE2QixDQUFDLEdBQUcsQ0FBQyxFQUFHLENBQTZCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUMvRyxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztDQUNGO0FBbEVELHdDQWtFQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFBhdHRlcm4gbWF0Y2hpbmcgdHlwZXNcbmV4cG9ydCB0eXBlIFBhdHRlcm5WYXIgPSB7ICR2YXI6IHN0cmluZyB9O1xuZXhwb3J0IHR5cGUgUGF0dGVybiA9IFBhdHRlcm5WYXIgfCBzdHJpbmcgfCBudW1iZXIgfCB7IFtrZXk6IHN0cmluZ106IFBhdHRlcm4gfCBQYXR0ZXJuW10gfSB8IFBhdHRlcm5bXTtcblxuZXhwb3J0IHR5cGUgRXh0cmFjdGVkVmFycyA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG5leHBvcnQgY2xhc3MgUGF0dGVybk1hdGNoZXIge1xuICBtYXRjaChub2RlOiB1bmtub3duLCBwYXR0ZXJuOiBQYXR0ZXJuKTogRXh0cmFjdGVkVmFycyB8IG51bGwge1xuICAgIGNvbnN0IHZhcnM6IEV4dHJhY3RlZFZhcnMgPSB7fTtcbiAgICByZXR1cm4gdGhpcy5tYXRjaE5vZGUobm9kZSwgcGF0dGVybiwgdmFycykgPyB2YXJzIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgbWF0Y2hOb2RlKG5vZGU6IHVua25vd24sIHBhdHRlcm46IFBhdHRlcm4sIHZhcnM6IEV4dHJhY3RlZFZhcnMpOiBib29sZWFuIHtcbiAgICAvLyBWYXJpYWJsZSBwbGFjZWhvbGRlclxuICAgIGlmICh0aGlzLmlzUGF0dGVyblZhcihwYXR0ZXJuKSkge1xuICAgICAgY29uc3QgdmFyTmFtZSA9IHBhdHRlcm4uJHZhcjtcbiAgICAgIGlmICh2YXJOYW1lIGluIHZhcnMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVlcEVxdWFsKHZhcnNbdmFyTmFtZV0sIG5vZGUpO1xuICAgICAgfVxuICAgICAgdmFyc1t2YXJOYW1lXSA9IG5vZGU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBQcmltaXRpdmUgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBub2RlICE9PSB0eXBlb2YgcGF0dGVybikgcmV0dXJuIGZhbHNlO1xuICAgIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgICByZXR1cm4gbm9kZSA9PT0gcGF0dGVybjtcbiAgICB9XG5cbiAgICAvLyBBcnJheXNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlKSAmJiBBcnJheS5pc0FycmF5KHBhdHRlcm4pKSB7XG4gICAgICByZXR1cm4gbm9kZS5sZW5ndGggPT09IHBhdHRlcm4ubGVuZ3RoICYmIG5vZGUuZXZlcnkoKGl0ZW0sIGkpID0+IHRoaXMubWF0Y2hOb2RlKGl0ZW0sIHBhdHRlcm5baV0sIHZhcnMpKTtcbiAgICB9XG5cbiAgICAvLyBPYmplY3RzXG4gICAgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgcGF0dGVybiA9PT0gJ29iamVjdCcgJiYgbm9kZSAhPT0gbnVsbCAmJiBwYXR0ZXJuICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBub2RlS2V5cyA9IE9iamVjdC5rZXlzKG5vZGUpO1xuICAgICAgY29uc3QgcGF0dGVybktleXMgPSBPYmplY3Qua2V5cyhwYXR0ZXJuKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgbm9kZUtleXMubGVuZ3RoID09PSBwYXR0ZXJuS2V5cy5sZW5ndGggJiZcbiAgICAgICAgbm9kZUtleXMuZXZlcnkoXG4gICAgICAgICAgKGtleSkgPT5cbiAgICAgICAgICAgIHBhdHRlcm5LZXlzLmluY2x1ZGVzKGtleSkgJiZcbiAgICAgICAgICAgIHRoaXMubWF0Y2hOb2RlKChub2RlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldLCAocGF0dGVybiBhcyBSZWNvcmQ8c3RyaW5nLCBQYXR0ZXJuPilba2V5XSwgdmFycylcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIGlzUGF0dGVyblZhcih2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFBhdHRlcm5WYXIge1xuICAgIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmICckdmFyJyBpbiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgZGVlcEVxdWFsKGE6IHVua25vd24sIGI6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gICAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikgcmV0dXJuIGZhbHNlO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGEpICYmIEFycmF5LmlzQXJyYXkoYikpIHtcbiAgICAgIHJldHVybiBhLmxlbmd0aCA9PT0gYi5sZW5ndGggJiYgYS5ldmVyeSgoaXRlbSwgaSkgPT4gdGhpcy5kZWVwRXF1YWwoaXRlbSwgYltpXSkpO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGEgPT09ICdvYmplY3QnICYmIGEgIT09IG51bGwgJiYgdHlwZW9mIGIgPT09ICdvYmplY3QnICYmIGIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGtleXNBID0gT2JqZWN0LmtleXMoYSk7XG4gICAgICBjb25zdCBrZXlzQiA9IE9iamVjdC5rZXlzKGIpO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAga2V5c0EubGVuZ3RoID09PSBrZXlzQi5sZW5ndGggJiZcbiAgICAgICAga2V5c0EuZXZlcnkoKGtleSkgPT4gdGhpcy5kZWVwRXF1YWwoKGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV0sIChiIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVtrZXldKSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -1,4 +1,6 @@
1
+ import { TapLeafScript } from 'bip174/src/lib/interfaces';
1
2
  import * as utxolib from '@bitgo-beta/utxo-lib';
3
+ import { Miniscript } from '@bitgo/wasm-miniscript';
2
4
  import { DerivedDescriptorWalletOutput, WithOptDescriptor } from '../Output';
3
5
  import { Output } from '../../Output';
4
6
  /**
@@ -6,6 +8,7 @@ import { Output } from '../../Output';
6
8
  * Reference: https://github.com/bitcoin/bitcoin/blob/v25.1/src/rpc/rawtransaction_util.cpp#L49
7
9
  * */
8
10
  export declare const MAX_BIP125_RBF_SEQUENCE: number;
11
+ export declare function findTapLeafScript(input: TapLeafScript[], script: Buffer | Miniscript): TapLeafScript;
9
12
  export type PsbtParams = {
10
13
  network: utxolib.Network;
11
14
  version?: number;
@@ -13,6 +16,7 @@ export type PsbtParams = {
13
16
  sequence?: number;
14
17
  };
15
18
  export type DerivedDescriptorTransactionInput = DerivedDescriptorWalletOutput & {
19
+ selectTapLeafScript?: Miniscript;
16
20
  sequence?: number;
17
21
  };
18
22
  export declare function createPsbt(params: PsbtParams, inputs: DerivedDescriptorTransactionInput[], outputs: WithOptDescriptor<Output>[]): utxolib.bitgo.UtxoPsbt;
@@ -1 +1 @@
1
- {"version":3,"file":"createPsbt.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/createPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAKtC;;;KAGK;AACL,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AA8BtD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,GAAG;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,iCAAiC,EAAE,EAC3C,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,GACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAYxB"}
1
+ {"version":3,"file":"createPsbt.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/createPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAc,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,6BAA6B,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAKtC;;;KAGK;AACL,eAAO,MAAM,uBAAuB,QAAiB,CAAC;AAEtD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,aAAa,CAcpG;AAuCD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG,6BAA6B,GAAG;IAC9E,mBAAmB,CAAC,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,UAAU,CACxB,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,iCAAiC,EAAE,EAC3C,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,GACnC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAexB"}
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.MAX_BIP125_RBF_SEQUENCE = void 0;
37
+ exports.findTapLeafScript = findTapLeafScript;
37
38
  exports.createPsbt = createPsbt;
38
39
  const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
39
40
  const wrap_1 = require("./wrap");
@@ -43,18 +44,39 @@ const assertSatisfiable_1 = require("./assertSatisfiable");
43
44
  * Reference: https://github.com/bitcoin/bitcoin/blob/v25.1/src/rpc/rawtransaction_util.cpp#L49
44
45
  * */
45
46
  exports.MAX_BIP125_RBF_SEQUENCE = 0xffffffff - 2;
46
- function updateInputsWithDescriptors(psbt, descriptors) {
47
- if (psbt.txInputs.length !== descriptors.length) {
48
- throw new Error(`Input count mismatch (psbt=${psbt.txInputs.length}, descriptors=${descriptors.length})`);
47
+ function findTapLeafScript(input, script) {
48
+ if (!Buffer.isBuffer(script)) {
49
+ script = Buffer.from(script.encode());
50
+ }
51
+ const matches = input.filter((leaf) => {
52
+ return leaf.script.equals(script);
53
+ });
54
+ if (matches.length === 0) {
55
+ throw new Error(`No tapLeafScript found for script: ${script.toString('hex')}`);
56
+ }
57
+ if (matches.length > 1) {
58
+ throw new Error(`Multiple tapLeafScripts found for script: ${script.toString('hex')}`);
59
+ }
60
+ return matches[0];
61
+ }
62
+ function updateInputsWithDescriptors(psbt, inputParams) {
63
+ if (psbt.txInputs.length !== inputParams.length) {
64
+ throw new Error(`Input count mismatch (psbt=${psbt.txInputs.length}, inputParams=${inputParams.length})`);
49
65
  }
50
66
  const wrappedPsbt = (0, wrap_1.toWrappedPsbt)(psbt);
51
- for (const [inputIndex, descriptor] of descriptors.entries()) {
52
- (0, assertSatisfiable_1.assertSatisfiable)(psbt, inputIndex, descriptor);
53
- wrappedPsbt.updateInputWithDescriptor(inputIndex, descriptor);
67
+ for (const [inputIndex, v] of inputParams.entries()) {
68
+ (0, assertSatisfiable_1.assertSatisfiable)(psbt, inputIndex, v.descriptor);
69
+ wrappedPsbt.updateInputWithDescriptor(inputIndex, v.descriptor);
54
70
  }
55
71
  const unwrappedPsbt = (0, wrap_1.toUtxoPsbt)(wrappedPsbt, psbt.network);
56
72
  for (const inputIndex in psbt.txInputs) {
57
- psbt.data.inputs[inputIndex] = unwrappedPsbt.data.inputs[inputIndex];
73
+ const preparedInput = unwrappedPsbt.data.inputs[inputIndex];
74
+ const v = inputParams[inputIndex];
75
+ if (v.selectTapLeafScript && preparedInput.tapLeafScript) {
76
+ const selected = findTapLeafScript(preparedInput.tapLeafScript, v.selectTapLeafScript);
77
+ preparedInput.tapLeafScript = [selected];
78
+ }
79
+ psbt.data.inputs[inputIndex] = preparedInput;
58
80
  }
59
81
  }
60
82
  function updateOutputsWithDescriptors(psbt, descriptors) {
@@ -75,8 +97,11 @@ function createPsbt(params, inputs, outputs) {
75
97
  psbt.setLocktime(params.locktime ?? 0);
76
98
  psbt.addInputs(inputs.map((i) => ({ ...i, sequence: i.sequence ?? params.sequence ?? exports.MAX_BIP125_RBF_SEQUENCE })));
77
99
  psbt.addOutputs(outputs);
78
- updateInputsWithDescriptors(psbt, inputs.map((i) => i.descriptor));
100
+ updateInputsWithDescriptors(psbt, inputs.map(({ descriptor, selectTapLeafScript }) => ({
101
+ descriptor,
102
+ selectTapLeafScript,
103
+ })));
79
104
  updateOutputsWithDescriptors(psbt, outputs);
80
105
  return psbt;
81
106
  }
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzREEsZ0NBZ0JDO0FBdEVELDhEQUFnRDtBQU1oRCxpQ0FBbUQ7QUFDbkQsMkRBQXdEO0FBRXhEOzs7S0FHSztBQUNRLFFBQUEsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUV0RCxTQUFTLDJCQUEyQixDQUFDLElBQTRCLEVBQUUsV0FBeUI7SUFDMUYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLGlCQUFpQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxJQUFBLHFDQUFpQixFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBQSxpQkFBVSxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFDLElBQTRCLEVBQUUsV0FBd0M7SUFDMUcsTUFBTSxXQUFXLEdBQUcsSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDbEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRSxDQUFDO0FBQ0gsQ0FBQztBQWFELFNBQWdCLFVBQVUsQ0FDeEIsTUFBa0IsRUFDbEIsTUFBMkMsRUFDM0MsT0FBb0M7SUFFcEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSwrQkFBdUIsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xILElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekIsMkJBQTJCLENBQ3pCLElBQUksRUFDSixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQ2hDLENBQUM7SUFDRiw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBEZXNjcmlwdG9yIH0gZnJvbSAnQGJpdGdvL3dhc20tbWluaXNjcmlwdCc7XG5cbmltcG9ydCB7IERlcml2ZWREZXNjcmlwdG9yV2FsbGV0T3V0cHV0LCBXaXRoT3B0RGVzY3JpcHRvciB9IGZyb20gJy4uL091dHB1dCc7XG5pbXBvcnQgeyBPdXRwdXQgfSBmcm9tICcuLi8uLi9PdXRwdXQnO1xuXG5pbXBvcnQgeyB0b1V0eG9Qc2J0LCB0b1dyYXBwZWRQc2J0IH0gZnJvbSAnLi93cmFwJztcbmltcG9ydCB7IGFzc2VydFNhdGlzZmlhYmxlIH0gZnJvbSAnLi9hc3NlcnRTYXRpc2ZpYWJsZSc7XG5cbi8qKlxuICogTm9uLUZpbmFsIChSZXBsYWNlYWJsZSlcbiAqIFJlZmVyZW5jZTogaHR0cHM6Ly9naXRodWIuY29tL2JpdGNvaW4vYml0Y29pbi9ibG9iL3YyNS4xL3NyYy9ycGMvcmF3dHJhbnNhY3Rpb25fdXRpbC5jcHAjTDQ5XG4gKiAqL1xuZXhwb3J0IGNvbnN0IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFID0gMHhmZmZmZmZmZiAtIDI7XG5cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0c1dpdGhEZXNjcmlwdG9ycyhwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LCBkZXNjcmlwdG9yczogRGVzY3JpcHRvcltdKSB7XG4gIGlmIChwc2J0LnR4SW5wdXRzLmxlbmd0aCAhPT0gZGVzY3JpcHRvcnMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnB1dCBjb3VudCBtaXNtYXRjaCAocHNidD0ke3BzYnQudHhJbnB1dHMubGVuZ3RofSwgZGVzY3JpcHRvcnM9JHtkZXNjcmlwdG9ycy5sZW5ndGh9KWApO1xuICB9XG4gIGNvbnN0IHdyYXBwZWRQc2J0ID0gdG9XcmFwcGVkUHNidChwc2J0KTtcbiAgZm9yIChjb25zdCBbaW5wdXRJbmRleCwgZGVzY3JpcHRvcl0gb2YgZGVzY3JpcHRvcnMuZW50cmllcygpKSB7XG4gICAgYXNzZXJ0U2F0aXNmaWFibGUocHNidCwgaW5wdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gICAgd3JhcHBlZFBzYnQudXBkYXRlSW5wdXRXaXRoRGVzY3JpcHRvcihpbnB1dEluZGV4LCBkZXNjcmlwdG9yKTtcbiAgfVxuICBjb25zdCB1bndyYXBwZWRQc2J0ID0gdG9VdHhvUHNidCh3cmFwcGVkUHNidCwgcHNidC5uZXR3b3JrKTtcbiAgZm9yIChjb25zdCBpbnB1dEluZGV4IGluIHBzYnQudHhJbnB1dHMpIHtcbiAgICBwc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdID0gdW53cmFwcGVkUHNidC5kYXRhLmlucHV0c1tpbnB1dEluZGV4XTtcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVPdXRwdXRzV2l0aERlc2NyaXB0b3JzKHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsIGRlc2NyaXB0b3JzOiBXaXRoT3B0RGVzY3JpcHRvcjxPdXRwdXQ+W10pIHtcbiAgY29uc3Qgd3JhcHBlZFBzYnQgPSB0b1dyYXBwZWRQc2J0KHBzYnQpO1xuICBmb3IgKGNvbnN0IFtvdXRwdXRJbmRleCwgeyBkZXNjcmlwdG9yIH1dIG9mIGRlc2NyaXB0b3JzLmVudHJpZXMoKSkge1xuICAgIGlmIChkZXNjcmlwdG9yKSB7XG4gICAgICB3cmFwcGVkUHNidC51cGRhdGVPdXRwdXRXaXRoRGVzY3JpcHRvcihvdXRwdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IG91dHB1dEluZGV4IGluIHBzYnQudHhPdXRwdXRzKSB7XG4gICAgcHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdID0gdW53cmFwcGVkUHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBzYnRQYXJhbXMgPSB7XG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHNlcXVlbmNlPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0ID0gRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQgJiB7XG4gIHNlcXVlbmNlPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBzYnQoXG4gIHBhcmFtczogUHNidFBhcmFtcyxcbiAgaW5wdXRzOiBEZXJpdmVkRGVzY3JpcHRvclRyYW5zYWN0aW9uSW5wdXRbXSxcbiAgb3V0cHV0czogV2l0aE9wdERlc2NyaXB0b3I8T3V0cHV0PltdXG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uVXR4b1BzYnQuY3JlYXRlUHNidCh7IG5ldHdvcms6IHBhcmFtcy5uZXR3b3JrIH0pO1xuICBwc2J0LnNldFZlcnNpb24ocGFyYW1zLnZlcnNpb24gPz8gMik7XG4gIHBzYnQuc2V0TG9ja3RpbWUocGFyYW1zLmxvY2t0aW1lID8/IDApO1xuICBwc2J0LmFkZElucHV0cyhpbnB1dHMubWFwKChpKSA9PiAoeyAuLi5pLCBzZXF1ZW5jZTogaS5zZXF1ZW5jZSA/PyBwYXJhbXMuc2VxdWVuY2UgPz8gTUFYX0JJUDEyNV9SQkZfU0VRVUVOQ0UgfSkpKTtcbiAgcHNidC5hZGRPdXRwdXRzKG91dHB1dHMpO1xuICB1cGRhdGVJbnB1dHNXaXRoRGVzY3JpcHRvcnMoXG4gICAgcHNidCxcbiAgICBpbnB1dHMubWFwKChpKSA9PiBpLmRlc2NyaXB0b3IpXG4gICk7XG4gIHVwZGF0ZU91dHB1dHNXaXRoRGVzY3JpcHRvcnMocHNidCwgb3V0cHV0cyk7XG4gIHJldHVybiBwc2J0O1xufVxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsOENBY0M7QUFtREQsZ0NBbUJDO0FBbkdELDhEQUFnRDtBQU1oRCxpQ0FBbUQ7QUFDbkQsMkRBQXdEO0FBRXhEOzs7S0FHSztBQUNRLFFBQUEsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUV0RCxTQUFnQixpQkFBaUIsQ0FBQyxLQUFzQixFQUFFLE1BQTJCO0lBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUNsQyxJQUE0QixFQUM1QixXQUFnRjtJQUVoRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0saUJBQWlCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3BELElBQUEscUNBQWlCLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsaUJBQVUsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekQsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN2RixhQUFhLENBQUMsYUFBYSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUMvQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQUMsSUFBNEIsRUFBRSxXQUF3QztJQUMxRyxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsS0FBSyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNsRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsaUJBQVUsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELEtBQUssTUFBTSxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7QUFDSCxDQUFDO0FBY0QsU0FBZ0IsVUFBVSxDQUN4QixNQUFrQixFQUNsQixNQUEyQyxFQUMzQyxPQUFvQztJQUVwQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLCtCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QiwyQkFBMkIsQ0FDekIsSUFBSSxFQUNKLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELFVBQVU7UUFDVixtQkFBbUI7S0FDcEIsQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNGLDRCQUE0QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXBMZWFmU2NyaXB0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IsIE1pbmlzY3JpcHQgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcblxuaW1wb3J0IHsgRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQsIFdpdGhPcHREZXNjcmlwdG9yIH0gZnJvbSAnLi4vT3V0cHV0JztcbmltcG9ydCB7IE91dHB1dCB9IGZyb20gJy4uLy4uL091dHB1dCc7XG5cbmltcG9ydCB7IHRvVXR4b1BzYnQsIHRvV3JhcHBlZFBzYnQgfSBmcm9tICcuL3dyYXAnO1xuaW1wb3J0IHsgYXNzZXJ0U2F0aXNmaWFibGUgfSBmcm9tICcuL2Fzc2VydFNhdGlzZmlhYmxlJztcblxuLyoqXG4gKiBOb24tRmluYWwgKFJlcGxhY2VhYmxlKVxuICogUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI1LjEvc3JjL3JwYy9yYXd0cmFuc2FjdGlvbl91dGlsLmNwcCNMNDlcbiAqICovXG5leHBvcnQgY29uc3QgTUFYX0JJUDEyNV9SQkZfU0VRVUVOQ0UgPSAweGZmZmZmZmZmIC0gMjtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRUYXBMZWFmU2NyaXB0KGlucHV0OiBUYXBMZWFmU2NyaXB0W10sIHNjcmlwdDogQnVmZmVyIHwgTWluaXNjcmlwdCk6IFRhcExlYWZTY3JpcHQge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzY3JpcHQpKSB7XG4gICAgc2NyaXB0ID0gQnVmZmVyLmZyb20oc2NyaXB0LmVuY29kZSgpKTtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gaW5wdXQuZmlsdGVyKChsZWFmKSA9PiB7XG4gICAgcmV0dXJuIGxlYWYuc2NyaXB0LmVxdWFscyhzY3JpcHQpO1xuICB9KTtcbiAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyB0YXBMZWFmU2NyaXB0IGZvdW5kIGZvciBzY3JpcHQ6ICR7c2NyaXB0LnRvU3RyaW5nKCdoZXgnKX1gKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSB0YXBMZWFmU2NyaXB0cyBmb3VuZCBmb3Igc2NyaXB0OiAke3NjcmlwdC50b1N0cmluZygnaGV4Jyl9YCk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXNbMF07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0c1dpdGhEZXNjcmlwdG9ycyhcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgaW5wdXRQYXJhbXM6IEFycmF5PHsgZGVzY3JpcHRvcjogRGVzY3JpcHRvcjsgc2VsZWN0VGFwTGVhZlNjcmlwdD86IE1pbmlzY3JpcHQgfT5cbikge1xuICBpZiAocHNidC50eElucHV0cy5sZW5ndGggIT09IGlucHV0UGFyYW1zLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW5wdXQgY291bnQgbWlzbWF0Y2ggKHBzYnQ9JHtwc2J0LnR4SW5wdXRzLmxlbmd0aH0sIGlucHV0UGFyYW1zPSR7aW5wdXRQYXJhbXMubGVuZ3RofSlgKTtcbiAgfVxuICBjb25zdCB3cmFwcGVkUHNidCA9IHRvV3JhcHBlZFBzYnQocHNidCk7XG4gIGZvciAoY29uc3QgW2lucHV0SW5kZXgsIHZdIG9mIGlucHV0UGFyYW1zLmVudHJpZXMoKSkge1xuICAgIGFzc2VydFNhdGlzZmlhYmxlKHBzYnQsIGlucHV0SW5kZXgsIHYuZGVzY3JpcHRvcik7XG4gICAgd3JhcHBlZFBzYnQudXBkYXRlSW5wdXRXaXRoRGVzY3JpcHRvcihpbnB1dEluZGV4LCB2LmRlc2NyaXB0b3IpO1xuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IGlucHV0SW5kZXggaW4gcHNidC50eElucHV0cykge1xuICAgIGNvbnN0IHByZXBhcmVkSW5wdXQgPSB1bndyYXBwZWRQc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdO1xuICAgIGNvbnN0IHYgPSBpbnB1dFBhcmFtc1tpbnB1dEluZGV4XTtcbiAgICBpZiAodi5zZWxlY3RUYXBMZWFmU2NyaXB0ICYmIHByZXBhcmVkSW5wdXQudGFwTGVhZlNjcmlwdCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBmaW5kVGFwTGVhZlNjcmlwdChwcmVwYXJlZElucHV0LnRhcExlYWZTY3JpcHQsIHYuc2VsZWN0VGFwTGVhZlNjcmlwdCk7XG4gICAgICBwcmVwYXJlZElucHV0LnRhcExlYWZTY3JpcHQgPSBbc2VsZWN0ZWRdO1xuICAgIH1cbiAgICBwc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdID0gcHJlcGFyZWRJbnB1dDtcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVPdXRwdXRzV2l0aERlc2NyaXB0b3JzKHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsIGRlc2NyaXB0b3JzOiBXaXRoT3B0RGVzY3JpcHRvcjxPdXRwdXQ+W10pIHtcbiAgY29uc3Qgd3JhcHBlZFBzYnQgPSB0b1dyYXBwZWRQc2J0KHBzYnQpO1xuICBmb3IgKGNvbnN0IFtvdXRwdXRJbmRleCwgeyBkZXNjcmlwdG9yIH1dIG9mIGRlc2NyaXB0b3JzLmVudHJpZXMoKSkge1xuICAgIGlmIChkZXNjcmlwdG9yKSB7XG4gICAgICB3cmFwcGVkUHNidC51cGRhdGVPdXRwdXRXaXRoRGVzY3JpcHRvcihvdXRwdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IG91dHB1dEluZGV4IGluIHBzYnQudHhPdXRwdXRzKSB7XG4gICAgcHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdID0gdW53cmFwcGVkUHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBzYnRQYXJhbXMgPSB7XG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHNlcXVlbmNlPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0ID0gRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQgJiB7XG4gIHNlbGVjdFRhcExlYWZTY3JpcHQ/OiBNaW5pc2NyaXB0O1xuICBzZXF1ZW5jZT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQc2J0KFxuICBwYXJhbXM6IFBzYnRQYXJhbXMsXG4gIGlucHV0czogRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0W10sXG4gIG91dHB1dHM6IFdpdGhPcHREZXNjcmlwdG9yPE91dHB1dD5bXVxuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LmNyZWF0ZVBzYnQoeyBuZXR3b3JrOiBwYXJhbXMubmV0d29yayB9KTtcbiAgcHNidC5zZXRWZXJzaW9uKHBhcmFtcy52ZXJzaW9uID8/IDIpO1xuICBwc2J0LnNldExvY2t0aW1lKHBhcmFtcy5sb2NrdGltZSA/PyAwKTtcbiAgcHNidC5hZGRJbnB1dHMoaW5wdXRzLm1hcCgoaSkgPT4gKHsgLi4uaSwgc2VxdWVuY2U6IGkuc2VxdWVuY2UgPz8gcGFyYW1zLnNlcXVlbmNlID8/IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFIH0pKSk7XG4gIHBzYnQuYWRkT3V0cHV0cyhvdXRwdXRzKTtcbiAgdXBkYXRlSW5wdXRzV2l0aERlc2NyaXB0b3JzKFxuICAgIHBzYnQsXG4gICAgaW5wdXRzLm1hcCgoeyBkZXNjcmlwdG9yLCBzZWxlY3RUYXBMZWFmU2NyaXB0IH0pID0+ICh7XG4gICAgICBkZXNjcmlwdG9yLFxuICAgICAgc2VsZWN0VGFwTGVhZlNjcmlwdCxcbiAgICB9KSlcbiAgKTtcbiAgdXBkYXRlT3V0cHV0c1dpdGhEZXNjcmlwdG9ycyhwc2J0LCBvdXRwdXRzKTtcbiAgcmV0dXJuIHBzYnQ7XG59XG4iXX0=
@@ -1,6 +1,9 @@
1
1
  export * as bip65 from './bip65';
2
2
  export * as descriptor from './descriptor';
3
3
  export * as testutil from './testutil';
4
+ export * as paygo from './paygo';
5
+ export * as bip32utils from './bip32utils';
6
+ export * as bip322 from './bip322';
4
7
  export * from './dustThreshold';
5
8
  export * from './Output';
6
9
  export * from './xOnlyPubkey';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC"}
package/dist/src/index.js CHANGED
@@ -36,11 +36,14 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
37
  };
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.testutil = exports.descriptor = exports.bip65 = void 0;
39
+ exports.bip322 = exports.bip32utils = exports.paygo = exports.testutil = exports.descriptor = exports.bip65 = void 0;
40
40
  exports.bip65 = __importStar(require("./bip65"));
41
41
  exports.descriptor = __importStar(require("./descriptor"));
42
42
  exports.testutil = __importStar(require("./testutil"));
43
+ exports.paygo = __importStar(require("./paygo"));
44
+ exports.bip32utils = __importStar(require("./bip32utils"));
45
+ exports.bip322 = __importStar(require("./bip322"));
43
46
  __exportStar(require("./dustThreshold"), exports);
44
47
  __exportStar(require("./Output"), exports);
45
48
  __exportStar(require("./xOnlyPubkey"), exports);
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWlDO0FBQ2pDLDJEQUEyQztBQUMzQyx1REFBdUM7QUFDdkMsa0RBQWdDO0FBQ2hDLDJDQUF5QjtBQUN6QixnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBiaXA2NSBmcm9tICcuL2JpcDY1JztcbmV4cG9ydCAqIGFzIGRlc2NyaXB0b3IgZnJvbSAnLi9kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGFzIHRlc3R1dGlsIGZyb20gJy4vdGVzdHV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9kdXN0VGhyZXNob2xkJztcbmV4cG9ydCAqIGZyb20gJy4vT3V0cHV0JztcbmV4cG9ydCAqIGZyb20gJy4veE9ubHlQdWJrZXknO1xuIl19
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWlDO0FBQ2pDLDJEQUEyQztBQUMzQyx1REFBdUM7QUFDdkMsaURBQWlDO0FBQ2pDLDJEQUEyQztBQUMzQyxtREFBbUM7QUFDbkMsa0RBQWdDO0FBQ2hDLDJDQUF5QjtBQUN6QixnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBiaXA2NSBmcm9tICcuL2JpcDY1JztcbmV4cG9ydCAqIGFzIGRlc2NyaXB0b3IgZnJvbSAnLi9kZXNjcmlwdG9yJztcbmV4cG9ydCAqIGFzIHRlc3R1dGlsIGZyb20gJy4vdGVzdHV0aWwnO1xuZXhwb3J0ICogYXMgcGF5Z28gZnJvbSAnLi9wYXlnbyc7XG5leHBvcnQgKiBhcyBiaXAzMnV0aWxzIGZyb20gJy4vYmlwMzJ1dGlscyc7XG5leHBvcnQgKiBhcyBiaXAzMjIgZnJvbSAnLi9iaXAzMjInO1xuZXhwb3J0ICogZnJvbSAnLi9kdXN0VGhyZXNob2xkJztcbmV4cG9ydCAqIGZyb20gJy4vT3V0cHV0JztcbmV4cG9ydCAqIGZyb20gJy4veE9ubHlQdWJrZXknO1xuIl19
@@ -0,0 +1,11 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export declare const NIL_UUID = "00000000-0000-0000-0000-000000000000";
3
+ /** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
4
+ * given the address and entropy.
5
+ *
6
+ * @param address
7
+ * @param entropy
8
+ * @returns
9
+ */
10
+ export declare function createPayGoAttestationBuffer(address: string, entropy: Buffer, network: utxolib.Network): Buffer;
11
+ //# sourceMappingURL=attestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/attestation.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,eAAO,MAAM,QAAQ,yCAAyC,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAM/G"}
@@ -0,0 +1,58 @@
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
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.NIL_UUID = void 0;
40
+ exports.createPayGoAttestationBuffer = createPayGoAttestationBuffer;
41
+ const assert_1 = __importDefault(require("assert"));
42
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
43
+ exports.NIL_UUID = '00000000-0000-0000-0000-000000000000';
44
+ /** This function reconstructs the proof <ENTROPY><ADDRESS><UUID>
45
+ * given the address and entropy.
46
+ *
47
+ * @param address
48
+ * @param entropy
49
+ * @returns
50
+ */
51
+ function createPayGoAttestationBuffer(address, entropy, network) {
52
+ (0, assert_1.default)(address.length > 0);
53
+ const isValidAddress = utxolib.address.toOutputScript(address, network);
54
+ (0, assert_1.default)(isValidAddress, `Address ${address} is not a valid address.`);
55
+ const addressBuffer = Buffer.from(address);
56
+ return Buffer.concat([entropy, addressBuffer, Buffer.from(exports.NIL_UUID)]);
57
+ }
58
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0ZXN0YXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vYXR0ZXN0YXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBWUEsb0VBTUM7QUFsQkQsb0RBQTRCO0FBRTVCLDhEQUFnRDtBQUNuQyxRQUFBLFFBQVEsR0FBRyxzQ0FBc0MsQ0FBQztBQUUvRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLE9BQXdCO0lBQ3JHLElBQUEsZ0JBQU0sRUFBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxJQUFBLGdCQUFNLEVBQUMsY0FBYyxFQUFFLFdBQVcsT0FBTywwQkFBMEIsQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcblxuaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5leHBvcnQgY29uc3QgTklMX1VVSUQgPSAnMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwJztcblxuLyoqIFRoaXMgZnVuY3Rpb24gcmVjb25zdHJ1Y3RzIHRoZSBwcm9vZiA8RU5UUk9QWT48QUREUkVTUz48VVVJRD5cbiAqIGdpdmVuIHRoZSBhZGRyZXNzIGFuZCBlbnRyb3B5LlxuICpcbiAqIEBwYXJhbSBhZGRyZXNzXG4gKiBAcGFyYW0gZW50cm9weVxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBheUdvQXR0ZXN0YXRpb25CdWZmZXIoYWRkcmVzczogc3RyaW5nLCBlbnRyb3B5OiBCdWZmZXIsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IEJ1ZmZlciB7XG4gIGFzc2VydChhZGRyZXNzLmxlbmd0aCA+IDApO1xuICBjb25zdCBpc1ZhbGlkQWRkcmVzcyA9IHV0eG9saWIuYWRkcmVzcy50b091dHB1dFNjcmlwdChhZGRyZXNzLCBuZXR3b3JrKTtcbiAgYXNzZXJ0KGlzVmFsaWRBZGRyZXNzLCBgQWRkcmVzcyAke2FkZHJlc3N9IGlzIG5vdCBhIHZhbGlkIGFkZHJlc3MuYCk7XG4gIGNvbnN0IGFkZHJlc3NCdWZmZXIgPSBCdWZmZXIuZnJvbShhZGRyZXNzKTtcbiAgcmV0dXJuIEJ1ZmZlci5jb25jYXQoW2VudHJvcHksIGFkZHJlc3NCdWZmZXIsIEJ1ZmZlci5mcm9tKE5JTF9VVUlEKV0pO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './parsePayGoAttestation';
2
+ export * from './psbt';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/paygo/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,19 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./parsePayGoAttestation"), exports);
18
+ __exportStar(require("./psbt"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGF5Z28vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDBEQUF3QztBQUN4Qyx5Q0FBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BhcnNlUGF5R29BdHRlc3RhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL3BzYnQnO1xuIl19
@@ -0,0 +1,16 @@
1
+ export declare const Prefix: Buffer<ArrayBuffer>;
2
+ /**
3
+ * This function takes in the attestation proof of a PayGo address of the from
4
+ * <varint_length><ENTROPY><ADDRESS><UUID> and returns
5
+ * the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
6
+ * so if not given an address proof length we can still extract the address from the proof.
7
+ *
8
+ * @param message
9
+ * @param adressProofLength
10
+ */
11
+ export declare function parsePayGoAttestation(message: Buffer): {
12
+ entropy: Buffer;
13
+ address: Buffer;
14
+ uuid: Buffer;
15
+ };
16
+ //# sourceMappingURL=parsePayGoAttestation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsePayGoAttestation.d.ts","sourceRoot":"","sources":["../../../src/paygo/parsePayGoAttestation.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,MAAM,qBAA0D,CAAC;AAQ9E;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CA0BA"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Prefix = void 0;
7
+ exports.parsePayGoAttestation = parsePayGoAttestation;
8
+ const assert_1 = __importDefault(require("assert"));
9
+ const utxo_lib_1 = require("@bitgo-beta/utxo-lib");
10
+ // The signed address will always have the following structure:
11
+ // 0x18Bitcoin Signed Message:\n<varint_length><ENTROPY><ADDRESS><UUID>
12
+ exports.Prefix = Buffer.from('\u0018Bitcoin Signed Message:\n', 'utf-8');
13
+ // UUID has the structure 00000000-0000-0000-0000-000000000000, and after
14
+ // we Buffer.from and get it's length its 36.
15
+ const UuidBufferLength = 36;
16
+ // The entropy will always be 64 bytes
17
+ const EntropyLen = 64;
18
+ /**
19
+ * This function takes in the attestation proof of a PayGo address of the from
20
+ * <varint_length><ENTROPY><ADDRESS><UUID> and returns
21
+ * the address given its length. It is assumed that the ENTROPY is 64 bytes in the Buffer
22
+ * so if not given an address proof length we can still extract the address from the proof.
23
+ *
24
+ * @param message
25
+ * @param adressProofLength
26
+ */
27
+ function parsePayGoAttestation(message) {
28
+ if (message.length <= EntropyLen + UuidBufferLength) {
29
+ throw new Error('PayGo attestation proof is too short to contain a valid address');
30
+ }
31
+ // This generates the first part before the varint length so that we can
32
+ // determine how many bytes this is and iterate through the Buffer.
33
+ let offset = 0;
34
+ if (message.toString('hex').startsWith(exports.Prefix.toString('hex'))) {
35
+ offset = exports.Prefix.length;
36
+ }
37
+ // we decode the varint of the message which is uint32
38
+ // https://en.bitcoin.it/wiki/Protocol_documentation
39
+ const varInt = utxo_lib_1.bufferutils.varuint.decode(message, offset);
40
+ (0, assert_1.default)(varInt);
41
+ offset += utxo_lib_1.bufferutils.varuint.decode.bytes;
42
+ const entropy = message.subarray(offset, offset + EntropyLen);
43
+ offset += EntropyLen;
44
+ const address = message.subarray(offset, message.length - UuidBufferLength);
45
+ offset += address.length;
46
+ const uuid = message.subarray(message.length - UuidBufferLength);
47
+ // we break up the original message and retuen the entropy, address and uuid in their buffers
48
+ return { entropy, address, uuid };
49
+ }
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VQYXlHb0F0dGVzdGF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BheWdvL3BhcnNlUGF5R29BdHRlc3RhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUF1QkEsc0RBOEJDO0FBckRELG9EQUE0QjtBQUU1QixtREFBbUQ7QUFFbkQsK0RBQStEO0FBQy9ELHVFQUF1RTtBQUMxRCxRQUFBLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBRTlFLHlFQUF5RTtBQUN6RSw2Q0FBNkM7QUFDN0MsTUFBTSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7QUFDNUIsc0NBQXNDO0FBQ3RDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUV0Qjs7Ozs7Ozs7R0FRRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLE9BQWU7SUFLbkQsSUFBSSxPQUFPLENBQUMsTUFBTSxJQUFJLFVBQVUsR0FBRyxnQkFBZ0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sSUFBSSxLQUFLLENBQUMsaUVBQWlFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsd0VBQXdFO0lBQ3hFLG1FQUFtRTtJQUNuRSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDZixJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLGNBQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9ELE1BQU0sR0FBRyxjQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsb0RBQW9EO0lBQ3BELE1BQU0sTUFBTSxHQUFHLHNCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0QsSUFBQSxnQkFBTSxFQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2YsTUFBTSxJQUFJLHNCQUFXLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFFM0MsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxHQUFHLFVBQVUsQ0FBQyxDQUFDO0lBQzlELE1BQU0sSUFBSSxVQUFVLENBQUM7SUFDckIsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzVFLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDO0lBQ3pCLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0lBRWpFLDZGQUE2RjtJQUM3RixPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUNwQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5pbXBvcnQgeyBidWZmZXJ1dGlscyB9IGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcblxuLy8gVGhlIHNpZ25lZCBhZGRyZXNzIHdpbGwgYWx3YXlzIGhhdmUgdGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmU6XG4vLyAweDE4Qml0Y29pbiBTaWduZWQgTWVzc2FnZTpcXG48dmFyaW50X2xlbmd0aD48RU5UUk9QWT48QUREUkVTUz48VVVJRD5cbmV4cG9ydCBjb25zdCBQcmVmaXggPSBCdWZmZXIuZnJvbSgnXFx1MDAxOEJpdGNvaW4gU2lnbmVkIE1lc3NhZ2U6XFxuJywgJ3V0Zi04Jyk7XG5cbi8vIFVVSUQgaGFzIHRoZSBzdHJ1Y3R1cmUgMDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAwLCBhbmQgYWZ0ZXJcbi8vIHdlIEJ1ZmZlci5mcm9tIGFuZCBnZXQgaXQncyBsZW5ndGggaXRzIDM2LlxuY29uc3QgVXVpZEJ1ZmZlckxlbmd0aCA9IDM2O1xuLy8gVGhlIGVudHJvcHkgd2lsbCBhbHdheXMgYmUgNjQgYnl0ZXNcbmNvbnN0IEVudHJvcHlMZW4gPSA2NDtcblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHRha2VzIGluIHRoZSBhdHRlc3RhdGlvbiBwcm9vZiBvZiBhIFBheUdvIGFkZHJlc3Mgb2YgdGhlIGZyb21cbiAqIDx2YXJpbnRfbGVuZ3RoPjxFTlRST1BZPjxBRERSRVNTPjxVVUlEPiBhbmQgcmV0dXJuc1xuICogdGhlIGFkZHJlc3MgZ2l2ZW4gaXRzIGxlbmd0aC4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBFTlRST1BZIGlzIDY0IGJ5dGVzIGluIHRoZSBCdWZmZXJcbiAqIHNvIGlmIG5vdCBnaXZlbiBhbiBhZGRyZXNzIHByb29mIGxlbmd0aCB3ZSBjYW4gc3RpbGwgZXh0cmFjdCB0aGUgYWRkcmVzcyBmcm9tIHRoZSBwcm9vZi5cbiAqXG4gKiBAcGFyYW0gbWVzc2FnZVxuICogQHBhcmFtIGFkcmVzc1Byb29mTGVuZ3RoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBheUdvQXR0ZXN0YXRpb24obWVzc2FnZTogQnVmZmVyKToge1xuICBlbnRyb3B5OiBCdWZmZXI7XG4gIGFkZHJlc3M6IEJ1ZmZlcjtcbiAgdXVpZDogQnVmZmVyO1xufSB7XG4gIGlmIChtZXNzYWdlLmxlbmd0aCA8PSBFbnRyb3B5TGVuICsgVXVpZEJ1ZmZlckxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcignUGF5R28gYXR0ZXN0YXRpb24gcHJvb2YgaXMgdG9vIHNob3J0IHRvIGNvbnRhaW4gYSB2YWxpZCBhZGRyZXNzJyk7XG4gIH1cblxuICAvLyBUaGlzIGdlbmVyYXRlcyB0aGUgZmlyc3QgcGFydCBiZWZvcmUgdGhlIHZhcmludCBsZW5ndGggc28gdGhhdCB3ZSBjYW5cbiAgLy8gZGV0ZXJtaW5lIGhvdyBtYW55IGJ5dGVzIHRoaXMgaXMgYW5kIGl0ZXJhdGUgdGhyb3VnaCB0aGUgQnVmZmVyLlxuICBsZXQgb2Zmc2V0ID0gMDtcbiAgaWYgKG1lc3NhZ2UudG9TdHJpbmcoJ2hleCcpLnN0YXJ0c1dpdGgoUHJlZml4LnRvU3RyaW5nKCdoZXgnKSkpIHtcbiAgICBvZmZzZXQgPSBQcmVmaXgubGVuZ3RoO1xuICB9XG5cbiAgLy8gd2UgZGVjb2RlIHRoZSB2YXJpbnQgb2YgdGhlIG1lc3NhZ2Ugd2hpY2ggaXMgdWludDMyXG4gIC8vIGh0dHBzOi8vZW4uYml0Y29pbi5pdC93aWtpL1Byb3RvY29sX2RvY3VtZW50YXRpb25cbiAgY29uc3QgdmFySW50ID0gYnVmZmVydXRpbHMudmFydWludC5kZWNvZGUobWVzc2FnZSwgb2Zmc2V0KTtcbiAgYXNzZXJ0KHZhckludCk7XG4gIG9mZnNldCArPSBidWZmZXJ1dGlscy52YXJ1aW50LmRlY29kZS5ieXRlcztcblxuICBjb25zdCBlbnRyb3B5ID0gbWVzc2FnZS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIEVudHJvcHlMZW4pO1xuICBvZmZzZXQgKz0gRW50cm9weUxlbjtcbiAgY29uc3QgYWRkcmVzcyA9IG1lc3NhZ2Uuc3ViYXJyYXkob2Zmc2V0LCBtZXNzYWdlLmxlbmd0aCAtIFV1aWRCdWZmZXJMZW5ndGgpO1xuICBvZmZzZXQgKz0gYWRkcmVzcy5sZW5ndGg7XG4gIGNvbnN0IHV1aWQgPSBtZXNzYWdlLnN1YmFycmF5KG1lc3NhZ2UubGVuZ3RoIC0gVXVpZEJ1ZmZlckxlbmd0aCk7XG5cbiAgLy8gd2UgYnJlYWsgdXAgdGhlIG9yaWdpbmFsIG1lc3NhZ2UgYW5kIHJldHVlbiB0aGUgZW50cm9weSwgYWRkcmVzcyBhbmQgdXVpZCBpbiB0aGVpciBidWZmZXJzXG4gIHJldHVybiB7IGVudHJvcHksIGFkZHJlc3MsIHV1aWQgfTtcbn1cbiJdfQ==
@@ -0,0 +1,22 @@
1
+ export declare class PayGoError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ export declare class ErrorNoPayGoProof extends PayGoError {
5
+ outputIndex: number;
6
+ constructor(outputIndex: number);
7
+ }
8
+ export declare class ErrorMultiplePayGoProof extends PayGoError {
9
+ constructor();
10
+ }
11
+ export declare class ErrorPayGoAddressProofFailedVerification extends PayGoError {
12
+ constructor();
13
+ }
14
+ export declare class ErrorOutputIndexOutOfBounds extends PayGoError {
15
+ outputIndex: number;
16
+ constructor(outputIndex: number);
17
+ }
18
+ export declare class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
19
+ outputIndex: number;
20
+ constructor(outputIndex: number);
21
+ }
22
+ //# sourceMappingURL=Errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Errors.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/Errors.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,iBAAkB,SAAQ,UAAU;IAC5B,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,uBAAwB,SAAQ,UAAU;;CAItD;AAED,qBAAa,wCAAyC,SAAQ,UAAU;;CAIvE;AAED,qBAAa,2BAA4B,SAAQ,UAAU;IACtC,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC;AAED,qBAAa,kCAAmC,SAAQ,UAAU;IAC7C,WAAW,EAAE,MAAM;gBAAnB,WAAW,EAAE,MAAM;CAGvC"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorMultiplePayGoProofAtPsbtIndex = exports.ErrorOutputIndexOutOfBounds = exports.ErrorPayGoAddressProofFailedVerification = exports.ErrorMultiplePayGoProof = exports.ErrorNoPayGoProof = exports.PayGoError = void 0;
4
+ class PayGoError extends Error {
5
+ constructor(message) {
6
+ super(message);
7
+ this.name = this.constructor.name;
8
+ }
9
+ }
10
+ exports.PayGoError = PayGoError;
11
+ class ErrorNoPayGoProof extends PayGoError {
12
+ constructor(outputIndex) {
13
+ super(`There is no paygo address proof encoded in the PSBT at output ${outputIndex}.`);
14
+ this.outputIndex = outputIndex;
15
+ }
16
+ }
17
+ exports.ErrorNoPayGoProof = ErrorNoPayGoProof;
18
+ class ErrorMultiplePayGoProof extends PayGoError {
19
+ constructor() {
20
+ super('There are multiple paygo address proofs encoded in the PSBT. Something went wrong.');
21
+ }
22
+ }
23
+ exports.ErrorMultiplePayGoProof = ErrorMultiplePayGoProof;
24
+ class ErrorPayGoAddressProofFailedVerification extends PayGoError {
25
+ constructor() {
26
+ super('Cannot verify the paygo address signature with the provided pubkey.');
27
+ }
28
+ }
29
+ exports.ErrorPayGoAddressProofFailedVerification = ErrorPayGoAddressProofFailedVerification;
30
+ class ErrorOutputIndexOutOfBounds extends PayGoError {
31
+ constructor(outputIndex) {
32
+ super(`Output index ${outputIndex} is out of bounds for PSBT outputs.`);
33
+ this.outputIndex = outputIndex;
34
+ }
35
+ }
36
+ exports.ErrorOutputIndexOutOfBounds = ErrorOutputIndexOutOfBounds;
37
+ class ErrorMultiplePayGoProofAtPsbtIndex extends PayGoError {
38
+ constructor(outputIndex) {
39
+ super(`There are multiple PayGo addresses in the PSBT output ${outputIndex}.`);
40
+ this.outputIndex = outputIndex;
41
+ }
42
+ }
43
+ exports.ErrorMultiplePayGoProofAtPsbtIndex = ErrorMultiplePayGoProofAtPsbtIndex;
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BheWdvL3BzYnQvRXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQWEsVUFBVyxTQUFRLEtBQUs7SUFDbkMsWUFBWSxPQUFlO1FBQ3pCLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBTEQsZ0NBS0M7QUFFRCxNQUFhLGlCQUFrQixTQUFRLFVBQVU7SUFDL0MsWUFBbUIsV0FBbUI7UUFDcEMsS0FBSyxDQUFDLGlFQUFpRSxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBRHRFLGdCQUFXLEdBQVgsV0FBVyxDQUFRO0lBRXRDLENBQUM7Q0FDRjtBQUpELDhDQUlDO0FBRUQsTUFBYSx1QkFBd0IsU0FBUSxVQUFVO0lBQ3JEO1FBQ0UsS0FBSyxDQUFDLG9GQUFvRixDQUFDLENBQUM7SUFDOUYsQ0FBQztDQUNGO0FBSkQsMERBSUM7QUFFRCxNQUFhLHdDQUF5QyxTQUFRLFVBQVU7SUFDdEU7UUFDRSxLQUFLLENBQUMscUVBQXFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0NBQ0Y7QUFKRCw0RkFJQztBQUVELE1BQWEsMkJBQTRCLFNBQVEsVUFBVTtJQUN6RCxZQUFtQixXQUFtQjtRQUNwQyxLQUFLLENBQUMsZ0JBQWdCLFdBQVcscUNBQXFDLENBQUMsQ0FBQztRQUR2RCxnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUV0QyxDQUFDO0NBQ0Y7QUFKRCxrRUFJQztBQUVELE1BQWEsa0NBQW1DLFNBQVEsVUFBVTtJQUNoRSxZQUFtQixXQUFtQjtRQUNwQyxLQUFLLENBQUMseURBQXlELFdBQVcsR0FBRyxDQUFDLENBQUM7UUFEOUQsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFFdEMsQ0FBQztDQUNGO0FBSkQsZ0ZBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUGF5R29FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck5vUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBUaGVyZSBpcyBubyBwYXlnbyBhZGRyZXNzIHByb29mIGVuY29kZWQgaW4gdGhlIFBTQlQgYXQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZiBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignVGhlcmUgYXJlIG11bHRpcGxlIHBheWdvIGFkZHJlc3MgcHJvb2ZzIGVuY29kZWQgaW4gdGhlIFBTQlQuIFNvbWV0aGluZyB3ZW50IHdyb25nLicpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvclBheUdvQWRkcmVzc1Byb29mRmFpbGVkVmVyaWZpY2F0aW9uIGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdDYW5ub3QgdmVyaWZ5IHRoZSBwYXlnbyBhZGRyZXNzIHNpZ25hdHVyZSB3aXRoIHRoZSBwcm92aWRlZCBwdWJrZXkuJyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEVycm9yT3V0cHV0SW5kZXhPdXRPZkJvdW5kcyBleHRlbmRzIFBheUdvRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0cHV0SW5kZXg6IG51bWJlcikge1xuICAgIHN1cGVyKGBPdXRwdXQgaW5kZXggJHtvdXRwdXRJbmRleH0gaXMgb3V0IG9mIGJvdW5kcyBmb3IgUFNCVCBvdXRwdXRzLmApO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBFcnJvck11bHRpcGxlUGF5R29Qcm9vZkF0UHNidEluZGV4IGV4dGVuZHMgUGF5R29FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvdXRwdXRJbmRleDogbnVtYmVyKSB7XG4gICAgc3VwZXIoYFRoZXJlIGFyZSBtdWx0aXBsZSBQYXlHbyBhZGRyZXNzZXMgaW4gdGhlIFBTQlQgb3V0cHV0ICR7b3V0cHV0SW5kZXh9LmApO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './payGoAddressProof';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./payGoAddressProof"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGF5Z28vcHNidC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wYXlHb0FkZHJlc3NQcm9vZic7XG4iXX0=
@@ -0,0 +1,29 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ /** This function adds the entropy and signature into the PSBT output unknown key vals.
3
+ * We store the entropy so that we reconstruct the message <ENTROPY><ADDRESS><UUID>
4
+ * to later verify.
5
+ *
6
+ * @param psbt - PSBT that we need to encode our paygo address into
7
+ * @param outputIndex - the index of the address in our output
8
+ * @param sig - the signature that we want to encode
9
+ * @param entropy - the arbitrary entropy bytes from our vasp proof
10
+ */
11
+ export declare function addPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, sig: Buffer, entropy: Buffer): void;
12
+ /** Verify the paygo address signature is valid using verification pub key.
13
+ *
14
+ * @param psbt - PSBT we want to verify that the paygo address is in
15
+ * @param outputIndex - we have the output index that address is in
16
+ * @param verificationPubkey - the pubkey signed by the HSM to verify our message
17
+ * @returns
18
+ */
19
+ export declare function verifyPayGoAddressProof(psbt: utxolib.bitgo.UtxoPsbt, outputIndex: number, verificationPubkey: Buffer): void;
20
+ /** Get the output index of the paygo output if there is one. It does this by
21
+ * checking if the metadata is on one of the outputs of the PSBT. If there is
22
+ * no paygo output, return undefined
23
+ *
24
+ * @param psbt
25
+ * @returns number - the index of the output address
26
+ */
27
+ export declare function getPayGoAddressProofOutputIndex(psbt: utxolib.bitgo.UtxoPsbt): number | undefined;
28
+ export declare function psbtOutputIncludesPaygoAddressProof(psbt: utxolib.bitgo.UtxoPsbt): boolean;
29
+ //# sourceMappingURL=payGoAddressProof.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payGoAddressProof.d.ts","sourceRoot":"","sources":["../../../../src/paygo/psbt/payGoAddressProof.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAC5B,WAAW,EAAE,MAAM,EACnB,kBAAkB,EAAE,MAAM,GACzB,IAAI,CAiCN;AAED;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,CAehG;AAED,wBAAgB,mCAAmC,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAEzF"}