@bitgo-beta/key-card 0.0.1-beta.214 → 0.0.1-beta.2140

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;AAwLjB,wBAAsB,cAAc,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQlF;AAED,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,MAAM,CAAC,CAQpG;AAmCD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyB1F"}
@@ -1,8 +1,45 @@
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;
39
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
4
40
  const sdk_api_1 = require("@bitgo-beta/sdk-api");
5
- const assert = require("assert");
41
+ const assert = __importStar(require("assert"));
42
+ const types_1 = require("./types");
6
43
  function getPubFromKey(key) {
7
44
  switch (key.type) {
8
45
  case 'blsdkg':
@@ -14,6 +51,13 @@ function getPubFromKey(key) {
14
51
  }
15
52
  }
16
53
  function generateUserQrData(userKeychain, userMasterKey) {
54
+ if (userKeychain.reducedEncryptedPrv) {
55
+ return {
56
+ title: 'A: User Key',
57
+ description: 'This is your private key, encrypted with your wallet password.',
58
+ data: userKeychain.reducedEncryptedPrv,
59
+ };
60
+ }
17
61
  if (userKeychain.encryptedPrv) {
18
62
  return {
19
63
  title: 'A: User Key',
@@ -22,7 +66,7 @@ function generateUserQrData(userKeychain, userMasterKey) {
22
66
  };
23
67
  }
24
68
  const pub = getPubFromKey(userKeychain);
25
- assert(pub);
69
+ assert.ok(pub);
26
70
  return {
27
71
  title: 'A: Provided User Key',
28
72
  description: 'This is the public key you provided for your wallet.',
@@ -31,8 +75,14 @@ function generateUserQrData(userKeychain, userMasterKey) {
31
75
  };
32
76
  }
33
77
  function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupMasterKey, } = {}) {
34
- var _a;
35
78
  const title = 'B: Backup Key';
79
+ if (backupKeychain.reducedEncryptedPrv) {
80
+ return {
81
+ title,
82
+ description: 'This is your backup private key, encrypted with your wallet password.',
83
+ data: backupKeychain.reducedEncryptedPrv,
84
+ };
85
+ }
36
86
  if (backupKeychain.encryptedPrv) {
37
87
  return {
38
88
  title,
@@ -41,8 +91,8 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
41
91
  };
42
92
  }
43
93
  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);
94
+ const keyShares = backupKeychain.keyShares?.filter((keyShare) => keyShare.to === 'backup');
95
+ assert.ok(keyShares?.length === 2);
46
96
  return {
47
97
  title: 'B: Backup Key Shares',
48
98
  description: `These are the key shares for ${backupKeyProvider}. If BitGo Inc. goes out of business,\r\n` +
@@ -51,7 +101,7 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
51
101
  };
52
102
  }
53
103
  const pub = getPubFromKey(backupKeychain);
54
- assert(pub);
104
+ assert.ok(pub);
55
105
  if (backupKeyProvider) {
56
106
  return {
57
107
  title: 'B: Backup Key',
@@ -69,31 +119,131 @@ function generateBackupQrData(coin, backupKeychain, { backupKeyProvider, backupM
69
119
  }
70
120
  function generateBitGoQrData(bitgoKeychain) {
71
121
  const bitgoData = getPubFromKey(bitgoKeychain);
72
- assert(bitgoData);
122
+ assert.ok(bitgoData);
73
123
  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.',
124
+ title: 'C: BitGo Key',
125
+ description: 'This is the public part of the key held by BitGo.',
76
126
  data: bitgoData,
77
127
  };
78
128
  }
79
- function generateQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, passcodeEncryptionCode, passphrase, userKeychain, userMasterKey, }) {
80
- const qrData = {
129
+ function generateUserMasterPublicKeyQRData(publicKey) {
130
+ return {
131
+ title: 'E: Master User Public Key',
132
+ 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.',
133
+ data: publicKey,
134
+ };
135
+ }
136
+ async function generatePasscodeQrData(passphrase, passcodeEncryptionCode, entityNoun = 'wallet') {
137
+ // Box D uses the fixed version for its generated encryption key.
138
+ const encryptedPasscode = await (0, sdk_api_1.encrypt)(passcodeEncryptionCode, passphrase, {
139
+ encryptionVersion: sdk_core_1.HIGH_ENTROPY_ENCRYPTION_VERSION,
140
+ });
141
+ const titleNoun = entityNoun === 'safe' ? 'Safe' : 'Wallet';
142
+ return {
143
+ title: `D: Encrypted ${titleNoun} Password`,
144
+ description: `This is the ${entityNoun} password, encrypted client-side with a key held by BitGo.`,
145
+ data: encryptedPasscode,
146
+ };
147
+ }
148
+ function generateBackupMasterPublicKeyQRData(publicKey) {
149
+ return {
150
+ title: 'F: Master Backup Public Key',
151
+ 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.',
152
+ data: publicKey,
153
+ };
154
+ }
155
+ function buildWalletQrData({ backupKeychain, backupKeyProvider, backupMasterKey, bitgoKeychain, coin, userKeychain, userMasterKey, userMasterPublicKey, backupMasterPublicKey, }) {
156
+ return {
81
157
  user: generateUserQrData(userKeychain, userMasterKey),
158
+ userMasterPublicKey: userMasterPublicKey ? generateUserMasterPublicKeyQRData(userMasterPublicKey) : undefined,
82
159
  backup: generateBackupQrData(coin, backupKeychain, {
83
160
  backupKeyProvider,
84
161
  backupMasterKey,
85
162
  }),
163
+ backupMasterPublicKey: backupMasterPublicKey
164
+ ? generateBackupMasterPublicKeyQRData(backupMasterPublicKey)
165
+ : undefined,
86
166
  bitgo: generateBitGoQrData(bitgoKeychain),
87
167
  };
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
- };
168
+ }
169
+ function buildLightningQrData({ userAuthKeychain }) {
170
+ assert.ok(userAuthKeychain.encryptedPrv, 'userAuthKeychain must have an encryptedPrv');
171
+ return {
172
+ user: {
173
+ title: 'A: User Auth Key',
174
+ description: 'This is your user authentication private key, encrypted with your wallet password.\r\nIt is used to authenticate payment and wallet operations.',
175
+ data: userAuthKeychain.encryptedPrv,
176
+ },
177
+ };
178
+ }
179
+ async function generateQrData(params) {
180
+ const qrData = buildWalletQrData(params);
181
+ if (params.passphrase && params.passcodeEncryptionCode) {
182
+ qrData.passcode = await generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode);
95
183
  }
96
184
  return qrData;
97
185
  }
98
- exports.generateQrData = generateQrData;
99
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsaURBQThDO0FBQzlDLGlDQUFpQztBQXlDakMsU0FBUyxhQUFhLENBQUMsR0FBYTtJQUNsQyxRQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUU7UUFDaEIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLEtBQUssS0FBSztZQUNSLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUM1QixLQUFLLGFBQWE7WUFDaEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0tBQ2xCO0FBQ0gsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsWUFBc0IsRUFBRSxhQUFzQjtJQUN4RSxJQUFJLFlBQVksQ0FBQyxZQUFZLEVBQUU7UUFDN0IsT0FBTztZQUNMLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFBRSxnRUFBZ0U7WUFDN0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7S0FDSDtJQUVELE1BQU0sR0FBRyxHQUFHLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN4QyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFWixPQUFPO1FBQ0wsS0FBSyxFQUFFLHNCQUFzQjtRQUM3QixXQUFXLEVBQUUsc0RBQXNEO1FBQ25FLElBQUksRUFBRSxHQUFHO1FBQ1QsZUFBZSxFQUFFLGFBQWE7S0FDL0IsQ0FBQztBQUNKLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUMzQixJQUF3QixFQUN4QixjQUF3QixFQUN4QixFQUNFLGlCQUFpQixFQUNqQixlQUFlLE1BSWIsRUFBRTs7SUFFTixNQUFNLEtBQUssR0FBRyxlQUFlLENBQUM7SUFDOUIsSUFBSSxjQUFjLENBQUMsWUFBWSxFQUFFO1FBQy9CLE9BQU87WUFDTCxLQUFLO1lBQ0wsV0FBVyxFQUFFLHVFQUF1RTtZQUNwRixJQUFJLEVBQUUsY0FBYyxDQUFDLFlBQVk7U0FDbEMsQ0FBQztLQUNIO0lBRUQsSUFBSSxpQkFBaUIsS0FBSyxhQUFhLElBQUksY0FBYyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7UUFDeEUsTUFBTSxTQUFTLEdBQUcsTUFBQSxjQUFjLENBQUMsU0FBUywwQ0FBRSxNQUFNLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDM0YsTUFBTSxDQUFDLENBQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLE1BQU0sTUFBSyxDQUFDLENBQUMsQ0FBQztRQUNoQyxPQUFPO1lBQ0wsS0FBSyxFQUFFLHNCQUFzQjtZQUM3QixXQUFXLEVBQ1QsZ0NBQWdDLGlCQUFpQiwyQ0FBMkM7Z0JBQzVGLFdBQVcsaUJBQWlCLDZDQUE2QztZQUMzRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUM7U0FDaEMsQ0FBQztLQUNIO0lBRUQsTUFBTSxHQUFHLEdBQUcsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVaLElBQUksaUJBQWlCLEVBQUU7UUFDckIsT0FBTztZQUNMLEtBQUssRUFBRSxlQUFlO1lBQ3RCLFdBQVcsRUFDVCxrQ0FBa0MsaUJBQWlCLFFBQVEsSUFBSSxDQUFDLElBQUkscUJBQXFCO2dCQUN6Riw0QkFBNEIsaUJBQWlCLHNEQUFzRDtZQUNyRyxJQUFJLEVBQUUsR0FBRztTQUNWLENBQUM7S0FDSDtJQUVELE9BQU87UUFDTCxLQUFLLEVBQUUsd0JBQXdCO1FBQy9CLFdBQVcsRUFBRSxzREFBc0Q7UUFDbkUsSUFBSSxFQUFFLEdBQUc7UUFDVCxlQUFlLEVBQUUsZUFBZTtLQUNqQyxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQVMsbUJBQW1CLENBQUMsYUFBdUI7SUFDbEQsTUFBTSxTQUFTLEdBQUcsYUFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUVsQixPQUFPO1FBQ0wsS0FBSyxFQUFFLHFCQUFxQjtRQUM1QixXQUFXLEVBQ1QsNERBQTRELEdBQUcsa0RBQWtEO1FBQ25ILElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEVBQzdCLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGFBQWEsRUFDYixJQUFJLEVBQ0osc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxHQUNRO0lBQ3JCLE1BQU0sTUFBTSxHQUFXO1FBQ3JCLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDO1FBQ3JELE1BQU0sRUFBRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ2pELGlCQUFpQjtZQUNqQixlQUFlO1NBQ2hCLENBQUM7UUFDRixLQUFLLEVBQUUsbUJBQW1CLENBQUMsYUFBYSxDQUFDO0tBQzFDLENBQUM7SUFFRixJQUFJLFVBQVUsSUFBSSxzQkFBc0IsRUFBRTtRQUN4QyxNQUFNLHVCQUF1QixHQUFHLGlCQUFPLENBQUMsc0JBQXNCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFFNUUsTUFBTSxDQUFDLFFBQVEsR0FBRztZQUNoQixLQUFLLEVBQUUsOEJBQThCO1lBQ3JDLFdBQVcsRUFBRSw4RUFBOEU7WUFDM0YsSUFBSSxFQUFFLHVCQUF1QjtTQUM5QixDQUFDO0tBQ0g7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBL0JELHdDQStCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VDb2luIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBLZXljaGFpbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGVuY3J5cHQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstYXBpJztcbmltcG9ydCAqIGFzIGFzc2VydCBmcm9tICdhc3NlcnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdlbmVyYXRlUXJEYXRhUGFyYW1zIHtcbiAgLy8gVGhlIGJhY2t1cCBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiYWNrdXBLZXljaGFpbjogS2V5Y2hhaW47XG4gIC8vIFRoZSBuYW1lIG9mIHRoZSAzcmQgcGFydHkgcHJvdmlkZXIgb2YgdGhlIGJhY2t1cCBrZXkgaWYgbmVpdGhlciB0aGUgdXNlciBub3IgQml0R28gc3RvcmVzIGl0XG4gIGJhY2t1cEtleVByb3ZpZGVyPzogc3RyaW5nO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSBiYWNrdXAga2V5LCBvbmx5IHVzZWQgZm9yIGNvbGQga2V5c1xuICBiYWNrdXBNYXN0ZXJLZXk/OiBzdHJpbmc7XG4gIC8vIFRoZSBCaXRHbyBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICBiaXRnb0tleWNoYWluOiBLZXljaGFpbjtcbiAgLy8gVGhlIGNvaW4gb2YgdGhlIHdhbGxldCB0aGF0IHdhcy8gaXMgYWJvdXQgdG8gYmUgY3JlYXRlZFxuICBjb2luOiBSZWFkb25seTxCYXNlQ29pbj47XG4gIC8vIEEgY29kZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGVuY3J5cHQgdGhlIHdhbGxldCBwYXNzd29yZCB0by5cbiAgLy8gSWYgYm90aCB0aGUgcGFzc3BocmFzZSBhbmQgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSBhcmUgcGFzc2VkLCB0aGVuIHRoaXMgY29kZSBlbmNyeXB0cyB0aGUgcGFzc3BocmFzZSB3aXRoIHRoZVxuICAvLyBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFuZCBwdXRzIHRoZSByZXN1bHQgaW50byBCb3ggRC4gQWxsb3dzIHJlY292ZXJpZXMgb2YgdGhlIHdhbGxldCBwYXNzd29yZC5cbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZT86IHN0cmluZztcbiAgLy8gVGhlIHdhbGxldCBwYXNzd29yZFxuICAvLyBJZiBib3RoIHRoZSBwYXNzcGhyYXNlIGFuZCBwYXNzY29kZUVuY3J5cHRpb25Db2RlIGFyZSBwYXNzZWQsIHRoZW4gdGhpcyBjb2RlIGVuY3J5cHRzIHRoZSBwYXNzcGhyYXNlIHdpdGggdGhlXG4gIC8vIHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUgYW5kIHB1dHMgdGhlIHJlc3VsdCBpbnRvIEJveCBELiBBbGxvd3MgcmVjb3ZlcmllcyBvZiB0aGUgd2FsbGV0IHBhc3N3b3JkLlxuICBwYXNzcGhyYXNlPzogc3RyaW5nO1xuICAvLyBUaGUgdXNlciBrZXljaGFpbiBhcyBpdCBpcyByZXR1cm5lZCBmcm9tIHRoZSBCaXRHbyBBUEkgdXBvbiBjcmVhdGlvblxuICB1c2VyS2V5Y2hhaW46IEtleWNoYWluO1xuICAvLyBUaGUga2V5IGlkIG9mIHRoZSB1c2VyIGtleSwgb25seSB1c2VkIGZvciBjb2xkIGtleXNcbiAgdXNlck1hc3RlcktleT86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFFyRGF0YUVudHJ5IHtcbiAgZGF0YTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBwdWJsaWNNYXN0ZXJLZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXJEYXRhIHtcbiAgYmFja3VwPzogUXJEYXRhRW50cnk7XG4gIGJpdGdvPzogUXJEYXRhRW50cnk7XG4gIHBhc3Njb2RlPzogUXJEYXRhRW50cnk7XG4gIHVzZXI6IFFyRGF0YUVudHJ5O1xufVxuXG5mdW5jdGlvbiBnZXRQdWJGcm9tS2V5KGtleTogS2V5Y2hhaW4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKGtleS50eXBlKSB7XG4gICAgY2FzZSAnYmxzZGtnJzpcbiAgICAgIHJldHVybiBrZXkuY29tbW9uUHViO1xuICAgIGNhc2UgJ3Rzcyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vbktleWNoYWluO1xuICAgIGNhc2UgJ2luZGVwZW5kZW50JzpcbiAgICAgIHJldHVybiBrZXkucHViO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlclFyRGF0YSh1c2VyS2V5Y2hhaW46IEtleWNoYWluLCB1c2VyTWFzdGVyS2V5Pzogc3RyaW5nKTogUXJEYXRhRW50cnkge1xuICBpZiAodXNlcktleWNoYWluLmVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogdXNlcktleWNoYWluLmVuY3J5cHRlZFBydixcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcHViID0gZ2V0UHViRnJvbUtleSh1c2VyS2V5Y2hhaW4pO1xuICBhc3NlcnQocHViKTtcblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQTogUHJvdmlkZWQgVXNlciBLZXknLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogcHViLFxuICAgIHB1YmxpY01hc3RlcktleTogdXNlck1hc3RlcktleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCYWNrdXBRckRhdGEoXG4gIGNvaW46IFJlYWRvbmx5PEJhc2VDb2luPixcbiAgYmFja3VwS2V5Y2hhaW46IEtleWNoYWluLFxuICB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXIsXG4gICAgYmFja3VwTWFzdGVyS2V5LFxuICB9OiB7XG4gICAgYmFja3VwS2V5UHJvdmlkZXI/OiBzdHJpbmc7XG4gICAgYmFja3VwTWFzdGVyS2V5Pzogc3RyaW5nO1xuICB9ID0ge31cbik6IFFyRGF0YUVudHJ5IHtcbiAgY29uc3QgdGl0bGUgPSAnQjogQmFja3VwIEtleSc7XG4gIGlmIChiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGUsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBiYWNrdXAgcHJpdmF0ZSBrZXksIGVuY3J5cHRlZCB3aXRoIHlvdXIgd2FsbGV0IHBhc3N3b3JkLicsXG4gICAgICBkYXRhOiBiYWNrdXBLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChiYWNrdXBLZXlQcm92aWRlciA9PT0gJ0JpdEdvIFRydXN0JyAmJiBiYWNrdXBLZXljaGFpbi50eXBlID09PSAndHNzJykge1xuICAgIGNvbnN0IGtleVNoYXJlcyA9IGJhY2t1cEtleWNoYWluLmtleVNoYXJlcz8uZmlsdGVyKChrZXlTaGFyZSkgPT4ga2V5U2hhcmUudG8gPT09ICdiYWNrdXAnKTtcbiAgICBhc3NlcnQoa2V5U2hhcmVzPy5sZW5ndGggPT09IDIpO1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogJ0I6IEJhY2t1cCBLZXkgU2hhcmVzJyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhlc2UgYXJlIHRoZSBrZXkgc2hhcmVzIGZvciAke2JhY2t1cEtleVByb3ZpZGVyfS4gSWYgQml0R28gSW5jLiBnb2VzIG91dCBvZiBidXNpbmVzcyxcXHJcXG5gICtcbiAgICAgICAgYGNvbnRhY3QgJHtiYWNrdXBLZXlQcm92aWRlcn0gYW5kIHRoZXkgd2lsbCBoZWxwIHlvdSByZWNvdmVyIHlvdXIgZnVuZHMuYCxcbiAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGtleVNoYXJlcyksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHB1YiA9IGdldFB1YkZyb21LZXkoYmFja3VwS2V5Y2hhaW4pO1xuICBhc3NlcnQocHViKTtcblxuICBpZiAoYmFja3VwS2V5UHJvdmlkZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBgVGhpcyBpcyB0aGUgcHVibGljIGtleSBoZWxkIGF0ICR7YmFja3VwS2V5UHJvdmlkZXJ9LCBhbiAke2NvaW4ubmFtZX0gcmVjb3Zlcnkgc2VydmljZS4gYCArXG4gICAgICAgIGBJZiB5b3UgbG9zZVxcclxcbnlvdXIga2V5LCAke2JhY2t1cEtleVByb3ZpZGVyfSB3aWxsIGJlIGFibGUgdG8gc2lnbiB0cmFuc2FjdGlvbnMgdG8gcmVjb3ZlciBmdW5kcy5gLFxuICAgICAgZGF0YTogcHViLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQjogUHJvdmlkZWQgQmFja3VwIEtleScsXG4gICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHRoZSBwdWJsaWMga2V5IHlvdSBwcm92aWRlZCBmb3IgeW91ciB3YWxsZXQuJyxcbiAgICBkYXRhOiBwdWIsXG4gICAgcHVibGljTWFzdGVyS2V5OiBiYWNrdXBNYXN0ZXJLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQml0R29RckRhdGEoYml0Z29LZXljaGFpbjogS2V5Y2hhaW4pOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IGJpdGdvRGF0YSA9IGdldFB1YkZyb21LZXkoYml0Z29LZXljaGFpbik7XG4gIGFzc2VydChiaXRnb0RhdGEpO1xuXG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdDOiBCaXRHbyBQdWJsaWMgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjpcbiAgICAgICdUaGlzIGlzIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUga2V5IHRoYXQgQml0R28gd2lsbCB1c2UgdG8gJyArICdjby1zaWduIHRyYW5zYWN0aW9uc1xcclxcbndpdGggeW91IG9uIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogYml0Z29EYXRhLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVRckRhdGEoe1xuICBiYWNrdXBLZXljaGFpbixcbiAgYmFja3VwS2V5UHJvdmlkZXIsXG4gIGJhY2t1cE1hc3RlcktleSxcbiAgYml0Z29LZXljaGFpbixcbiAgY29pbixcbiAgcGFzc2NvZGVFbmNyeXB0aW9uQ29kZSxcbiAgcGFzc3BocmFzZSxcbiAgdXNlcktleWNoYWluLFxuICB1c2VyTWFzdGVyS2V5LFxufTogR2VuZXJhdGVRckRhdGFQYXJhbXMpOiBRckRhdGEge1xuICBjb25zdCBxckRhdGE6IFFyRGF0YSA9IHtcbiAgICB1c2VyOiBnZW5lcmF0ZVVzZXJRckRhdGEodXNlcktleWNoYWluLCB1c2VyTWFzdGVyS2V5KSxcbiAgICBiYWNrdXA6IGdlbmVyYXRlQmFja3VwUXJEYXRhKGNvaW4sIGJhY2t1cEtleWNoYWluLCB7XG4gICAgICBiYWNrdXBLZXlQcm92aWRlcixcbiAgICAgIGJhY2t1cE1hc3RlcktleSxcbiAgICB9KSxcbiAgICBiaXRnbzogZ2VuZXJhdGVCaXRHb1FyRGF0YShiaXRnb0tleWNoYWluKSxcbiAgfTtcblxuICBpZiAocGFzc3BocmFzZSAmJiBwYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgY29uc3QgZW5jcnlwdGVkV2FsbGV0UGFzc2NvZGUgPSBlbmNyeXB0KHBhc3Njb2RlRW5jcnlwdGlvbkNvZGUsIHBhc3NwaHJhc2UpO1xuXG4gICAgcXJEYXRhLnBhc3Njb2RlID0ge1xuICAgICAgdGl0bGU6ICdEOiBFbmNyeXB0ZWQgd2FsbGV0IFBhc3N3b3JkJyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgd2FsbGV0IHBhc3N3b3JkLCBlbmNyeXB0ZWQgY2xpZW50LXNpZGUgd2l0aCBhIGtleSBoZWxkIGJ5IEJpdEdvLicsXG4gICAgICBkYXRhOiBlbmNyeXB0ZWRXYWxsZXRQYXNzY29kZSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cbiJdfQ==
186
+ async function generateLightningQrData(params) {
187
+ const qrData = buildLightningQrData(params);
188
+ if (params.passphrase && params.passcodeEncryptionCode) {
189
+ qrData.passcode = await generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode);
190
+ }
191
+ return qrData;
192
+ }
193
+ function selectRootPrivateKey(keychain, slot, role) {
194
+ // Prefer the compact MPCv2 reduced share; fall back to encryptedPrv (e.g. multisig roots).
195
+ const data = keychain.reducedEncryptedPrv ?? keychain.encryptedPrv;
196
+ assert.ok(data, `Safe ${role} root ${slot} is missing encrypted private key material`);
197
+ return data;
198
+ }
199
+ function selectRootPublicKey(keychain, slot) {
200
+ const pub = getPubFromKey(keychain);
201
+ assert.ok(pub, `Safe BitGo root ${slot} is missing a public key`);
202
+ return pub;
203
+ }
204
+ /**
205
+ * Serializes one box's four roots into a single JSON object keyed by rootKeyType, e.g.
206
+ * `{"secp256k1Multisig":"<encPrv>","ecdsaMpc":"<reducedEncPrv>",...}`. This keeps the safe
207
+ * keycard on the existing 4-box layout — one box (= one QR/data block) per role — with the
208
+ * four roots packed into each box's data. `splitKeys` fragments the box if it exceeds the QR
209
+ * threshold, exactly as for a normal wallet keycard. Reversed by {@link parseSafeKeycardBox}.
210
+ */
211
+ function buildSafeBoxData(roots, select) {
212
+ const box = {};
213
+ for (const slot of types_1.SAFE_ROOT_ORDER) {
214
+ const root = roots[slot];
215
+ assert.ok(root, `Safe is missing the ${slot} root`);
216
+ box[slot] = select(root, slot);
217
+ }
218
+ return JSON.stringify(box);
219
+ }
220
+ /**
221
+ * Builds safe keycard QR data in the existing wallet {@link QrData} shape: boxes A (user),
222
+ * B (backup), C (BitGo), D (passcode). Each of A/B/C carries a JSON object of the four roots,
223
+ * so the safe renders and parses through the same {@link drawKeycard} path as a wallet.
224
+ */
225
+ async function generateSafeQrData(params) {
226
+ const { roots } = params;
227
+ const qrData = {
228
+ user: {
229
+ title: 'A: User Key',
230
+ description: 'Your 4 root private keys, encrypted with your safe password.',
231
+ data: buildSafeBoxData(roots, (root, slot) => selectRootPrivateKey(root.userKeychain, slot, 'user')),
232
+ },
233
+ backup: {
234
+ title: 'B: Backup Key',
235
+ description: 'Your 4 root backup keys, encrypted with your safe password.',
236
+ data: buildSafeBoxData(roots, (root, slot) => selectRootPrivateKey(root.backupKeychain, slot, 'backup')),
237
+ },
238
+ bitgo: {
239
+ title: 'C: BitGo Key',
240
+ description: 'The public parts of the 4 root keys held by BitGo.',
241
+ data: buildSafeBoxData(roots, (root, slot) => selectRootPublicKey(root.bitgoKeychain, slot)),
242
+ },
243
+ };
244
+ if (params.passphrase && params.passcodeEncryptionCode) {
245
+ qrData.passcode = await generatePasscodeQrData(params.passphrase, params.passcodeEncryptionCode, 'safe');
246
+ }
247
+ return qrData;
248
+ }
249
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJhdGVRckRhdGEuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuZXJhdGVRckRhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1TUEsd0NBUUM7QUFFRCwwREFRQztBQXdDRCxnREF5QkM7QUF6UkQsbURBQW1HO0FBQ25HLGlEQUE4QztBQUM5QywrQ0FBaUM7QUFDakMsbUNBV2lCO0FBRWpCLFNBQVMsYUFBYSxDQUFDLEdBQWE7SUFDbEMsUUFBUSxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakIsS0FBSyxRQUFRO1lBQ1gsT0FBTyxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3ZCLEtBQUssS0FBSztZQUNSLE9BQU8sR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUM1QixLQUFLLGFBQWE7WUFDaEIsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxrQkFBa0IsQ0FBQyxZQUFzQixFQUFFLGFBQXNCO0lBQ3hFLElBQUksWUFBWSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDckMsT0FBTztZQUNMLEtBQUssRUFBRSxhQUFhO1lBQ3BCLFdBQVcsRUFBRSxnRUFBZ0U7WUFDN0UsSUFBSSxFQUFFLFlBQVksQ0FBQyxtQkFBbUI7U0FDdkMsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLFlBQVksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM5QixPQUFPO1lBQ0wsS0FBSyxFQUFFLGFBQWE7WUFDcEIsV0FBVyxFQUFFLGdFQUFnRTtZQUM3RSxJQUFJLEVBQUUsWUFBWSxDQUFDLFlBQVk7U0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEdBQUcsR0FBRyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDeEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUVmLE9BQU87UUFDTCxLQUFLLEVB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dEIsV0FBVyxFQUFFLDZEQUE2RDtZQUMxRSxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDekc7UUFDRCxLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUUsY0FBYztZQUNyQixXQUFXLEVBQUUsb0RBQW9EO1lBQ2pFLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQzdGO0tBQ0YsQ0FBQztJQUVGLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN2RCxNQUFNLENBQUMsUUFBUSxHQUFHLE1BQU0sc0JBQXNCLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsc0JBQXNCLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDM0csQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgSElHSF9FTlRST1BZX0VOQ1JZUFRJT05fVkVSU0lPTiwgS2V5Y2hhaW4sIEtleWNoYWluc1RyaXBsZXQgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBlbmNyeXB0IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWFwaSc7XG5pbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCB7XG4gIEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zLFxuICBHZW5lcmF0ZVFyRGF0YVBhcmFtcyxcbiAgR2VuZXJhdGVTYWZlUXJEYXRhUGFyYW1zLFxuICBLZXljYXJkRW50aXR5LFxuICBNYXN0ZXJQdWJsaWNLZXlRckRhdGFFbnRyeSxcbiAgUXJEYXRhLFxuICBRckRhdGFFbnRyeSxcbiAgU2FmZUtleWNhcmRSb290cyxcbiAgU2FmZVJvb3RLZXlUeXBlLFxuICBTQUZFX1JPT1RfT1JERVIsXG59IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBnZXRQdWJGcm9tS2V5KGtleTogS2V5Y2hhaW4pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzd2l0Y2ggKGtleS50eXBlKSB7XG4gICAgY2FzZSAnYmxzZGtnJzpcbiAgICAgIHJldHVybiBrZXkuY29tbW9uUHViO1xuICAgIGNhc2UgJ3Rzcyc6XG4gICAgICByZXR1cm4ga2V5LmNvbW1vbktleWNoYWluO1xuICAgIGNhc2UgJ2luZGVwZW5kZW50JzpcbiAgICAgIHJldHVybiBrZXkucHViO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlVXNlclFyRGF0YSh1c2VyS2V5Y2hhaW46IEtleWNoYWluLCB1c2VyTWFzdGVyS2V5Pzogc3RyaW5nKTogUXJEYXRhRW50cnkge1xuICBpZiAodXNlcktleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IHVzZXJLZXljaGFpbi5yZWR1Y2VkRW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cbiAgaWYgKHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdBOiBVc2VyIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgeW91ciBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IHVzZXJLZXljaGFpbi5lbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHB1YiA9IGdldFB1YkZyb21LZXkodXNlcktleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKHB1Yik7XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0E6IFByb3ZpZGVkIFVzZXIgS2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgeW91IHByb3ZpZGVkIGZvciB5b3VyIHdhbGxldC4nLFxuICAgIGRhdGE6IHB1YixcbiAgICBwdWJsaWNNYXN0ZXJLZXk6IHVzZXJNYXN0ZXJLZXksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlQmFja3VwUXJEYXRhKFxuICBjb2luOiBSZWFkb25seTxCYXNlQ29pbj4sXG4gIGJhY2t1cEtleWNoYWluOiBLZXljaGFpbixcbiAge1xuICAgIGJhY2t1cEtleVByb3ZpZGVyLFxuICAgIGJhY2t1cE1hc3RlcktleSxcbiAgfToge1xuICAgIGJhY2t1cEtleVByb3ZpZGVyPzogc3RyaW5nO1xuICAgIGJhY2t1cE1hc3RlcktleT86IHN0cmluZztcbiAgfSA9IHt9XG4pOiBRckRhdGFFbnRyeSB7XG4gIGNvbnN0IHRpdGxlID0gJ0I6IEJhY2t1cCBLZXknO1xuICBpZiAoYmFja3VwS2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydikge1xuICAgIHJldHVybiB7XG4gICAgICB0aXRsZSxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB5b3VyIGJhY2t1cCBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IGJhY2t1cEtleWNoYWluLnJlZHVjZWRFbmNyeXB0ZWRQcnYsXG4gICAgfTtcbiAgfVxuICBpZiAoYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlLFxuICAgICAgZGVzY3JpcHRpb246ICdUaGlzIGlzIHlvdXIgYmFja3VwIHByaXZhdGUga2V5LCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHdhbGxldCBwYXNzd29yZC4nLFxuICAgICAgZGF0YTogYmFja3VwS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH07XG4gIH1cblxuICBpZiAoYmFja3VwS2V5UHJvdmlkZXIgPT09ICdCaXRHbyBUcnVzdCcgJiYgYmFja3VwS2V5Y2hhaW4udHlwZSA9PT0gJ3RzcycpIHtcbiAgICBjb25zdCBrZXlTaGFyZXMgPSBiYWNrdXBLZXljaGFpbi5rZXlTaGFyZXM/LmZpbHRlcigoa2V5U2hhcmUpID0+IGtleVNoYXJlLnRvID09PSAnYmFja3VwJyk7XG4gICAgYXNzZXJ0Lm9rKGtleVNoYXJlcz8ubGVuZ3RoID09PSAyKTtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6ICdCOiBCYWNrdXAgS2V5IFNoYXJlcycsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgYFRoZXNlIGFyZSB0aGUga2V5IHNoYXJlcyBmb3IgJHtiYWNrdXBLZXlQcm92aWRlcn0uIElmIEJpdEdvIEluYy4gZ29lcyBvdXQgb2YgYnVzaW5lc3MsXFxyXFxuYCArXG4gICAgICAgIGBjb250YWN0ICR7YmFja3VwS2V5UHJvdmlkZXJ9IGFuZCB0aGV5IHdpbGwgaGVscCB5b3UgcmVjb3ZlciB5b3VyIGZ1bmRzLmAsXG4gICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShrZXlTaGFyZXMpLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBwdWIgPSBnZXRQdWJGcm9tS2V5KGJhY2t1cEtleWNoYWluKTtcbiAgYXNzZXJ0Lm9rKHB1Yik7XG5cbiAgaWYgKGJhY2t1cEtleVByb3ZpZGVyKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgYFRoaXMgaXMgdGhlIHB1YmxpYyBrZXkgaGVsZCBhdCAke2JhY2t1cEtleVByb3ZpZGVyfSwgYW4gJHtjb2luLm5hbWV9IHJlY292ZXJ5IHNlcnZpY2UuIGAgK1xuICAgICAgICBgSWYgeW91IGxvc2VcXHJcXG55b3VyIGtleSwgJHtiYWNrdXBLZXlQcm92aWRlcn0gd2lsbCBiZSBhYmxlIHRvIHNpZ24gdHJhbnNhY3Rpb25zIHRvIHJlY292ZXIgZnVuZHMuYCxcbiAgICAgIGRhdGE6IHB1YixcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0aXRsZTogJ0I6IFByb3ZpZGVkIEJhY2t1cCBLZXknLFxuICAgIGRlc2NyaXB0aW9uOiAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB5b3UgcHJvdmlkZWQgZm9yIHlvdXIgd2FsbGV0LicsXG4gICAgZGF0YTogcHViLFxuICAgIHB1YmxpY01hc3RlcktleTogYmFja3VwTWFzdGVyS2V5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUJpdEdvUXJEYXRhKGJpdGdvS2V5Y2hhaW46IEtleWNoYWluKTogUXJEYXRhRW50cnkge1xuICBjb25zdCBiaXRnb0RhdGEgPSBnZXRQdWJGcm9tS2V5KGJpdGdvS2V5Y2hhaW4pO1xuICBhc3NlcnQub2soYml0Z29EYXRhKTtcblxuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnQzogQml0R28gS2V5JyxcbiAgICBkZXNjcmlwdGlvbjogJ1RoaXMgaXMgdGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBrZXkgaGVsZCBieSBCaXRHby4nLFxuICAgIGRhdGE6IGJpdGdvRGF0YSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVVc2VyTWFzdGVyUHVibGljS2V5UVJEYXRhKHB1YmxpY0tleTogc3RyaW5nKTogTWFzdGVyUHVibGljS2V5UXJEYXRhRW50cnkge1xuICByZXR1cm4ge1xuICAgIHRpdGxlOiAnRTogTWFzdGVyIFVzZXIgUHVibGljIEtleScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnVGhpcyBpcyB0aGUgcHVibGljIGtleSB1c2VkIHRvIGRlcml2ZSB0aGUgdXNlciBrZXkgZm9yIHRoZSB3YWxsZXQuIFRoaXMgaXMgbm90IHN0b3JlZCBieSBCaXRHbywgYW5kIG1heSBiZSByZXF1aXJlZCBmb3IgdXNlIGluIHJlY292ZXJ5IHNjZW5hcmlvcy4nLFxuICAgIGRhdGE6IHB1YmxpY0tleSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVQYXNzY29kZVFyRGF0YShcbiAgcGFzc3BocmFzZTogc3RyaW5nLFxuICBwYXNzY29kZUVuY3J5cHRpb25Db2RlOiBzdHJpbmcsXG4gIGVudGl0eU5vdW46IEtleWNhcmRFbnRpdHkgPSAnd2FsbGV0J1xuKTogUHJvbWlzZTxRckRhdGFFbnRyeT4ge1xuICAvLyBCb3ggRCB1c2VzIHRoZSBmaXhlZCB2ZXJzaW9uIGZvciBpdHMgZ2VuZXJhdGVkIGVuY3J5cHRpb24ga2V5LlxuICBjb25zdCBlbmNyeXB0ZWRQYXNzY29kZSA9IGF3YWl0IGVuY3J5cHQocGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgcGFzc3BocmFzZSwge1xuICAgIGVuY3J5cHRpb25WZXJzaW9uOiBISUdIX0VOVFJPUFlfRU5DUllQVElPTl9WRVJTSU9OLFxuICB9KTtcbiAgY29uc3QgdGl0bGVOb3VuID0gZW50aXR5Tm91biA9PT0gJ3NhZmUnID8gJ1NhZmUnIDogJ1dhbGxldCc7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6IGBEOiBFbmNyeXB0ZWQgJHt0aXRsZU5vdW59IFBhc3N3b3JkYCxcbiAgICBkZXNjcmlwdGlvbjogYFRoaXMgaXMgdGhlICR7ZW50aXR5Tm91bn0gcGFzc3dvcmQsIGVuY3J5cHRlZCBjbGllbnQtc2lkZSB3aXRoIGEga2V5IGhlbGQgYnkgQml0R28uYCxcbiAgICBkYXRhOiBlbmNyeXB0ZWRQYXNzY29kZSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVCYWNrdXBNYXN0ZXJQdWJsaWNLZXlRUkRhdGEocHVibGljS2V5OiBzdHJpbmcpOiBNYXN0ZXJQdWJsaWNLZXlRckRhdGFFbnRyeSB7XG4gIHJldHVybiB7XG4gICAgdGl0bGU6ICdGOiBNYXN0ZXIgQmFja3VwIFB1YmxpYyBLZXknLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ1RoaXMgaXMgdGhlIHB1YmxpYyBrZXkgdXNlZCB0byBkZXJpdmUgdGhlIGJhY2t1cCBrZXkgZm9yIHRoZSB3YWxsZXQuIFRoaXMgaXMgbm90IHN0b3JlZCBieSBCaXRHbywgYW5kIG1heSBiZSByZXF1aXJlZCBmb3IgdXNlIGluIHJlY292ZXJ5IHNjZW5hcmlvcy4nLFxuICAgIGRhdGE6IHB1YmxpY0tleSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRXYWxsZXRRckRhdGEoe1xuICBiYWNrdXBLZXljaGFpbixcbiAgYmFja3VwS2V5UHJvdmlkZXIsXG4gIGJhY2t1cE1hc3RlcktleSxcbiAgYml0Z29LZXljaGFpbixcbiAgY29pbixcbiAgdXNlcktleWNoYWluLFxuICB1c2VyTWFzdGVyS2V5LFxuICB1c2VyTWFzdGVyUHVibGljS2V5LFxuICBiYWNrdXBNYXN0ZXJQdWJsaWNLZXksXG59OiBHZW5lcmF0ZVFyRGF0YVBhcmFtcyk6IFFyRGF0YSB7XG4gIHJldHVybiB7XG4gICAgdXNlcjogZ2VuZXJhdGVVc2VyUXJEYXRhKHVzZXJLZXljaGFpbiwgdXNlck1hc3RlcktleSksXG4gICAgdXNlck1hc3RlclB1YmxpY0tleTogdXNlck1hc3RlclB1YmxpY0tleSA/IGdlbmVyYXRlVXNlck1hc3RlclB1YmxpY0tleVFSRGF0YSh1c2VyTWFzdGVyUHVibGljS2V5KSA6IHVuZGVmaW5lZCxcbiAgICBiYWNrdXA6IGdlbmVyYXRlQmFja3VwUXJEYXRhKGNvaW4sIGJhY2t1cEtleWNoYWluLCB7XG4gICAgICBiYWNrdXBLZXlQcm92aWRlcixcbiAgICAgIGJhY2t1cE1hc3RlcktleSxcbiAgICB9KSxcbiAgICBiYWNrdXBNYXN0ZXJQdWJsaWNLZXk6IGJhY2t1cE1hc3RlclB1YmxpY0tleVxuICAgICAgPyBnZW5lcmF0ZUJhY2t1cE1hc3RlclB1YmxpY0tleVFSRGF0YShiYWNrdXBNYXN0ZXJQdWJsaWNLZXkpXG4gICAgICA6IHVuZGVmaW5lZCxcbiAgICBiaXRnbzogZ2VuZXJhdGVCaXRHb1FyRGF0YShiaXRnb0tleWNoYWluKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gYnVpbGRMaWdodG5pbmdRckRhdGEoeyB1c2VyQXV0aEtleWNoYWluIH06IEdlbmVyYXRlTGlnaHRuaW5nUXJEYXRhUGFyYW1zKTogUXJEYXRhIHtcbiAgYXNzZXJ0Lm9rKHVzZXJBdXRoS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LCAndXNlckF1dGhLZXljaGFpbiBtdXN0IGhhdmUgYW4gZW5jcnlwdGVkUHJ2Jyk7XG5cbiAgcmV0dXJuIHtcbiAgICB1c2VyOiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgQXV0aCBLZXknLFxuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICdUaGlzIGlzIHlvdXIgdXNlciBhdXRoZW50aWNhdGlvbiBwcml2YXRlIGtleSwgZW5jcnlwdGVkIHdpdGggeW91ciB3YWxsZXQgcGFzc3dvcmQuXFxyXFxuSXQgaXMgdXNlZCB0byBhdXRoZW50aWNhdGUgcGF5bWVudCBhbmQgd2FsbGV0IG9wZXJhdGlvbnMuJyxcbiAgICAgIGRhdGE6IHVzZXJBdXRoS2V5Y2hhaW4uZW5jcnlwdGVkUHJ2LFxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZVFyRGF0YShwYXJhbXM6IEdlbmVyYXRlUXJEYXRhUGFyYW1zKTogUHJvbWlzZTxRckRhdGE+IHtcbiAgY29uc3QgcXJEYXRhID0gYnVpbGRXYWxsZXRRckRhdGEocGFyYW1zKTtcblxuICBpZiAocGFyYW1zLnBhc3NwaHJhc2UgJiYgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBxckRhdGEucGFzc2NvZGUgPSBhd2FpdCBnZW5lcmF0ZVBhc3Njb2RlUXJEYXRhKHBhcmFtcy5wYXNzcGhyYXNlLCBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSk7XG4gIH1cblxuICByZXR1cm4gcXJEYXRhO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVMaWdodG5pbmdRckRhdGEocGFyYW1zOiBHZW5lcmF0ZUxpZ2h0bmluZ1FyRGF0YVBhcmFtcyk6IFByb21pc2U8UXJEYXRhPiB7XG4gIGNvbnN0IHFyRGF0YSA9IGJ1aWxkTGlnaHRuaW5nUXJEYXRhKHBhcmFtcyk7XG5cbiAgaWYgKHBhcmFtcy5wYXNzcGhyYXNlICYmIHBhcmFtcy5wYXNzY29kZUVuY3J5cHRpb25Db2RlKSB7XG4gICAgcXJEYXRhLnBhc3Njb2RlID0gYXdhaXQgZ2VuZXJhdGVQYXNzY29kZVFyRGF0YShwYXJhbXMucGFzc3BocmFzZSwgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpO1xuICB9XG5cbiAgcmV0dXJuIHFyRGF0YTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0Um9vdFByaXZhdGVLZXkoa2V5Y2hhaW46IEtleWNoYWluLCBzbG90OiBTYWZlUm9vdEtleVR5cGUsIHJvbGU6ICd1c2VyJyB8ICdiYWNrdXAnKTogc3RyaW5nIHtcbiAgLy8gUHJlZmVyIHRoZSBjb21wYWN0IE1QQ3YyIHJlZHVjZWQgc2hhcmU7IGZhbGwgYmFjayB0byBlbmNyeXB0ZWRQcnYgKGUuZy4gbXVsdGlzaWcgcm9vdHMpLlxuICBjb25zdCBkYXRhID0ga2V5Y2hhaW4ucmVkdWNlZEVuY3J5cHRlZFBydiA/PyBrZXljaGFpbi5lbmNyeXB0ZWRQcnY7XG4gIGFzc2VydC5vayhkYXRhLCBgU2FmZSAke3JvbGV9IHJvb3QgJHtzbG90fSBpcyBtaXNzaW5nIGVuY3J5cHRlZCBwcml2YXRlIGtleSBtYXRlcmlhbGApO1xuICByZXR1cm4gZGF0YTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0Um9vdFB1YmxpY0tleShrZXljaGFpbjogS2V5Y2hhaW4sIHNsb3Q6IFNhZmVSb290S2V5VHlwZSk6IHN0cmluZyB7XG4gIGNvbnN0IHB1YiA9IGdldFB1YkZyb21LZXkoa2V5Y2hhaW4pO1xuICBhc3NlcnQub2socHViLCBgU2FmZSBCaXRHbyByb290ICR7c2xvdH0gaXMgbWlzc2luZyBhIHB1YmxpYyBrZXlgKTtcbiAgcmV0dXJuIHB1Yjtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIG9uZSBib3gncyBmb3VyIHJvb3RzIGludG8gYSBzaW5nbGUgSlNPTiBvYmplY3Qga2V5ZWQgYnkgcm9vdEtleVR5cGUsIGUuZy5cbiAqIGB7XCJzZWNwMjU2azFNdWx0aXNpZ1wiOlwiPGVuY1Bydj5cIixcImVjZHNhTXBjXCI6XCI8cmVkdWNlZEVuY1Bydj5cIiwuLi59YC4gVGhpcyBrZWVwcyB0aGUgc2FmZVxuICoga2V5Y2FyZCBvbiB0aGUgZXhpc3RpbmcgNC1ib3ggbGF5b3V0IOKAlCBvbmUgYm94ICg9IG9uZSBRUi9kYXRhIGJsb2NrKSBwZXIgcm9sZSDigJQgd2l0aCB0aGVcbiAqIGZvdXIgcm9vdHMgcGFja2VkIGludG8gZWFjaCBib3gncyBkYXRhLiBgc3BsaXRLZXlzYCBmcmFnbWVudHMgdGhlIGJveCBpZiBpdCBleGNlZWRzIHRoZSBRUlxuICogdGhyZXNob2xkLCBleGFjdGx5IGFzIGZvciBhIG5vcm1hbCB3YWxsZXQga2V5Y2FyZC4gUmV2ZXJzZWQgYnkge0BsaW5rIHBhcnNlU2FmZUtleWNhcmRCb3h9LlxuICovXG5mdW5jdGlvbiBidWlsZFNhZmVCb3hEYXRhKFxuICByb290czogUmVjb3JkPFNhZmVSb290S2V5VHlwZSwgS2V5Y2hhaW5zVHJpcGxldD4sXG4gIHNlbGVjdDogKHJvb3Q6IEtleWNoYWluc1RyaXBsZXQsIHNsb3Q6IFNhZmVSb290S2V5VHlwZSkgPT4gc3RyaW5nXG4pOiBzdHJpbmcge1xuICBjb25zdCBib3g6IFNhZmVLZXljYXJkUm9vdHMgPSB7fSBhcyBTYWZlS2V5Y2FyZFJvb3RzO1xuICBmb3IgKGNvbnN0IHNsb3Qgb2YgU0FGRV9ST09UX09SREVSKSB7XG4gICAgY29uc3Qgcm9vdCA9IHJvb3RzW3Nsb3RdO1xuICAgIGFzc2VydC5vayhyb290LCBgU2FmZSBpcyBtaXNzaW5nIHRoZSAke3Nsb3R9IHJvb3RgKTtcbiAgICBib3hbc2xvdF0gPSBzZWxlY3Qocm9vdCwgc2xvdCk7XG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJveCk7XG59XG5cbi8qKlxuICogQnVpbGRzIHNhZmUga2V5Y2FyZCBRUiBkYXRhIGluIHRoZSBleGlzdGluZyB3YWxsZXQge0BsaW5rIFFyRGF0YX0gc2hhcGU6IGJveGVzIEEgKHVzZXIpLFxuICogQiAoYmFja3VwKSwgQyAoQml0R28pLCBEIChwYXNzY29kZSkuIEVhY2ggb2YgQS9CL0MgY2FycmllcyBhIEpTT04gb2JqZWN0IG9mIHRoZSBmb3VyIHJvb3RzLFxuICogc28gdGhlIHNhZmUgcmVuZGVycyBhbmQgcGFyc2VzIHRocm91Z2ggdGhlIHNhbWUge0BsaW5rIGRyYXdLZXljYXJkfSBwYXRoIGFzIGEgd2FsbGV0LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVTYWZlUXJEYXRhKHBhcmFtczogR2VuZXJhdGVTYWZlUXJEYXRhUGFyYW1zKTogUHJvbWlzZTxRckRhdGE+IHtcbiAgY29uc3QgeyByb290cyB9ID0gcGFyYW1zO1xuICBjb25zdCBxckRhdGE6IFFyRGF0YSA9IHtcbiAgICB1c2VyOiB7XG4gICAgICB0aXRsZTogJ0E6IFVzZXIgS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnWW91ciA0IHJvb3QgcHJpdmF0ZSBrZXlzLCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHNhZmUgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IGJ1aWxkU2FmZUJveERhdGEocm9vdHMsIChyb290LCBzbG90KSA9PiBzZWxlY3RSb290UHJpdmF0ZUtleShyb290LnVzZXJLZXljaGFpbiwgc2xvdCwgJ3VzZXInKSksXG4gICAgfSxcbiAgICBiYWNrdXA6IHtcbiAgICAgIHRpdGxlOiAnQjogQmFja3VwIEtleScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1lvdXIgNCByb290IGJhY2t1cCBrZXlzLCBlbmNyeXB0ZWQgd2l0aCB5b3VyIHNhZmUgcGFzc3dvcmQuJyxcbiAgICAgIGRhdGE6IGJ1aWxkU2FmZUJveERhdGEocm9vdHMsIChyb290LCBzbG90KSA9PiBzZWxlY3RSb290UHJpdmF0ZUtleShyb290LmJhY2t1cEtleWNoYWluLCBzbG90LCAnYmFja3VwJykpLFxuICAgIH0sXG4gICAgYml0Z286IHtcbiAgICAgIHRpdGxlOiAnQzogQml0R28gS2V5JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnVGhlIHB1YmxpYyBwYXJ0cyBvZiB0aGUgNCByb290IGtleXMgaGVsZCBieSBCaXRHby4nLFxuICAgICAgZGF0YTogYnVpbGRTYWZlQm94RGF0YShyb290cywgKHJvb3QsIHNsb3QpID0+IHNlbGVjdFJvb3RQdWJsaWNLZXkocm9vdC5iaXRnb0tleWNoYWluLCBzbG90KSksXG4gICAgfSxcbiAgfTtcblxuICBpZiAocGFyYW1zLnBhc3NwaHJhc2UgJiYgcGFyYW1zLnBhc3Njb2RlRW5jcnlwdGlvbkNvZGUpIHtcbiAgICBxckRhdGEucGFzc2NvZGUgPSBhd2FpdCBnZW5lcmF0ZVBhc3Njb2RlUXJEYXRhKHBhcmFtcy5wYXNzcGhyYXNlLCBwYXJhbXMucGFzc2NvZGVFbmNyeXB0aW9uQ29kZSwgJ3NhZmUnKTtcbiAgfVxuXG4gIHJldHVybiBxckRhdGE7XG59XG4iXX0=
@@ -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"}