@bitgo/abstract-lightning 7.6.0 → 7.6.2

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,iBAAiB,CAAC;AAC3C,OAAO,EAAa,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,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,iBAAiB,CAAC;AAC3C,OAAO,EAAa,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAClD,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLDRDQThCQztBQUVELGtEQWdFQztBQUtELDBEQTJCQztBQTVKRCx5REFBMkM7QUFDM0MsOENBQWtEO0FBSWxELHFEQU0wQjtBQUUxQixTQUFTLG1CQUFtQixDQUFDLGNBQXNCO0lBS2pELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxPQUFPLEtBQUssc0NBQXFCLElBQUksT0FBTyxLQUFLLDhCQUFhLElBQUksT0FBTyxLQUFLLDZCQUFZLEVBQUUsQ0FBQztRQUMvRixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLE9BQXdCO0lBQ25FLE1BQU0sYUFBYSxHQUFxQyxFQUFFLENBQUM7SUFDM0QsSUFBSSxlQUE0QyxDQUFDO0lBRWpELEtB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Yml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgaXNNYWlubmV0LCBQc2J0IH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IFdhdGNoT25seUFjY291bnQsIFdpdGhkcmF3QmFzZU91dHB1dFVUWE8gfSBmcm9tICcuLi9jb2RlY3MnO1xuaW1wb3J0IHsgTGlnaHRuaW5nT25jaGFpblJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgQmlwMzJEZXJpdmF0aW9uIH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBFeHRlbmRlZEtleUFkZHJlc3NQdXJwb3NlLFxuICBQVVJQT1NFX1AyVFIsXG4gIFBVUlBPU0VfUDJXS0gsXG4gIFBVUlBPU0VfV1JBUFBFRF9QMldLSCxcbiAgcmV2ZXJ0WHB1YlByZWZpeCxcbn0gZnJvbSAnLi9saWdodG5pbmdVdGlscyc7XG5cbmZ1bmN0aW9uIHBhcnNlRGVyaXZhdGlvblBhdGgoZGVyaXZhdGlvblBhdGg6IHN0cmluZyk6IHtcbiAgcHVycG9zZTogRXh0ZW5kZWRLZXlBZGRyZXNzUHVycG9zZTtcbiAgY2hhbmdlOiBudW1iZXI7XG4gIGFkZHJlc3NJbmRleDogbnVtYmVyO1xufSB7XG4gIGNvbnN0IHBhdGhTZWdtZW50cyA9IGRlcml2YXRpb25QYXRoLnNwbGl0KCcvJyk7XG4gIGNvbnN0IHB1cnBvc2UgPSBOdW1iZXIocGF0aFNlZ21lbnRzWzFdLnJlcGxhY2UoLycvZywgJycpKTtcbiAgY29uc3QgY2hhbmdlID0gTnVtYmVyKHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMl0pO1xuICBjb25zdCBhZGRyZXNzSW5kZXggPSBOdW1iZXIocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSk7XG4gIGlmIChwdXJwb3NlICE9PSBQVVJQT1NFX1dSQVBQRURfUDJXS0ggJiYgcHVycG9zZSAhPT0gUFVSUE9TRV9QMldLSCAmJiBwdXJwb3NlICE9PSBQVVJQT1NFX1AyVFIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHB1cnBvc2UgaW4gZGVyaXZhdGlvbiBwYXRoOiAke3B1cnBvc2V9YCk7XG4gIH1cbiAgcmV0dXJuIHsgcHVycG9zZSwgY2hhbmdlLCBhZGRyZXNzSW5kZXggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHNidE91dHB1dHMocHNidDogUHNidCwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+W10ge1xuICBjb25zdCBwYXJzZWRPdXRwdXRzOiBXaXRoZHJhd0Jhc2VPdXRwdXRVVFhPPGJpZ2ludD5bXSA9IFtdO1xuICBsZXQgYmlwMzJEZXJpdmF0aW9uOiBCaXAzMkRlcml2YXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG91dHB1dCA9IHBzYnQuZGF0YS5vdXRwdXRzW2ldO1xuICAgIGNvbnN0IHR4T3V0cHV0ID0gcHNidC50eE91dHB1dHNbaV07XG5cbiAgICBsZXQgYWRkcmVzcyA9ICcnO1xuICAgIGNvbnN0IHZhbHVlID0gdHhPdXRwdXQudmFsdWU7XG4gICAgbGV0IGlzQ2hhbmdlID0gZmFsc2U7XG5cbiAgICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbiAmJiBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIGlzQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIGJpcDMyRGVyaXZhdGlvbiA9IG91dHB1dC5iaXAzMkRlcml2YXRpb25bMF07XG4gICAgfVxuICAgIGlmICh0eE91dHB1dC5zY3JpcHQpIHtcbiAgICAgIGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdCh0eE91dHB1dC5zY3JpcHQsIG5ldHdvcmspO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IEJpZ0ludCh2YWx1ZSk7XG5cbiAgICBwYXJzZWRPdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB2YWx1ZUJpZ0ludCxcbiAgICAgIGNoYW5nZTogaXNDaGFuZ2UsXG4gICAgICBiaXAzMkRlcml2YXRpb24sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkT3V0cHV0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUNoYW5nZUFkZHJlc3MoXG4gIG91dHB1dDogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+LFxuICBhY2NvdW50czogV2F0Y2hPbmx5QWNjb3VudFtdLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IHZvaWQge1xuICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24gfHwgIW91dHB1dC5iaXAzMkRlcml2YXRpb24ucGF0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgYmlwMzJEZXJpdmF0aW9uIHBhdGggbm90IGZvdW5kIGZvciBjaGFuZ2UgYWRkcmVzc2ApO1xuICB9XG4gIC8vIGRlcml2YXRpb24gcGF0aCBleGFtcGxlOiBtLzg0Jy8wJy8wJy8xLzBcbiAgY29uc3QgeyBwdXJwb3NlLCBjaGFuZ2UsIGFkZHJlc3NJbmRleCB9ID0gcGFyc2VEZXJpdmF0aW9uUGF0aChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnBhdGgpO1xuXG4gIC8vIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgYWNjb3VudCB1c2luZyB0aGUgcHVycG9zZVxuICBjb25zdCBhY2NvdW50ID0gYWNjb3VudHMuZmluZCgoYWNjKSA9PiBhY2MucHVycG9zZSA9PT0gcHVycG9zZSk7XG4gIGlmICghYWNjb3VudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWNjb3VudCBub3QgZm91bmQgZm9yIHB1cnBvc2U6ICR7cHVycG9zZX1gKTtcbiAgfVxuXG4gIC8vIGNvbnZlcnQgdXB1YiwgdnB1YiwgZXRjIHByZWZpeGVzIHRvIHhwdWIgYXMgdXR4b2xpYiBkb2Vzbid0IHN1cHBvcnQgdGhlc2VcbiAgY29uc3QgY29udmVydGVkWHB1YiA9IHJldmVydFhwdWJQcmVmaXgoYWNjb3VudC54cHViLCBwdXJwb3NlLCBpc01haW5uZXQobmV0d29yaykpO1xuICAvLyBDcmVhdGUgYSBCSVAzMiBub2RlIGZyb20gdGhlIHhwdWJcbiAgY29uc3QgeHB1Yk5vZGUgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoY29udmVydGVkWHB1YiwgbmV0d29yayk7XG5cbiAgLy8gRGVyaXZlIHRoZSBwdWJsaWMga2V5IGZyb20gdGhlIHhwdWIgdXNpbmcgdGhlIGNoYW5nZSBhbmQgYWRkcmVzcyBpbmRleFxuICBjb25zdCBkZXJpdmVkUHVia2V5ID0geHB1Yk5vZGUuZGVyaXZlKGNoYW5nZSkuZGVyaXZlKGFkZHJlc3NJbmRleCkucHVibGljS2V5O1xuXG4gIGlmIChkZXJpdmVkUHVia2V5LnRvU3RyaW5nKCdoZXgnKSAhPT0gb3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5wdWJrZXkudG9TdHJpbmcoJ2hleCcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERlcml2ZWQgcHVia2V5IGRvZXMgbm90IG1hdGNoIGZvciBhZGRyZXNzOiAke291dHB1dC5hZGRyZXNzfSwgZGVyaXZlZDogJHtkZXJpdmVkUHVia2V5LnRvU3RyaW5nKFxuICAgICAgICAnaGV4J1xuICAgICAgKX0sIGV4cGVjdGVkOiAke291dHB1dC5iaXAzMkRlcml2YXRpb24ucHVia2V5LnRvU3RyaW5nKCdoZXgnKX1gXG4gICAgKTtcbiAgfVxuXG4gIC8vIERldGVybWluZSB0aGUgY29ycmVjdCBwYXltZW50IHR5cGUgYmFzZWQgb24gdGhlIHB1cnBvc2VcbiAgbGV0IGRlcml2ZWRBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHN3aXRjaCAocHVycG9zZSkge1xuICAgIGNhc2UgNDk6IC8vIFAyU0gtUDJXUEtIIChOZXN0ZWQgU2VnV2l0KVxuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAyc2goe1xuICAgICAgICByZWRlZW06IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgICBwdWJrZXk6IGRlcml2ZWRQdWJrZXksXG4gICAgICAgICAgbmV0d29yayxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9KS5hZGRyZXNzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4NDogLy8gUDJXUEtIIChOYXRpdmUgU2VnV2l0KVxuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgIHB1YmtleTogZGVyaXZlZFB1YmtleSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pLmFkZHJlc3M7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg2OiAvLyBQMlRSIChUYXByb290KVxuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAydHIoe1xuICAgICAgICBwdWJrZXk6IGRlcml2ZWRQdWJrZXksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9KS5hZGRyZXNzO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgcHVycG9zZTogJHtwdXJwb3NlfWApO1xuICB9XG5cbiAgaWYgKGRlcml2ZWRBZGRyZXNzICE9PSBvdXRwdXQuYWRkcmVzcykge1xuICAgIHRocm93IG5ldyBFcnJvcihgaW52YWxpZCBjaGFuZ2UgYWRkcmVzczogZXhwZWN0ZWQgJHtkZXJpdmVkQWRkcmVzc30sIGdvdCAke291dHB1dC5hZGRyZXNzfWApO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBmdW5kZWQgcHNidCBiZWZvcmUgY3JlYXRpbmcgdGhlIHNpZ25hdHVyZXMgZm9yIHdpdGhkcmF3LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQc2J0Rm9yV2l0aGRyYXcoXG4gIHBzYnRIZXg6IHN0cmluZyxcbiAgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrLFxuICByZWNpcGllbnRzOiBMaWdodG5pbmdPbmNoYWluUmVjaXBpZW50W10sXG4gIGFjY291bnRzOiBXYXRjaE9ubHlBY2NvdW50W11cbik6IHZvaWQge1xuICBjb25zdCBwYXJzZWRQc2J0ID0gUHNidC5mcm9tSGV4KHBzYnRIZXgsIHsgbmV0d29yazogbmV0d29yayB9KTtcbiAgY29uc3Qgb3V0cHV0cyA9IHBhcnNlUHNidE91dHB1dHMocGFyc2VkUHNidCwgbmV0d29yayk7XG4gIG91dHB1dHMuZm9yRWFjaCgob3V0cHV0KSA9PiB7XG4gICAgaWYgKG91dHB1dC5jaGFuZ2UpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZlcmlmeUNoYW5nZUFkZHJlc3Mob3V0cHV0LCBhY2NvdW50cywgbmV0d29yayk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gdmVyaWZ5IGNoYW5nZSBhZGRyZXNzOiAke2V9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBtYXRjaCA9IGZhbHNlO1xuICAgICAgcmVjaXBpZW50cy5mb3JFYWNoKChyZWNpcGllbnQpID0+IHtcbiAgICAgICAgaWYgKHJlY2lwaWVudC5hZGRyZXNzID09PSBvdXRwdXQuYWRkcmVzcyAmJiBCaWdJbnQocmVjaXBpZW50LmFtb3VudFNhdCkgPT09IG91dHB1dC52YWx1ZSkge1xuICAgICAgICAgIG1hdGNoID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUFNCVCBvdXRwdXQgJHtvdXRwdXQuYWRkcmVzc30gd2l0aCB2YWx1ZSAke291dHB1dC52YWx1ZX0gZG9lcyBub3QgbWF0Y2ggYW55IHJlY2lwaWVudGApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG4iXX0=
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyc2VXaXRoZHJhd1BzYnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGlnaHRuaW5nL3BhcnNlV2l0aGRyYXdQc2J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBNEJBLDRDQThCQztBQUVELGtEQXFFQztBQUtELDBEQTJCQztBQWpLRCx5REFBMkM7QUFDM0MsOENBQWtEO0FBSWxELHFEQU0wQjtBQUUxQixTQUFTLG1CQUFtQixDQUFDLGNBQXNCO0lBS2pELE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkUsSUFBSSxPQUFPLEtBQUssc0NBQXFCLElBQUksT0FBTyxLQUFLLDhCQUFhLElBQUksT0FBTyxLQUFLLDZCQUFZLEVBQUUsQ0FBQztRQUMvRixNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUMzQyxDQUFDO0FBRUQsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBVSxFQUFFLE9BQXdCO0lBQ25FLE1BQU0sYUFBYSxHQUFxQyxFQUFFLENBQUM7SUFDM0QsSUFBSSxlQUE0QyxDQUFDO0lBRWpELEtB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QkFDWCxNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsTUFBTSxDQUFDLE9BQU8sZUFBZSxNQUFNLENBQUMsS0FBSywrQkFBK0IsQ0FBQyxDQUFDO1lBQzNHLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuaW1wb3J0IHsgaXNNYWlubmV0LCBQc2J0IH0gZnJvbSAnQGJpdGdvL3V0eG8tbGliJztcbmltcG9ydCB7IFdhdGNoT25seUFjY291bnQsIFdpdGhkcmF3QmFzZU91dHB1dFVUWE8gfSBmcm9tICcuLi9jb2RlY3MnO1xuaW1wb3J0IHsgTGlnaHRuaW5nT25jaGFpblJlY2lwaWVudCB9IGZyb20gJ0BiaXRnby9wdWJsaWMtdHlwZXMnO1xuaW1wb3J0IHsgQmlwMzJEZXJpdmF0aW9uIH0gZnJvbSAnYmlwMTc0L3NyYy9saWIvaW50ZXJmYWNlcyc7XG5pbXBvcnQge1xuICBFeHRlbmRlZEtleUFkZHJlc3NQdXJwb3NlLFxuICBQVVJQT1NFX1AyVFIsXG4gIFBVUlBPU0VfUDJXS0gsXG4gIFBVUlBPU0VfV1JBUFBFRF9QMldLSCxcbiAgcmV2ZXJ0WHB1YlByZWZpeCxcbn0gZnJvbSAnLi9saWdodG5pbmdVdGlscyc7XG5cbmZ1bmN0aW9uIHBhcnNlRGVyaXZhdGlvblBhdGgoZGVyaXZhdGlvblBhdGg6IHN0cmluZyk6IHtcbiAgcHVycG9zZTogRXh0ZW5kZWRLZXlBZGRyZXNzUHVycG9zZTtcbiAgY2hhbmdlOiBudW1iZXI7XG4gIGFkZHJlc3NJbmRleDogbnVtYmVyO1xufSB7XG4gIGNvbnN0IHBhdGhTZWdtZW50cyA9IGRlcml2YXRpb25QYXRoLnNwbGl0KCcvJyk7XG4gIGNvbnN0IHB1cnBvc2UgPSBOdW1iZXIocGF0aFNlZ21lbnRzWzFdLnJlcGxhY2UoLycvZywgJycpKTtcbiAgY29uc3QgY2hhbmdlID0gTnVtYmVyKHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMl0pO1xuICBjb25zdCBhZGRyZXNzSW5kZXggPSBOdW1iZXIocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAxXSk7XG4gIGlmIChwdXJwb3NlICE9PSBQVVJQT1NFX1dSQVBQRURfUDJXS0ggJiYgcHVycG9zZSAhPT0gUFVSUE9TRV9QMldLSCAmJiBwdXJwb3NlICE9PSBQVVJQT1NFX1AyVFIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHB1cnBvc2UgaW4gZGVyaXZhdGlvbiBwYXRoOiAke3B1cnBvc2V9YCk7XG4gIH1cbiAgcmV0dXJuIHsgcHVycG9zZSwgY2hhbmdlLCBhZGRyZXNzSW5kZXggfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUHNidE91dHB1dHMocHNidDogUHNidCwgbmV0d29yazogdXR4b2xpYi5OZXR3b3JrKTogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+W10ge1xuICBjb25zdCBwYXJzZWRPdXRwdXRzOiBXaXRoZHJhd0Jhc2VPdXRwdXRVVFhPPGJpZ2ludD5bXSA9IFtdO1xuICBsZXQgYmlwMzJEZXJpdmF0aW9uOiBCaXAzMkRlcml2YXRpb24gfCB1bmRlZmluZWQ7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwc2J0LmRhdGEub3V0cHV0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IG91dHB1dCA9IHBzYnQuZGF0YS5vdXRwdXRzW2ldO1xuICAgIGNvbnN0IHR4T3V0cHV0ID0gcHNidC50eE91dHB1dHNbaV07XG5cbiAgICBsZXQgYWRkcmVzcyA9ICcnO1xuICAgIGNvbnN0IHZhbHVlID0gdHhPdXRwdXQudmFsdWU7XG4gICAgbGV0IGlzQ2hhbmdlID0gZmFsc2U7XG5cbiAgICBpZiAob3V0cHV0LmJpcDMyRGVyaXZhdGlvbiAmJiBvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLmxlbmd0aCA+IDApIHtcbiAgICAgIGlzQ2hhbmdlID0gdHJ1ZTtcbiAgICAgIGJpcDMyRGVyaXZhdGlvbiA9IG91dHB1dC5iaXAzMkRlcml2YXRpb25bMF07XG4gICAgfVxuICAgIGlmICh0eE91dHB1dC5zY3JpcHQpIHtcbiAgICAgIGFkZHJlc3MgPSB1dHhvbGliLmFkZHJlc3MuZnJvbU91dHB1dFNjcmlwdCh0eE91dHB1dC5zY3JpcHQsIG5ldHdvcmspO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZUJpZ0ludCA9IEJpZ0ludCh2YWx1ZSk7XG5cbiAgICBwYXJzZWRPdXRwdXRzLnB1c2goe1xuICAgICAgYWRkcmVzcyxcbiAgICAgIHZhbHVlOiB2YWx1ZUJpZ0ludCxcbiAgICAgIGNoYW5nZTogaXNDaGFuZ2UsXG4gICAgICBiaXAzMkRlcml2YXRpb24sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkT3V0cHV0cztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZlcmlmeUNoYW5nZUFkZHJlc3MoXG4gIG91dHB1dDogV2l0aGRyYXdCYXNlT3V0cHV0VVRYTzxiaWdpbnQ+LFxuICBhY2NvdW50czogV2F0Y2hPbmx5QWNjb3VudFtdLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmtcbik6IHZvaWQge1xuICBpZiAoIW91dHB1dC5iaXAzMkRlcml2YXRpb24gfHwgIW91dHB1dC5iaXAzMkRlcml2YXRpb24ucGF0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgYmlwMzJEZXJpdmF0aW9uIHBhdGggbm90IGZvdW5kIGZvciBjaGFuZ2UgYWRkcmVzc2ApO1xuICB9XG4gIC8vIGRlcml2YXRpb24gcGF0aCBleGFtcGxlOiBtLzg0Jy8wJy8wJy8xLzBcbiAgY29uc3QgeyBwdXJwb3NlLCBjaGFuZ2UsIGFkZHJlc3NJbmRleCB9ID0gcGFyc2VEZXJpdmF0aW9uUGF0aChvdXRwdXQuYmlwMzJEZXJpdmF0aW9uLnBhdGgpO1xuXG4gIC8vIEZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgYWNjb3VudCB1c2luZyB0aGUgcHVycG9zZVxuICBjb25zdCBhY2NvdW50ID0gYWNjb3VudHMuZmluZCgoYWNjKSA9PiBhY2MucHVycG9zZSA9PT0gcHVycG9zZSk7XG4gIGlmICghYWNjb3VudCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQWNjb3VudCBub3QgZm91bmQgZm9yIHB1cnBvc2U6ICR7cHVycG9zZX1gKTtcbiAgfVxuXG4gIC8vIGNvbnZlcnQgdXB1YiwgdnB1YiwgZXRjIHByZWZpeGVzIHRvIHhwdWIgYXMgdXR4b2xpYiBkb2Vzbid0IHN1cHBvcnQgdGhlc2VcbiAgY29uc3QgY29udmVydGVkWHB1YiA9IHJldmVydFhwdWJQcmVmaXgoYWNjb3VudC54cHViLCBwdXJwb3NlLCBpc01haW5uZXQobmV0d29yaykpO1xuICAvLyBDcmVhdGUgYSBCSVAzMiBub2RlIGZyb20gdGhlIHhwdWJcbiAgY29uc3QgeHB1Yk5vZGUgPSB1dHhvbGliLmJpcDMyLmZyb21CYXNlNTgoY29udmVydGVkWHB1YiwgbmV0d29yayk7XG5cbiAgLy8gRGVyaXZlIHRoZSBwdWJsaWMga2V5IGZyb20gdGhlIHhwdWIgdXNpbmcgdGhlIGNoYW5nZSBhbmQgYWRkcmVzcyBpbmRleFxuICBjb25zdCBkZXJpdmVkUHVia2V5ID0geHB1Yk5vZGUuZGVyaXZlKGNoYW5nZSkuZGVyaXZlKGFkZHJlc3NJbmRleCkucHVibGljS2V5O1xuXG4gIGlmIChkZXJpdmVkUHVia2V5LnRvU3RyaW5nKCdoZXgnKSAhPT0gb3V0cHV0LmJpcDMyRGVyaXZhdGlvbi5wdWJrZXkudG9TdHJpbmcoJ2hleCcpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYERlcml2ZWQgcHVia2V5IGRvZXMgbm90IG1hdGNoIGZvciBhZGRyZXNzOiAke291dHB1dC5hZGRyZXNzfSwgZGVyaXZlZDogJHtkZXJpdmVkUHVia2V5LnRvU3RyaW5nKFxuICAgICAgICAnaGV4J1xuICAgICAgKX0sIGV4cGVjdGVkOiAke291dHB1dC5iaXAzMkRlcml2YXRpb24ucHVia2V5LnRvU3RyaW5nKCdoZXgnKX1gXG4gICAgKTtcbiAgfVxuXG4gIC8vIERldGVybWluZSB0aGUgY29ycmVjdCBwYXltZW50IHR5cGUgYmFzZWQgb24gdGhlIHB1cnBvc2VcbiAgbGV0IGRlcml2ZWRBZGRyZXNzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHN3aXRjaCAocHVycG9zZSkge1xuICAgIGNhc2UgNDk6IC8vIFAyU0gtUDJXUEtIIChOZXN0ZWQgU2VnV2l0KVxuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAyc2goe1xuICAgICAgICByZWRlZW06IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgICBwdWJrZXk6IGRlcml2ZWRQdWJrZXksXG4gICAgICAgICAgbmV0d29yayxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldHdvcmssXG4gICAgICB9KS5hZGRyZXNzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA4NDogLy8gUDJXUEtIIChOYXRpdmUgU2VnV2l0KVxuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgIHB1YmtleTogZGVyaXZlZFB1YmtleSxcbiAgICAgICAgbmV0d29yayxcbiAgICAgIH0pLmFkZHJlc3M7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg2OiAvLyBQMlRSIChUYXByb290KVxuICAgICAgLy8gUDJUUiByZXF1aXJlcyB4LW9ubHkgcHVia2V5ICgzMiBieXRlcylcbiAgICAgIGNvbnN0IHhPbmx5UHVia2V5ID0gZGVyaXZlZFB1YmtleS5sZW5ndGggPT09IDMzID8gZGVyaXZlZFB1YmtleS5zdWJhcnJheSgxLCAzMykgOiBkZXJpdmVkUHVia2V5O1xuICAgICAgZGVyaXZlZEFkZHJlc3MgPSB1dHhvbGliLnBheW1lbnRzLnAydHIoXG4gICAgICAgIHtcbiAgICAgICAgICBwdWJrZXk6IHhPbmx5UHVia2V5LFxuICAgICAgICAgIG5ldHdvcmssXG4gICAgICAgIH0sXG4gICAgICAgIHsgZWNjTGliOiB1dHhvbGliLmVjYyB9XG4gICAgICApLmFkZHJlc3M7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBwdXJwb3NlOiAke3B1cnBvc2V9YCk7XG4gIH1cblxuICBpZiAoZGVyaXZlZEFkZHJlc3MgIT09IG91dHB1dC5hZGRyZXNzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBpbnZhbGlkIGNoYW5nZSBhZGRyZXNzOiBleHBlY3RlZCAke2Rlcml2ZWRBZGRyZXNzfSwgZ290ICR7b3V0cHV0LmFkZHJlc3N9YCk7XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGZ1bmRlZCBwc2J0IGJlZm9yZSBjcmVhdGluZyB0aGUgc2lnbmF0dXJlcyBmb3Igd2l0aGRyYXcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZVBzYnRGb3JXaXRoZHJhdyhcbiAgcHNidEhleDogc3RyaW5nLFxuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcmssXG4gIHJlY2lwaWVudHM6IExpZ2h0bmluZ09uY2hhaW5SZWNpcGllbnRbXSxcbiAgYWNjb3VudHM6IFdhdGNoT25seUFjY291bnRbXVxuKTogdm9pZCB7XG4gIGNvbnN0IHBhcnNlZFBzYnQgPSBQc2J0LmZyb21IZXgocHNidEhleCwgeyBuZXR3b3JrOiBuZXR3b3JrIH0pO1xuICBjb25zdCBvdXRwdXRzID0gcGFyc2VQc2J0T3V0cHV0cyhwYXJzZWRQc2J0LCBuZXR3b3JrKTtcbiAgb3V0cHV0cy5mb3JFYWNoKChvdXRwdXQpID0+IHtcbiAgICBpZiAob3V0cHV0LmNoYW5nZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdmVyaWZ5Q2hhbmdlQWRkcmVzcyhvdXRwdXQsIGFjY291bnRzLCBuZXR3b3JrKTtcbiAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byB2ZXJpZnkgY2hhbmdlIGFkZHJlc3M6ICR7ZX1gKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IG1hdGNoID0gZmFsc2U7XG4gICAgICByZWNpcGllbnRzLmZvckVhY2goKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICBpZiAocmVjaXBpZW50LmFkZHJlc3MgPT09IG91dHB1dC5hZGRyZXNzICYmIEJpZ0ludChyZWNpcGllbnQuYW1vdW50U2F0KSA9PT0gb3V0cHV0LnZhbHVlKSB7XG4gICAgICAgICAgbWF0Y2ggPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBQU0JUIG91dHB1dCAke291dHB1dC5hZGRyZXNzfSB3aXRoIHZhbHVlICR7b3V0cHV0LnZhbHVlfSBkb2VzIG5vdCBtYXRjaCBhbnkgcmVjaXBpZW50YCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
@@ -0,0 +1,27 @@
1
+ import * as utxolib from '@bitgo/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,iBAAiB,CAAC;AAE3C,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/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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUHNidC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Rlc3QvdW5pdC9saWdodG5pbmcvY3JlYXRlUHNidC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTRCQSx3Q0FrSkM7QUE5S0QseURBQTJDO0FBcUIzQzs7Ozs7O0dBTUc7QUFDSCxTQUFnQixjQUFjLENBQUMsT0FBNEI7SUFDekQsTUFBTSxFQUNKLE9BQU8sRUFDUCxVQUFVLEdBQUcsTUFBTSxFQUNuQixXQUFXLEdBQUcsTUFBTSxFQUNwQixhQUFhLEVBQ2IsV0FBVyxFQUNYLG9CQUFvQixHQUFHLGlCQUFpQixFQUN4QyxhQUFhLEdBQUcsRUFBRSxFQUNsQixtQkFBbUIsR0FBRyxJQUFJLEVBQzFCLFNBQVMsR0FDVixHQUFHLE9BQU8sQ0FBQztJQUNaLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDekcsTUFBTSxnQkFBZ0IsR0FBRyxTQUFTLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBRWpGLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0VBQWtFLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDL0csTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUNqRixNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDO1FBQzNDLE9BQU87S0FDUixDQUFDLENBQUM7SUFFSCw2QkFBNkI7SUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFB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QUMscUJBQXFCLENBQUM7U0FDckMsQ0FBQyxDQUFDO1FBRUgsMkNBQTJDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFO1lBQ25CLGVBQWUsRUFBRTtnQkFDZjtvQkFDRSxpQkFBaUIsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JDLElBQUksRUFBRSxvQkFBb0I7b0JBQzFCLE1BQU0sRUFBRSxZQUFZO2lCQUNyQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJO1FBQ0osU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixvQkFBb0I7UUFDcEIsYUFBYTtLQUNkLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdXR4b2xpYiBmcm9tICdAYml0Z28vdXR4by1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIFBzYnRDcmVhdGlvbk9wdGlvbnMge1xuICBuZXR3b3JrOiB1dHhvbGliLk5ldHdvcms7XG4gIGlucHV0VmFsdWU/OiBudW1iZXI7XG4gIG91dHB1dFZhbHVlPzogbnVtYmVyO1xuICBvdXRwdXRBZGRyZXNzPzogc3RyaW5nO1xuICBjaGFuZ2VWYWx1ZT86IG51bWJlcjtcbiAgY2hhbmdlRGVyaXZhdGlvblBhdGg/OiBzdHJpbmc7XG4gIGNoYW5nZVB1cnBvc2U/OiA0OSB8IDg0IHwgODY7XG4gIGluY2x1ZGVDaGFuZ2VPdXRwdXQ/OiBib29sZWFuO1xuICBtYXN0ZXJLZXk/OiB1dHhvbGliLkJJUDMySW50ZXJmYWNlOyAvLyBPcHRpb25hbCBtYXN0ZXIga2V5IGZvciBkZXJpdmluZyBhZGRyZXNzZXNcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQc2J0Q3JlYXRpb25SZXN1bHQge1xuICBwc2J0OiB1dHhvbGliLlBzYnQ7XG4gIG1hc3RlcktleTogdXR4b2xpYi5CSVAzMkludGVyZmFjZTtcbiAgY2hhbmdlRGVyaXZhdGlvblBhdGg6IHN0cmluZztcbiAgY2hhbmdlUHVycG9zZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBQU0JUIGZvciB0ZXN0aW5nIHB1cnBvc2VzIHdpdGggY3VzdG9taXphYmxlIG9wdGlvbnMuXG4gKiBUaGlzIGhlbHBlciBmdW5jdGlvbiBnZW5lcmF0ZXMgYSBQU0JUIHdpdGggYSBmYWtlIGlucHV0IGFuZCBjb25maWd1cmFibGUgb3V0cHV0cy5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgUFNCVCBjcmVhdGlvblxuICogQHJldHVybnMgQSBjb25zdHJ1Y3RlZCBQU0JUIGluc3RhbmNlIGFuZCB0aGUgbWFzdGVyIGtleSB1c2VkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUZXN0UHNidChvcHRpb25zOiBQc2J0Q3JlYXRpb25PcHRpb25zKTogUHNidENyZWF0aW9uUmVzdWx0IHtcbiAgY29uc3Qge1xuICAgIG5ldHdvcmssXG4gICAgaW5wdXRWYWx1ZSA9IDUwMDAwMCxcbiAgICBvdXRwdXRWYWx1ZSA9IDEwMDAwMCxcbiAgICBvdXRwdXRBZGRyZXNzLFxuICAgIGNoYW5nZVZhbHVlLFxuICAgIGNoYW5nZURlcml2YXRpb25QYXRoID0gXCJtLzg0Jy8wJy8wJy8xLzZcIixcbiAgICBjaGFuZ2VQdXJwb3NlID0gODQsXG4gICAgaW5jbHVkZUNoYW5nZU91dHB1dCA9IHRydWUsXG4gICAgbWFzdGVyS2V5LFxuICB9ID0gb3B0aW9ucztcbiAgY29uc3QgZml4ZWRTZWVkID0gQnVmZmVyLmZyb20oJzAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEwMTAxMDEnLCAnaGV4Jyk7XG4gIGNvbnN0IGFjY291bnRNYXN0ZXJLZXkgPSBtYXN0ZXJLZXkgfHwgdXR4b2xpYi5iaXAzMi5mcm9tU2VlZChmaXhlZFNlZWQsIG5ldHdvcmspO1xuXG4gIGNvbnN0IGlucHV0UHJpdmF0ZUtleSA9IEJ1ZmZlci5mcm9tKCcwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyMDIwMjAyJywgJ2hleCcpO1xuICBjb25zdCBpbnB1dEtleVBhaXIgPSB1dHhvbGliLkVDUGFpci5mcm9tUHJpdmF0ZUtleShpbnB1dFByaXZhdGVLZXksIHsgbmV0d29yayB9KTtcbiAgY29uc3QgcDJ3cGtoSW5wdXQgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgcHVia2V5OiBCdWZmZXIuZnJvbShpbnB1dEtleVBhaXIucHVibGljS2V5KSxcbiAgICBuZXR3b3JrLFxuICB9KTtcblxuICAvLyBDcmVhdGUgYSBuZXcgUFNCVCBpbnN0YW5jZVxuICBjb25zdCBwc2J0ID0gbmV3IHV0eG9saWIuUHNidCh7IG5ldHdvcmsgfSk7XG5cbiAgLy8gQWRkIGEgZmFrZSBpbnB1dCB0byB0aGUgUFNCVFxuICBjb25zdCBmYWtlVHhJZCA9ICdjYTY4NTI1OThiNDgyMzBhYzg3MDgxNGI5MzViMGQ5ODJkMzk2OGViMDBhMWQ5NzMzMmRjZWI2Y2Q5Yjg1MDVlJztcbiAgY29uc3QgZmFrZVZvdXQgPSAxO1xuXG4gIHBzYnQuYWRkSW5wdXQoe1xuICAgIGhhc2g6IGZha2VUeElkLFxuICAgIGluZGV4OiBmYWtlVm91dCxcbiAgICB3aXRuZXNzVXR4bzoge1xuICAgICAgc2NyaXB0OiBwMndwa2hJbnB1dC5vdXRwdXQhLFxuICAgICAgdmFsdWU6IEJpZ0ludChpbnB1dFZhbHVlKSxcbiAgICB9LFxuICAgIGJpcDMyRGVyaXZhdGlvbjogW1xuICAgICAge1xuICAgICAgICBtYXN0ZXJGaW5nZXJwcmludDogQnVmZmVyLmFsbG9jKDQsIDApLFxuICAgICAgICBwYXRoOiBcIm0vODQnLzAnLzAnLzAvMFwiLFxuICAgICAgICBwdWJrZXk6IEJ1ZmZlci5mcm9tKGlucHV0S2V5UGFpci5wdWJsaWNLZXkpLFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBBZGQgcmVjaXBpZW50IG91dHB1dFxuICBsZXQgcmVjaXBpZW50QWRkcmVzczogc3RyaW5nO1xuICBpZiAob3V0cHV0QWRkcmVzcykge1xuICAgIHJlY2lwaWVudEFkZHJlc3MgPSBvdXRwdXRBZGRyZXNzO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJlY2lwaWVudFByaXZhdGVLZXkgPSBCdWZmZXIuZnJvbSgnMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMzAzMDMwMycsICdoZXgnKTtcbiAgICBjb25zdCByZWNpcGllbnRLZXlQYWlyID0gdXR4b2xpYi5FQ1BhaXIuZnJvbVByaXZhdGVLZXkocmVjaXBpZW50UHJpdmF0ZUtleSwgeyBuZXR3b3JrIH0pO1xuICAgIC8vIFAyVFIgcmVxdWlyZXMgeC1vbmx5IHB1YmtleSAoMzIgYnl0ZXMsIHdpdGhvdXQgdGhlIHByZWZpeCBieXRlKVxuICAgIGNvbnN0IHhPbmx5UHVia2V5ID1cbiAgICAgIHJlY2lwaWVudEtleVBhaXIucHVibGljS2V5Lmxlbmd0aCA9PT0gMzNcbiAgICAgICAgPyByZWNpcGllbnRLZXlQYWlyLnB1YmxpY0tleS5zdWJhcnJheSgxLCAzMylcbiAgICAgICAgOiByZWNpcGllbnRLZXlQYWlyLnB1YmxpY0tleTtcbiAgICBjb25zdCByZWNpcGllbnRQMnRyID0gdXR4b2xpYi5wYXltZW50cy5wMnRyKFxuICAgICAge1xuICAgICAgICBwdWJrZXk6IHhPbmx5UHVia2V5LFxuICAgICAgICBuZXR3b3JrLFxuICAgICAgfSxcbiAgICAgIHsgZWNjTGliOiB1dHhvbGliLmVjYyB9XG4gICAgKTtcbiAgICByZWNpcGllbnRBZGRyZXNzID0gcmVjaXBpZW50UDJ0ci5hZGRyZXNzITtcbiAgfVxuXG4gIHBzYnQuYWRkT3V0cHV0KHtcbiAgICBhZGRyZXNzOiByZWNpcGllbnRBZGRyZXNzLFxuICAgIHZhbHVlOiBCaWdJbnQob3V0cHV0VmFsdWUpLFxuICB9KTtcblxuICAvLyBBZGQgY2hhbmdlIG91dHB1dCBpZiByZXF1ZXN0ZWRcbiAgaWYgKGluY2x1ZGVDaGFuZ2VPdXRwdXQpIHtcbiAgICBjb25zdCBjYWxjdWxhdGVkQ2hhbmdlVmFsdWUgPSBjaGFuZ2VWYWx1ZSAhPT0gdW5kZWZpbmVkID8gY2hhbmdlVmFsdWUgOiBpbnB1dFZhbHVlIC0gb3V0cHV0VmFsdWUgLSAxMDAwMDsgLy8gMTBrIHNhdHMgZmVlXG5cbiAgICAvLyBQYXJzZSB0aGUgZGVyaXZhdGlvbiBwYXRoIHRvIGdldCB0aGUgY2hhbmdlIGFuZCBhZGRyZXNzIGluZGljZXNcbiAgICAvLyBFeHBlY3RlZCBmb3JtYXQ6IG0vcHVycG9zZScvY29pbl90eXBlJy9hY2NvdW50Jy9jaGFuZ2UvYWRkcmVzc19pbmRleFxuICAgIGNvbnN0IHBhdGhTZWdtZW50cyA9IGNoYW5nZURlcml2YXRpb25QYXRoLnNwbGl0KCcvJyk7XG4gICAgY29uc3QgY2hhbmdlSW5kZXggPSBOdW1iZXIocGF0aFNlZ21lbnRzW3BhdGhTZWdtZW50cy5sZW5ndGggLSAyXSk7XG4gICAgY29uc3QgYWRkcmVzc0luZGV4ID0gTnVtYmVyKHBhdGhTZWdtZW50c1twYXRoU2VnbWVudHMubGVuZ3RoIC0gMV0pO1xuXG4gICAgLy8gRGVyaXZlIHRoZSBjaGFuZ2Uga2V5IGZyb20gdGhlIG1hc3RlciBrZXlcbiAgICBjb25zdCBjaGFuZ2VOb2RlID0gYWNjb3VudE1hc3RlcktleS5kZXJpdmUoY2hhbmdlSW5kZXgpLmRlcml2ZShhZGRyZXNzSW5kZXgpO1xuICAgIGNvbnN0IGNoYW5nZVB1YmtleSA9IGNoYW5nZU5vZGUucHVibGljS2V5O1xuXG4gICAgbGV0IGNoYW5nZUFkZHJlc3M6IHN0cmluZztcbiAgICBsZXQgY2hhbmdlUGF5bWVudDtcblxuICAgIC8vIENyZWF0ZSBjaGFuZ2UgYWRkcmVzcyBiYXNlZCBvbiBwdXJwb3NlXG4gICAgc3dpdGNoIChjaGFuZ2VQdXJwb3NlKSB7XG4gICAgICBjYXNlIDQ5OiAvLyBQMlNILVAyV1BLSFxuICAgICAgICBjaGFuZ2VQYXltZW50ID0gdXR4b2xpYi5wYXltZW50cy5wMnNoKHtcbiAgICAgICAgICByZWRlZW06IHV0eG9saWIucGF5bWVudHMucDJ3cGtoKHtcbiAgICAgICAgICAgIHB1YmtleTogY2hhbmdlUHVia2V5LFxuICAgICAgICAgICAgbmV0d29yayxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXR3b3JrLFxuICAgICAgICB9KTtcbiAgICAgICAgY2hhbmdlQWRkcmVzcyA9IGNoYW5nZVBheW1lbnQuYWRkcmVzcyE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA4NDogLy8gUDJXUEtIXG4gICAgICAgIGNoYW5nZVBheW1lbnQgPSB1dHhvbGliLnBheW1lbnRzLnAyd3BraCh7XG4gICAgICAgICAgcHVia2V5OiBjaGFuZ2VQdWJrZXksXG4gICAgICAgICAgbmV0d29yayxcbiAgICAgICAgfSk7XG4gICAgICAgIGNoYW5nZUFkZHJlc3MgPSBjaGFuZ2VQYXltZW50LmFkZHJlc3MhO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgODY6IC8vIFAyVFJcbiAgICAgICAgY29uc3QgeE9ubHlDaGFuZ2VQdWJrZXkgPSBjaGFuZ2VQdWJrZXkubGVuZ3RoID09PSAzMyA/IGNoYW5nZVB1YmtleS5zdWJhcnJheSgxLCAzMykgOiBjaGFuZ2VQdWJrZXk7XG4gICAgICAgIGNoYW5nZVBheW1lbnQgPSB1dHhvbGliLnBheW1lbnRzLnAydHIoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHVia2V5OiB4T25seUNoYW5nZVB1YmtleSxcbiAgICAgICAgICAgIG5ldHdvcmssXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IGVjY0xpYjogdXR4b2xpYi5lY2MgfVxuICAgICAgICApO1xuICAgICAgICBjaGFuZ2VBZGRyZXNzID0gY2hhbmdlUGF5bWVudC5hZGRyZXNzITtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHB1cnBvc2U6ICR7Y2hhbmdlUHVycG9zZX1gKTtcbiAgICB9XG5cbiAgICBwc2J0LmFkZE91dHB1dCh7XG4gICAgICBhZGRyZXNzOiBjaGFuZ2VBZGRyZXNzLFxuICAgICAgdmFsdWU6IEJpZ0ludChjYWxjdWxhdGVkQ2hhbmdlVmFsdWUpLFxuICAgIH0pO1xuXG4gICAgLy8gQWRkIGJpcDMyRGVyaXZhdGlvbiB0byB0aGUgY2hhbmdlIG91dHB1dFxuICAgIHBzYnQudXBkYXRlT3V0cHV0KDEsIHtcbiAgICAgIGJpcDMyRGVyaXZhdGlvbjogW1xuICAgICAgICB7XG4gICAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IEJ1ZmZlci5hbGxvYyg0LCAwKSxcbiAgICAgICAgICBwYXRoOiBjaGFuZ2VEZXJpdmF0aW9uUGF0aCxcbiAgICAgICAgICBwdWJrZXk6IGNoYW5nZVB1YmtleSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBzYnQsXG4gICAgbWFzdGVyS2V5OiBhY2NvdW50TWFzdGVyS2V5LFxuICAgIGNoYW5nZURlcml2YXRpb25QYXRoLFxuICAgIGNoYW5nZVB1cnBvc2UsXG4gIH07XG59XG4iXX0=