@hsuite/native-connect-angular 1.0.0 → 2.1.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 (188) hide show
  1. package/coverage/coverage-summary.json +53 -49
  2. package/coverage/index.html +100 -100
  3. package/coverage/lcov-report/index.html +100 -100
  4. package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
  5. package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +1 -1
  6. package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
  7. package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +1 -1
  8. package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +13 -19
  9. package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +1 -1
  10. package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
  11. package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +1 -1
  12. package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1 -1
  13. package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1 -1
  14. package/coverage/lcov-report/lib/components/account-selector/index.html +5 -5
  15. package/coverage/lcov-report/lib/components/wallet-account-display/index.html +1 -1
  16. package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
  17. package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +21 -21
  18. package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +475 -451
  19. package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +1 -1
  20. package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
  21. package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +1 -1
  22. package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
  23. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +148 -148
  24. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +17 -17
  25. package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +21 -21
  26. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +17 -17
  27. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +838 -838
  28. package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +1230 -987
  29. package/coverage/lcov-report/lib/components/wallet-session-display/index.html +1 -1
  30. package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
  31. package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +1 -1
  32. package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
  33. package/coverage/lcov-report/lib/directives/index.html +1 -1
  34. package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +1 -1
  35. package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +1 -1
  36. package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +1 -1
  37. package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +1 -1
  38. package/coverage/lcov-report/lib/index.html +1 -1
  39. package/coverage/lcov-report/lib/models/connection-config.model.ts.html +1 -1
  40. package/coverage/lcov-report/lib/models/index.html +7 -7
  41. package/coverage/lcov-report/lib/models/provider-types.ts.html +11 -5
  42. package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1 -1
  43. package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +9 -6
  44. package/coverage/lcov-report/lib/providers/hsuite-native/index.html +10 -10
  45. package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +1 -1
  46. package/coverage/lcov-report/lib/providers/index.html +1 -1
  47. package/coverage/lcov-report/lib/providers/p2p-native/index.html +7 -7
  48. package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +1 -1
  49. package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
  50. package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1 -1
  51. package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +10 -10
  52. package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +1 -1
  53. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1 -1
  54. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +10 -7
  55. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +1 -1
  56. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +1 -1
  57. package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1 -1
  58. package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +1 -1
  59. package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +49 -49
  60. package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1 -1
  61. package/coverage/lcov-report/lib/services/hsuite-auth.interceptor.ts.html +568 -0
  62. package/coverage/lcov-report/lib/services/index.html +50 -20
  63. package/coverage/lcov-report/lib/services/logger.service.ts.html +4 -4
  64. package/coverage/lcov-report/lib/services/smart-session.service.ts.html +1264 -0
  65. package/coverage/lcov-report/lib/services/transaction-builders/active-account-source.ts.html +250 -0
  66. package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
  67. package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +1 -1
  68. package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +318 -318
  69. package/coverage/lcov-report/lib/services/transaction-builders/index.html +24 -9
  70. package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1 -1
  71. package/coverage/lcov-report/lib/services/transaction.service.ts.html +7 -10
  72. package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +9 -12
  73. package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +1 -1
  74. package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +1 -1
  75. package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +4 -7
  76. package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +1 -1
  77. package/coverage/lcov-report/lib/transports/index.html +1 -1
  78. package/coverage/lcov-report/lib/utils/index.html +36 -21
  79. package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +254 -161
  80. package/coverage/lcov-report/lib/utils/ledger-ui-registry.ts.html +676 -0
  81. package/coverage/lcov.info +3236 -2122
  82. package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +1 -1
  83. package/coverage/lib/components/account-selector/account-actions/index.html +1 -1
  84. package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1 -1
  85. package/coverage/lib/components/account-selector/account-filter/index.html +1 -1
  86. package/coverage/lib/components/account-selector/account-formatting.service.ts.html +13 -19
  87. package/coverage/lib/components/account-selector/account-grouping.service.ts.html +1 -1
  88. package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1 -1
  89. package/coverage/lib/components/account-selector/account-list/index.html +1 -1
  90. package/coverage/lib/components/account-selector/account-selector.component.ts.html +1 -1
  91. package/coverage/lib/components/account-selector/account-selector.service.ts.html +1 -1
  92. package/coverage/lib/components/account-selector/index.html +5 -5
  93. package/coverage/lib/components/wallet-account-display/index.html +1 -1
  94. package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +10 -10
  95. package/coverage/lib/components/wallet-connect-button/index.html +21 -21
  96. package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +475 -451
  97. package/coverage/lib/components/wallet-connect-prompt/index.html +1 -1
  98. package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +1 -1
  99. package/coverage/lib/components/wallet-connected-guard/index.html +1 -1
  100. package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +1 -1
  101. package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +148 -148
  102. package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +17 -17
  103. package/coverage/lib/components/wallet-connection-modal/index.html +21 -21
  104. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +17 -17
  105. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +838 -838
  106. package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +1230 -987
  107. package/coverage/lib/components/wallet-session-display/index.html +1 -1
  108. package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +1 -1
  109. package/coverage/lib/components/wallet-transaction-status/index.html +1 -1
  110. package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +1 -1
  111. package/coverage/lib/directives/index.html +1 -1
  112. package/coverage/lib/directives/wallet-connected.directive.ts.html +1 -1
  113. package/coverage/lib/directives/wallet-context.directive.ts.html +1 -1
  114. package/coverage/lib/directives/wallet-events.directive.ts.html +1 -1
  115. package/coverage/lib/hsuite-wallet.module.ts.html +1 -1
  116. package/coverage/lib/index.html +1 -1
  117. package/coverage/lib/models/connection-config.model.ts.html +1 -1
  118. package/coverage/lib/models/index.html +7 -7
  119. package/coverage/lib/models/provider-types.ts.html +11 -5
  120. package/coverage/lib/providers/base-wallet-provider.ts.html +1 -1
  121. package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +9 -6
  122. package/coverage/lib/providers/hsuite-native/index.html +10 -10
  123. package/coverage/lib/providers/hsuite-native-provider.ts.html +1 -1
  124. package/coverage/lib/providers/index.html +1 -1
  125. package/coverage/lib/providers/p2p-native/index.html +7 -7
  126. package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +1 -1
  127. package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +7 -4
  128. package/coverage/lib/providers/wallet-error-handler.ts.html +1 -1
  129. package/coverage/lib/providers/walletconnect/core/index.html +10 -10
  130. package/coverage/lib/providers/walletconnect/core/session-health.ts.html +1 -1
  131. package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1 -1
  132. package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +10 -7
  133. package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +1 -1
  134. package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +1 -1
  135. package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1 -1
  136. package/coverage/lib/providers/walletconnect/signers/index.html +1 -1
  137. package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +49 -49
  138. package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1 -1
  139. package/coverage/lib/services/hsuite-auth.interceptor.ts.html +568 -0
  140. package/coverage/lib/services/index.html +50 -20
  141. package/coverage/lib/services/logger.service.ts.html +4 -4
  142. package/coverage/lib/services/smart-session.service.ts.html +1264 -0
  143. package/coverage/lib/services/transaction-builders/active-account-source.ts.html +250 -0
  144. package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1 -1
  145. package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +1 -1
  146. package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +318 -318
  147. package/coverage/lib/services/transaction-builders/index.html +24 -9
  148. package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +1 -1
  149. package/coverage/lib/services/transaction.service.ts.html +7 -10
  150. package/coverage/lib/services/unified-wallet.service.ts.html +9 -12
  151. package/coverage/lib/services/wallet-context.service.ts.html +1 -1
  152. package/coverage/lib/services/wallet-event-bus.service.ts.html +1 -1
  153. package/coverage/lib/services/wallet-providers.service.ts.html +4 -7
  154. package/coverage/lib/transports/chrome-extension-transport.ts.html +1 -1
  155. package/coverage/lib/transports/index.html +1 -1
  156. package/coverage/lib/utils/index.html +36 -21
  157. package/coverage/lib/utils/ledger-icons.util.ts.html +254 -161
  158. package/coverage/lib/utils/ledger-ui-registry.ts.html +676 -0
  159. package/dist/fesm2022/hsuite-native-connect-angular.mjs +939 -328
  160. package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -1
  161. package/dist/index.d.ts +489 -33
  162. package/package.json +4 -4
  163. package/src/index.ts +26 -0
  164. package/src/lib/components/account-selector/account-formatting.service.ts +8 -10
  165. package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +9 -9
  166. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.spec.ts +89 -0
  167. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +8 -0
  168. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +1 -6
  169. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.spec.ts +173 -0
  170. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +118 -37
  171. package/src/lib/models/provider-types.ts +3 -1
  172. package/src/lib/models/unified-account.model.ts +4 -1
  173. package/src/lib/providers/hsuite-native/channel-client.service.ts +1 -0
  174. package/src/lib/providers/p2p-native/p2p-session-manager.ts +1 -0
  175. package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +2 -1
  176. package/src/lib/services/hsuite-auth.interceptor.ts +159 -0
  177. package/src/lib/services/smart-session.service.ts +378 -0
  178. package/src/lib/services/transaction-builders/active-account-source.spec.ts +75 -0
  179. package/src/lib/services/transaction-builders/active-account-source.ts +55 -0
  180. package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +4 -4
  181. package/src/lib/services/transaction-builders/index.ts +1 -0
  182. package/src/lib/services/transaction.service.ts +7 -4
  183. package/src/lib/services/unified-wallet.service.spec.ts +1 -1
  184. package/src/lib/services/unified-wallet.service.ts +2 -3
  185. package/src/lib/services/wallet-providers.service.ts +0 -1
  186. package/src/lib/utils/index.ts +1 -0
  187. package/src/lib/utils/ledger-icons.util.ts +61 -30
  188. package/src/lib/utils/ledger-ui-registry.ts +197 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">84.27% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/240</span>
28
+ <span class='fraction'>209/248</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">50% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
35
+ <span class='fraction'>4/8</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
- <span class="strong">0% </span>
40
+ <span class="strong">40% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>4/10</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">84.27% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/240</span>
49
+ <span class='fraction'>209/248</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -303,416 +303,440 @@
303
303
  <a name='L238'></a><a href='#L238'>238</a>
304
304
  <a name='L239'></a><a href='#L239'>239</a>
305
305
  <a name='L240'></a><a href='#L240'>240</a>
306
- <a name='L241'></a><a href='#L241'>241</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
307
- <span class="cline-any cline-no">&nbsp;</span>
308
- <span class="cline-any cline-no">&nbsp;</span>
309
- <span class="cline-any cline-no">&nbsp;</span>
310
- <span class="cline-any cline-no">&nbsp;</span>
311
- <span class="cline-any cline-no">&nbsp;</span>
312
- <span class="cline-any cline-no">&nbsp;</span>
313
- <span class="cline-any cline-no">&nbsp;</span>
314
- <span class="cline-any cline-no">&nbsp;</span>
315
- <span class="cline-any cline-no">&nbsp;</span>
316
- <span class="cline-any cline-no">&nbsp;</span>
317
- <span class="cline-any cline-no">&nbsp;</span>
318
- <span class="cline-any cline-no">&nbsp;</span>
319
- <span class="cline-any cline-no">&nbsp;</span>
320
- <span class="cline-any cline-no">&nbsp;</span>
321
- <span class="cline-any cline-no">&nbsp;</span>
322
- <span class="cline-any cline-no">&nbsp;</span>
323
- <span class="cline-any cline-no">&nbsp;</span>
324
- <span class="cline-any cline-no">&nbsp;</span>
325
- <span class="cline-any cline-no">&nbsp;</span>
326
- <span class="cline-any cline-no">&nbsp;</span>
327
- <span class="cline-any cline-no">&nbsp;</span>
328
- <span class="cline-any cline-no">&nbsp;</span>
329
- <span class="cline-any cline-no">&nbsp;</span>
330
- <span class="cline-any cline-no">&nbsp;</span>
331
- <span class="cline-any cline-no">&nbsp;</span>
332
- <span class="cline-any cline-no">&nbsp;</span>
333
- <span class="cline-any cline-no">&nbsp;</span>
334
- <span class="cline-any cline-no">&nbsp;</span>
335
- <span class="cline-any cline-no">&nbsp;</span>
336
- <span class="cline-any cline-no">&nbsp;</span>
337
- <span class="cline-any cline-no">&nbsp;</span>
338
- <span class="cline-any cline-no">&nbsp;</span>
339
- <span class="cline-any cline-no">&nbsp;</span>
340
- <span class="cline-any cline-no">&nbsp;</span>
341
- <span class="cline-any cline-no">&nbsp;</span>
342
- <span class="cline-any cline-no">&nbsp;</span>
343
- <span class="cline-any cline-no">&nbsp;</span>
344
- <span class="cline-any cline-no">&nbsp;</span>
345
- <span class="cline-any cline-no">&nbsp;</span>
346
- <span class="cline-any cline-no">&nbsp;</span>
347
- <span class="cline-any cline-no">&nbsp;</span>
348
- <span class="cline-any cline-no">&nbsp;</span>
349
- <span class="cline-any cline-no">&nbsp;</span>
350
- <span class="cline-any cline-no">&nbsp;</span>
351
- <span class="cline-any cline-no">&nbsp;</span>
352
- <span class="cline-any cline-no">&nbsp;</span>
353
- <span class="cline-any cline-no">&nbsp;</span>
354
- <span class="cline-any cline-no">&nbsp;</span>
355
- <span class="cline-any cline-no">&nbsp;</span>
356
- <span class="cline-any cline-no">&nbsp;</span>
357
- <span class="cline-any cline-no">&nbsp;</span>
358
- <span class="cline-any cline-no">&nbsp;</span>
359
- <span class="cline-any cline-no">&nbsp;</span>
360
- <span class="cline-any cline-no">&nbsp;</span>
361
- <span class="cline-any cline-no">&nbsp;</span>
362
- <span class="cline-any cline-no">&nbsp;</span>
363
- <span class="cline-any cline-no">&nbsp;</span>
364
- <span class="cline-any cline-no">&nbsp;</span>
365
- <span class="cline-any cline-no">&nbsp;</span>
366
- <span class="cline-any cline-no">&nbsp;</span>
367
- <span class="cline-any cline-no">&nbsp;</span>
368
- <span class="cline-any cline-no">&nbsp;</span>
369
- <span class="cline-any cline-no">&nbsp;</span>
370
- <span class="cline-any cline-no">&nbsp;</span>
371
- <span class="cline-any cline-no">&nbsp;</span>
372
- <span class="cline-any cline-no">&nbsp;</span>
373
- <span class="cline-any cline-no">&nbsp;</span>
374
- <span class="cline-any cline-no">&nbsp;</span>
375
- <span class="cline-any cline-no">&nbsp;</span>
376
- <span class="cline-any cline-no">&nbsp;</span>
377
- <span class="cline-any cline-no">&nbsp;</span>
378
- <span class="cline-any cline-no">&nbsp;</span>
379
- <span class="cline-any cline-no">&nbsp;</span>
380
- <span class="cline-any cline-no">&nbsp;</span>
381
- <span class="cline-any cline-no">&nbsp;</span>
382
- <span class="cline-any cline-no">&nbsp;</span>
383
- <span class="cline-any cline-no">&nbsp;</span>
384
- <span class="cline-any cline-no">&nbsp;</span>
385
- <span class="cline-any cline-no">&nbsp;</span>
386
- <span class="cline-any cline-no">&nbsp;</span>
387
- <span class="cline-any cline-no">&nbsp;</span>
388
- <span class="cline-any cline-no">&nbsp;</span>
389
- <span class="cline-any cline-no">&nbsp;</span>
390
- <span class="cline-any cline-no">&nbsp;</span>
391
- <span class="cline-any cline-no">&nbsp;</span>
392
- <span class="cline-any cline-no">&nbsp;</span>
393
- <span class="cline-any cline-no">&nbsp;</span>
394
- <span class="cline-any cline-no">&nbsp;</span>
395
- <span class="cline-any cline-no">&nbsp;</span>
396
- <span class="cline-any cline-no">&nbsp;</span>
397
- <span class="cline-any cline-no">&nbsp;</span>
398
- <span class="cline-any cline-no">&nbsp;</span>
399
- <span class="cline-any cline-no">&nbsp;</span>
400
- <span class="cline-any cline-no">&nbsp;</span>
401
- <span class="cline-any cline-no">&nbsp;</span>
402
- <span class="cline-any cline-no">&nbsp;</span>
403
- <span class="cline-any cline-no">&nbsp;</span>
404
- <span class="cline-any cline-no">&nbsp;</span>
405
- <span class="cline-any cline-no">&nbsp;</span>
406
- <span class="cline-any cline-no">&nbsp;</span>
407
- <span class="cline-any cline-no">&nbsp;</span>
408
- <span class="cline-any cline-no">&nbsp;</span>
409
- <span class="cline-any cline-no">&nbsp;</span>
410
- <span class="cline-any cline-no">&nbsp;</span>
411
- <span class="cline-any cline-no">&nbsp;</span>
412
- <span class="cline-any cline-no">&nbsp;</span>
413
- <span class="cline-any cline-no">&nbsp;</span>
414
- <span class="cline-any cline-no">&nbsp;</span>
415
- <span class="cline-any cline-no">&nbsp;</span>
416
- <span class="cline-any cline-no">&nbsp;</span>
417
- <span class="cline-any cline-no">&nbsp;</span>
418
- <span class="cline-any cline-no">&nbsp;</span>
419
- <span class="cline-any cline-no">&nbsp;</span>
420
- <span class="cline-any cline-no">&nbsp;</span>
421
- <span class="cline-any cline-no">&nbsp;</span>
422
- <span class="cline-any cline-no">&nbsp;</span>
423
- <span class="cline-any cline-no">&nbsp;</span>
424
- <span class="cline-any cline-no">&nbsp;</span>
425
- <span class="cline-any cline-no">&nbsp;</span>
426
- <span class="cline-any cline-no">&nbsp;</span>
427
- <span class="cline-any cline-no">&nbsp;</span>
428
- <span class="cline-any cline-no">&nbsp;</span>
429
- <span class="cline-any cline-no">&nbsp;</span>
430
- <span class="cline-any cline-no">&nbsp;</span>
431
- <span class="cline-any cline-no">&nbsp;</span>
432
- <span class="cline-any cline-no">&nbsp;</span>
433
- <span class="cline-any cline-no">&nbsp;</span>
434
- <span class="cline-any cline-no">&nbsp;</span>
435
- <span class="cline-any cline-no">&nbsp;</span>
436
- <span class="cline-any cline-no">&nbsp;</span>
437
- <span class="cline-any cline-no">&nbsp;</span>
438
- <span class="cline-any cline-no">&nbsp;</span>
439
- <span class="cline-any cline-no">&nbsp;</span>
440
- <span class="cline-any cline-no">&nbsp;</span>
441
- <span class="cline-any cline-no">&nbsp;</span>
442
- <span class="cline-any cline-no">&nbsp;</span>
443
- <span class="cline-any cline-no">&nbsp;</span>
444
- <span class="cline-any cline-no">&nbsp;</span>
445
- <span class="cline-any cline-no">&nbsp;</span>
446
- <span class="cline-any cline-no">&nbsp;</span>
447
- <span class="cline-any cline-no">&nbsp;</span>
448
- <span class="cline-any cline-no">&nbsp;</span>
449
- <span class="cline-any cline-no">&nbsp;</span>
450
- <span class="cline-any cline-no">&nbsp;</span>
451
- <span class="cline-any cline-no">&nbsp;</span>
452
- <span class="cline-any cline-no">&nbsp;</span>
453
- <span class="cline-any cline-no">&nbsp;</span>
454
- <span class="cline-any cline-no">&nbsp;</span>
455
- <span class="cline-any cline-no">&nbsp;</span>
456
- <span class="cline-any cline-no">&nbsp;</span>
457
- <span class="cline-any cline-no">&nbsp;</span>
458
- <span class="cline-any cline-no">&nbsp;</span>
459
- <span class="cline-any cline-no">&nbsp;</span>
460
- <span class="cline-any cline-no">&nbsp;</span>
461
- <span class="cline-any cline-no">&nbsp;</span>
462
- <span class="cline-any cline-no">&nbsp;</span>
463
- <span class="cline-any cline-no">&nbsp;</span>
464
- <span class="cline-any cline-no">&nbsp;</span>
465
- <span class="cline-any cline-no">&nbsp;</span>
466
- <span class="cline-any cline-no">&nbsp;</span>
467
- <span class="cline-any cline-no">&nbsp;</span>
468
- <span class="cline-any cline-no">&nbsp;</span>
469
- <span class="cline-any cline-no">&nbsp;</span>
470
- <span class="cline-any cline-no">&nbsp;</span>
471
- <span class="cline-any cline-no">&nbsp;</span>
472
- <span class="cline-any cline-no">&nbsp;</span>
473
- <span class="cline-any cline-no">&nbsp;</span>
474
- <span class="cline-any cline-no">&nbsp;</span>
475
- <span class="cline-any cline-no">&nbsp;</span>
476
- <span class="cline-any cline-no">&nbsp;</span>
477
- <span class="cline-any cline-no">&nbsp;</span>
478
- <span class="cline-any cline-no">&nbsp;</span>
479
- <span class="cline-any cline-no">&nbsp;</span>
480
- <span class="cline-any cline-no">&nbsp;</span>
481
- <span class="cline-any cline-no">&nbsp;</span>
482
- <span class="cline-any cline-no">&nbsp;</span>
483
- <span class="cline-any cline-no">&nbsp;</span>
484
- <span class="cline-any cline-no">&nbsp;</span>
485
- <span class="cline-any cline-no">&nbsp;</span>
486
- <span class="cline-any cline-no">&nbsp;</span>
487
- <span class="cline-any cline-no">&nbsp;</span>
488
- <span class="cline-any cline-no">&nbsp;</span>
489
- <span class="cline-any cline-no">&nbsp;</span>
490
- <span class="cline-any cline-no">&nbsp;</span>
491
- <span class="cline-any cline-no">&nbsp;</span>
492
- <span class="cline-any cline-no">&nbsp;</span>
493
- <span class="cline-any cline-no">&nbsp;</span>
494
- <span class="cline-any cline-no">&nbsp;</span>
495
- <span class="cline-any cline-no">&nbsp;</span>
496
- <span class="cline-any cline-no">&nbsp;</span>
497
- <span class="cline-any cline-no">&nbsp;</span>
498
- <span class="cline-any cline-no">&nbsp;</span>
499
- <span class="cline-any cline-no">&nbsp;</span>
500
- <span class="cline-any cline-no">&nbsp;</span>
501
- <span class="cline-any cline-no">&nbsp;</span>
502
- <span class="cline-any cline-no">&nbsp;</span>
503
- <span class="cline-any cline-no">&nbsp;</span>
504
- <span class="cline-any cline-no">&nbsp;</span>
505
- <span class="cline-any cline-no">&nbsp;</span>
506
- <span class="cline-any cline-no">&nbsp;</span>
507
- <span class="cline-any cline-no">&nbsp;</span>
508
- <span class="cline-any cline-no">&nbsp;</span>
509
- <span class="cline-any cline-no">&nbsp;</span>
510
- <span class="cline-any cline-no">&nbsp;</span>
511
- <span class="cline-any cline-no">&nbsp;</span>
512
- <span class="cline-any cline-no">&nbsp;</span>
513
- <span class="cline-any cline-no">&nbsp;</span>
514
- <span class="cline-any cline-no">&nbsp;</span>
515
- <span class="cline-any cline-no">&nbsp;</span>
516
- <span class="cline-any cline-no">&nbsp;</span>
517
- <span class="cline-any cline-no">&nbsp;</span>
518
- <span class="cline-any cline-no">&nbsp;</span>
519
- <span class="cline-any cline-no">&nbsp;</span>
520
- <span class="cline-any cline-no">&nbsp;</span>
521
- <span class="cline-any cline-no">&nbsp;</span>
522
- <span class="cline-any cline-no">&nbsp;</span>
523
- <span class="cline-any cline-no">&nbsp;</span>
524
- <span class="cline-any cline-no">&nbsp;</span>
525
- <span class="cline-any cline-no">&nbsp;</span>
526
- <span class="cline-any cline-no">&nbsp;</span>
527
- <span class="cline-any cline-no">&nbsp;</span>
528
- <span class="cline-any cline-no">&nbsp;</span>
529
- <span class="cline-any cline-no">&nbsp;</span>
530
- <span class="cline-any cline-no">&nbsp;</span>
531
- <span class="cline-any cline-no">&nbsp;</span>
532
- <span class="cline-any cline-no">&nbsp;</span>
533
- <span class="cline-any cline-no">&nbsp;</span>
534
- <span class="cline-any cline-no">&nbsp;</span>
535
- <span class="cline-any cline-no">&nbsp;</span>
536
- <span class="cline-any cline-no">&nbsp;</span>
537
- <span class="cline-any cline-no">&nbsp;</span>
538
- <span class="cline-any cline-no">&nbsp;</span>
539
- <span class="cline-any cline-no">&nbsp;</span>
540
- <span class="cline-any cline-no">&nbsp;</span>
541
- <span class="cline-any cline-no">&nbsp;</span>
542
- <span class="cline-any cline-no">&nbsp;</span>
543
- <span class="cline-any cline-no">&nbsp;</span>
544
- <span class="cline-any cline-no">&nbsp;</span>
545
- <span class="cline-any cline-no">&nbsp;</span>
546
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >/**</span></span></span>
547
- <span class="cstat-no" title="statement not covered" > * HSuite Native Connect</span>
548
- <span class="cstat-no" title="statement not covered" > * Copyright 2024-2025 HSuite (https://hsuite.finance)</span>
549
- <span class="cstat-no" title="statement not covered" > *</span>
550
- <span class="cstat-no" title="statement not covered" > * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0</span>
551
- <span class="cstat-no" title="statement not covered" > *</span>
552
- <span class="cstat-no" title="statement not covered" > * This file is part of HSuite Native Connect. For commercial licensing,</span>
553
- <span class="cstat-no" title="statement not covered" > * visit https://hsuite.finance/licensing</span>
554
- <span class="cstat-no" title="statement not covered" > */</span>
555
- <span class="cstat-no" title="statement not covered" ></span>
556
- <span class="cstat-no" title="statement not covered" >import { CommonModule } from '@angular/common';</span>
557
- <span class="cstat-no" title="statement not covered" >import { Component, EventEmitter, Input, Output, inject } from '@angular/core';</span>
558
- <span class="cstat-no" title="statement not covered" >import { getLogger } from '@hsuite/native-connect-sdk';</span>
559
- <span class="cstat-no" title="statement not covered" >import { IonButton, IonIcon, IonSpinner, ModalController } from '@ionic/angular/standalone';</span>
560
- <span class="cstat-no" title="statement not covered" >import { addIcons } from 'ionicons';</span>
561
- <span class="cstat-no" title="statement not covered" >import { walletOutline, linkOutline, checkmarkCircleOutline } from 'ionicons/icons';</span>
562
- <span class="cstat-no" title="statement not covered" ></span>
563
- <span class="cstat-no" title="statement not covered" >import { DEFAULT_WALLET_URL } from '../../models/provider-types';</span>
564
- <span class="cstat-no" title="statement not covered" >import { UnifiedWalletService } from '../../services/unified-wallet.service';</span>
565
- <span class="cstat-no" title="statement not covered" >import { WalletConnectionModalComponent } from '../wallet-connection-modal/wallet-connection-modal.component';</span>
566
- <span class="cstat-no" title="statement not covered" ></span>
567
- <span class="cstat-no" title="statement not covered" >const logger = getLogger().scoped?.('WalletConnectButton') ?? getLogger();</span>
568
- <span class="cstat-no" title="statement not covered" ></span>
569
- <span class="cstat-no" title="statement not covered" >/**</span>
570
- <span class="cstat-no" title="statement not covered" > * @component WalletConnectButtonComponent</span>
571
- <span class="cstat-no" title="statement not covered" > * Ready-to-use wallet connection button for dApps with multi-protocol support.</span>
572
- <span class="cstat-no" title="statement not covered" > *</span>
573
- <span class="cstat-no" title="statement not covered" > * **Features:**</span>
574
- <span class="cstat-no" title="statement not covered" > * - Beautiful connection modal with protocol/network selection</span>
575
- <span class="cstat-no" title="statement not covered" > * - Support for HSuite Native and WalletConnect</span>
576
- <span class="cstat-no" title="statement not covered" > * - Automatic connection state management</span>
577
- <span class="cstat-no" title="statement not covered" > * - Loading states</span>
578
- <span class="cstat-no" title="statement not covered" > * - Session display</span>
579
- <span class="cstat-no" title="statement not covered" > * - One-click connect/disconnect</span>
580
- <span class="cstat-no" title="statement not covered" > * - Theme-aware styling</span>
581
- <span class="cstat-no" title="statement not covered" > *</span>
582
- <span class="cstat-no" title="statement not covered" > * **Design Principles:**</span>
583
- <span class="cstat-no" title="statement not covered" > * - Easy configuration</span>
584
- <span class="cstat-no" title="statement not covered" > * - Fully customizable appearance</span>
585
- <span class="cstat-no" title="statement not covered" > * - Accessible</span>
586
- <span class="cstat-no" title="statement not covered" > * - Responsive</span>
587
- <span class="cstat-no" title="statement not covered" > */</span>
588
- <span class="cstat-no" title="statement not covered" >@Component({</span>
589
- <span class="cstat-no" title="statement not covered" > selector: 'wallet-connect-button',</span>
590
- <span class="cstat-no" title="statement not covered" > standalone: true,</span>
591
- <span class="cstat-no" title="statement not covered" > imports: [CommonModule, IonButton, IonIcon, IonSpinner],</span>
592
- <span class="cstat-no" title="statement not covered" > providers: [ModalController],</span>
593
- <span class="cstat-no" title="statement not covered" > templateUrl: './wallet-connect-button.component.html',</span>
594
- <span class="cstat-no" title="statement not covered" > styleUrls: ['./wallet-connect-button.component.scss'],</span>
595
- <span class="cstat-no" title="statement not covered" >})</span>
596
- <span class="cstat-no" title="statement not covered" >export class WalletConnectButtonComponent {</span>
597
- <span class="cstat-no" title="statement not covered" > /**</span>
598
- <span class="cstat-no" title="statement not covered" > * WalletConnect project ID (required for WalletConnect)</span>
599
- <span class="cstat-no" title="statement not covered" > */</span>
600
- <span class="cstat-no" title="statement not covered" > @Input() walletConnectProjectId?: string;</span>
601
- <span class="cstat-no" title="statement not covered" ></span>
602
- <span class="cstat-no" title="statement not covered" > /**</span>
603
- <span class="cstat-no" title="statement not covered" > * App name for wallet metadata</span>
604
- <span class="cstat-no" title="statement not covered" > */</span>
605
- <span class="cstat-no" title="statement not covered" > @Input() appName: string = 'HSuite Demo';</span>
606
- <span class="cstat-no" title="statement not covered" ></span>
607
- <span class="cstat-no" title="statement not covered" > /**</span>
608
- <span class="cstat-no" title="statement not covered" > * App description for wallet metadata</span>
609
- <span class="cstat-no" title="statement not covered" > */</span>
610
- <span class="cstat-no" title="statement not covered" > @Input() appDescription: string = 'Multi-chain wallet connection';</span>
611
- <span class="cstat-no" title="statement not covered" ></span>
612
- <span class="cstat-no" title="statement not covered" > /**</span>
613
- <span class="cstat-no" title="statement not covered" > * Wallet URL for targeting the wallet window</span>
614
- <span class="cstat-no" title="statement not covered" > */</span>
615
- <span class="cstat-no" title="statement not covered" > @Input() walletUrl = DEFAULT_WALLET_URL;</span>
616
- <span class="cstat-no" title="statement not covered" ></span>
617
- <span class="cstat-no" title="statement not covered" > /**</span>
618
- <span class="cstat-no" title="statement not covered" > * Whether to show session information when connected</span>
619
- <span class="cstat-no" title="statement not covered" > * @default true</span>
620
- <span class="cstat-no" title="statement not covered" > */</span>
621
- <span class="cstat-no" title="statement not covered" > @Input() showSessionInfo = true;</span>
622
- <span class="cstat-no" title="statement not covered" ></span>
623
- <span class="cstat-no" title="statement not covered" > /**</span>
624
- <span class="cstat-no" title="statement not covered" > * Button color (Ionic color)</span>
625
- <span class="cstat-no" title="statement not covered" > * @default 'primary'</span>
626
- <span class="cstat-no" title="statement not covered" > */</span>
627
- <span class="cstat-no" title="statement not covered" > @Input() buttonColor: string = 'primary';</span>
628
- <span class="cstat-no" title="statement not covered" ></span>
629
- <span class="cstat-no" title="statement not covered" > /**</span>
630
- <span class="cstat-no" title="statement not covered" > * Button size</span>
631
- <span class="cstat-no" title="statement not covered" > * @default 'default'</span>
632
- <span class="cstat-no" title="statement not covered" > */</span>
633
- <span class="cstat-no" title="statement not covered" > @Input() size: 'small' | 'default' | 'large' = 'default';</span>
634
- <span class="cstat-no" title="statement not covered" ></span>
635
- <span class="cstat-no" title="statement not covered" > /**</span>
636
- <span class="cstat-no" title="statement not covered" > * Custom button text for connect state</span>
637
- <span class="cstat-no" title="statement not covered" > */</span>
638
- <span class="cstat-no" title="statement not covered" > @Input() connectText = 'Connect Wallet';</span>
639
- <span class="cstat-no" title="statement not covered" ></span>
640
- <span class="cstat-no" title="statement not covered" > /**</span>
641
- <span class="cstat-no" title="statement not covered" > * Custom button text for when wallets are connected (multi-session mode)</span>
642
- <span class="cstat-no" title="statement not covered" > */</span>
643
- <span class="cstat-no" title="statement not covered" > @Input() connectedText = 'Add Another Wallet';</span>
644
- <span class="cstat-no" title="statement not covered" ></span>
645
- <span class="cstat-no" title="statement not covered" > /**</span>
646
- <span class="cstat-no" title="statement not covered" > * Enable multi-session mode (allows multiple connections)</span>
647
- <span class="cstat-no" title="statement not covered" > * @default true</span>
648
- <span class="cstat-no" title="statement not covered" > */</span>
649
- <span class="cstat-no" title="statement not covered" > @Input() multiSessionMode = true;</span>
650
- <span class="cstat-no" title="statement not covered" ></span>
651
- <span class="cstat-no" title="statement not covered" > /**</span>
652
- <span class="cstat-no" title="statement not covered" > * Emitted when wallet successfully connects</span>
653
- <span class="cstat-no" title="statement not covered" > */</span>
654
- <span class="cstat-no" title="statement not covered" > @Output() connected = new EventEmitter&lt;unknown&gt;();</span>
655
- <span class="cstat-no" title="statement not covered" ></span>
656
- <span class="cstat-no" title="statement not covered" > /**</span>
657
- <span class="cstat-no" title="statement not covered" > * Emitted when wallet disconnects</span>
658
- <span class="cstat-no" title="statement not covered" > */</span>
659
- <span class="cstat-no" title="statement not covered" > @Output() disconnected = new EventEmitter&lt;void&gt;();</span>
660
- <span class="cstat-no" title="statement not covered" ></span>
661
- <span class="cstat-no" title="statement not covered" > /**</span>
662
- <span class="cstat-no" title="statement not covered" > * Emitted when connection fails</span>
663
- <span class="cstat-no" title="statement not covered" > */</span>
664
- <span class="cstat-no" title="statement not covered" > @Output() error = new EventEmitter&lt;Error&gt;();</span>
665
- <span class="cstat-no" title="statement not covered" ></span>
666
- <span class="cstat-no" title="statement not covered" > protected readonly wallet = inject(UnifiedWalletService);</span>
667
- <span class="cstat-no" title="statement not covered" > protected readonly modalController = inject(ModalController);</span>
668
- <span class="cstat-no" title="statement not covered" ></span>
669
- <span class="cstat-no" title="statement not covered" > protected isConnecting = false;</span>
670
- <span class="cstat-no" title="statement not covered" ></span>
671
- <span class="cstat-no" title="statement not covered" > /**</span>
672
- <span class="cstat-no" title="statement not covered" > *</span>
673
- <span class="cstat-no" title="statement not covered" > */</span>
674
- <span class="cstat-no" title="statement not covered" > constructor() {</span>
675
- <span class="cstat-no" title="statement not covered" > addIcons({ walletOutline, linkOutline, checkmarkCircleOutline });</span>
676
- <span class="cstat-no" title="statement not covered" > }</span>
677
- <span class="cstat-no" title="statement not covered" ></span>
678
- <span class="cstat-no" title="statement not covered" > /**</span>
679
- <span class="cstat-no" title="statement not covered" > * Connect to wallet (opens modal - supports multi-session)</span>
680
- <span class="cstat-no" title="statement not covered" > */</span>
681
- <span class="cstat-no" title="statement not covered" > async connect(): Promise&lt;void&gt; {</span>
682
- <span class="cstat-no" title="statement not covered" > if (this.isConnecting) return;</span>
683
- <span class="cstat-no" title="statement not covered" ></span>
684
- <span class="cstat-no" title="statement not covered" > this.isConnecting = true;</span>
685
- <span class="cstat-no" title="statement not covered" > try {</span>
686
- <span class="cstat-no" title="statement not covered" > await this.openConnectionModal();</span>
687
- <span class="cstat-no" title="statement not covered" > } catch (err) {</span>
306
+ <a name='L241'></a><a href='#L241'>241</a>
307
+ <a name='L242'></a><a href='#L242'>242</a>
308
+ <a name='L243'></a><a href='#L243'>243</a>
309
+ <a name='L244'></a><a href='#L244'>244</a>
310
+ <a name='L245'></a><a href='#L245'>245</a>
311
+ <a name='L246'></a><a href='#L246'>246</a>
312
+ <a name='L247'></a><a href='#L247'>247</a>
313
+ <a name='L248'></a><a href='#L248'>248</a>
314
+ <a name='L249'></a><a href='#L249'>249</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
315
+ <span class="cline-any cline-yes">1x</span>
316
+ <span class="cline-any cline-yes">1x</span>
317
+ <span class="cline-any cline-yes">1x</span>
318
+ <span class="cline-any cline-yes">1x</span>
319
+ <span class="cline-any cline-yes">1x</span>
320
+ <span class="cline-any cline-yes">1x</span>
321
+ <span class="cline-any cline-yes">1x</span>
322
+ <span class="cline-any cline-yes">1x</span>
323
+ <span class="cline-any cline-yes">1x</span>
324
+ <span class="cline-any cline-yes">1x</span>
325
+ <span class="cline-any cline-yes">1x</span>
326
+ <span class="cline-any cline-yes">1x</span>
327
+ <span class="cline-any cline-yes">1x</span>
328
+ <span class="cline-any cline-yes">1x</span>
329
+ <span class="cline-any cline-yes">1x</span>
330
+ <span class="cline-any cline-yes">1x</span>
331
+ <span class="cline-any cline-yes">1x</span>
332
+ <span class="cline-any cline-yes">1x</span>
333
+ <span class="cline-any cline-yes">1x</span>
334
+ <span class="cline-any cline-yes">1x</span>
335
+ <span class="cline-any cline-yes">1x</span>
336
+ <span class="cline-any cline-yes">1x</span>
337
+ <span class="cline-any cline-yes">1x</span>
338
+ <span class="cline-any cline-yes">1x</span>
339
+ <span class="cline-any cline-yes">1x</span>
340
+ <span class="cline-any cline-yes">1x</span>
341
+ <span class="cline-any cline-yes">1x</span>
342
+ <span class="cline-any cline-yes">1x</span>
343
+ <span class="cline-any cline-yes">1x</span>
344
+ <span class="cline-any cline-yes">1x</span>
345
+ <span class="cline-any cline-yes">1x</span>
346
+ <span class="cline-any cline-yes">1x</span>
347
+ <span class="cline-any cline-yes">1x</span>
348
+ <span class="cline-any cline-yes">1x</span>
349
+ <span class="cline-any cline-yes">1x</span>
350
+ <span class="cline-any cline-yes">1x</span>
351
+ <span class="cline-any cline-yes">1x</span>
352
+ <span class="cline-any cline-yes">1x</span>
353
+ <span class="cline-any cline-yes">1x</span>
354
+ <span class="cline-any cline-yes">1x</span>
355
+ <span class="cline-any cline-yes">1x</span>
356
+ <span class="cline-any cline-yes">1x</span>
357
+ <span class="cline-any cline-yes">1x</span>
358
+ <span class="cline-any cline-yes">1x</span>
359
+ <span class="cline-any cline-yes">1x</span>
360
+ <span class="cline-any cline-yes">1x</span>
361
+ <span class="cline-any cline-yes">1x</span>
362
+ <span class="cline-any cline-yes">1x</span>
363
+ <span class="cline-any cline-yes">1x</span>
364
+ <span class="cline-any cline-yes">1x</span>
365
+ <span class="cline-any cline-yes">2x</span>
366
+ <span class="cline-any cline-yes">2x</span>
367
+ <span class="cline-any cline-yes">2x</span>
368
+ <span class="cline-any cline-yes">2x</span>
369
+ <span class="cline-any cline-yes">2x</span>
370
+ <span class="cline-any cline-yes">2x</span>
371
+ <span class="cline-any cline-yes">2x</span>
372
+ <span class="cline-any cline-yes">2x</span>
373
+ <span class="cline-any cline-yes">2x</span>
374
+ <span class="cline-any cline-yes">2x</span>
375
+ <span class="cline-any cline-yes">2x</span>
376
+ <span class="cline-any cline-yes">2x</span>
377
+ <span class="cline-any cline-yes">2x</span>
378
+ <span class="cline-any cline-yes">2x</span>
379
+ <span class="cline-any cline-yes">2x</span>
380
+ <span class="cline-any cline-yes">2x</span>
381
+ <span class="cline-any cline-yes">2x</span>
382
+ <span class="cline-any cline-yes">2x</span>
383
+ <span class="cline-any cline-yes">2x</span>
384
+ <span class="cline-any cline-yes">2x</span>
385
+ <span class="cline-any cline-yes">2x</span>
386
+ <span class="cline-any cline-yes">2x</span>
387
+ <span class="cline-any cline-yes">2x</span>
388
+ <span class="cline-any cline-yes">2x</span>
389
+ <span class="cline-any cline-yes">2x</span>
390
+ <span class="cline-any cline-yes">2x</span>
391
+ <span class="cline-any cline-yes">2x</span>
392
+ <span class="cline-any cline-yes">2x</span>
393
+ <span class="cline-any cline-yes">2x</span>
394
+ <span class="cline-any cline-yes">2x</span>
395
+ <span class="cline-any cline-yes">2x</span>
396
+ <span class="cline-any cline-yes">2x</span>
397
+ <span class="cline-any cline-yes">2x</span>
398
+ <span class="cline-any cline-yes">2x</span>
399
+ <span class="cline-any cline-yes">2x</span>
400
+ <span class="cline-any cline-yes">2x</span>
401
+ <span class="cline-any cline-yes">2x</span>
402
+ <span class="cline-any cline-yes">2x</span>
403
+ <span class="cline-any cline-yes">2x</span>
404
+ <span class="cline-any cline-yes">2x</span>
405
+ <span class="cline-any cline-yes">2x</span>
406
+ <span class="cline-any cline-yes">2x</span>
407
+ <span class="cline-any cline-yes">2x</span>
408
+ <span class="cline-any cline-yes">2x</span>
409
+ <span class="cline-any cline-yes">2x</span>
410
+ <span class="cline-any cline-yes">2x</span>
411
+ <span class="cline-any cline-yes">2x</span>
412
+ <span class="cline-any cline-yes">2x</span>
413
+ <span class="cline-any cline-yes">2x</span>
414
+ <span class="cline-any cline-yes">2x</span>
415
+ <span class="cline-any cline-yes">2x</span>
416
+ <span class="cline-any cline-yes">2x</span>
417
+ <span class="cline-any cline-yes">2x</span>
418
+ <span class="cline-any cline-yes">2x</span>
419
+ <span class="cline-any cline-yes">2x</span>
420
+ <span class="cline-any cline-yes">2x</span>
421
+ <span class="cline-any cline-yes">2x</span>
422
+ <span class="cline-any cline-yes">2x</span>
423
+ <span class="cline-any cline-yes">2x</span>
424
+ <span class="cline-any cline-yes">2x</span>
425
+ <span class="cline-any cline-yes">2x</span>
426
+ <span class="cline-any cline-yes">2x</span>
427
+ <span class="cline-any cline-yes">2x</span>
428
+ <span class="cline-any cline-yes">2x</span>
429
+ <span class="cline-any cline-yes">2x</span>
430
+ <span class="cline-any cline-yes">2x</span>
431
+ <span class="cline-any cline-yes">2x</span>
432
+ <span class="cline-any cline-yes">2x</span>
433
+ <span class="cline-any cline-yes">2x</span>
434
+ <span class="cline-any cline-yes">2x</span>
435
+ <span class="cline-any cline-yes">2x</span>
436
+ <span class="cline-any cline-yes">2x</span>
437
+ <span class="cline-any cline-yes">2x</span>
438
+ <span class="cline-any cline-yes">2x</span>
439
+ <span class="cline-any cline-yes">2x</span>
440
+ <span class="cline-any cline-yes">2x</span>
441
+ <span class="cline-any cline-yes">2x</span>
442
+ <span class="cline-any cline-yes">2x</span>
443
+ <span class="cline-any cline-yes">2x</span>
444
+ <span class="cline-any cline-yes">2x</span>
445
+ <span class="cline-any cline-yes">2x</span>
446
+ <span class="cline-any cline-yes">2x</span>
447
+ <span class="cline-any cline-yes">2x</span>
448
+ <span class="cline-any cline-yes">2x</span>
449
+ <span class="cline-any cline-yes">2x</span>
450
+ <span class="cline-any cline-yes">2x</span>
451
+ <span class="cline-any cline-yes">2x</span>
452
+ <span class="cline-any cline-yes">2x</span>
453
+ <span class="cline-any cline-yes">2x</span>
454
+ <span class="cline-any cline-yes">2x</span>
455
+ <span class="cline-any cline-yes">2x</span>
456
+ <span class="cline-any cline-yes">2x</span>
457
+ <span class="cline-any cline-yes">2x</span>
458
+ <span class="cline-any cline-yes">2x</span>
459
+ <span class="cline-any cline-yes">2x</span>
460
+ <span class="cline-any cline-yes">2x</span>
461
+ <span class="cline-any cline-yes">2x</span>
462
+ <span class="cline-any cline-yes">2x</span>
463
+ <span class="cline-any cline-no">&nbsp;</span>
464
+ <span class="cline-any cline-no">&nbsp;</span>
465
+ <span class="cline-any cline-no">&nbsp;</span>
466
+ <span class="cline-any cline-yes">2x</span>
467
+ <span class="cline-any cline-yes">2x</span>
468
+ <span class="cline-any cline-yes">2x</span>
469
+ <span class="cline-any cline-yes">2x</span>
470
+ <span class="cline-any cline-yes">2x</span>
471
+ <span class="cline-any cline-yes">2x</span>
472
+ <span class="cline-any cline-yes">2x</span>
473
+ <span class="cline-any cline-yes">2x</span>
474
+ <span class="cline-any cline-yes">2x</span>
475
+ <span class="cline-any cline-yes">2x</span>
476
+ <span class="cline-any cline-yes">2x</span>
477
+ <span class="cline-any cline-yes">2x</span>
478
+ <span class="cline-any cline-yes">2x</span>
479
+ <span class="cline-any cline-yes">2x</span>
480
+ <span class="cline-any cline-yes">2x</span>
481
+ <span class="cline-any cline-yes">2x</span>
482
+ <span class="cline-any cline-yes">2x</span>
483
+ <span class="cline-any cline-yes">2x</span>
484
+ <span class="cline-any cline-yes">2x</span>
485
+ <span class="cline-any cline-yes">2x</span>
486
+ <span class="cline-any cline-yes">2x</span>
487
+ <span class="cline-any cline-yes">2x</span>
488
+ <span class="cline-any cline-yes">2x</span>
489
+ <span class="cline-any cline-yes">2x</span>
490
+ <span class="cline-any cline-yes">2x</span>
491
+ <span class="cline-any cline-yes">2x</span>
492
+ <span class="cline-any cline-no">&nbsp;</span>
493
+ <span class="cline-any cline-no">&nbsp;</span>
494
+ <span class="cline-any cline-no">&nbsp;</span>
495
+ <span class="cline-any cline-no">&nbsp;</span>
496
+ <span class="cline-any cline-no">&nbsp;</span>
497
+ <span class="cline-any cline-no">&nbsp;</span>
498
+ <span class="cline-any cline-no">&nbsp;</span>
499
+ <span class="cline-any cline-no">&nbsp;</span>
500
+ <span class="cline-any cline-yes">2x</span>
501
+ <span class="cline-any cline-yes">2x</span>
502
+ <span class="cline-any cline-yes">2x</span>
503
+ <span class="cline-any cline-yes">2x</span>
504
+ <span class="cline-any cline-yes">2x</span>
505
+ <span class="cline-any cline-yes">2x</span>
506
+ <span class="cline-any cline-yes">2x</span>
507
+ <span class="cline-any cline-no">&nbsp;</span>
508
+ <span class="cline-any cline-no">&nbsp;</span>
509
+ <span class="cline-any cline-no">&nbsp;</span>
510
+ <span class="cline-any cline-no">&nbsp;</span>
511
+ <span class="cline-any cline-no">&nbsp;</span>
512
+ <span class="cline-any cline-no">&nbsp;</span>
513
+ <span class="cline-any cline-no">&nbsp;</span>
514
+ <span class="cline-any cline-no">&nbsp;</span>
515
+ <span class="cline-any cline-no">&nbsp;</span>
516
+ <span class="cline-any cline-no">&nbsp;</span>
517
+ <span class="cline-any cline-no">&nbsp;</span>
518
+ <span class="cline-any cline-yes">2x</span>
519
+ <span class="cline-any cline-yes">2x</span>
520
+ <span class="cline-any cline-yes">2x</span>
521
+ <span class="cline-any cline-yes">2x</span>
522
+ <span class="cline-any cline-yes">2x</span>
523
+ <span class="cline-any cline-no">&nbsp;</span>
524
+ <span class="cline-any cline-no">&nbsp;</span>
525
+ <span class="cline-any cline-yes">2x</span>
526
+ <span class="cline-any cline-yes">2x</span>
527
+ <span class="cline-any cline-yes">2x</span>
528
+ <span class="cline-any cline-yes">2x</span>
529
+ <span class="cline-any cline-yes">2x</span>
530
+ <span class="cline-any cline-no">&nbsp;</span>
531
+ <span class="cline-any cline-no">&nbsp;</span>
532
+ <span class="cline-any cline-no">&nbsp;</span>
533
+ <span class="cline-any cline-no">&nbsp;</span>
534
+ <span class="cline-any cline-no">&nbsp;</span>
535
+ <span class="cline-any cline-no">&nbsp;</span>
536
+ <span class="cline-any cline-no">&nbsp;</span>
537
+ <span class="cline-any cline-yes">2x</span>
538
+ <span class="cline-any cline-yes">2x</span>
539
+ <span class="cline-any cline-yes">2x</span>
540
+ <span class="cline-any cline-yes">2x</span>
541
+ <span class="cline-any cline-yes">2x</span>
542
+ <span class="cline-any cline-no">&nbsp;</span>
543
+ <span class="cline-any cline-no">&nbsp;</span>
544
+ <span class="cline-any cline-no">&nbsp;</span>
545
+ <span class="cline-any cline-yes">2x</span>
546
+ <span class="cline-any cline-yes">2x</span>
547
+ <span class="cline-any cline-yes">2x</span>
548
+ <span class="cline-any cline-yes">2x</span>
549
+ <span class="cline-any cline-yes">2x</span>
550
+ <span class="cline-any cline-yes">2x</span>
551
+ <span class="cline-any cline-no">&nbsp;</span>
552
+ <span class="cline-any cline-no">&nbsp;</span>
553
+ <span class="cline-any cline-no">&nbsp;</span>
554
+ <span class="cline-any cline-yes">2x</span>
555
+ <span class="cline-any cline-yes">2x</span>
556
+ <span class="cline-any cline-yes">2x</span>
557
+ <span class="cline-any cline-yes">2x</span>
558
+ <span class="cline-any cline-yes">2x</span>
559
+ <span class="cline-any cline-no">&nbsp;</span>
560
+ <span class="cline-any cline-no">&nbsp;</span>
561
+ <span class="cline-any cline-yes">2x</span>
562
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">/**
563
+ * HSuite Native Connect
564
+ * Copyright 2024-2025 HSuite (https://hsuite.finance)
565
+ *
566
+ * SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
567
+ *
568
+ * This file is part of HSuite Native Connect. For commercial licensing,
569
+ * visit https://hsuite.finance/licensing
570
+ */
571
+ &nbsp;
572
+ import { CommonModule } from '@angular/common';
573
+ import { Component, EventEmitter, Input, Output, inject } from '@angular/core';
574
+ import { getLogger } from '@hsuite/native-connect-sdk';
575
+ import { IonButton, IonIcon, IonSpinner, ModalController } from '@ionic/angular/standalone';
576
+ import { addIcons } from 'ionicons';
577
+ import { walletOutline, linkOutline, checkmarkCircleOutline } from 'ionicons/icons';
578
+ &nbsp;
579
+ import { DEFAULT_WALLET_URL } from '../../models/provider-types';
580
+ import { UnifiedWalletService } from '../../services/unified-wallet.service';
581
+ import { WalletConnectionModalComponent } from '../wallet-connection-modal/wallet-connection-modal.component';
582
+ &nbsp;
583
+ const logger = getLogger().scoped?.('WalletConnectButton'<span class="branch-0 cbranch-no" title="branch not covered" >) ?? getLogger();</span>
584
+ &nbsp;
585
+ /**
586
+ * @component WalletConnectButtonComponent
587
+ * Ready-to-use wallet connection button for dApps with multi-protocol support.
588
+ *
589
+ * **Features:**
590
+ * - Beautiful connection modal with protocol/network selection
591
+ * - Support for HSuite Native and WalletConnect
592
+ * - Automatic connection state management
593
+ * - Loading states
594
+ * - Session display
595
+ * - One-click connect/disconnect
596
+ * - Theme-aware styling
597
+ *
598
+ * **Design Principles:**
599
+ * - Easy configuration
600
+ * - Fully customizable appearance
601
+ * - Accessible
602
+ * - Responsive
603
+ */
604
+ @Component({
605
+ selector: 'wallet-connect-button',
606
+ standalone: true,
607
+ imports: [CommonModule, IonButton, IonIcon, IonSpinner],
608
+ providers: [ModalController],
609
+ templateUrl: './wallet-connect-button.component.html',
610
+ styleUrls: ['./wallet-connect-button.component.scss'],
611
+ })
612
+ export class WalletConnectButtonComponent {
613
+ /**
614
+ * WalletConnect project ID (required for WalletConnect)
615
+ */
616
+ @Input() walletConnectProjectId?: string;
617
+ &nbsp;
618
+ /**
619
+ * App name for wallet metadata
620
+ */
621
+ @Input() appName: string = 'HSuite Demo';
622
+ &nbsp;
623
+ /**
624
+ * App description for wallet metadata
625
+ */
626
+ @Input() appDescription: string = 'Multi-chain wallet connection';
627
+ &nbsp;
628
+ /**
629
+ * Wallet URL for targeting the wallet window
630
+ */
631
+ @Input() walletUrl = DEFAULT_WALLET_URL;
632
+ &nbsp;
633
+ /**
634
+ * Pins the connection network and hides the network-selection step in the
635
+ * modal. When set to `'mainnet'` or `'testnet'`, the dApp decides the network
636
+ * and the user never sees the picker. When omitted, the user chooses.
637
+ */
638
+ @Input() network?: 'mainnet' | 'testnet';
639
+ &nbsp;
640
+ /**
641
+ * Whether to show session information when connected
642
+ * @default true
643
+ */
644
+ @Input() showSessionInfo = true;
645
+ &nbsp;
646
+ /**
647
+ * Button color (Ionic color)
648
+ * @default 'primary'
649
+ */
650
+ @Input() buttonColor: string = 'primary';
651
+ &nbsp;
652
+ /**
653
+ * Button size
654
+ * @default 'default'
655
+ */
656
+ @Input() size: 'small' | 'default' | 'large' = 'default';
657
+ &nbsp;
658
+ /**
659
+ * Custom button text for connect state
660
+ */
661
+ @Input() connectText = 'Connect Wallet';
662
+ &nbsp;
663
+ /**
664
+ * Custom button text for when wallets are connected (multi-session mode)
665
+ */
666
+ @Input() connectedText = 'Add Another Wallet';
667
+ &nbsp;
668
+ /**
669
+ * Enable multi-session mode (allows multiple connections)
670
+ * @default true
671
+ */
672
+ @Input() multiSessionMode = true;
673
+ &nbsp;
674
+ /**
675
+ * Emitted when wallet successfully connects
676
+ */
677
+ @Output() connected = new EventEmitter&lt;unknown&gt;();
678
+ &nbsp;
679
+ /**
680
+ * Emitted when wallet disconnects
681
+ */
682
+ @Output() disconnected = new EventEmitter&lt;void&gt;();
683
+ &nbsp;
684
+ /**
685
+ * Emitted when connection fails
686
+ */
687
+ @Output() error = new EventEmitter&lt;Error&gt;();
688
+ &nbsp;
689
+ protected readonly wallet = inject(UnifiedWalletService);
690
+ protected readonly modalController = inject(ModalController);
691
+ &nbsp;
692
+ protected isConnecting = false;
693
+ &nbsp;
694
+ /**
695
+ *
696
+ */
697
+ constructor() {
698
+ addIcons({ walletOutline, linkOutline, checkmarkCircleOutline });
699
+ }
700
+ &nbsp;
701
+ /**
702
+ * Connect to wallet (opens modal - supports multi-session)
703
+ */
704
+ async connect(): Promise&lt;void&gt; {
705
+ if (this.isConnecting) <span class="branch-0 cbranch-no" title="branch not covered" >return;</span>
706
+ &nbsp;
707
+ this.isConnecting = true;
708
+ try {
709
+ await this.openConnectionModal();
710
+ <span class="branch-0 cbranch-no" title="branch not covered" > } catch (err) {</span>
688
711
  <span class="cstat-no" title="statement not covered" > const error = err instanceof Error ? err : new Error(String(err));</span>
689
712
  <span class="cstat-no" title="statement not covered" > this.error.emit(error);</span>
690
713
  <span class="cstat-no" title="statement not covered" > logger.error('Connection failed', { error: error.message });</span>
691
- <span class="cstat-no" title="statement not covered" > } finally {</span>
692
- <span class="cstat-no" title="statement not covered" > this.isConnecting = false;</span>
693
- <span class="cstat-no" title="statement not covered" > }</span>
694
- <span class="cstat-no" title="statement not covered" > }</span>
695
- <span class="cstat-no" title="statement not covered" ></span>
696
- <span class="cstat-no" title="statement not covered" > /**</span>
697
- <span class="cstat-no" title="statement not covered" > * Open the new multi-protocol connection modal</span>
698
- <span class="cstat-no" title="statement not covered" > * Passes wallet configuration including walletUrl and metadata for proper window targeting.</span>
699
- <span class="cstat-no" title="statement not covered" > */</span>
700
- <span class="cstat-no" title="statement not covered" > private async openConnectionModal(): Promise&lt;void&gt; {</span>
701
- <span class="cstat-no" title="statement not covered" > const modal = await this.modalController.create({</span>
702
- <span class="cstat-no" title="statement not covered" > component: WalletConnectionModalComponent,</span>
703
- <span class="cstat-no" title="statement not covered" > componentProps: {</span>
704
- <span class="cstat-no" title="statement not covered" > projectId: this.walletConnectProjectId,</span>
705
- <span class="cstat-no" title="statement not covered" > appName: this.appName,</span>
706
- <span class="cstat-no" title="statement not covered" > appDescription: this.appDescription,</span>
707
- <span class="cstat-no" title="statement not covered" > walletUrl: this.walletUrl,</span>
708
- <span class="cstat-no" title="statement not covered" > },</span>
709
- <span class="cstat-no" title="statement not covered" > });</span>
710
- <span class="cstat-no" title="statement not covered" ></span>
711
- <span class="cstat-no" title="statement not covered" > await modal.present();</span>
712
- <span class="cstat-no" title="statement not covered" ></span>
713
- <span class="cstat-no" title="statement not covered" > const { data } = await modal.onDidDismiss();</span>
714
- <span class="cstat-no" title="statement not covered" ></span>
715
- <span class="cstat-no" title="statement not covered" > if (data?.connected) {</span>
714
+ } finally {
715
+ this.isConnecting = false;
716
+ }
717
+ }
718
+ &nbsp;
719
+ /**
720
+ * Open the new multi-protocol connection modal
721
+ * Passes wallet configuration including walletUrl and metadata for proper window targeting.
722
+ */
723
+ private async openConnectionModal(): Promise&lt;void&gt; {
724
+ const modal = await this.modalController.create({
725
+ component: WalletConnectionModalComponent,
726
+ componentProps: {
727
+ projectId: this.walletConnectProjectId,
728
+ appName: this.appName,
729
+ appDescription: this.appDescription,
730
+ walletUrl: this.walletUrl,
731
+ network: this.network,
732
+ },
733
+ });
734
+ &nbsp;
735
+ await modal.present();
736
+ &nbsp;
737
+ const { data } = await modal.onDidDismiss();
738
+ &nbsp;
739
+ if (data?.connected) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
716
740
  <span class="cstat-no" title="statement not covered" > // Emit connected event with unified accounts</span>
717
741
  <span class="cstat-no" title="statement not covered" > const accounts = this.wallet.allAccounts();</span>
718
742
  <span class="cstat-no" title="statement not covered" > this.connected.emit({</span>
@@ -721,13 +745,13 @@
721
745
  <span class="cstat-no" title="statement not covered" > accounts,</span>
722
746
  <span class="cstat-no" title="statement not covered" > });</span>
723
747
  <span class="cstat-no" title="statement not covered" > }</span>
724
- <span class="cstat-no" title="statement not covered" > }</span>
725
- <span class="cstat-no" title="statement not covered" ></span>
726
- <span class="cstat-no" title="statement not covered" > /**</span>
727
- <span class="cstat-no" title="statement not covered" > * Disconnect from wallet</span>
728
- <span class="cstat-no" title="statement not covered" > * In multi-session mode, this disconnects ALL sessions</span>
729
- <span class="cstat-no" title="statement not covered" > */</span>
730
- <span class="cstat-no" title="statement not covered" > async disconnect(): Promise&lt;void&gt; {</span>
748
+ }
749
+ &nbsp;
750
+ /**
751
+ * Disconnect from wallet
752
+ * In multi-session mode, this disconnects ALL sessions
753
+ */
754
+ <span class="fstat-no" title="function not covered" > async disconnect(): Promise&lt;void&gt; {</span>
731
755
  <span class="cstat-no" title="statement not covered" > try {</span>
732
756
  <span class="cstat-no" title="statement not covered" > // Disconnect all sessions via UnifiedWalletService</span>
733
757
  <span class="cstat-no" title="statement not covered" > await this.wallet.disconnectAll();</span>
@@ -739,18 +763,18 @@
739
763
  <span class="cstat-no" title="statement not covered" > logger.error('Disconnect failed', { error: error.message });</span>
740
764
  <span class="cstat-no" title="statement not covered" > }</span>
741
765
  <span class="cstat-no" title="statement not covered" > }</span>
742
- <span class="cstat-no" title="statement not covered" ></span>
743
- <span class="cstat-no" title="statement not covered" > /**</span>
744
- <span class="cstat-no" title="statement not covered" > * Check if unknown wallet is connected</span>
745
- <span class="cstat-no" title="statement not covered" > */</span>
746
- <span class="cstat-no" title="statement not covered" > isConnected(): boolean {</span>
766
+ &nbsp;
767
+ /**
768
+ * Check if unknown wallet is connected
769
+ */
770
+ <span class="fstat-no" title="function not covered" > isConnected(): boolean {</span>
747
771
  <span class="cstat-no" title="statement not covered" > return this.wallet.isAnyConnected();</span>
748
772
  <span class="cstat-no" title="statement not covered" > }</span>
749
- <span class="cstat-no" title="statement not covered" ></span>
750
- <span class="cstat-no" title="statement not covered" > /**</span>
751
- <span class="cstat-no" title="statement not covered" > * Get display text for connection state</span>
752
- <span class="cstat-no" title="statement not covered" > */</span>
753
- <span class="cstat-no" title="statement not covered" > getButtonText(): string {</span>
773
+ &nbsp;
774
+ /**
775
+ * Get display text for connection state
776
+ */
777
+ <span class="fstat-no" title="function not covered" > getButtonText(): string {</span>
754
778
  <span class="cstat-no" title="statement not covered" > if (this.isConnecting) return 'Connecting...';</span>
755
779
  <span class="cstat-no" title="statement not covered" ></span>
756
780
  <span class="cstat-no" title="statement not covered" > if (this.multiSessionMode) {</span>
@@ -758,31 +782,31 @@
758
782
  <span class="cstat-no" title="statement not covered" > }</span>
759
783
  <span class="cstat-no" title="statement not covered" > return this.isConnected() ? 'Disconnect' : this.connectText;</span>
760
784
  <span class="cstat-no" title="statement not covered" > }</span>
761
- <span class="cstat-no" title="statement not covered" ></span>
762
- <span class="cstat-no" title="statement not covered" > /**</span>
763
- <span class="cstat-no" title="statement not covered" > * Get icon name for current state</span>
764
- <span class="cstat-no" title="statement not covered" > */</span>
765
- <span class="cstat-no" title="statement not covered" > getIconName(): string {</span>
785
+ &nbsp;
786
+ /**
787
+ * Get icon name for current state
788
+ */
789
+ <span class="fstat-no" title="function not covered" > getIconName(): string {</span>
766
790
  <span class="cstat-no" title="statement not covered" > if (this.isConnected()) return 'checkmark-circle-outline';</span>
767
791
  <span class="cstat-no" title="statement not covered" > return 'wallet-outline';</span>
768
792
  <span class="cstat-no" title="statement not covered" > }</span>
769
- <span class="cstat-no" title="statement not covered" ></span>
770
- <span class="cstat-no" title="statement not covered" > /**</span>
771
- <span class="cstat-no" title="statement not covered" > * Truncate address for display</span>
772
- <span class="cstat-no" title="statement not covered" > * @param address</span>
773
- <span class="cstat-no" title="statement not covered" > */</span>
774
- <span class="cstat-no" title="statement not covered" > truncateAddress(address: string): string {</span>
793
+ &nbsp;
794
+ /**
795
+ * Truncate address for display
796
+ * @param address
797
+ */
798
+ <span class="fstat-no" title="function not covered" > truncateAddress(address: string): string {</span>
775
799
  <span class="cstat-no" title="statement not covered" > if (address.length &lt;= 12) return address;</span>
776
800
  <span class="cstat-no" title="statement not covered" > return `${address.substring(0, 6)}...${address.substring(address.length - 4)}`;</span>
777
801
  <span class="cstat-no" title="statement not covered" > }</span>
778
- <span class="cstat-no" title="statement not covered" ></span>
779
- <span class="cstat-no" title="statement not covered" > /**</span>
780
- <span class="cstat-no" title="statement not covered" > * Get connected accounts (unified)</span>
781
- <span class="cstat-no" title="statement not covered" > */</span>
782
- <span class="cstat-no" title="statement not covered" > getConnectedAccounts(): any[] {</span>
802
+ &nbsp;
803
+ /**
804
+ * Get connected accounts (unified)
805
+ */
806
+ <span class="fstat-no" title="function not covered" > getConnectedAccounts(): any[] {</span>
783
807
  <span class="cstat-no" title="statement not covered" > return this.wallet.allAccounts();</span>
784
808
  <span class="cstat-no" title="statement not covered" > }</span>
785
- <span class="cstat-no" title="statement not covered" >}</span>
809
+ }
786
810
  &nbsp;</pre></td></tr></table></pre>
787
811
 
788
812
  <div class='push'></div><!-- for sticky footer -->
@@ -790,7 +814,7 @@
790
814
  <div class='footer quiet pad2 space-top1 center small'>
791
815
  Code coverage generated by
792
816
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
793
- at 2026-06-02T14:30:38.257Z
817
+ at 2026-06-27T21:00:37.138Z
794
818
  </div>
795
819
  <script src="../../../prettify.js"></script>
796
820
  <script>