@bitgo-beta/abstract-lightning 1.0.0-alpha.285 → 1.0.0-alpha.286

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.
@@ -1 +1 @@
1
- {"version":3,"file":"parseWithdrawPsbt.d.ts","sourceRoot":"","sources":["../../../src/lightning/parseWithdrawPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAa,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAyBhE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,CA8BvG;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACtC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,IAAI,CA4DN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,UAAU,EAAE,yBAAyB,EAAE,EACvC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CAsBN"}
1
+ {"version":3,"file":"parseWithdrawPsbt.d.ts","sourceRoot":"","sources":["../../../src/lightning/parseWithdrawPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAa,IAAI,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAyBhE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,sBAAsB,CAAC,MAAM,CAAC,EAAE,CA8BvG;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACtC,QAAQ,EAAE,gBAAgB,EAAE,EAC5B,OAAO,EAAE,OAAO,CAAC,OAAO,GACvB,IAAI,CAiEN;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,UAAU,EAAE,yBAAyB,EAAE,EACvC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,IAAI,CAsBN"}
@@ -114,10 +114,12 @@ function verifyChangeAddress(output, accounts, network) {
114
114
  }).address;
115
115
  break;
116
116
  case 86: // P2TR (Taproot)
117
+ // P2TR requires x-only pubkey (32 bytes)
118
+ const xOnlyPubkey = derivedPubkey.length === 33 ? derivedPubkey.subarray(1, 33) : derivedPubkey;
117
119
  derivedAddress = utxolib.payments.p2tr({
118
- pubkey: derivedPubkey,
120
+ pubkey: xOnlyPubkey,
119
121
  network,
120
- }).address;
122
+ }, { eccLib: utxolib.ecc }).address;
121
123
  break;
122
124
  default:
123
125
  throw new Error(`Unsupported purpose: ${purpose}`);
@@ -154,4 +156,4 @@ function validatePsbtForWithdraw(psbtHex, network, recipients, accounts) {
154
156
  }
155
157
  });
156
158
  }
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLDRDQThCQztBQUVELGtEQWdFQztBQUtELDBEQTJCQztBQTVKRCw4REFBZ0Q7QUFDaEQsbURBQXVEO0FBSXZELHFEQU0wQjtBQUUxQixTQUFTLG1CQUFtQixDQUFDLGNBQXNCO0lBS2pELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxPQUFPLEtBQUssc0NBQXFCLElBQUksT0FBTyxLQUFLLDhCQUFhLElBQUksT0FBTyxLQUFLLDZCQUFZLEVBQUUsQ0FBQztRQUMvRixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLE9BQXdCO0lBQ25FLE1BQU0sYUFBYSxHQUFxQyxFQUFFLENBQUM7SUFDM0QsSUFBSSxlQUE0QyxDQUFDO0lBRWpELEtB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Yml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBpc01haW5uZXQsIFBzYnQgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBXYXRjaE9ubHlBY2NvdW50LCBXaXRoZHJhd0Jhc2VPdXRwdXRVVFhPIH0gZnJvbSAnLi4vY29kZWNzJztcbmltcG9ydCB7IExpZ2h0bmluZ09uY2hhaW5SZWNpcGllbnQgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEJpcDMyRGVyaXZhdGlvbiB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgRXh0ZW5kZWRLZXlBZGRyZXNzUHVycG9zZSxcbiAgUFVSUE9TRV9QMlRSLFxuICBQVVJQT1NFX1AyV0tILFxuICBQVVJQT1NFX1dSQVBQRURfUDJXS0gsXG4gIHJldmVydFhwdWJQcmVmaXgsXG59IGZyb20gJy4vbGlnaHRuaW5nVXRpbHMnO1xuXG5mdW5jdGlvbiBwYXJzZURlcml2YXRpb25QYXRoKGRlcml2YXRpb25QYXRoOiBzdHJpbmcpOiB7XG4gIHB1cnBvc2U6IEV4dGVuZGVkS2V5QWRkcmVzc1B1cnBvc2U7XG4gIGNoYW5nZTogbnVtYmVyO1xuICBhZGRyZXNzSW5kZXg6IG51bWJlcjtcbn0ge1xuICBjb25zdCBwYXRoU2VnbWVudHMgPSBkZXJpdmF0aW9uUGF0aC5zcGxpdCgnLycpO1xuICBjb25zdCBwdXJwb3NlID0gTnVtYmVyKHBhdGhTZWdtZW50c1sxXS5yZXBsYWNlKC8nL2csICcnKSk7XG4gIGNvbnN0IGNoYW5nZSA9IE51bWJlcihwYXRoU2VnbWVudHNbcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDJdKTtcbiAgY29uc3QgYWRkcmVzc0luZGV4ID0gTnVtYmVyKHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMV0pO1xuICBpZiAocHVycG9zZSAhPT0gUFVSUE9TRV9XUkFQUEVEX1AyV0tIICYmIHB1cnBvc2UgIT09IFBVUlBPU0VfUDJXS0ggJiYgcHVycG9zZSAhPT0gUFVSUE9TRV9QMlRSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBwdXJwb3NlIGluIGRlcml2YXRpb24gcGF0aDogJHtwdXJwb3NlfWApO1xuICB9XG4gIHJldHVybiB7IHB1cnBvc2UsIGNoYW5nZSwgYWRkcmVzc0luZGV4IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBzYnRPdXRwdXRzKHBzYnQ6IFBzYnQsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IFdpdGhkcmF3QmFzZU91dHB1dFVUWE88YmlnaW50PltdIHtcbiAgY29uc3QgcGFyc2VkT3V0cHV0czogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+W10gPSBbXTtcbiAgbGV0IGJpcDMyRGVyaXZhdGlvbjogQmlwMzJEZXJpdmF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHNidC5kYXRhLm91dHB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvdXRwdXQgPSBwc2J0LmRhdGEub3V0cHV0c1tpXTtcbiAgICBjb25zdCB0eE91dHB1dCA9IHBzYnQudHhPdXRwdXRzW2ldO1xuXG4gICAgbGV0IGFkZHJlc3MgPSAnJztcbiAgICBjb25zdCB2YWx1ZSA9IHR4T3V0cHV0LnZhbHVlO1xuICAgIGxldCBpc0NoYW5nZSA9IGZhbHNlO1xuXG4gICAgaWYgKG91dHB1dC5iaXAzMkRlcml2YXRpb24gJiYgb3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICBpc0NoYW5nZSA9IHRydWU7XG4gICAgICBiaXAzMkRlcml2YXRpb24gPSBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uWzBdO1xuICAgIH1cbiAgICBpZiAodHhPdXRwdXQuc2NyaXB0KSB7XG4gICAgICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQodHhPdXRwdXQuc2NyaXB0LCBuZXR3b3JrKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWVCaWdJbnQgPSBCaWdJbnQodmFsdWUpO1xuXG4gICAgcGFyc2VkT3V0cHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3MsXG4gICAgICB2YWx1ZTogdmFsdWVCaWdJbnQsXG4gICAgICBjaGFuZ2U6IGlzQ2hhbmdlLFxuICAgICAgYmlwMzJEZXJpdmF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZE91dHB1dHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlDaGFuZ2VBZGRyZXNzKFxuICBvdXRwdXQ6IFdpdGhkcmF3QmFzZU91dHB1dFVUWE88YmlnaW50PixcbiAgYWNjb3VudHM6IFdhdGNoT25seUFjY291bnRbXSxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiB2b2lkIHtcbiAgaWYgKCFvdXRwdXQuYmlwMzJEZXJpdmF0aW9uIHx8ICFvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGJpcDMyRGVyaXZhdGlvbiBwYXRoIG5vdCBmb3VuZCBmb3IgY2hhbmdlIGFkZHJlc3NgKTtcbiAgfVxuICAvLyBkZXJpdmF0aW9uIHBhdGggZXhhbXBsZTogbS84NCcvMCcvMCcvMS8wXG4gIGNvbnN0IHsgcHVycG9zZSwgY2hhbmdlLCBhZGRyZXNzSW5kZXggfSA9IHBhcnNlRGVyaXZhdGlvblBhdGgob3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5wYXRoKTtcblxuICAvLyBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIGFjY291bnQgdXNpbmcgdGhlIHB1cnBvc2VcbiAgY29uc3QgYWNjb3VudCA9IGFjY291bnRzLmZpbmQoKGFjYykgPT4gYWNjLnB1cnBvc2UgPT09IHB1cnBvc2UpO1xuICBpZiAoIWFjY291bnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFjY291bnQgbm90IGZvdW5kIGZvciBwdXJwb3NlOiAke3B1cnBvc2V9YCk7XG4gIH1cblxuICAvLyBjb252ZXJ0IHVwdWIsIHZwdWIsIGV0YyBwcmVmaXhlcyB0byB4cHViIGFzIHV0eG9saWIgZG9lc24ndCBzdXBwb3J0IHRoZXNlXG4gIGNvbnN0IGNvbnZlcnRlZFhwdWIgPSByZXZlcnRYcHViUHJlZml4KGFjY291bnQueHB1YiwgcHVycG9zZSwgaXNNYWlubmV0KG5ldHdvcmspKTtcbiAgLy8gQ3JlYXRlIGEgQklQMzIgbm9kZSBmcm9tIHRoZSB4cHViXG4gIGNvbnN0IHhwdWJOb2RlID0gdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KGNvbnZlcnRlZFhwdWIsIG5ldHdvcmspO1xuXG4gIC8vIERlcml2ZSB0aGUgcHVibGljIGtleSBmcm9tIHRoZSB4cHViIHVzaW5nIHRoZSBjaGFuZ2UgYW5kIGFkZHJlc3MgaW5kZXhcbiAgY29uc3QgZGVyaXZlZFB1YmtleSA9IHhwdWJOb2RlLmRlcml2ZShjaGFuZ2UpLmRlcml2ZShhZGRyZXNzSW5kZXgpLnB1YmxpY0tleTtcblxuICBpZiAoZGVyaXZlZFB1YmtleS50b1N0cmluZygnaGV4JykgIT09IG91dHB1dC5iaXAzMkRlcml2YXRpb24ucHVia2V5LnRvU3RyaW5nKCdoZXgnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBEZXJpdmVkIHB1YmtleSBkb2VzIG5vdCBtYXRjaCBmb3IgYWRkcmVzczogJHtvdXRwdXQuYWRkcmVzc30sIGRlcml2ZWQ6ICR7ZGVyaXZlZFB1YmtleS50b1N0cmluZyhcbiAgICAgICAgJ2hleCdcbiAgICAgICl9LCBleHBlY3RlZDogJHtvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnB1YmtleS50b1N0cmluZygnaGV4Jyl9YFxuICAgICk7XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgcGF5bWVudCB0eXBlIGJhc2VkIG9uIHRoZSBwdXJwb3NlXG4gIGxldCBkZXJpdmVkQWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzd2l0Y2ggKHB1cnBvc2UpIHtcbiAgICBjYXNlIDQ5OiAvLyBQMlNILVAyV1BLSCAoTmVzdGVkIFNlZ1dpdClcbiAgICAgIGRlcml2ZWRBZGRyZXNzID0gdXR4b2xpYi5wYXltZW50cy5wMnNoKHtcbiAgICAgICAgcmVkZWVtOiB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgICAgcHVia2V5OiBkZXJpdmVkUHVia2V5LFxuICAgICAgICAgIG5ldHdvcmssXG4gICAgICAgIH0pLFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSkuYWRkcmVzcztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODQ6IC8vIFAyV1BLSCAoTmF0aXZlIFNlZ1dpdClcbiAgICAgIGRlcml2ZWRBZGRyZXNzID0gdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICBwdWJrZXk6IGRlcml2ZWRQdWJrZXksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9KS5hZGRyZXNzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4NjogLy8gUDJUUiAoVGFwcm9vdClcbiAgICAgIGRlcml2ZWRBZGRyZXNzID0gdXR4b2xpYi5wYXltZW50cy5wMnRyKHtcbiAgICAgICAgcHVia2V5OiBkZXJpdmVkUHVia2V5LFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSkuYWRkcmVzcztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHB1cnBvc2U6ICR7cHVycG9zZX1gKTtcbiAgfVxuXG4gIGlmIChkZXJpdmVkQWRkcmVzcyAhPT0gb3V0cHV0LmFkZHJlc3MpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGludmFsaWQgY2hhbmdlIGFkZHJlc3M6IGV4cGVjdGVkICR7ZGVyaXZlZEFkZHJlc3N9LCBnb3QgJHtvdXRwdXQuYWRkcmVzc31gKTtcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB0aGUgZnVuZGVkIHBzYnQgYmVmb3JlIGNyZWF0aW5nIHRoZSBzaWduYXR1cmVzIGZvciB3aXRoZHJhdy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUHNidEZvcldpdGhkcmF3KFxuICBwc2J0SGV4OiBzdHJpbmcsXG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayxcbiAgcmVjaXBpZW50czogTGlnaHRuaW5nT25jaGFpblJlY2lwaWVudFtdLFxuICBhY2NvdW50czogV2F0Y2hPbmx5QWNjb3VudFtdXG4pOiB2b2lkIHtcbiAgY29uc3QgcGFyc2VkUHNidCA9IFBzYnQuZnJvbUhleChwc2J0SGV4LCB7IG5ldHdvcms6IG5ldHdvcmsgfSk7XG4gIGNvbnN0IG91dHB1dHMgPSBwYXJzZVBzYnRPdXRwdXRzKHBhcnNlZFBzYnQsIG5ldHdvcmspO1xuICBvdXRwdXRzLmZvckVhY2goKG91dHB1dCkgPT4ge1xuICAgIGlmIChvdXRwdXQuY2hhbmdlKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2ZXJpZnlDaGFuZ2VBZGRyZXNzKG91dHB1dCwgYWNjb3VudHMsIG5ldHdvcmspO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHZlcmlmeSBjaGFuZ2UgYWRkcmVzczogJHtlfWApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgbWF0Y2ggPSBmYWxzZTtcbiAgICAgIHJlY2lwaWVudHMuZm9yRWFjaCgocmVjaXBpZW50KSA9PiB7XG4gICAgICAgIGlmIChyZWNpcGllbnQuYWRkcmVzcyA9PT0gb3V0cHV0LmFkZHJlc3MgJiYgQmlnSW50KHJlY2lwaWVudC5hbW91bnRTYXQpID09PSBvdXRwdXQudmFsdWUpIHtcbiAgICAgICAgICBtYXRjaCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFBTQlQgb3V0cHV0ICR7b3V0cHV0LmFkZHJlc3N9IHdpdGggdmFsdWUgJHtvdXRwdXQudmFsdWV9IGRvZXMgbm90IG1hdGNoIGFueSByZWNpcGllbnRgKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuIl19
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLDRDQThCQztBQUVELGtEQXFFQztBQUtELDBEQTJCQztBQWpLRCw4REFBZ0Q7QUFDaEQsbURBQXVEO0FBSXZELHFEQU0wQjtBQUUxQixTQUFTLG1CQUFtQixDQUFDLGNBQXNCO0lBS2pELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxPQUFPLEtBQUssc0NBQXFCLElBQUksT0FBTyxLQUFLLDhCQUFhLElBQUksT0FBTyxLQUFLLDZCQUFZLEVBQUUsQ0FBQztRQUMvRixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLE9BQXdCO0lBQ25FLE1BQU0sYUFBYSxHQUFxQyxFQUFFLENBQUM7SUFDM0QsSUFBSSxlQUE0QyxDQUFDO0lBRWpELEtB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QkFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsTUFBTSxDQUFDLE9BQU8sZUFBZSxNQUFNLENBQUMsS0FBSywrQkFBK0IsQ0FBQyxDQUFDO1lBQzNHLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBpc01haW5uZXQsIFBzYnQgfSBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5pbXBvcnQgeyBXYXRjaE9ubHlBY2NvdW50LCBXaXRoZHJhd0Jhc2VPdXRwdXRVVFhPIH0gZnJvbSAnLi4vY29kZWNzJztcbmltcG9ydCB7IExpZ2h0bmluZ09uY2hhaW5SZWNpcGllbnQgfSBmcm9tICdAYml0Z28vcHVibGljLXR5cGVzJztcbmltcG9ydCB7IEJpcDMyRGVyaXZhdGlvbiB9IGZyb20gJ2JpcDE3NC9zcmMvbGliL2ludGVyZmFjZXMnO1xuaW1wb3J0IHtcbiAgRXh0ZW5kZWRLZXlBZGRyZXNzUHVycG9zZSxcbiAgUFVSUE9TRV9QMlRSLFxuICBQVVJQT1NFX1AyV0tILFxuICBQVVJQT1NFX1dSQVBQRURfUDJXS0gsXG4gIHJldmVydFhwdWJQcmVmaXgsXG59IGZyb20gJy4vbGlnaHRuaW5nVXRpbHMnO1xuXG5mdW5jdGlvbiBwYXJzZURlcml2YXRpb25QYXRoKGRlcml2YXRpb25QYXRoOiBzdHJpbmcpOiB7XG4gIHB1cnBvc2U6IEV4dGVuZGVkS2V5QWRkcmVzc1B1cnBvc2U7XG4gIGNoYW5nZTogbnVtYmVyO1xuICBhZGRyZXNzSW5kZXg6IG51bWJlcjtcbn0ge1xuICBjb25zdCBwYXRoU2VnbWVudHMgPSBkZXJpdmF0aW9uUGF0aC5zcGxpdCgnLycpO1xuICBjb25zdCBwdXJwb3NlID0gTnVtYmVyKHBhdGhTZWdtZW50c1sxXS5yZXBsYWNlKC8nL2csICcnKSk7XG4gIGNvbnN0IGNoYW5nZSA9IE51bWJlcihwYXRoU2VnbWVudHNbcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDJdKTtcbiAgY29uc3QgYWRkcmVzc0luZGV4ID0gTnVtYmVyKHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMV0pO1xuICBpZiAocHVycG9zZSAhPT0gUFVSUE9TRV9XUkFQUEVEX1AyV0tIICYmIHB1cnBvc2UgIT09IFBVUlBPU0VfUDJXS0ggJiYgcHVycG9zZSAhPT0gUFVSUE9TRV9QMlRSKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBwdXJwb3NlIGluIGRlcml2YXRpb24gcGF0aDogJHtwdXJwb3NlfWApO1xuICB9XG4gIHJldHVybiB7IHB1cnBvc2UsIGNoYW5nZSwgYWRkcmVzc0luZGV4IH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVBzYnRPdXRwdXRzKHBzYnQ6IFBzYnQsIG5ldHdvcms6IHV0eG9saWIuTmV0d29yayk6IFdpdGhkcmF3QmFzZU91dHB1dFVUWE88YmlnaW50PltdIHtcbiAgY29uc3QgcGFyc2VkT3V0cHV0czogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+W10gPSBbXTtcbiAgbGV0IGJpcDMyRGVyaXZhdGlvbjogQmlwMzJEZXJpdmF0aW9uIHwgdW5kZWZpbmVkO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcHNidC5kYXRhLm91dHB1dHMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBvdXRwdXQgPSBwc2J0LmRhdGEub3V0cHV0c1tpXTtcbiAgICBjb25zdCB0eE91dHB1dCA9IHBzYnQudHhPdXRwdXRzW2ldO1xuXG4gICAgbGV0IGFkZHJlc3MgPSAnJztcbiAgICBjb25zdCB2YWx1ZSA9IHR4T3V0cHV0LnZhbHVlO1xuICAgIGxldCBpc0NoYW5nZSA9IGZhbHNlO1xuXG4gICAgaWYgKG91dHB1dC5iaXAzMkRlcml2YXRpb24gJiYgb3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICBpc0NoYW5nZSA9IHRydWU7XG4gICAgICBiaXAzMkRlcml2YXRpb24gPSBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uWzBdO1xuICAgIH1cbiAgICBpZiAodHhPdXRwdXQuc2NyaXB0KSB7XG4gICAgICBhZGRyZXNzID0gdXR4b2xpYi5hZGRyZXNzLmZyb21PdXRwdXRTY3JpcHQodHhPdXRwdXQuc2NyaXB0LCBuZXR3b3JrKTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWVCaWdJbnQgPSBCaWdJbnQodmFsdWUpO1xuXG4gICAgcGFyc2VkT3V0cHV0cy5wdXNoKHtcbiAgICAgIGFkZHJlc3MsXG4gICAgICB2YWx1ZTogdmFsdWVCaWdJbnQsXG4gICAgICBjaGFuZ2U6IGlzQ2hhbmdlLFxuICAgICAgYmlwMzJEZXJpdmF0aW9uLFxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcnNlZE91dHB1dHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlDaGFuZ2VBZGRyZXNzKFxuICBvdXRwdXQ6IFdpdGhkcmF3QmFzZU91dHB1dFVUWE88YmlnaW50PixcbiAgYWNjb3VudHM6IFdhdGNoT25seUFjY291bnRbXSxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrXG4pOiB2b2lkIHtcbiAgaWYgKCFvdXRwdXQuYmlwMzJEZXJpdmF0aW9uIHx8ICFvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGJpcDMyRGVyaXZhdGlvbiBwYXRoIG5vdCBmb3VuZCBmb3IgY2hhbmdlIGFkZHJlc3NgKTtcbiAgfVxuICAvLyBkZXJpdmF0aW9uIHBhdGggZXhhbXBsZTogbS84NCcvMCcvMCcvMS8wXG4gIGNvbnN0IHsgcHVycG9zZSwgY2hhbmdlLCBhZGRyZXNzSW5kZXggfSA9IHBhcnNlRGVyaXZhdGlvblBhdGgob3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5wYXRoKTtcblxuICAvLyBGaW5kIHRoZSBjb3JyZXNwb25kaW5nIGFjY291bnQgdXNpbmcgdGhlIHB1cnBvc2VcbiAgY29uc3QgYWNjb3VudCA9IGFjY291bnRzLmZpbmQoKGFjYykgPT4gYWNjLnB1cnBvc2UgPT09IHB1cnBvc2UpO1xuICBpZiAoIWFjY291bnQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEFjY291bnQgbm90IGZvdW5kIGZvciBwdXJwb3NlOiAke3B1cnBvc2V9YCk7XG4gIH1cblxuICAvLyBjb252ZXJ0IHVwdWIsIHZwdWIsIGV0YyBwcmVmaXhlcyB0byB4cHViIGFzIHV0eG9saWIgZG9lc24ndCBzdXBwb3J0IHRoZXNlXG4gIGNvbnN0IGNvbnZlcnRlZFhwdWIgPSByZXZlcnRYcHViUHJlZml4KGFjY291bnQueHB1YiwgcHVycG9zZSwgaXNNYWlubmV0KG5ldHdvcmspKTtcbiAgLy8gQ3JlYXRlIGEgQklQMzIgbm9kZSBmcm9tIHRoZSB4cHViXG4gIGNvbnN0IHhwdWJOb2RlID0gdXR4b2xpYi5iaXAzMi5mcm9tQmFzZTU4KGNvbnZlcnRlZFhwdWIsIG5ldHdvcmspO1xuXG4gIC8vIERlcml2ZSB0aGUgcHVibGljIGtleSBmcm9tIHRoZSB4cHViIHVzaW5nIHRoZSBjaGFuZ2UgYW5kIGFkZHJlc3MgaW5kZXhcbiAgY29uc3QgZGVyaXZlZFB1YmtleSA9IHhwdWJOb2RlLmRlcml2ZShjaGFuZ2UpLmRlcml2ZShhZGRyZXNzSW5kZXgpLnB1YmxpY0tleTtcblxuICBpZiAoZGVyaXZlZFB1YmtleS50b1N0cmluZygnaGV4JykgIT09IG91dHB1dC5iaXAzMkRlcml2YXRpb24ucHVia2V5LnRvU3RyaW5nKCdoZXgnKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBEZXJpdmVkIHB1YmtleSBkb2VzIG5vdCBtYXRjaCBmb3IgYWRkcmVzczogJHtvdXRwdXQuYWRkcmVzc30sIGRlcml2ZWQ6ICR7ZGVyaXZlZFB1YmtleS50b1N0cmluZyhcbiAgICAgICAgJ2hleCdcbiAgICAgICl9LCBleHBlY3RlZDogJHtvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnB1YmtleS50b1N0cmluZygnaGV4Jyl9YFxuICAgICk7XG4gIH1cblxuICAvLyBEZXRlcm1pbmUgdGhlIGNvcnJlY3QgcGF5bWVudCB0eXBlIGJhc2VkIG9uIHRoZSBwdXJwb3NlXG4gIGxldCBkZXJpdmVkQWRkcmVzczogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzd2l0Y2ggKHB1cnBvc2UpIHtcbiAgICBjYXNlIDQ5OiAvLyBQMlNILVAyV1BLSCAoTmVzdGVkIFNlZ1dpdClcbiAgICAgIGRlcml2ZWRBZGRyZXNzID0gdXR4b2xpYi5wYXltZW50cy5wMnNoKHtcbiAgICAgICAgcmVkZWVtOiB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgICAgcHVia2V5OiBkZXJpdmVkUHVia2V5LFxuICAgICAgICAgIG5ldHdvcmssXG4gICAgICAgIH0pLFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSkuYWRkcmVzcztcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgODQ6IC8vIFAyV1BLSCAoTmF0aXZlIFNlZ1dpdClcbiAgICAgIGRlcml2ZWRBZGRyZXNzID0gdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICBwdWJrZXk6IGRlcml2ZWRQdWJrZXksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9KS5hZGRyZXNzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4NjogLy8gUDJUUiAoVGFwcm9vdClcbiAgICAgIC8vIFAyVFIgcmVxdWlyZXMgeC1vbmx5IHB1YmtleSAoMzIgYnl0ZXMpXG4gICAgICBjb25zdCB4T25seVB1YmtleSA9IGRlcml2ZWRQdWJrZXkubGVuZ3RoID09PSAzMyA/IGRlcml2ZWRQdWJrZXkuc3ViYXJyYXkoMSwgMzMpIDogZGVyaXZlZFB1YmtleTtcbiAgICAgIGRlcml2ZWRBZGRyZXNzID0gdXR4b2xpYi5wYXltZW50cy5wMnRyKFxuICAgICAgICB7XG4gICAgICAgICAgcHVia2V5OiB4T25seVB1YmtleSxcbiAgICAgICAgICBuZXR3b3JrLFxuICAgICAgICB9LFxuICAgICAgICB7IGVjY0xpYjogdXR4b2xpYi5lY2MgfVxuICAgICAgKS5hZGRyZXNzO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcHVycG9zZTogJHtwdXJwb3NlfWApO1xuICB9XG5cbiAgaWYgKGRlcml2ZWRBZGRyZXNzICE9PSBvdXRwdXQuYWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjaGFuZ2UgYWRkcmVzczogZXhwZWN0ZWQgJHtkZXJpdmVkQWRkcmVzc30sIGdvdCAke291dHB1dC5hZGRyZXNzfWApO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBmdW5kZWQgcHNidCBiZWZvcmUgY3JlYXRpbmcgdGhlIHNpZ25hdHVyZXMgZm9yIHdpdGhkcmF3LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcoXG4gIHBzYnRIZXg6IHN0cmluZyxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICByZWNpcGllbnRzOiBMaWdodG5pbmdPbmNoYWluUmVjaXBpZW50W10sXG4gIGFjY291bnRzOiBXYXRjaE9ubHlBY2NvdW50W11cbik6IHZvaWQge1xuICBjb25zdCBwYXJzZWRQc2J0ID0gUHNidC5mcm9tSGV4KHBzYnRIZXgsIHsgbmV0d29yazogbmV0d29yayB9KTtcbiAgY29uc3Qgb3V0cHV0cyA9IHBhcnNlUHNidE91dHB1dHMocGFyc2VkUHNidCwgbmV0d29yayk7XG4gIG91dHB1dHMuZm9yRWFjaCgob3V0cHV0KSA9PiB7XG4gICAgaWYgKG91dHB1dC5jaGFuZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZlcmlmeUNoYW5nZUFkZHJlc3Mob3V0cHV0LCBhY2NvdW50cywgbmV0d29yayk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gdmVyaWZ5IGNoYW5nZSBhZGRyZXNzOiAke2V9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtYXRjaCA9IGZhbHNlO1xuICAgICAgcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgaWYgKHJlY2lwaWVudC5hZGRyZXNzID09PSBvdXRwdXQuYWRkcmVzcyAmJiBCaWdJbnQocmVjaXBpZW50LmFtb3VudFNhdCkgPT09IG91dHB1dC52YWx1ZSkge1xuICAgICAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUFNCVCBvdXRwdXQgJHtvdXRwdXQuYWRkcmVzc30gd2l0aCB2YWx1ZSAke291dHB1dC52YWx1ZX0gZG9lcyBub3QgbWF0Y2ggYW55IHJlY2lwaWVudGApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,27 @@
1
+ import * as utxolib from '@bitgo-beta/utxo-lib';
2
+ export interface PsbtCreationOptions {
3
+ network: utxolib.Network;
4
+ inputValue?: number;
5
+ outputValue?: number;
6
+ outputAddress?: string;
7
+ changeValue?: number;
8
+ changeDerivationPath?: string;
9
+ changePurpose?: 49 | 84 | 86;
10
+ includeChangeOutput?: boolean;
11
+ masterKey?: utxolib.BIP32Interface;
12
+ }
13
+ export interface PsbtCreationResult {
14
+ psbt: utxolib.Psbt;
15
+ masterKey: utxolib.BIP32Interface;
16
+ changeDerivationPath: string;
17
+ changePurpose: number;
18
+ }
19
+ /**
20
+ * Creates a PSBT for testing purposes with customizable options.
21
+ * This helper function generates a PSBT with a fake input and configurable outputs.
22
+ *
23
+ * @param options - Configuration options for PSBT creation
24
+ * @returns A constructed PSBT instance and the master key used
25
+ */
26
+ export declare function createTestPsbt(options: PsbtCreationOptions): PsbtCreationResult;
27
+ //# sourceMappingURL=createPsbt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createPsbt.d.ts","sourceRoot":"","sources":["../../../../test/unit/lightning/createPsbt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC,cAAc,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CAkJ/E"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.createTestPsbt = createTestPsbt;
37
+ const utxolib = __importStar(require("@bitgo-beta/utxo-lib"));
38
+ /**
39
+ * Creates a PSBT for testing purposes with customizable options.
40
+ * This helper function generates a PSBT with a fake input and configurable outputs.
41
+ *
42
+ * @param options - Configuration options for PSBT creation
43
+ * @returns A constructed PSBT instance and the master key used
44
+ */
45
+ function createTestPsbt(options) {
46
+ const { network, inputValue = 500000, outputValue = 100000, outputAddress, changeValue, changeDerivationPath = "m/84'/0'/0'/1/6", changePurpose = 84, includeChangeOutput = true, masterKey, } = options;
47
+ const fixedSeed = Buffer.from('0101010101010101010101010101010101010101010101010101010101010101', 'hex');
48
+ const accountMasterKey = masterKey || utxolib.bip32.fromSeed(fixedSeed, network);
49
+ const inputPrivateKey = Buffer.from('0202020202020202020202020202020202020202020202020202020202020202', 'hex');
50
+ const inputKeyPair = utxolib.ECPair.fromPrivateKey(inputPrivateKey, { network });
51
+ const p2wpkhInput = utxolib.payments.p2wpkh({
52
+ pubkey: Buffer.from(inputKeyPair.publicKey),
53
+ network,
54
+ });
55
+ // Create a new PSBT instance
56
+ const psbt = new utxolib.Psbt({ network });
57
+ // Add a fake input to the PSBT
58
+ const fakeTxId = 'ca6852598b48230ac870814b935b0d982d3968eb00a1d97332dceb6cd9b8505e';
59
+ const fakeVout = 1;
60
+ psbt.addInput({
61
+ hash: fakeTxId,
62
+ index: fakeVout,
63
+ witnessUtxo: {
64
+ script: p2wpkhInput.output,
65
+ value: BigInt(inputValue),
66
+ },
67
+ bip32Derivation: [
68
+ {
69
+ masterFingerprint: Buffer.alloc(4, 0),
70
+ path: "m/84'/0'/0'/0/0",
71
+ pubkey: Buffer.from(inputKeyPair.publicKey),
72
+ },
73
+ ],
74
+ });
75
+ // Add recipient output
76
+ let recipientAddress;
77
+ if (outputAddress) {
78
+ recipientAddress = outputAddress;
79
+ }
80
+ else {
81
+ const recipientPrivateKey = Buffer.from('0303030303030303030303030303030303030303030303030303030303030303', 'hex');
82
+ const recipientKeyPair = utxolib.ECPair.fromPrivateKey(recipientPrivateKey, { network });
83
+ // P2TR requires x-only pubkey (32 bytes, without the prefix byte)
84
+ const xOnlyPubkey = recipientKeyPair.publicKey.length === 33
85
+ ? recipientKeyPair.publicKey.subarray(1, 33)
86
+ : recipientKeyPair.publicKey;
87
+ const recipientP2tr = utxolib.payments.p2tr({
88
+ pubkey: xOnlyPubkey,
89
+ network,
90
+ }, { eccLib: utxolib.ecc });
91
+ recipientAddress = recipientP2tr.address;
92
+ }
93
+ psbt.addOutput({
94
+ address: recipientAddress,
95
+ value: BigInt(outputValue),
96
+ });
97
+ // Add change output if requested
98
+ if (includeChangeOutput) {
99
+ const calculatedChangeValue = changeValue !== undefined ? changeValue : inputValue - outputValue - 10000; // 10k sats fee
100
+ // Parse the derivation path to get the change and address indices
101
+ // Expected format: m/purpose'/coin_type'/account'/change/address_index
102
+ const pathSegments = changeDerivationPath.split('/');
103
+ const changeIndex = Number(pathSegments[pathSegments.length - 2]);
104
+ const addressIndex = Number(pathSegments[pathSegments.length - 1]);
105
+ // Derive the change key from the master key
106
+ const changeNode = accountMasterKey.derive(changeIndex).derive(addressIndex);
107
+ const changePubkey = changeNode.publicKey;
108
+ let changeAddress;
109
+ let changePayment;
110
+ // Create change address based on purpose
111
+ switch (changePurpose) {
112
+ case 49: // P2SH-P2WPKH
113
+ changePayment = utxolib.payments.p2sh({
114
+ redeem: utxolib.payments.p2wpkh({
115
+ pubkey: changePubkey,
116
+ network,
117
+ }),
118
+ network,
119
+ });
120
+ changeAddress = changePayment.address;
121
+ break;
122
+ case 84: // P2WPKH
123
+ changePayment = utxolib.payments.p2wpkh({
124
+ pubkey: changePubkey,
125
+ network,
126
+ });
127
+ changeAddress = changePayment.address;
128
+ break;
129
+ case 86: // P2TR
130
+ const xOnlyChangePubkey = changePubkey.length === 33 ? changePubkey.subarray(1, 33) : changePubkey;
131
+ changePayment = utxolib.payments.p2tr({
132
+ pubkey: xOnlyChangePubkey,
133
+ network,
134
+ }, { eccLib: utxolib.ecc });
135
+ changeAddress = changePayment.address;
136
+ break;
137
+ default:
138
+ throw new Error(`Unsupported purpose: ${changePurpose}`);
139
+ }
140
+ psbt.addOutput({
141
+ address: changeAddress,
142
+ value: BigInt(calculatedChangeValue),
143
+ });
144
+ // Add bip32Derivation to the change output
145
+ psbt.updateOutput(1, {
146
+ bip32Derivation: [
147
+ {
148
+ masterFingerprint: Buffer.alloc(4, 0),
149
+ path: changeDerivationPath,
150
+ pubkey: changePubkey,
151
+ },
152
+ ],
153
+ });
154
+ }
155
+ return {
156
+ psbt,
157
+ masterKey: accountMasterKey,
158
+ changeDerivationPath,
159
+ changePurpose,
160
+ };
161
+ }
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9saWdodG5pbmcvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQSx3Q0FrSkM7QUE5S0QsOERBQWdEO0FBcUJoRDs7Ozs7O0dBTUc7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBNEI7SUFDekQsTUFBTSxFQUNKLE9BQU8sRUFDUCxVQUFVLEdBQUcsTUFBTSxFQUNuQixXQUFXLEdBQUcsTUFBTSxFQUNwQixhQUFhLEVBQ2IsV0FBVyxFQUNYLG9CQUFvQixHQUFHLGlCQUFpQixFQUN4QyxhQUFhLEdBQUcsRUFBRSxFQUNsQixtQkFBbUIsR0FBRyxJQUFJLEVBQzFCLFNBQVMsR0FDVixHQUFHLE9BQU8sQ0FBQztJQUNaLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekcsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0csTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzNDLE9BQU87S0FDUixDQUFDLENBQUM7SUFFSCw2QkFBNkI7SUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFB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QUMscUJBQXFCLENBQUM7U0FDckMsQ0FBQyxDQUFDO1FBRUgsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFO1lBQ25CLGVBQWUsRUFBRTtnQkFDZjtvQkFDRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JDLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLE1BQU0sRUFBRSxZQUFZO2lCQUNyQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJO1FBQ0osU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixvQkFBb0I7UUFDcEIsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28tYmV0YS91dHhvLWxpYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHNidENyZWF0aW9uT3B0aW9ucyB7XG4gIG5ldHdvcms6IHV0eG9saWIuTmV0d29yaztcbiAgaW5wdXRWYWx1ZT86IG51bWJlcjtcbiAgb3V0cHV0VmFsdWU/OiBudW1iZXI7XG4gIG91dHB1dEFkZHJlc3M/OiBzdHJpbmc7XG4gIGNoYW5nZVZhbHVlPzogbnVtYmVyO1xuICBjaGFuZ2VEZXJpdmF0aW9uUGF0aD86IHN0cmluZztcbiAgY2hhbmdlUHVycG9zZT86IDQ5IHwgODQgfCA4NjtcbiAgaW5jbHVkZUNoYW5nZU91dHB1dD86IGJvb2xlYW47XG4gIG1hc3RlcktleT86IHV0eG9saWIuQklQMzJJbnRlcmZhY2U7IC8vIE9wdGlvbmFsIG1hc3RlciBrZXkgZm9yIGRlcml2aW5nIGFkZHJlc3Nlc1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBzYnRDcmVhdGlvblJlc3VsdCB7XG4gIHBzYnQ6IHV0eG9saWIuUHNidDtcbiAgbWFzdGVyS2V5OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlO1xuICBjaGFuZ2VEZXJpdmF0aW9uUGF0aDogc3RyaW5nO1xuICBjaGFuZ2VQdXJwb3NlOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIFBTQlQgZm9yIHRlc3RpbmcgcHVycG9zZXMgd2l0aCBjdXN0b21pemFibGUgb3B0aW9ucy5cbiAqIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGdlbmVyYXRlcyBhIFBTQlQgd2l0aCBhIGZha2UgaW5wdXQgYW5kIGNvbmZpZ3VyYWJsZSBvdXRwdXRzLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQU0JUIGNyZWF0aW9uXG4gKiBAcmV0dXJucyBBIGNvbnN0cnVjdGVkIFBTQlQgaW5zdGFuY2UgYW5kIHRoZSBtYXN0ZXIga2V5IHVzZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRlc3RQc2J0KG9wdGlvbnM6IFBzYnRDcmVhdGlvbk9wdGlvbnMpOiBQc2J0Q3JlYXRpb25SZXN1bHQge1xuICBjb25zdCB7XG4gICAgbmV0d29yayxcbiAgICBpbnB1dFZhbHVlID0gNTAwMDAwLFxuICAgIG91dHB1dFZhbHVlID0gMTAwMDAwLFxuICAgIG91dHB1dEFkZHJlc3MsXG4gICAgY2hhbmdlVmFsdWUsXG4gICAgY2hhbmdlRGVyaXZhdGlvblBhdGggPSBcIm0vODQnLzAnLzAnLzEvNlwiLFxuICAgIGNoYW5nZVB1cnBvc2UgPSA4NCxcbiAgICBpbmNsdWRlQ2hhbmdlT3V0cHV0ID0gdHJ1ZSxcbiAgICBtYXN0ZXJLZXksXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBmaXhlZFNlZWQgPSBCdWZmZXIuZnJvbSgnMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMScsICdoZXgnKTtcbiAgY29uc3QgYWNjb3VudE1hc3RlcktleSA9IG1hc3RlcktleSB8fCB1dHhvbGliLmJpcDMyLmZyb21TZWVkKGZpeGVkU2VlZCwgbmV0d29yayk7XG5cbiAgY29uc3QgaW5wdXRQcml2YXRlS2V5ID0gQnVmZmVyLmZyb20oJzAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDInLCAnaGV4Jyk7XG4gIGNvbnN0IGlucHV0S2V5UGFpciA9IHV0eG9saWIuRUNQYWlyLmZyb21Qcml2YXRlS2V5KGlucHV0UHJpdmF0ZUtleSwgeyBuZXR3b3JrIH0pO1xuICBjb25zdCBwMndwa2hJbnB1dCA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICBwdWJrZXk6IEJ1ZmZlci5mcm9tKGlucHV0S2V5UGFpci5wdWJsaWNLZXkpLFxuICAgIG5ldHdvcmssXG4gIH0pO1xuXG4gIC8vIENyZWF0ZSBhIG5ldyBQU0JUIGluc3RhbmNlXG4gIGNvbnN0IHBzYnQgPSBuZXcgdXR4b2xpYi5Qc2J0KHsgbmV0d29yayB9KTtcblxuICAvLyBBZGQgYSBmYWtlIGlucHV0IHRvIHRoZSBQU0JUXG4gIGNvbnN0IGZha2VUeElkID0gJ2NhNjg1MjU5OGI0ODIzMGFjODcwODE0YjkzNWIwZDk4MmQzOTY4ZWIwMGExZDk3MzMyZGNlYjZjZDliODUwNWUnO1xuICBjb25zdCBmYWtlVm91dCA9IDE7XG5cbiAgcHNidC5hZGRJbnB1dCh7XG4gICAgaGFzaDogZmFrZVR4SWQsXG4gICAgaW5kZXg6IGZha2VWb3V0LFxuICAgIHdpdG5lc3NVdHhvOiB7XG4gICAgICBzY3JpcHQ6IHAyd3BraElucHV0Lm91dHB1dCEsXG4gICAgICB2YWx1ZTogQmlnSW50KGlucHV0VmFsdWUpLFxuICAgIH0sXG4gICAgYmlwMzJEZXJpdmF0aW9uOiBbXG4gICAgICB7XG4gICAgICAgIG1hc3RlckZpbmdlcnByaW50OiBCdWZmZXIuYWxsb2MoNCwgMCksXG4gICAgICAgIHBhdGg6IFwibS84NCcvMCcvMCcvMC8wXCIsXG4gICAgICAgIHB1YmtleTogQnVmZmVyLmZyb20oaW5wdXRLZXlQYWlyLnB1YmxpY0tleSksXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIC8vIEFkZCByZWNpcGllbnQgb3V0cHV0XG4gIGxldCByZWNpcGllbnRBZGRyZXNzOiBzdHJpbmc7XG4gIGlmIChvdXRwdXRBZGRyZXNzKSB7XG4gICAgcmVjaXBpZW50QWRkcmVzcyA9IG91dHB1dEFkZHJlc3M7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcmVjaXBpZW50UHJpdmF0ZUtleSA9IEJ1ZmZlci5mcm9tKCcwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzJywgJ2hleCcpO1xuICAgIGNvbnN0IHJlY2lwaWVudEtleVBhaXIgPSB1dHhvbGliLkVDUGFpci5mcm9tUHJpdmF0ZUtleShyZWNpcGllbnRQcml2YXRlS2V5LCB7IG5ldHdvcmsgfSk7XG4gICAgLy8gUDJUUiByZXF1aXJlcyB4LW9ubHkgcHVia2V5ICgzMiBieXRlcywgd2l0aG91dCB0aGUgcHJlZml4IGJ5dGUpXG4gICAgY29uc3QgeE9ubHlQdWJrZXkgPVxuICAgICAgcmVjaXBpZW50S2V5UGFpci5wdWJsaWNLZXkubGVuZ3RoID09PSAzM1xuICAgICAgICA/IHJlY2lwaWVudEtleVBhaXIucHVibGljS2V5LnN1YmFycmF5KDEsIDMzKVxuICAgICAgICA6IHJlY2lwaWVudEtleVBhaXIucHVibGljS2V5O1xuICAgIGNvbnN0IHJlY2lwaWVudFAydHIgPSB1dHhvbGliLnBheW1lbnRzLnAydHIoXG4gICAgICB7XG4gICAgICAgIHB1YmtleTogeE9ubHlQdWJrZXksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9LFxuICAgICAgeyBlY2NMaWI6IHV0eG9saWIuZWNjIH1cbiAgICApO1xuICAgIHJlY2lwaWVudEFkZHJlc3MgPSByZWNpcGllbnRQMnRyLmFkZHJlc3MhO1xuICB9XG5cbiAgcHNidC5hZGRPdXRwdXQoe1xuICAgIGFkZHJlc3M6IHJlY2lwaWVudEFkZHJlc3MsXG4gICAgdmFsdWU6IEJpZ0ludChvdXRwdXRWYWx1ZSksXG4gIH0pO1xuXG4gIC8vIEFkZCBjaGFuZ2Ugb3V0cHV0IGlmIHJlcXVlc3RlZFxuICBpZiAoaW5jbHVkZUNoYW5nZU91dHB1dCkge1xuICAgIGNvbnN0IGNhbGN1bGF0ZWRDaGFuZ2VWYWx1ZSA9IGNoYW5nZVZhbHVlICE9PSB1bmRlZmluZWQgPyBjaGFuZ2VWYWx1ZSA6IGlucHV0VmFsdWUgLSBvdXRwdXRWYWx1ZSAtIDEwMDAwOyAvLyAxMGsgc2F0cyBmZWVcblxuICAgIC8vIFBhcnNlIHRoZSBkZXJpdmF0aW9uIHBhdGggdG8gZ2V0IHRoZSBjaGFuZ2UgYW5kIGFkZHJlc3MgaW5kaWNlc1xuICAgIC8vIEV4cGVjdGVkIGZvcm1hdDogbS9wdXJwb3NlJy9jb2luX3R5cGUnL2FjY291bnQnL2NoYW5nZS9hZGRyZXNzX2luZGV4XG4gICAgY29uc3QgcGF0aFNlZ21lbnRzID0gY2hhbmdlRGVyaXZhdGlvblBhdGguc3BsaXQoJy8nKTtcbiAgICBjb25zdCBjaGFuZ2VJbmRleCA9IE51bWJlcihwYXRoU2VnbWVudHNbcGF0aFNlZ21lbnRzLmxlbmd0aCAtIDJdKTtcbiAgICBjb25zdCBhZGRyZXNzSW5kZXggPSBOdW1iZXIocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSk7XG5cbiAgICAvLyBEZXJpdmUgdGhlIGNoYW5nZSBrZXkgZnJvbSB0aGUgbWFzdGVyIGtleVxuICAgIGNvbnN0IGNoYW5nZU5vZGUgPSBhY2NvdW50TWFzdGVyS2V5LmRlcml2ZShjaGFuZ2VJbmRleCkuZGVyaXZlKGFkZHJlc3NJbmRleCk7XG4gICAgY29uc3QgY2hhbmdlUHVia2V5ID0gY2hhbmdlTm9kZS5wdWJsaWNLZXk7XG5cbiAgICBsZXQgY2hhbmdlQWRkcmVzczogc3RyaW5nO1xuICAgIGxldCBjaGFuZ2VQYXltZW50O1xuXG4gICAgLy8gQ3JlYXRlIGNoYW5nZSBhZGRyZXNzIGJhc2VkIG9uIHB1cnBvc2VcbiAgICBzd2l0Y2ggKGNoYW5nZVB1cnBvc2UpIHtcbiAgICAgIGNhc2UgNDk6IC8vIFAyU0gtUDJXUEtIXG4gICAgICAgIGNoYW5nZVBheW1lbnQgPSB1dHhvbGliLnBheW1lbnRzLnAyc2goe1xuICAgICAgICAgIHJlZGVlbTogdXR4b2xpYi5wYXltZW50cy5wMndwa2goe1xuICAgICAgICAgICAgcHVia2V5OiBjaGFuZ2VQdWJrZXksXG4gICAgICAgICAgICBuZXR3b3JrLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldHdvcmssXG4gICAgICAgIH0pO1xuICAgICAgICBjaGFuZ2VBZGRyZXNzID0gY2hhbmdlUGF5bWVudC5hZGRyZXNzITtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDg0OiAvLyBQMldQS0hcbiAgICAgICAgY2hhbmdlUGF5bWVudCA9IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgICBwdWJrZXk6IGNoYW5nZVB1YmtleSxcbiAgICAgICAgICBuZXR3b3JrLFxuICAgICAgICB9KTtcbiAgICAgICAgY2hhbmdlQWRkcmVzcyA9IGNoYW5nZVBheW1lbnQuYWRkcmVzcyE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4NjogLy8gUDJUUlxuICAgICAgICBjb25zdCB4T25seUNoYW5nZVB1YmtleSA9IGNoYW5nZVB1YmtleS5sZW5ndGggPT09IDMzID8gY2hhbmdlUHVia2V5LnN1YmFycmF5KDEsIDMzKSA6IGNoYW5nZVB1YmtleTtcbiAgICAgICAgY2hhbmdlUGF5bWVudCA9IHV0eG9saWIucGF5bWVudHMucDJ0cihcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwdWJrZXk6IHhPbmx5Q2hhbmdlUHVia2V5LFxuICAgICAgICAgICAgbmV0d29yayxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgZWNjTGliOiB1dHhvbGliLmVjYyB9XG4gICAgICAgICk7XG4gICAgICAgIGNoYW5nZUFkZHJlc3MgPSBjaGFuZ2VQYXltZW50LmFkZHJlc3MhO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcHVycG9zZTogJHtjaGFuZ2VQdXJwb3NlfWApO1xuICAgIH1cblxuICAgIHBzYnQuYWRkT3V0cHV0KHtcbiAgICAgIGFkZHJlc3M6IGNoYW5nZUFkZHJlc3MsXG4gICAgICB2YWx1ZTogQmlnSW50KGNhbGN1bGF0ZWRDaGFuZ2VWYWx1ZSksXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgYmlwMzJEZXJpdmF0aW9uIHRvIHRoZSBjaGFuZ2Ugb3V0cHV0XG4gICAgcHNidC51cGRhdGVPdXRwdXQoMSwge1xuICAgICAgYmlwMzJEZXJpdmF0aW9uOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtYXN0ZXJGaW5nZXJwcmludDogQnVmZmVyLmFsbG9jKDQsIDApLFxuICAgICAgICAgIHBhdGg6IGNoYW5nZURlcml2YXRpb25QYXRoLFxuICAgICAgICAgIHB1YmtleTogY2hhbmdlUHVia2V5LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgcHNidCxcbiAgICBtYXN0ZXJLZXk6IGFjY291bnRNYXN0ZXJLZXksXG4gICAgY2hhbmdlRGVyaXZhdGlvblBhdGgsXG4gICAgY2hhbmdlUHVycG9zZSxcbiAgfTtcbn1cbiJdfQ==