@bitgo-beta/utxo-core 1.0.1-alpha.12 → 1.0.1-alpha.120

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 (80) hide show
  1. package/dist/src/bip322/index.d.ts +5 -0
  2. package/dist/src/bip322/index.d.ts.map +1 -0
  3. package/dist/src/bip322/index.js +21 -0
  4. package/dist/src/bip322/toSign.d.ts +25 -0
  5. package/dist/src/bip322/toSign.d.ts.map +1 -0
  6. package/dist/src/bip322/toSign.js +126 -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 +72 -0
  10. package/dist/src/bip322/utils.d.ts +18 -0
  11. package/dist/src/bip322/utils.d.ts.map +1 -0
  12. package/dist/src/bip322/utils.js +115 -0
  13. package/dist/src/bip322/verify.d.ts +12 -0
  14. package/dist/src/bip322/verify.d.ts.map +1 -0
  15. package/dist/src/bip322/verify.js +115 -0
  16. package/dist/src/bip32utils.d.ts +16 -0
  17. package/dist/src/bip32utils.d.ts.map +1 -0
  18. package/dist/src/bip32utils.js +71 -0
  19. package/dist/src/descriptor/fromFixedScriptWallet.d.ts +16 -0
  20. package/dist/src/descriptor/fromFixedScriptWallet.d.ts.map +1 -0
  21. package/dist/src/descriptor/fromFixedScriptWallet.js +88 -0
  22. package/dist/src/descriptor/index.d.ts +3 -0
  23. package/dist/src/descriptor/index.d.ts.map +1 -1
  24. package/dist/src/descriptor/index.js +4 -1
  25. package/dist/src/descriptor/parse/PatternMatcher.d.ts +14 -0
  26. package/dist/src/descriptor/parse/PatternMatcher.d.ts.map +1 -0
  27. package/dist/src/descriptor/parse/PatternMatcher.js +60 -0
  28. package/dist/src/descriptor/psbt/createPsbt.d.ts +8 -1
  29. package/dist/src/descriptor/psbt/createPsbt.d.ts.map +1 -1
  30. package/dist/src/descriptor/psbt/createPsbt.js +35 -10
  31. package/dist/src/descriptor/psbt/index.d.ts +1 -0
  32. package/dist/src/descriptor/psbt/index.d.ts.map +1 -1
  33. package/dist/src/descriptor/psbt/index.js +2 -1
  34. package/dist/src/descriptor/psbt/sign.d.ts +26 -0
  35. package/dist/src/descriptor/psbt/sign.d.ts.map +1 -0
  36. package/dist/src/descriptor/psbt/sign.js +42 -0
  37. package/dist/src/index.d.ts +4 -0
  38. package/dist/src/index.d.ts.map +1 -1
  39. package/dist/src/index.js +6 -2
  40. package/dist/src/paygo/attestation.d.ts +11 -0
  41. package/dist/src/paygo/attestation.d.ts.map +1 -0
  42. package/dist/src/paygo/attestation.js +58 -0
  43. package/dist/src/paygo/index.d.ts +3 -0
  44. package/dist/src/paygo/index.d.ts.map +1 -0
  45. package/dist/src/paygo/index.js +19 -0
  46. package/dist/src/paygo/parsePayGoAttestation.d.ts +16 -0
  47. package/dist/src/paygo/parsePayGoAttestation.d.ts.map +1 -0
  48. package/dist/src/paygo/parsePayGoAttestation.js +50 -0
  49. package/dist/src/paygo/psbt/Errors.d.ts +22 -0
  50. package/dist/src/paygo/psbt/Errors.d.ts.map +1 -0
  51. package/dist/src/paygo/psbt/Errors.js +44 -0
  52. package/dist/src/paygo/psbt/index.d.ts +2 -0
  53. package/dist/src/paygo/psbt/index.d.ts.map +1 -0
  54. package/dist/src/paygo/psbt/index.js +18 -0
  55. package/dist/src/paygo/psbt/payGoAddressProof.d.ts +29 -0
  56. package/dist/src/paygo/psbt/payGoAddressProof.d.ts.map +1 -0
  57. package/dist/src/paygo/psbt/payGoAddressProof.js +124 -0
  58. package/dist/src/testutil/descriptor/descriptors.d.ts +4 -1
  59. package/dist/src/testutil/descriptor/descriptors.d.ts.map +1 -1
  60. package/dist/src/testutil/descriptor/descriptors.js +38 -1
  61. package/dist/src/testutil/descriptor/mock.utils.d.ts +6 -4
  62. package/dist/src/testutil/descriptor/mock.utils.d.ts.map +1 -1
  63. package/dist/src/testutil/descriptor/mock.utils.js +3 -1
  64. package/dist/src/testutil/descriptor/psbt.utils.d.ts.map +1 -1
  65. package/dist/src/testutil/descriptor/psbt.utils.js +2 -1
  66. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts +12 -0
  67. package/dist/src/testutil/generatePayGoAttestationProof.utils.d.ts.map +1 -0
  68. package/dist/src/testutil/generatePayGoAttestationProof.utils.js +38 -0
  69. package/dist/src/testutil/index.d.ts +2 -0
  70. package/dist/src/testutil/index.d.ts.map +1 -1
  71. package/dist/src/testutil/index.js +3 -1
  72. package/dist/src/testutil/toPlainObject.utils.d.ts.map +1 -1
  73. package/dist/src/testutil/toPlainObject.utils.js +16 -2
  74. package/dist/src/testutil/trimMessagePrefix.d.ts +11 -0
  75. package/dist/src/testutil/trimMessagePrefix.d.ts.map +1 -0
  76. package/dist/src/testutil/trimMessagePrefix.js +60 -0
  77. package/dist/src/xOnlyPubkey.d.ts +2 -0
  78. package/dist/src/xOnlyPubkey.d.ts.map +1 -0
  79. package/dist/src/xOnlyPubkey.js +18 -0
  80. package/package.json +9 -6
@@ -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) {
@@ -73,10 +95,13 @@ function createPsbt(params, inputs, outputs) {
73
95
  const psbt = utxolib.bitgo.UtxoPsbt.createPsbt({ network: params.network });
74
96
  psbt.setVersion(params.version ?? 2);
75
97
  psbt.setLocktime(params.locktime ?? 0);
76
- psbt.addInputs(inputs.map((i) => ({ ...i, sequence: params.sequence ?? exports.MAX_BIP125_RBF_SEQUENCE })));
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFrREEsZ0NBZ0JDO0FBbEVELDhEQUFnRDtBQU1oRCxpQ0FBbUQ7QUFDbkQsMkRBQXdEO0FBRXhEOzs7S0FHSztBQUNRLFFBQUEsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUV0RCxTQUFTLDJCQUEyQixDQUFDLElBQTRCLEVBQUUsV0FBeUI7SUFDMUYsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEQsTUFBTSxJQUFJLEtBQUssQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLGlCQUFpQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBQ0QsTUFBTSxXQUFXLEdBQUcsSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxJQUFBLHFDQUFpQixFQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDaEQsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBQ0QsTUFBTSxhQUFhLEdBQUcsSUFBQSxpQkFBVSxFQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkUsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLDRCQUE0QixDQUFDLElBQTRCLEVBQUUsV0FBd0M7SUFDMUcsTUFBTSxXQUFXLEdBQUcsSUFBQSxvQkFBYSxFQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLEtBQUssTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7UUFDbEUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFdBQVcsQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbEUsQ0FBQztJQUNILENBQUM7SUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM1RCxLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMzRSxDQUFDO0FBQ0gsQ0FBQztBQVNELFNBQWdCLFVBQVUsQ0FDeEIsTUFBa0IsRUFDbEIsTUFBdUMsRUFDdkMsT0FBb0M7SUFFcEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzVFLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksK0JBQXVCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLDJCQUEyQixDQUN6QixJQUFJLEVBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUNoQyxDQUFDO0lBQ0YsNEJBQTRCLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgRGVzY3JpcHRvciB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG5pbXBvcnQgeyBEZXJpdmVkRGVzY3JpcHRvcldhbGxldE91dHB1dCwgV2l0aE9wdERlc2NyaXB0b3IgfSBmcm9tICcuLi9PdXRwdXQnO1xuaW1wb3J0IHsgT3V0cHV0IH0gZnJvbSAnLi4vLi4vT3V0cHV0JztcblxuaW1wb3J0IHsgdG9VdHhvUHNidCwgdG9XcmFwcGVkUHNidCB9IGZyb20gJy4vd3JhcCc7XG5pbXBvcnQgeyBhc3NlcnRTYXRpc2ZpYWJsZSB9IGZyb20gJy4vYXNzZXJ0U2F0aXNmaWFibGUnO1xuXG4vKipcbiAqIE5vbi1GaW5hbCAoUmVwbGFjZWFibGUpXG4gKiBSZWZlcmVuY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9iaXRjb2luL2JpdGNvaW4vYmxvYi92MjUuMS9zcmMvcnBjL3Jhd3RyYW5zYWN0aW9uX3V0aWwuY3BwI0w0OVxuICogKi9cbmV4cG9ydCBjb25zdCBNQVhfQklQMTI1X1JCRl9TRVFVRU5DRSA9IDB4ZmZmZmZmZmYgLSAyO1xuXG5mdW5jdGlvbiB1cGRhdGVJbnB1dHNXaXRoRGVzY3JpcHRvcnMocHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCwgZGVzY3JpcHRvcnM6IERlc2NyaXB0b3JbXSkge1xuICBpZiAocHNidC50eElucHV0cy5sZW5ndGggIT09IGRlc2NyaXB0b3JzLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW5wdXQgY291bnQgbWlzbWF0Y2ggKHBzYnQ9JHtwc2J0LnR4SW5wdXRzLmxlbmd0aH0sIGRlc2NyaXB0b3JzPSR7ZGVzY3JpcHRvcnMubGVuZ3RofSlgKTtcbiAgfVxuICBjb25zdCB3cmFwcGVkUHNidCA9IHRvV3JhcHBlZFBzYnQocHNidCk7XG4gIGZvciAoY29uc3QgW2lucHV0SW5kZXgsIGRlc2NyaXB0b3JdIG9mIGRlc2NyaXB0b3JzLmVudHJpZXMoKSkge1xuICAgIGFzc2VydFNhdGlzZmlhYmxlKHBzYnQsIGlucHV0SW5kZXgsIGRlc2NyaXB0b3IpO1xuICAgIHdyYXBwZWRQc2J0LnVwZGF0ZUlucHV0V2l0aERlc2NyaXB0b3IoaW5wdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gIH1cbiAgY29uc3QgdW53cmFwcGVkUHNidCA9IHRvVXR4b1BzYnQod3JhcHBlZFBzYnQsIHBzYnQubmV0d29yayk7XG4gIGZvciAoY29uc3QgaW5wdXRJbmRleCBpbiBwc2J0LnR4SW5wdXRzKSB7XG4gICAgcHNidC5kYXRhLmlucHV0c1tpbnB1dEluZGV4XSA9IHVud3JhcHBlZFBzYnQuZGF0YS5pbnB1dHNbaW5wdXRJbmRleF07XG4gIH1cbn1cblxuZnVuY3Rpb24gdXBkYXRlT3V0cHV0c1dpdGhEZXNjcmlwdG9ycyhwc2J0OiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LCBkZXNjcmlwdG9yczogV2l0aE9wdERlc2NyaXB0b3I8T3V0cHV0PltdKSB7XG4gIGNvbnN0IHdyYXBwZWRQc2J0ID0gdG9XcmFwcGVkUHNidChwc2J0KTtcbiAgZm9yIChjb25zdCBbb3V0cHV0SW5kZXgsIHsgZGVzY3JpcHRvciB9XSBvZiBkZXNjcmlwdG9ycy5lbnRyaWVzKCkpIHtcbiAgICBpZiAoZGVzY3JpcHRvcikge1xuICAgICAgd3JhcHBlZFBzYnQudXBkYXRlT3V0cHV0V2l0aERlc2NyaXB0b3Iob3V0cHV0SW5kZXgsIGRlc2NyaXB0b3IpO1xuICAgIH1cbiAgfVxuICBjb25zdCB1bndyYXBwZWRQc2J0ID0gdG9VdHhvUHNidCh3cmFwcGVkUHNidCwgcHNidC5uZXR3b3JrKTtcbiAgZm9yIChjb25zdCBvdXRwdXRJbmRleCBpbiBwc2J0LnR4T3V0cHV0cykge1xuICAgIHBzYnQuZGF0YS5vdXRwdXRzW291dHB1dEluZGV4XSA9IHVud3JhcHBlZFBzYnQuZGF0YS5vdXRwdXRzW291dHB1dEluZGV4XTtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBQc2J0UGFyYW1zID0ge1xuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gIHZlcnNpb24/OiBudW1iZXI7XG4gIGxvY2t0aW1lPzogbnVtYmVyO1xuICBzZXF1ZW5jZT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQc2J0KFxuICBwYXJhbXM6IFBzYnRQYXJhbXMsXG4gIGlucHV0czogRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXRbXSxcbiAgb3V0cHV0czogV2l0aE9wdERlc2NyaXB0b3I8T3V0cHV0PltdXG4pOiB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0IHtcbiAgY29uc3QgcHNidCA9IHV0eG9saWIuYml0Z28uVXR4b1BzYnQuY3JlYXRlUHNidCh7IG5ldHdvcms6IHBhcmFtcy5uZXR3b3JrIH0pO1xuICBwc2J0LnNldFZlcnNpb24ocGFyYW1zLnZlcnNpb24gPz8gMik7XG4gIHBzYnQuc2V0TG9ja3RpbWUocGFyYW1zLmxvY2t0aW1lID8/IDApO1xuICBwc2J0LmFkZElucHV0cyhpbnB1dHMubWFwKChpKSA9PiAoeyAuLi5pLCBzZXF1ZW5jZTogcGFyYW1zLnNlcXVlbmNlID8/IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFIH0pKSk7XG4gIHBzYnQuYWRkT3V0cHV0cyhvdXRwdXRzKTtcbiAgdXBkYXRlSW5wdXRzV2l0aERlc2NyaXB0b3JzKFxuICAgIHBzYnQsXG4gICAgaW5wdXRzLm1hcCgoaSkgPT4gaS5kZXNjcmlwdG9yKVxuICApO1xuICB1cGRhdGVPdXRwdXRzV2l0aERlc2NyaXB0b3JzKHBzYnQsIG91dHB1dHMpO1xuICByZXR1cm4gcHNidDtcbn1cbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFnQkEsOENBY0M7QUFtREQsZ0NBbUJDO0FBbkdELDhEQUFnRDtBQU1oRCxpQ0FBbUQ7QUFDbkQsMkRBQXdEO0FBRXhEOzs7S0FHSztBQUNRLFFBQUEsdUJBQXVCLEdBQUcsVUFBVSxHQUFHLENBQUMsQ0FBQztBQUV0RCxTQUFnQixpQkFBaUIsQ0FBQyxLQUFzQixFQUFFLE1BQTJCO0lBQ25GLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUNELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNwQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRCxTQUFTLDJCQUEyQixDQUNsQyxJQUE0QixFQUM1QixXQUFnRjtJQUVoRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNoRCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0saUJBQWlCLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzVHLENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsS0FBSyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxJQUFJLFdBQVcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3BELElBQUEscUNBQWlCLEVBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbEQsV0FBVyxDQUFDLHlCQUF5QixDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsaUJBQVUsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELEtBQUssTUFBTSxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsQ0FBQyxtQkFBbUIsSUFBSSxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekQsTUFBTSxRQUFRLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN2RixhQUFhLENBQUMsYUFBYSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztJQUMvQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQUMsSUFBNEIsRUFBRSxXQUF3QztJQUMxRyxNQUFNLFdBQVcsR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsS0FBSyxNQUFNLENBQUMsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztRQUNsRSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2YsV0FBVyxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsaUJBQVUsRUFBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVELEtBQUssTUFBTSxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7QUFDSCxDQUFDO0FBY0QsU0FBZ0IsVUFBVSxDQUN4QixNQUFrQixFQUNsQixNQUEyQyxFQUMzQyxPQUFvQztJQUVwQyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLCtCQUF1QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6QiwyQkFBMkIsQ0FDekIsSUFBSSxFQUNKLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELFVBQVU7UUFDVixtQkFBbUI7S0FDcEIsQ0FBQyxDQUFDLENBQ0osQ0FBQztJQUNGLDRCQUE0QixDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM1QyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUYXBMZWFmU2NyaXB0IH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgKiBhcyB1dHhvbGliIGZyb20gJ0BiaXRnby1iZXRhL3V0eG8tbGliJztcbmltcG9ydCB7IERlc2NyaXB0b3IsIE1pbmlzY3JpcHQgfSBmcm9tICdAYml0Z28vd2FzbS1taW5pc2NyaXB0JztcblxuaW1wb3J0IHsgRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQsIFdpdGhPcHREZXNjcmlwdG9yIH0gZnJvbSAnLi4vT3V0cHV0JztcbmltcG9ydCB7IE91dHB1dCB9IGZyb20gJy4uLy4uL091dHB1dCc7XG5cbmltcG9ydCB7IHRvVXR4b1BzYnQsIHRvV3JhcHBlZFBzYnQgfSBmcm9tICcuL3dyYXAnO1xuaW1wb3J0IHsgYXNzZXJ0U2F0aXNmaWFibGUgfSBmcm9tICcuL2Fzc2VydFNhdGlzZmlhYmxlJztcblxuLyoqXG4gKiBOb24tRmluYWwgKFJlcGxhY2VhYmxlKVxuICogUmVmZXJlbmNlOiBodHRwczovL2dpdGh1Yi5jb20vYml0Y29pbi9iaXRjb2luL2Jsb2IvdjI1LjEvc3JjL3JwYy9yYXd0cmFuc2FjdGlvbl91dGlsLmNwcCNMNDlcbiAqICovXG5leHBvcnQgY29uc3QgTUFYX0JJUDEyNV9SQkZfU0VRVUVOQ0UgPSAweGZmZmZmZmZmIC0gMjtcblxuZXhwb3J0IGZ1bmN0aW9uIGZpbmRUYXBMZWFmU2NyaXB0KGlucHV0OiBUYXBMZWFmU2NyaXB0W10sIHNjcmlwdDogQnVmZmVyIHwgTWluaXNjcmlwdCk6IFRhcExlYWZTY3JpcHQge1xuICBpZiAoIUJ1ZmZlci5pc0J1ZmZlcihzY3JpcHQpKSB7XG4gICAgc2NyaXB0ID0gQnVmZmVyLmZyb20oc2NyaXB0LmVuY29kZSgpKTtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gaW5wdXQuZmlsdGVyKChsZWFmKSA9PiB7XG4gICAgcmV0dXJuIGxlYWYuc2NyaXB0LmVxdWFscyhzY3JpcHQpO1xuICB9KTtcbiAgaWYgKG1hdGNoZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBObyB0YXBMZWFmU2NyaXB0IGZvdW5kIGZvciBzY3JpcHQ6ICR7c2NyaXB0LnRvU3RyaW5nKCdoZXgnKX1gKTtcbiAgfVxuICBpZiAobWF0Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNdWx0aXBsZSB0YXBMZWFmU2NyaXB0cyBmb3VuZCBmb3Igc2NyaXB0OiAke3NjcmlwdC50b1N0cmluZygnaGV4Jyl9YCk7XG4gIH1cbiAgcmV0dXJuIG1hdGNoZXNbMF07XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0c1dpdGhEZXNjcmlwdG9ycyhcbiAgcHNidDogdXR4b2xpYi5iaXRnby5VdHhvUHNidCxcbiAgaW5wdXRQYXJhbXM6IEFycmF5PHsgZGVzY3JpcHRvcjogRGVzY3JpcHRvcjsgc2VsZWN0VGFwTGVhZlNjcmlwdD86IE1pbmlzY3JpcHQgfT5cbikge1xuICBpZiAocHNidC50eElucHV0cy5sZW5ndGggIT09IGlucHV0UGFyYW1zLmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW5wdXQgY291bnQgbWlzbWF0Y2ggKHBzYnQ9JHtwc2J0LnR4SW5wdXRzLmxlbmd0aH0sIGlucHV0UGFyYW1zPSR7aW5wdXRQYXJhbXMubGVuZ3RofSlgKTtcbiAgfVxuICBjb25zdCB3cmFwcGVkUHNidCA9IHRvV3JhcHBlZFBzYnQocHNidCk7XG4gIGZvciAoY29uc3QgW2lucHV0SW5kZXgsIHZdIG9mIGlucHV0UGFyYW1zLmVudHJpZXMoKSkge1xuICAgIGFzc2VydFNhdGlzZmlhYmxlKHBzYnQsIGlucHV0SW5kZXgsIHYuZGVzY3JpcHRvcik7XG4gICAgd3JhcHBlZFBzYnQudXBkYXRlSW5wdXRXaXRoRGVzY3JpcHRvcihpbnB1dEluZGV4LCB2LmRlc2NyaXB0b3IpO1xuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IGlucHV0SW5kZXggaW4gcHNidC50eElucHV0cykge1xuICAgIGNvbnN0IHByZXBhcmVkSW5wdXQgPSB1bndyYXBwZWRQc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdO1xuICAgIGNvbnN0IHYgPSBpbnB1dFBhcmFtc1tpbnB1dEluZGV4XTtcbiAgICBpZiAodi5zZWxlY3RUYXBMZWFmU2NyaXB0ICYmIHByZXBhcmVkSW5wdXQudGFwTGVhZlNjcmlwdCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWQgPSBmaW5kVGFwTGVhZlNjcmlwdChwcmVwYXJlZElucHV0LnRhcExlYWZTY3JpcHQsIHYuc2VsZWN0VGFwTGVhZlNjcmlwdCk7XG4gICAgICBwcmVwYXJlZElucHV0LnRhcExlYWZTY3JpcHQgPSBbc2VsZWN0ZWRdO1xuICAgIH1cbiAgICBwc2J0LmRhdGEuaW5wdXRzW2lucHV0SW5kZXhdID0gcHJlcGFyZWRJbnB1dDtcbiAgfVxufVxuXG5mdW5jdGlvbiB1cGRhdGVPdXRwdXRzV2l0aERlc2NyaXB0b3JzKHBzYnQ6IHV0eG9saWIuYml0Z28uVXR4b1BzYnQsIGRlc2NyaXB0b3JzOiBXaXRoT3B0RGVzY3JpcHRvcjxPdXRwdXQ+W10pIHtcbiAgY29uc3Qgd3JhcHBlZFBzYnQgPSB0b1dyYXBwZWRQc2J0KHBzYnQpO1xuICBmb3IgKGNvbnN0IFtvdXRwdXRJbmRleCwgeyBkZXNjcmlwdG9yIH1dIG9mIGRlc2NyaXB0b3JzLmVudHJpZXMoKSkge1xuICAgIGlmIChkZXNjcmlwdG9yKSB7XG4gICAgICB3cmFwcGVkUHNidC51cGRhdGVPdXRwdXRXaXRoRGVzY3JpcHRvcihvdXRwdXRJbmRleCwgZGVzY3JpcHRvcik7XG4gICAgfVxuICB9XG4gIGNvbnN0IHVud3JhcHBlZFBzYnQgPSB0b1V0eG9Qc2J0KHdyYXBwZWRQc2J0LCBwc2J0Lm5ldHdvcmspO1xuICBmb3IgKGNvbnN0IG91dHB1dEluZGV4IGluIHBzYnQudHhPdXRwdXRzKSB7XG4gICAgcHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdID0gdW53cmFwcGVkUHNidC5kYXRhLm91dHB1dHNbb3V0cHV0SW5kZXhdO1xuICB9XG59XG5cbmV4cG9ydCB0eXBlIFBzYnRQYXJhbXMgPSB7XG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgdmVyc2lvbj86IG51bWJlcjtcbiAgbG9ja3RpbWU/OiBudW1iZXI7XG4gIHNlcXVlbmNlPzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0ID0gRGVyaXZlZERlc2NyaXB0b3JXYWxsZXRPdXRwdXQgJiB7XG4gIHNlbGVjdFRhcExlYWZTY3JpcHQ/OiBNaW5pc2NyaXB0O1xuICBzZXF1ZW5jZT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQc2J0KFxuICBwYXJhbXM6IFBzYnRQYXJhbXMsXG4gIGlucHV0czogRGVyaXZlZERlc2NyaXB0b3JUcmFuc2FjdGlvbklucHV0W10sXG4gIG91dHB1dHM6IFdpdGhPcHREZXNjcmlwdG9yPE91dHB1dD5bXVxuKTogdXR4b2xpYi5iaXRnby5VdHhvUHNidCB7XG4gIGNvbnN0IHBzYnQgPSB1dHhvbGliLmJpdGdvLlV0eG9Qc2J0LmNyZWF0ZVBzYnQoeyBuZXR3b3JrOiBwYXJhbXMubmV0d29yayB9KTtcbiAgcHNidC5zZXRWZXJzaW9uKHBhcmFtcy52ZXJzaW9uID8/IDIpO1xuICBwc2J0LnNldExvY2t0aW1lKHBhcmFtcy5sb2NrdGltZSA/PyAwKTtcbiAgcHNidC5hZGRJbnB1dHMoaW5wdXRzLm1hcCgoaSkgPT4gKHsgLi4uaSwgc2VxdWVuY2U6IGkuc2VxdWVuY2UgPz8gcGFyYW1zLnNlcXVlbmNlID8/IE1BWF9CSVAxMjVfUkJGX1NFUVVFTkNFIH0pKSk7XG4gIHBzYnQuYWRkT3V0cHV0cyhvdXRwdXRzKTtcbiAgdXBkYXRlSW5wdXRzV2l0aERlc2NyaXB0b3JzKFxuICAgIHBzYnQsXG4gICAgaW5wdXRzLm1hcCgoeyBkZXNjcmlwdG9yLCBzZWxlY3RUYXBMZWFmU2NyaXB0IH0pID0+ICh7XG4gICAgICBkZXNjcmlwdG9yLFxuICAgICAgc2VsZWN0VGFwTGVhZlNjcmlwdCxcbiAgICB9KSlcbiAgKTtcbiAgdXBkYXRlT3V0cHV0c1dpdGhEZXNjcmlwdG9ycyhwc2J0LCBvdXRwdXRzKTtcbiAgcmV0dXJuIHBzYnQ7XG59XG4iXX0=
@@ -3,4 +3,5 @@ export * from './createPsbt';
3
3
  export * from './parse';
4
4
  export * from './findDescriptors';
5
5
  export * from './wrap';
6
+ export * from './sign';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC"}
@@ -19,4 +19,5 @@ __exportStar(require("./createPsbt"), exports);
19
19
  __exportStar(require("./parse"), exports);
20
20
  __exportStar(require("./findDescriptors"), exports);
21
21
  __exportStar(require("./wrap"), exports);
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9wc2J0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBb0M7QUFDcEMsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QixvREFBa0M7QUFDbEMseUNBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hc3NlcnRTYXRpc2ZpYWJsZSc7XG5leHBvcnQgKiBmcm9tICcuL2NyZWF0ZVBzYnQnO1xuZXhwb3J0ICogZnJvbSAnLi9wYXJzZSc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbmREZXNjcmlwdG9ycyc7XG5leHBvcnQgKiBmcm9tICcuL3dyYXAnO1xuIl19
22
+ __exportStar(require("./sign"), exports);
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZGVzY3JpcHRvci9wc2J0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxzREFBb0M7QUFDcEMsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QixvREFBa0M7QUFDbEMseUNBQXVCO0FBQ3ZCLHlDQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYXNzZXJ0U2F0aXNmaWFibGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jcmVhdGVQc2J0JztcbmV4cG9ydCAqIGZyb20gJy4vcGFyc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9maW5kRGVzY3JpcHRvcnMnO1xuZXhwb3J0ICogZnJvbSAnLi93cmFwJztcbmV4cG9ydCAqIGZyb20gJy4vc2lnbic7XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ import { Psbt as WasmPsbt } from '@bitgo/wasm-miniscript';
3
+ /** These can be replaced when @bitgo/wasm-miniscript is updated */
4
+ export type SignPsbtInputResult = {
5
+ Schnorr: string[];
6
+ } | {
7
+ Ecdsa: string[];
8
+ };
9
+ export type SignPsbtResult = {
10
+ [inputIndex: number]: SignPsbtInputResult;
11
+ };
12
+ /**
13
+ * @param signResult
14
+ * @return the number of new signatures created by the signResult for a single input
15
+ */
16
+ export declare function getNewSignatureCountForInput(signResult: SignPsbtInputResult): number;
17
+ /**
18
+ * @param signResult
19
+ * @return the number of new signatures created by the signResult
20
+ */
21
+ export declare function getNewSignatureCount(signResult: SignPsbtResult): number;
22
+ type Key = Buffer | utxolib.BIP32Interface | utxolib.ECPairInterface;
23
+ /** Convenience function to sign a PSBT with a key */
24
+ export declare function signWithKey(psbt: WasmPsbt, key: Key): SignPsbtResult;
25
+ export {};
26
+ //# sourceMappingURL=sign.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.d.ts","sourceRoot":"","sources":["../../../../src/descriptor/psbt/sign.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAE1D,mEAAmE;AACnE,MAAM,MAAM,mBAAmB,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAC9E,MAAM,MAAM,cAAc,GAAG;IAC3B,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAAC;CAC3C,CAAC;AAEF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAQpF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAEvE;AAED,KAAK,GAAG,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;AAErE,qDAAqD;AACrD,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,cAAc,CAUpE"}
@@ -0,0 +1,42 @@
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.getNewSignatureCountForInput = getNewSignatureCountForInput;
7
+ exports.getNewSignatureCount = getNewSignatureCount;
8
+ exports.signWithKey = signWithKey;
9
+ const assert_1 = __importDefault(require("assert"));
10
+ /**
11
+ * @param signResult
12
+ * @return the number of new signatures created by the signResult for a single input
13
+ */
14
+ function getNewSignatureCountForInput(signResult) {
15
+ if ('Schnorr' in signResult) {
16
+ return signResult.Schnorr.length;
17
+ }
18
+ if ('Ecdsa' in signResult) {
19
+ return signResult.Ecdsa.length;
20
+ }
21
+ throw new Error(`Unknown signature type ${Object.keys(signResult).join(', ')}`);
22
+ }
23
+ /**
24
+ * @param signResult
25
+ * @return the number of new signatures created by the signResult
26
+ */
27
+ function getNewSignatureCount(signResult) {
28
+ return Object.values(signResult).reduce((sum, signatures) => sum + getNewSignatureCountForInput(signatures), 0);
29
+ }
30
+ /** Convenience function to sign a PSBT with a key */
31
+ function signWithKey(psbt, key) {
32
+ // we need to do casting here because the type definitions in wasm-miniscript are a little bit buggy
33
+ if (Buffer.isBuffer(key)) {
34
+ return psbt.signWithPrv(key);
35
+ }
36
+ if ('toBase58' in key) {
37
+ return psbt.signWithXprv(key.toBase58());
38
+ }
39
+ (0, assert_1.default)(key.privateKey);
40
+ return psbt.signWithPrv(key.privateKey);
41
+ }
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kZXNjcmlwdG9yL3BzYnQvc2lnbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLG9FQVFDO0FBTUQsb0RBRUM7QUFLRCxrQ0FVQztBQTlDRCxvREFBNEI7QUFXNUI7OztHQUdHO0FBQ0gsU0FBZ0IsNEJBQTRCLENBQUMsVUFBK0I7SUFDMUUsSUFBSSxTQUFTLElBQUksVUFBVSxFQUFFLENBQUM7UUFDNUIsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBSSxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7UUFDMUIsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUNqQyxDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xGLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxVQUEwQjtJQUM3RCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLDRCQUE0QixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xILENBQUM7QUFJRCxxREFBcUQ7QUFDckQsU0FBZ0IsV0FBVyxDQUFDLElBQWMsRUFBRSxHQUFRO0lBQ2xELG9HQUFvRztJQUNwRyxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUE4QixDQUFDO0lBQzVELENBQUM7SUFDRCxJQUFJLFVBQVUsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN0QixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUE4QixDQUFDO0lBQ3hFLENBQUM7SUFDRCxJQUFBLGdCQUFNLEVBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUE4QixDQUFDO0FBQ3ZFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5cbmltcG9ydCAqIGFzIHV0eG9saWIgZnJvbSAnQGJpdGdvLWJldGEvdXR4by1saWInO1xuaW1wb3J0IHsgUHNidCBhcyBXYXNtUHNidCB9IGZyb20gJ0BiaXRnby93YXNtLW1pbmlzY3JpcHQnO1xuXG4vKiogVGhlc2UgY2FuIGJlIHJlcGxhY2VkIHdoZW4gQGJpdGdvL3dhc20tbWluaXNjcmlwdCBpcyB1cGRhdGVkICovXG5leHBvcnQgdHlwZSBTaWduUHNidElucHV0UmVzdWx0ID0geyBTY2hub3JyOiBzdHJpbmdbXSB9IHwgeyBFY2RzYTogc3RyaW5nW10gfTtcbmV4cG9ydCB0eXBlIFNpZ25Qc2J0UmVzdWx0ID0ge1xuICBbaW5wdXRJbmRleDogbnVtYmVyXTogU2lnblBzYnRJbnB1dFJlc3VsdDtcbn07XG5cbi8qKlxuICogQHBhcmFtIHNpZ25SZXN1bHRcbiAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBuZXcgc2lnbmF0dXJlcyBjcmVhdGVkIGJ5IHRoZSBzaWduUmVzdWx0IGZvciBhIHNpbmdsZSBpbnB1dFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3U2lnbmF0dXJlQ291bnRGb3JJbnB1dChzaWduUmVzdWx0OiBTaWduUHNidElucHV0UmVzdWx0KTogbnVtYmVyIHtcbiAgaWYgKCdTY2hub3JyJyBpbiBzaWduUmVzdWx0KSB7XG4gICAgcmV0dXJuIHNpZ25SZXN1bHQuU2Nobm9yci5sZW5ndGg7XG4gIH1cbiAgaWYgKCdFY2RzYScgaW4gc2lnblJlc3VsdCkge1xuICAgIHJldHVybiBzaWduUmVzdWx0LkVjZHNhLmxlbmd0aDtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc2lnbmF0dXJlIHR5cGUgJHtPYmplY3Qua2V5cyhzaWduUmVzdWx0KS5qb2luKCcsICcpfWApO1xufVxuXG4vKipcbiAqIEBwYXJhbSBzaWduUmVzdWx0XG4gKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgbmV3IHNpZ25hdHVyZXMgY3JlYXRlZCBieSB0aGUgc2lnblJlc3VsdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TmV3U2lnbmF0dXJlQ291bnQoc2lnblJlc3VsdDogU2lnblBzYnRSZXN1bHQpOiBudW1iZXIge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhzaWduUmVzdWx0KS5yZWR1Y2UoKHN1bSwgc2lnbmF0dXJlcykgPT4gc3VtICsgZ2V0TmV3U2lnbmF0dXJlQ291bnRGb3JJbnB1dChzaWduYXR1cmVzKSwgMCk7XG59XG5cbnR5cGUgS2V5ID0gQnVmZmVyIHwgdXR4b2xpYi5CSVAzMkludGVyZmFjZSB8IHV0eG9saWIuRUNQYWlySW50ZXJmYWNlO1xuXG4vKiogQ29udmVuaWVuY2UgZnVuY3Rpb24gdG8gc2lnbiBhIFBTQlQgd2l0aCBhIGtleSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25XaXRoS2V5KHBzYnQ6IFdhc21Qc2J0LCBrZXk6IEtleSk6IFNpZ25Qc2J0UmVzdWx0IHtcbiAgLy8gd2UgbmVlZCB0byBkbyBjYXN0aW5nIGhlcmUgYmVjYXVzZSB0aGUgdHlwZSBkZWZpbml0aW9ucyBpbiB3YXNtLW1pbmlzY3JpcHQgYXJlIGEgbGl0dGxlIGJpdCBidWdneVxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKGtleSkpIHtcbiAgICByZXR1cm4gcHNidC5zaWduV2l0aFBydihrZXkpIGFzIHVua25vd24gYXMgU2lnblBzYnRSZXN1bHQ7XG4gIH1cbiAgaWYgKCd0b0Jhc2U1OCcgaW4ga2V5KSB7XG4gICAgcmV0dXJuIHBzYnQuc2lnbldpdGhYcHJ2KGtleS50b0Jhc2U1OCgpKSBhcyB1bmtub3duIGFzIFNpZ25Qc2J0UmVzdWx0O1xuICB9XG4gIGFzc2VydChrZXkucHJpdmF0ZUtleSk7XG4gIHJldHVybiBwc2J0LnNpZ25XaXRoUHJ2KGtleS5wcml2YXRlS2V5KSBhcyB1bmtub3duIGFzIFNpZ25Qc2J0UmVzdWx0O1xufVxuIl19
@@ -1,6 +1,10 @@
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';
9
+ export * from './xOnlyPubkey';
6
10
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
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,10 +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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsaURBQWlDO0FBQ2pDLDJEQUEyQztBQUMzQyx1REFBdUM7QUFDdkMsa0RBQWdDO0FBQ2hDLDJDQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGFzIGJpcDY1IGZyb20gJy4vYmlwNjUnO1xuZXhwb3J0ICogYXMgZGVzY3JpcHRvciBmcm9tICcuL2Rlc2NyaXB0b3InO1xuZXhwb3J0ICogYXMgdGVzdHV0aWwgZnJvbSAnLi90ZXN0dXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2R1c3RUaHJlc2hvbGQnO1xuZXhwb3J0ICogZnJvbSAnLi9PdXRwdXQnO1xuIl19
48
+ __exportStar(require("./xOnlyPubkey"), exports);
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"}