@wallfree-dev/angular-core 0.0.59-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (623) hide show
  1. package/README.md +60 -0
  2. package/esm2022/lib/airgap-angular-core.module.mjs +63 -0
  3. package/esm2022/lib/base/base.component.mjs +38 -0
  4. package/esm2022/lib/base/base.facade.mjs +37 -0
  5. package/esm2022/lib/capacitor-plugins/definitions.mjs +15 -0
  6. package/esm2022/lib/capacitor-plugins/injection-tokens.mjs +11 -0
  7. package/esm2022/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.mjs +67 -0
  8. package/esm2022/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.mjs +247 -0
  9. package/esm2022/lib/components/account-item/account-item.component.mjs +30 -0
  10. package/esm2022/lib/components/account-selection/account-selection.component.mjs +61 -0
  11. package/esm2022/lib/components/components.module.mjs +97 -0
  12. package/esm2022/lib/components/currency-symbol/currency-symbol.component.mjs +45 -0
  13. package/esm2022/lib/components/currency-symbol/currency-symbol.facade.mjs +8 -0
  14. package/esm2022/lib/components/currency-symbol/currency-symbol.types.mjs +2 -0
  15. package/esm2022/lib/components/from-to/from-to.component.mjs +100 -0
  16. package/esm2022/lib/components/iac-qr/iac-qr.component.mjs +192 -0
  17. package/esm2022/lib/components/identicon/identicon.component.mjs +51 -0
  18. package/esm2022/lib/components/isolated-modules-badges/isolated-modules-badges.component.mjs +16 -0
  19. package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.component.mjs +43 -0
  20. package/esm2022/lib/components/isolated-modules-details/isolated-modules-details.facade.mjs +7 -0
  21. package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.component.mjs +50 -0
  22. package/esm2022/lib/components/isolated-modules-list/isolated-modules-list.facade.mjs +7 -0
  23. package/esm2022/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.mjs +12 -0
  24. package/esm2022/lib/components/network-badge/network-badge.component.mjs +19 -0
  25. package/esm2022/lib/components/qr/qr.component.mjs +36 -0
  26. package/esm2022/lib/components/qr-settings/qr-settings.component.mjs +30 -0
  27. package/esm2022/lib/components/titled-address/titled-address.component.mjs +31 -0
  28. package/esm2022/lib/components/titled-text/titled-text.component.mjs +28 -0
  29. package/esm2022/lib/config/app-config.mjs +3 -0
  30. package/esm2022/lib/pages/isolated-modules-list/isolated-modules-list.facade.mjs +7 -0
  31. package/esm2022/lib/pipes/amount-converter/amount-converter.pipe.mjs +82 -0
  32. package/esm2022/lib/pipes/fee-converter/fee-converter.pipe.mjs +36 -0
  33. package/esm2022/lib/pipes/pipes.module.mjs +19 -0
  34. package/esm2022/lib/pipes/wallet-filter/wallet-filter.pipe.mjs +36 -0
  35. package/esm2022/lib/protocol/adapter/protocol-v0-adapter.mjs +880 -0
  36. package/esm2022/lib/protocol/isolated/base-isolated.mjs +27 -0
  37. package/esm2022/lib/protocol/isolated/block-explorer-isolated.mjs +32 -0
  38. package/esm2022/lib/protocol/isolated/protocol-offline-isolated.mjs +37 -0
  39. package/esm2022/lib/protocol/isolated/protocol-online-isolated.mjs +52 -0
  40. package/esm2022/lib/protocol/isolated/v3-serializer-companion-isolated.mjs +35 -0
  41. package/esm2022/lib/services/address/address.service.mjs +78 -0
  42. package/esm2022/lib/services/clipboard/clipboard.service.mjs +48 -0
  43. package/esm2022/lib/services/deeplink/deeplink.service.mjs +73 -0
  44. package/esm2022/lib/services/environment/base-environment.service.mjs +6 -0
  45. package/esm2022/lib/services/filesystem/filesystem.service.mjs +291 -0
  46. package/esm2022/lib/services/iac/base.iac.service.mjs +155 -0
  47. package/esm2022/lib/services/iac/message-handler-single.mjs +48 -0
  48. package/esm2022/lib/services/iac/message-handler.mjs +22 -0
  49. package/esm2022/lib/services/iac/qr-generator.mjs +17 -0
  50. package/esm2022/lib/services/image/fetcher/image-direct.fetcher.mjs +16 -0
  51. package/esm2022/lib/services/image/fetcher/image-proxy.fetcher.mjs +45 -0
  52. package/esm2022/lib/services/image/image.service.mjs +39 -0
  53. package/esm2022/lib/services/key-pair/key-pair.service.mjs +57 -0
  54. package/esm2022/lib/services/language/language.service.mjs +47 -0
  55. package/esm2022/lib/services/modules/base-modules.service.mjs +157 -0
  56. package/esm2022/lib/services/modules/controller/base-modules.controller.mjs +2 -0
  57. package/esm2022/lib/services/modules/controller/integral/integral-modules.controller.mjs +91 -0
  58. package/esm2022/lib/services/modules/controller/isolated/isolated-modules.controller.mjs +190 -0
  59. package/esm2022/lib/services/modules/controller/modules.controller.mjs +85 -0
  60. package/esm2022/lib/services/permissions/permissions.service.mjs +140 -0
  61. package/esm2022/lib/services/protocol/defaults.mjs +55 -0
  62. package/esm2022/lib/services/protocol/protocol.service.mjs +230 -0
  63. package/esm2022/lib/services/protocol/store/base-protocol-store.service.mjs +63 -0
  64. package/esm2022/lib/services/protocol/store/main/main-protocol-store.service.mjs +91 -0
  65. package/esm2022/lib/services/protocol/store/sub/sub-protocol-store.service.mjs +174 -0
  66. package/esm2022/lib/services/qr/qr-generators/bc-ur-generator.mjs +127 -0
  67. package/esm2022/lib/services/qr/qr-generators/metamask-generator.mjs +117 -0
  68. package/esm2022/lib/services/qr/qr-generators/output-descriptor-generator.mjs +49 -0
  69. package/esm2022/lib/services/qr/qr-generators/serializer-v2-generator.mjs +30 -0
  70. package/esm2022/lib/services/qr/qr-generators/serializer-v3-generator.mjs +45 -0
  71. package/esm2022/lib/services/qr/qr-generators/xpub-generator.mjs +38 -0
  72. package/esm2022/lib/services/qr/qr-handler/serializer-v2-handler.mjs +114 -0
  73. package/esm2022/lib/services/qr/qr-handler/serializer-v3-handler.mjs +274 -0
  74. package/esm2022/lib/services/qr-scanner/qr-scanner.service.mjs +61 -0
  75. package/esm2022/lib/services/serializer/serializer.service.mjs +181 -0
  76. package/esm2022/lib/services/storage/base.storage.mjs +30 -0
  77. package/esm2022/lib/services/storage/storage.service.mjs +33 -0
  78. package/esm2022/lib/services/token/token.service.mjs +52 -0
  79. package/esm2022/lib/services/transaction/transaction.service.mjs +67 -0
  80. package/esm2022/lib/services/ui-event/ui-event.service.mjs +198 -0
  81. package/esm2022/lib/services/ui-event-elements/ui-event-elements.service.mjs +122 -0
  82. package/esm2022/lib/services/uri/uri.service.mjs +51 -0
  83. package/esm2022/lib/translation/AirGapTranslateLoader.mjs +26 -0
  84. package/esm2022/lib/types/Either.mjs +2 -0
  85. package/esm2022/lib/types/ExternalAliasResolver.mjs +2 -0
  86. package/esm2022/lib/types/RuntimeMode.mjs +6 -0
  87. package/esm2022/lib/types/SupportedLanguage.mjs +2 -0
  88. package/esm2022/lib/types/Token.mjs +2 -0
  89. package/esm2022/lib/types/isolated-modules/IsolatedModule.mjs +2 -0
  90. package/esm2022/lib/types/isolated-modules/IsolatedModuleManifest.mjs +2 -0
  91. package/esm2022/lib/types/isolated-modules/IsolatedModuleMetadata.mjs +2 -0
  92. package/esm2022/lib/types/ui/UIAction.mjs +6 -0
  93. package/esm2022/lib/types/ui/UIResource.mjs +8 -0
  94. package/esm2022/lib/utils/ExposedPromise.mjs +103 -0
  95. package/esm2022/lib/utils/airgap-transaction.mjs +23 -0
  96. package/esm2022/lib/utils/array.mjs +32 -0
  97. package/esm2022/lib/utils/modules/isolated/isolated-modules-metadata.mjs +10 -0
  98. package/esm2022/lib/utils/modules/load-protocol.mjs +19 -0
  99. package/esm2022/lib/utils/not-initialized.mjs +7 -0
  100. package/esm2022/lib/utils/protocol/delegation.mjs +33 -0
  101. package/esm2022/lib/utils/protocol/protocol-identifier.mjs +4 -0
  102. package/esm2022/lib/utils/protocol/protocol-network-identifier.mjs +18 -0
  103. package/esm2022/lib/utils/protocol/protocol-options.mjs +114 -0
  104. package/esm2022/lib/utils/protocol/protocol-v0-adapter.mjs +390 -0
  105. package/esm2022/lib/utils/utils.mjs +80 -0
  106. package/esm2022/lib/utils/worker.mjs +28 -0
  107. package/esm2022/public-api.mjs +102 -0
  108. package/esm2022/wallfree-dev-angular-core.mjs +5 -0
  109. package/fesm2022/wallfree-dev-angular-core.mjs +6933 -0
  110. package/fesm2022/wallfree-dev-angular-core.mjs.map +1 -0
  111. package/index.d.ts +6 -0
  112. package/lib/airgap-angular-core.module.d.ts +25 -0
  113. package/lib/airgap-angular-core.module.d.ts.map +1 -0
  114. package/lib/base/base.component.d.ts +18 -0
  115. package/lib/base/base.component.d.ts.map +1 -0
  116. package/lib/base/base.facade.d.ts +16 -0
  117. package/lib/base/base.facade.d.ts.map +1 -0
  118. package/lib/capacitor-plugins/definitions.d.ts +122 -0
  119. package/lib/capacitor-plugins/definitions.d.ts.map +1 -0
  120. package/lib/capacitor-plugins/injection-tokens.d.ts +18 -0
  121. package/lib/capacitor-plugins/injection-tokens.d.ts.map +1 -0
  122. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.d.ts +20 -0
  123. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin-wrapper.d.ts.map +1 -0
  124. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.d.ts +38 -0
  125. package/lib/capacitor-plugins/isolated-modules/isolated-modules.plugin.d.ts.map +1 -0
  126. package/lib/components/account-item/account-item.component.d.ts +15 -0
  127. package/lib/components/account-item/account-item.component.d.ts.map +1 -0
  128. package/lib/components/account-selection/account-selection.component.d.ts +23 -0
  129. package/lib/components/account-selection/account-selection.component.d.ts.map +1 -0
  130. package/lib/components/components.module.d.ts +28 -0
  131. package/lib/components/components.module.d.ts.map +1 -0
  132. package/lib/components/currency-symbol/currency-symbol.component.d.ts +20 -0
  133. package/lib/components/currency-symbol/currency-symbol.component.d.ts.map +1 -0
  134. package/lib/components/currency-symbol/currency-symbol.facade.d.ts +16 -0
  135. package/lib/components/currency-symbol/currency-symbol.facade.d.ts.map +1 -0
  136. package/lib/components/currency-symbol/currency-symbol.types.d.ts +35 -0
  137. package/lib/components/currency-symbol/currency-symbol.types.d.ts.map +1 -0
  138. package/lib/components/from-to/from-to.component.d.ts +33 -0
  139. package/lib/components/from-to/from-to.component.d.ts.map +1 -0
  140. package/lib/components/iac-qr/iac-qr.component.d.ts +45 -0
  141. package/lib/components/iac-qr/iac-qr.component.d.ts.map +1 -0
  142. package/lib/components/identicon/identicon.component.d.ts +14 -0
  143. package/lib/components/identicon/identicon.component.d.ts.map +1 -0
  144. package/lib/components/isolated-modules-badges/isolated-modules-badges.component.d.ts +8 -0
  145. package/lib/components/isolated-modules-badges/isolated-modules-badges.component.d.ts.map +1 -0
  146. package/lib/components/isolated-modules-details/isolated-modules-details.component.d.ts +17 -0
  147. package/lib/components/isolated-modules-details/isolated-modules-details.component.d.ts.map +1 -0
  148. package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts +17 -0
  149. package/lib/components/isolated-modules-details/isolated-modules-details.facade.d.ts.map +1 -0
  150. package/lib/components/isolated-modules-list/isolated-modules-list.component.d.ts +20 -0
  151. package/lib/components/isolated-modules-list/isolated-modules-list.component.d.ts.map +1 -0
  152. package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts +15 -0
  153. package/lib/components/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
  154. package/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.d.ts +6 -0
  155. package/lib/components/isolated-modules-onboarding/isolated-modules-onboarding.component.d.ts.map +1 -0
  156. package/lib/components/network-badge/network-badge.component.d.ts +9 -0
  157. package/lib/components/network-badge/network-badge.component.d.ts.map +1 -0
  158. package/lib/components/qr/qr.component.d.ts +16 -0
  159. package/lib/components/qr/qr.component.d.ts.map +1 -0
  160. package/lib/components/qr-settings/qr-settings.component.d.ts +12 -0
  161. package/lib/components/qr-settings/qr-settings.component.d.ts.map +1 -0
  162. package/lib/components/titled-address/titled-address.component.d.ts +13 -0
  163. package/lib/components/titled-address/titled-address.component.d.ts.map +1 -0
  164. package/lib/components/titled-text/titled-text.component.d.ts +11 -0
  165. package/lib/components/titled-text/titled-text.component.d.ts.map +1 -0
  166. package/lib/config/app-config.d.ts +15 -0
  167. package/lib/config/app-config.d.ts.map +1 -0
  168. package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts +16 -0
  169. package/lib/pages/isolated-modules-list/isolated-modules-list.facade.d.ts.map +1 -0
  170. package/lib/pipes/amount-converter/amount-converter.pipe.d.ts +29 -0
  171. package/lib/pipes/amount-converter/amount-converter.pipe.d.ts.map +1 -0
  172. package/lib/pipes/fee-converter/fee-converter.pipe.d.ts +20 -0
  173. package/lib/pipes/fee-converter/fee-converter.pipe.d.ts.map +1 -0
  174. package/lib/pipes/pipes.module.d.ts +10 -0
  175. package/lib/pipes/pipes.module.d.ts.map +1 -0
  176. package/lib/pipes/wallet-filter/wallet-filter.pipe.d.ts +15 -0
  177. package/lib/pipes/wallet-filter/wallet-filter.pipe.d.ts.map +1 -0
  178. package/lib/protocol/adapter/protocol-v0-adapter.d.ts +231 -0
  179. package/lib/protocol/adapter/protocol-v0-adapter.d.ts.map +1 -0
  180. package/lib/protocol/isolated/base-isolated.d.ts +11 -0
  181. package/lib/protocol/isolated/base-isolated.d.ts.map +1 -0
  182. package/lib/protocol/isolated/block-explorer-isolated.d.ts +14 -0
  183. package/lib/protocol/isolated/block-explorer-isolated.d.ts.map +1 -0
  184. package/lib/protocol/isolated/protocol-offline-isolated.d.ts +17 -0
  185. package/lib/protocol/isolated/protocol-offline-isolated.d.ts.map +1 -0
  186. package/lib/protocol/isolated/protocol-online-isolated.d.ts +21 -0
  187. package/lib/protocol/isolated/protocol-online-isolated.d.ts.map +1 -0
  188. package/lib/protocol/isolated/v3-serializer-companion-isolated.d.ts +17 -0
  189. package/lib/protocol/isolated/v3-serializer-companion-isolated.d.ts.map +1 -0
  190. package/lib/services/address/address.service.d.ts +26 -0
  191. package/lib/services/address/address.service.d.ts.map +1 -0
  192. package/lib/services/clipboard/clipboard.service.d.ts +14 -0
  193. package/lib/services/clipboard/clipboard.service.d.ts.map +1 -0
  194. package/lib/services/deeplink/deeplink.service.d.ts +18 -0
  195. package/lib/services/deeplink/deeplink.service.d.ts.map +1 -0
  196. package/lib/services/environment/base-environment.service.d.ts +6 -0
  197. package/lib/services/environment/base-environment.service.d.ts.map +1 -0
  198. package/lib/services/filesystem/filesystem.service.d.ts +42 -0
  199. package/lib/services/filesystem/filesystem.service.d.ts.map +1 -0
  200. package/lib/services/iac/base.iac.service.d.ts +41 -0
  201. package/lib/services/iac/base.iac.service.d.ts.map +1 -0
  202. package/lib/services/iac/message-handler-single.d.ts +20 -0
  203. package/lib/services/iac/message-handler-single.d.ts.map +1 -0
  204. package/lib/services/iac/message-handler.d.ts +34 -0
  205. package/lib/services/iac/message-handler.d.ts.map +1 -0
  206. package/lib/services/iac/qr-generator.d.ts +13 -0
  207. package/lib/services/iac/qr-generator.d.ts.map +1 -0
  208. package/lib/services/image/fetcher/image-direct.fetcher.d.ts +9 -0
  209. package/lib/services/image/fetcher/image-direct.fetcher.d.ts.map +1 -0
  210. package/lib/services/image/fetcher/image-proxy.fetcher.d.ts +9 -0
  211. package/lib/services/image/fetcher/image-proxy.fetcher.d.ts.map +1 -0
  212. package/lib/services/image/image.service.d.ts +20 -0
  213. package/lib/services/image/image.service.d.ts.map +1 -0
  214. package/lib/services/key-pair/key-pair.service.d.ts +14 -0
  215. package/lib/services/key-pair/key-pair.service.d.ts.map +1 -0
  216. package/lib/services/language/language.service.d.ts +21 -0
  217. package/lib/services/language/language.service.d.ts.map +1 -0
  218. package/lib/services/modules/base-modules.service.d.ts +34 -0
  219. package/lib/services/modules/base-modules.service.d.ts.map +1 -0
  220. package/lib/services/modules/controller/base-modules.controller.d.ts +19 -0
  221. package/lib/services/modules/controller/base-modules.controller.d.ts.map +1 -0
  222. package/lib/services/modules/controller/integral/integral-modules.controller.d.ts +22 -0
  223. package/lib/services/modules/controller/integral/integral-modules.controller.d.ts.map +1 -0
  224. package/lib/services/modules/controller/isolated/isolated-modules.controller.d.ts +32 -0
  225. package/lib/services/modules/controller/isolated/isolated-modules.controller.d.ts.map +1 -0
  226. package/lib/services/modules/controller/modules.controller.d.ts +27 -0
  227. package/lib/services/modules/controller/modules.controller.d.ts.map +1 -0
  228. package/lib/services/permissions/permissions.service.d.ts +39 -0
  229. package/lib/services/permissions/permissions.service.d.ts.map +1 -0
  230. package/lib/services/protocol/defaults.d.ts +6 -0
  231. package/lib/services/protocol/defaults.d.ts.map +1 -0
  232. package/lib/services/protocol/protocol.service.d.ts +47 -0
  233. package/lib/services/protocol/protocol.service.d.ts.map +1 -0
  234. package/lib/services/protocol/store/base-protocol-store.service.d.ts +36 -0
  235. package/lib/services/protocol/store/base-protocol-store.service.d.ts.map +1 -0
  236. package/lib/services/protocol/store/main/main-protocol-store.service.d.ts +21 -0
  237. package/lib/services/protocol/store/main/main-protocol-store.service.d.ts.map +1 -0
  238. package/lib/services/protocol/store/sub/sub-protocol-store.service.d.ts +31 -0
  239. package/lib/services/protocol/store/sub/sub-protocol-store.service.d.ts.map +1 -0
  240. package/lib/services/qr/qr-generators/bc-ur-generator.d.ts +16 -0
  241. package/lib/services/qr/qr-generators/bc-ur-generator.d.ts.map +1 -0
  242. package/lib/services/qr/qr-generators/metamask-generator.d.ts +16 -0
  243. package/lib/services/qr/qr-generators/metamask-generator.d.ts.map +1 -0
  244. package/lib/services/qr/qr-generators/output-descriptor-generator.d.ts +13 -0
  245. package/lib/services/qr/qr-generators/output-descriptor-generator.d.ts.map +1 -0
  246. package/lib/services/qr/qr-generators/serializer-v2-generator.d.ts +13 -0
  247. package/lib/services/qr/qr-generators/serializer-v2-generator.d.ts.map +1 -0
  248. package/lib/services/qr/qr-generators/serializer-v3-generator.d.ts +12 -0
  249. package/lib/services/qr/qr-generators/serializer-v3-generator.d.ts.map +1 -0
  250. package/lib/services/qr/qr-generators/xpub-generator.d.ts +12 -0
  251. package/lib/services/qr/qr-generators/xpub-generator.d.ts.map +1 -0
  252. package/lib/services/qr/qr-handler/serializer-v2-handler.d.ts +20 -0
  253. package/lib/services/qr/qr-handler/serializer-v2-handler.d.ts.map +1 -0
  254. package/lib/services/qr/qr-handler/serializer-v3-handler.d.ts +23 -0
  255. package/lib/services/qr/qr-handler/serializer-v3-handler.d.ts.map +1 -0
  256. package/lib/services/qr-scanner/qr-scanner.service.d.ts +23 -0
  257. package/lib/services/qr-scanner/qr-scanner.service.d.ts.map +1 -0
  258. package/lib/services/serializer/serializer.service.d.ts +34 -0
  259. package/lib/services/serializer/serializer.service.d.ts.map +1 -0
  260. package/lib/services/storage/base.storage.d.ts +15 -0
  261. package/lib/services/storage/base.storage.d.ts.map +1 -0
  262. package/lib/services/storage/storage.service.d.ts +28 -0
  263. package/lib/services/storage/storage.service.d.ts.map +1 -0
  264. package/lib/services/token/token.service.d.ts +11 -0
  265. package/lib/services/token/token.service.d.ts.map +1 -0
  266. package/lib/services/transaction/transaction.service.d.ts +21 -0
  267. package/lib/services/transaction/transaction.service.d.ts.map +1 -0
  268. package/lib/services/ui-event/ui-event.service.d.ts +58 -0
  269. package/lib/services/ui-event/ui-event.service.d.ts.map +1 -0
  270. package/lib/services/ui-event-elements/ui-event-elements.service.d.ts +16 -0
  271. package/lib/services/ui-event-elements/ui-event-elements.service.d.ts.map +1 -0
  272. package/lib/services/uri/uri.service.d.ts +15 -0
  273. package/lib/services/uri/uri.service.d.ts.map +1 -0
  274. package/lib/translation/AirGapTranslateLoader.d.ts +15 -0
  275. package/lib/translation/AirGapTranslateLoader.d.ts.map +1 -0
  276. package/lib/types/Either.d.ts +2 -0
  277. package/lib/types/Either.d.ts.map +1 -0
  278. package/lib/types/ExternalAliasResolver.d.ts +6 -0
  279. package/lib/types/ExternalAliasResolver.d.ts.map +1 -0
  280. package/lib/types/RuntimeMode.d.ts +5 -0
  281. package/lib/types/RuntimeMode.d.ts.map +1 -0
  282. package/lib/types/SupportedLanguage.d.ts +2 -0
  283. package/lib/types/SupportedLanguage.d.ts.map +1 -0
  284. package/lib/types/Token.d.ts +9 -0
  285. package/lib/types/Token.d.ts.map +1 -0
  286. package/lib/types/isolated-modules/IsolatedModule.d.ts +28 -0
  287. package/lib/types/isolated-modules/IsolatedModule.d.ts.map +1 -0
  288. package/lib/types/isolated-modules/IsolatedModuleManifest.d.ts +24 -0
  289. package/lib/types/isolated-modules/IsolatedModuleManifest.d.ts.map +1 -0
  290. package/lib/types/isolated-modules/IsolatedModuleMetadata.d.ts +21 -0
  291. package/lib/types/isolated-modules/IsolatedModuleMetadata.d.ts.map +1 -0
  292. package/lib/types/ui/UIAction.d.ts +10 -0
  293. package/lib/types/ui/UIAction.d.ts.map +1 -0
  294. package/lib/types/ui/UIResource.d.ts +11 -0
  295. package/lib/types/ui/UIResource.d.ts.map +1 -0
  296. package/lib/utils/ExposedPromise.d.ts +40 -0
  297. package/lib/utils/ExposedPromise.d.ts.map +1 -0
  298. package/lib/utils/airgap-transaction.d.ts +4 -0
  299. package/lib/utils/airgap-transaction.d.ts.map +1 -0
  300. package/lib/utils/array.d.ts +6 -0
  301. package/lib/utils/array.d.ts.map +1 -0
  302. package/lib/utils/modules/isolated/isolated-modules-metadata.d.ts +3 -0
  303. package/lib/utils/modules/isolated/isolated-modules-metadata.d.ts.map +1 -0
  304. package/lib/utils/modules/load-protocol.d.ts +4 -0
  305. package/lib/utils/modules/load-protocol.d.ts.map +1 -0
  306. package/lib/utils/not-initialized.d.ts +2 -0
  307. package/lib/utils/not-initialized.d.ts.map +1 -0
  308. package/lib/utils/protocol/delegation.d.ts +6 -0
  309. package/lib/utils/protocol/delegation.d.ts.map +1 -0
  310. package/lib/utils/protocol/protocol-identifier.d.ts +3 -0
  311. package/lib/utils/protocol/protocol-identifier.d.ts.map +1 -0
  312. package/lib/utils/protocol/protocol-network-identifier.d.ts +8 -0
  313. package/lib/utils/protocol/protocol-network-identifier.d.ts.map +1 -0
  314. package/lib/utils/protocol/protocol-options.d.ts +6 -0
  315. package/lib/utils/protocol/protocol-options.d.ts.map +1 -0
  316. package/lib/utils/protocol/protocol-v0-adapter.d.ts +75 -0
  317. package/lib/utils/protocol/protocol-v0-adapter.d.ts.map +1 -0
  318. package/lib/utils/utils.d.ts +9 -0
  319. package/lib/utils/utils.d.ts.map +1 -0
  320. package/lib/utils/worker.d.ts +11 -0
  321. package/lib/utils/worker.d.ts.map +1 -0
  322. package/package.json +88 -0
  323. package/public-api.d.ts +87 -0
  324. package/public-api.d.ts.map +1 -0
  325. package/src/assets/i18n-common/de.json +112 -0
  326. package/src/assets/i18n-common/en.json +112 -0
  327. package/src/assets/i18n-common/es.json +112 -0
  328. package/src/assets/i18n-common/fr.json +112 -0
  329. package/src/assets/i18n-common/pt_BR.json +112 -0
  330. package/src/assets/i18n-common/ru.json +112 -0
  331. package/src/assets/i18n-common/zh_CN.json +112 -0
  332. package/src/assets/img/identicon_placeholder.png +0 -0
  333. package/src/assets/native/isolated_modules/isolated-modules.js-engine-android.js +34 -0
  334. package/src/assets/native/isolated_modules/isolated-modules.script.js +304 -0
  335. package/src/assets/symbols/abt.svg +1 -0
  336. package/src/assets/symbols/adx.svg +1 -0
  337. package/src/assets/symbols/ae.svg +17 -0
  338. package/src/assets/symbols/agi.svg +1 -0
  339. package/src/assets/symbols/aion.svg +1 -0
  340. package/src/assets/symbols/amb.svg +1 -0
  341. package/src/assets/symbols/ampl.svg +7 -0
  342. package/src/assets/symbols/ant.svg +1 -0
  343. package/src/assets/symbols/aoa.svg +7 -0
  344. package/src/assets/symbols/appc.svg +1 -0
  345. package/src/assets/symbols/aqua.svg +5 -0
  346. package/src/assets/symbols/arn.svg +1 -0
  347. package/src/assets/symbols/ary.svg +1 -0
  348. package/src/assets/symbols/ast.svg +1 -0
  349. package/src/assets/symbols/astr.png +0 -0
  350. package/src/assets/symbols/atm.svg +1 -0
  351. package/src/assets/symbols/atom.svg +1 -0
  352. package/src/assets/symbols/auto.svg +1 -0
  353. package/src/assets/symbols/bal.svg +7 -0
  354. package/src/assets/symbols/band.svg +7 -0
  355. package/src/assets/symbols/bat.svg +1 -0
  356. package/src/assets/symbols/bcbc.svg +1 -0
  357. package/src/assets/symbols/bcpt.svg +1 -0
  358. package/src/assets/symbols/bix.svg +1 -0
  359. package/src/assets/symbols/blz.svg +1 -0
  360. package/src/assets/symbols/bnb.svg +1 -0
  361. package/src/assets/symbols/bnt.svg +1 -0
  362. package/src/assets/symbols/bnty.svg +1 -0
  363. package/src/assets/symbols/bpt.svg +1 -0
  364. package/src/assets/symbols/brc.svg +7 -0
  365. package/src/assets/symbols/brd.svg +1 -0
  366. package/src/assets/symbols/btc.svg +1 -0
  367. package/src/assets/symbols/btctz.png +0 -0
  368. package/src/assets/symbols/btm.svg +1 -0
  369. package/src/assets/symbols/busd.svg +7 -0
  370. package/src/assets/symbols/bytom.svg +7 -0
  371. package/src/assets/symbols/cacu.svg +1 -0
  372. package/src/assets/symbols/cdt.svg +1 -0
  373. package/src/assets/symbols/cel.svg +7 -0
  374. package/src/assets/symbols/cennz.svg +7 -0
  375. package/src/assets/symbols/cfx.svg +1 -0
  376. package/src/assets/symbols/chsb.svg +7 -0
  377. package/src/assets/symbols/chz.svg +7 -0
  378. package/src/assets/symbols/ckbtc.png +0 -0
  379. package/src/assets/symbols/cmt.svg +1 -0
  380. package/src/assets/symbols/cnd.svg +1 -0
  381. package/src/assets/symbols/cob.svg +1 -0
  382. package/src/assets/symbols/comp.svg +7 -0
  383. package/src/assets/symbols/coreum.png +0 -0
  384. package/src/assets/symbols/cred.svg +1 -0
  385. package/src/assets/symbols/cro.svg +7 -0
  386. package/src/assets/symbols/crpt.svg +1 -0
  387. package/src/assets/symbols/crv.svg +7 -0
  388. package/src/assets/symbols/cs.svg +1 -0
  389. package/src/assets/symbols/ctez.svg +1 -0
  390. package/src/assets/symbols/ctr.svg +1 -0
  391. package/src/assets/symbols/ctxc.svg +1 -0
  392. package/src/assets/symbols/cusdc.svg +7 -0
  393. package/src/assets/symbols/cvc.svg +1 -0
  394. package/src/assets/symbols/cvt.svg +7 -0
  395. package/src/assets/symbols/czrx.svg +7 -0
  396. package/src/assets/symbols/dai.svg +7 -0
  397. package/src/assets/symbols/dat.svg +1 -0
  398. package/src/assets/symbols/data.svg +1 -0
  399. package/src/assets/symbols/dcn.svg +1 -0
  400. package/src/assets/symbols/deez.svg +1 -0
  401. package/src/assets/symbols/dent.svg +1 -0
  402. package/src/assets/symbols/dew.svg +1 -0
  403. package/src/assets/symbols/dgd.svg +1 -0
  404. package/src/assets/symbols/dia.svg +7 -0
  405. package/src/assets/symbols/divx.svg +7 -0
  406. package/src/assets/symbols/dlt.svg +1 -0
  407. package/src/assets/symbols/dnt.svg +1 -0
  408. package/src/assets/symbols/dock.svg +1 -0
  409. package/src/assets/symbols/doga.png +0 -0
  410. package/src/assets/symbols/dot.svg +14 -0
  411. package/src/assets/symbols/drgn.svg +1 -0
  412. package/src/assets/symbols/drop.svg +1 -0
  413. package/src/assets/symbols/dth.svg +1 -0
  414. package/src/assets/symbols/dtr.svg +1 -0
  415. package/src/assets/symbols/dx.svg +7 -0
  416. package/src/assets/symbols/edg.svg +1 -0
  417. package/src/assets/symbols/edo.svg +1 -0
  418. package/src/assets/symbols/elf.svg +1 -0
  419. package/src/assets/symbols/elix.svg +1 -0
  420. package/src/assets/symbols/eng.svg +1 -0
  421. package/src/assets/symbols/enj.svg +1 -0
  422. package/src/assets/symbols/entrp.svg +1 -0
  423. package/src/assets/symbols/eos.svg +1 -0
  424. package/src/assets/symbols/eth.svg +1 -0
  425. package/src/assets/symbols/ethtz.png +0 -0
  426. package/src/assets/symbols/eurc.svg +8 -0
  427. package/src/assets/symbols/evx.svg +1 -0
  428. package/src/assets/symbols/fet.svg +7 -0
  429. package/src/assets/symbols/frax.svg +26 -0
  430. package/src/assets/symbols/fsn.svg +1 -0
  431. package/src/assets/symbols/ftc.svg +1 -0
  432. package/src/assets/symbols/ftm.svg +7 -0
  433. package/src/assets/symbols/fuel.svg +1 -0
  434. package/src/assets/symbols/fun.svg +1 -0
  435. package/src/assets/symbols/gbx.svg +1 -0
  436. package/src/assets/symbols/generic-coin.svg +1 -0
  437. package/src/assets/symbols/glmr.svg +1 -0
  438. package/src/assets/symbols/gno.svg +1 -0
  439. package/src/assets/symbols/gnt.svg +1 -0
  440. package/src/assets/symbols/grs.svg +1 -0
  441. package/src/assets/symbols/gsc.svg +1 -0
  442. package/src/assets/symbols/gto.svg +1 -0
  443. package/src/assets/symbols/gup.svg +1 -0
  444. package/src/assets/symbols/gusd.svg +1 -0
  445. package/src/assets/symbols/gvt.svg +1 -0
  446. package/src/assets/symbols/gzr.svg +1 -0
  447. package/src/assets/symbols/hedg.svg +7 -0
  448. package/src/assets/symbols/hodl.svg +1 -0
  449. package/src/assets/symbols/hot.svg +7 -0
  450. package/src/assets/symbols/hpb.svg +1 -0
  451. package/src/assets/symbols/ht.svg +1 -0
  452. package/src/assets/symbols/husd.svg +7 -0
  453. package/src/assets/symbols/icn.svg +1 -0
  454. package/src/assets/symbols/icp.svg +16 -0
  455. package/src/assets/symbols/icx.svg +1 -0
  456. package/src/assets/symbols/inb.svg +7 -0
  457. package/src/assets/symbols/ino.svg +7 -0
  458. package/src/assets/symbols/ins.svg +1 -0
  459. package/src/assets/symbols/iost.svg +1 -0
  460. package/src/assets/symbols/iotx.svg +1 -0
  461. package/src/assets/symbols/itc.svg +1 -0
  462. package/src/assets/symbols/jnt.svg +1 -0
  463. package/src/assets/symbols/kcs.svg +7 -0
  464. package/src/assets/symbols/kin.svg +1 -0
  465. package/src/assets/symbols/knc.svg +1 -0
  466. package/src/assets/symbols/ksm.svg +1 -0
  467. package/src/assets/symbols/kusd.svg +1 -0
  468. package/src/assets/symbols/ldo.svg +97 -0
  469. package/src/assets/symbols/lend.svg +1 -0
  470. package/src/assets/symbols/leo.svg +7 -0
  471. package/src/assets/symbols/link.svg +7 -0
  472. package/src/assets/symbols/loom.svg +1 -0
  473. package/src/assets/symbols/lpt.svg +1 -0
  474. package/src/assets/symbols/lrc.svg +1 -0
  475. package/src/assets/symbols/lun.svg +1 -0
  476. package/src/assets/symbols/mana.svg +1 -0
  477. package/src/assets/symbols/matic.svg +7 -0
  478. package/src/assets/symbols/mcap.svg +1 -0
  479. package/src/assets/symbols/mco.svg +1 -0
  480. package/src/assets/symbols/mda.svg +1 -0
  481. package/src/assets/symbols/mds.svg +1 -0
  482. package/src/assets/symbols/mkr.svg +1 -0
  483. package/src/assets/symbols/mln.svg +7 -0
  484. package/src/assets/symbols/mnw.svg +1 -0
  485. package/src/assets/symbols/mod.svg +1 -0
  486. package/src/assets/symbols/movr.svg +10 -0
  487. package/src/assets/symbols/mth.svg +1 -0
  488. package/src/assets/symbols/mtl.svg +1 -0
  489. package/src/assets/symbols/mxc.svg +7 -0
  490. package/src/assets/symbols/nas.svg +1 -0
  491. package/src/assets/symbols/ncash.svg +1 -0
  492. package/src/assets/symbols/neu.svg +1 -0
  493. package/src/assets/symbols/nexo.svg +1 -0
  494. package/src/assets/symbols/ngc.svg +1 -0
  495. package/src/assets/symbols/nio.svg +1 -0
  496. package/src/assets/symbols/nmr.svg +7 -0
  497. package/src/assets/symbols/noah.svg +7 -0
  498. package/src/assets/symbols/npxs.svg +1 -0
  499. package/src/assets/symbols/nuls.svg +1 -0
  500. package/src/assets/symbols/nxm.svg +7 -0
  501. package/src/assets/symbols/oax.svg +1 -0
  502. package/src/assets/symbols/ocean.svg +7 -0
  503. package/src/assets/symbols/okb.svg +7 -0
  504. package/src/assets/symbols/omg.svg +1 -0
  505. package/src/assets/symbols/ong.svg +1 -0
  506. package/src/assets/symbols/op.svg +21 -0
  507. package/src/assets/symbols/ost.svg +1 -0
  508. package/src/assets/symbols/pax.svg +1 -0
  509. package/src/assets/symbols/paxg.svg +7 -0
  510. package/src/assets/symbols/pay.svg +1 -0
  511. package/src/assets/symbols/plenty.svg +1 -0
  512. package/src/assets/symbols/plr.svg +1 -0
  513. package/src/assets/symbols/pnk.svg +7 -0
  514. package/src/assets/symbols/poe.svg +1 -0
  515. package/src/assets/symbols/poly.svg +1 -0
  516. package/src/assets/symbols/powr.svg +1 -0
  517. package/src/assets/symbols/ppp.svg +1 -0
  518. package/src/assets/symbols/ppt.svg +1 -0
  519. package/src/assets/symbols/prl.svg +1 -0
  520. package/src/assets/symbols/qash.svg +1 -0
  521. package/src/assets/symbols/qnt.svg +7 -0
  522. package/src/assets/symbols/qrl.svg +1 -0
  523. package/src/assets/symbols/qsp.svg +1 -0
  524. package/src/assets/symbols/qtum.svg +1 -0
  525. package/src/assets/symbols/quipu.png +0 -0
  526. package/src/assets/symbols/r.svg +1 -0
  527. package/src/assets/symbols/rcn.svg +1 -0
  528. package/src/assets/symbols/rdn.svg +1 -0
  529. package/src/assets/symbols/ren.svg +7 -0
  530. package/src/assets/symbols/rep.svg +1 -0
  531. package/src/assets/symbols/repv2.svg +7 -0
  532. package/src/assets/symbols/req.svg +1 -0
  533. package/src/assets/symbols/rev.svg +7 -0
  534. package/src/assets/symbols/rhoc.svg +1 -0
  535. package/src/assets/symbols/rlc.svg +1 -0
  536. package/src/assets/symbols/rsr.svg +7 -0
  537. package/src/assets/symbols/sai.svg +7 -0
  538. package/src/assets/symbols/salt.svg +1 -0
  539. package/src/assets/symbols/san.svg +1 -0
  540. package/src/assets/symbols/sdn.svg +1 -0
  541. package/src/assets/symbols/shx.svg +32 -0
  542. package/src/assets/symbols/sirs.svg +1 -0
  543. package/src/assets/symbols/smart.svg +1 -0
  544. package/src/assets/symbols/sngls.svg +1 -0
  545. package/src/assets/symbols/snm.svg +1 -0
  546. package/src/assets/symbols/snt.svg +1 -0
  547. package/src/assets/symbols/snx.svg +7 -0
  548. package/src/assets/symbols/soc.svg +1 -0
  549. package/src/assets/symbols/sol.svg +1 -0
  550. package/src/assets/symbols/spank.svg +1 -0
  551. package/src/assets/symbols/sphtx.svg +1 -0
  552. package/src/assets/symbols/srm.svg +7 -0
  553. package/src/assets/symbols/srn.svg +1 -0
  554. package/src/assets/symbols/stake.svg +7 -0
  555. package/src/assets/symbols/stellar.png +0 -0
  556. package/src/assets/symbols/storj.svg +1 -0
  557. package/src/assets/symbols/storm.svg +1 -0
  558. package/src/assets/symbols/stq.svg +1 -0
  559. package/src/assets/symbols/stxtz.svg +18 -0
  560. package/src/assets/symbols/sub.svg +1 -0
  561. package/src/assets/symbols/sushi.svg +7 -0
  562. package/src/assets/symbols/sxp.svg +7 -0
  563. package/src/assets/symbols/sxtz.svg +6 -0
  564. package/src/assets/symbols/taas.svg +1 -0
  565. package/src/assets/symbols/tau.svg +1 -0
  566. package/src/assets/symbols/tbx.svg +1 -0
  567. package/src/assets/symbols/tel.svg +1 -0
  568. package/src/assets/symbols/ten.svg +1 -0
  569. package/src/assets/symbols/theta.svg +1 -0
  570. package/src/assets/symbols/tix.svg +1 -0
  571. package/src/assets/symbols/tkn.svg +1 -0
  572. package/src/assets/symbols/tnt.svg +1 -0
  573. package/src/assets/symbols/tomo.svg +1 -0
  574. package/src/assets/symbols/trac.svg +7 -0
  575. package/src/assets/symbols/trb.svg +7 -0
  576. package/src/assets/symbols/trx.svg +1 -0
  577. package/src/assets/symbols/tusd.svg +1 -0
  578. package/src/assets/symbols/tzbtc.svg +1 -0
  579. package/src/assets/symbols/ubt.svg +7 -0
  580. package/src/assets/symbols/ubtc.svg +1 -0
  581. package/src/assets/symbols/udefi.svg +1 -0
  582. package/src/assets/symbols/uma.svg +7 -0
  583. package/src/assets/symbols/usdc.svg +1 -0
  584. package/src/assets/symbols/usdt.png +0 -0
  585. package/src/assets/symbols/usdt.svg +1 -0
  586. package/src/assets/symbols/usdtz.svg +17 -0
  587. package/src/assets/symbols/ust.svg +1 -0
  588. package/src/assets/symbols/utk.svg +1 -0
  589. package/src/assets/symbols/uusd.svg +1 -0
  590. package/src/assets/symbols/uxtz.svg +1 -0
  591. package/src/assets/symbols/velo.svg +5 -0
  592. package/src/assets/symbols/ven.svg +7 -0
  593. package/src/assets/symbols/veri.svg +1 -0
  594. package/src/assets/symbols/verse.svg +1 -0
  595. package/src/assets/symbols/vest.svg +7 -0
  596. package/src/assets/symbols/vib.svg +1 -0
  597. package/src/assets/symbols/vibe.svg +1 -0
  598. package/src/assets/symbols/wabi.svg +1 -0
  599. package/src/assets/symbols/wax.svg +1 -0
  600. package/src/assets/symbols/wbtc.svg +7 -0
  601. package/src/assets/symbols/weth.svg +18 -0
  602. package/src/assets/symbols/wic.svg +7 -0
  603. package/src/assets/symbols/wings.svg +1 -0
  604. package/src/assets/symbols/wnxm.svg +7 -0
  605. package/src/assets/symbols/wpr.svg +1 -0
  606. package/src/assets/symbols/wrap.png +0 -0
  607. package/src/assets/symbols/wtc.svg +1 -0
  608. package/src/assets/symbols/wusdc.png +0 -0
  609. package/src/assets/symbols/xchf.svg +1 -0
  610. package/src/assets/symbols/xdce.svg +7 -0
  611. package/src/assets/symbols/xin.svg +7 -0
  612. package/src/assets/symbols/xpa.svg +1 -0
  613. package/src/assets/symbols/xpl.svg +1 -0
  614. package/src/assets/symbols/xtz.svg +5 -0
  615. package/src/assets/symbols/yfi.svg +7 -0
  616. package/src/assets/symbols/you.svg +1 -0
  617. package/src/assets/symbols/yoyow.svg +1 -0
  618. package/src/assets/symbols/ytez.svg +1 -0
  619. package/src/assets/symbols/zb.svg +7 -0
  620. package/src/assets/symbols/zil.svg +1 -0
  621. package/src/assets/symbols/zrx.svg +1 -0
  622. package/src/assets/workers/airgap-coin-lib.js +119 -0
  623. package/wallfree-dev-angular-core.d.ts.map +1 -0
@@ -0,0 +1,45 @@
1
+ import * as bs58check from '@wallfree-dev/coinlib-core/dependencies/src/bs58check-2.1.2/index';
2
+ import { SerializerV3 } from '@wallfree-dev/serializer';
3
+ import { UR, UREncoder } from '@ngraveio/bc-ur';
4
+ import { IACQrGenerator } from '../../iac/qr-generator';
5
+ export class SerializerV3Generator extends IACQrGenerator {
6
+ constructor() {
7
+ super();
8
+ }
9
+ async create(data, multiFragmentLength, singleFragmentLength) {
10
+ const serializer = SerializerV3.getInstance();
11
+ const serialized = await serializer.serialize(data);
12
+ const buffer = bs58check.decode(serialized);
13
+ this.ur = UR.fromBuffer(buffer);
14
+ // We first try to create a larger "single chunk" fragment
15
+ this.encoder = new UREncoder(this.ur, singleFragmentLength);
16
+ // If this is not possible, we use the multiFragmentLength
17
+ if (this.encoder.fragmentsLength !== 1) {
18
+ this.encoder = new UREncoder(this.ur, multiFragmentLength);
19
+ }
20
+ }
21
+ async nextPart() {
22
+ if (this.encoder) {
23
+ return this.encoder.nextPart().toUpperCase();
24
+ }
25
+ else {
26
+ return '';
27
+ }
28
+ }
29
+ async getSingle(prefix) {
30
+ if (this.ur) {
31
+ const part = new UREncoder(this.ur, Number.MAX_SAFE_INTEGER).nextPart();
32
+ const regex = /([^/]+$)/g;
33
+ const match = part.match(regex);
34
+ const data = match && match[0] ? match[0] : part;
35
+ return this.prefixSingle(data.toUpperCase(), prefix, 'ur');
36
+ }
37
+ else {
38
+ return '';
39
+ }
40
+ }
41
+ async getNumberOfParts() {
42
+ return this.encoder?.fragmentsLength ?? 0;
43
+ }
44
+ }
45
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci12My1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3FyL3FyLWdlbmVyYXRvcnMvc2VyaWFsaXplci12My1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLFNBQVMsTUFBTSxtRUFBbUUsQ0FBQTtBQUM5RixPQUFPLEVBQWdDLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQ3JGLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFL0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBRXZELE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxjQUFjO0lBS3ZEO1FBQ0UsS0FBSyxFQUFFLENBQUE7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFvQyxFQUFFLG1CQUEyQixFQUFFLG9CQUE0QjtRQUNqSCxNQUFNLFVBQVUsR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDN0MsTUFBTSxVQUFVLEdBQUcsTUFBTSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ25ELE1BQU0sTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7UUFDM0MsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBRS9CLDBEQUEwRDtRQUMxRCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUUzRCwwREFBMEQ7UUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtRQUM1RCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRO1FBQ25CLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtRQUM5QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sRUFBRSxDQUFBO1FBQ1gsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQWM7UUFDbkMsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFBO1lBQ3ZFLE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQTtZQUN6QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQy9CLE1BQU0sSUFBSSxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1lBRWhELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFBO1FBQzVELENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxFQUFFLENBQUE7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLGVBQWUsSUFBSSxDQUFDLENBQUE7SUFDM0MsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgYnM1OGNoZWNrIGZyb20gJ0B3YWxsZnJlZS1kZXYvY29pbmxpYi1jb3JlL2RlcGVuZGVuY2llcy9zcmMvYnM1OGNoZWNrLTIuMS4yL2luZGV4J1xuaW1wb3J0IHsgSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3RWMywgU2VyaWFsaXplclYzIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9zZXJpYWxpemVyJ1xuaW1wb3J0IHsgVVIsIFVSRW5jb2RlciB9IGZyb20gJ0BuZ3JhdmVpby9iYy11cidcblxuaW1wb3J0IHsgSUFDUXJHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9pYWMvcXItZ2VuZXJhdG9yJ1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplclYzR2VuZXJhdG9yIGV4dGVuZHMgSUFDUXJHZW5lcmF0b3Ige1xuICBwcml2YXRlIGVuY29kZXI6IFVSRW5jb2RlciB8IHVuZGVmaW5lZFxuXG4gIHByaXZhdGUgdXI6IFVSIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZShkYXRhOiBJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10sIG11bHRpRnJhZ21lbnRMZW5ndGg6IG51bWJlciwgc2luZ2xlRnJhZ21lbnRMZW5ndGg6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNlcmlhbGl6ZXIgPSBTZXJpYWxpemVyVjMuZ2V0SW5zdGFuY2UoKVxuICAgIGNvbnN0IHNlcmlhbGl6ZWQgPSBhd2FpdCBzZXJpYWxpemVyLnNlcmlhbGl6ZShkYXRhKVxuICAgIGNvbnN0IGJ1ZmZlciA9IGJzNThjaGVjay5kZWNvZGUoc2VyaWFsaXplZClcbiAgICB0aGlzLnVyID0gVVIuZnJvbUJ1ZmZlcihidWZmZXIpXG5cbiAgICAvLyBXZSBmaXJzdCB0cnkgdG8gY3JlYXRlIGEgbGFyZ2VyIFwic2luZ2xlIGNodW5rXCIgZnJhZ21lbnRcbiAgICB0aGlzLmVuY29kZXIgPSBuZXcgVVJFbmNvZGVyKHRoaXMudXIsIHNpbmdsZUZyYWdtZW50TGVuZ3RoKVxuXG4gICAgLy8gSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIHdlIHVzZSB0aGUgbXVsdGlGcmFnbWVudExlbmd0aFxuICAgIGlmICh0aGlzLmVuY29kZXIuZnJhZ21lbnRzTGVuZ3RoICE9PSAxKSB7XG4gICAgICB0aGlzLmVuY29kZXIgPSBuZXcgVVJFbmNvZGVyKHRoaXMudXIsIG11bHRpRnJhZ21lbnRMZW5ndGgpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG5leHRQYXJ0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMuZW5jb2Rlcikge1xuICAgICAgcmV0dXJuIHRoaXMuZW5jb2Rlci5uZXh0UGFydCgpLnRvVXBwZXJDYXNlKClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuICcnXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZShwcmVmaXg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgaWYgKHRoaXMudXIpIHtcbiAgICAgIGNvbnN0IHBhcnQgPSBuZXcgVVJFbmNvZGVyKHRoaXMudXIsIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKS5uZXh0UGFydCgpXG4gICAgICBjb25zdCByZWdleCA9IC8oW14vXSskKS9nXG4gICAgICBjb25zdCBtYXRjaCA9IHBhcnQubWF0Y2gocmVnZXgpXG4gICAgICBjb25zdCBkYXRhID0gbWF0Y2ggJiYgbWF0Y2hbMF0gPyBtYXRjaFswXSA6IHBhcnRcblxuICAgICAgcmV0dXJuIHRoaXMucHJlZml4U2luZ2xlKGRhdGEudG9VcHBlckNhc2UoKSwgcHJlZml4LCAndXInKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gJydcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TnVtYmVyT2ZQYXJ0cygpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmVuY29kZXI/LmZyYWdtZW50c0xlbmd0aCA/PyAwXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,38 @@
1
+ import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
2
+ import { IACMessageType } from '@wallfree-dev/serializer';
3
+ import { IACQrGenerator } from '../../iac/qr-generator';
4
+ export class XPubGenerator extends IACQrGenerator {
5
+ constructor() {
6
+ super();
7
+ }
8
+ async create(data, _multiFragmentLength, _singleFragmentLength) {
9
+ if (!(await XPubGenerator.canHandle(data))) {
10
+ return;
11
+ }
12
+ const element = data[0];
13
+ if (element.type === IACMessageType.AccountShareResponse) {
14
+ this.data = element.payload.publicKey;
15
+ }
16
+ else {
17
+ throw new Error('Not Supported');
18
+ }
19
+ }
20
+ static async canHandle(data) {
21
+ if (data.length === 1) {
22
+ const element = data[0];
23
+ return ((element.protocol === MainProtocolSymbols.BTC_SEGWIT || element.protocol === MainProtocolSymbols.BTC_TAPROOT) &&
24
+ [IACMessageType.AccountShareResponse].includes(element.type));
25
+ }
26
+ return false;
27
+ }
28
+ async nextPart() {
29
+ return this.data ?? '';
30
+ }
31
+ async getSingle() {
32
+ return this.data ?? '';
33
+ }
34
+ async getNumberOfParts() {
35
+ return this.data ? 1 : 0;
36
+ }
37
+ }
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHB1Yi1nZW5lcmF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3FyL3FyLWdlbmVyYXRvcnMveHB1Yi1nZW5lcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDaEUsT0FBTyxFQUFzRCxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUU3RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFdkQsTUFBTSxPQUFPLGFBQWMsU0FBUSxjQUFjO0lBRy9DO1FBQ0UsS0FBSyxFQUFFLENBQUE7SUFDVCxDQUFDO0lBRU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFvQyxFQUFFLG9CQUE0QixFQUFFLHFCQUE2QjtRQUNuSCxJQUFJLENBQUMsQ0FBQyxNQUFNLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBRXZCLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxHQUFJLE9BQU8sQ0FBQyxPQUFnQyxDQUFDLFNBQVMsQ0FBQTtRQUNqRSxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFvQztRQUNoRSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBRXZCLE9BQU8sQ0FDTCxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsVUFBVSxJQUFJLE9BQU8sQ0FBQyxRQUFRLEtBQUssbUJBQW1CLENBQUMsV0FBVyxDQUFDO2dCQUM3RyxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQzdELENBQUE7UUFDSCxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUE7SUFDZCxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVE7UUFDbkIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVM7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQTtJQUN4QixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQjtRQUMzQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1haW5Qcm90b2NvbFN5bWJvbHMgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IEFjY291bnRTaGFyZVJlc3BvbnNlLCBJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzLCBJQUNNZXNzYWdlVHlwZSB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvc2VyaWFsaXplcidcblxuaW1wb3J0IHsgSUFDUXJHZW5lcmF0b3IgfSBmcm9tICcuLi8uLi9pYWMvcXItZ2VuZXJhdG9yJ1xuXG5leHBvcnQgY2xhc3MgWFB1YkdlbmVyYXRvciBleHRlbmRzIElBQ1FyR2VuZXJhdG9yIHtcbiAgcHJpdmF0ZSBkYXRhOiBzdHJpbmcgfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY3JlYXRlKGRhdGE6IElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXSwgX211bHRpRnJhZ21lbnRMZW5ndGg6IG51bWJlciwgX3NpbmdsZUZyYWdtZW50TGVuZ3RoOiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIShhd2FpdCBYUHViR2VuZXJhdG9yLmNhbkhhbmRsZShkYXRhKSkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSBkYXRhWzBdXG5cbiAgICBpZiAoZWxlbWVudC50eXBlID09PSBJQUNNZXNzYWdlVHlwZS5BY2NvdW50U2hhcmVSZXNwb25zZSkge1xuICAgICAgdGhpcy5kYXRhID0gKGVsZW1lbnQucGF5bG9hZCBhcyBBY2NvdW50U2hhcmVSZXNwb25zZSkucHVibGljS2V5XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm90IFN1cHBvcnRlZCcpXG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBjYW5IYW5kbGUoZGF0YTogSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3RWM1tdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gZGF0YVswXVxuXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoZWxlbWVudC5wcm90b2NvbCA9PT0gTWFpblByb3RvY29sU3ltYm9scy5CVENfU0VHV0lUIHx8IGVsZW1lbnQucHJvdG9jb2wgPT09IE1haW5Qcm90b2NvbFN5bWJvbHMuQlRDX1RBUFJPT1QpICYmXG4gICAgICAgIFtJQUNNZXNzYWdlVHlwZS5BY2NvdW50U2hhcmVSZXNwb25zZV0uaW5jbHVkZXMoZWxlbWVudC50eXBlKVxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG5leHRQYXJ0KCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSA/PyAnJ1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFNpbmdsZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLmRhdGEgPz8gJydcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXROdW1iZXJPZlBhcnRzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YSA/IDEgOiAwXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,114 @@
1
+ import { Serializer } from '@wallfree-dev/serializer';
2
+ import { IACHandlerStatus } from '../../iac/message-handler';
3
+ import { convertV2ToV3 } from '../../serializer/serializer.service';
4
+ export class SerializerV2Handler {
5
+ constructor(callback = () => undefined) {
6
+ this.name = 'SerializerV2Handler';
7
+ this.callback = () => undefined;
8
+ this.progress = 0;
9
+ this.parts = new Set();
10
+ this.serializer = Serializer.getInstance();
11
+ this.callback = callback;
12
+ }
13
+ async canHandle(_part) {
14
+ const part = this.getParsedData(_part);
15
+ try {
16
+ await this.serializer.deserialize([part]);
17
+ return true;
18
+ }
19
+ catch (error) {
20
+ try {
21
+ await this.serializer.deserialize(part.split(','));
22
+ return true;
23
+ }
24
+ catch (error) {
25
+ if (error.availablePages && error.totalPages) {
26
+ return true;
27
+ }
28
+ else {
29
+ return false;
30
+ }
31
+ }
32
+ }
33
+ }
34
+ getParsedData(data) {
35
+ if (!data.includes('://')) {
36
+ return data;
37
+ }
38
+ let parsedData = data;
39
+ try {
40
+ const url = new URL(data);
41
+ parsedData = url.searchParams.get('d');
42
+ }
43
+ catch (e) { }
44
+ return parsedData ?? '';
45
+ }
46
+ async receive(data) {
47
+ const parsedData = await this.getParsedData(data);
48
+ if (!parsedData) {
49
+ return IACHandlerStatus.UNSUPPORTED;
50
+ }
51
+ // Handle multiple parts
52
+ const splits = parsedData.split(',');
53
+ if (splits.length > 1) {
54
+ for (const split of splits) {
55
+ if (this.parts.has(split)) {
56
+ return IACHandlerStatus.PARTIAL;
57
+ }
58
+ const valid = await this.canHandle(split);
59
+ if (valid) {
60
+ this.parts.add(split);
61
+ }
62
+ else {
63
+ return IACHandlerStatus.UNSUPPORTED;
64
+ }
65
+ }
66
+ // End multiple parts
67
+ }
68
+ else {
69
+ const canHandle = await this.canHandle(parsedData);
70
+ if (!canHandle) {
71
+ return IACHandlerStatus.UNSUPPORTED;
72
+ }
73
+ this.parts.add(parsedData);
74
+ }
75
+ try {
76
+ const deserialized = await this.serializer.deserialize(Array.from(this.parts));
77
+ if (deserialized) {
78
+ this.completeDeserialized = deserialized;
79
+ return IACHandlerStatus.SUCCESS;
80
+ }
81
+ }
82
+ catch (error) {
83
+ if (error.availablePages && error.totalPages) {
84
+ this.progress = error.availablePages.length / error.totalPages;
85
+ }
86
+ }
87
+ return IACHandlerStatus.PARTIAL;
88
+ }
89
+ async getProgress() {
90
+ return Number(this.progress.toFixed(2));
91
+ }
92
+ async handleComplete() {
93
+ const result = await this.getResult();
94
+ if (!result) {
95
+ throw new Error('Data not complete!');
96
+ }
97
+ this.callback(result);
98
+ return result;
99
+ }
100
+ async getDataSingle() {
101
+ return Array.from(this.parts.values()).join(','); // Serializer V2 used commas to separate parts
102
+ }
103
+ async getResult() {
104
+ return this.completeDeserialized
105
+ ? { result: await convertV2ToV3(this.completeDeserialized), data: await this.getDataSingle() }
106
+ : undefined;
107
+ }
108
+ async reset() {
109
+ this.parts = new Set();
110
+ this.progress = 0;
111
+ this.completeDeserialized = undefined;
112
+ }
113
+ }
114
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci12Mi1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9xci9xci1oYW5kbGVyL3NlcmlhbGl6ZXItdjItaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQTRELFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQy9HLE9BQU8sRUFBRSxnQkFBZ0IsRUFBd0MsTUFBTSwyQkFBMkIsQ0FBQTtBQUNsRyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUNBQXFDLENBQUE7QUFFbkUsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUFZLFdBQThFLEdBQVMsRUFBRSxDQUFDLFNBQVM7UUFUL0YsU0FBSSxHQUFXLHFCQUFxQixDQUFBO1FBR25DLGFBQVEsR0FBc0UsR0FBUyxFQUFFLENBQUMsU0FBUyxDQUFBO1FBRTVHLGFBQVEsR0FBVyxDQUFDLENBQUE7UUFDcEIsVUFBSyxHQUFnQixJQUFJLEdBQUcsRUFBVSxDQUFBO1FBSTVDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFBO0lBQzFCLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQWE7UUFDbEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QyxJQUFJLENBQUM7WUFDSCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQTtZQUV6QyxPQUFPLElBQUksQ0FBQTtRQUNiLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFH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Q0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUE7SUFDdkMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3RWMywgSUFDTWVzc2FnZURlZmluaXRpb25PYmplY3QsIFNlcmlhbGl6ZXIgfSBmcm9tICdAd2FsbGZyZWUtZGV2L3NlcmlhbGl6ZXInXG5pbXBvcnQgeyBJQUNIYW5kbGVyU3RhdHVzLCBJQUNNZXNzYWdlSGFuZGxlciwgSUFDTWVzc2FnZVdyYXBwZXIgfSBmcm9tICcuLi8uLi9pYWMvbWVzc2FnZS1oYW5kbGVyJ1xuaW1wb3J0IHsgY29udmVydFYyVG9WMyB9IGZyb20gJy4uLy4uL3NlcmlhbGl6ZXIvc2VyaWFsaXplci5zZXJ2aWNlJ1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplclYySGFuZGxlciBpbXBsZW1lbnRzIElBQ01lc3NhZ2VIYW5kbGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nID0gJ1NlcmlhbGl6ZXJWMkhhbmRsZXInXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplcjogU2VyaWFsaXplclxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FsbGJhY2s6IChkYXRhOiBJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+KSA9PiB2b2lkID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkXG5cbiAgcHJpdmF0ZSBwcm9ncmVzczogbnVtYmVyID0gMFxuICBwcml2YXRlIHBhcnRzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQ8c3RyaW5nPigpXG4gIHByaXZhdGUgY29tcGxldGVEZXNlcmlhbGl6ZWQ6IElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0W10gfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3RvcihjYWxsYmFjazogKGRhdGE6IElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4pID0+IHZvaWQgPSAoKTogdm9pZCA9PiB1bmRlZmluZWQpIHtcbiAgICB0aGlzLnNlcmlhbGl6ZXIgPSBTZXJpYWxpemVyLmdldEluc3RhbmNlKClcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjYW5IYW5kbGUoX3BhcnQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLmdldFBhcnNlZERhdGEoX3BhcnQpXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShbcGFydF0pXG5cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShwYXJ0LnNwbGl0KCcsJykpXG5cbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChlcnJvci5hdmFpbGFibGVQYWdlcyAmJiBlcnJvci50b3RhbFBhZ2VzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRQYXJzZWREYXRhKGRhdGE6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRhLmluY2x1ZGVzKCc6Ly8nKSkge1xuICAgICAgcmV0dXJuIGRhdGFcbiAgICB9XG4gICAgbGV0IHBhcnNlZERhdGE6IHN0cmluZyB8IG51bGwgPSBkYXRhXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoZGF0YSlcbiAgICAgIHBhcnNlZERhdGEgPSB1cmwuc2VhcmNoUGFyYW1zLmdldCgnZCcpXG4gICAgfSBjYXRjaCAoZSkge31cblxuICAgIHJldHVybiBwYXJzZWREYXRhID8/ICcnXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVjZWl2ZShkYXRhOiBzdHJpbmcpOiBQcm9taXNlPElBQ0hhbmRsZXJTdGF0dXM+IHtcbiAgICBjb25zdCBwYXJzZWREYXRhID0gYXdhaXQgdGhpcy5nZXRQYXJzZWREYXRhKGRhdGEpXG4gICAgaWYgKCFwYXJzZWREYXRhKSB7XG4gICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5VTlNVUFBPUlRFRFxuICAgIH1cblxuICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBwYXJ0c1xuICAgIGNvbnN0IHNwbGl0cyA9IHBhcnNlZERhdGEuc3BsaXQoJywnKVxuICAgIGlmIChzcGxpdHMubGVuZ3RoID4gMSkge1xuICAgICAgZm9yIChjb25zdCBzcGxpdCBvZiBzcGxpdHMpIHtcbiAgICAgICAgaWYgKHRoaXMucGFydHMuaGFzKHNwbGl0KSkge1xuICAgICAgICAgIHJldHVybiBJQUNIYW5kbGVyU3RhdHVzLlBBUlRJQUxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkID0gYXdhaXQgdGhpcy5jYW5IYW5kbGUoc3BsaXQpXG5cbiAgICAgICAgaWYgKHZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5wYXJ0cy5hZGQoc3BsaXQpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuVU5TVVBQT1JURURcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRW5kIG11bHRpcGxlIHBhcnRzXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNhbkhhbmRsZSA9IGF3YWl0IHRoaXMuY2FuSGFuZGxlKHBhcnNlZERhdGEpXG4gICAgICBpZiAoIWNhbkhhbmRsZSkge1xuICAgICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5VTlNVUFBPUlRFRFxuICAgICAgfVxuICAgICAgdGhpcy5wYXJ0cy5hZGQocGFyc2VkRGF0YSlcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZGVzZXJpYWxpemVkID0gYXdhaXQgdGhpcy5zZXJpYWxpemVyLmRlc2VyaWFsaXplKEFycmF5LmZyb20odGhpcy5wYXJ0cykpXG4gICAgICBpZiAoZGVzZXJpYWxpemVkKSB7XG4gICAgICAgIHRoaXMuY29tcGxldGVEZXNlcmlhbGl6ZWQgPSBkZXNlcmlhbGl6ZWRcblxuICAgICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5TVUNDRVNTXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvci5hdmFpbGFibGVQYWdlcyAmJiBlcnJvci50b3RhbFBhZ2VzKSB7XG4gICAgICAgIHRoaXMucHJvZ3Jlc3MgPSBlcnJvci5hdmFpbGFibGVQYWdlcy5sZW5ndGggLyBlcnJvci50b3RhbFBhZ2VzXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuUEFSVElBTFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb2dyZXNzKCk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgcmV0dXJuIE51bWJlcih0aGlzLnByb2dyZXNzLnRvRml4ZWQoMikpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaGFuZGxlQ29tcGxldGUoKTogUHJvbWlzZTxJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZXRSZXN1bHQoKVxuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgbm90IGNvbXBsZXRlIScpXG4gICAgfVxuICAgIHRoaXMuY2FsbGJhY2socmVzdWx0KVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldERhdGFTaW5nbGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnBhcnRzLnZhbHVlcygpKS5qb2luKCcsJykgLy8gU2VyaWFsaXplciBWMiB1c2VkIGNvbW1hcyB0byBzZXBhcmF0ZSBwYXJ0c1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlc3VsdCgpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb21wbGV0ZURlc2VyaWFsaXplZFxuICAgICAgPyB7IHJlc3VsdDogYXdhaXQgY29udmVydFYyVG9WMyh0aGlzLmNvbXBsZXRlRGVzZXJpYWxpemVkKSwgZGF0YTogYXdhaXQgdGhpcy5nZXREYXRhU2luZ2xlKCkgfVxuICAgICAgOiB1bmRlZmluZWRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnBhcnRzID0gbmV3IFNldCgpXG4gICAgdGhpcy5wcm9ncmVzcyA9IDBcbiAgICB0aGlzLmNvbXBsZXRlRGVzZXJpYWxpemVkID0gdW5kZWZpbmVkXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,274 @@
1
+ import { UR, URDecoder, UREncoder } from '@ngraveio/bc-ur';
2
+ import * as bs58check from '@wallfree-dev/coinlib-core/dependencies/src/bs58check-2.1.2/index';
3
+ import { CryptoPSBT } from '@keystonehq/bc-ur-registry';
4
+ import { EthSignRequest, DataType } from '@keystonehq/bc-ur-registry-eth';
5
+ import * as rlp from '@ethereumjs/rlp';
6
+ import { TransactionFactory } from '@ethereumjs/tx';
7
+ import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
8
+ import { SerializerV3, generateId, IACMessageType } from '@wallfree-dev/serializer';
9
+ import { IACHandlerStatus } from '../../iac/message-handler';
10
+ import { QRType } from '../../../../public-api';
11
+ import { TEMP_BTC_REQUEST_IDS, TEMP_MM_REQUEST_IDS } from '../../../utils/utils';
12
+ import * as bitcoinJS from 'bitcoinjs-lib';
13
+ export class SerializerV3Handler {
14
+ constructor(callback = () => undefined) {
15
+ this.name = 'SerializerV3Handler';
16
+ this.decoder = new URDecoder();
17
+ this.callback = () => undefined;
18
+ this.parts = new Set();
19
+ this.serializer = SerializerV3.getInstance();
20
+ this.callback = callback;
21
+ // completion callback
22
+ }
23
+ async canHandle(data) {
24
+ if (data.toUpperCase().startsWith('UR:')) {
25
+ return true;
26
+ }
27
+ else {
28
+ try {
29
+ const ur = this.getParsedData(data);
30
+ return ur && ur.length > 0 ? true : false;
31
+ }
32
+ catch (e) {
33
+ return false;
34
+ }
35
+ }
36
+ }
37
+ getParsedData(data) {
38
+ if (data.toUpperCase().startsWith('UR:')) {
39
+ return data;
40
+ }
41
+ let ur = data;
42
+ try {
43
+ const url = new URL(data);
44
+ ur = `UR:BYTES/${url.searchParams.get('ur')}`;
45
+ }
46
+ catch (e) { }
47
+ return ur ?? '';
48
+ }
49
+ async receive(_data) {
50
+ const data = this.getParsedData(_data);
51
+ if (this.parts.has(data)) {
52
+ return IACHandlerStatus.PARTIAL;
53
+ }
54
+ this.parts.add(data);
55
+ const canHandle = await this.canHandle(data);
56
+ if (!canHandle) {
57
+ return IACHandlerStatus.UNSUPPORTED;
58
+ }
59
+ try {
60
+ const res = this.decoder.receivePart(data);
61
+ if (!res) {
62
+ // If we already have progress, but the scanner scans a "new set of QRs", it should reset itself and handle the part.
63
+ this.reset();
64
+ return this.receive(_data);
65
+ }
66
+ }
67
+ catch (e) {
68
+ return IACHandlerStatus.UNSUPPORTED;
69
+ }
70
+ if (this.decoder.isComplete() && this.decoder.isSuccess()) {
71
+ return IACHandlerStatus.SUCCESS;
72
+ }
73
+ return IACHandlerStatus.PARTIAL;
74
+ }
75
+ async handleComplete() {
76
+ const result = await this.getResult();
77
+ if (!result) {
78
+ throw new Error('Data not complete!');
79
+ }
80
+ this.callback(result);
81
+ return result;
82
+ }
83
+ async getProgress() {
84
+ return Number(this.decoder.estimatedPercentComplete().toFixed(2));
85
+ }
86
+ async getResult() {
87
+ if (this.resultCache) {
88
+ return this.resultCache;
89
+ }
90
+ if (this.decoder.isComplete() && this.decoder.isSuccess()) {
91
+ const decoded = this.decoder.resultUR();
92
+ this.combinedData = decoded.decodeCBOR();
93
+ if (decoded.type === 'crypto-psbt') {
94
+ const cryptoPsbt = CryptoPSBT.fromCBOR(decoded.cbor);
95
+ const psbt = cryptoPsbt.getPSBT().toString('hex');
96
+ return this.convertPSBT(psbt);
97
+ }
98
+ if (decoded.type === 'eth-sign-request') {
99
+ const signRequest = EthSignRequest.fromCBOR(decoded.cbor);
100
+ return this.convertMetaMaskSignRequest(signRequest);
101
+ }
102
+ const resultUr = bs58check.encode(this.combinedData);
103
+ return { result: await this.serializer.deserialize(resultUr), data: await this.getDataSingle() };
104
+ }
105
+ return undefined;
106
+ }
107
+ /*
108
+ * If we scan an animated QR, but the result is not a serializer message we get the result back
109
+ */
110
+ async getDataSingle() {
111
+ if (!this.combinedData) {
112
+ return undefined;
113
+ }
114
+ const ur = UR.fromBuffer(this.combinedData);
115
+ const part = new UREncoder(ur, Number.MAX_SAFE_INTEGER).nextPart();
116
+ return part.toUpperCase();
117
+ }
118
+ async reset() {
119
+ this.decoder = new URDecoder();
120
+ this.parts = new Set();
121
+ return;
122
+ }
123
+ async convertPSBT(psbt) {
124
+ const decodedPSBT = bitcoinJS.Psbt.fromHex(psbt);
125
+ const isTaproot = decodedPSBT.data.inputs.some((input) => input.tapBip32Derivation);
126
+ const payload = {
127
+ transaction: { psbt },
128
+ publicKey: ''
129
+ };
130
+ if (isTaproot) {
131
+ payload;
132
+ }
133
+ else {
134
+ payload;
135
+ }
136
+ const ownRequestId = generateId(8);
137
+ const IDs = JSON.parse(localStorage.getItem(TEMP_BTC_REQUEST_IDS) ?? '{}');
138
+ IDs[ownRequestId] = { qrType: QRType.BC_UR };
139
+ localStorage.setItem(TEMP_BTC_REQUEST_IDS, JSON.stringify(IDs));
140
+ return {
141
+ result: [
142
+ {
143
+ id: ownRequestId,
144
+ protocol: isTaproot ? MainProtocolSymbols.BTC_TAPROOT : MainProtocolSymbols.BTC_SEGWIT,
145
+ type: IACMessageType.TransactionSignRequest,
146
+ payload
147
+ }
148
+ ],
149
+ data: await this.getDataSingle()
150
+ };
151
+ }
152
+ async convertMetaMaskSignRequest(request) {
153
+ const signData = request.getSignData();
154
+ const sourceFingerprint = request.derivationPath.getSourceFingerprint().toString('hex');
155
+ const ownRequestId = generateId(8);
156
+ const metamaskRequestId = request.getRequestId().toString('hex');
157
+ // TODO: This should be moved to a higher level, probably the "iac.service", and properly store context for any kind of request.
158
+ const IDs = JSON.parse(localStorage.getItem(TEMP_MM_REQUEST_IDS) ?? '{}');
159
+ IDs[ownRequestId] = metamaskRequestId;
160
+ localStorage.setItem(TEMP_MM_REQUEST_IDS, JSON.stringify(IDs));
161
+ const context = { requestId: metamaskRequestId, derivationPath: request.getDerivationPath(), sourceFingerprint };
162
+ const chainId = request.getChainId();
163
+ const protocol = chainId === 10 /* Optimism Mainnet */ || chainId === 420 /* Optimism Goerli */
164
+ ? MainProtocolSymbols.OPTIMISM
165
+ : MainProtocolSymbols.ETH;
166
+ switch (request.getDataType()) {
167
+ case DataType.transaction: {
168
+ // Metamask uses `Transaction#getMessageToSign` to get the transaction bytes which will be later encoded with RLP.
169
+ // This method returns data that is already prepared to be hashed and signed,
170
+ // for EIP-155 compliant transactions it means there's `chainId` put where the `v` component is usually placed.
171
+ // However, the data prepared in that way is not meant to be used to recreate the `Transaction` object.
172
+ // To construct the `Transaction` object on our side we have to use the transaction data to replicate the
173
+ // output we would get with `Transaction#serialized`. This means that we first have to decode the data,
174
+ // drop the EIP-155 compliant parts and finally encode the reduced array of bytes again.
175
+ const rawTx = rlp.decode(signData);
176
+ const [nonce, gasPrice, gasLimit, to, value, data] = rawTx;
177
+ const serializedTx = rlp.encode([
178
+ nonce,
179
+ gasPrice,
180
+ gasLimit,
181
+ to,
182
+ value,
183
+ data,
184
+ Buffer.from([]) /* v */,
185
+ Buffer.from([]) /* r */,
186
+ Buffer.from([]) /* s */
187
+ ]);
188
+ const ethTx = TransactionFactory.fromSerializedData(Buffer.from(serializedTx));
189
+ const tx = ethTx;
190
+ return {
191
+ result: [
192
+ {
193
+ id: ownRequestId,
194
+ protocol,
195
+ type: IACMessageType.TransactionSignRequest,
196
+ payload: {
197
+ transaction: {
198
+ nonce: `0x${tx.nonce.toString(16)}`,
199
+ gasPrice: `0x${tx.gasPrice.toString(16)}`,
200
+ gasLimit: `0x${tx.gasLimit.toString(16)}`,
201
+ to: tx.to.toString(),
202
+ value: `0x${tx.value.toString(16)}`,
203
+ chainId: request.getChainId(),
204
+ data: `0x${tx.data.toString('hex')}`
205
+ },
206
+ publicKey: ''
207
+ }
208
+ }
209
+ ],
210
+ data: await this.getDataSingle(),
211
+ context
212
+ };
213
+ }
214
+ case DataType.typedData:
215
+ const typedDataSignRequest = {
216
+ message: signData.toString(),
217
+ publicKey: ''
218
+ };
219
+ return {
220
+ result: [
221
+ {
222
+ id: ownRequestId,
223
+ protocol,
224
+ type: IACMessageType.MessageSignRequest,
225
+ payload: typedDataSignRequest
226
+ }
227
+ ],
228
+ data: await this.getDataSingle(),
229
+ context
230
+ };
231
+ case DataType.personalMessage:
232
+ const signRequest = {
233
+ message: `0x${signData.toString('hex')}`,
234
+ publicKey: ''
235
+ };
236
+ return {
237
+ result: [
238
+ {
239
+ id: ownRequestId,
240
+ protocol,
241
+ type: IACMessageType.MessageSignRequest,
242
+ payload: signRequest
243
+ }
244
+ ],
245
+ data: await this.getDataSingle(),
246
+ context
247
+ };
248
+ case DataType.typedTransaction: {
249
+ return {
250
+ result: [
251
+ {
252
+ id: ownRequestId,
253
+ protocol,
254
+ type: IACMessageType.TransactionSignRequest,
255
+ payload: {
256
+ transaction: {
257
+ serialized: signData.toString('hex'),
258
+ derivationPath: request.getDerivationPath(),
259
+ masterFingerprint: sourceFingerprint
260
+ },
261
+ publicKey: ''
262
+ }
263
+ }
264
+ ],
265
+ data: await this.getDataSingle(),
266
+ context
267
+ };
268
+ }
269
+ default:
270
+ throw new Error(`Unable to handle data type "${request.getDataType()}"`);
271
+ }
272
+ }
273
+ }
274
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWFsaXplci12My1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9xci9xci1oYW5kbGVyL3NlcmlhbGl6ZXItdjMtaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUMxRCxPQUFPLEtBQUssU0FBUyxNQUFNLG1FQUFtRSxDQUFBO0FBQzlGLE9BQU8sRUFBaUIsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RSxPQUFPLEtBQUssR0FBRyxNQUFNLGlCQUFpQixDQUFBO0FBQ3RDLE9BQU8sRUFBZSxrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRWhFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ2hFLE9BQU8sRUFBZ0MsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQXNCLE1BQU0sMEJBQTBCLENBQUE7QUFDckksT0FBTyxFQUFFLGdCQUFnQixFQUF3QyxNQUFNLDJCQUEyQixDQUFBO0FBQ2xHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUMvQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUNoRixPQUFPLEtBQUssU0FBUyxNQUFNLGVBQWUsQ0FBQTtBQUUxQyxNQUFNLE9BQU8sbUJBQW1CO0lBYTlCLFlBQVksV0FBOEUsR0FBUyxFQUFFLENBQUMsU0FBUztRQVovRixTQUFJLEdBQVcscUJBQXFCLENBQUE7UUFFNUMsWUFBTyxHQUFjLElBQUksU0FBUyxFQUFFLENBQUE7UUFFM0IsYUFBUSxHQUFzRSxHQUFTLEVBQUUsQ0FB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RSxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2hDLE9BQU87aUJBQ1IsQ0FBQTtZQUVILEtBQUssUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQztnQkFDL0IsT0FBTztvQkFDTCxNQUFNLEVBQUU7d0JBQ047NEJBQ0UsRUFBRSxFQUFFLFlBQVk7NEJBQ2hCLFFBQVE7NEJBQ1IsSUFBSSxFQUFFLGNBQWMsQ0FBQyxzQkFBc0I7NEJBQzNDLE9BQU8sRUFBRTtnQ0FDUCxXQUFXLEVBQUU7b0NBQ1gsVUFBVSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO29DQUNwQyxjQUFjLEVBQUUsT0FBTyxDQUFDLGlCQUFpQixFQUFFO29DQUMzQyxpQkFBaUIsRUFBRSxpQkFBaUI7aUNBQ3JDO2dDQUNELFNBQVMsRUFBRSxFQUFFOzZCQUNkO3lCQUNGO3FCQUNGO29CQUNELElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2hDLE9BQU87aUJBQ1IsQ0FBQTtZQUNILENBQUM7WUFFRDtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixPQUFPLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBQzVFLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVUiwgVVJEZWNvZGVyLCBVUkVuY29kZXIgfSBmcm9tICdAbmdyYXZlaW8vYmMtdXInXG5pbXBvcnQgKiBhcyBiczU4Y2hlY2sgZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUvZGVwZW5kZW5jaWVzL3NyYy9iczU4Y2hlY2stMi4xLjIvaW5kZXgnXG5pbXBvcnQgeyBDcnlwdG9LZXlwYXRoLCBDcnlwdG9QU0JUIH0gZnJvbSAnQGtleXN0b25laHEvYmMtdXItcmVnaXN0cnknXG5pbXBvcnQgeyBFdGhTaWduUmVxdWVzdCwgRGF0YVR5cGUgfSBmcm9tICdAa2V5c3RvbmVocS9iYy11ci1yZWdpc3RyeS1ldGgnXG5pbXBvcnQgKiBhcyBybHAgZnJvbSAnQGV0aGVyZXVtanMvcmxwJ1xuaW1wb3J0IHsgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uRmFjdG9yeSB9IGZyb20gJ0BldGhlcmV1bWpzL3R4J1xuaW1wb3J0IHsgQml0Y29pblNlZ3dpdFRyYW5zYWN0aW9uU2lnblJlcXVlc3QsIEJpdGNvaW5UYXByb290VHJhbnNhY3Rpb25TaWduUmVxdWVzdCB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvYml0Y29pbidcbmltcG9ydCB7IE1haW5Qcm90b2NvbFN5bWJvbHMgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjMsIFNlcmlhbGl6ZXJWMywgZ2VuZXJhdGVJZCwgSUFDTWVzc2FnZVR5cGUsIE1lc3NhZ2VTaWduUmVxdWVzdCB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvc2VyaWFsaXplcidcbmltcG9ydCB7IElBQ0hhbmRsZXJTdGF0dXMsIElBQ01lc3NhZ2VIYW5kbGVyLCBJQUNNZXNzYWdlV3JhcHBlciB9IGZyb20gJy4uLy4uL2lhYy9tZXNzYWdlLWhhbmRsZXInXG5pbXBvcnQgeyBRUlR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9wdWJsaWMtYXBpJ1xuaW1wb3J0IHsgVEVNUF9CVENfUkVRVUVTVF9JRFMsIFRFTVBfTU1fUkVRVUVTVF9JRFMgfSBmcm9tICcuLi8uLi8uLi91dGlscy91dGlscydcbmltcG9ydCAqIGFzIGJpdGNvaW5KUyBmcm9tICdiaXRjb2luanMtbGliJ1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplclYzSGFuZGxlciBpbXBsZW1lbnRzIElBQ01lc3NhZ2VIYW5kbGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4ge1xuICBwdWJsaWMgcmVhZG9ubHkgbmFtZTogc3RyaW5nID0gJ1NlcmlhbGl6ZXJWM0hhbmRsZXInXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplcjogU2VyaWFsaXplclYzXG4gIHByaXZhdGUgZGVjb2RlcjogVVJEZWNvZGVyID0gbmV3IFVSRGVjb2RlcigpXG5cbiAgcHJpdmF0ZSByZWFkb25seSBjYWxsYmFjazogKGRhdGE6IElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4pID0+IHZvaWQgPSAoKTogdm9pZCA9PiB1bmRlZmluZWRcblxuICBwcml2YXRlIHBhcnRzOiBTZXQ8c3RyaW5nPiA9IG5ldyBTZXQoKVxuXG4gIHByaXZhdGUgY29tYmluZWREYXRhOiBCdWZmZXIgfCB1bmRlZmluZWRcblxuICBwcml2YXRlIHJlc3VsdENhY2hlOiBJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+IHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3IoY2FsbGJhY2s6IChkYXRhOiBJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+KSA9PiB2b2lkID0gKCk6IHZvaWQgPT4gdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5zZXJpYWxpemVyID0gU2VyaWFsaXplclYzLmdldEluc3RhbmNlKClcbiAgICB0aGlzLmNhbGxiYWNrID0gY2FsbGJhY2tcbiAgICAvLyBjb21wbGV0aW9uIGNhbGxiYWNrXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgY2FuSGFuZGxlKGRhdGE6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmIChkYXRhLnRvVXBwZXJDYXNlKCkuc3RhcnRzV2l0aCgnVVI6JykpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfSBlbHNlIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVyID0gdGhpcy5nZXRQYXJzZWREYXRhKGRhdGEpXG5cbiAgICAgICAgcmV0dXJuIHVyICYmIHVyLmxlbmd0aCA+IDAgPyB0cnVlIDogZmFsc2VcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFBhcnNlZERhdGEoZGF0YTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoZGF0YS50b1VwcGVyQ2FzZSgpLnN0YXJ0c1dpdGgoJ1VSOicpKSB7XG4gICAgICByZXR1cm4gZGF0YVxuICAgIH1cbiAgICBsZXQgdXI6IHN0cmluZyB8IG51bGwgPSBkYXRhXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoZGF0YSlcbiAgICAgIHVyID0gYFVSOkJZVEVTLyR7dXJsLnNlYXJjaFBhcmFtcy5nZXQoJ3VyJyl9YFxuICAgIH0gY2F0Y2ggKGUpIHt9XG5cbiAgICByZXR1cm4gdXIgPz8gJydcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZWNlaXZlKF9kYXRhOiBzdHJpbmcpOiBQcm9taXNlPElBQ0hhbmRsZXJTdGF0dXM+IHtcbiAgICBjb25zdCBkYXRhID0gdGhpcy5nZXRQYXJzZWREYXRhKF9kYXRhKVxuICAgIGlmICh0aGlzLnBhcnRzLmhhcyhkYXRhKSkge1xuICAgICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuUEFSVElBTFxuICAgIH1cbiAgICB0aGlzLnBhcnRzLmFkZChkYXRhKVxuICAgIGNvbnN0IGNhbkhhbmRsZSA9IGF3YWl0IHRoaXMuY2FuSGFuZGxlKGRhdGEpXG4gICAgaWYgKCFjYW5IYW5kbGUpIHtcbiAgICAgIHJldHVybiBJQUNIYW5kbGVyU3RhdHVzLlVOU1VQUE9SVEVEXG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcyA9IHRoaXMuZGVjb2Rlci5yZWNlaXZlUGFydChkYXRhKVxuICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgLy8gSWYgd2UgYWxyZWFkeSBoYXZlIHByb2dyZXNzLCBidXQgdGhlIHNjYW5uZXIgc2NhbnMgYSBcIm5ldyBzZXQgb2YgUVJzXCIsIGl0IHNob3VsZCByZXNldCBpdHNlbGYgYW5kIGhhbmRsZSB0aGUgcGFydC5cbiAgICAgICAgdGhpcy5yZXNldCgpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMucmVjZWl2ZShfZGF0YSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gSUFDSGFuZGxlclN0YXR1cy5VTlNVUFBPUlRFRFxuICAgIH1cblxuICAgIGlmICh0aGlzLmRlY29kZXIuaXNDb21wbGV0ZSgpICYmIHRoaXMuZGVjb2Rlci5pc1N1Y2Nlc3MoKSkge1xuICAgICAgcmV0dXJuIElBQ0hhbmRsZXJTdGF0dXMuU1VDQ0VTU1xuICAgIH1cblxuICAgIHJldHVybiBJQUNIYW5kbGVyU3RhdHVzLlBBUlRJQUxcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVDb21wbGV0ZSgpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdldFJlc3VsdCgpXG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGF0YSBub3QgY29tcGxldGUhJylcbiAgICB9XG4gICAgdGhpcy5jYWxsYmFjayhyZXN1bHQpXG5cbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJvZ3Jlc3MoKTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZGVjb2Rlci5lc3RpbWF0ZWRQZXJjZW50Q29tcGxldGUoKS50b0ZpeGVkKDIpKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFJlc3VsdCgpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4gfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodGhpcy5yZXN1bHRDYWNoZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzdWx0Q2FjaGVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kZWNvZGVyLmlzQ29tcGxldGUoKSAmJiB0aGlzLmRlY29kZXIuaXNTdWNjZXNzKCkpIHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSB0aGlzLmRlY29kZXIucmVzdWx0VVIoKVxuICAgICAgdGhpcy5jb21iaW5lZERhdGEgPSBkZWNvZGVkLmRlY29kZUNCT1IoKVxuXG4gICAgICBpZiAoZGVjb2RlZC50eXBlID09PSAnY3J5cHRvLXBzYnQnKSB7XG4gICAgICAgIGNvbnN0IGNyeXB0b1BzYnQgPSBDcnlwdG9QU0JULmZyb21DQk9SKGRlY29kZWQuY2JvcilcbiAgICAgICAgY29uc3QgcHNidCA9IGNyeXB0b1BzYnQuZ2V0UFNCVCgpLnRvU3RyaW5nKCdoZXgnKVxuXG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRQU0JUKHBzYnQpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZWNvZGVkLnR5cGUgPT09ICdldGgtc2lnbi1yZXF1ZXN0Jykge1xuICAgICAgICBjb25zdCBzaWduUmVxdWVzdCA9IEV0aFNpZ25SZXF1ZXN0LmZyb21DQk9SKGRlY29kZWQuY2JvcilcblxuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0TWV0YU1hc2tTaWduUmVxdWVzdChzaWduUmVxdWVzdClcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzdWx0VXIgPSBiczU4Y2hlY2suZW5jb2RlKHRoaXMuY29tYmluZWREYXRhKVxuXG4gICAgICByZXR1cm4geyByZXN1bHQ6IGF3YWl0IHRoaXMuc2VyaWFsaXplci5kZXNlcmlhbGl6ZShyZXN1bHRVciksIGRhdGE6IGF3YWl0IHRoaXMuZ2V0RGF0YVNpbmdsZSgpIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICAvKlxuICAgKiBJZiB3ZSBzY2FuIGFuIGFuaW1hdGVkIFFSLCBidXQgdGhlIHJlc3VsdCBpcyBub3QgYSBzZXJpYWxpemVyIG1lc3NhZ2Ugd2UgZ2V0IHRoZSByZXN1bHQgYmFja1xuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldERhdGFTaW5nbGUoKTogUHJvbWlzZTxzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAoIXRoaXMuY29tYmluZWREYXRhKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHVyID0gVVIuZnJvbUJ1ZmZlcih0aGlzLmNvbWJpbmVkRGF0YSlcbiAgICBjb25zdCBwYXJ0ID0gbmV3IFVSRW5jb2Rlcih1ciwgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLm5leHRQYXJ0KClcblxuICAgIHJldHVybiBwYXJ0LnRvVXBwZXJDYXNlKClcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmRlY29kZXIgPSBuZXcgVVJEZWNvZGVyKClcbiAgICB0aGlzLnBhcnRzID0gbmV3IFNldCgpXG5cbiAgICByZXR1cm5cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydFBTQlQocHNidDogc3RyaW5nKTogUHJvbWlzZTxJQUNNZXNzYWdlV3JhcHBlcjxJQUNNZXNzYWdlRGVmaW5pdGlvbk9iamVjdFYzW10+PiB7XG4gICAgY29uc3QgZGVjb2RlZFBTQlQgPSBiaXRjb2luSlMuUHNidC5mcm9tSGV4KHBzYnQpXG4gICAgY29uc3QgaXNUYXByb290ID0gZGVjb2RlZFBTQlQuZGF0YS5pbnB1dHMuc29tZSgoaW5wdXQpID0+IGlucHV0LnRhcEJpcDMyRGVyaXZhdGlvbilcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICB0cmFuc2FjdGlvbjogeyBwc2J0IH0sXG4gICAgICBwdWJsaWNLZXk6ICcnXG4gICAgfVxuXG4gICAgaWYgKGlzVGFwcm9vdCkge1xuICAgICAgcGF5bG9hZCBhcyBCaXRjb2luVGFwcm9vdFRyYW5zYWN0aW9uU2lnblJlcXVlc3RcbiAgICB9IGVsc2Uge1xuICAgICAgcGF5bG9hZCBhcyBCaXRjb2luU2Vnd2l0VHJhbnNhY3Rpb25TaWduUmVxdWVzdFxuICAgIH1cblxuICAgIGNvbnN0IG93blJlcXVlc3RJZDogbnVtYmVyID0gZ2VuZXJhdGVJZCg4KVxuICAgIGNvbnN0IElEcyA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oVEVNUF9CVENfUkVRVUVTVF9JRFMpID8/ICd7fScpXG4gICAgSURzW293blJlcXVlc3RJZF0gPSB7IHFyVHlwZTogUVJUeXBlLkJDX1VSIH1cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShURU1QX0JUQ19SRVFVRVNUX0lEUywgSlNPTi5zdHJpbmdpZnkoSURzKSlcblxuICAgIHJldHVybiB7XG4gICAgICByZXN1bHQ6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBvd25SZXF1ZXN0SWQsXG4gICAgICAgICAgcHJvdG9jb2w6IGlzVGFwcm9vdCA/IE1haW5Qcm90b2NvbFN5bWJvbHMuQlRDX1RBUFJPT1QgOiBNYWluUHJvdG9jb2xTeW1ib2xzLkJUQ19TRUdXSVQsXG4gICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuVHJhbnNhY3Rpb25TaWduUmVxdWVzdCxcbiAgICAgICAgICBwYXlsb2FkXG4gICAgICAgIH1cbiAgICAgIF0sXG4gICAgICBkYXRhOiBhd2FpdCB0aGlzLmdldERhdGFTaW5nbGUoKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29udmVydE1ldGFNYXNrU2lnblJlcXVlc3QocmVxdWVzdDogRXRoU2lnblJlcXVlc3QpOiBQcm9taXNlPElBQ01lc3NhZ2VXcmFwcGVyPElBQ01lc3NhZ2VEZWZpbml0aW9uT2JqZWN0VjNbXT4+IHtcbiAgICBjb25zdCBzaWduRGF0YSA9IHJlcXVlc3QuZ2V0U2lnbkRhdGEoKVxuXG4gICAgY29uc3Qgc291cmNlRmluZ2VycHJpbnQgPSAoKHJlcXVlc3QgYXMgYW55KS5kZXJpdmF0aW9uUGF0aCBhcyBDcnlwdG9LZXlwYXRoKS5nZXRTb3VyY2VGaW5nZXJwcmludCgpLnRvU3RyaW5nKCdoZXgnKVxuXG4gICAgY29uc3Qgb3duUmVxdWVzdElkOiBudW1iZXIgPSBnZW5lcmF0ZUlkKDgpXG5cbiAgICBjb25zdCBtZXRhbWFza1JlcXVlc3RJZDogc3RyaW5nID0gcmVxdWVzdC5nZXRSZXF1ZXN0SWQoKS50b1N0cmluZygnaGV4JylcblxuICAgIC8vIFRPRE86IFRoaXMgc2hvdWxkIGJlIG1vdmVkIHRvIGEgaGlnaGVyIGxldmVsLCBwcm9iYWJseSB0aGUgXCJpYWMuc2VydmljZVwiLCBhbmQgcHJvcGVybHkgc3RvcmUgY29udGV4dCBmb3IgYW55IGtpbmQgb2YgcmVxdWVzdC5cbiAgICBjb25zdCBJRHMgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFRFTVBfTU1fUkVRVUVTVF9JRFMpID8/ICd7fScpXG4gICAgSURzW293blJlcXVlc3RJZF0gPSBtZXRhbWFza1JlcXVlc3RJZFxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFRFTVBfTU1fUkVRVUVTVF9JRFMsIEpTT04uc3RyaW5naWZ5KElEcykpXG5cbiAgICBjb25zdCBjb250ZXh0ID0geyByZXF1ZXN0SWQ6IG1ldGFtYXNrUmVxdWVzdElkLCBkZXJpdmF0aW9uUGF0aDogcmVxdWVzdC5nZXREZXJpdmF0aW9uUGF0aCgpLCBzb3VyY2VGaW5nZXJwcmludCB9XG5cbiAgICBjb25zdCBjaGFpbklkID0gcmVxdWVzdC5nZXRDaGFpbklkKClcblxuICAgIGNvbnN0IHByb3RvY29sID1cbiAgICAgIGNoYWluSWQgPT09IDEwIC8qIE9wdGltaXNtIE1haW5uZXQgKi8gfHwgY2hhaW5JZCA9PT0gNDIwIC8qIE9wdGltaXNtIEdvZXJsaSAqL1xuICAgICAgICA/IE1haW5Qcm90b2NvbFN5bWJvbHMuT1BUSU1JU01cbiAgICAgICAgOiBNYWluUHJvdG9jb2xTeW1ib2xzLkVUSFxuXG4gICAgc3dpdGNoIChyZXF1ZXN0LmdldERhdGFUeXBlKCkpIHtcbiAgICAgIGNhc2UgRGF0YVR5cGUudHJhbnNhY3Rpb246IHtcbiAgICAgICAgLy8gTWV0YW1hc2sgdXNlcyBgVHJhbnNhY3Rpb24jZ2V0TWVzc2FnZVRvU2lnbmAgdG8gZ2V0IHRoZSB0cmFuc2FjdGlvbiBieXRlcyB3aGljaCB3aWxsIGJlIGxhdGVyIGVuY29kZWQgd2l0aCBSTFAuXG4gICAgICAgIC8vIFRoaXMgbWV0aG9kIHJldHVybnMgZGF0YSB0aGF0IGlzIGFscmVhZHkgcHJlcGFyZWQgdG8gYmUgaGFzaGVkIGFuZCBzaWduZWQsXG4gICAgICAgIC8vIGZvciBFSVAtMTU1IGNvbXBsaWFudCB0cmFuc2FjdGlvbnMgaXQgbWVhbnMgdGhlcmUncyBgY2hhaW5JZGAgcHV0IHdoZXJlIHRoZSBgdmAgY29tcG9uZW50IGlzIHVzdWFsbHkgcGxhY2VkLlxuICAgICAgICAvLyBIb3dldmVyLCB0aGUgZGF0YSBwcmVwYXJlZCBpbiB0aGF0IHdheSBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCB0byByZWNyZWF0ZSB0aGUgYFRyYW5zYWN0aW9uYCBvYmplY3QuXG4gICAgICAgIC8vIFRvIGNvbnN0cnVjdCB0aGUgYFRyYW5zYWN0aW9uYCBvYmplY3Qgb24gb3VyIHNpZGUgd2UgaGF2ZSB0byB1c2UgdGhlIHRyYW5zYWN0aW9uIGRhdGEgdG8gcmVwbGljYXRlIHRoZVxuICAgICAgICAvLyBvdXRwdXQgd2Ugd291bGQgZ2V0IHdpdGggYFRyYW5zYWN0aW9uI3NlcmlhbGl6ZWRgLiBUaGlzIG1lYW5zIHRoYXQgd2UgZmlyc3QgaGF2ZSB0byBkZWNvZGUgdGhlIGRhdGEsXG4gICAgICAgIC8vIGRyb3AgdGhlIEVJUC0xNTUgY29tcGxpYW50IHBhcnRzIGFuZCBmaW5hbGx5IGVuY29kZSB0aGUgcmVkdWNlZCBhcnJheSBvZiBieXRlcyBhZ2Fpbi5cbiAgICAgICAgY29uc3QgcmF3VHggPSBybHAuZGVjb2RlKHNpZ25EYXRhKVxuICAgICAgICBjb25zdCBbbm9uY2UsIGdhc1ByaWNlLCBnYXNMaW1pdCwgdG8sIHZhbHVlLCBkYXRhXSA9IHJhd1R4XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRUeCA9IHJscC5lbmNvZGUoW1xuICAgICAgICAgIG5vbmNlLFxuICAgICAgICAgIGdhc1ByaWNlLFxuICAgICAgICAgIGdhc0xpbWl0LFxuICAgICAgICAgIHRvLFxuICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgQnVmZmVyLmZyb20oW10pIC8qIHYgKi8sXG4gICAgICAgICAgQnVmZmVyLmZyb20oW10pIC8qIHIgKi8sXG4gICAgICAgICAgQnVmZmVyLmZyb20oW10pIC8qIHMgKi9cbiAgICAgICAgXSlcblxuICAgICAgICBjb25zdCBldGhUeCA9IFRyYW5zYWN0aW9uRmFjdG9yeS5mcm9tU2VyaWFsaXplZERhdGEoQnVmZmVyLmZyb20oc2VyaWFsaXplZFR4KSlcbiAgICAgICAgY29uc3QgdHg6IFRyYW5zYWN0aW9uID0gZXRoVHggYXMgVHJhbnNhY3Rpb25cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogb3duUmVxdWVzdElkLFxuICAgICAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuVHJhbnNhY3Rpb25TaWduUmVxdWVzdCxcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICBub25jZTogYDB4JHt0eC5ub25jZS50b1N0cmluZygxNil9YCxcbiAgICAgICAgICAgICAgICAgIGdhc1ByaWNlOiBgMHgke3R4Lmdhc1ByaWNlLnRvU3RyaW5nKDE2KX1gLFxuICAgICAgICAgICAgICAgICAgZ2FzTGltaXQ6IGAweCR7dHguZ2FzTGltaXQudG9TdHJpbmcoMTYpfWAsXG4gICAgICAgICAgICAgICAgICB0bzogdHgudG8udG9TdHJpbmcoKSxcbiAgICAgICAgICAgICAgICAgIHZhbHVlOiBgMHgke3R4LnZhbHVlLnRvU3RyaW5nKDE2KX1gLFxuICAgICAgICAgICAgICAgICAgY2hhaW5JZDogcmVxdWVzdC5nZXRDaGFpbklkKCksXG4gICAgICAgICAgICAgICAgICBkYXRhOiBgMHgke3R4LmRhdGEudG9TdHJpbmcoJ2hleCcpfWBcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHB1YmxpY0tleTogJydcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5nZXREYXRhU2luZ2xlKCksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNhc2UgRGF0YVR5cGUudHlwZWREYXRhOlxuICAgICAgICBjb25zdCB0eXBlZERhdGFTaWduUmVxdWVzdDogTWVzc2FnZVNpZ25SZXF1ZXN0ID0ge1xuICAgICAgICAgIG1lc3NhZ2U6IHNpZ25EYXRhLnRvU3RyaW5nKCksXG4gICAgICAgICAgcHVibGljS2V5OiAnJ1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXN1bHQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IG93blJlcXVlc3RJZCxcbiAgICAgICAgICAgICAgcHJvdG9jb2wsXG4gICAgICAgICAgICAgIHR5cGU6IElBQ01lc3NhZ2VUeXBlLk1lc3NhZ2VTaWduUmVxdWVzdCxcbiAgICAgICAgICAgICAgcGF5bG9hZDogdHlwZWREYXRhU2lnblJlcXVlc3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGRhdGE6IGF3YWl0IHRoaXMuZ2V0RGF0YVNpbmdsZSgpLFxuICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgfVxuICAgICAgY2FzZSBEYXRhVHlwZS5wZXJzb25hbE1lc3NhZ2U6XG4gICAgICAgIGNvbnN0IHNpZ25SZXF1ZXN0OiBNZXNzYWdlU2lnblJlcXVlc3QgPSB7XG4gICAgICAgICAgbWVzc2FnZTogYDB4JHtzaWduRGF0YS50b1N0cmluZygnaGV4Jyl9YCxcbiAgICAgICAgICBwdWJsaWNLZXk6ICcnXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogb3duUmVxdWVzdElkLFxuICAgICAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuTWVzc2FnZVNpZ25SZXF1ZXN0LFxuICAgICAgICAgICAgICBwYXlsb2FkOiBzaWduUmVxdWVzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIF0sXG4gICAgICAgICAgZGF0YTogYXdhaXQgdGhpcy5nZXREYXRhU2luZ2xlKCksXG4gICAgICAgICAgY29udGV4dFxuICAgICAgICB9XG5cbiAgICAgIGNhc2UgRGF0YVR5cGUudHlwZWRUcmFuc2FjdGlvbjoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc3VsdDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogb3duUmVxdWVzdElkLFxuICAgICAgICAgICAgICBwcm90b2NvbCxcbiAgICAgICAgICAgICAgdHlwZTogSUFDTWVzc2FnZVR5cGUuVHJhbnNhY3Rpb25TaWduUmVxdWVzdCxcbiAgICAgICAgICAgICAgcGF5bG9hZDoge1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uOiB7XG4gICAgICAgICAgICAgICAgICBzZXJpYWxpemVkOiBzaWduRGF0YS50b1N0cmluZygnaGV4JyksXG4gICAgICAgICAgICAgICAgICBkZXJpdmF0aW9uUGF0aDogcmVxdWVzdC5nZXREZXJpdmF0aW9uUGF0aCgpLFxuICAgICAgICAgICAgICAgICAgbWFzdGVyRmluZ2VycHJpbnQ6IHNvdXJjZUZpbmdlcnByaW50XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBwdWJsaWNLZXk6ICcnXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICBdLFxuICAgICAgICAgIGRhdGE6IGF3YWl0IHRoaXMuZ2V0RGF0YVNpbmdsZSgpLFxuICAgICAgICAgIGNvbnRleHRcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBoYW5kbGUgZGF0YSB0eXBlIFwiJHtyZXF1ZXN0LmdldERhdGFUeXBlKCl9XCJgKVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,61 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ionic/angular";
4
+ export class QrScannerService {
5
+ constructor(platform) {
6
+ this.platform = platform;
7
+ /**
8
+ * Shows if the scanner is currently active (scanning) or not
9
+ */
10
+ this.isActive = false;
11
+ this.isMobile = this.platform.is('hybrid');
12
+ }
13
+ /**
14
+ * Start the QR scanner. It will make the background of the page transparent and scan until a QR is detected.
15
+ *
16
+ * @param successCallback
17
+ * @param errorCallback
18
+ */
19
+ scan(successCallback, errorCallback = null) {
20
+ this.show();
21
+ const scanCallback = (scanError, text) => {
22
+ if (scanError) {
23
+ // eslint-disable-next-line no-console
24
+ console.error('Scanner scan error', scanError);
25
+ if (errorCallback) {
26
+ // TODO: Check type
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ errorCallback(scanError);
29
+ }
30
+ }
31
+ // eslint-disable-next-line no-console
32
+ console.log('Scanner scan success', text);
33
+ successCallback(text);
34
+ };
35
+ QRScanner.scan(scanCallback);
36
+ }
37
+ destroy() {
38
+ if (this.isMobile) {
39
+ this.isActive = false;
40
+ QRScanner.destroy();
41
+ }
42
+ }
43
+ show() {
44
+ if (this.isMobile) {
45
+ if (this.isActive) {
46
+ return;
47
+ }
48
+ this.isActive = true;
49
+ QRScanner.show();
50
+ }
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QrScannerService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
53
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QrScannerService, providedIn: 'root' }); }
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: QrScannerService, decorators: [{
56
+ type: Injectable,
57
+ args: [{
58
+ providedIn: 'root'
59
+ }]
60
+ }], ctorParameters: () => [{ type: i1.Platform }] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXItc2Nhbm5lci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9xci1zY2FubmVyL3FyLXNjYW5uZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBOzs7QUFPMUMsTUFBTSxPQUFPLGdCQUFnQjtJQVEzQixZQUE2QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBUC9DOztXQUVHO1FBQ0ksYUFBUSxHQUFZLEtBQUssQ0FBQTtRQUs5QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQzVDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLElBQUksQ0FBQyxlQUF1QyxFQUFFLGdCQUFpRCxJQUFJO1FBQ3hHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUNYLE1BQU0sWUFBWSxHQUFHLENBQUMsU0FBZ0IsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUN0RCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLHNDQUFzQztnQkFDdEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLENBQUMsQ0FBQTtnQkFDOUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztvQkFDbEIsbUJBQW1CO29CQUNuQiw4REFBOEQ7b0JBQzlELGFBQWEsQ0FBQyxTQUFnQixDQUFDLENBQUE7Z0JBQ2pDLENBQUM7WUFDSCxDQUFDO1lBRUQsc0NBQXNDO1lBQ3RDLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUE7WUFDekMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3ZCLENBQUMsQ0FBQTtRQUVELFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDOUIsQ0FBQztJQUVNLE9BQU87UUFDWixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQTtZQUNyQixTQUFTLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFTyxJQUFJO1FBQ1YsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2xCLE9BQU07WUFDUixDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7WUFDcEIsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQ2xCLENBQUM7SUFDSCxDQUFDOytHQXREVSxnQkFBZ0I7bUhBQWhCLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInXG5cbmRlY2xhcmUgbGV0IFFSU2Nhbm5lcjogYW55XG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRclNjYW5uZXJTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFNob3dzIGlmIHRoZSBzY2FubmVyIGlzIGN1cnJlbnRseSBhY3RpdmUgKHNjYW5uaW5nKSBvciBub3RcbiAgICovXG4gIHB1YmxpYyBpc0FjdGl2ZTogYm9vbGVhbiA9IGZhbHNlXG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZTogYm9vbGVhblxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm06IFBsYXRmb3JtKSB7XG4gICAgdGhpcy5pc01vYmlsZSA9IHRoaXMucGxhdGZvcm0uaXMoJ2h5YnJpZCcpXG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgdGhlIFFSIHNjYW5uZXIuIEl0IHdpbGwgbWFrZSB0aGUgYmFja2dyb3VuZCBvZiB0aGUgcGFnZSB0cmFuc3BhcmVudCBhbmQgc2NhbiB1bnRpbCBhIFFSIGlzIGRldGVjdGVkLlxuICAgKlxuICAgKiBAcGFyYW0gc3VjY2Vzc0NhbGxiYWNrXG4gICAqIEBwYXJhbSBlcnJvckNhbGxiYWNrXG4gICAqL1xuICBwdWJsaWMgc2NhbihzdWNjZXNzQ2FsbGJhY2s6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWQsIGVycm9yQ2FsbGJhY2s6ICgodGV4dDogc3RyaW5nKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsKTogdm9pZCB7XG4gICAgdGhpcy5zaG93KClcbiAgICBjb25zdCBzY2FuQ2FsbGJhY2sgPSAoc2NhbkVycm9yOiBFcnJvciwgdGV4dDogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoc2NhbkVycm9yKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NjYW5uZXIgc2NhbiBlcnJvcicsIHNjYW5FcnJvcilcbiAgICAgICAgaWYgKGVycm9yQ2FsbGJhY2spIHtcbiAgICAgICAgICAvLyBUT0RPOiBDaGVjayB0eXBlXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICBlcnJvckNhbGxiYWNrKHNjYW5FcnJvciBhcyBhbnkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKCdTY2FubmVyIHNjYW4gc3VjY2VzcycsIHRleHQpXG4gICAgICBzdWNjZXNzQ2FsbGJhY2sodGV4dClcbiAgICB9XG5cbiAgICBRUlNjYW5uZXIuc2NhbihzY2FuQ2FsbGJhY2spXG4gIH1cblxuICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc01vYmlsZSkge1xuICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlXG4gICAgICBRUlNjYW5uZXIuZGVzdHJveSgpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzaG93KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzTW9iaWxlKSB7XG4gICAgICBpZiAodGhpcy5pc0FjdGl2ZSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlXG4gICAgICBRUlNjYW5uZXIuc2hvdygpXG4gICAgfVxuICB9XG59XG4iXX0=