@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,230 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { SubProtocolSymbols, MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
3
+ import { erc20Tokens } from '@wallfree-dev/ethereum';
4
+ import { ExposedPromise } from '../../utils/ExposedPromise';
5
+ import { getMainIdentifier } from '../../utils/protocol/protocol-identifier';
6
+ import { getDefaultPassiveProtocols, getDefaultActiveProtocols, getDefaultPassiveSubProtocols, getDefaultActiveSubProtocols } from './defaults';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "./store/main/main-protocol-store.service";
9
+ import * as i2 from "./store/sub/sub-protocol-store.service";
10
+ export class ProtocolService {
11
+ constructor(mainProtocolStore, subProtocolStore) {
12
+ this.mainProtocolStore = mainProtocolStore;
13
+ this.subProtocolStore = subProtocolStore;
14
+ this.isReady = new ExposedPromise();
15
+ }
16
+ get isInitialized() {
17
+ return this.mainProtocolStore.isInitialized && this.subProtocolStore.isInitialized;
18
+ }
19
+ async getSupportedProtocols() {
20
+ await this.waitReady();
21
+ return Array.from((await this.mainProtocolStore.supportedProtocols).values());
22
+ }
23
+ async getPassiveProtocols() {
24
+ await this.waitReady();
25
+ return Array.from(this.mainProtocolStore.passiveProtocols.values());
26
+ }
27
+ async getActiveProtocols() {
28
+ await this.waitReady();
29
+ return Array.from(this.mainProtocolStore.activeProtocols.values());
30
+ }
31
+ async getSupportedSubProtocols() {
32
+ await this.waitReady();
33
+ return this.subProtocolStore.supportedProtocols;
34
+ }
35
+ async getPassiveSubProtocols() {
36
+ await this.waitReady();
37
+ return this.subProtocolStore.passiveProtocols;
38
+ }
39
+ async getActiveSubProtocols() {
40
+ await this.waitReady();
41
+ return this.subProtocolStore.activeProtocols;
42
+ }
43
+ async init(config) {
44
+ if (this.isInitialized) {
45
+ // eslint-disable-next-line no-console
46
+ console.log('[ProtocolService] already initialized');
47
+ return;
48
+ }
49
+ await Promise.all([
50
+ this.mainProtocolStore.init({
51
+ passiveProtocols: (config?.passiveProtocols ?? (await getDefaultPassiveProtocols())).concat(config?.extraPassiveProtocols ?? []),
52
+ activeProtocols: (config?.activeProtocols ?? (await getDefaultActiveProtocols())).concat(config?.extraActiveProtocols ?? [])
53
+ }),
54
+ this.subProtocolStore.init({
55
+ passiveSubProtocols: (config?.passiveSubProtocols ?? (await getDefaultPassiveSubProtocols())).concat(config?.extraPassiveSubProtocols ?? []),
56
+ activeSubProtocols: (config?.activeSubProtocols ?? (await getDefaultActiveSubProtocols())).concat(config?.extraActiveSubProtocols ?? [])
57
+ })
58
+ ]);
59
+ this.isReady.resolve();
60
+ }
61
+ async waitReady() {
62
+ return this.isReady.promise;
63
+ }
64
+ async isProtocolActive(protocolOrIdentifier, network) {
65
+ await this.waitReady();
66
+ return this.isProtocolRegistered(protocolOrIdentifier, network, true);
67
+ }
68
+ async isProtocolSupported(protocolOrIdentifier, network) {
69
+ await this.waitReady();
70
+ return this.isProtocolRegistered(protocolOrIdentifier, network, false);
71
+ }
72
+ async getProtocol(protocolOrIdentifier, network, activeOnly = true) {
73
+ await this.waitReady();
74
+ if (typeof protocolOrIdentifier === 'string') {
75
+ let protocol;
76
+ if (this.mainProtocolStore.isIdentifierValid(protocolOrIdentifier)) {
77
+ protocol = await this.mainProtocolStore.getProtocolByIdentifier(protocolOrIdentifier, network, activeOnly);
78
+ }
79
+ else if (this.subProtocolStore.isIdentifierValid(protocolOrIdentifier)) {
80
+ protocol = await this.subProtocolStore.getProtocolByIdentifier(protocolOrIdentifier, network, activeOnly);
81
+ if (protocol === undefined) {
82
+ const mainProtocolIdentifier = getMainIdentifier(protocolOrIdentifier);
83
+ return this.getProtocol(mainProtocolIdentifier, network, activeOnly);
84
+ }
85
+ }
86
+ if (protocol === undefined) {
87
+ throw new Error(`Protocol ${protocolOrIdentifier} not supported`);
88
+ }
89
+ return protocol;
90
+ }
91
+ else {
92
+ return protocolOrIdentifier;
93
+ }
94
+ }
95
+ async addActiveProtocols(protocolOrProtocols) {
96
+ const protocols = Array.isArray(protocolOrProtocols) ? protocolOrProtocols : [protocolOrProtocols];
97
+ const filteredMainProtocols = await Promise.all(protocols.map(async (protocol) => {
98
+ const protocolIdentifier = await protocol.getIdentifier();
99
+ return this.mainProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
100
+ }));
101
+ const mainProtocols = filteredMainProtocols.filter((protocol) => protocol !== undefined);
102
+ const filteredSubProtocols = await Promise.all(protocols.map(async (protocol) => {
103
+ const protocolIdentifier = await protocol.getIdentifier();
104
+ return this.subProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
105
+ }));
106
+ const subProtocols = filteredSubProtocols.filter((protocol) => protocol !== undefined);
107
+ await Promise.all([this.addActiveMainProtocols(mainProtocols), this.addActiveSubProtocols(subProtocols)]);
108
+ }
109
+ async addActiveMainProtocols(protocolOrProtocols) {
110
+ await this.waitReady();
111
+ const protocols = Array.isArray(protocolOrProtocols) ? protocolOrProtocols : [protocolOrProtocols];
112
+ const filtered = await Promise.all(protocols.map(async (protocol) => {
113
+ const protocolIdentifier = await protocol.getIdentifier();
114
+ return this.mainProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
115
+ }));
116
+ const validProtocols = await Promise.all(filtered
117
+ .filter((protocol) => protocol !== undefined)
118
+ .map(async (protocol) => {
119
+ const protocolAndNetworkIdentifier = await this.mainProtocolStore.getProtocolAndNetworkIdentifier(protocol);
120
+ return [protocolAndNetworkIdentifier, protocol];
121
+ }));
122
+ await this.mainProtocolStore.addActiveProtocols(new Map(validProtocols));
123
+ }
124
+ async addActiveSubProtocols(protocolOrProtocols) {
125
+ await this.waitReady();
126
+ const protocols = Array.isArray(protocolOrProtocols) ? protocolOrProtocols : [protocolOrProtocols];
127
+ const filtered = await Promise.all(protocols.map(async (protocol) => {
128
+ const protocolIdentifier = await protocol.getIdentifier();
129
+ return this.subProtocolStore.isIdentifierValid(protocolIdentifier) ? protocol : undefined;
130
+ }));
131
+ const validProtocols = filtered.filter((protocol) => protocol !== undefined);
132
+ const mapped = await Promise.all(validProtocols.map(async (protocol) => {
133
+ const protocolIdentifier = await protocol.getIdentifier();
134
+ const protocolOptions = await protocol.getOptions();
135
+ const mainIdentifier = getMainIdentifier(protocolIdentifier);
136
+ const protocolAndNetworkIdentifier = await this.subProtocolStore.getProtocolAndNetworkIdentifier(mainIdentifier, protocolOptions.network);
137
+ return [protocolAndNetworkIdentifier, [protocolIdentifier, protocol]];
138
+ }));
139
+ await this.subProtocolStore.addActiveProtocols(mapped.reduce((obj, [protocolAndNetworkIdentifier, [protocolIdentifier, protocol]]) => Object.assign(obj, {
140
+ [protocolAndNetworkIdentifier]: Object.assign(obj[protocolAndNetworkIdentifier] ?? {}, { [protocolIdentifier]: protocol })
141
+ }), {}));
142
+ }
143
+ async removeProtocols(protocolIdentifiers) {
144
+ await Promise.all([
145
+ this.mainProtocolStore.removeProtocols(protocolIdentifiers),
146
+ this.subProtocolStore.removeProtocols(protocolIdentifiers)
147
+ ]);
148
+ }
149
+ async isProtocolAvailable(protocolIdentifier, networkIdentifier) {
150
+ await this.waitReady();
151
+ const protocol = this.mainProtocolStore.isIdentifierValid(protocolIdentifier)
152
+ ? await this.mainProtocolStore.getProtocolByIdentifier(protocolIdentifier, networkIdentifier, true, false)
153
+ : await this.subProtocolStore.getProtocolByIdentifier(protocolIdentifier, networkIdentifier, true, false);
154
+ return protocol !== undefined;
155
+ }
156
+ async getSubProtocols(mainProtocol, network, activeOnly = true) {
157
+ await this.waitReady();
158
+ const mainIdentifier = typeof mainProtocol === 'string' ? mainProtocol : await mainProtocol.getIdentifier();
159
+ const targetNetwork = await this.subProtocolStore.getTargetNetwork(mainIdentifier, network);
160
+ const protocolAndNetworkIdentifier = await this.subProtocolStore.getProtocolAndNetworkIdentifier(mainIdentifier, targetNetwork);
161
+ const subProtocolsMap = await (activeOnly ? this.getActiveSubProtocols() : this.getSupportedSubProtocols());
162
+ return Object.values(subProtocolsMap[protocolAndNetworkIdentifier] ?? {}).filter((subProtocol) => subProtocol !== undefined);
163
+ }
164
+ async getAllSubProtocols(mainProtocol, activeOnly = true) {
165
+ await this.waitReady();
166
+ const mainIdentifier = typeof mainProtocol === 'string' ? mainProtocol : await mainProtocol.getIdentifier();
167
+ const subProtocolsMap = await (activeOnly ? this.getActiveSubProtocols() : this.getSupportedSubProtocols());
168
+ return Object.keys(subProtocolsMap)
169
+ .filter((key) => key.startsWith(mainIdentifier))
170
+ .map((key) => Object.values(subProtocolsMap[key] ?? {}))
171
+ .reduce((flatten, next) => flatten.concat(next), []);
172
+ }
173
+ async getNetworksForProtocol(protocolOrIdentifier, activeOnly = true) {
174
+ await this.waitReady();
175
+ const identifier = typeof protocolOrIdentifier === 'string' ? protocolOrIdentifier : await protocolOrIdentifier.getIdentifier();
176
+ return this.mainProtocolStore.isIdentifierValid(identifier)
177
+ ? this.mainProtocolStore.getNetworksForProtocol(identifier, activeOnly)
178
+ : this.subProtocolStore.getNetworksForProtocol(identifier, activeOnly);
179
+ }
180
+ async getNetworkForProtocol(protocolOrIdentifier, networkIdentifier, activeOnly = true) {
181
+ const networks = await this.getNetworksForProtocol(protocolOrIdentifier, activeOnly);
182
+ return networks.find((network) => network.identifier === networkIdentifier);
183
+ }
184
+ async isAddressOfProtocol(protocolOrIdentifier, address) {
185
+ await this.waitReady();
186
+ const protocol = typeof protocolOrIdentifier === 'string' ? await this.getProtocol(protocolOrIdentifier) : protocolOrIdentifier;
187
+ return address.match(await protocol.getAddressValidationPattern()) !== null;
188
+ }
189
+ async getProtocolsForAddress(address) {
190
+ await this.waitReady();
191
+ const protocols = await this.getSupportedProtocols();
192
+ return (await Promise.all(protocols.map(async (protocol) => {
193
+ const isProtocolAddress = await this.isAddressOfProtocol(protocol, address);
194
+ return isProtocolAddress ? protocol : undefined;
195
+ }))).filter((protocol) => protocol !== undefined);
196
+ }
197
+ isKnownProtocolSymbol(symbol) {
198
+ if (this.knownProtocolSymbols === undefined) {
199
+ this.knownProtocolSymbols = new Set([
200
+ ...Object.values(MainProtocolSymbols),
201
+ ...Object.values(SubProtocolSymbols),
202
+ ...Object.values(erc20Tokens).map((token) => token.identifier)
203
+ ]);
204
+ }
205
+ return this.knownProtocolSymbols?.has(symbol) ?? false;
206
+ }
207
+ async isProtocolRegistered(protocolOrIdentifier, network, checkActiveOnly = true) {
208
+ const identifier = typeof protocolOrIdentifier === 'string' ? protocolOrIdentifier : await protocolOrIdentifier.getIdentifier();
209
+ const targetNetwork = this.mainProtocolStore.isIdentifierValid(identifier)
210
+ ? await this.mainProtocolStore.getTargetNetwork(identifier, network)
211
+ : await this.subProtocolStore.getTargetNetwork(identifier, network);
212
+ const targetNetworkIdentifier = typeof targetNetwork === 'string' ? targetNetwork : targetNetwork?.identifier;
213
+ return this.getProtocol(identifier, targetNetwork, checkActiveOnly)
214
+ .then(async (protocol) => {
215
+ const foundIdentifier = await protocol.getIdentifier();
216
+ const foundNetworkIdentifier = targetNetworkIdentifier !== undefined ? (await protocol.getOptions()).network.identifier : undefined;
217
+ return foundIdentifier === identifier && foundNetworkIdentifier === targetNetworkIdentifier;
218
+ })
219
+ .catch(() => false);
220
+ }
221
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProtocolService, deps: [{ token: i1.MainProtocolStoreService }, { token: i2.SubProtocolStoreService }], target: i0.ɵɵFactoryTarget.Injectable }); }
222
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProtocolService, providedIn: 'root' }); }
223
+ }
224
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ProtocolService, decorators: [{
225
+ type: Injectable,
226
+ args: [{
227
+ providedIn: 'root'
228
+ }]
229
+ }], ctorParameters: () => [{ type: i1.MainProtocolStoreService }, { type: i2.SubProtocolStoreService }] });
230
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdG9jb2wuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJvdG9jb2wvcHJvdG9jb2wuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFLTCxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ3BCLE1BQU0sNEJBQTRCLENBQUE7QUFFbkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3BELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQTtBQUk1RSxPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLHlCQUF5QixFQUN6Qiw2QkFBNkIsRUFDN0IsNEJBQTRCLEVBQzdCLE1BQU0sWUFBWSxDQUFBOzs7O0FBYW5CLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQTZCLGlCQUEyQyxFQUFtQixnQkFBeUM7UUFBdkcsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUEwQjtRQUFtQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXlCO1FBSG5ILFlBQU8sR0FBeUIsSUFBSSxjQUFjLEVBQUUsQ0FBQTtJQUdrRSxDQUFDO0lBRXhJLElBQVksYUFBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQTtJQUNwRixDQUFDO0lBRU0sS0FBSyxDQUFDLHFCQUFxQjtRQUNoQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtRQUV0QixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7SUFD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TSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQztZQUNwRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3JFLE1BQU0sdUJBQXVCLEdBQUcsT0FBTyxhQUFhLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUE7UUFFN0csT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDO2FBQ2hFLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDdkIsTUFBTSxlQUFlLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxFQUFFLENBQUE7WUFDdEQsTUFBTSxzQkFBc0IsR0FBRyx1QkFBdUIsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7WUFFbkksT0FBTyxlQUFlLEtBQUssVUFBVSxJQUFJLHNCQUFzQixLQUFLLHVCQUF1QixDQUFBO1FBQzdGLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUN2QixDQUFDOytHQXJWVSxlQUFlO21IQUFmLGVBQWUsY0FGZCxNQUFNOzs0RkFFUCxlQUFlO2tCQUgzQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgSUNvaW5Qcm90b2NvbCxcbiAgSUNvaW5TdWJQcm90b2NvbCxcbiAgUHJvdG9jb2xOZXR3b3JrLFxuICBQcm90b2NvbFN5bWJvbHMsXG4gIFN1YlByb3RvY29sU3ltYm9scyxcbiAgTWFpblByb3RvY29sU3ltYm9sc1xufSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IFByb3RvY29sT3B0aW9ucyB9IGZyb20gJ0B3YWxsZnJlZS1kZXYvY29pbmxpYi1jb3JlL3V0aWxzL1Byb3RvY29sT3B0aW9ucydcbmltcG9ydCB7IGVyYzIwVG9rZW5zIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9ldGhlcmV1bSdcbmltcG9ydCB7IEV4cG9zZWRQcm9taXNlIH0gZnJvbSAnLi4vLi4vdXRpbHMvRXhwb3NlZFByb21pc2UnXG5pbXBvcnQgeyBnZXRNYWluSWRlbnRpZmllciB9IGZyb20gJy4uLy4uL3V0aWxzL3Byb3RvY29sL3Byb3RvY29sLWlkZW50aWZpZXInXG5pbXBvcnQgeyBUb2tlbiB9IGZyb20gJy4uLy4uL3R5cGVzL1Rva2VuJ1xuaW1wb3J0IHsgTWFpblByb3RvY29sU3RvcmVDb25maWcsIE1haW5Qcm90b2NvbFN0b3JlU2VydmljZSB9IGZyb20gJy4vc3RvcmUvbWFpbi9tYWluLXByb3RvY29sLXN0b3JlLnNlcnZpY2UnXG5pbXBvcnQgeyBTdWJQcm90b2NvbFN0b3JlQ29uZmlnLCBTdWJQcm90b2NvbFN0b3JlU2VydmljZSwgU3ViUHJvdG9jb2xzTWFwIH0gZnJvbSAnLi9zdG9yZS9zdWIvc3ViLXByb3RvY29sLXN0b3JlLnNlcnZpY2UnXG5pbXBvcnQge1xuICBnZXREZWZhdWx0UGFzc2l2ZVByb3RvY29scyxcbiAgZ2V0RGVmYXVsdEFjdGl2ZVByb3RvY29scyxcbiAgZ2V0RGVmYXVsdFBhc3NpdmVTdWJQcm90b2NvbHMsXG4gIGdldERlZmF1bHRBY3RpdmVTdWJQcm90b2NvbHNcbn0gZnJvbSAnLi9kZWZhdWx0cydcblxuZXhwb3J0IGludGVyZmFjZSBQcm90b2NvbFNlcnZpY2VDb25maWcgZXh0ZW5kcyBQYXJ0aWFsPE1haW5Qcm90b2NvbFN0b3JlQ29uZmlnICYgU3ViUHJvdG9jb2xTdG9yZUNvbmZpZz4ge1xuICBleHRyYVBhc3NpdmVQcm90b2NvbHM/OiBJQ29pblByb3RvY29sW11cbiAgZXh0cmFBY3RpdmVQcm90b2NvbHM/OiBJQ29pblByb3RvY29sW11cblxuICBleHRyYVBhc3NpdmVTdWJQcm90b2NvbHM/OiBbSUNvaW5Qcm90b2NvbCwgSUNvaW5TdWJQcm90b2NvbF1bXVxuICBleHRyYUFjdGl2ZVN1YlByb3RvY29scz86IFtJQ29pblByb3RvY29sLCBJQ29pblN1YlByb3RvY29sXVtdXG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb3RvY29sU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXNSZWFkeTogRXhwb3NlZFByb21pc2U8dm9pZD4gPSBuZXcgRXhwb3NlZFByb21pc2UoKVxuICBwcml2YXRlIGtub3duUHJvdG9jb2xTeW1ib2xzOiBTZXQ8c3RyaW5nPiB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWFpblByb3RvY29sU3RvcmU6IE1haW5Qcm90b2NvbFN0b3JlU2VydmljZSwgcHJpdmF0ZSByZWFkb25seSBzdWJQcm90b2NvbFN0b3JlOiBTdWJQcm90b2NvbFN0b3JlU2VydmljZSkge31cblxuICBwcml2YXRlIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1haW5Qcm90b2NvbFN0b3JlLmlzSW5pdGlhbGl6ZWQgJiYgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmlzSW5pdGlhbGl6ZWRcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdXBwb3J0ZWRQcm90b2NvbHMoKTogUHJvbWlzZTxJQ29pblByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSgoYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5zdXBwb3J0ZWRQcm90b2NvbHMpLnZhbHVlcygpKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFBhc3NpdmVQcm90b2NvbHMoKTogUHJvbWlzZTxJQ29pblByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm1haW5Qcm90b2NvbFN0b3JlLnBhc3NpdmVQcm90b2NvbHMudmFsdWVzKCkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWN0aXZlUHJvdG9jb2xzKCk6IFByb21pc2U8SUNvaW5Qcm90b2NvbFtdPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5tYWluUHJvdG9jb2xTdG9yZS5hY3RpdmVQcm90b2NvbHMudmFsdWVzKCkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3VwcG9ydGVkU3ViUHJvdG9jb2xzKCk6IFByb21pc2U8U3ViUHJvdG9jb2xzTWFwPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5zdXBwb3J0ZWRQcm90b2NvbHNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQYXNzaXZlU3ViUHJvdG9jb2xzKCk6IFByb21pc2U8U3ViUHJvdG9jb2xzTWFwPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5wYXNzaXZlUHJvdG9jb2xzXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWN0aXZlU3ViUHJvdG9jb2xzKCk6IFByb21pc2U8U3ViUHJvdG9jb2xzTWFwPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5hY3RpdmVQcm90b2NvbHNcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0KGNvbmZpZz86IFByb3RvY29sU2VydmljZUNvbmZpZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmxvZygnW1Byb3RvY29sU2VydmljZV0gYWxyZWFkeSBpbml0aWFsaXplZCcpXG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMubWFpblByb3RvY29sU3RvcmUuaW5pdCh7XG4gICAgICAgIHBhc3NpdmVQcm90b2NvbHM6IChjb25maWc/LnBhc3NpdmVQcm90b2NvbHMgPz8gKGF3YWl0IGdldERlZmF1bHRQYXNzaXZlUHJvdG9jb2xzKCkpKS5jb25jYXQoY29uZmlnPy5leHRyYVBhc3NpdmVQcm90b2NvbHMgPz8gW10pLFxuICAgICAgICBhY3RpdmVQcm90b2NvbHM6IChjb25maWc/LmFjdGl2ZVByb3RvY29scyA/PyAoYXdhaXQgZ2V0RGVmYXVsdEFjdGl2ZVByb3RvY29scygpKSkuY29uY2F0KGNvbmZpZz8uZXh0cmFBY3RpdmVQcm90b2NvbHMgPz8gW10pXG4gICAgICB9KSxcbiAgICAgIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5pbml0KHtcbiAgICAgICAgcGFzc2l2ZVN1YlByb3RvY29sczogKGNvbmZpZz8ucGFzc2l2ZVN1YlByb3RvY29scyA/PyAoYXdhaXQgZ2V0RGVmYXVsdFBhc3NpdmVTdWJQcm90b2NvbHMoKSkpLmNvbmNhdChcbiAgICAgICAgICBjb25maWc/LmV4dHJhUGFzc2l2ZVN1YlByb3RvY29scyA/PyBbXVxuICAgICAgICApLFxuICAgICAgICBhY3RpdmVTdWJQcm90b2NvbHM6IChjb25maWc/LmFjdGl2ZVN1YlByb3RvY29scyA/PyAoYXdhaXQgZ2V0RGVmYXVsdEFjdGl2ZVN1YlByb3RvY29scygpKSkuY29uY2F0KFxuICAgICAgICAgIGNvbmZpZz8uZXh0cmFBY3RpdmVTdWJQcm90b2NvbHMgPz8gW11cbiAgICAgICAgKVxuICAgICAgfSlcbiAgICBdKVxuXG4gICAgdGhpcy5pc1JlYWR5LnJlc29sdmUoKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHdhaXRSZWFkeSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5pc1JlYWR5LnByb21pc2VcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpc1Byb3RvY29sQWN0aXZlKHByb3RvY29sOiBJQ29pblByb3RvY29sKTogUHJvbWlzZTxib29sZWFuPlxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbEFjdGl2ZShpZGVudGlmaWVyOiBQcm90b2NvbFN5bWJvbHMsIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmspOiBQcm9taXNlPGJvb2xlYW4+XG4gIHB1YmxpYyBhc3luYyBpc1Byb3RvY29sQWN0aXZlKHByb3RvY29sT3JJZGVudGlmaWVyOiBJQ29pblByb3RvY29sIHwgUHJvdG9jb2xTeW1ib2xzLCBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgcmV0dXJuIHRoaXMuaXNQcm90b2NvbFJlZ2lzdGVyZWQocHJvdG9jb2xPcklkZW50aWZpZXIsIG5ldHdvcmssIHRydWUpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbFN1cHBvcnRlZChwcm90b2NvbDogSUNvaW5Qcm90b2NvbCk6IFByb21pc2U8Ym9vbGVhbj5cbiAgcHVibGljIGFzeW5jIGlzUHJvdG9jb2xTdXBwb3J0ZWQoaWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzLCBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrKTogUHJvbWlzZTxib29sZWFuPlxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbFN1cHBvcnRlZChwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scywgbmV0d29yaz86IFByb3RvY29sTmV0d29yayk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIHJldHVybiB0aGlzLmlzUHJvdG9jb2xSZWdpc3RlcmVkKHByb3RvY29sT3JJZGVudGlmaWVyLCBuZXR3b3JrLCBmYWxzZSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRQcm90b2NvbChcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scyxcbiAgICBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrIHwgc3RyaW5nLFxuICAgIGFjdGl2ZU9ubHk6IGJvb2xlYW4gPSB0cnVlXG4gICk6IFByb21pc2U8SUNvaW5Qcm90b2NvbD4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGlmICh0eXBlb2YgcHJvdG9jb2xPcklkZW50aWZpZXIgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgcHJvdG9jb2w6IElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWRcblxuICAgICAgaWYgKHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQocHJvdG9jb2xPcklkZW50aWZpZXIpKSB7XG4gICAgICAgIHByb3RvY29sID0gYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXRQcm90b2NvbEJ5SWRlbnRpZmllcihwcm90b2NvbE9ySWRlbnRpZmllciBhcyBNYWluUHJvdG9jb2xTeW1ib2xzLCBuZXR3b3JrLCBhY3RpdmVPbmx5KVxuICAgICAgfSBlbHNlIGlmICh0aGlzLnN1YlByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQocHJvdG9jb2xPcklkZW50aWZpZXIpKSB7XG4gICAgICAgIHByb3RvY29sID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQnlJZGVudGlmaWVyKHByb3RvY29sT3JJZGVudGlmaWVyIGFzIFN1YlByb3RvY29sU3ltYm9scywgbmV0d29yaywgYWN0aXZlT25seSlcbiAgICAgICAgaWYgKHByb3RvY29sID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBtYWluUHJvdG9jb2xJZGVudGlmaWVyID0gZ2V0TWFpbklkZW50aWZpZXIocHJvdG9jb2xPcklkZW50aWZpZXIpXG5cbiAgICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm90b2NvbChtYWluUHJvdG9jb2xJZGVudGlmaWVyLCBuZXR3b3JrLCBhY3RpdmVPbmx5KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm90b2NvbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdG9jb2wgJHtwcm90b2NvbE9ySWRlbnRpZmllcn0gbm90IHN1cHBvcnRlZGApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBwcm90b2NvbFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcHJvdG9jb2xPcklkZW50aWZpZXJcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQWN0aXZlUHJvdG9jb2xzKHByb3RvY29sT3JQcm90b2NvbHM6IElDb2luUHJvdG9jb2wgfCBJQ29pblByb3RvY29sW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBwcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXSA9IEFycmF5LmlzQXJyYXkocHJvdG9jb2xPclByb3RvY29scykgPyBwcm90b2NvbE9yUHJvdG9jb2xzIDogW3Byb3RvY29sT3JQcm90b2NvbHNdXG5cbiAgICBjb25zdCBmaWx0ZXJlZE1haW5Qcm90b2NvbHM6IChJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkKVtdID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcm90b2NvbHMubWFwKGFzeW5jIChwcm90b2NvbDogSUNvaW5Qcm90b2NvbCkgPT4ge1xuICAgICAgICBjb25zdCBwcm90b2NvbElkZW50aWZpZXI6IFByb3RvY29sU3ltYm9scyA9IGF3YWl0IHByb3RvY29sLmdldElkZW50aWZpZXIoKVxuXG4gICAgICAgIHJldHVybiB0aGlzLm1haW5Qcm90b2NvbFN0b3JlLmlzSWRlbnRpZmllclZhbGlkKHByb3RvY29sSWRlbnRpZmllcikgPyBwcm90b2NvbCA6IHVuZGVmaW5lZFxuICAgICAgfSlcbiAgICApXG4gICAgY29uc3QgbWFpblByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gZmlsdGVyZWRNYWluUHJvdG9jb2xzLmZpbHRlcigocHJvdG9jb2w6IElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpID0+IHByb3RvY29sICE9PSB1bmRlZmluZWQpXG5cbiAgICBjb25zdCBmaWx0ZXJlZFN1YlByb3RvY29sczogKElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb3RvY29scy5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID0gYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5pc0lkZW50aWZpZXJWYWxpZChwcm90b2NvbElkZW50aWZpZXIpID8gcHJvdG9jb2wgOiB1bmRlZmluZWRcbiAgICAgIH0pXG4gICAgKVxuICAgIGNvbnN0IHN1YlByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gZmlsdGVyZWRTdWJQcm90b2NvbHMuZmlsdGVyKChwcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IHVuZGVmaW5lZCkgPT4gcHJvdG9jb2wgIT09IHVuZGVmaW5lZClcblxuICAgIGF3YWl0IFByb21pc2UuYWxsKFt0aGlzLmFkZEFjdGl2ZU1haW5Qcm90b2NvbHMobWFpblByb3RvY29scyksIHRoaXMuYWRkQWN0aXZlU3ViUHJvdG9jb2xzKHN1YlByb3RvY29scyldKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGFkZEFjdGl2ZU1haW5Qcm90b2NvbHMocHJvdG9jb2xPclByb3RvY29sczogSUNvaW5Qcm90b2NvbCB8IElDb2luUHJvdG9jb2xbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IHByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gQXJyYXkuaXNBcnJheShwcm90b2NvbE9yUHJvdG9jb2xzKSA/IHByb3RvY29sT3JQcm90b2NvbHMgOiBbcHJvdG9jb2xPclByb3RvY29sc11cbiAgICBjb25zdCBmaWx0ZXJlZDogKElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb3RvY29scy5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID0gYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQocHJvdG9jb2xJZGVudGlmaWVyKSA/IHByb3RvY29sIDogdW5kZWZpbmVkXG4gICAgICB9KVxuICAgIClcbiAgICBjb25zdCB2YWxpZFByb3RvY29sczogW3N0cmluZywgSUNvaW5Qcm90b2NvbF1bXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgZmlsdGVyZWRcbiAgICAgICAgLmZpbHRlcigocHJvdG9jb2w6IElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpID0+IHByb3RvY29sICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXRQcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyKHByb3RvY29sKVxuXG4gICAgICAgICAgcmV0dXJuIFtwcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyLCBwcm90b2NvbF0gYXMgW3N0cmluZywgSUNvaW5Qcm90b2NvbF1cbiAgICAgICAgfSlcbiAgICApXG5cbiAgICBhd2FpdCB0aGlzLm1haW5Qcm90b2NvbFN0b3JlLmFkZEFjdGl2ZVByb3RvY29scyhuZXcgTWFwKHZhbGlkUHJvdG9jb2xzKSlcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBhZGRBY3RpdmVTdWJQcm90b2NvbHMocHJvdG9jb2xPclByb3RvY29sczogSUNvaW5Qcm90b2NvbCB8IElDb2luUHJvdG9jb2xbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IHByb3RvY29sczogSUNvaW5Qcm90b2NvbFtdID0gQXJyYXkuaXNBcnJheShwcm90b2NvbE9yUHJvdG9jb2xzKSA/IHByb3RvY29sT3JQcm90b2NvbHMgOiBbcHJvdG9jb2xPclByb3RvY29sc11cbiAgICBjb25zdCBmaWx0ZXJlZDogKElDb2luUHJvdG9jb2wgfCB1bmRlZmluZWQpW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHByb3RvY29scy5tYXAoYXN5bmMgKHByb3RvY29sOiBJQ29pblByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID0gYXdhaXQgcHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5pc0lkZW50aWZpZXJWYWxpZChwcm90b2NvbElkZW50aWZpZXIpID8gcHJvdG9jb2wgOiB1bmRlZmluZWRcbiAgICAgIH0pXG4gICAgKVxuICAgIGNvbnN0IHZhbGlkUHJvdG9jb2xzOiBJQ29pblByb3RvY29sW10gPSBmaWx0ZXJlZC5maWx0ZXIoKHByb3RvY29sOiBJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkKSA9PiBwcm90b2NvbCAhPT0gdW5kZWZpbmVkKVxuICAgIGNvbnN0IG1hcHBlZDogW3N0cmluZywgW1Byb3RvY29sU3ltYm9scywgSUNvaW5Qcm90b2NvbF1dW10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgIHZhbGlkUHJvdG9jb2xzLm1hcChhc3luYyAocHJvdG9jb2w6IElDb2luUHJvdG9jb2wpID0+IHtcbiAgICAgICAgY29uc3QgcHJvdG9jb2xJZGVudGlmaWVyOiBQcm90b2NvbFN5bWJvbHMgPSBhd2FpdCBwcm90b2NvbC5nZXRJZGVudGlmaWVyKClcbiAgICAgICAgY29uc3QgcHJvdG9jb2xPcHRpb25zOiBQcm90b2NvbE9wdGlvbnMgPSBhd2FpdCBwcm90b2NvbC5nZXRPcHRpb25zKClcblxuICAgICAgICBjb25zdCBtYWluSWRlbnRpZmllcjogTWFpblByb3RvY29sU3ltYm9scyA9IGdldE1haW5JZGVudGlmaWVyKHByb3RvY29sSWRlbnRpZmllcilcbiAgICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIoXG4gICAgICAgICAgbWFpbklkZW50aWZpZXIsXG4gICAgICAgICAgcHJvdG9jb2xPcHRpb25zLm5ldHdvcmtcbiAgICAgICAgKVxuXG4gICAgICAgIHJldHVybiBbcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllciwgW3Byb3RvY29sSWRlbnRpZmllciwgcHJvdG9jb2xdXSBhcyBbc3RyaW5nLCBbUHJvdG9jb2xTeW1ib2xzLCBJQ29pblByb3RvY29sXV1cbiAgICAgIH0pXG4gICAgKVxuXG4gICAgYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmFkZEFjdGl2ZVByb3RvY29scyhcbiAgICAgIG1hcHBlZC5yZWR1Y2UoXG4gICAgICAgIChcbiAgICAgICAgICBvYmo6IFN1YlByb3RvY29sc01hcCxcbiAgICAgICAgICBbcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllciwgW3Byb3RvY29sSWRlbnRpZmllciwgcHJvdG9jb2xdXTogW3N0cmluZywgW1Byb3RvY29sU3ltYm9scywgSUNvaW5Qcm90b2NvbF1dXG4gICAgICAgICkgPT5cbiAgICAgICAgICBPYmplY3QuYXNzaWduKG9iaiwge1xuICAgICAgICAgICAgW3Byb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXJdOiBPYmplY3QuYXNzaWduKG9ialtwcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyXSA/PyB7fSwgeyBbcHJvdG9jb2xJZGVudGlmaWVyXTogcHJvdG9jb2wgfSlcbiAgICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICAgIClcbiAgICApXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgcmVtb3ZlUHJvdG9jb2xzKHByb3RvY29sSWRlbnRpZmllcnM6IFByb3RvY29sU3ltYm9sc1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5yZW1vdmVQcm90b2NvbHMocHJvdG9jb2xJZGVudGlmaWVycyBhcyBNYWluUHJvdG9jb2xTeW1ib2xzW10pLFxuICAgICAgdGhpcy5zdWJQcm90b2NvbFN0b3JlLnJlbW92ZVByb3RvY29scyhwcm90b2NvbElkZW50aWZpZXJzIGFzIFN1YlByb3RvY29sU3ltYm9sc1tdKVxuICAgIF0pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNQcm90b2NvbEF2YWlsYWJsZShwcm90b2NvbElkZW50aWZpZXI6IFByb3RvY29sU3ltYm9scywgbmV0d29ya0lkZW50aWZpZXI6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IHByb3RvY29sOiBJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkID0gdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5pc0lkZW50aWZpZXJWYWxpZChwcm90b2NvbElkZW50aWZpZXIpXG4gICAgICA/IGF3YWl0IHRoaXMubWFpblByb3RvY29sU3RvcmUuZ2V0UHJvdG9jb2xCeUlkZW50aWZpZXIocHJvdG9jb2xJZGVudGlmaWVyIGFzIE1haW5Qcm90b2NvbFN5bWJvbHMsIG5ldHdvcmtJZGVudGlmaWVyLCB0cnVlLCBmYWxzZSlcbiAgICAgIDogYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQnlJZGVudGlmaWVyKHByb3RvY29sSWRlbnRpZmllciBhcyBTdWJQcm90b2NvbFN5bWJvbHMsIG5ldHdvcmtJZGVudGlmaWVyLCB0cnVlLCBmYWxzZSlcblxuICAgIHJldHVybiBwcm90b2NvbCAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0U3ViUHJvdG9jb2xzKFxuICAgIG1haW5Qcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IE1haW5Qcm90b2NvbFN5bWJvbHMsXG4gICAgbmV0d29yaz86IFByb3RvY29sTmV0d29yayB8IHN0cmluZyxcbiAgICBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZVxuICApOiBQcm9taXNlPElDb2luU3ViUHJvdG9jb2xbXT4ge1xuICAgIGF3YWl0IHRoaXMud2FpdFJlYWR5KClcblxuICAgIGNvbnN0IG1haW5JZGVudGlmaWVyID0gdHlwZW9mIG1haW5Qcm90b2NvbCA9PT0gJ3N0cmluZycgPyBtYWluUHJvdG9jb2wgOiBhd2FpdCBtYWluUHJvdG9jb2wuZ2V0SWRlbnRpZmllcigpXG4gICAgY29uc3QgdGFyZ2V0TmV0d29yazogUHJvdG9jb2xOZXR3b3JrIHwgc3RyaW5nIHwgdW5kZWZpbmVkID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFRhcmdldE5ldHdvcmsobWFpbklkZW50aWZpZXIsIG5ldHdvcmspXG4gICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIobWFpbklkZW50aWZpZXIsIHRhcmdldE5ldHdvcmspXG4gICAgY29uc3Qgc3ViUHJvdG9jb2xzTWFwOiBTdWJQcm90b2NvbHNNYXAgPSBhd2FpdCAoYWN0aXZlT25seSA/IHRoaXMuZ2V0QWN0aXZlU3ViUHJvdG9jb2xzKCkgOiB0aGlzLmdldFN1cHBvcnRlZFN1YlByb3RvY29scygpKVxuXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoc3ViUHJvdG9jb2xzTWFwW3Byb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXJdID8/IHt9KS5maWx0ZXIoXG4gICAgICAoc3ViUHJvdG9jb2w6IElDb2luU3ViUHJvdG9jb2wgfCB1bmRlZmluZWQpID0+IHN1YlByb3RvY29sICE9PSB1bmRlZmluZWRcbiAgICApXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsU3ViUHJvdG9jb2xzKFxuICAgIG1haW5Qcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IE1haW5Qcm90b2NvbFN5bWJvbHMsXG4gICAgYWN0aXZlT25seTogYm9vbGVhbiA9IHRydWVcbiAgKTogUHJvbWlzZTxJQ29pblN1YlByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICBjb25zdCBtYWluSWRlbnRpZmllciA9IHR5cGVvZiBtYWluUHJvdG9jb2wgPT09ICdzdHJpbmcnID8gbWFpblByb3RvY29sIDogYXdhaXQgbWFpblByb3RvY29sLmdldElkZW50aWZpZXIoKVxuICAgIGNvbnN0IHN1YlByb3RvY29sc01hcDogU3ViUHJvdG9jb2xzTWFwID0gYXdhaXQgKGFjdGl2ZU9ubHkgPyB0aGlzLmdldEFjdGl2ZVN1YlByb3RvY29scygpIDogdGhpcy5nZXRTdXBwb3J0ZWRTdWJQcm90b2NvbHMoKSlcblxuICAgIHJldHVybiBPYmplY3Qua2V5cyhzdWJQcm90b2NvbHNNYXApXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5zdGFydHNXaXRoKG1haW5JZGVudGlmaWVyKSlcbiAgICAgIC5tYXAoKGtleSkgPT4gT2JqZWN0LnZhbHVlcyhzdWJQcm90b2NvbHNNYXBba2V5XSA/PyB7fSkpXG4gICAgICAucmVkdWNlKChmbGF0dGVuLCBuZXh0KSA9PiBmbGF0dGVuLmNvbmNhdChuZXh0KSwgW10pXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TmV0d29ya3NGb3JQcm90b2NvbChcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scyxcbiAgICBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZVxuICApOiBQcm9taXNlPFByb3RvY29sTmV0d29ya1tdPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgY29uc3QgaWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzID1cbiAgICAgIHR5cGVvZiBwcm90b2NvbE9ySWRlbnRpZmllciA9PT0gJ3N0cmluZycgPyBwcm90b2NvbE9ySWRlbnRpZmllciA6IGF3YWl0IHByb3RvY29sT3JJZGVudGlmaWVyLmdldElkZW50aWZpZXIoKVxuXG4gICAgcmV0dXJuIHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQoaWRlbnRpZmllcilcbiAgICAgID8gdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXROZXR3b3Jrc0ZvclByb3RvY29sKGlkZW50aWZpZXIgYXMgTWFpblByb3RvY29sU3ltYm9scywgYWN0aXZlT25seSlcbiAgICAgIDogdGhpcy5zdWJQcm90b2NvbFN0b3JlLmdldE5ldHdvcmtzRm9yUHJvdG9jb2woaWRlbnRpZmllciBhcyBTdWJQcm90b2NvbFN5bWJvbHMsIGFjdGl2ZU9ubHkpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TmV0d29ya0ZvclByb3RvY29sKFxuICAgIHByb3RvY29sT3JJZGVudGlmaWVyOiBJQ29pblByb3RvY29sIHwgUHJvdG9jb2xTeW1ib2xzLFxuICAgIG5ldHdvcmtJZGVudGlmaWVyOiBzdHJpbmcsXG4gICAgYWN0aXZlT25seTogYm9vbGVhbiA9IHRydWVcbiAgKTogUHJvbWlzZTxQcm90b2NvbE5ldHdvcmsgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBuZXR3b3JrcyA9IGF3YWl0IHRoaXMuZ2V0TmV0d29ya3NGb3JQcm90b2NvbChwcm90b2NvbE9ySWRlbnRpZmllciwgYWN0aXZlT25seSlcblxuICAgIHJldHVybiBuZXR3b3Jrcy5maW5kKChuZXR3b3JrOiBQcm90b2NvbE5ldHdvcmspID0+IG5ldHdvcmsuaWRlbnRpZmllciA9PT0gbmV0d29ya0lkZW50aWZpZXIpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaXNBZGRyZXNzT2ZQcm90b2NvbChwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scywgYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy53YWl0UmVhZHkoKVxuXG4gICAgY29uc3QgcHJvdG9jb2w6IElDb2luUHJvdG9jb2wgPVxuICAgICAgdHlwZW9mIHByb3RvY29sT3JJZGVudGlmaWVyID09PSAnc3RyaW5nJyA/IGF3YWl0IHRoaXMuZ2V0UHJvdG9jb2wocHJvdG9jb2xPcklkZW50aWZpZXIpIDogcHJvdG9jb2xPcklkZW50aWZpZXJcblxuICAgIHJldHVybiBhZGRyZXNzLm1hdGNoKGF3YWl0IHByb3RvY29sLmdldEFkZHJlc3NWYWxpZGF0aW9uUGF0dGVybigpKSAhPT0gbnVsbFxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb3RvY29sc0ZvckFkZHJlc3MoYWRkcmVzczogc3RyaW5nKTogUHJvbWlzZTxJQ29pblByb3RvY29sW10+IHtcbiAgICBhd2FpdCB0aGlzLndhaXRSZWFkeSgpXG5cbiAgICBjb25zdCBwcm90b2NvbHM6IElDb2luUHJvdG9jb2xbXSA9IGF3YWl0IHRoaXMuZ2V0U3VwcG9ydGVkUHJvdG9jb2xzKClcblxuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcHJvdG9jb2xzLm1hcChhc3luYyAocHJvdG9jb2wpID0+IHtcbiAgICAgICAgICBjb25zdCBpc1Byb3RvY29sQWRkcmVzczogYm9vbGVhbiA9IGF3YWl0IHRoaXMuaXNBZGRyZXNzT2ZQcm90b2NvbChwcm90b2NvbCwgYWRkcmVzcylcblxuICAgICAgICAgIHJldHVybiBpc1Byb3RvY29sQWRkcmVzcyA/IHByb3RvY29sIDogdW5kZWZpbmVkXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKS5maWx0ZXIoKHByb3RvY29sOiBJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkKSA9PiBwcm90b2NvbCAhPT0gdW5kZWZpbmVkKVxuICB9XG5cbiAgcHVibGljIGlzS25vd25Qcm90b2NvbFN5bWJvbChzeW1ib2w6IFByb3RvY29sU3ltYm9scyk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLmtub3duUHJvdG9jb2xTeW1ib2xzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMua25vd25Qcm90b2NvbFN5bWJvbHMgPSBuZXcgU2V0KFtcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhNYWluUHJvdG9jb2xTeW1ib2xzKSxcbiAgICAgICAgLi4uT2JqZWN0LnZhbHVlcyhTdWJQcm90b2NvbFN5bWJvbHMpLFxuICAgICAgICAuLi5PYmplY3QudmFsdWVzKGVyYzIwVG9rZW5zKS5tYXAoKHRva2VuOiBUb2tlbikgPT4gdG9rZW4uaWRlbnRpZmllcilcbiAgICAgIF0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMua25vd25Qcm90b2NvbFN5bWJvbHM/LmhhcyhzeW1ib2wpID8/IGZhbHNlXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGlzUHJvdG9jb2xSZWdpc3RlcmVkKFxuICAgIHByb3RvY29sT3JJZGVudGlmaWVyOiBJQ29pblByb3RvY29sIHwgUHJvdG9jb2xTeW1ib2xzLFxuICAgIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmssXG4gICAgY2hlY2tBY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdHlwZW9mIHByb3RvY29sT3JJZGVudGlmaWVyID09PSAnc3RyaW5nJyA/IHByb3RvY29sT3JJZGVudGlmaWVyIDogYXdhaXQgcHJvdG9jb2xPcklkZW50aWZpZXIuZ2V0SWRlbnRpZmllcigpXG4gICAgY29uc3QgdGFyZ2V0TmV0d29yayA9IHRoaXMubWFpblByb3RvY29sU3RvcmUuaXNJZGVudGlmaWVyVmFsaWQoaWRlbnRpZmllcilcbiAgICAgID8gYXdhaXQgdGhpcy5tYWluUHJvdG9jb2xTdG9yZS5nZXRUYXJnZXROZXR3b3JrKGlkZW50aWZpZXIsIG5ldHdvcmspXG4gICAgICA6IGF3YWl0IHRoaXMuc3ViUHJvdG9jb2xTdG9yZS5nZXRUYXJnZXROZXR3b3JrKGlkZW50aWZpZXIsIG5ldHdvcmspXG4gICAgY29uc3QgdGFyZ2V0TmV0d29ya0lkZW50aWZpZXIgPSB0eXBlb2YgdGFyZ2V0TmV0d29yayA9PT0gJ3N0cmluZycgPyB0YXJnZXROZXR3b3JrIDogdGFyZ2V0TmV0d29yaz8uaWRlbnRpZmllclxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0UHJvdG9jb2woaWRlbnRpZmllciwgdGFyZ2V0TmV0d29yaywgY2hlY2tBY3RpdmVPbmx5KVxuICAgICAgLnRoZW4oYXN5bmMgKHByb3RvY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGZvdW5kSWRlbnRpZmllciA9IGF3YWl0IHByb3RvY29sLmdldElkZW50aWZpZXIoKVxuICAgICAgICBjb25zdCBmb3VuZE5ldHdvcmtJZGVudGlmaWVyID0gdGFyZ2V0TmV0d29ya0lkZW50aWZpZXIgIT09IHVuZGVmaW5lZCA/IChhd2FpdCBwcm90b2NvbC5nZXRPcHRpb25zKCkpLm5ldHdvcmsuaWRlbnRpZmllciA6IHVuZGVmaW5lZFxuXG4gICAgICAgIHJldHVybiBmb3VuZElkZW50aWZpZXIgPT09IGlkZW50aWZpZXIgJiYgZm91bmROZXR3b3JrSWRlbnRpZmllciA9PT0gdGFyZ2V0TmV0d29ya0lkZW50aWZpZXJcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,63 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { RuntimeMode } from '../../../types/RuntimeMode';
3
+ import { createNotInitialized } from '../../../utils/not-initialized';
4
+ import { getProtocolAndNetworkIdentifier } from '../../../utils/protocol/protocol-network-identifier';
5
+ import { getProtocolOptionsByIdentifier } from '../../../utils/protocol/protocol-options';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../../environment/base-environment.service";
8
+ import * as i2 from "../../modules/controller/modules.controller";
9
+ export class BaseProtocolStoreService {
10
+ constructor(_tag = '_ProtocolService', environment, modulesController) {
11
+ this._tag = _tag;
12
+ this.environment = environment;
13
+ this.modulesController = modulesController;
14
+ this.notInitialized = createNotInitialized(this._tag, 'Call `init` first.');
15
+ }
16
+ get isInitialized() {
17
+ return this._passiveProtocols !== undefined && this._activeProtocols !== undefined;
18
+ }
19
+ get supportedProtocols() {
20
+ if (this._supportedProtocols === undefined) {
21
+ const passiveProtocols = this._passiveProtocols ?? this.notInitialized();
22
+ const activeProtocols = this._activeProtocols ?? this.notInitialized();
23
+ this._supportedProtocols = this.mergeProtocols(passiveProtocols, activeProtocols);
24
+ }
25
+ return this._supportedProtocols;
26
+ }
27
+ get passiveProtocols() {
28
+ return this._passiveProtocols ?? this.notInitialized();
29
+ }
30
+ get activeProtocols() {
31
+ return this._activeProtocols ?? this.notInitialized();
32
+ }
33
+ async addActiveProtocols(protocols) {
34
+ const activeProtocols = this._activeProtocols ?? this.notInitialized();
35
+ this._activeProtocols = await this.mergeProtocols(protocols, activeProtocols);
36
+ this._supportedProtocols = undefined;
37
+ }
38
+ async init(config) {
39
+ if (this.isInitialized) {
40
+ // eslint-disable-next-line no-console
41
+ console.log(`[${this._tag}] already initialized`);
42
+ return;
43
+ }
44
+ const transformedConfig = await this.transformConfig(config);
45
+ this._passiveProtocols = transformedConfig.passiveProtocols;
46
+ this._activeProtocols = transformedConfig.activeProtocols;
47
+ await this.removeProtocolDuplicates();
48
+ }
49
+ async getProtocolAndNetworkIdentifier(protocolOrIdentifier, network) {
50
+ return getProtocolAndNetworkIdentifier(this.environment.mode, protocolOrIdentifier, network);
51
+ }
52
+ async getTargetNetwork(protocolIdentifier, network) {
53
+ return this.environment.mode === RuntimeMode.ONLINE
54
+ ? network ?? (await getProtocolOptionsByIdentifier(this.modulesController, protocolIdentifier)).network
55
+ : undefined;
56
+ }
57
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseProtocolStoreService, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable }); }
58
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseProtocolStoreService }); }
59
+ }
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BaseProtocolStoreService, decorators: [{
61
+ type: Injectable
62
+ }], ctorParameters: () => [{ type: undefined }, { type: i1.BaseEnvironmentService }, { type: i2.ModulesController }] });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1wcm90b2NvbC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wcm90b2NvbC9zdG9yZS9iYXNlLXByb3RvY29sLXN0b3JlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUE7QUFDeEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUE7QUFDckUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0scURBQXFELENBQUE7QUFDckcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sMENBQTBDLENBQUE7Ozs7QUFVekYsTUFBTSxPQUFnQix3QkFBd0I7SUFhNUMsWUFDbUIsT0FBZSxrQkFBa0IsRUFDL0IsV0FBbUMsRUFDbkMsaUJBQW9DO1FBRnRDLFNBQUksR0FBSixJQUFJLENBQTZCO1FBQy9CLGdCQUFXLEdBQVgsV0FBVyxDQUF3QjtRQUNuQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRXZELElBQUksQ0FBQyxjQUFjLEdBQUcsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxDQUFBO0lBQzdFLENBQUM7SUFFRCxJQUFXLGFBQWE7UUFDdEIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxTQUFTLENBQUE7SUFDcEYsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sZ0JBQWdCLEdBQW1CLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7WUFDeEYsTUFBTSxlQUFlLEdBQW1CLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7WUFFdEYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDbkYsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFBO0lBQ2pDLENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDeEQsQ0FBQztJQUVELElBQVcsZUFBZTtRQUN4QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7SUFDdkQsQ0FBQztJQUVNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxTQUF5QjtRQUN2RCxNQUFNLGVBQWUsR0FBbUIsSUFBSSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtRQUN0RixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUM3RSxJQUFJLENBQUMsbUJBQW1CLEdBQUcsU0FBUyxDQUFBO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQWtCO1FBQ2xDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3ZCLHNDQUFzQztZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksdUJBQXVCLENBQUMsQ0FBQTtZQUVqRCxPQUFNO1FBQ1IsQ0FBQztRQUVELE1BQU0saUJBQWlCLEdBQTRDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVyRyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUE7UUFDM0QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFDLGVBQWUsQ0FBQTtRQUV6RCxNQUFNLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFBO0lBQ3ZDLENBQUM7SUFrQk0sS0FBSyxDQUFDLCtCQUErQixDQUMxQyxvQkFBcUQsRUFDckQsT0FBa0M7UUFFbEMsT0FBTywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM5RixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUMzQixrQkFBbUMsRUFDbkMsT0FBa0M7UUFFbEMsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksS0FBSyxXQUFXLENBQUMsTUFBTTtZQUNqRCxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFDdkcsQ0FBQyxDQUFDLFNBQVMsQ0FBQTtJQUNmLENBQUM7K0dBaEdtQix3QkFBd0I7bUhBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFEN0MsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElDb2luUHJvdG9jb2wsIFByb3RvY29sTmV0d29yaywgUHJvdG9jb2xTeW1ib2xzIH0gZnJvbSAnQHdhbGxmcmVlLWRldi9jb2lubGliLWNvcmUnXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IFJ1bnRpbWVNb2RlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUnVudGltZU1vZGUnXG5pbXBvcnQgeyBjcmVhdGVOb3RJbml0aWFsaXplZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL25vdC1pbml0aWFsaXplZCdcbmltcG9ydCB7IGdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wcm90b2NvbC9wcm90b2NvbC1uZXR3b3JrLWlkZW50aWZpZXInXG5pbXBvcnQgeyBnZXRQcm90b2NvbE9wdGlvbnNCeUlkZW50aWZpZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9wcm90b2NvbC9wcm90b2NvbC1vcHRpb25zJ1xuaW1wb3J0IHsgQmFzZUVudmlyb25tZW50U2VydmljZSB9IGZyb20gJy4uLy4uL2Vudmlyb25tZW50L2Jhc2UtZW52aXJvbm1lbnQuc2VydmljZSdcbmltcG9ydCB7IE1vZHVsZXNDb250cm9sbGVyIH0gZnJvbSAnLi4vLi4vbW9kdWxlcy9jb250cm9sbGVyL21vZHVsZXMuY29udHJvbGxlcidcblxuZXhwb3J0IGludGVyZmFjZSBCYXNlUHJvdG9jb2xTdG9yZUNvbmZpZzxUPiB7XG4gIHBhc3NpdmVQcm90b2NvbHM6IFRcbiAgYWN0aXZlUHJvdG9jb2xzOiBUXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlUHJvdG9jb2xTdG9yZVNlcnZpY2U8XG4gIElDb2luVHlwZSA9IHVua25vd24sXG4gIFN5bWJvbFR5cGUgPSB1bmtub3duLFxuICBDb2xsZWN0aW9uVHlwZSA9IHVua25vd24sXG4gIENvbmZpZ1R5cGUgPSBCYXNlUHJvdG9jb2xTdG9yZUNvbmZpZzxDb2xsZWN0aW9uVHlwZT5cbj4ge1xuICBwcm90ZWN0ZWQgX3N1cHBvcnRlZFByb3RvY29sczogUHJvbWlzZTxDb2xsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZD5cblxuICBwcm90ZWN0ZWQgX3Bhc3NpdmVQcm90b2NvbHM6IENvbGxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkXG4gIHByb3RlY3RlZCBfYWN0aXZlUHJvdG9jb2xzOiBDb2xsZWN0aW9uVHlwZSB8IHVuZGVmaW5lZFxuXG4gIHByb3RlY3RlZCBub3RJbml0aWFsaXplZDogKCkgPT4gbmV2ZXJcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IF90YWc6IHN0cmluZyA9ICdfUHJvdG9jb2xTZXJ2aWNlJyxcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZW52aXJvbm1lbnQ6IEJhc2VFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vZHVsZXNDb250cm9sbGVyOiBNb2R1bGVzQ29udHJvbGxlclxuICApIHtcbiAgICB0aGlzLm5vdEluaXRpYWxpemVkID0gY3JlYXRlTm90SW5pdGlhbGl6ZWQodGhpcy5fdGFnLCAnQ2FsbCBgaW5pdGAgZmlyc3QuJylcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGFzc2l2ZVByb3RvY29scyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuX2FjdGl2ZVByb3RvY29scyAhPT0gdW5kZWZpbmVkXG4gIH1cblxuICBwdWJsaWMgZ2V0IHN1cHBvcnRlZFByb3RvY29scygpOiBQcm9taXNlPENvbGxlY3Rpb25UeXBlPiB7XG4gICAgaWYgKHRoaXMuX3N1cHBvcnRlZFByb3RvY29scyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBwYXNzaXZlUHJvdG9jb2xzOiBDb2xsZWN0aW9uVHlwZSA9IHRoaXMuX3Bhc3NpdmVQcm90b2NvbHMgPz8gdGhpcy5ub3RJbml0aWFsaXplZCgpXG4gICAgICBjb25zdCBhY3RpdmVQcm90b2NvbHM6IENvbGxlY3Rpb25UeXBlID0gdGhpcy5fYWN0aXZlUHJvdG9jb2xzID8/IHRoaXMubm90SW5pdGlhbGl6ZWQoKVxuXG4gICAgICB0aGlzLl9zdXBwb3J0ZWRQcm90b2NvbHMgPSB0aGlzLm1lcmdlUHJvdG9jb2xzKHBhc3NpdmVQcm90b2NvbHMsIGFjdGl2ZVByb3RvY29scylcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydGVkUHJvdG9jb2xzXG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhc3NpdmVQcm90b2NvbHMoKTogQ29sbGVjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9wYXNzaXZlUHJvdG9jb2xzID8/IHRoaXMubm90SW5pdGlhbGl6ZWQoKVxuICB9XG5cbiAgcHVibGljIGdldCBhY3RpdmVQcm90b2NvbHMoKTogQ29sbGVjdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmVQcm90b2NvbHMgPz8gdGhpcy5ub3RJbml0aWFsaXplZCgpXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkQWN0aXZlUHJvdG9jb2xzKHByb3RvY29sczogQ29sbGVjdGlvblR5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhY3RpdmVQcm90b2NvbHM6IENvbGxlY3Rpb25UeXBlID0gdGhpcy5fYWN0aXZlUHJvdG9jb2xzID8/IHRoaXMubm90SW5pdGlhbGl6ZWQoKVxuICAgIHRoaXMuX2FjdGl2ZVByb3RvY29scyA9IGF3YWl0IHRoaXMubWVyZ2VQcm90b2NvbHMocHJvdG9jb2xzLCBhY3RpdmVQcm90b2NvbHMpXG4gICAgdGhpcy5fc3VwcG9ydGVkUHJvdG9jb2xzID0gdW5kZWZpbmVkXG4gIH1cblxuICBwdWJsaWMgYXN5bmMgaW5pdChjb25maWc6IENvbmZpZ1R5cGUpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coYFske3RoaXMuX3RhZ31dIGFscmVhZHkgaW5pdGlhbGl6ZWRgKVxuXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZENvbmZpZzogQmFzZVByb3RvY29sU3RvcmVDb25maWc8Q29sbGVjdGlvblR5cGU+ID0gYXdhaXQgdGhpcy50cmFuc2Zvcm1Db25maWcoY29uZmlnKVxuXG4gICAgdGhpcy5fcGFzc2l2ZVByb3RvY29scyA9IHRyYW5zZm9ybWVkQ29uZmlnLnBhc3NpdmVQcm90b2NvbHNcbiAgICB0aGlzLl9hY3RpdmVQcm90b2NvbHMgPSB0cmFuc2Zvcm1lZENvbmZpZy5hY3RpdmVQcm90b2NvbHNcblxuICAgIGF3YWl0IHRoaXMucmVtb3ZlUHJvdG9jb2xEdXBsaWNhdGVzKClcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCByZW1vdmVQcm90b2NvbHMoaWRlbnRpZmllcnM6IFN5bWJvbFR5cGVbXSk6IFByb21pc2U8dm9pZD5cblxuICBwdWJsaWMgYWJzdHJhY3QgaXNJZGVudGlmaWVyVmFsaWQoaWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhblxuXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRQcm90b2NvbEJ5SWRlbnRpZmllcihcbiAgICBpZGVudGlmaWVyOiBTeW1ib2xUeXBlLFxuICAgIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmsgfCBzdHJpbmcsXG4gICAgYWN0aXZlT25seT86IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxJQ29pblR5cGUgfCB1bmRlZmluZWQ+XG4gIHB1YmxpYyBhYnN0cmFjdCBnZXROZXR3b3Jrc0ZvclByb3RvY29sKGlkZW50aWZpZXI6IFN5bWJvbFR5cGUsIGFjdGl2ZU9ubHk/OiBib29sZWFuKTogUHJvbWlzZTxQcm90b2NvbE5ldHdvcmtbXT5cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdHJhbnNmb3JtQ29uZmlnKGNvbmZpZzogQ29uZmlnVHlwZSk6IFByb21pc2U8QmFzZVByb3RvY29sU3RvcmVDb25maWc8Q29sbGVjdGlvblR5cGU+PlxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgbWVyZ2VQcm90b2NvbHMocHJvdG9jb2xzMTogQ29sbGVjdGlvblR5cGUsIHByb3RvY29sczI6IENvbGxlY3Rpb25UeXBlIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxDb2xsZWN0aW9uVHlwZT5cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgcmVtb3ZlUHJvdG9jb2xEdXBsaWNhdGVzKCk6IFByb21pc2U8dm9pZD5cblxuICBwdWJsaWMgYXN5bmMgZ2V0UHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcihcbiAgICBwcm90b2NvbE9ySWRlbnRpZmllcjogSUNvaW5Qcm90b2NvbCB8IFByb3RvY29sU3ltYm9scyxcbiAgICBuZXR3b3JrPzogUHJvdG9jb2xOZXR3b3JrIHwgc3RyaW5nXG4gICk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGdldFByb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIodGhpcy5lbnZpcm9ubWVudC5tb2RlLCBwcm90b2NvbE9ySWRlbnRpZmllciwgbmV0d29yaylcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUYXJnZXROZXR3b3JrKFxuICAgIHByb3RvY29sSWRlbnRpZmllcjogUHJvdG9jb2xTeW1ib2xzLFxuICAgIG5ldHdvcms/OiBQcm90b2NvbE5ldHdvcmsgfCBzdHJpbmdcbiAgKTogUHJvbWlzZTxQcm90b2NvbE5ldHdvcmsgfCBzdHJpbmcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5lbnZpcm9ubWVudC5tb2RlID09PSBSdW50aW1lTW9kZS5PTkxJTkVcbiAgICAgID8gbmV0d29yayA/PyAoYXdhaXQgZ2V0UHJvdG9jb2xPcHRpb25zQnlJZGVudGlmaWVyKHRoaXMubW9kdWxlc0NvbnRyb2xsZXIsIHByb3RvY29sSWRlbnRpZmllcikpLm5ldHdvcmtcbiAgICAgIDogdW5kZWZpbmVkXG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,91 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { MainProtocolSymbols } from '@wallfree-dev/coinlib-core';
3
+ import { splitProtocolNetworkIdentifier } from '../../../../utils/protocol/protocol-network-identifier';
4
+ import { BaseProtocolStoreService } from '../base-protocol-store.service';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../environment/base-environment.service";
7
+ import * as i2 from "../../../modules/controller/modules.controller";
8
+ export class MainProtocolStoreService extends BaseProtocolStoreService {
9
+ constructor(environment, modulesController) {
10
+ super('MainProtocolService', environment, modulesController);
11
+ }
12
+ async removeProtocols(identifiers) {
13
+ const identifiersSet = new Set(identifiers);
14
+ const protocolKeys = Array.from((await this.supportedProtocols).keys()).filter((key) => {
15
+ const { protocol: protocolIdentifier } = splitProtocolNetworkIdentifier(key);
16
+ return identifiersSet.has(protocolIdentifier);
17
+ });
18
+ protocolKeys.forEach((key) => {
19
+ this._activeProtocols.delete(key);
20
+ this._passiveProtocols.delete(key);
21
+ });
22
+ // reset supported protocols
23
+ this._supportedProtocols = undefined;
24
+ }
25
+ isIdentifierValid(identifier) {
26
+ return Object.values(MainProtocolSymbols).includes(identifier) || !identifier.includes('-');
27
+ }
28
+ async getProtocolByIdentifier(identifier, network, activeOnly = true, retry = true) {
29
+ try {
30
+ const targetNetwork = await this.getTargetNetwork(identifier, network);
31
+ const protocolAndNetworkIdentifier = await this.getProtocolAndNetworkIdentifier(identifier, targetNetwork);
32
+ const protocols = activeOnly ? this.activeProtocols : await this.supportedProtocols;
33
+ const found = protocols.get(protocolAndNetworkIdentifier);
34
+ if (!found && retry) {
35
+ return this.getProtocolByIdentifier(identifier, undefined, activeOnly, false);
36
+ }
37
+ return found;
38
+ }
39
+ catch (error) {
40
+ // eslint-disable-next-line no-console
41
+ console.warn('[MainProtocolStore:getProtocolByIdentifer]', error);
42
+ return undefined;
43
+ }
44
+ }
45
+ async getNetworksForProtocol(identifier, activeOnly = true) {
46
+ const protocols = activeOnly ? this.activeProtocols : await this.supportedProtocols;
47
+ const keys = Array.from(protocols.keys()).filter((protocolAndNetworkIdentifier) => {
48
+ const { protocol: protocolIdentifier } = splitProtocolNetworkIdentifier(protocolAndNetworkIdentifier);
49
+ return protocolIdentifier === identifier;
50
+ });
51
+ return Promise.all(keys.map(async (key) => {
52
+ const protocol = protocols.get(key);
53
+ return (await protocol.getOptions()).network;
54
+ }));
55
+ }
56
+ async transformConfig(config) {
57
+ const [passiveProtocols, activeProtocols] = await Promise.all([
58
+ this.createProtocolMap(config.passiveProtocols),
59
+ this.createProtocolMap(config.activeProtocols)
60
+ ]);
61
+ return { ...config, passiveProtocols, activeProtocols };
62
+ }
63
+ async mergeProtocols(protocols1, protocols2) {
64
+ const entries1 = Array.from(protocols1.entries());
65
+ const entries2 = protocols2 !== undefined ? Array.from(protocols2.entries()) : [];
66
+ return new Map(entries1.concat(entries2));
67
+ }
68
+ async removeProtocolDuplicates() {
69
+ // if a protocol has been set as passive and active, it's considered active
70
+ const activeIdentifiers = Array.from(this._activeProtocols.keys());
71
+ activeIdentifiers.forEach((identifier) => {
72
+ this._passiveProtocols.delete(identifier);
73
+ });
74
+ }
75
+ async createProtocolMap(protocols) {
76
+ const protocolsWithIdentifiers = await Promise.all(protocols.map(async (protocol) => {
77
+ const protocolAndNetworkIdentifier = await this.getProtocolAndNetworkIdentifier(protocol);
78
+ return [protocolAndNetworkIdentifier, protocol];
79
+ }));
80
+ return new Map(protocolsWithIdentifiers);
81
+ }
82
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainProtocolStoreService, deps: [{ token: i1.BaseEnvironmentService }, { token: i2.ModulesController }], target: i0.ɵɵFactoryTarget.Injectable }); }
83
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainProtocolStoreService, providedIn: 'root' }); }
84
+ }
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MainProtocolStoreService, decorators: [{
86
+ type: Injectable,
87
+ args: [{
88
+ providedIn: 'root'
89
+ }]
90
+ }], ctorParameters: () => [{ type: i1.BaseEnvironmentService }, { type: i2.ModulesController }] });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi1wcm90b2NvbC1zdG9yZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9wcm90b2NvbC9zdG9yZS9tYWluL21haW4tcHJvdG9jb2wtc3RvcmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBaUIsbUJBQW1CLEVBQW1CLE1BQU0sNEJBQTRCLENBQUE7QUFDaEcsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sd0RBQXdELENBQUE7QUFDdkcsT0FBTyxFQUFFLHdCQUF3QixFQUEyQixNQUFNLGdDQUFnQyxDQUFBOzs7O0FBV2xHLE1BQU0sT0FBTyx3QkFBeUIsU0FBUSx3QkFLN0M7SUFDQyxZQUFZLFdBQW1DLEVBQUUsaUJBQW9DO1FBQ25GLEtBQUssQ0FBQyxxQkFBcUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxXQUFrQztRQUM3RCxNQUFNLGNBQWMsR0FBZ0IsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDeEQsTUFBTSxZQUFZLEdBQWEsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUN2RyxNQUFNLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsOEJBQThCLENBQUMsR0FBRyxDQUFDLENBQUE7WUFFNUUsT0FBTyxjQUFjLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDL0MsQ0FBQyxDQUFDLENBQUE7UUFFRixZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUU7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NEIsRUFBRSxRQUFRLENBQTRCLENBQUE7UUFDNUUsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtRQUVELE9BQU8sSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtJQUMxQyxDQUFDOytHQTNHVSx3QkFBd0I7bUhBQXhCLHdCQUF3QixjQUZ2QixNQUFNOzs0RkFFUCx3QkFBd0I7a0JBSHBDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBJQ29pblByb3RvY29sLCBNYWluUHJvdG9jb2xTeW1ib2xzLCBQcm90b2NvbE5ldHdvcmsgfSBmcm9tICdAd2FsbGZyZWUtZGV2L2NvaW5saWItY29yZSdcbmltcG9ydCB7IHNwbGl0UHJvdG9jb2xOZXR3b3JrSWRlbnRpZmllciB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzL3Byb3RvY29sL3Byb3RvY29sLW5ldHdvcmstaWRlbnRpZmllcidcbmltcG9ydCB7IEJhc2VQcm90b2NvbFN0b3JlU2VydmljZSwgQmFzZVByb3RvY29sU3RvcmVDb25maWcgfSBmcm9tICcuLi9iYXNlLXByb3RvY29sLXN0b3JlLnNlcnZpY2UnXG5pbXBvcnQgeyBNb2R1bGVzQ29udHJvbGxlciB9IGZyb20gJy4uLy4uLy4uL21vZHVsZXMvY29udHJvbGxlci9tb2R1bGVzLmNvbnRyb2xsZXInXG5pbXBvcnQgeyBCYXNlRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZW52aXJvbm1lbnQvYmFzZS1lbnZpcm9ubWVudC5zZXJ2aWNlJ1xuXG5leHBvcnQgdHlwZSBQcm90b2NvbHNNYXAgPSBNYXA8c3RyaW5nLCBJQ29pblByb3RvY29sPlxuXG5leHBvcnQgdHlwZSBNYWluUHJvdG9jb2xTdG9yZUNvbmZpZyA9IEJhc2VQcm90b2NvbFN0b3JlQ29uZmlnPElDb2luUHJvdG9jb2xbXT5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWFpblByb3RvY29sU3RvcmVTZXJ2aWNlIGV4dGVuZHMgQmFzZVByb3RvY29sU3RvcmVTZXJ2aWNlPFxuICBJQ29pblByb3RvY29sLFxuICBNYWluUHJvdG9jb2xTeW1ib2xzLFxuICBQcm90b2NvbHNNYXAsXG4gIE1haW5Qcm90b2NvbFN0b3JlQ29uZmlnXG4+IHtcbiAgY29uc3RydWN0b3IoZW52aXJvbm1lbnQ6IEJhc2VFbnZpcm9ubWVudFNlcnZpY2UsIG1vZHVsZXNDb250cm9sbGVyOiBNb2R1bGVzQ29udHJvbGxlcikge1xuICAgIHN1cGVyKCdNYWluUHJvdG9jb2xTZXJ2aWNlJywgZW52aXJvbm1lbnQsIG1vZHVsZXNDb250cm9sbGVyKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlbW92ZVByb3RvY29scyhpZGVudGlmaWVyczogTWFpblByb3RvY29sU3ltYm9sc1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgaWRlbnRpZmllcnNTZXQ6IFNldDxzdHJpbmc+ID0gbmV3IFNldChpZGVudGlmaWVycylcbiAgICBjb25zdCBwcm90b2NvbEtleXM6IHN0cmluZ1tdID0gQXJyYXkuZnJvbSgoYXdhaXQgdGhpcy5zdXBwb3J0ZWRQcm90b2NvbHMpLmtleXMoKSkuZmlsdGVyKChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgeyBwcm90b2NvbDogcHJvdG9jb2xJZGVudGlmaWVyIH0gPSBzcGxpdFByb3RvY29sTmV0d29ya0lkZW50aWZpZXIoa2V5KVxuXG4gICAgICByZXR1cm4gaWRlbnRpZmllcnNTZXQuaGFzKHByb3RvY29sSWRlbnRpZmllcilcbiAgICB9KVxuXG4gICAgcHJvdG9jb2xLZXlzLmZvckVhY2goKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICB0aGlzLl9hY3RpdmVQcm90b2NvbHMuZGVsZXRlKGtleSlcbiAgICAgIHRoaXMuX3Bhc3NpdmVQcm90b2NvbHMuZGVsZXRlKGtleSlcbiAgICB9KVxuXG4gICAgLy8gcmVzZXQgc3VwcG9ydGVkIHByb3RvY29sc1xuICAgIHRoaXMuX3N1cHBvcnRlZFByb3RvY29scyA9IHVuZGVmaW5lZFxuICB9XG5cbiAgcHVibGljIGlzSWRlbnRpZmllclZhbGlkKGlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKE1haW5Qcm90b2NvbFN5bWJvbHMpLmluY2x1ZGVzKGlkZW50aWZpZXIgYXMgTWFpblByb3RvY29sU3ltYm9scykgfHwgIWlkZW50aWZpZXIuaW5jbHVkZXMoJy0nKVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFByb3RvY29sQnlJZGVudGlmaWVyKFxuICAgIGlkZW50aWZpZXI6IE1haW5Qcm90b2NvbFN5bWJvbHMsXG4gICAgbmV0d29yaz86IFByb3RvY29sTmV0d29yayB8IHN0cmluZyxcbiAgICBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZSxcbiAgICByZXRyeTogYm9vbGVhbiA9IHRydWVcbiAgKTogUHJvbWlzZTxJQ29pblByb3RvY29sIHwgdW5kZWZpbmVkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHRhcmdldE5ldHdvcms6IFByb3RvY29sTmV0d29yayB8IHN0cmluZyB8IHVuZGVmaW5lZCA9IGF3YWl0IHRoaXMuZ2V0VGFyZ2V0TmV0d29yayhpZGVudGlmaWVyLCBuZXR3b3JrKVxuICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nID0gYXdhaXQgdGhpcy5nZXRQcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyKGlkZW50aWZpZXIsIHRhcmdldE5ldHdvcmspXG4gICAgICBjb25zdCBwcm90b2NvbHM6IFByb3RvY29sc01hcCA9IGFjdGl2ZU9ubHkgPyB0aGlzLmFjdGl2ZVByb3RvY29scyA6IGF3YWl0IHRoaXMuc3VwcG9ydGVkUHJvdG9jb2xzXG4gICAgICBjb25zdCBmb3VuZDogSUNvaW5Qcm90b2NvbCB8IHVuZGVmaW5lZCA9IHByb3RvY29scy5nZXQocHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcilcblxuICAgICAgaWYgKCFmb3VuZCAmJiByZXRyeSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQcm90b2NvbEJ5SWRlbnRpZmllcihpZGVudGlmaWVyLCB1bmRlZmluZWQsIGFjdGl2ZU9ubHksIGZhbHNlKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm91bmRcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUud2FybignW01haW5Qcm90b2NvbFN0b3JlOmdldFByb3RvY29sQnlJZGVudGlmZXJdJywgZXJyb3IpXG5cbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TmV0d29ya3NGb3JQcm90b2NvbChpZGVudGlmaWVyOiBNYWluUHJvdG9jb2xTeW1ib2xzLCBhY3RpdmVPbmx5OiBib29sZWFuID0gdHJ1ZSk6IFByb21pc2U8UHJvdG9jb2xOZXR3b3JrW10+IHtcbiAgICBjb25zdCBwcm90b2NvbHM6IFByb3RvY29sc01hcCA9IGFjdGl2ZU9ubHkgPyB0aGlzLmFjdGl2ZVByb3RvY29scyA6IGF3YWl0IHRoaXMuc3VwcG9ydGVkUHJvdG9jb2xzXG4gICAgY29uc3Qga2V5czogc3RyaW5nW10gPSBBcnJheS5mcm9tKHByb3RvY29scy5rZXlzKCkpLmZpbHRlcigocHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcjogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB7IHByb3RvY29sOiBwcm90b2NvbElkZW50aWZpZXIgfSA9IHNwbGl0UHJvdG9jb2xOZXR3b3JrSWRlbnRpZmllcihwcm90b2NvbEFuZE5ldHdvcmtJZGVudGlmaWVyKVxuXG4gICAgICByZXR1cm4gcHJvdG9jb2xJZGVudGlmaWVyID09PSBpZGVudGlmaWVyXG4gICAgfSlcblxuICAgIHJldHVybiBQcm9taXNlLmFsbChcbiAgICAgIGtleXMubWFwKGFzeW5jIChrZXk6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBwcm90b2NvbDogSUNvaW5Qcm90b2NvbCB8IHVuZGVmaW5lZCA9IHByb3RvY29scy5nZXQoa2V5KVxuXG4gICAgICAgIHJldHVybiAoYXdhaXQgcHJvdG9jb2wuZ2V0T3B0aW9ucygpKS5uZXR3b3JrXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB0cmFuc2Zvcm1Db25maWcoY29uZmlnOiBNYWluUHJvdG9jb2xTdG9yZUNvbmZpZyk6IFByb21pc2U8QmFzZVByb3RvY29sU3RvcmVDb25maWc8UHJvdG9jb2xzTWFwPj4ge1xuICAgIGNvbnN0IFtwYXNzaXZlUHJvdG9jb2xzLCBhY3RpdmVQcm90b2NvbHNdOiBQcm90b2NvbHNNYXBbXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuY3JlYXRlUHJvdG9jb2xNYXAoY29uZmlnLnBhc3NpdmVQcm90b2NvbHMpLFxuICAgICAgdGhpcy5jcmVhdGVQcm90b2NvbE1hcChjb25maWcuYWN0aXZlUHJvdG9jb2xzKVxuICAgIF0pXG5cbiAgICByZXR1cm4geyAuLi5jb25maWcsIHBhc3NpdmVQcm90b2NvbHMsIGFjdGl2ZVByb3RvY29scyB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgbWVyZ2VQcm90b2NvbHMocHJvdG9jb2xzMTogUHJvdG9jb2xzTWFwLCBwcm90b2NvbHMyOiBQcm90b2NvbHNNYXAgfCB1bmRlZmluZWQpOiBQcm9taXNlPFByb3RvY29sc01hcD4ge1xuICAgIGNvbnN0IGVudHJpZXMxOiBbc3RyaW5nLCBJQ29pblByb3RvY29sXVtdID0gQXJyYXkuZnJvbShwcm90b2NvbHMxLmVudHJpZXMoKSlcbiAgICBjb25zdCBlbnRyaWVzMjogW3N0cmluZywgSUNvaW5Qcm90b2NvbF1bXSA9IHByb3RvY29sczIgIT09IHVuZGVmaW5lZCA/IEFycmF5LmZyb20ocHJvdG9jb2xzMi5lbnRyaWVzKCkpIDogW11cblxuICAgIHJldHVybiBuZXcgTWFwKGVudHJpZXMxLmNvbmNhdChlbnRyaWVzMikpXG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcmVtb3ZlUHJvdG9jb2xEdXBsaWNhdGVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIGlmIGEgcHJvdG9jb2wgaGFzIGJlZW4gc2V0IGFzIHBhc3NpdmUgYW5kIGFjdGl2ZSwgaXQncyBjb25zaWRlcmVkIGFjdGl2ZVxuICAgIGNvbnN0IGFjdGl2ZUlkZW50aWZpZXJzOiBzdHJpbmdbXSA9IEFycmF5LmZyb20odGhpcy5fYWN0aXZlUHJvdG9jb2xzLmtleXMoKSlcbiAgICBhY3RpdmVJZGVudGlmaWVycy5mb3JFYWNoKChpZGVudGlmaWVyOiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMuX3Bhc3NpdmVQcm90b2NvbHMuZGVsZXRlKGlkZW50aWZpZXIpXG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlUHJvdG9jb2xNYXAocHJvdG9jb2xzOiBJQ29pblByb3RvY29sW10pOiBQcm9taXNlPFByb3RvY29sc01hcD4ge1xuICAgIGNvbnN0IHByb3RvY29sc1dpdGhJZGVudGlmaWVyczogW3N0cmluZywgSUNvaW5Qcm90b2NvbF1bXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgcHJvdG9jb2xzLm1hcChhc3luYyAocHJvdG9jb2w6IElDb2luUHJvdG9jb2wpID0+IHtcbiAgICAgICAgY29uc3QgcHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllciA9IGF3YWl0IHRoaXMuZ2V0UHJvdG9jb2xBbmROZXR3b3JrSWRlbnRpZmllcihwcm90b2NvbClcblxuICAgICAgICByZXR1cm4gW3Byb3RvY29sQW5kTmV0d29ya0lkZW50aWZpZXIsIHByb3RvY29sXSBhcyBbc3RyaW5nLCBJQ29pblByb3RvY29sXVxuICAgICAgfSlcbiAgICApXG5cbiAgICByZXR1cm4gbmV3IE1hcChwcm90b2NvbHNXaXRoSWRlbnRpZmllcnMpXG4gIH1cbn1cbiJdfQ==