@bitgo-beta/key-card 0.1.2-alpha.49 → 0.1.2-alpha.490

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.
package/dist/src/faq.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateFaq = void 0;
3
+ exports.generateFaq = generateFaq;
4
+ exports.generateLightningFaq = generateLightningFaq;
4
5
  function generateFaq(coinName) {
5
6
  const sectionACoinSpecific = `The KeyCard contains important information which can be used to recover the ${coinName} `;
6
7
  const sectionBCoinSpecific = `If you have lost or damaged all copies of your KeyCard, your ${coinName} is still safe, but this `;
@@ -72,5 +73,17 @@ function generateFaq(coinName) {
72
73
  },
73
74
  ];
74
75
  }
75
- exports.generateFaq = generateFaq;
76
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFNQSxTQUFnQixXQUFXLENBQUMsUUFBZ0I7SUFDMUMsTUFBTSxvQkFBb0IsR0FBRywrRUFBK0UsUUFBUSxHQUFHLENBQUM7SUFDeEgsTUFBTSxvQkFBb0IsR0FBRyxnRUFBZ0UsUUFBUSwyQkFBMkIsQ0FBQztJQUNqSSxNQUFNLG9CQUFvQixHQUFHLDREQUE0RCxRQUFRLGlDQUFpQyxDQUFDO0lBQ25JLE1BQU0sb0JBQW9CLEdBQUcsMkNBQTJDLFFBQVEsOENBQThDLENBQUM7SUFFL0gsT0FBTztRQUNMO1lBQ0UsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxNQUFNLEVBQUU7Z0JBQ04sb0JBQW9CO2dCQUNwQix5RkFBeUY7Z0JBQ3pGLHVGQUF1RjthQUN4RjtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsMkJBQTJCO1lBQ3JDLE1BQU0sRUFBRTtnQkFDTiwrRkFBK0Y7Z0JBQy9GLG1HQUFtRztnQkFDbkcsZ0RBQWdEO2dCQUNoRCxFQUFFO2dCQUNGLDZGQUE2RjtnQkFDN0YsK0ZBQStGO2dCQUMvRixzREFBc0Q7YUFDdkQ7U0FDRjtRQUNEO1lBQ0UsUUFBUSxFQUFFLGdDQUFnQztZQUMxQyxNQUFNLEVBQUU7Z0JBQ04sb0JBQW9CO2dCQUNwQiwrRkFBK0Y7Z0JBQy9GLDhFQUE4RTthQUMvRTtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsa0NBQWtDO1lBQzVDLE1BQU0sRUFBRTtnQkFDTixrR0FBa0c7Z0JBQ2xHLHVGQUF1RjtnQkFDdkYsc0ZBQXNGO2dCQUN0Riw2RkFBNkY7Z0JBQzdGLCtDQUErQzthQUNoRDtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsOENBQThDO1lBQ3hELE1BQU0sRUFBRTtnQkFDTix3RkFBd0Y7Z0JBQ3hGLDZGQUE2RjthQUM5RjtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsNERBQTREO1lBQ3RFLE1BQU0sRUFBRTtnQkFDTixvRkFBb0Y7Z0JBQ3BGLG9CQUFvQjtnQkFDcEIsNkZBQTZGO2dCQUM3RixpQ0FBaUM7YUFDbEM7U0FDRjtRQUNEO1lBQ0UsUUFBUSxFQUFFLGtEQUFrRDtZQUM1RCxNQUFNLEVBQUU7Z0JBQ04sOEZBQThGO2dCQUM5Riw2RkFBNkY7Z0JBQzdGLG9CQUFvQjtnQkFDcEIsMkVBQTJFO2FBQzVFO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQztBQXZFRCxrQ0F1RUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZBUSB7XG4gIHF1ZXN0aW9uOiBzdHJpbmc7XG4gIC8vIHRoZSBhbnN3ZXIgdG8gdGhlIHF1ZXN0aW9uLCBhbHJlYWR5IHNwbGl0IGludG8gaW5kaXZpZHVhbCBsaW5lcyBvZiB0ZXh0XG4gIGFuc3dlcjogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUZhcShjb2luTmFtZTogc3RyaW5nKTogRkFRW10ge1xuICBjb25zdCBzZWN0aW9uQUNvaW5TcGVjaWZpYyA9IGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2luTmFtZX0gYDtcbiAgY29uc3Qgc2VjdGlvbkJDb2luU3BlY2lmaWMgPSBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbk5hbWV9IGlzIHN0aWxsIHNhZmUsIGJ1dCB0aGlzIGA7XG4gIGNvbnN0IHNlY3Rpb25DQ29pblNwZWNpZmljID0gYHNvdXJjZSB0b29scyBhdCBodHRwczovL2dpdGh1Yi5jb20vYml0Z28gdG8gcmVjb3ZlciB5b3VyICR7Y29pbk5hbWV9LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGA7XG4gIGNvbnN0IHNlY3Rpb25EQ29pblNwZWNpZmljID0gYHlvdXIgS2V5Q2FyZCB3aWxsIGJlIGFibGUgdG8gc3RlYWwgeW91ciAke2NvaW5OYW1lfS4gV2UgcmVjb21tZW5kIGtlZXBpbmcgeW91ciB3YWxsZXQgcGFzc3dvcmQgYDtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnV2hhdCBpcyB0aGUgS2V5Q2FyZD8nLFxuICAgICAgYW5zd2VyOiBbXG4gICAgICAgIHNlY3Rpb25BQ29pblNwZWNpZmljLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0IGhhcyBpdHMgb3duLCB1bmlxdWUgS2V5Q2FyZC4gJyxcbiAgICAgICAgJ0lmIHlvdSBoYXZlIGNyZWF0ZWQgbXVsdGlwbGUgd2FsbGV0cywgeW91IHNob3VsZCByZXRhaW4gdGhlIEtleUNhcmQgZm9yIGVhY2ggb2YgdGhlbS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnV2hhdCBzaG91bGQgSSBkbyB3aXRoIGl0PycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgJ1lvdSBzaG91bGQgcHJpbnQgdGhlIEtleUNhcmQgYW5kL29yIHNhdmUgdGhlIFBERiB0byBhbiBvZmZsaW5lIHN0b3JhZ2UgZGV2aWNlLiBUaGUgcHJpbnQtb3V0ICcsXG4gICAgICAgIFwib3IgVVNCIHN0aWNrIHNob3VsZCBiZSBrZXB0IGluIGEgc2FmZSBwbGFjZSwgc3VjaCBhcyBhIGJhbmsgdmF1bHQgb3IgaG9tZSBzYWZlLiBJdCdzIGEgZ29vZCBpZGVhIFwiLFxuICAgICAgICAndG8ga2VlcCBhIHNlY29uZCBjb3B5IGluIGEgZGlmZmVyZW50IGxvY2F0aW9uLicsXG4gICAgICAgICcnLFxuICAgICAgICBcIkltcG9ydGFudDogSWYgeW91IGhhdmVuJ3QgcHJvdmlkZWQgYW4gZXh0ZXJuYWwgYmFja3VwIGtleSwgdGhlbiB0aGUgb3JpZ2luYWwgUERGIHNob3VsZCBiZSBcIixcbiAgICAgICAgJ2RlbGV0ZWQgZnJvbSBhbnkgbWFjaGluZSB3aGVyZSB0aGUgd2FsbGV0IHdpbGwgYmUgcmVndWxhcmx5IGFjY2Vzc2VkIHRvIHByZXZlbnQgbWFsd2FyZSBmcm9tICcsXG4gICAgICAgICdjYXB0dXJpbmcgYm90aCB0aGUgS2V5Q2FyZCBhbmQgeW91ciB3YWxsZXQgcGFzc2NvZGUuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ1doYXQgc2hvdWxkIEkgZG8gaWYgSSBsb3NlIGl0PycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgc2VjdGlvbkJDb2luU3BlY2lmaWMsXG4gICAgICAgICdXYWxsZXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXQgcmlzayBmb3IgbG9zcy4gQXMgc29vbiBhcyBpcyBjb252ZW5pZW50LCB5b3Ugc2hvdWxkIHVzZSBCaXRHbyAnLFxuICAgICAgICAndG8gZW1wdHkgdGhlIHdhbGxldCBpbnRvIGEgbmV3IHdhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgXCJEb24ndCBwYW5pYyEgQWxsIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgS2V5Q2FyZCBpcyBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLCBvciB3aXRoIGFcIixcbiAgICAgICAgJ2tleSB3aGljaCBvbmx5IEJpdEdvIGhhcy4gQnV0LCBpbiBnZW5lcmFsLCB5b3Ugc2hvdWxkIG1ha2UgYmVzdCBlZmZvcnRzIHRvIGtlZXAgeW91ciAnLFxuICAgICAgICAnS2V5Q2FyZCBwcml2YXRlLiBJZiB5b3VyIEtleUNhcmQgZG9lcyBnZXQgZXhwb3NlZCBvciBjb3BpZWQgaW4gYSB3YXkgdGhhdCBtYWtlcyB5b3UgJyxcbiAgICAgICAgJ3VuY29tZm9ydGFibGUsIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24gaXMgdG8gZW1wdHkgdGhlIGNvcnJlc3BvbmRpbmcgd2FsbGV0IGludG8gYW5vdGhlciAnLFxuICAgICAgICAnd2FsbGV0IGFuZCBkaXNjb250aW51ZSB1c2Ugb2YgdGhlIG9sZCB3YWxsZXQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGFuc3dlcjogW1xuICAgICAgICAnQml0R28gY2FuIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gUVIgQ29kZSBEIHRvIGhlbHAgeW91IHJlY292ZXIgYWNjZXNzIHRvIHlvdXIgd2FsbGV0LiAnLFxuICAgICAgICAnV2l0aG91dCB0aGUgS2V5Q2FyZCwgQml0R28gaXMgbm90IGFibGUgdG8gcmVjb3ZlciBmdW5kcyBmcm9tIGEgd2FsbGV0IHdpdGggYSBsb3N0IHBhc3N3b3JkLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGFuc3dlcjogW1xuICAgICAgICBcIllvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R28ncyBwdWJsaXNoZWQgb3BlbiBcIixcbiAgICAgICAgc2VjdGlvbkNDb2luU3BlY2lmaWMsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnU2hvdWxkIEkgd3JpdGUgbXkgd2FsbGV0IHBhc3N3b3JkIG9uIG15IEtleUNhcmQ/JyxcbiAgICAgIGFuc3dlcjogW1xuICAgICAgICBcIk5vISBCaXRHbydzIHNpZ25hdHVyZSBzY2hlbWUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgXCIsXG4gICAgICAgICdvZiBhdHRhY2suIEJ1dCBpZiB5b3VyIHdhbGxldCBwYXNzd29yZCBpcyBvbiB5b3VyIEtleUNhcmQsIHRoZW4gYW55b25lIHdobyBnYWlucyBhY2Nlc3MgdG8gJyxcbiAgICAgICAgc2VjdGlvbkRDb2luU3BlY2lmaWMsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
76
+ function generateLightningFaq(coinName) {
77
+ return [
78
+ ...generateFaq(coinName),
79
+ {
80
+ question: 'What is the User Auth Key?',
81
+ answer: [
82
+ 'The User Auth Key is the private key used to authenticate you for signing lightning payment ',
83
+ 'requests and wallet configuration updates. It is encrypted with your wallet password. Without it, ',
84
+ `you will not be able to authorize transactions on your ${coinName} lightning wallet.`,
85
+ ],
86
+ },
87
+ ];
88
+ }
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFxLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ZhcS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLGtDQXVFQztBQUVELG9EQVlDO0FBckZELFNBQWdCLFdBQVcsQ0FBQyxRQUFnQjtJQUMxQyxNQUFNLG9CQUFvQixHQUFHLCtFQUErRSxRQUFRLEdBQUcsQ0FBQztJQUN4SCxNQUFNLG9CQUFvQixHQUFHLGdFQUFnRSxRQUFRLDJCQUEyQixDQUFDO0lBQ2pJLE1BQU0sb0JBQW9CLEdBQUcsNERBQTRELFFBQVEsaUNBQWlDLENBQUM7SUFDbkksTUFBTSxvQkFBb0IsR0FBRywyQ0FBMkMsUUFBUSw4Q0FBOEMsQ0FBQztJQUUvSCxPQUFPO1FBQ0w7WUFDRSxRQUFRLEVBQUUsc0JBQXNCO1lBQ2hDLE1BQU0sRUFBRTtnQkFDTixvQkFBb0I7Z0JBQ3BCLHlGQUF5RjtnQkFDekYsdUZBQXVGO2FBQ3hGO1NBQ0Y7UUFDRDtZQUNFLFFBQVEsRUFBRSwyQkFBMkI7WUFDckMsTUFBTSxFQUFFO2dCQUNOLCtGQUErRjtnQkFDL0YsbUdBQW1HO2dCQUNuRyxnREFBZ0Q7Z0JBQ2hELEVBQUU7Z0JBQ0YsNkZBQTZGO2dCQUM3RiwrRkFBK0Y7Z0JBQy9GLHNEQUFzRDthQUN2RDtTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsZ0NBQWdDO1lBQzFDLE1BQU0sRUFBRTtnQkFDTixvQkFBb0I7Z0JBQ3BCLCtGQUErRjtnQkFDL0YsOEVBQThFO2FBQy9FO1NBQ0Y7UUFDRDtZQUNFLFFBQVEsRUFBRSxrQ0FBa0M7WUFDNUMsTUFBTSxFQUFFO2dCQUNOLGtHQUFrRztnQkFDbEcsdUZBQXVGO2dCQUN2RixzRkFBc0Y7Z0JBQ3RGLDZGQUE2RjtnQkFDN0YsK0NBQStDO2FBQ2hEO1NBQ0Y7UUFDRDtZQUNFLFFBQVEsRUFBRSw4Q0FBOEM7WUFDeEQsTUFBTSxFQUFFO2dCQUNOLHdGQUF3RjtnQkFDeEYsNkZBQTZGO2FBQzlGO1NBQ0Y7UUFDRDtZQUNFLFFBQVEsRUFBRSw0REFBNEQ7WUFDdEUsTUFBTSxFQUFFO2dCQUNOLG9GQUFvRjtnQkFDcEYsb0JBQW9CO2dCQUNwQiw2RkFBNkY7Z0JBQzdGLGlDQUFpQzthQUNsQztTQUNGO1FBQ0Q7WUFDRSxRQUFRLEVBQUUsa0RBQWtEO1lBQzVELE1BQU0sRUFBRTtnQkFDTiw4RkFBOEY7Z0JBQzlGLDZGQUE2RjtnQkFDN0Ysb0JBQW9CO2dCQUNwQiwyRUFBMkU7YUFDNUU7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUMsUUFBZ0I7SUFDbkQsT0FBTztRQUNMLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUN4QjtZQUNFLFFBQVEsRUFBRSw0QkFBNEI7WUFDdEMsTUFBTSxFQUFFO2dCQUNOLDhGQUE4RjtnQkFDOUYsb0dBQW9HO2dCQUNwRywwREFBMEQsUUFBUSxvQkFBb0I7YUFDdkY7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRkFRIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZUZhcShjb2luTmFtZTogc3RyaW5nKTogRkFRW10ge1xuICBjb25zdCBzZWN0aW9uQUNvaW5TcGVjaWZpYyA9IGBUaGUgS2V5Q2FyZCBjb250YWlucyBpbXBvcnRhbnQgaW5mb3JtYXRpb24gd2hpY2ggY2FuIGJlIHVzZWQgdG8gcmVjb3ZlciB0aGUgJHtjb2luTmFtZX0gYDtcbiAgY29uc3Qgc2VjdGlvbkJDb2luU3BlY2lmaWMgPSBgSWYgeW91IGhhdmUgbG9zdCBvciBkYW1hZ2VkIGFsbCBjb3BpZXMgb2YgeW91ciBLZXlDYXJkLCB5b3VyICR7Y29pbk5hbWV9IGlzIHN0aWxsIHNhZmUsIGJ1dCB0aGlzIGA7XG4gIGNvbnN0IHNlY3Rpb25DQ29pblNwZWNpZmljID0gYHNvdXJjZSB0b29scyBhdCBodHRwczovL2dpdGh1Yi5jb20vYml0Z28gdG8gcmVjb3ZlciB5b3VyICR7Y29pbk5hbWV9LiBOb3RlOiBZb3Ugc2hvdWxkIG5ldmVyIGVudGVyIGA7XG4gIGNvbnN0IHNlY3Rpb25EQ29pblNwZWNpZmljID0gYHlvdXIgS2V5Q2FyZCB3aWxsIGJlIGFibGUgdG8gc3RlYWwgeW91ciAke2NvaW5OYW1lfS4gV2UgcmVjb21tZW5kIGtlZXBpbmcgeW91ciB3YWxsZXQgcGFzc3dvcmQgYDtcblxuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnV2hhdCBpcyB0aGUgS2V5Q2FyZD8nLFxuICAgICAgYW5zd2VyOiBbXG4gICAgICAgIHNlY3Rpb25BQ29pblNwZWNpZmljLFxuICAgICAgICAnZnJvbSB5b3VyIHdhbGxldCBpbiBzZXZlcmFsIHNpdHVhdGlvbnMuIEVhY2ggQml0R28gd2FsbGV0IGhhcyBpdHMgb3duLCB1bmlxdWUgS2V5Q2FyZC4gJyxcbiAgICAgICAgJ0lmIHlvdSBoYXZlIGNyZWF0ZWQgbXVsdGlwbGUgd2FsbGV0cywgeW91IHNob3VsZCByZXRhaW4gdGhlIEtleUNhcmQgZm9yIGVhY2ggb2YgdGhlbS4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnV2hhdCBzaG91bGQgSSBkbyB3aXRoIGl0PycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgJ1lvdSBzaG91bGQgcHJpbnQgdGhlIEtleUNhcmQgYW5kL29yIHNhdmUgdGhlIFBERiB0byBhbiBvZmZsaW5lIHN0b3JhZ2UgZGV2aWNlLiBUaGUgcHJpbnQtb3V0ICcsXG4gICAgICAgIFwib3IgVVNCIHN0aWNrIHNob3VsZCBiZSBrZXB0IGluIGEgc2FmZSBwbGFjZSwgc3VjaCBhcyBhIGJhbmsgdmF1bHQgb3IgaG9tZSBzYWZlLiBJdCdzIGEgZ29vZCBpZGVhIFwiLFxuICAgICAgICAndG8ga2VlcCBhIHNlY29uZCBjb3B5IGluIGEgZGlmZmVyZW50IGxvY2F0aW9uLicsXG4gICAgICAgICcnLFxuICAgICAgICBcIkltcG9ydGFudDogSWYgeW91IGhhdmVuJ3QgcHJvdmlkZWQgYW4gZXh0ZXJuYWwgYmFja3VwIGtleSwgdGhlbiB0aGUgb3JpZ2luYWwgUERGIHNob3VsZCBiZSBcIixcbiAgICAgICAgJ2RlbGV0ZWQgZnJvbSBhbnkgbWFjaGluZSB3aGVyZSB0aGUgd2FsbGV0IHdpbGwgYmUgcmVndWxhcmx5IGFjY2Vzc2VkIHRvIHByZXZlbnQgbWFsd2FyZSBmcm9tICcsXG4gICAgICAgICdjYXB0dXJpbmcgYm90aCB0aGUgS2V5Q2FyZCBhbmQgeW91ciB3YWxsZXQgcGFzc2NvZGUuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ1doYXQgc2hvdWxkIEkgZG8gaWYgSSBsb3NlIGl0PycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgc2VjdGlvbkJDb2luU3BlY2lmaWMsXG4gICAgICAgICdXYWxsZXQgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXQgcmlzayBmb3IgbG9zcy4gQXMgc29vbiBhcyBpcyBjb252ZW5pZW50LCB5b3Ugc2hvdWxkIHVzZSBCaXRHbyAnLFxuICAgICAgICAndG8gZW1wdHkgdGhlIHdhbGxldCBpbnRvIGEgbmV3IHdhbGxldCBhbmQgZGlzY29udGludWUgdXNlIG9mIHRoZSBvbGQgd2FsbGV0LicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICdXaGF0IGlmIHNvbWVvbmUgc2VlcyBteSBLZXlDYXJkPycsXG4gICAgICBhbnN3ZXI6IFtcbiAgICAgICAgXCJEb24ndCBwYW5pYyEgQWxsIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBvbiB0aGUgS2V5Q2FyZCBpcyBlbmNyeXB0ZWQgd2l0aCB5b3VyIHBhc3Njb2RlLCBvciB3aXRoIGFcIixcbiAgICAgICAgJ2tleSB3aGljaCBvbmx5IEJpdEdvIGhhcy4gQnV0LCBpbiBnZW5lcmFsLCB5b3Ugc2hvdWxkIG1ha2UgYmVzdCBlZmZvcnRzIHRvIGtlZXAgeW91ciAnLFxuICAgICAgICAnS2V5Q2FyZCBwcml2YXRlLiBJZiB5b3VyIEtleUNhcmQgZG9lcyBnZXQgZXhwb3NlZCBvciBjb3BpZWQgaW4gYSB3YXkgdGhhdCBtYWtlcyB5b3UgJyxcbiAgICAgICAgJ3VuY29tZm9ydGFibGUsIHRoZSBiZXN0IGNvdXJzZSBvZiBhY3Rpb24gaXMgdG8gZW1wdHkgdGhlIGNvcnJlc3BvbmRpbmcgd2FsbGV0IGludG8gYW5vdGhlciAnLFxuICAgICAgICAnd2FsbGV0IGFuZCBkaXNjb250aW51ZSB1c2Ugb2YgdGhlIG9sZCB3YWxsZXQuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBxdWVzdGlvbjogJ1doYXQgaWYgSSBmb3JnZXQgb3IgbG9zZSBteSB3YWxsZXQgcGFzc3dvcmQ/JyxcbiAgICAgIGFuc3dlcjogW1xuICAgICAgICAnQml0R28gY2FuIHVzZSB0aGUgaW5mb3JtYXRpb24gaW4gUVIgQ29kZSBEIHRvIGhlbHAgeW91IHJlY292ZXIgYWNjZXNzIHRvIHlvdXIgd2FsbGV0LiAnLFxuICAgICAgICAnV2l0aG91dCB0aGUgS2V5Q2FyZCwgQml0R28gaXMgbm90IGFibGUgdG8gcmVjb3ZlciBmdW5kcyBmcm9tIGEgd2FsbGV0IHdpdGggYSBsb3N0IHBhc3N3b3JkLicsXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgcXVlc3Rpb246ICdXaGF0IGlmIEJpdEdvIGJlY29tZXMgaW5hY2Nlc3NpYmxlIGZvciBhbiBleHRlbmRlZCBwZXJpb2Q/JyxcbiAgICAgIGFuc3dlcjogW1xuICAgICAgICBcIllvdXIgS2V5Q2FyZCBhbmQgd2FsbGV0IHBhc3Njb2RlIGNhbiBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQml0R28ncyBwdWJsaXNoZWQgb3BlbiBcIixcbiAgICAgICAgc2VjdGlvbkNDb2luU3BlY2lmaWMsXG4gICAgICAgICdpbmZvcm1hdGlvbiBmcm9tIHlvdXIgS2V5Q2FyZCBpbnRvIHRvb2xzIG90aGVyIHRoYW4gdGhlIHRvb2xzIEJpdEdvIGhhcyBwdWJsaXNoZWQsIG9yIHlvdXIgJyxcbiAgICAgICAgJ2Z1bmRzIG1heSBiZSBhdCByaXNrIGZvciB0aGVmdC4nLFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnU2hvdWxkIEkgd3JpdGUgbXkgd2FsbGV0IHBhc3N3b3JkIG9uIG15IEtleUNhcmQ/JyxcbiAgICAgIGFuc3dlcjogW1xuICAgICAgICBcIk5vISBCaXRHbydzIHNpZ25hdHVyZSBzY2hlbWUgYXBwcm9hY2ggdG8gc2VjdXJpdHkgZGVwZW5kcyBvbiB0aGVyZSBub3QgYmVpbmcgYSBzaW5nbGUgcG9pbnQgXCIsXG4gICAgICAgICdvZiBhdHRhY2suIEJ1dCBpZiB5b3VyIHdhbGxldCBwYXNzd29yZCBpcyBvbiB5b3VyIEtleUNhcmQsIHRoZW4gYW55b25lIHdobyBnYWlucyBhY2Nlc3MgdG8gJyxcbiAgICAgICAgc2VjdGlvbkRDb2luU3BlY2lmaWMsXG4gICAgICAgICdzYWZlIGluIGEgc2VjdXJlIHBhc3N3b3JkIG1hbmFnZXIgc3VjaCBhcyBMYXN0UGFzcywgMVBhc3N3b3JkIG9yIEtlZVBhc3MuJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlTGlnaHRuaW5nRmFxKGNvaW5OYW1lOiBzdHJpbmcpOiBGQVFbXSB7XG4gIHJldHVybiBbXG4gICAgLi4uZ2VuZXJhdGVGYXEoY29pbk5hbWUpLFxuICAgIHtcbiAgICAgIHF1ZXN0aW9uOiAnV2hhdCBpcyB0aGUgVXNlciBBdXRoIEtleT8nLFxuICAgICAgYW5zd2VyOiBbXG4gICAgICAgICdUaGUgVXNlciBBdXRoIEtleSBpcyB0aGUgcHJpdmF0ZSBrZXkgdXNlZCB0byBhdXRoZW50aWNhdGUgeW91IGZvciBzaWduaW5nIGxpZ2h0bmluZyBwYXltZW50ICcsXG4gICAgICAgICdyZXF1ZXN0cyBhbmQgd2FsbGV0IGNvbmZpZ3VyYXRpb24gdXBkYXRlcy4gSXQgaXMgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuIFdpdGhvdXQgaXQsICcsXG4gICAgICAgIGB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBhdXRob3JpemUgdHJhbnNhY3Rpb25zIG9uIHlvdXIgJHtjb2luTmFtZX0gbGlnaHRuaW5nIHdhbGxldC5gLFxuICAgICAgXSxcbiAgICB9LFxuICBdO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ import { GenerateQrDataBaseParams, GenerateQrDataForKeychainParams, IDrawKeyCard } from './types';
2
+ export declare function generateParamsForKeyCreation({ curve, bitgoKeychain, walletLabel, keyCardImage, }: GenerateQrDataForKeychainParams & GenerateQrDataBaseParams): IDrawKeyCard;
3
+ //# sourceMappingURL=generateParamsForKeyCreation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateParamsForKeyCreation.d.ts","sourceRoot":"","sources":["../../src/generateParamsForKeyCreation.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAElG,wBAAgB,4BAA4B,CAAC,EAC3C,KAAK,EACL,aAAa,EACb,WAAW,EACX,YAAY,GACb,EAAE,+BAA+B,GAAG,wBAAwB,GAAG,YAAY,CAkC3E"}
@@ -0,0 +1,72 @@
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.generateParamsForKeyCreation = generateParamsForKeyCreation;
37
+ const assert = __importStar(require("assert"));
38
+ function generateParamsForKeyCreation({ curve, bitgoKeychain, walletLabel, keyCardImage, }) {
39
+ assert.ok(bitgoKeychain.commonKeychain, 'bitgoKeychain.commonKeychain is required');
40
+ return {
41
+ walletLabel,
42
+ keyCardImage,
43
+ curve,
44
+ qrData: {
45
+ user: {
46
+ title: 'A: Common Keychain',
47
+ data: bitgoKeychain.commonKeychain,
48
+ description: 'This is the common pub which is the equivalent of xpub (public key)\r\nof the key generated',
49
+ },
50
+ bitgo: {
51
+ title: 'B: BitGo Key ID',
52
+ data: bitgoKeychain.id,
53
+ description: 'This is the identifier assigned to the key generated using which BitGo\r\ncan lookup BitGo key share.',
54
+ },
55
+ },
56
+ questions: [
57
+ {
58
+ question: 'What is the KeyCard?',
59
+ answer: [
60
+ 'This key card contains information about the key id for the generated key.\r\nThis id can later be used to derive wallets.',
61
+ ],
62
+ },
63
+ {
64
+ question: 'What should I do with it?',
65
+ answer: [
66
+ 'Store this keycard for later use. The key ID is important to communicate with BitGo\r\nto derive wallets from the key.',
67
+ ],
68
+ },
69
+ ],
70
+ };
71
+ }
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVQYXJhbXNGb3JLZXlDcmVhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9nZW5lcmF0ZVBhcmFtc0ZvcktleUNyZWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0Esb0VBdUNDO0FBMUNELCtDQUFpQztBQUdqQyxTQUFnQiw0QkFBNEIsQ0FBQyxFQUMzQyxLQUFLLEVBQ0wsYUFBYSxFQUNiLFdBQVcsRUFDWCxZQUFZLEdBQytDO0lBQzNELE1BQU0sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSwwQ0FBMEMsQ0FBQyxDQUFDO0lBQ3BGLE9BQU87UUFDTCxXQUFXO1FBQ1gsWUFBWTtRQUNaLEtBQUs7UUFDTCxNQUFNLEVBQUU7WUFDTixJQUFJLEVBQUU7Z0JBQ0osS0FBSyxFQUFFLG9CQUFvQjtnQkFDM0IsSUFBSSxFQUFFLGFBQWEsQ0FBQyxjQUFjO2dCQUNsQyxXQUFXLEVBQUUsNkZBQTZGO2FBQzNHO1lBQ0QsS0FBSyxFQUFFO2dCQUNMLEtBQUssRUFBRSxpQkFBaUI7Z0JBQ3hCLElBQUksRUFBRSxhQUFhLENBQUMsRUFBRTtnQkFDdEIsV0FBVyxFQUNULHVHQUF1RzthQUMxRztTQUNGO1FBQ0QsU0FBUyxFQUFFO1lBQ1Q7Z0JBQ0UsUUFBUSxFQUFFLHNCQUFzQjtnQkFDaEMsTUFBTSxFQUFFO29CQUNOLDRIQUE0SDtpQkFDN0g7YUFDRjtZQUNEO2dCQUNFLFFBQVEsRUFBRSwyQkFBMkI7Z0JBQ3JDLE1BQU0sRUFBRTtvQkFDTix3SEFBd0g7aUJBQ3pIO2FBQ0Y7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgeyBHZW5lcmF0ZVFyRGF0YUJhc2VQYXJhbXMsIEdlbmVyYXRlUXJEYXRhRm9yS2V5Y2hhaW5QYXJhbXMsIElEcmF3S2V5Q2FyZCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQYXJhbXNGb3JLZXlDcmVhdGlvbih7XG4gIGN1cnZlLFxuICBiaXRnb0tleWNoYWluLFxuICB3YWxsZXRMYWJlbCxcbiAga2V5Q2FyZEltYWdlLFxufTogR2VuZXJhdGVRckRhdGFGb3JLZXljaGFpblBhcmFtcyAmIEdlbmVyYXRlUXJEYXRhQmFzZVBhcmFtcyk6IElEcmF3S2V5Q2FyZCB7XG4gIGFzc2VydC5vayhiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluLCAnYml0Z29LZXljaGFpbi5jb21tb25LZXljaGFpbiBpcyByZXF1aXJlZCcpO1xuICByZXR1cm4ge1xuICAgIHdhbGxldExhYmVsLFxuICAgIGtleUNhcmRJbWFnZSxcbiAgICBjdXJ2ZSxcbiAgICBxckRhdGE6IHtcbiAgICAgIHVzZXI6IHtcbiAgICAgICAgdGl0bGU6ICdBOiBDb21tb24gS2V5Y2hhaW4nLFxuICAgICAgICBkYXRhOiBiaXRnb0tleWNoYWluLmNvbW1vbktleWNoYWluLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIGNvbW1vbiBwdWIgd2hpY2ggaXMgdGhlIGVxdWl2YWxlbnQgb2YgeHB1YiAocHVibGljIGtleSlcXHJcXG5vZiB0aGUga2V5IGdlbmVyYXRlZCcsXG4gICAgICB9LFxuICAgICAgYml0Z286IHtcbiAgICAgICAgdGl0bGU6ICdCOiBCaXRHbyBLZXkgSUQnLFxuICAgICAgICBkYXRhOiBiaXRnb0tleWNoYWluLmlkLFxuICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAnVGhpcyBpcyB0aGUgaWRlbnRpZmllciBhc3NpZ25lZCB0byB0aGUga2V5IGdlbmVyYXRlZCB1c2luZyB3aGljaCBCaXRHb1xcclxcbmNhbiBsb29rdXAgQml0R28ga2V5IHNoYXJlLicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgcXVlc3Rpb25zOiBbXG4gICAgICB7XG4gICAgICAgIHF1ZXN0aW9uOiAnV2hhdCBpcyB0aGUgS2V5Q2FyZD8nLFxuICAgICAgICBhbnN3ZXI6IFtcbiAgICAgICAgICAnVGhpcyBrZXkgY2FyZCBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCB0aGUga2V5IGlkIGZvciB0aGUgZ2VuZXJhdGVkIGtleS5cXHJcXG5UaGlzIGlkIGNhbiBsYXRlciBiZSB1c2VkIHRvIGRlcml2ZSB3YWxsZXRzLicsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBxdWVzdGlvbjogJ1doYXQgc2hvdWxkIEkgZG8gd2l0aCBpdD8nLFxuICAgICAgICBhbnN3ZXI6IFtcbiAgICAgICAgICAnU3RvcmUgdGhpcyBrZXljYXJkIGZvciBsYXRlciB1c2UuIFRoZSBrZXkgSUQgaXMgaW1wb3J0YW50IHRvIGNvbW11bmljYXRlIHdpdGggQml0R29cXHJcXG50byBkZXJpdmUgd2FsbGV0cyBmcm9tIHRoZSBrZXkuJyxcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbn1cbiJdfQ==
@@ -1,28 +1,10 @@
1
- import { BaseCoin } from '@bitgo-beta/statics';
2
- import { Keychain } from '@bitgo-beta/sdk-core';
3
- export interface GenerateQrDataParams {
4
- backupKeychain: Keychain;
5
- backupKeyProvider?: string;
6
- backupMasterKey?: string;
7
- bitgoKeychain: Keychain;
8
- coin: Readonly<BaseCoin>;
9
- passcodeEncryptionCode?: string;
10
- passphrase?: string;
11
- userKeychain: Keychain;
12
- userMasterKey?: string;
13
- }
14
- interface QrDataEntry {
15
- data: string;
16
- description: string;
17
- title: string;
18
- publicMasterKey?: string;
19
- }
20
- export interface QrData {
21
- backup?: QrDataEntry;
22
- bitgo?: QrDataEntry;
23
- passcode?: QrDataEntry;
24
- user: QrDataEntry;
25
- }
26
- export declare function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, passcodeEncryptionCode, passphrase, userKeychain, userMasterKey, }: GenerateQrDataParams): QrData;
27
- export {};
1
+ import { GenerateLightningQrDataParams, GenerateQrDataParams, GenerateSafeQrDataParams, QrData } from './types';
2
+ export declare function generateQrData(params: GenerateQrDataParams): Promise<QrData>;
3
+ export declare function generateLightningQrData(params: GenerateLightningQrDataParams): Promise<QrData>;
4
+ /**
5
+ * Builds safe keycard QR data in the existing wallet {@link QrData} shape: boxes A (user),
6
+ * B (backup), C (BitGo), D (passcode). Each of A/B/C carries a JSON object of the four roots,
7
+ * so the safe renders and parses through the same {@link drawKeycard} path as a wallet.
8
+ */
9
+ export declare function generateSafeQrData(params: GenerateSafeQrDataParams): Promise<QrData>;
28
10
  //# sourceMappingURL=generateQrData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateQrData.d.ts","sourceRoot":"","sources":["../../src/generateQrData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAIhD,MAAM,WAAW,oBAAoB;IAEnC,cAAc,EAAE,QAAQ,CAAC;IAEzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,aAAa,EAAE,QAAQ,CAAC;IAExB,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAIzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAIhC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,YAAY,EAAE,QAAQ,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;CACnB;AAkGD,wBAAgB,cAAc,CAAC,EAC7B,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,IAAI,EACJ,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,aAAa,GACd,EAAE,oBAAoB,GAAG,MAAM,CAqB/B"}
1
+ {"version":3,"file":"generateQrData.d.ts","sourceRoot":"","sources":["../../src/generateQrData.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EAGxB,MAAM,EAKP,MAAM,SAAS,CAAC;AAsLjB,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYlF;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpG;AAmCD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CA8B1F"}
@@ -1,8 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateQrData = void 0;
36
+ exports.generateQrData = generateQrData;
37
+ exports.generateLightningQrData = generateLightningQrData;
38
+ exports.generateSafeQrData = generateSafeQrData;
4
39
  const sdk_api_1 = require("@bitgo-beta/sdk-api");
5
- const assert = require("assert");
40
+ const assert = __importStar(require("assert"));
41
+ const types_1 = require("./types");
6
42
  function getPubFromKey(key) {
7
43
  switch (key.type) {
8
44
  case 'blsdkg':
@@ -14,6 +50,13 @@ function getPubFromKey(key) {
14
50
  }
15
51
  }
16
52
  function generateUserQrData(userKeychain, userMasterKey) {
53
+ if (userKeychain.reducedEncryptedPrv) {
54
+ return {
55
+ title: 'A: User Key',
56
+ description: 'This is your private key, encrypted with your wallet password.',
57
+ data: userKeychain.reducedEncryptedPrv,
58
+ };
59
+ }
17
60
  if (userKeychain.encryptedPrv) {
18
61
  return {
19
62
  title: 'A: User Key',
@@ -22,7 +65,7 @@ function generateUserQrData(userKeychain, userMasterKey) {
22
65
  };
23
66
  }
24
67
  const pub = getPubFromKey(userKeychain);
25
- assert(pub);
68
+ assert.ok(pub);
26
69
  return {
27
70
  title: 'A: Provided User Key',
28
71
  description: 'This is the public key you provided for your wallet.',
@@ -31,8 +74,14 @@ function generateUserQrData(userKeychain, userMasterKey) {
31
74
  };
32
75
  }
33
76
  function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupMasterKey, } = {}) {
34
- var _a;
35
77
  const title = 'B: Backup Key';
78
+ if (backupKeychain.reducedEncryptedPrv) {
79
+ return {
80
+ title,
81
+ description: 'This is your backup private key, encrypted with your wallet password.',
82
+ data: backupKeychain.reducedEncryptedPrv,
83
+ };
84
+ }
36
85
  if (backupKeychain.encryptedPrv) {
37
86
  return {
38
87
  title,
@@ -41,8 +90,8 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
41
90
  };
42
91
  }
43
92
  if (backupKeyProvider === 'BitGo Trust' && backupKeychain.type === 'tss') {
44
- const keyShares = (_a = backupKeychain.keyShares) === null || _a === void 0 ? void 0 : _a.filter((keyShare) => keyShare.to === 'backup');
45
- assert((keyShares === null || keyShares === void 0 ? void 0 : keyShares.length) === 2);
93
+ const keyShares = backupKeychain.keyShares?.filter((keyShare) => keyShare.to === 'backup');
94
+ assert.ok(keyShares?.length === 2);
46
95
  return {
47
96
  title: 'B: Backup Key Shares',
48
97
  description: `These are the key shares for ${backupKeyProvider}. If BitGo Inc. goes out of business,\r\n` +
@@ -51,7 +100,7 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
51
100
  };
52
101
  }
53
102
  const pub = getPubFromKey(backupKeychain);
54
- assert(pub);
103
+ assert.ok(pub);
55
104
  if (backupKeyProvider) {
56
105
  return {
57
106
  title: 'B: Backup Key',
@@ -69,31 +118,128 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
69
118
  }
70
119
  function generateBitGoQrData(bitgoKeychain) {
71
120
  const bitgoData = getPubFromKey(bitgoKeychain);
72
- assert(bitgoData);
121
+ assert.ok(bitgoData);
73
122
  return {
74
- title: 'C: BitGo Public Key',
75
- description: 'This is the public part of the key that BitGo will use to ' + 'co-sign transactions\r\nwith you on your wallet.',
123
+ title: 'C: BitGo Key',
124
+ description: 'This is the public part of the key held by BitGo.',
76
125
  data: bitgoData,
77
126
  };
78
127
  }
79
- function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, passcodeEncryptionCode, passphrase, userKeychain, userMasterKey, }) {
80
- const qrData = {
128
+ function generateUserMasterPublicKeyQRData(publicKey) {
129
+ return {
130
+ title: 'E: Master User Public Key',
131
+ description: 'This is the public key used to derive the user key for the wallet. This is not stored by BitGo, and may be required for use in recovery scenarios.',
132
+ data: publicKey,
133
+ };
134
+ }
135
+ async function generatePasscodeQrData(passphrase, passcodeEncryptionCode, encryptionVersion, entityNoun = 'wallet') {
136
+ const encryptedPasscode = await (0, sdk_api_1.encrypt)(passcodeEncryptionCode, passphrase, { encryptionVersion });
137
+ const titleNoun = entityNoun === 'safe' ? 'Safe' : 'Wallet';
138
+ return {
139
+ title: `D: Encrypted ${titleNoun} Password`,
140
+ description: `This is the ${entityNoun} password, encrypted client-side with a key held by BitGo.`,
141
+ data: encryptedPasscode,
142
+ };
143
+ }
144
+ function generateBackupMasterPublicKeyQRData(publicKey) {
145
+ return {
146
+ title: 'F: Master Backup Public Key',
147
+ description: 'This is the public key used to derive the backup key for the wallet. This is not stored by BitGo, and may be required for use in recovery scenarios.',
148
+ data: publicKey,
149
+ };
150
+ }
151
+ function buildWalletQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }) {
152
+ return {
81
153
  user: generateUserQrData(userKeychain, userMasterKey),
154
+ userMasterPublicKey: userMasterPublicKey ? generateUserMasterPublicKeyQRData(userMasterPublicKey) : undefined,
82
155
  backup: generateBackupQrData(coin, backupKeychain, {
83
156
  backupKeyProvider,
84
157
  backupMasterKey,
85
158
  }),
159
+ backupMasterPublicKey: backupMasterPublicKey
160
+ ? generateBackupMasterPublicKeyQRData(backupMasterPublicKey)
161
+ : undefined,
86
162
  bitgo: generateBitGoQrData(bitgoKeychain),
87
163
  };
88
- if (passphrase && passcodeEncryptionCode) {
89
- const encryptedWalletPasscode = sdk_api_1.encrypt(passcodeEncryptionCode, passphrase);
90
- qrData.passcode = {
91
- title: 'D: Encrypted wallet Password',
92
- description: 'This is the wallet password, encrypted client-side with a key held by BitGo.',
93
- data: encryptedWalletPasscode,
94
- };
164
+ }
165
+ function buildLightningQrData({ userAuthKeychain }) {
166
+ assert.ok(userAuthKeychain.encryptedPrv, 'userAuthKeychain must have an encryptedPrv');
167
+ return {
168
+ user: {
169
+ title: 'A: User Auth Key',
170
+ description: 'This is your user authentication private key, encrypted with your wallet password.\r\nIt is used to authenticate payment and wallet operations.',
171
+ data: userAuthKeychain.encryptedPrv,
172
+ },
173
+ };
174
+ }
175
+ async function generateQrData(params) {
176
+ const qrData = buildWalletQrData(params);
177
+ if (params.passphrase && params.passcodeEncryptionCode) {
178
+ qrData.passcode = await generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode, params.encryptionVersion);
95
179
  }
96
180
  return qrData;
97
181
  }
98
- exports.generateQrData = generateQrData;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsaURBQThDO0FBQzlDLGlDQUFpQztBQXlDakMsU0FBUyxhQUFhLENBQUMsR0FBYTtJQUNsQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDaEIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLEtBQUssS0FBSztZQUNSLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUM1QixLQUFLLGFBQWE7WUFDaEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsWUFBc0IsRUFBRSxhQUFzQjtJQUN4RSxJQUFJLFlBQVksQ0FBQyxZQUFZLEVBQUU7UUFDN0IsT0FBTztZQUNMLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFBRSxnRUFBZ0U7WUFDN0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7S0FDSDtJQUVELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFWixPQUFPO1FBQ0wsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLElBQUksRUFBRSxHQUFHO1FBQ1QsZUFBZSxFQUFFLGFBQWE7S0FDL0IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUMzQixJQUF3QixFQUN4QixjQUF3QixFQUN4QixFQUNFLGlCQUFpQixFQUNqQixlQUFlLE1BSWIsRUFBRTs7SUFFTixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDOUIsSUFBSSxjQUFjLENBQUMsWUFBWSxFQUFFO1FBQy9CLE9BQU87WUFDTCxLQUFLO1lBQ0wsV0FBVyxFQUFFLHVFQUF1RTtZQUNwRixJQUFJLEVBQUUsY0FBYyxDQUFDLFlBQVk7U0FDbEMsQ0FBQztLQUNIO0lBRUQsSUFBSSxpQkFBaUIsS0FBSyxhQUFhLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7UUFDeEUsTUFBTSxTQUFTLEdBQUcsTUFBQSxjQUFjLENBQUMsU0FBUywwQ0FBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDM0YsTUFBTSxDQUFDLENBQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLE1BQU0sTUFBSyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsS0FBSyxFQUFFLHNCQUFzQjtZQUM3QixXQUFXLEVBQ1QsZ0NBQWdDLGlCQUFpQiwyQ0FBMkM7Z0JBQzVGLFdBQVcsaUJBQWlCLDZDQUE2QztZQUMzRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7U0FDaEMsQ0FBQztLQUNIO0lBRUQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVaLElBQUksaUJBQWlCLEVBQUU7UUFDckIsT0FBTztZQUNMLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxrQ0FBa0MsaUJBQWlCLFFBQVEsSUFBSSxDQUFDLElBQUkscUJBQXFCO2dCQUN6Riw0QkFBNEIsaUJBQWlCLHNEQUFzRDtZQUNyRyxJQUFJLEVBQUUsR0FBRztTQUNWLENBQUM7S0FDSDtJQUVELE9BQU87UUFDTCxLQUFLLEVBQUUsd0JBQXdCO1FBQy9CLFdBQVcsRUFBRSxzREFBc0Q7UUFDbkUsSUFBSSxFQUFFLEdBQUc7UUFDVCxlQUFlLEVBQUUsZUFBZTtLQUNqQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsYUFBdUI7SUFDbEQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVsQixPQUFPO1FBQ0wsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQ1QsNERBQTRELEdBQUcsa0RBQWtEO1FBQ25ILElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEVBQzdCLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGFBQWEsRUFDYixJQUFJLEVBQ0osc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxHQUNRO0lBQ3JCLE1BQU0sTUFBTSxHQUFXO1FBQ3JCLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBQ3JELE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ2pELGlCQUFpQjtZQUNqQixlQUFlO1NBQ2hCLENBQUM7UUFDRixLQUFLLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDO0tBQzFDLENBQUM7SUFFRixJQUFJLFVBQVUsSUFBSSxzQkFBc0IsRUFBRTtRQUN4QyxNQUFNLHVCQUF1QixHQUFHLGlCQUFPLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUUsTUFBTSxDQUFDLFFBQVEsR0FBRztZQUNoQixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLFdBQVcsRUFBRSw4RUFBOEU7WUFDM0YsSUFBSSxFQUFFLHVCQUF1QjtTQUM5QixDQUFDO0tBQ0g7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBL0JELHdDQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGVuY3J5cHQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUXJEYXRhUGFyYW1zIHtcbiAgLy8gVGhlIGJhY2t1cCBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIC8vIFRoZSBuYW1lIG9mIHRoZSAzcmQgcGFydHkgcHJvdmlkZXIgb2YgdGhlIGJhY2t1cCBrZXkgaWYgbmVpdGhlciB0aGUgdXNlciBub3IgQml0R28gc3RvcmVzIGl0XG4gIGJhY2t1cEtleVByb3ZpZGVyPzogc3RyaW5nO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSBiYWNrdXAga2V5LCBvbmx5IHVzZWQgZm9yIGNvbGQga2V5c1xuICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIC8vIFRoZSBCaXRHbyBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgLy8gVGhlIGNvaW4gb2YgdGhlIHdhbGxldCB0aGF0IHdhcy8gaXMgYWJvdXQgdG8gYmUgY3JlYXRlZFxuICBjb2luOiBSZWFkb25seTxCYXNlQ29pbj47XG4gIC8vIEEgY29kZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHdhbGxldCBwYXNzd29yZCB0by5cbiAgLy8gSWYgYm90aCB0aGUgcGFzc3BocmFzZSBhbmQgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSBhcmUgcGFzc2VkLCB0aGVuIHRoaXMgY29kZSBlbmNyeXB0cyB0aGUgcGFzc3BocmFzZSB3aXRoIHRoZVxuICAvLyBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFuZCBwdXRzIHRoZSByZXN1bHQgaW50byBCb3ggRC4gQWxsb3dzIHJlY292ZXJpZXMgb2YgdGhlIHdhbGxldCBwYXNzd29yZC5cbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgLy8gVGhlIHdhbGxldCBwYXNzd29yZFxuICAvLyBJZiBib3RoIHRoZSBwYXNzcGhyYXNlIGFuZCBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFyZSBwYXNzZWQsIHRoZW4gdGhpcyBjb2RlIGVuY3J5cHRzIHRoZSBwYXNzcGhyYXNlIHdpdGggdGhlXG4gIC8vIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbnRvIEJveCBELiBBbGxvd3MgcmVjb3ZlcmllcyBvZiB0aGUgd2FsbGV0IHBhc3N3b3JkLlxuICBwYXNzcGhyYXNlPzogc3RyaW5nO1xuICAvLyBUaGUgdXNlciBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICB1c2VyS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSB1c2VyIGtleSwgb25seSB1c2VkIGZvciBjb2xkIGtleXNcbiAgdXNlck1hc3RlcktleT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFFyRGF0YUVudHJ5IHtcbiAgZGF0YTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWNNYXN0ZXJLZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXJEYXRhIHtcbiAgYmFja3VwPzogUXJEYXRhRW50cnk7XG4gIGJpdGdvPzogUXJEYXRhRW50cnk7XG4gIHBhc3Njb2RlPzogUXJEYXRhRW50cnk7XG4gIHVzZXI6IFFyRGF0YUVudHJ5O1xufVxuXG5mdW5jdGlvbiBnZXRQdWJGcm9tS2V5KGtleTogS2V5Y2hhaW4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKGtleS50eXBlKSB7XG4gICAgY2FzZSAnYmxzZGtnJzpcbiAgICAgIHJldHVybiBrZXkuY29tbW9uUHViO1xuICAgIGNhc2UgJ3Rzcyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vbktleWNoYWluO1xuICAgIGNhc2UgJ2luZGVwZW5kZW50JzpcbiAgICAgIHJldHVybiBrZXkucHViO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlclFyRGF0YSh1c2VyS2V5Y2hhaW46IEtleWNoYWluLCB1c2VyTWFzdGVyS2V5Pzogc3RyaW5nKTogUXJEYXRhRW50cnkge1xuICBpZiAodXNlcktleWNoYWluLmVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogdXNlcktleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHViID0gZ2V0UHViRnJvbUtleSh1c2VyS2V5Y2hhaW4pO1xuICBhc3NlcnQocHViKTtcblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQTogUHJvdmlkZWQgVXNlciBLZXknLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogcHViLFxuICAgIHB1YmxpY01hc3RlcktleTogdXNlck1hc3RlcktleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCYWNrdXBRckRhdGEoXG4gIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluLFxuICB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXIsXG4gICAgYmFja3VwTWFzdGVyS2V5LFxuICB9OiB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgYmFja3VwTWFzdGVyS2V5Pzogc3RyaW5nO1xuICB9ID0ge31cbik6IFFyRGF0YUVudHJ5IHtcbiAgY29uc3QgdGl0bGUgPSAnQjogQmFja3VwIEtleSc7XG4gIGlmIChiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlQcm92aWRlciA9PT0gJ0JpdEdvIFRydXN0JyAmJiBiYWNrdXBLZXljaGFpbi50eXBlID09PSAndHNzJykge1xuICAgIGNvbnN0IGtleVNoYXJlcyA9IGJhY2t1cEtleWNoYWluLmtleVNoYXJlcz8uZmlsdGVyKChrZXlTaGFyZSkgPT4ga2V5U2hhcmUudG8gPT09ICdiYWNrdXAnKTtcbiAgICBhc3NlcnQoa2V5U2hhcmVzPy5sZW5ndGggPT09IDIpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXkgU2hhcmVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhlc2UgYXJlIHRoZSBrZXkgc2hhcmVzIGZvciAke2JhY2t1cEtleVByb3ZpZGVyfS4gSWYgQml0R28gSW5jLiBnb2VzIG91dCBvZiBidXNpbmVzcyxcXHJcXG5gICtcbiAgICAgICAgYGNvbnRhY3QgJHtiYWNrdXBLZXlQcm92aWRlcn0gYW5kIHRoZXkgd2lsbCBoZWxwIHlvdSByZWNvdmVyIHlvdXIgZnVuZHMuYCxcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGtleVNoYXJlcyksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHB1YiA9IGdldFB1YkZyb21LZXkoYmFja3VwS2V5Y2hhaW4pO1xuICBhc3NlcnQocHViKTtcblxuICBpZiAoYmFja3VwS2V5UHJvdmlkZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhpcyBpcyB0aGUgcHVibGljIGtleSBoZWxkIGF0ICR7YmFja3VwS2V5UHJvdmlkZXJ9LCBhbiAke2NvaW4ubmFtZX0gcmVjb3Zlcnkgc2VydmljZS4gYCArXG4gICAgICAgIGBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyfSB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy5gLFxuICAgICAgZGF0YTogcHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQjogUHJvdmlkZWQgQmFja3VwIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBwdWIsXG4gICAgcHVibGljTWFzdGVyS2V5OiBiYWNrdXBNYXN0ZXJLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQml0R29RckRhdGEoYml0Z29LZXljaGFpbjogS2V5Y2hhaW4pOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IGJpdGdvRGF0YSA9IGdldFB1YkZyb21LZXkoYml0Z29LZXljaGFpbik7XG4gIGFzc2VydChiaXRnb0RhdGEpO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdDOiBCaXRHbyBQdWJsaWMgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGlzIGlzIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUga2V5IHRoYXQgQml0R28gd2lsbCB1c2UgdG8gJyArICdjby1zaWduIHRyYW5zYWN0aW9uc1xcclxcbndpdGggeW91IG9uIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogYml0Z29EYXRhLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVRckRhdGEoe1xuICBiYWNrdXBLZXljaGFpbixcbiAgYmFja3VwS2V5UHJvdmlkZXIsXG4gIGJhY2t1cE1hc3RlcktleSxcbiAgYml0Z29LZXljaGFpbixcbiAgY29pbixcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgcGFzc3BocmFzZSxcbiAgdXNlcktleWNoYWluLFxuICB1c2VyTWFzdGVyS2V5LFxufTogR2VuZXJhdGVRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBjb25zdCBxckRhdGE6IFFyRGF0YSA9IHtcbiAgICB1c2VyOiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluLCB1c2VyTWFzdGVyS2V5KSxcbiAgICBiYWNrdXA6IGdlbmVyYXRlQmFja3VwUXJEYXRhKGNvaW4sIGJhY2t1cEtleWNoYWluLCB7XG4gICAgICBiYWNrdXBLZXlQcm92aWRlcixcbiAgICAgIGJhY2t1cE1hc3RlcktleSxcbiAgICB9KSxcbiAgICBiaXRnbzogZ2VuZXJhdGVCaXRHb1FyRGF0YShiaXRnb0tleWNoYWluKSxcbiAgfTtcblxuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgY29uc3QgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBlbmNyeXB0KHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIHBhc3NwaHJhc2UpO1xuXG4gICAgcXJEYXRhLnBhc3Njb2RlID0ge1xuICAgICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgd2FsbGV0IFBhc3N3b3JkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgd2FsbGV0IHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgd2l0aCBhIGtleSBoZWxkIGJ5IEJpdEdvLicsXG4gICAgICBkYXRhOiBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cbiJdfQ==
182
+ async function generateLightningQrData(params) {
183
+ const qrData = buildLightningQrData(params);
184
+ if (params.passphrase && params.passcodeEncryptionCode) {
185
+ qrData.passcode = await generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode, params.encryptionVersion);
186
+ }
187
+ return qrData;
188
+ }
189
+ function selectRootPrivateKey(keychain, slot, role) {
190
+ // Prefer the compact MPCv2 reduced share; fall back to encryptedPrv (e.g. multisig roots).
191
+ const data = keychain.reducedEncryptedPrv ?? keychain.encryptedPrv;
192
+ assert.ok(data, `Safe ${role} root ${slot} is missing encrypted private key material`);
193
+ return data;
194
+ }
195
+ function selectRootPublicKey(keychain, slot) {
196
+ const pub = getPubFromKey(keychain);
197
+ assert.ok(pub, `Safe BitGo root ${slot} is missing a public key`);
198
+ return pub;
199
+ }
200
+ /**
201
+ * Serializes one box's four roots into a single JSON object keyed by rootKeyType, e.g.
202
+ * `{"secp256k1Multisig":"<encPrv>","ecdsaMpc":"<reducedEncPrv>",...}`. This keeps the safe
203
+ * keycard on the existing 4-box layout — one box (= one QR/data block) per role — with the
204
+ * four roots packed into each box's data. `splitKeys` fragments the box if it exceeds the QR
205
+ * threshold, exactly as for a normal wallet keycard. Reversed by {@link parseSafeKeycardBox}.
206
+ */
207
+ function buildSafeBoxData(roots, select) {
208
+ const box = {};
209
+ for (const slot of types_1.SAFE_ROOT_ORDER) {
210
+ const root = roots[slot];
211
+ assert.ok(root, `Safe is missing the ${slot} root`);
212
+ box[slot] = select(root, slot);
213
+ }
214
+ return JSON.stringify(box);
215
+ }
216
+ /**
217
+ * Builds safe keycard QR data in the existing wallet {@link QrData} shape: boxes A (user),
218
+ * B (backup), C (BitGo), D (passcode). Each of A/B/C carries a JSON object of the four roots,
219
+ * so the safe renders and parses through the same {@link drawKeycard} path as a wallet.
220
+ */
221
+ async function generateSafeQrData(params) {
222
+ const { roots } = params;
223
+ const qrData = {
224
+ user: {
225
+ title: 'A: User Key',
226
+ description: 'Your 4 root private keys, encrypted with your safe password.',
227
+ data: buildSafeBoxData(roots, (root, slot) => selectRootPrivateKey(root.userKeychain, slot, 'user')),
228
+ },
229
+ backup: {
230
+ title: 'B: Backup Key',
231
+ description: 'Your 4 root backup keys, encrypted with your safe password.',
232
+ data: buildSafeBoxData(roots, (root, slot) => selectRootPrivateKey(root.backupKeychain, slot, 'backup')),
233
+ },
234
+ bitgo: {
235
+ title: 'C: BitGo Key',
236
+ description: 'The public parts of the 4 root keys held by BitGo.',
237
+ data: buildSafeBoxData(roots, (root, slot) => selectRootPublicKey(root.bitgoKeychain, slot)),
238
+ },
239
+ };
240
+ if (params.passphrase && params.passcodeEncryptionCode) {
241
+ qrData.passcode = await generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode, params.encryptionVersion, 'safe');
242
+ }
243
+ return qrData;
244
+ }
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxTUEsd0NBWUM7QUFFRCwwREFZQztBQXdDRCxnREE4QkM7QUFuU0QsaURBQThDO0FBQzlDLCtDQUFpQztBQUNqQyxtQ0FXaUI7QUFFakIsU0FBUyxhQUFhLENBQUMsR0FBYTtJQUNsQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqQixLQUFLLFFBQVE7WUFDWCxPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDdkIsS0FBSyxLQUFLO1lBQ1IsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBQzVCLEtBQUssYUFBYTtZQUNoQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLFlBQXNCLEVBQUUsYUFBc0I7SUFDeEUsSUFBSSxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUNyQyxPQUFPO1lBQ0wsS0FBSyxFQUFFLGFBQWE7WUFDcEIsV0FBVyxFQUFFLGdFQUFnRTtZQUM3RSxJQUFJLEVBQUUsWUFBWSxDQUFDLG1CQUFtQjtTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQUksWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQzlCLE9BQU87WUFDTCxLQUFLLEVBQUUsYUFBYTtZQUNwQixXQUFXLEVBQUUsZ0VBQWdFO1lBQzdFLElBQUksRUFBRSxZQUFZLENBQUMsWUFBWTtTQUNoQyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRWYsT0FBTztRQUNMLEtBQUssRUFBRSxzQkFBc0I7UUFD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O1lBQ04sS0FBSyxFQUFFLGVBQWU7WUFDdEIsV0FBVyxFQUFFLDZEQUE2RDtZQUMxRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDekc7UUFDRCxLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUUsY0FBYztZQUNyQixXQUFXLEVBQUUsb0RBQW9EO1lBQ2pFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzdGO0tBQ0YsQ0FBQztJQUVGLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sc0JBQXNCLENBQzVDLE1BQU0sQ0FBQyxVQUFVLEVBQ2pCLE1BQU0sQ0FBQyxzQkFBc0IsRUFDN0IsTUFBTSxDQUFDLGlCQUFpQixFQUN4QixNQUFNLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7IEtleWNoYWluLCBLZXljaGFpbnNUcmlwbGV0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgZW5jcnlwdCB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1hcGknO1xuaW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQge1xuICBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyxcbiAgR2VuZXJhdGVRckRhdGFQYXJhbXMsXG4gIEdlbmVyYXRlU2FmZVFyRGF0YVBhcmFtcyxcbiAgS2V5Y2FyZEVudGl0eSxcbiAgTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnksXG4gIFFyRGF0YSxcbiAgUXJEYXRhRW50cnksXG4gIFNhZmVLZXljYXJkUm9vdHMsXG4gIFNhZmVSb290S2V5VHlwZSxcbiAgU0FGRV9ST09UX09SREVSLFxufSBmcm9tICcuL3R5cGVzJztcblxuZnVuY3Rpb24gZ2V0UHViRnJvbUtleShrZXk6IEtleWNoYWluKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgc3dpdGNoIChrZXkudHlwZSkge1xuICAgIGNhc2UgJ2Jsc2RrZyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vblB1YjtcbiAgICBjYXNlICd0c3MnOlxuICAgICAgcmV0dXJuIGtleS5jb21tb25LZXljaGFpbjtcbiAgICBjYXNlICdpbmRlcGVuZGVudCc6XG4gICAgICByZXR1cm4ga2V5LnB1YjtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluOiBLZXljaGFpbiwgdXNlck1hc3RlcktleT86IHN0cmluZyk6IFFyRGF0YUVudHJ5IHtcbiAgaWYgKHVzZXJLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG4gIGlmICh1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQTogVXNlciBLZXknLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiB1c2VyS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwdWIgPSBnZXRQdWJGcm9tS2V5KHVzZXJLZXljaGFpbik7XG4gIGFzc2VydC5vayhwdWIpO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdBOiBQcm92aWRlZCBVc2VyIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBwdWIsXG4gICAgcHVibGljTWFzdGVyS2V5OiB1c2VyTWFzdGVyS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJhY2t1cFFyRGF0YShcbiAgY29pbjogUmVhZG9ubHk8QmFzZUNvaW4+LFxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW4sXG4gIHtcbiAgICBiYWNrdXBLZXlQcm92aWRlcixcbiAgICBiYWNrdXBNYXN0ZXJLZXksXG4gIH06IHtcbiAgICBiYWNrdXBLZXlQcm92aWRlcj86IHN0cmluZztcbiAgICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIH0gPSB7fVxuKTogUXJEYXRhRW50cnkge1xuICBjb25zdCB0aXRsZSA9ICdCOiBCYWNrdXAgS2V5JztcbiAgaWYgKGJhY2t1cEtleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cbiAgaWYgKGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIGJhY2t1cCBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG5cbiAgaWYgKGJhY2t1cEtleVByb3ZpZGVyID09PSAnQml0R28gVHJ1c3QnICYmIGJhY2t1cEtleWNoYWluLnR5cGUgPT09ICd0c3MnKSB7XG4gICAgY29uc3Qga2V5U2hhcmVzID0gYmFja3VwS2V5Y2hhaW4ua2V5U2hhcmVzPy5maWx0ZXIoKGtleVNoYXJlKSA9PiBrZXlTaGFyZS50byA9PT0gJ2JhY2t1cCcpO1xuICAgIGFzc2VydC5vayhrZXlTaGFyZXM/Lmxlbmd0aCA9PT0gMik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleSBTaGFyZXMnLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIGBUaGVzZSBhcmUgdGhlIGtleSBzaGFyZXMgZm9yICR7YmFja3VwS2V5UHJvdmlkZXJ9LiBJZiBCaXRHbyBJbmMuIGdvZXMgb3V0IG9mIGJ1c2luZXNzLFxcclxcbmAgK1xuICAgICAgICBgY29udGFjdCAke2JhY2t1cEtleVByb3ZpZGVyfSBhbmQgdGhleSB3aWxsIGhlbHAgeW91IHJlY292ZXIgeW91ciBmdW5kcy5gLFxuICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoa2V5U2hhcmVzKSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHViID0gZ2V0UHViRnJvbUtleShiYWNrdXBLZXljaGFpbik7XG4gIGFzc2VydC5vayhwdWIpO1xuXG4gIGlmIChiYWNrdXBLZXlQcm92aWRlcikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIGBUaGlzIGlzIHRoZSBwdWJsaWMga2V5IGhlbGQgYXQgJHtiYWNrdXBLZXlQcm92aWRlcn0sIGFuICR7Y29pbi5uYW1lfSByZWNvdmVyeSBzZXJ2aWNlLiBgICtcbiAgICAgICAgYElmIHlvdSBsb3NlXFxyXFxueW91ciBrZXksICR7YmFja3VwS2V5UHJvdmlkZXJ9IHdpbGwgYmUgYWJsZSB0byBzaWduIHRyYW5zYWN0aW9ucyB0byByZWNvdmVyIGZ1bmRzLmAsXG4gICAgICBkYXRhOiBwdWIsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdCOiBQcm92aWRlZCBCYWNrdXAgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nLFxuICAgIGRhdGE6IHB1YixcbiAgICBwdWJsaWNNYXN0ZXJLZXk6IGJhY2t1cE1hc3RlcktleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCaXRHb1FyRGF0YShiaXRnb0tleWNoYWluOiBLZXljaGFpbik6IFFyRGF0YUVudHJ5IHtcbiAgY29uc3QgYml0Z29EYXRhID0gZ2V0UHViRnJvbUtleShiaXRnb0tleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKGJpdGdvRGF0YSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0M6IEJpdEdvIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUga2V5IGhlbGQgYnkgQml0R28uJyxcbiAgICBkYXRhOiBiaXRnb0RhdGEsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlck1hc3RlclB1YmxpY0tleVFSRGF0YShwdWJsaWNLZXk6IHN0cmluZyk6IE1hc3RlclB1YmxpY0tleVFyRGF0YUVudHJ5IHtcbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0U6IE1hc3RlciBVc2VyIFB1YmxpYyBLZXknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIHVzZXIga2V5IGZvciB0aGUgd2FsbGV0LiBUaGlzIGlzIG5vdCBzdG9yZWQgYnkgQml0R28sIGFuZCBtYXkgYmUgcmVxdWlyZWQgZm9yIHVzZSBpbiByZWNvdmVyeSBzY2VuYXJpb3MuJyxcbiAgICBkYXRhOiBwdWJsaWNLZXksXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlUGFzc2NvZGVRckRhdGEoXG4gIHBhc3NwaHJhc2U6IHN0cmluZyxcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZTogc3RyaW5nLFxuICBlbmNyeXB0aW9uVmVyc2lvbj86IDEgfCAyLFxuICBlbnRpdHlOb3VuOiBLZXljYXJkRW50aXR5ID0gJ3dhbGxldCdcbik6IFByb21pc2U8UXJEYXRhRW50cnk+IHtcbiAgY29uc3QgZW5jcnlwdGVkUGFzc2NvZGUgPSBhd2FpdCBlbmNyeXB0KHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIHBhc3NwaHJhc2UsIHsgZW5jcnlwdGlvblZlcnNpb24gfSk7XG4gIGNvbnN0IHRpdGxlTm91biA9IGVudGl0eU5vdW4gPT09ICdzYWZlJyA/ICdTYWZlJyA6ICdXYWxsZXQnO1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiBgRDogRW5jcnlwdGVkICR7dGl0bGVOb3VufSBQYXNzd29yZGAsXG4gICAgZGVzY3JpcHRpb246IGBUaGlzIGlzIHRoZSAke2VudGl0eU5vdW59IHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgd2l0aCBhIGtleSBoZWxkIGJ5IEJpdEdvLmAsXG4gICAgZGF0YTogZW5jcnlwdGVkUGFzc2NvZGUsXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQmFja3VwTWFzdGVyUHVibGljS2V5UVJEYXRhKHB1YmxpY0tleTogc3RyaW5nKTogTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnkge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnRjogTWFzdGVyIEJhY2t1cCBQdWJsaWMgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHVzZWQgdG8gZGVyaXZlIHRoZSBiYWNrdXAga2V5IGZvciB0aGUgd2FsbGV0LiBUaGlzIGlzIG5vdCBzdG9yZWQgYnkgQml0R28sIGFuZCBtYXkgYmUgcmVxdWlyZWQgZm9yIHVzZSBpbiByZWNvdmVyeSBzY2VuYXJpb3MuJyxcbiAgICBkYXRhOiBwdWJsaWNLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkV2FsbGV0UXJEYXRhKHtcbiAgYmFja3VwS2V5Y2hhaW4sXG4gIGJhY2t1cEtleVByb3ZpZGVyLFxuICBiYWNrdXBNYXN0ZXJLZXksXG4gIGJpdGdvS2V5Y2hhaW4sXG4gIGNvaW4sXG4gIHVzZXJLZXljaGFpbixcbiAgdXNlck1hc3RlcktleSxcbiAgdXNlck1hc3RlclB1YmxpY0tleSxcbiAgYmFja3VwTWFzdGVyUHVibGljS2V5LFxufTogR2VuZXJhdGVRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICByZXR1cm4ge1xuICAgIHVzZXI6IGdlbmVyYXRlVXNlclFyRGF0YSh1c2VyS2V5Y2hhaW4sIHVzZXJNYXN0ZXJLZXkpLFxuICAgIHVzZXJNYXN0ZXJQdWJsaWNLZXk6IHVzZXJNYXN0ZXJQdWJsaWNLZXkgPyBnZW5lcmF0ZVVzZXJNYXN0ZXJQdWJsaWNLZXlRUkRhdGEodXNlck1hc3RlclB1YmxpY0tleSkgOiB1bmRlZmluZWQsXG4gICAgYmFja3VwOiBnZW5lcmF0ZUJhY2t1cFFyRGF0YShjb2luLCBiYWNrdXBLZXljaGFpbiwge1xuICAgICAgYmFja3VwS2V5UHJvdmlkZXIsXG4gICAgICBiYWNrdXBNYXN0ZXJLZXksXG4gICAgfSksXG4gICAgYmFja3VwTWFzdGVyUHVibGljS2V5OiBiYWNrdXBNYXN0ZXJQdWJsaWNLZXlcbiAgICAgID8gZ2VuZXJhdGVCYWNrdXBNYXN0ZXJQdWJsaWNLZXlRUkRhdGEoYmFja3VwTWFzdGVyUHVibGljS2V5KVxuICAgICAgOiB1bmRlZmluZWQsXG4gICAgYml0Z286IGdlbmVyYXRlQml0R29RckRhdGEoYml0Z29LZXljaGFpbiksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTGlnaHRuaW5nUXJEYXRhKHsgdXNlckF1dGhLZXljaGFpbiB9OiBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyk6IFFyRGF0YSB7XG4gIGFzc2VydC5vayh1c2VyQXV0aEtleWNoYWluLmVuY3J5cHRlZFBydiwgJ3VzZXJBdXRoS2V5Y2hhaW4gbXVzdCBoYXZlIGFuIGVuY3J5cHRlZFBydicpO1xuXG4gIHJldHVybiB7XG4gICAgdXNlcjoge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEF1dGggS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnVGhpcyBpcyB5b3VyIHVzZXIgYXV0aGVudGljYXRpb24gcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLlxcclxcbkl0IGlzIHVzZWQgdG8gYXV0aGVudGljYXRlIHBheW1lbnQgYW5kIHdhbGxldCBvcGVyYXRpb25zLicsXG4gICAgICBkYXRhOiB1c2VyQXV0aEtleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9LFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVRckRhdGEocGFyYW1zOiBHZW5lcmF0ZVFyRGF0YVBhcmFtcyk6IFByb21pc2U8UXJEYXRhPiB7XG4gIGNvbnN0IHFyRGF0YSA9IGJ1aWxkV2FsbGV0UXJEYXRhKHBhcmFtcyk7XG5cbiAgaWYgKHBhcmFtcy5wYXNzcGhyYXNlICYmIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgcXJEYXRhLnBhc3Njb2RlID0gYXdhaXQgZ2VuZXJhdGVQYXNzY29kZVFyRGF0YShcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb25cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhKHBhcmFtczogR2VuZXJhdGVMaWdodG5pbmdRckRhdGFQYXJhbXMpOiBQcm9taXNlPFFyRGF0YT4ge1xuICBjb25zdCBxckRhdGEgPSBidWlsZExpZ2h0bmluZ1FyRGF0YShwYXJhbXMpO1xuXG4gIGlmIChwYXJhbXMucGFzc3BocmFzZSAmJiBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSkge1xuICAgIHFyRGF0YS5wYXNzY29kZSA9IGF3YWl0IGdlbmVyYXRlUGFzc2NvZGVRckRhdGEoXG4gICAgICBwYXJhbXMucGFzc3BocmFzZSxcbiAgICAgIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlLFxuICAgICAgcGFyYW1zLmVuY3J5cHRpb25WZXJzaW9uXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdFJvb3RQcml2YXRlS2V5KGtleWNoYWluOiBLZXljaGFpbiwgc2xvdDogU2FmZVJvb3RLZXlUeXBlLCByb2xlOiAndXNlcicgfCAnYmFja3VwJyk6IHN0cmluZyB7XG4gIC8vIFByZWZlciB0aGUgY29tcGFjdCBNUEN2MiByZWR1Y2VkIHNoYXJlOyBmYWxsIGJhY2sgdG8gZW5jcnlwdGVkUHJ2IChlLmcuIG11bHRpc2lnIHJvb3RzKS5cbiAgY29uc3QgZGF0YSA9IGtleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYgPz8ga2V5Y2hhaW4uZW5jcnlwdGVkUHJ2O1xuICBhc3NlcnQub2soZGF0YSwgYFNhZmUgJHtyb2xlfSByb290ICR7c2xvdH0gaXMgbWlzc2luZyBlbmNyeXB0ZWQgcHJpdmF0ZSBrZXkgbWF0ZXJpYWxgKTtcbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdFJvb3RQdWJsaWNLZXkoa2V5Y2hhaW46IEtleWNoYWluLCBzbG90OiBTYWZlUm9vdEtleVR5cGUpOiBzdHJpbmcge1xuICBjb25zdCBwdWIgPSBnZXRQdWJGcm9tS2V5KGtleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKHB1YiwgYFNhZmUgQml0R28gcm9vdCAke3Nsb3R9IGlzIG1pc3NpbmcgYSBwdWJsaWMga2V5YCk7XG4gIHJldHVybiBwdWI7XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBvbmUgYm94J3MgZm91ciByb290cyBpbnRvIGEgc2luZ2xlIEpTT04gb2JqZWN0IGtleWVkIGJ5IHJvb3RLZXlUeXBlLCBlLmcuXG4gKiBge1wic2VjcDI1NmsxTXVsdGlzaWdcIjpcIjxlbmNQcnY+XCIsXCJlY2RzYU1wY1wiOlwiPHJlZHVjZWRFbmNQcnY+XCIsLi4ufWAuIFRoaXMga2VlcHMgdGhlIHNhZmVcbiAqIGtleWNhcmQgb24gdGhlIGV4aXN0aW5nIDQtYm94IGxheW91dCDigJQgb25lIGJveCAoPSBvbmUgUVIvZGF0YSBibG9jaykgcGVyIHJvbGUg4oCUIHdpdGggdGhlXG4gKiBmb3VyIHJvb3RzIHBhY2tlZCBpbnRvIGVhY2ggYm94J3MgZGF0YS4gYHNwbGl0S2V5c2AgZnJhZ21lbnRzIHRoZSBib3ggaWYgaXQgZXhjZWVkcyB0aGUgUVJcbiAqIHRocmVzaG9sZCwgZXhhY3RseSBhcyBmb3IgYSBub3JtYWwgd2FsbGV0IGtleWNhcmQuIFJldmVyc2VkIGJ5IHtAbGluayBwYXJzZVNhZmVLZXljYXJkQm94fS5cbiAqL1xuZnVuY3Rpb24gYnVpbGRTYWZlQm94RGF0YShcbiAgcm9vdHM6IFJlY29yZDxTYWZlUm9vdEtleVR5cGUsIEtleWNoYWluc1RyaXBsZXQ+LFxuICBzZWxlY3Q6IChyb290OiBLZXljaGFpbnNUcmlwbGV0LCBzbG90OiBTYWZlUm9vdEtleVR5cGUpID0+IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgY29uc3QgYm94OiBTYWZlS2V5Y2FyZFJvb3RzID0ge30gYXMgU2FmZUtleWNhcmRSb290cztcbiAgZm9yIChjb25zdCBzbG90IG9mIFNBRkVfUk9PVF9PUkRFUikge1xuICAgIGNvbnN0IHJvb3QgPSByb290c1tzbG90XTtcbiAgICBhc3NlcnQub2socm9vdCwgYFNhZmUgaXMgbWlzc2luZyB0aGUgJHtzbG90fSByb290YCk7XG4gICAgYm94W3Nsb3RdID0gc2VsZWN0KHJvb3QsIHNsb3QpO1xuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShib3gpO1xufVxuXG4vKipcbiAqIEJ1aWxkcyBzYWZlIGtleWNhcmQgUVIgZGF0YSBpbiB0aGUgZXhpc3Rpbmcgd2FsbGV0IHtAbGluayBRckRhdGF9IHNoYXBlOiBib3hlcyBBICh1c2VyKSxcbiAqIEIgKGJhY2t1cCksIEMgKEJpdEdvKSwgRCAocGFzc2NvZGUpLiBFYWNoIG9mIEEvQi9DIGNhcnJpZXMgYSBKU09OIG9iamVjdCBvZiB0aGUgZm91ciByb290cyxcbiAqIHNvIHRoZSBzYWZlIHJlbmRlcnMgYW5kIHBhcnNlcyB0aHJvdWdoIHRoZSBzYW1lIHtAbGluayBkcmF3S2V5Y2FyZH0gcGF0aCBhcyBhIHdhbGxldC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlU2FmZVFyRGF0YShwYXJhbXM6IEdlbmVyYXRlU2FmZVFyRGF0YVBhcmFtcyk6IFByb21pc2U8UXJEYXRhPiB7XG4gIGNvbnN0IHsgcm9vdHMgfSA9IHBhcmFtcztcbiAgY29uc3QgcXJEYXRhOiBRckRhdGEgPSB7XG4gICAgdXNlcjoge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1lvdXIgNCByb290IHByaXZhdGUga2V5cywgZW5jcnlwdGVkIHdpdGggeW91ciBzYWZlIHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBidWlsZFNhZmVCb3hEYXRhKHJvb3RzLCAocm9vdCwgc2xvdCkgPT4gc2VsZWN0Um9vdFByaXZhdGVLZXkocm9vdC51c2VyS2V5Y2hhaW4sIHNsb3QsICd1c2VyJykpLFxuICAgIH0sXG4gICAgYmFja3VwOiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXknLFxuICAgICAgZGVzY3JpcHRpb246ICdZb3VyIDQgcm9vdCBiYWNrdXAga2V5cywgZW5jcnlwdGVkIHdpdGggeW91ciBzYWZlIHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBidWlsZFNhZmVCb3hEYXRhKHJvb3RzLCAocm9vdCwgc2xvdCkgPT4gc2VsZWN0Um9vdFByaXZhdGVLZXkocm9vdC5iYWNrdXBLZXljaGFpbiwgc2xvdCwgJ2JhY2t1cCcpKSxcbiAgICB9LFxuICAgIGJpdGdvOiB7XG4gICAgICB0aXRsZTogJ0M6IEJpdEdvIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoZSBwdWJsaWMgcGFydHMgb2YgdGhlIDQgcm9vdCBrZXlzIGhlbGQgYnkgQml0R28uJyxcbiAgICAgIGRhdGE6IGJ1aWxkU2FmZUJveERhdGEocm9vdHMsIChyb290LCBzbG90KSA9PiBzZWxlY3RSb290UHVibGljS2V5KHJvb3QuYml0Z29LZXljaGFpbiwgc2xvdCkpLFxuICAgIH0sXG4gIH07XG5cbiAgaWYgKHBhcmFtcy5wYXNzcGhyYXNlICYmIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgcXJEYXRhLnBhc3Njb2RlID0gYXdhaXQgZ2VuZXJhdGVQYXNzY29kZVFyRGF0YShcbiAgICAgIHBhcmFtcy5wYXNzcGhyYXNlLFxuICAgICAgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsXG4gICAgICBwYXJhbXMuZW5jcnlwdGlvblZlcnNpb24sXG4gICAgICAnc2FmZSdcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cbiJdfQ==
@@ -1,12 +1,19 @@
1
- import { GenerateQrDataParams } from './generateQrData';
1
+ import { GenerateKeycardParams, GenerateLightningQrDataParams, GenerateQrDataBaseParams, GenerateSafeQrDataParams } from './types';
2
2
  export * from './drawKeycard';
3
+ export * from './extractKeycardFromPDF';
3
4
  export * from './faq';
4
5
  export * from './generateQrData';
6
+ export * from './parseKeycard';
7
+ export * from './upgradeWalletEncryption';
5
8
  export * from './utils';
6
- export interface GenerateKeycardParams extends GenerateQrDataParams {
7
- activationCode?: string;
8
- keyCardImage?: HTMLImageElement;
9
- walletLabel: string;
10
- }
9
+ export * from './types';
11
10
  export declare function generateKeycard(params: GenerateKeycardParams): Promise<void>;
11
+ export declare function generateLightningKeycard(params: GenerateQrDataBaseParams & GenerateLightningQrDataParams): Promise<void>;
12
+ /**
13
+ * Generates a safe keycard using the existing 4-box layout: boxes A/B/C each carry a JSON
14
+ * object of the four roots (see {@link generateSafeQrData}), rendered through the same
15
+ * {@link drawKeycard} path as a wallet. Generated as part of safe creation, once all four
16
+ * root triplets exist.
17
+ */
18
+ export declare function generateSafeKeycard(params: GenerateQrDataBaseParams & GenerateSafeQrDataParams): Promise<void>;
12
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAIxE,cAAc,eAAe,CAAC;AAC9B,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AAExB,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAMlF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,6BAA6B,EAC7B,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,SAAS,CAAC;AAEjB,cAAc,eAAe,CAAC;AAC9B,cAAc,yBAAyB,CAAC;AACxC,cAAc,OAAO,CAAC;AACtB,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAExB,wBAAsB,eAAe,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBlF;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,wBAAwB,GAAG,6BAA6B,GAC/D,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,wBAAwB,GAAG,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYpH"}