@hsuite/native-connect-angular 1.0.0

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 (276) hide show
  1. package/README.md +48 -0
  2. package/USAGE_EXAMPLES.md +476 -0
  3. package/assets/wallets/extension.svg +7 -0
  4. package/assets/wallets/hashpack.svg +6 -0
  5. package/assets/wallets/hsuite.svg +11 -0
  6. package/assets/wallets/kabila.svg +11 -0
  7. package/assets/wallets/walletconnect.svg +13 -0
  8. package/coverage/base.css +224 -0
  9. package/coverage/block-navigation.js +87 -0
  10. package/coverage/coverage-summary.json +50 -0
  11. package/coverage/favicon.png +0 -0
  12. package/coverage/index.html +476 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/favicon.png +0 -0
  16. package/coverage/lcov-report/index.html +476 -0
  17. package/coverage/lcov-report/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
  18. package/coverage/lcov-report/lib/components/account-selector/account-actions/index.html +116 -0
  19. package/coverage/lcov-report/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
  20. package/coverage/lcov-report/lib/components/account-selector/account-filter/index.html +116 -0
  21. package/coverage/lcov-report/lib/components/account-selector/account-formatting.service.ts.html +685 -0
  22. package/coverage/lcov-report/lib/components/account-selector/account-grouping.service.ts.html +766 -0
  23. package/coverage/lcov-report/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
  24. package/coverage/lcov-report/lib/components/account-selector/account-list/index.html +116 -0
  25. package/coverage/lcov-report/lib/components/account-selector/account-selector.component.ts.html +1495 -0
  26. package/coverage/lcov-report/lib/components/account-selector/account-selector.service.ts.html +1588 -0
  27. package/coverage/lcov-report/lib/components/account-selector/index.html +161 -0
  28. package/coverage/lcov-report/lib/components/wallet-account-display/index.html +116 -0
  29. package/coverage/lcov-report/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
  30. package/coverage/lcov-report/lib/components/wallet-connect-button/index.html +116 -0
  31. package/coverage/lcov-report/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
  32. package/coverage/lcov-report/lib/components/wallet-connect-prompt/index.html +116 -0
  33. package/coverage/lcov-report/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
  34. package/coverage/lcov-report/lib/components/wallet-connected-guard/index.html +116 -0
  35. package/coverage/lcov-report/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
  36. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
  37. package/coverage/lcov-report/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
  38. package/coverage/lcov-report/lib/components/wallet-connection-modal/index.html +116 -0
  39. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
  40. package/coverage/lcov-report/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
  41. package/coverage/lcov-report/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
  42. package/coverage/lcov-report/lib/components/wallet-session-display/index.html +116 -0
  43. package/coverage/lcov-report/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
  44. package/coverage/lcov-report/lib/components/wallet-transaction-status/index.html +116 -0
  45. package/coverage/lcov-report/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
  46. package/coverage/lcov-report/lib/directives/index.html +146 -0
  47. package/coverage/lcov-report/lib/directives/wallet-connected.directive.ts.html +670 -0
  48. package/coverage/lcov-report/lib/directives/wallet-context.directive.ts.html +547 -0
  49. package/coverage/lcov-report/lib/directives/wallet-events.directive.ts.html +781 -0
  50. package/coverage/lcov-report/lib/hsuite-wallet.module.ts.html +715 -0
  51. package/coverage/lcov-report/lib/index.html +116 -0
  52. package/coverage/lcov-report/lib/models/connection-config.model.ts.html +280 -0
  53. package/coverage/lcov-report/lib/models/index.html +131 -0
  54. package/coverage/lcov-report/lib/models/provider-types.ts.html +577 -0
  55. package/coverage/lcov-report/lib/providers/base-wallet-provider.ts.html +1138 -0
  56. package/coverage/lcov-report/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
  57. package/coverage/lcov-report/lib/providers/hsuite-native/index.html +116 -0
  58. package/coverage/lcov-report/lib/providers/hsuite-native-provider.ts.html +2347 -0
  59. package/coverage/lcov-report/lib/providers/index.html +146 -0
  60. package/coverage/lcov-report/lib/providers/p2p-native/index.html +131 -0
  61. package/coverage/lcov-report/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
  62. package/coverage/lcov-report/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
  63. package/coverage/lcov-report/lib/providers/wallet-error-handler.ts.html +1132 -0
  64. package/coverage/lcov-report/lib/providers/walletconnect/core/index.html +176 -0
  65. package/coverage/lcov-report/lib/providers/walletconnect/core/session-health.ts.html +673 -0
  66. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
  67. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
  68. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
  69. package/coverage/lcov-report/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
  70. package/coverage/lcov-report/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
  71. package/coverage/lcov-report/lib/providers/walletconnect/signers/index.html +146 -0
  72. package/coverage/lcov-report/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
  73. package/coverage/lcov-report/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
  74. package/coverage/lcov-report/lib/services/index.html +191 -0
  75. package/coverage/lcov-report/lib/services/logger.service.ts.html +463 -0
  76. package/coverage/lcov-report/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
  77. package/coverage/lcov-report/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
  78. package/coverage/lcov-report/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
  79. package/coverage/lcov-report/lib/services/transaction-builders/index.html +161 -0
  80. package/coverage/lcov-report/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
  81. package/coverage/lcov-report/lib/services/transaction.service.ts.html +1123 -0
  82. package/coverage/lcov-report/lib/services/unified-wallet.service.ts.html +2641 -0
  83. package/coverage/lcov-report/lib/services/wallet-context.service.ts.html +637 -0
  84. package/coverage/lcov-report/lib/services/wallet-event-bus.service.ts.html +643 -0
  85. package/coverage/lcov-report/lib/services/wallet-providers.service.ts.html +496 -0
  86. package/coverage/lcov-report/lib/transports/chrome-extension-transport.ts.html +823 -0
  87. package/coverage/lcov-report/lib/transports/index.html +116 -0
  88. package/coverage/lcov-report/lib/utils/index.html +116 -0
  89. package/coverage/lcov-report/lib/utils/ledger-icons.util.ts.html +319 -0
  90. package/coverage/lcov-report/prettify.css +1 -0
  91. package/coverage/lcov-report/prettify.js +2 -0
  92. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  93. package/coverage/lcov-report/sorter.js +210 -0
  94. package/coverage/lcov.info +19252 -0
  95. package/coverage/lib/components/account-selector/account-actions/account-actions.component.ts.html +868 -0
  96. package/coverage/lib/components/account-selector/account-actions/index.html +116 -0
  97. package/coverage/lib/components/account-selector/account-filter/account-filter.component.ts.html +1288 -0
  98. package/coverage/lib/components/account-selector/account-filter/index.html +116 -0
  99. package/coverage/lib/components/account-selector/account-formatting.service.ts.html +685 -0
  100. package/coverage/lib/components/account-selector/account-grouping.service.ts.html +766 -0
  101. package/coverage/lib/components/account-selector/account-list/account-list.component.ts.html +1495 -0
  102. package/coverage/lib/components/account-selector/account-list/index.html +116 -0
  103. package/coverage/lib/components/account-selector/account-selector.component.ts.html +1495 -0
  104. package/coverage/lib/components/account-selector/account-selector.service.ts.html +1588 -0
  105. package/coverage/lib/components/account-selector/index.html +161 -0
  106. package/coverage/lib/components/wallet-account-display/index.html +116 -0
  107. package/coverage/lib/components/wallet-account-display/wallet-account-display.component.ts.html +505 -0
  108. package/coverage/lib/components/wallet-connect-button/index.html +116 -0
  109. package/coverage/lib/components/wallet-connect-button/wallet-connect-button.component.ts.html +805 -0
  110. package/coverage/lib/components/wallet-connect-prompt/index.html +116 -0
  111. package/coverage/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts.html +409 -0
  112. package/coverage/lib/components/wallet-connected-guard/index.html +116 -0
  113. package/coverage/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts.html +304 -0
  114. package/coverage/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts.html +436 -0
  115. package/coverage/lib/components/wallet-connection-modal/connection-method-step/index.html +116 -0
  116. package/coverage/lib/components/wallet-connection-modal/index.html +116 -0
  117. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/index.html +116 -0
  118. package/coverage/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts.html +2287 -0
  119. package/coverage/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts.html +2275 -0
  120. package/coverage/lib/components/wallet-session-display/index.html +116 -0
  121. package/coverage/lib/components/wallet-session-display/wallet-session-display.component.ts.html +676 -0
  122. package/coverage/lib/components/wallet-transaction-status/index.html +116 -0
  123. package/coverage/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts.html +703 -0
  124. package/coverage/lib/directives/index.html +146 -0
  125. package/coverage/lib/directives/wallet-connected.directive.ts.html +670 -0
  126. package/coverage/lib/directives/wallet-context.directive.ts.html +547 -0
  127. package/coverage/lib/directives/wallet-events.directive.ts.html +781 -0
  128. package/coverage/lib/hsuite-wallet.module.ts.html +715 -0
  129. package/coverage/lib/index.html +116 -0
  130. package/coverage/lib/models/connection-config.model.ts.html +280 -0
  131. package/coverage/lib/models/index.html +131 -0
  132. package/coverage/lib/models/provider-types.ts.html +577 -0
  133. package/coverage/lib/providers/base-wallet-provider.ts.html +1138 -0
  134. package/coverage/lib/providers/hsuite-native/channel-client.service.ts.html +2671 -0
  135. package/coverage/lib/providers/hsuite-native/index.html +116 -0
  136. package/coverage/lib/providers/hsuite-native-provider.ts.html +2347 -0
  137. package/coverage/lib/providers/index.html +146 -0
  138. package/coverage/lib/providers/p2p-native/index.html +131 -0
  139. package/coverage/lib/providers/p2p-native/p2p-native.provider.ts.html +2254 -0
  140. package/coverage/lib/providers/p2p-native/p2p-session-manager.ts.html +2170 -0
  141. package/coverage/lib/providers/wallet-error-handler.ts.html +1132 -0
  142. package/coverage/lib/providers/walletconnect/core/index.html +176 -0
  143. package/coverage/lib/providers/walletconnect/core/session-health.ts.html +673 -0
  144. package/coverage/lib/providers/walletconnect/core/walletconnect-client-manager.ts.html +1177 -0
  145. package/coverage/lib/providers/walletconnect/core/walletconnect-provider.ts.html +2563 -0
  146. package/coverage/lib/providers/walletconnect/core/walletconnect-session-store.ts.html +904 -0
  147. package/coverage/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts.html +982 -0
  148. package/coverage/lib/providers/walletconnect/signers/hedera-signer.ts.html +1915 -0
  149. package/coverage/lib/providers/walletconnect/signers/index.html +146 -0
  150. package/coverage/lib/providers/walletconnect/signers/signer-factory.ts.html +445 -0
  151. package/coverage/lib/providers/walletconnect/signers/xrpl-signer.ts.html +1519 -0
  152. package/coverage/lib/services/index.html +191 -0
  153. package/coverage/lib/services/logger.service.ts.html +463 -0
  154. package/coverage/lib/services/transaction-builders/base-transaction-builder.service.ts.html +1840 -0
  155. package/coverage/lib/services/transaction-builders/hedera-amount-utils.ts.html +337 -0
  156. package/coverage/lib/services/transaction-builders/hedera-transaction-builder.service.ts.html +3940 -0
  157. package/coverage/lib/services/transaction-builders/index.html +161 -0
  158. package/coverage/lib/services/transaction-builders/xrpl-transaction-builder.service.ts.html +2581 -0
  159. package/coverage/lib/services/transaction.service.ts.html +1123 -0
  160. package/coverage/lib/services/unified-wallet.service.ts.html +2641 -0
  161. package/coverage/lib/services/wallet-context.service.ts.html +637 -0
  162. package/coverage/lib/services/wallet-event-bus.service.ts.html +643 -0
  163. package/coverage/lib/services/wallet-providers.service.ts.html +496 -0
  164. package/coverage/lib/transports/chrome-extension-transport.ts.html +823 -0
  165. package/coverage/lib/transports/index.html +116 -0
  166. package/coverage/lib/utils/index.html +116 -0
  167. package/coverage/lib/utils/ledger-icons.util.ts.html +319 -0
  168. package/coverage/prettify.css +1 -0
  169. package/coverage/prettify.js +2 -0
  170. package/coverage/sort-arrow-sprite.png +0 -0
  171. package/coverage/sorter.js +210 -0
  172. package/dist/README.md +48 -0
  173. package/dist/fesm2022/hsuite-native-connect-angular.mjs +14592 -0
  174. package/dist/fesm2022/hsuite-native-connect-angular.mjs.map +1 -0
  175. package/dist/index.d.ts +6949 -0
  176. package/examples/minimal-connect.ts +178 -0
  177. package/examples/multi-protocol.ts +495 -0
  178. package/examples/transaction-signing.ts +361 -0
  179. package/jest.config.json +45 -0
  180. package/karma.conf.js +42 -0
  181. package/ng-package.json +20 -0
  182. package/package.json +60 -0
  183. package/src/index.ts +203 -0
  184. package/src/lib/components/account-selector/account-actions/account-actions.component.ts +261 -0
  185. package/src/lib/components/account-selector/account-filter/account-filter.component.ts +401 -0
  186. package/src/lib/components/account-selector/account-formatting.service.ts +200 -0
  187. package/src/lib/components/account-selector/account-grouping.service.ts +227 -0
  188. package/src/lib/components/account-selector/account-list/account-list.component.ts +470 -0
  189. package/src/lib/components/account-selector/account-selector.component.html +135 -0
  190. package/src/lib/components/account-selector/account-selector.component.scss +2039 -0
  191. package/src/lib/components/account-selector/account-selector.component.ts +470 -0
  192. package/src/lib/components/account-selector/account-selector.service.ts +501 -0
  193. package/src/lib/components/wallet-account-display/wallet-account-display.component.html +34 -0
  194. package/src/lib/components/wallet-account-display/wallet-account-display.component.scss +99 -0
  195. package/src/lib/components/wallet-account-display/wallet-account-display.component.ts +140 -0
  196. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.html +14 -0
  197. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.scss +272 -0
  198. package/src/lib/components/wallet-connect-button/wallet-connect-button.component.ts +240 -0
  199. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.html +24 -0
  200. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.scss +50 -0
  201. package/src/lib/components/wallet-connect-prompt/wallet-connect-prompt.component.ts +108 -0
  202. package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.html +24 -0
  203. package/src/lib/components/wallet-connected-guard/wallet-connected-guard.component.ts +73 -0
  204. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.html +56 -0
  205. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.scss +218 -0
  206. package/src/lib/components/wallet-connection-modal/connection-method-step/connection-method-step.component.ts +117 -0
  207. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.html +94 -0
  208. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.scss +272 -0
  209. package/src/lib/components/wallet-connection-modal/qr-pairing-step/qr-pairing-step.component.ts +734 -0
  210. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.html +197 -0
  211. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.scss +678 -0
  212. package/src/lib/components/wallet-connection-modal/wallet-connection-modal.component.ts +730 -0
  213. package/src/lib/components/wallet-session-display/wallet-session-display.component.html +110 -0
  214. package/src/lib/components/wallet-session-display/wallet-session-display.component.scss +179 -0
  215. package/src/lib/components/wallet-session-display/wallet-session-display.component.ts +197 -0
  216. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.html +65 -0
  217. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.scss +254 -0
  218. package/src/lib/components/wallet-transaction-status/wallet-transaction-status.component.ts +206 -0
  219. package/src/lib/directives/wallet-connected.directive.ts +195 -0
  220. package/src/lib/directives/wallet-context.directive.ts +154 -0
  221. package/src/lib/directives/wallet-events.directive.ts +232 -0
  222. package/src/lib/hsuite-wallet.module.ts +210 -0
  223. package/src/lib/models/connection-config.model.ts +65 -0
  224. package/src/lib/models/provider-types.ts +164 -0
  225. package/src/lib/models/unified-account.model.ts +76 -0
  226. package/src/lib/models/wallet-context.model.ts +121 -0
  227. package/src/lib/models/wallet-events.model.ts +158 -0
  228. package/src/lib/providers/base-wallet-provider.ts +351 -0
  229. package/src/lib/providers/hsuite-native/channel-client.service.spec.ts +73 -0
  230. package/src/lib/providers/hsuite-native/channel-client.service.ts +862 -0
  231. package/src/lib/providers/hsuite-native/index.ts +8 -0
  232. package/src/lib/providers/hsuite-native-provider.ts +754 -0
  233. package/src/lib/providers/mobile-native/mobile-native.provider.spec.ts +19 -0
  234. package/src/lib/providers/p2p-native/index.ts +30 -0
  235. package/src/lib/providers/p2p-native/p2p-native.provider.spec.ts +523 -0
  236. package/src/lib/providers/p2p-native/p2p-native.provider.ts +723 -0
  237. package/src/lib/providers/p2p-native/p2p-session-manager.ts +695 -0
  238. package/src/lib/providers/wallet-error-handler.ts +349 -0
  239. package/src/lib/providers/walletconnect/core/base-signer.interface.ts +122 -0
  240. package/src/lib/providers/walletconnect/core/session-health.ts +196 -0
  241. package/src/lib/providers/walletconnect/core/walletconnect-client-manager.ts +364 -0
  242. package/src/lib/providers/walletconnect/core/walletconnect-provider.integration.spec.ts +348 -0
  243. package/src/lib/providers/walletconnect/core/walletconnect-provider.ts +826 -0
  244. package/src/lib/providers/walletconnect/core/walletconnect-session-store.ts +273 -0
  245. package/src/lib/providers/walletconnect/core/walletconnect-signing-orchestrator.ts +299 -0
  246. package/src/lib/providers/walletconnect/core/walletconnect-types.ts +48 -0
  247. package/src/lib/providers/walletconnect/index.ts +33 -0
  248. package/src/lib/providers/walletconnect/signers/hedera-signer.spec.ts +367 -0
  249. package/src/lib/providers/walletconnect/signers/hedera-signer.ts +610 -0
  250. package/src/lib/providers/walletconnect/signers/signer-factory.spec.ts +62 -0
  251. package/src/lib/providers/walletconnect/signers/signer-factory.ts +120 -0
  252. package/src/lib/providers/walletconnect/signers/xrpl-signer.spec.ts +296 -0
  253. package/src/lib/providers/walletconnect/signers/xrpl-signer.ts +478 -0
  254. package/src/lib/services/logger.service.ts +126 -0
  255. package/src/lib/services/transaction-builders/base-transaction-builder.service.ts +585 -0
  256. package/src/lib/services/transaction-builders/hedera-amount-utils.ts +84 -0
  257. package/src/lib/services/transaction-builders/hedera-transaction-builder.service.spec.ts +741 -0
  258. package/src/lib/services/transaction-builders/hedera-transaction-builder.service.ts +1285 -0
  259. package/src/lib/services/transaction-builders/index.ts +54 -0
  260. package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.spec.ts +937 -0
  261. package/src/lib/services/transaction-builders/xrpl-transaction-builder.service.ts +832 -0
  262. package/src/lib/services/transaction.service.ts +346 -0
  263. package/src/lib/services/unified-wallet.service.spec.ts +1382 -0
  264. package/src/lib/services/unified-wallet.service.ts +852 -0
  265. package/src/lib/services/wallet-context.service.ts +184 -0
  266. package/src/lib/services/wallet-event-bus.service.ts +186 -0
  267. package/src/lib/services/wallet-providers.service.ts +137 -0
  268. package/src/lib/transports/chrome-extension-transport.ts +246 -0
  269. package/src/lib/utils/index.ts +14 -0
  270. package/src/lib/utils/ledger-icons.util.ts +78 -0
  271. package/test/test-setup.ts +21 -0
  272. package/test-setup.ts +63 -0
  273. package/tsconfig.build.json +11 -0
  274. package/tsconfig.json +29 -0
  275. package/tsconfig.spec.json +15 -0
  276. package/vitest.config.ts +48 -0
package/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # @hsuite/native-connect-angular
2
+
3
+ Type-safe Angular/Ionic SDK for building multi-chain dApps with unified wallet connectivity via HSuite Channel Protocol and WalletConnect v2.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @hsuite/native-connect-angular
9
+ ```
10
+
11
+ ## Quick Start
12
+
13
+ ```typescript
14
+ import { Component, inject } from '@angular/core';
15
+ import { UnifiedWalletService, WalletConnectButtonComponent } from '@hsuite/native-connect-angular';
16
+
17
+ @Component({
18
+ selector: 'app-home',
19
+ standalone: true,
20
+ imports: [WalletConnectButtonComponent],
21
+ template: `
22
+ <wallet-connect-button [walletConnectProjectId]="'YOUR_PROJECT_ID'"> </wallet-connect-button>
23
+ <div *ngIf="wallet.activeAccount()">Connected: {{ wallet.activeAccount()!.address }}</div>
24
+ `,
25
+ })
26
+ export class HomeComponent {
27
+ wallet = inject(UnifiedWalletService);
28
+ }
29
+ ```
30
+
31
+ ## Features
32
+
33
+ - HSuite Channel Protocol - Native `hsc:` protocol with Nostr + P2P transport
34
+ - WalletConnect v2 - Universal wallet connectivity
35
+ - Reactive State - Angular signals for real-time updates
36
+ - Pre-built Components - Ready-to-use UI components (buttons, modals, selectors)
37
+ - Transaction Builders - Type-safe transaction construction for Hedera and XRPL
38
+ - Multi-Account Support - Manage multiple accounts across ledgers
39
+
40
+ ## Documentation
41
+
42
+ - [Full Documentation](../../docs/packages/angular-sdk.md)
43
+ - [Channel Protocol](../../docs/native-wallet-sdk/channel-protocol.md)
44
+ - [Companion dApp](../../docs/apps/hsuite-wallet-dapp.md)
45
+
46
+ ## License
47
+
48
+ Apache-2.0 - See [LICENSE](../../LICENSE)
@@ -0,0 +1,476 @@
1
+ # Angular SDK Usage Examples
2
+
3
+ This document provides complete, copy-paste ready examples for using the `@hsuite/native-connect-angular` in both module-based and standalone Angular/Ionic applications.
4
+
5
+ ---
6
+
7
+ ## Table of Contents
8
+
9
+ - [Module-Based App Example](#module-based-app-example)
10
+ - [Standalone App Example](#standalone-app-example)
11
+ - [Common Usage Patterns](#common-usage-patterns)
12
+
13
+ ---
14
+
15
+ ## Module-Based App Example
16
+
17
+ ### Step 1: Install Package
18
+
19
+ ```bash
20
+ npm install @hsuite/native-connect-angular
21
+ # or
22
+ pnpm add @hsuite/native-connect-angular
23
+ ```
24
+
25
+ ### Step 2: Import Module
26
+
27
+ ```typescript
28
+ // src/app/app.module.ts
29
+ import { NgModule } from '@angular/core';
30
+ import { BrowserModule } from '@angular/platform-browser';
31
+ import { RouteReuseStrategy } from '@angular/router';
32
+ import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
33
+ import { HsuiteWalletModule } from '@hsuite/native-connect-angular';
34
+
35
+ import { AppComponent } from './app.component';
36
+ import { AppRoutingModule } from './app-routing.module';
37
+
38
+ @NgModule({
39
+ declarations: [AppComponent],
40
+ imports: [
41
+ BrowserModule,
42
+ IonicModule.forRoot(),
43
+ AppRoutingModule,
44
+ HsuiteWalletModule, // ← Add this line
45
+ ],
46
+ providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }],
47
+ bootstrap: [AppComponent],
48
+ })
49
+ export class AppModule {}
50
+ ```
51
+
52
+ ### Step 3: Use in Components
53
+
54
+ ```typescript
55
+ // src/app/pages/home/home.page.ts
56
+ import { Component } from '@angular/core';
57
+ import { UnifiedWalletService } from '@hsuite/native-connect-angular';
58
+
59
+ @Component({
60
+ selector: 'app-home',
61
+ templateUrl: 'home.page.html',
62
+ styleUrls: ['home.page.scss'],
63
+ })
64
+ export class HomePage {
65
+ constructor(private wallet: UnifiedWalletService) {}
66
+
67
+ async connectWallet() {
68
+ await this.wallet.connect('walletconnect-v2', {
69
+ type: 'walletconnect-v2',
70
+ projectId: 'YOUR_WALLETCONNECT_PROJECT_ID',
71
+ ledgerId: 'hedera',
72
+ networkId: 'hedera:testnet',
73
+ appName: 'My dApp',
74
+ appDescription: 'My awesome dApp',
75
+ });
76
+ }
77
+
78
+ get activeAccount() {
79
+ return this.wallet.activeAccount();
80
+ }
81
+
82
+ get isConnected() {
83
+ return this.wallet.isAnyConnected();
84
+ }
85
+ }
86
+ ```
87
+
88
+ ```html
89
+ <!-- src/app/pages/home/home.page.html -->
90
+ <ion-header>
91
+ <ion-toolbar>
92
+ <ion-title>My dApp</ion-title>
93
+ </ion-toolbar>
94
+ </ion-header>
95
+
96
+ <ion-content class="ion-padding">
97
+ <h1>Welcome to My dApp</h1>
98
+
99
+ <!-- Pre-built connection button -->
100
+ <wallet-connect-button
101
+ [walletConnectProjectId]="'YOUR_WALLETCONNECT_PROJECT_ID'"
102
+ [appName]="'My dApp'"
103
+ [showSessionInfo]="true"
104
+ (connected)="onConnected($event)"
105
+ >
106
+ </wallet-connect-button>
107
+
108
+ <!-- Conditional content based on connection -->
109
+ <div *ngIf="isConnected">
110
+ <h2>Connected!</h2>
111
+
112
+ <!-- Display session info -->
113
+ <wallet-session-display [showMetadata]="true" [showTimestamps]="true"> </wallet-session-display>
114
+
115
+ <!-- Account selector for multi-wallet -->
116
+ <wallet-account-selector
117
+ [selectedAddress]="activeAccount?.address"
118
+ (accountChanged)="onAccountChange($event)"
119
+ >
120
+ </wallet-account-selector>
121
+
122
+ <!-- Transaction status -->
123
+ <wallet-transaction-status
124
+ [status]="txStatus"
125
+ [transactionId]="txId"
126
+ [explorerUrl]="explorerUrl"
127
+ >
128
+ </wallet-transaction-status>
129
+ </div>
130
+
131
+ <div *ngIf="!isConnected">
132
+ <p>Please connect your wallet to continue</p>
133
+ </div>
134
+ </ion-content>
135
+ ```
136
+
137
+ ---
138
+
139
+ ## Standalone App Example
140
+
141
+ ### Step 1: Install Package
142
+
143
+ ```bash
144
+ npm install @hsuite/native-connect-angular
145
+ # or
146
+ pnpm add @hsuite/native-connect-angular
147
+ ```
148
+
149
+ ### Step 2: Bootstrap App (if needed)
150
+
151
+ ```typescript
152
+ // src/main.ts
153
+ import { bootstrapApplication } from '@angular/platform-browser';
154
+ import { RouteReuseStrategy, provideRouter } from '@angular/router';
155
+ import { IonicRouteStrategy, provideIonicAngular } from '@ionic/angular/standalone';
156
+ import { routes } from './app/app.routes';
157
+ import { AppComponent } from './app/app.component';
158
+
159
+ bootstrapApplication(AppComponent, {
160
+ providers: [
161
+ { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },
162
+ provideIonicAngular(),
163
+ provideRouter(routes),
164
+ ],
165
+ });
166
+ ```
167
+
168
+ ### Step 3: Use in Components
169
+
170
+ ```typescript
171
+ // src/app/pages/home/home.page.ts
172
+ import { Component, inject } from '@angular/core';
173
+ import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
174
+ import { CommonModule } from '@angular/common';
175
+ import {
176
+ WalletConnectButtonComponent,
177
+ WalletSessionDisplayComponent,
178
+ WalletAccountSelectorComponent,
179
+ WalletTransactionStatusComponent,
180
+ UnifiedWalletService,
181
+ } from '@hsuite/native-connect-angular';
182
+
183
+ @Component({
184
+ selector: 'app-home',
185
+ templateUrl: 'home.page.html',
186
+ styleUrls: ['home.page.scss'],
187
+ standalone: true,
188
+ imports: [
189
+ CommonModule,
190
+ IonHeader,
191
+ IonToolbar,
192
+ IonTitle,
193
+ IonContent,
194
+ // Import SDK components you need
195
+ WalletConnectButtonComponent,
196
+ WalletSessionDisplayComponent,
197
+ WalletAccountSelectorComponent,
198
+ WalletTransactionStatusComponent,
199
+ ],
200
+ })
201
+ export class HomePage {
202
+ // Inject services
203
+ private wallet = inject(UnifiedWalletService);
204
+
205
+ // Reactive state (signals)
206
+ activeAccount = this.wallet.activeAccount;
207
+ isConnected = this.wallet.isAnyConnected;
208
+
209
+ async connectWallet() {
210
+ await this.wallet.connect('walletconnect-v2', {
211
+ type: 'walletconnect-v2',
212
+ projectId: 'YOUR_WALLETCONNECT_PROJECT_ID',
213
+ ledgerId: 'hedera',
214
+ networkId: 'hedera:testnet',
215
+ appName: 'My dApp',
216
+ appDescription: 'My awesome dApp',
217
+ });
218
+ }
219
+
220
+ onConnected(event: any) {
221
+ console.log('Wallet connected:', event);
222
+ }
223
+
224
+ onAccountChange(account: any) {
225
+ console.log('Account changed:', account);
226
+ }
227
+ }
228
+ ```
229
+
230
+ ```html
231
+ <!-- src/app/pages/home/home.page.html -->
232
+ <ion-header>
233
+ <ion-toolbar>
234
+ <ion-title>My dApp</ion-title>
235
+ </ion-toolbar>
236
+ </ion-header>
237
+
238
+ <ion-content class="ion-padding">
239
+ <h1>Welcome to My dApp</h1>
240
+
241
+ <!-- Pre-built connection button -->
242
+ <wallet-connect-button
243
+ [walletConnectProjectId]="'YOUR_WALLETCONNECT_PROJECT_ID'"
244
+ [appName]="'My dApp'"
245
+ [showSessionInfo]="true"
246
+ (connected)="onConnected($event)"
247
+ >
248
+ </wallet-connect-button>
249
+
250
+ <!-- Conditional content based on connection (using signals) -->
251
+ @if (isConnected()) {
252
+ <h2>Connected!</h2>
253
+
254
+ <!-- Display session info -->
255
+ <wallet-session-display [showMetadata]="true" [showTimestamps]="true"> </wallet-session-display>
256
+
257
+ <!-- Account selector for multi-wallet -->
258
+ <wallet-account-selector
259
+ [selectedAddress]="activeAccount()?.address"
260
+ (accountChanged)="onAccountChange($event)"
261
+ >
262
+ </wallet-account-selector>
263
+ } @else {
264
+ <p>Please connect your wallet to continue</p>
265
+ }
266
+ </ion-content>
267
+ ```
268
+
269
+ ---
270
+
271
+ ## Common Usage Patterns
272
+
273
+ ### Pattern 1: Using Directives
274
+
275
+ Both module-based and standalone apps can use SDK directives.
276
+
277
+ **Module-based:**
278
+
279
+ ```html
280
+ <!-- Directives available automatically -->
281
+ <div *walletConnected; else notConnected>
282
+ <p>You are connected!</p>
283
+ </div>
284
+ <ng-template #notConnected>
285
+ <p>Please connect your wallet</p>
286
+ </ng-template>
287
+ ```
288
+
289
+ **Standalone:**
290
+
291
+ ```typescript
292
+ import { WalletConnectedDirective } from '@hsuite/native-connect-angular';
293
+
294
+ @Component({
295
+ imports: [WalletConnectedDirective],
296
+ // ...
297
+ })
298
+ ```
299
+
300
+ ```html
301
+ <div *walletConnected; else notConnected>
302
+ <p>You are connected!</p>
303
+ </div>
304
+ ```
305
+
306
+ ### Pattern 2: Event Subscriptions
307
+
308
+ ```typescript
309
+ import { Component, OnInit, inject } from '@angular/core';
310
+ import { WalletEventBus } from '@hsuite/native-connect-angular';
311
+
312
+ export class MyComponent implements OnInit {
313
+ private eventBus = inject(WalletEventBus);
314
+
315
+ ngOnInit() {
316
+ // Subscribe to wallet events
317
+ this.eventBus.on('account:changed', (account) => {
318
+ console.log('Account changed:', account);
319
+ });
320
+
321
+ this.eventBus.on('connection:closed', (providerId) => {
322
+ console.log('Disconnected:', providerId);
323
+ });
324
+ }
325
+ }
326
+ ```
327
+
328
+ ### Pattern 3: Manual Connection (without button)
329
+
330
+ ```typescript
331
+ import { Component, inject } from '@angular/core';
332
+ import { UnifiedWalletService } from '@hsuite/native-connect-angular';
333
+
334
+ export class MyComponent {
335
+ private wallet = inject(UnifiedWalletService);
336
+
337
+ async connectHsuiteNative() {
338
+ await this.wallet.connect('hsuite-native', {
339
+ type: 'hsuite-native',
340
+ appId: 'my-dapp',
341
+ appName: 'My dApp',
342
+ ledgerId: 'hedera',
343
+ networkId: 'hedera:testnet',
344
+ walletUrl: 'http://localhost:8100',
345
+ });
346
+ }
347
+
348
+ async connectWalletConnect() {
349
+ await this.wallet.connect('walletconnect-v2', {
350
+ type: 'walletconnect-v2',
351
+ projectId: 'YOUR_PROJECT_ID',
352
+ ledgerId: 'hedera',
353
+ networkId: 'hedera:testnet',
354
+ appName: 'My dApp',
355
+ });
356
+ }
357
+
358
+ async disconnect() {
359
+ await this.wallet.disconnectAll();
360
+ }
361
+ }
362
+ ```
363
+
364
+ ### Pattern 4: Transaction Signing
365
+
366
+ ```typescript
367
+ import { Component, inject } from '@angular/core';
368
+ import { UnifiedWalletService } from '@hsuite/native-connect-angular';
369
+
370
+ export class MyComponent {
371
+ private wallet = inject(UnifiedWalletService);
372
+
373
+ async signTransaction() {
374
+ const result = await this.wallet.signTransaction({
375
+ ledgerId: 'hedera',
376
+ networkId: 'hedera:testnet',
377
+ accountAddress: this.wallet.activeAccount()?.address || '',
378
+ payload: 'base64EncodedTransaction',
379
+ });
380
+
381
+ console.log('Signed transaction:', result);
382
+ }
383
+
384
+ async submitTransaction() {
385
+ const result = await this.wallet.submitTransaction({
386
+ ledgerId: 'hedera',
387
+ networkId: 'hedera:testnet',
388
+ accountAddress: this.wallet.activeAccount()?.address || '',
389
+ payload: 'base64EncodedTransaction',
390
+ });
391
+
392
+ console.log('Transaction ID:', result.transactionId);
393
+ }
394
+ }
395
+ ```
396
+
397
+ ### Pattern 5: Using Wallet Context
398
+
399
+ ```typescript
400
+ import { Component, inject } from '@angular/core';
401
+ import { WalletContextService } from '@hsuite/native-connect-angular';
402
+
403
+ export class MyComponent {
404
+ private context = inject(WalletContextService);
405
+
406
+ // Computed values
407
+ isConnected = this.context.isConnected;
408
+ hasAccounts = this.context.hasAccounts;
409
+ allAccounts = this.context.context().allAccounts;
410
+ }
411
+ ```
412
+
413
+ ```html
414
+ <ng-container *walletContext="let ctx">
415
+ <p>Connected: {{ ctx.isConnected }}</p>
416
+ <p>Active Account: {{ ctx.activeAccount?.address }}</p>
417
+ <p>Total Accounts: {{ ctx.allAccounts.length }}</p>
418
+ </ng-container>
419
+ ```
420
+
421
+ ---
422
+
423
+ ## Quick Decision Guide
424
+
425
+ **Use Module-Based Approach if:**
426
+
427
+ - ✅ You have an existing Angular/Ionic app using NgModules
428
+ - ✅ You want simple one-time setup
429
+ - ✅ Your team is familiar with traditional Angular modules
430
+
431
+ **Use Standalone Approach if:**
432
+
433
+ - ✅ You're starting a new Angular 14+ project
434
+ - ✅ You want smaller bundle sizes (tree-shaking)
435
+ - ✅ You prefer explicit imports
436
+
437
+ **Both approaches have:**
438
+
439
+ - ✅ Same components, directives, and services
440
+ - ✅ Same API and functionality
441
+ - ✅ Full TypeScript support
442
+ - ✅ Comprehensive documentation
443
+
444
+ ---
445
+
446
+ ## Get WalletConnect Project ID
447
+
448
+ To use WalletConnect, you need a project ID:
449
+
450
+ 1. Go to [https://cloud.walletconnect.com](https://cloud.walletconnect.com)
451
+ 2. Create a free account
452
+ 3. Create a new project
453
+ 4. Copy your Project ID
454
+ 5. Use it in your app:
455
+
456
+ ```typescript
457
+ await this.wallet.connect('walletconnect-v2', {
458
+ projectId: 'YOUR_PROJECT_ID_HERE', // ← Paste here
459
+ // ...
460
+ });
461
+ ```
462
+
463
+ ---
464
+
465
+ ## Need Help?
466
+
467
+ - 📚 [Full Documentation](../../docs/packages/angular-sdk.md)
468
+ - 🚀 [Quick Start Guide](../../docs/getting-started/quick-start.md)
469
+ - 🔍 [API Reference](../../docs/angular-sdk/api/)
470
+ - 💬 [GitHub Issues](https://github.com/hsuite-wallet/hsuite-native-connect/issues)
471
+
472
+ ---
473
+
474
+ **Last Updated:** November 17, 2025
475
+ **SDK Version:** 0.0.1
476
+ **Status:** ✅ Production Ready
@@ -0,0 +1,7 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
2
+ <circle cx="50" cy="50" r="45" fill="#6B7280"/>
3
+ <rect x="25" y="30" width="50" height="40" rx="4" fill="white" stroke="#4B5563" stroke-width="2"/>
4
+ <circle cx="50" cy="70" r="3" fill="#4B5563"/>
5
+ <text x="50" y="58" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#4B5563" text-anchor="middle">EXT</text>
6
+ </svg>
7
+
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
2
+ <circle cx="50" cy="50" r="45" fill="#2D3B52"/>
3
+ <path d="M30 40 L50 25 L70 40 L70 60 L50 75 L30 60 Z" fill="#00D4AA" stroke="white" stroke-width="2"/>
4
+ <text x="50" y="63" font-family="Arial, sans-serif" font-size="24" font-weight="bold" fill="white" text-anchor="middle">HP</text>
5
+ </svg>
6
+
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
2
+ <defs>
3
+ <linearGradient id="hsuiteGrad" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#00d4ff;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#9333ea;stop-opacity:1" />
6
+ </linearGradient>
7
+ </defs>
8
+ <circle cx="50" cy="50" r="45" fill="url(#hsuiteGrad)"/>
9
+ <text x="50" y="60" font-family="Arial, sans-serif" font-size="32" font-weight="bold" fill="white" text-anchor="middle">H</text>
10
+ </svg>
11
+
@@ -0,0 +1,11 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
2
+ <defs>
3
+ <linearGradient id="kabilaGrad" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#6B46C1;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#9333EA;stop-opacity:1" />
6
+ </linearGradient>
7
+ </defs>
8
+ <circle cx="50" cy="50" r="45" fill="url(#kabilaGrad)"/>
9
+ <text x="50" y="60" font-family="Arial, sans-serif" font-size="32" font-weight="bold" fill="white" text-anchor="middle">K</text>
10
+ </svg>
11
+
@@ -0,0 +1,13 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" width="100" height="100">
2
+ <defs>
3
+ <linearGradient id="wcGrad" x1="0%" y1="0%" x2="100%" y2="100%">
4
+ <stop offset="0%" style="stop-color:#3B99FC;stop-opacity:1" />
5
+ <stop offset="100%" style="stop-color:#5C7CFA;stop-opacity:1" />
6
+ </linearGradient>
7
+ </defs>
8
+ <circle cx="50" cy="50" r="45" fill="url(#wcGrad)"/>
9
+ <circle cx="35" cy="45" r="8" fill="white"/>
10
+ <circle cx="65" cy="45" r="8" fill="white"/>
11
+ <path d="M30 60 Q50 75 70 60" stroke="white" stroke-width="8" fill="none" stroke-linecap="round"/>
12
+ </svg>
13
+