@tezos-x/octez.connect-core 0.9.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 (285) hide show
  1. package/LICENCE +19 -0
  2. package/README.md +9 -0
  3. package/dist/cjs/MockAnalytics.d.ts +4 -0
  4. package/dist/cjs/MockAnalytics.js +11 -0
  5. package/dist/cjs/MockAnalytics.js.map +1 -0
  6. package/dist/cjs/MockWindow.d.ts +14 -0
  7. package/dist/cjs/MockWindow.js +39 -0
  8. package/dist/cjs/MockWindow.js.map +1 -0
  9. package/dist/cjs/Serializer.d.ts +19 -0
  10. package/dist/cjs/Serializer.js +48 -0
  11. package/dist/cjs/Serializer.js.map +1 -0
  12. package/dist/cjs/clients/beacon-client/BeaconClient.d.ts +53 -0
  13. package/dist/cjs/clients/beacon-client/BeaconClient.js +111 -0
  14. package/dist/cjs/clients/beacon-client/BeaconClient.js.map +1 -0
  15. package/dist/cjs/clients/beacon-client/BeaconClientOptions.d.ts +26 -0
  16. package/dist/cjs/clients/beacon-client/BeaconClientOptions.js +3 -0
  17. package/dist/cjs/clients/beacon-client/BeaconClientOptions.js.map +1 -0
  18. package/dist/cjs/clients/client/Client.d.ts +91 -0
  19. package/dist/cjs/clients/client/Client.js +241 -0
  20. package/dist/cjs/clients/client/Client.js.map +1 -0
  21. package/dist/cjs/clients/client/ClientOptions.d.ts +42 -0
  22. package/dist/cjs/clients/client/ClientOptions.js +3 -0
  23. package/dist/cjs/clients/client/ClientOptions.js.map +1 -0
  24. package/dist/cjs/constants.d.ts +4 -0
  25. package/dist/cjs/constants.js +8 -0
  26. package/dist/cjs/constants.js.map +1 -0
  27. package/dist/cjs/debug.d.ts +2 -0
  28. package/dist/cjs/debug.js +17 -0
  29. package/dist/cjs/debug.js.map +1 -0
  30. package/dist/cjs/errors/AbortedBeaconError.d.ts +9 -0
  31. package/dist/cjs/errors/AbortedBeaconError.js +17 -0
  32. package/dist/cjs/errors/AbortedBeaconError.js.map +1 -0
  33. package/dist/cjs/errors/BeaconError.d.ts +15 -0
  34. package/dist/cjs/errors/BeaconError.js +19 -0
  35. package/dist/cjs/errors/BeaconError.js.map +1 -0
  36. package/dist/cjs/errors/BroadcastBeaconError.d.ts +9 -0
  37. package/dist/cjs/errors/BroadcastBeaconError.js +17 -0
  38. package/dist/cjs/errors/BroadcastBeaconError.js.map +1 -0
  39. package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.d.ts +3 -0
  40. package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.js +18 -0
  41. package/dist/cjs/errors/EncryptionTypeNotSupportedBeaconError.js.map +1 -0
  42. package/dist/cjs/errors/NetworkNotSupportedBeaconError.d.ts +9 -0
  43. package/dist/cjs/errors/NetworkNotSupportedBeaconError.js +17 -0
  44. package/dist/cjs/errors/NetworkNotSupportedBeaconError.js.map +1 -0
  45. package/dist/cjs/errors/NoAddressBeaconError.d.ts +9 -0
  46. package/dist/cjs/errors/NoAddressBeaconError.js +17 -0
  47. package/dist/cjs/errors/NoAddressBeaconError.js.map +1 -0
  48. package/dist/cjs/errors/NoPrivateKeyBeaconError.d.ts +9 -0
  49. package/dist/cjs/errors/NoPrivateKeyBeaconError.js +17 -0
  50. package/dist/cjs/errors/NoPrivateKeyBeaconError.js.map +1 -0
  51. package/dist/cjs/errors/NotGrantedBeaconError.d.ts +9 -0
  52. package/dist/cjs/errors/NotGrantedBeaconError.js +17 -0
  53. package/dist/cjs/errors/NotGrantedBeaconError.js.map +1 -0
  54. package/dist/cjs/errors/ParametersInvalidBeaconError.d.ts +9 -0
  55. package/dist/cjs/errors/ParametersInvalidBeaconError.js +17 -0
  56. package/dist/cjs/errors/ParametersInvalidBeaconError.js.map +1 -0
  57. package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.d.ts +9 -0
  58. package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js +17 -0
  59. package/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js.map +1 -0
  60. package/dist/cjs/errors/TooManyOperationsBeaconError.d.ts +9 -0
  61. package/dist/cjs/errors/TooManyOperationsBeaconError.js +17 -0
  62. package/dist/cjs/errors/TooManyOperationsBeaconError.js.map +1 -0
  63. package/dist/cjs/errors/TransactionInvalidBeaconError.d.ts +14 -0
  64. package/dist/cjs/errors/TransactionInvalidBeaconError.js +22 -0
  65. package/dist/cjs/errors/TransactionInvalidBeaconError.js.map +1 -0
  66. package/dist/cjs/errors/UnknownBeaconError.d.ts +9 -0
  67. package/dist/cjs/errors/UnknownBeaconError.js +17 -0
  68. package/dist/cjs/errors/UnknownBeaconError.js.map +1 -0
  69. package/dist/cjs/errors/get-error.d.ts +8 -0
  70. package/dist/cjs/errors/get-error.js +53 -0
  71. package/dist/cjs/errors/get-error.js.map +1 -0
  72. package/dist/cjs/index.d.ts +53 -0
  73. package/dist/cjs/index.js +90 -0
  74. package/dist/cjs/index.js.map +1 -0
  75. package/dist/cjs/managers/AccountManager.d.ts +18 -0
  76. package/dist/cjs/managers/AccountManager.js +73 -0
  77. package/dist/cjs/managers/AccountManager.js.map +1 -0
  78. package/dist/cjs/managers/AppMetadataManager.d.ts +16 -0
  79. package/dist/cjs/managers/AppMetadataManager.js +57 -0
  80. package/dist/cjs/managers/AppMetadataManager.js.map +1 -0
  81. package/dist/cjs/managers/PeerManager.d.ts +18 -0
  82. package/dist/cjs/managers/PeerManager.js +61 -0
  83. package/dist/cjs/managers/PeerManager.js.map +1 -0
  84. package/dist/cjs/managers/PermissionManager.d.ts +17 -0
  85. package/dist/cjs/managers/PermissionManager.js +64 -0
  86. package/dist/cjs/managers/PermissionManager.js.map +1 -0
  87. package/dist/cjs/managers/PermissionValidator.d.ts +16 -0
  88. package/dist/cjs/managers/PermissionValidator.js +58 -0
  89. package/dist/cjs/managers/PermissionValidator.js.map +1 -0
  90. package/dist/cjs/managers/StorageManager.d.ts +18 -0
  91. package/dist/cjs/managers/StorageManager.js +72 -0
  92. package/dist/cjs/managers/StorageManager.js.map +1 -0
  93. package/dist/cjs/migrations/migrate-0.7.0.d.ts +20 -0
  94. package/dist/cjs/migrations/migrate-0.7.0.js +44 -0
  95. package/dist/cjs/migrations/migrate-0.7.0.js.map +1 -0
  96. package/dist/cjs/migrations/migrations.d.ts +2 -0
  97. package/dist/cjs/migrations/migrations.js +44 -0
  98. package/dist/cjs/migrations/migrations.js.map +1 -0
  99. package/dist/cjs/storage/ChromeStorage.d.ts +19 -0
  100. package/dist/cjs/storage/ChromeStorage.js +76 -0
  101. package/dist/cjs/storage/ChromeStorage.js.map +1 -0
  102. package/dist/cjs/storage/IndexedDBStorage.d.ts +65 -0
  103. package/dist/cjs/storage/IndexedDBStorage.js +230 -0
  104. package/dist/cjs/storage/IndexedDBStorage.js.map +1 -0
  105. package/dist/cjs/storage/LocalStorage.d.ts +21 -0
  106. package/dist/cjs/storage/LocalStorage.js +92 -0
  107. package/dist/cjs/storage/LocalStorage.js.map +1 -0
  108. package/dist/cjs/storage/StorageValidator.d.ts +12 -0
  109. package/dist/cjs/storage/StorageValidator.js +110 -0
  110. package/dist/cjs/storage/StorageValidator.js.map +1 -0
  111. package/dist/cjs/storage/WCStorage.d.ts +15 -0
  112. package/dist/cjs/storage/WCStorage.js +84 -0
  113. package/dist/cjs/storage/WCStorage.js.map +1 -0
  114. package/dist/cjs/storage/getStorage.d.ts +5 -0
  115. package/dist/cjs/storage/getStorage.js +34 -0
  116. package/dist/cjs/storage/getStorage.js.map +1 -0
  117. package/dist/cjs/transports/Transport.d.ts +85 -0
  118. package/dist/cjs/transports/Transport.js +171 -0
  119. package/dist/cjs/transports/Transport.js.map +1 -0
  120. package/dist/cjs/transports/clients/ClientEvents.d.ts +6 -0
  121. package/dist/cjs/transports/clients/ClientEvents.js +3 -0
  122. package/dist/cjs/transports/clients/ClientEvents.js.map +1 -0
  123. package/dist/cjs/transports/clients/CommunicationClient.d.ts +47 -0
  124. package/dist/cjs/transports/clients/CommunicationClient.js +86 -0
  125. package/dist/cjs/transports/clients/CommunicationClient.js.map +1 -0
  126. package/dist/cjs/transports/clients/MessageBasedClient.d.ts +56 -0
  127. package/dist/cjs/transports/clients/MessageBasedClient.js +109 -0
  128. package/dist/cjs/transports/clients/MessageBasedClient.js.map +1 -0
  129. package/dist/cjs/utils/Logger.d.ts +33 -0
  130. package/dist/cjs/utils/Logger.js +98 -0
  131. package/dist/cjs/utils/Logger.js.map +1 -0
  132. package/dist/cjs/utils/assert-never.d.ts +6 -0
  133. package/dist/cjs/utils/assert-never.js +14 -0
  134. package/dist/cjs/utils/assert-never.js.map +1 -0
  135. package/dist/cjs/utils/get-account-identifier.d.ts +10 -0
  136. package/dist/cjs/utils/get-account-identifier.js +36 -0
  137. package/dist/cjs/utils/get-account-identifier.js.map +1 -0
  138. package/dist/cjs/utils/get-sender-id.d.ts +8 -0
  139. package/dist/cjs/utils/get-sender-id.js +31 -0
  140. package/dist/cjs/utils/get-sender-id.js.map +1 -0
  141. package/dist/cjs/utils/multi-tab-channel.d.ts +17 -0
  142. package/dist/cjs/utils/multi-tab-channel.js +85 -0
  143. package/dist/cjs/utils/multi-tab-channel.js.map +1 -0
  144. package/dist/esm/MockAnalytics.d.ts +4 -0
  145. package/dist/esm/MockAnalytics.js +7 -0
  146. package/dist/esm/MockAnalytics.js.map +1 -0
  147. package/dist/esm/MockWindow.d.ts +14 -0
  148. package/dist/esm/MockWindow.js +35 -0
  149. package/dist/esm/MockWindow.js.map +1 -0
  150. package/dist/esm/Serializer.d.ts +19 -0
  151. package/dist/esm/Serializer.js +31 -0
  152. package/dist/esm/Serializer.js.map +1 -0
  153. package/dist/esm/clients/beacon-client/BeaconClient.d.ts +53 -0
  154. package/dist/esm/clients/beacon-client/BeaconClient.js +103 -0
  155. package/dist/esm/clients/beacon-client/BeaconClient.js.map +1 -0
  156. package/dist/esm/clients/beacon-client/BeaconClientOptions.d.ts +26 -0
  157. package/dist/esm/clients/beacon-client/BeaconClientOptions.js +2 -0
  158. package/dist/esm/clients/beacon-client/BeaconClientOptions.js.map +1 -0
  159. package/dist/esm/clients/client/Client.d.ts +91 -0
  160. package/dist/esm/clients/client/Client.js +198 -0
  161. package/dist/esm/clients/client/Client.js.map +1 -0
  162. package/dist/esm/clients/client/ClientOptions.d.ts +42 -0
  163. package/dist/esm/clients/client/ClientOptions.js +2 -0
  164. package/dist/esm/clients/client/ClientOptions.js.map +1 -0
  165. package/dist/esm/constants.d.ts +4 -0
  166. package/dist/esm/constants.js +5 -0
  167. package/dist/esm/constants.js.map +1 -0
  168. package/dist/esm/debug.d.ts +2 -0
  169. package/dist/esm/debug.js +12 -0
  170. package/dist/esm/debug.js.map +1 -0
  171. package/dist/esm/errors/AbortedBeaconError.d.ts +9 -0
  172. package/dist/esm/errors/AbortedBeaconError.js +13 -0
  173. package/dist/esm/errors/AbortedBeaconError.js.map +1 -0
  174. package/dist/esm/errors/BeaconError.d.ts +15 -0
  175. package/dist/esm/errors/BeaconError.js +17 -0
  176. package/dist/esm/errors/BeaconError.js.map +1 -0
  177. package/dist/esm/errors/BroadcastBeaconError.d.ts +9 -0
  178. package/dist/esm/errors/BroadcastBeaconError.js +13 -0
  179. package/dist/esm/errors/BroadcastBeaconError.js.map +1 -0
  180. package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.d.ts +3 -0
  181. package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.js +18 -0
  182. package/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.js.map +1 -0
  183. package/dist/esm/errors/NetworkNotSupportedBeaconError.d.ts +9 -0
  184. package/dist/esm/errors/NetworkNotSupportedBeaconError.js +13 -0
  185. package/dist/esm/errors/NetworkNotSupportedBeaconError.js.map +1 -0
  186. package/dist/esm/errors/NoAddressBeaconError.d.ts +9 -0
  187. package/dist/esm/errors/NoAddressBeaconError.js +13 -0
  188. package/dist/esm/errors/NoAddressBeaconError.js.map +1 -0
  189. package/dist/esm/errors/NoPrivateKeyBeaconError.d.ts +9 -0
  190. package/dist/esm/errors/NoPrivateKeyBeaconError.js +13 -0
  191. package/dist/esm/errors/NoPrivateKeyBeaconError.js.map +1 -0
  192. package/dist/esm/errors/NotGrantedBeaconError.d.ts +9 -0
  193. package/dist/esm/errors/NotGrantedBeaconError.js +13 -0
  194. package/dist/esm/errors/NotGrantedBeaconError.js.map +1 -0
  195. package/dist/esm/errors/ParametersInvalidBeaconError.d.ts +9 -0
  196. package/dist/esm/errors/ParametersInvalidBeaconError.js +13 -0
  197. package/dist/esm/errors/ParametersInvalidBeaconError.js.map +1 -0
  198. package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.d.ts +9 -0
  199. package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.js +13 -0
  200. package/dist/esm/errors/SignatureTypeNotSupportedBeaconError.js.map +1 -0
  201. package/dist/esm/errors/TooManyOperationsBeaconError.d.ts +9 -0
  202. package/dist/esm/errors/TooManyOperationsBeaconError.js +13 -0
  203. package/dist/esm/errors/TooManyOperationsBeaconError.js.map +1 -0
  204. package/dist/esm/errors/TransactionInvalidBeaconError.d.ts +14 -0
  205. package/dist/esm/errors/TransactionInvalidBeaconError.js +19 -0
  206. package/dist/esm/errors/TransactionInvalidBeaconError.js.map +1 -0
  207. package/dist/esm/errors/UnknownBeaconError.d.ts +9 -0
  208. package/dist/esm/errors/UnknownBeaconError.js +13 -0
  209. package/dist/esm/errors/UnknownBeaconError.js.map +1 -0
  210. package/dist/esm/errors/get-error.d.ts +8 -0
  211. package/dist/esm/errors/get-error.js +49 -0
  212. package/dist/esm/errors/get-error.js.map +1 -0
  213. package/dist/esm/index.d.ts +53 -0
  214. package/dist/esm/index.js +67 -0
  215. package/dist/esm/index.js.map +1 -0
  216. package/dist/esm/managers/AccountManager.d.ts +18 -0
  217. package/dist/esm/managers/AccountManager.js +44 -0
  218. package/dist/esm/managers/AccountManager.js.map +1 -0
  219. package/dist/esm/managers/AppMetadataManager.d.ts +16 -0
  220. package/dist/esm/managers/AppMetadataManager.js +32 -0
  221. package/dist/esm/managers/AppMetadataManager.js.map +1 -0
  222. package/dist/esm/managers/PeerManager.d.ts +18 -0
  223. package/dist/esm/managers/PeerManager.js +34 -0
  224. package/dist/esm/managers/PeerManager.js.map +1 -0
  225. package/dist/esm/managers/PermissionManager.d.ts +17 -0
  226. package/dist/esm/managers/PermissionManager.js +37 -0
  227. package/dist/esm/managers/PermissionManager.js.map +1 -0
  228. package/dist/esm/managers/PermissionValidator.d.ts +16 -0
  229. package/dist/esm/managers/PermissionValidator.js +43 -0
  230. package/dist/esm/managers/PermissionValidator.js.map +1 -0
  231. package/dist/esm/managers/StorageManager.d.ts +18 -0
  232. package/dist/esm/managers/StorageManager.js +50 -0
  233. package/dist/esm/managers/StorageManager.js.map +1 -0
  234. package/dist/esm/migrations/migrate-0.7.0.d.ts +20 -0
  235. package/dist/esm/migrations/migrate-0.7.0.js +31 -0
  236. package/dist/esm/migrations/migrate-0.7.0.js.map +1 -0
  237. package/dist/esm/migrations/migrations.d.ts +2 -0
  238. package/dist/esm/migrations/migrations.js +31 -0
  239. package/dist/esm/migrations/migrations.js.map +1 -0
  240. package/dist/esm/storage/ChromeStorage.d.ts +19 -0
  241. package/dist/esm/storage/ChromeStorage.js +53 -0
  242. package/dist/esm/storage/ChromeStorage.js.map +1 -0
  243. package/dist/esm/storage/IndexedDBStorage.d.ts +65 -0
  244. package/dist/esm/storage/IndexedDBStorage.js +212 -0
  245. package/dist/esm/storage/IndexedDBStorage.js.map +1 -0
  246. package/dist/esm/storage/LocalStorage.d.ts +21 -0
  247. package/dist/esm/storage/LocalStorage.js +70 -0
  248. package/dist/esm/storage/LocalStorage.js.map +1 -0
  249. package/dist/esm/storage/StorageValidator.d.ts +12 -0
  250. package/dist/esm/storage/StorageValidator.js +96 -0
  251. package/dist/esm/storage/StorageValidator.js.map +1 -0
  252. package/dist/esm/storage/WCStorage.d.ts +15 -0
  253. package/dist/esm/storage/WCStorage.js +64 -0
  254. package/dist/esm/storage/WCStorage.js.map +1 -0
  255. package/dist/esm/storage/getStorage.d.ts +5 -0
  256. package/dist/esm/storage/getStorage.js +21 -0
  257. package/dist/esm/storage/getStorage.js.map +1 -0
  258. package/dist/esm/transports/Transport.d.ts +85 -0
  259. package/dist/esm/transports/Transport.js +149 -0
  260. package/dist/esm/transports/Transport.js.map +1 -0
  261. package/dist/esm/transports/clients/ClientEvents.d.ts +6 -0
  262. package/dist/esm/transports/clients/ClientEvents.js +2 -0
  263. package/dist/esm/transports/clients/ClientEvents.js.map +1 -0
  264. package/dist/esm/transports/clients/CommunicationClient.d.ts +47 -0
  265. package/dist/esm/transports/clients/CommunicationClient.js +63 -0
  266. package/dist/esm/transports/clients/CommunicationClient.js.map +1 -0
  267. package/dist/esm/transports/clients/MessageBasedClient.d.ts +56 -0
  268. package/dist/esm/transports/clients/MessageBasedClient.js +83 -0
  269. package/dist/esm/transports/clients/MessageBasedClient.js.map +1 -0
  270. package/dist/esm/utils/Logger.d.ts +33 -0
  271. package/dist/esm/utils/Logger.js +92 -0
  272. package/dist/esm/utils/Logger.js.map +1 -0
  273. package/dist/esm/utils/assert-never.d.ts +6 -0
  274. package/dist/esm/utils/assert-never.js +11 -0
  275. package/dist/esm/utils/assert-never.js.map +1 -0
  276. package/dist/esm/utils/get-account-identifier.d.ts +10 -0
  277. package/dist/esm/utils/get-account-identifier.js +23 -0
  278. package/dist/esm/utils/get-account-identifier.js.map +1 -0
  279. package/dist/esm/utils/get-sender-id.d.ts +8 -0
  280. package/dist/esm/utils/get-sender-id.js +18 -0
  281. package/dist/esm/utils/get-sender-id.js.map +1 -0
  282. package/dist/esm/utils/multi-tab-channel.d.ts +17 -0
  283. package/dist/esm/utils/multi-tab-channel.js +66 -0
  284. package/dist/esm/utils/multi-tab-channel.js.map +1 -0
  285. package/package.json +46 -0
@@ -0,0 +1,70 @@
1
+ import { Storage, defaultValues } from '@tezos-x/octez.connect-types';
2
+ /**
3
+ * @internalapi
4
+ *
5
+ * A storage that can be used in the browser
6
+ */
7
+ export class LocalStorage extends Storage {
8
+ prefix;
9
+ constructor(prefix) {
10
+ super();
11
+ this.prefix = prefix;
12
+ }
13
+ static async isSupported() {
14
+ return Promise.resolve(Boolean(typeof window !== 'undefined') && Boolean(window.localStorage));
15
+ }
16
+ async get(key) {
17
+ const value = localStorage.getItem(this.getPrefixedKey(key));
18
+ if (!value) {
19
+ if (typeof defaultValues[key] === 'object') {
20
+ return JSON.parse(JSON.stringify(defaultValues[key]));
21
+ }
22
+ else {
23
+ return defaultValues[key];
24
+ }
25
+ }
26
+ else {
27
+ try {
28
+ return JSON.parse(value);
29
+ }
30
+ catch (jsonParseError) {
31
+ return value; // TODO: Validate storage
32
+ }
33
+ }
34
+ }
35
+ async set(key, value) {
36
+ if (typeof value === 'string') {
37
+ return localStorage.setItem(this.getPrefixedKey(key), value);
38
+ }
39
+ else {
40
+ return localStorage.setItem(this.getPrefixedKey(key), JSON.stringify(value));
41
+ }
42
+ }
43
+ async delete(key) {
44
+ return Promise.resolve(localStorage.removeItem(this.getPrefixedKey(key)));
45
+ }
46
+ async subscribeToStorageChanged(callback) {
47
+ window.addEventListener('storage', (event) => {
48
+ if (!event.key) {
49
+ callback({
50
+ eventType: 'storageCleared',
51
+ key: null,
52
+ oldValue: null,
53
+ newValue: null
54
+ });
55
+ }
56
+ else {
57
+ callback({
58
+ eventType: 'entryModified',
59
+ key: this.getPrefixedKey(event.key),
60
+ oldValue: event.oldValue,
61
+ newValue: event.newValue
62
+ });
63
+ }
64
+ }, false);
65
+ }
66
+ getPrefixedKey(key) {
67
+ return this.prefix ? `${this.prefix}-${key}` : key;
68
+ }
69
+ }
70
+ //# sourceMappingURL=LocalStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalStorage.js","sourceRoot":"","sources":["../../../src/storage/LocalStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAoC,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAEvG;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,OAAO;IACV;IAA7B,YAA6B,MAAe;QAC1C,KAAK,EAAE,CAAA;QADoB,WAAM,GAAN,MAAM,CAAS;IAE5C,CAAC;IACM,MAAM,CAAC,KAAK,CAAC,WAAW;QAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,MAAM,KAAK,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IAChG,CAAC;IAEM,KAAK,CAAC,GAAG,CAAuB,GAAM;QAC3C,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC3C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACvD,CAAC;iBAAM,CAAC;gBACN,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC1B,CAAC;YAAC,OAAO,cAAc,EAAE,CAAC;gBACxB,OAAO,KAAgC,CAAA,CAAC,yBAAyB;YACnE,CAAC;QACH,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,GAAG,CAAuB,GAAM,EAAE,KAA8B;QAC3E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAA;QAC9D,CAAC;aAAM,CAAC;YACN,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC9E,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,MAAM,CAAuB,GAAM;QAC9C,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAC3E,CAAC;IAEM,KAAK,CAAC,yBAAyB,CACpC,QAKQ;QAER,MAAM,CAAC,gBAAgB,CACrB,SAAS,EACT,CAAC,KAAK,EAAE,EAAE;YACR,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBACf,QAAQ,CAAC;oBACP,SAAS,EAAE,gBAAgB;oBAC3B,GAAG,EAAE,IAAI;oBACT,QAAQ,EAAE,IAAI;oBACd,QAAQ,EAAE,IAAI;iBACf,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC;oBACP,SAAS,EAAE,eAAe;oBAC1B,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;oBACnC,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,EACD,KAAK,CACN,CAAA;IACH,CAAC;IAEM,cAAc,CAAC,GAAW;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;IACpD,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { Storage } from '@tezos-x/octez.connect-types';
2
+ export declare class StorageValidator {
3
+ private readonly storage;
4
+ constructor(storage: Storage);
5
+ private validateNumber;
6
+ private validateText;
7
+ private validateBoolean;
8
+ private validateArray;
9
+ private objHasProperty;
10
+ private innerValidate;
11
+ validate(): Promise<boolean>;
12
+ }
@@ -0,0 +1,96 @@
1
+ import { StorageKey } from '@tezos-x/octez.connect-types';
2
+ export class StorageValidator {
3
+ storage;
4
+ constructor(storage) {
5
+ this.storage = storage;
6
+ }
7
+ validateNumber(param) {
8
+ return typeof param === 'number' && !isNaN(param);
9
+ }
10
+ validateText(param) {
11
+ return typeof param === 'string';
12
+ }
13
+ validateBoolean(param) {
14
+ return typeof param === 'boolean';
15
+ }
16
+ validateArray(param) {
17
+ return Array.isArray(param);
18
+ }
19
+ objHasProperty(obj, path) {
20
+ if (!obj)
21
+ return false; // Return false if the object is null or undefined
22
+ const properties = path.split('.'); // Split the path into individual properties
23
+ let current = obj;
24
+ for (const property of properties) {
25
+ // If the property doesn't exist, return false
26
+ if (!current.hasOwnProperty(property)) {
27
+ return false;
28
+ }
29
+ // Move to the next level in the path
30
+ current = current[property];
31
+ }
32
+ return true;
33
+ }
34
+ innerValidate(value, type, prop) {
35
+ if (!value) {
36
+ return true;
37
+ }
38
+ switch (type) {
39
+ case 'num':
40
+ return this.validateNumber(value);
41
+ case 'str':
42
+ return this.validateText(value);
43
+ case 'bol':
44
+ return this.validateBoolean(value);
45
+ case 'obj':
46
+ return this.objHasProperty(value, prop);
47
+ case 'arr':
48
+ return this.validateArray(value);
49
+ default:
50
+ return false;
51
+ }
52
+ }
53
+ async validate() {
54
+ if (!this.innerValidate(await this.storage.get(StorageKey.BEACON_SDK_VERSION), 'str')) {
55
+ return false;
56
+ }
57
+ if (!this.innerValidate(await this.storage.get(StorageKey.MATRIX_SELECTED_NODE), 'str')) {
58
+ return false;
59
+ }
60
+ if (!this.innerValidate(await this.storage.get(StorageKey.MULTI_NODE_SETUP_DONE), 'bol')) {
61
+ return false;
62
+ }
63
+ if (!this.innerValidate(await this.storage.get(StorageKey.TRANSPORT_P2P_PEERS_DAPP), 'arr')) {
64
+ return false;
65
+ }
66
+ if (!this.innerValidate(await this.storage.get(StorageKey.TRANSPORT_P2P_PEERS_WALLET), 'arr')) {
67
+ return false;
68
+ }
69
+ if (!this.innerValidate(await this.storage.get(StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP), 'arr')) {
70
+ return false;
71
+ }
72
+ if (!this.innerValidate(await this.storage.get(StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET), 'arr')) {
73
+ return false;
74
+ }
75
+ if (!this.innerValidate(await this.storage.get(StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP), 'arr')) {
76
+ return false;
77
+ }
78
+ if (!this.innerValidate(await this.storage.get(StorageKey.ACCOUNTS), 'arr')) {
79
+ return false;
80
+ }
81
+ if (!this.innerValidate(await this.storage.get(StorageKey.APP_METADATA_LIST), 'arr')) {
82
+ return false;
83
+ }
84
+ if (!this.innerValidate(await this.storage.get(StorageKey.PERMISSION_LIST), 'arr')) {
85
+ return false;
86
+ }
87
+ if (!this.innerValidate(await this.storage.get(StorageKey.ACTIVE_ACCOUNT), 'str')) {
88
+ return false;
89
+ }
90
+ if (!this.innerValidate(await this.storage.get(StorageKey.LAST_SELECTED_WALLET), 'obj', 'key')) {
91
+ return false;
92
+ }
93
+ return true;
94
+ }
95
+ }
96
+ //# sourceMappingURL=StorageValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StorageValidator.js","sourceRoot":"","sources":["../../../src/storage/StorageValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export declare class WCStorage {
2
+ private readonly localStorage;
3
+ private readonly indexedDB;
4
+ private channel;
5
+ onMessageHandler: ((type: string) => void) | undefined;
6
+ onErrorHandler: ((data: any) => void) | undefined;
7
+ constructor();
8
+ private onMessage;
9
+ private onError;
10
+ notify(type: string): void;
11
+ hasPairings(): Promise<boolean>;
12
+ hasSessions(): Promise<boolean>;
13
+ backup(): void;
14
+ resetState(): Promise<void>;
15
+ }
@@ -0,0 +1,64 @@
1
+ import { StorageKey } from '@tezos-x/octez.connect-types';
2
+ import { LocalStorage } from './LocalStorage';
3
+ import { IndexedDBStorage } from './IndexedDBStorage';
4
+ export class WCStorage {
5
+ localStorage = new LocalStorage();
6
+ indexedDB = new IndexedDBStorage();
7
+ channel = new BroadcastChannel('WALLET_CONNECT_V2_INDEXED_DB');
8
+ onMessageHandler;
9
+ onErrorHandler;
10
+ constructor() {
11
+ this.channel.onmessage = this.onMessage.bind(this);
12
+ this.channel.onmessageerror = this.onError.bind(this);
13
+ }
14
+ onMessage(message) {
15
+ this.onMessageHandler && this.onMessageHandler(message.data.type);
16
+ }
17
+ onError({ data }) {
18
+ this.onErrorHandler && this.onErrorHandler(data);
19
+ }
20
+ notify(type) {
21
+ this.channel?.postMessage({ type });
22
+ }
23
+ async hasPairings() {
24
+ const pairings = (await this.indexedDB.get(StorageKey.WC_2_CORE_PAIRING)) ?? '[]';
25
+ if (pairings.length) {
26
+ return true;
27
+ }
28
+ if (await LocalStorage.isSupported()) {
29
+ return ((await this.localStorage.get(StorageKey.WC_2_CORE_PAIRING)) ?? '[]') !== '[]';
30
+ }
31
+ return false;
32
+ }
33
+ async hasSessions() {
34
+ const sessions = (await this.indexedDB.get(StorageKey.WC_2_CLIENT_SESSION)) ?? '[]';
35
+ if (sessions.length) {
36
+ return true;
37
+ }
38
+ if (await LocalStorage.isSupported()) {
39
+ return ((await this.localStorage.get(StorageKey.WC_2_CLIENT_SESSION)) ?? '[]') !== '[]';
40
+ }
41
+ return false;
42
+ }
43
+ backup() {
44
+ this.indexedDB
45
+ .fillStore('beacon', 'bug_report', [StorageKey.WC_2_CORE_KEYCHAIN])
46
+ .catch((error) => console.error(error.message));
47
+ }
48
+ async resetState() {
49
+ await this.indexedDB.clearStore();
50
+ if (await LocalStorage.isSupported()) {
51
+ await Promise.all([
52
+ this.localStorage.delete(StorageKey.WC_2_CLIENT_SESSION),
53
+ this.localStorage.delete(StorageKey.WC_2_CORE_PAIRING),
54
+ this.localStorage.delete(StorageKey.WC_2_CORE_KEYCHAIN),
55
+ this.localStorage.delete(StorageKey.WC_2_CORE_MESSAGES),
56
+ this.localStorage.delete(StorageKey.WC_2_CLIENT_PROPOSAL),
57
+ this.localStorage.delete(StorageKey.WC_2_CORE_SUBSCRIPTION),
58
+ this.localStorage.delete(StorageKey.WC_2_CORE_HISTORY),
59
+ this.localStorage.delete(StorageKey.WC_2_CORE_EXPIRER)
60
+ ]);
61
+ }
62
+ }
63
+ }
64
+ //# sourceMappingURL=WCStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WCStorage.js","sourceRoot":"","sources":["../../../src/storage/WCStorage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Storage } from '@tezos-x/octez.connect-types';
2
+ /**
3
+ * Get a supported storage on this platform
4
+ */
5
+ export declare const getStorage: () => Promise<Storage>;
@@ -0,0 +1,21 @@
1
+ import { Logger } from '../utils/Logger';
2
+ import { ChromeStorage } from './ChromeStorage';
3
+ import { LocalStorage } from './LocalStorage';
4
+ const logger = new Logger('STORAGE');
5
+ /**
6
+ * Get a supported storage on this platform
7
+ */
8
+ export const getStorage = async () => {
9
+ if (await ChromeStorage.isSupported()) {
10
+ logger.log('getStorage', 'USING CHROME STORAGE');
11
+ return new ChromeStorage();
12
+ }
13
+ else if (await LocalStorage.isSupported()) {
14
+ logger.log('getStorage', 'USING LOCAL STORAGE');
15
+ return new LocalStorage();
16
+ }
17
+ else {
18
+ throw new Error('no storage type supported');
19
+ }
20
+ };
21
+ //# sourceMappingURL=getStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStorage.js","sourceRoot":"","sources":["../../../src/storage/getStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAA;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAA2B,KAAK,IAAsB,EAAE;IAC7E,IAAI,MAAM,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAA;QAEhD,OAAO,IAAI,aAAa,EAAE,CAAA;IAC5B,CAAC;SAAM,IAAI,MAAM,YAAY,CAAC,WAAW,EAAE,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAA;QAE/C,OAAO,IAAI,YAAY,EAAE,CAAA;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;IAC9C,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,85 @@
1
+ import { TransportType, TransportStatus, PeerInfo, StorageKey, ConnectionContext } from '@tezos-x/octez.connect-types';
2
+ import { PeerManager } from '../managers/PeerManager';
3
+ import { CommunicationClient } from './clients/CommunicationClient';
4
+ import { ClientEvents } from './clients/ClientEvents';
5
+ /**
6
+ * @internalapi
7
+ *
8
+ *
9
+ */
10
+ export declare abstract class Transport<T extends PeerInfo = PeerInfo, K extends StorageKey.TRANSPORT_P2P_PEERS_DAPP | StorageKey.TRANSPORT_P2P_PEERS_WALLET | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET | StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP = any, S extends CommunicationClient = any> {
11
+ /**
12
+ * The type of the transport
13
+ */
14
+ readonly type: TransportType;
15
+ /**
16
+ * The name of the app
17
+ */
18
+ protected readonly name: string;
19
+ /**
20
+ * The status of the transport
21
+ */
22
+ protected _isConnected: TransportStatus;
23
+ protected readonly peerManager: PeerManager<K>;
24
+ /**
25
+ * The client handling the encryption/decryption of messages
26
+ */
27
+ protected client: S;
28
+ /**
29
+ * The listener that will be invoked when a new peer is connected
30
+ */
31
+ protected newPeerListener?: (peer: T) => void;
32
+ setEventHandler(event: ClientEvents, fun: Function): void;
33
+ /**
34
+ * The listeners that will be notified when new messages are coming in
35
+ */
36
+ private listeners;
37
+ /**
38
+ * Return the status of the connection
39
+ */
40
+ get connectionStatus(): TransportStatus;
41
+ constructor(name: string, client: S, peerManager: PeerManager<K>);
42
+ /**
43
+ * Returns a promise that resolves to true if the transport is available, false if it is not
44
+ */
45
+ static isAvailable(): Promise<boolean>;
46
+ /**
47
+ * Connect the transport
48
+ */
49
+ connect(): Promise<void>;
50
+ /**
51
+ * Disconnect the transport
52
+ */
53
+ disconnect(): Promise<void>;
54
+ /**
55
+ * Send a message through the transport
56
+ *
57
+ * @param message The message to send
58
+ * @param recipient The recipient of the message
59
+ */
60
+ send(message: string, peer?: PeerInfo): Promise<void>;
61
+ /**
62
+ * Add a listener to be called when a new message is received
63
+ *
64
+ * @param listener The listener that will be registered
65
+ */
66
+ addListener(listener: (message: unknown, connectionInfo: ConnectionContext) => void): Promise<void>;
67
+ /**
68
+ * Remove a listener
69
+ *
70
+ * @param listener
71
+ */
72
+ removeListener(listener: (message: string, connectionInfo: ConnectionContext) => void): Promise<void>;
73
+ getPeers(): Promise<T[]>;
74
+ addPeer(newPeer: T, _sendPairingResponse?: boolean): Promise<void>;
75
+ removePeer(peerToBeRemoved: T): Promise<void>;
76
+ removeAllPeers(): Promise<void>;
77
+ /**
78
+ * Notify the listeners when a new message comes in
79
+ *
80
+ * @param message Message
81
+ * @param connectionInfo Context info about the connection
82
+ */
83
+ protected notifyListeners(message: unknown, connectionInfo: ConnectionContext): Promise<void>;
84
+ abstract listen(publicKey: string): Promise<void>;
85
+ }
@@ -0,0 +1,149 @@
1
+ import { Logger } from '../utils/Logger';
2
+ import { TransportType, TransportStatus } from '@tezos-x/octez.connect-types';
3
+ const logger = new Logger('Transport');
4
+ /**
5
+ * @internalapi
6
+ *
7
+ *
8
+ */
9
+ export class Transport {
10
+ /**
11
+ * The type of the transport
12
+ */
13
+ type = TransportType.POST_MESSAGE;
14
+ /**
15
+ * The name of the app
16
+ */
17
+ name;
18
+ /**
19
+ * The status of the transport
20
+ */
21
+ _isConnected = TransportStatus.NOT_CONNECTED;
22
+ peerManager;
23
+ /**
24
+ * The client handling the encryption/decryption of messages
25
+ */
26
+ client;
27
+ /**
28
+ * The listener that will be invoked when a new peer is connected
29
+ */
30
+ newPeerListener;
31
+ setEventHandler(event, fun) {
32
+ this.client.eventHandlers.set(event, fun);
33
+ }
34
+ /**
35
+ * The listeners that will be notified when new messages are coming in
36
+ */
37
+ listeners = [];
38
+ /**
39
+ * Return the status of the connection
40
+ */
41
+ get connectionStatus() {
42
+ return this._isConnected;
43
+ }
44
+ constructor(name, client, peerManager) {
45
+ this.name = name;
46
+ this.client = client;
47
+ this.peerManager = peerManager;
48
+ }
49
+ /**
50
+ * Returns a promise that resolves to true if the transport is available, false if it is not
51
+ */
52
+ static async isAvailable() {
53
+ return Promise.resolve(false);
54
+ }
55
+ /**
56
+ * Connect the transport
57
+ */
58
+ async connect() {
59
+ logger.log('connect');
60
+ this._isConnected = TransportStatus.CONNECTED;
61
+ return;
62
+ }
63
+ /**
64
+ * Disconnect the transport
65
+ */
66
+ async disconnect() {
67
+ logger.log('disconnect');
68
+ this._isConnected = TransportStatus.NOT_CONNECTED;
69
+ return;
70
+ }
71
+ /**
72
+ * Send a message through the transport
73
+ *
74
+ * @param message The message to send
75
+ * @param recipient The recipient of the message
76
+ */
77
+ async send(message, peer) {
78
+ if (peer) {
79
+ return this.client.sendMessage(message, peer);
80
+ }
81
+ else {
82
+ const knownPeers = await this.getPeers();
83
+ // A broadcast request has to be sent everywhere.
84
+ const promises = knownPeers.map((peerEl) => this.client.sendMessage(message, peerEl));
85
+ return (await Promise.all(promises))[0];
86
+ }
87
+ }
88
+ /**
89
+ * Add a listener to be called when a new message is received
90
+ *
91
+ * @param listener The listener that will be registered
92
+ */
93
+ async addListener(listener) {
94
+ logger.debug('addListener');
95
+ this.listeners.push(listener);
96
+ return;
97
+ }
98
+ /**
99
+ * Remove a listener
100
+ *
101
+ * @param listener
102
+ */
103
+ async removeListener(listener) {
104
+ logger.log('removeListener');
105
+ this.listeners = this.listeners.filter((element) => element !== listener);
106
+ return;
107
+ }
108
+ async getPeers() {
109
+ return this.peerManager.getPeers(); // TODO: Fix type
110
+ }
111
+ async addPeer(newPeer, _sendPairingResponse = true) {
112
+ logger.log('addPeer', 'adding peer', newPeer);
113
+ await this.peerManager.addPeer(newPeer); // TODO: Fix type
114
+ await this.listen(newPeer.publicKey);
115
+ }
116
+ async removePeer(peerToBeRemoved) {
117
+ logger.log('removePeer', 'removing peer', peerToBeRemoved);
118
+ await this.peerManager.removePeer(peerToBeRemoved.publicKey);
119
+ if (this.client) {
120
+ await this.client.unsubscribeFromEncryptedMessage(peerToBeRemoved.publicKey);
121
+ }
122
+ }
123
+ async removeAllPeers() {
124
+ logger.log('removeAllPeers');
125
+ await this.peerManager.removeAllPeers();
126
+ if (this.client) {
127
+ await this.client.unsubscribeFromEncryptedMessages();
128
+ }
129
+ }
130
+ /**
131
+ * Notify the listeners when a new message comes in
132
+ *
133
+ * @param message Message
134
+ * @param connectionInfo Context info about the connection
135
+ */
136
+ async notifyListeners(message, connectionInfo) {
137
+ if (this.listeners.length === 0) {
138
+ logger.warn('notifyListeners', '0 listeners notified!', this);
139
+ }
140
+ else {
141
+ logger.log('notifyListeners', `Notifying ${this.listeners.length} listeners`, this);
142
+ }
143
+ this.listeners.forEach((listener) => {
144
+ listener(message, connectionInfo);
145
+ });
146
+ return;
147
+ }
148
+ }
149
+ //# sourceMappingURL=Transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transport.js","sourceRoot":"","sources":["../../../src/transports/Transport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const enum ClientEvents {
2
+ CLOSE_ALERT = "CLOSE_ALERT",
3
+ RESET_STATE = "RESET_STATE",
4
+ WC_ACK_NOTIFICATION = "WC_ACK_NOTIFICATION",
5
+ ON_RELAYER_ERROR = "ON_RELAYER_ERROR"
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ClientEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientEvents.js","sourceRoot":"","sources":["../../../../src/transports/clients/ClientEvents.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { PeerInfoType } from '@tezos-x/octez.connect-types';
2
+ import { KeyPair } from '@stablelib/ed25519';
3
+ import { SessionKeys } from '@stablelib/x25519-session';
4
+ import { ClientEvents } from './ClientEvents';
5
+ /**
6
+ * @internalapi
7
+ *
8
+ *
9
+ */
10
+ export declare abstract class CommunicationClient {
11
+ protected keyPair?: KeyPair | undefined;
12
+ constructor(keyPair?: KeyPair | undefined);
13
+ eventHandlers: Map<ClientEvents, Function>;
14
+ protected isMobileOS: () => boolean;
15
+ /**
16
+ * Get the public key
17
+ */
18
+ getPublicKey(): Promise<string>;
19
+ /**
20
+ * get the public key hash
21
+ */
22
+ getPublicKeyHash(): Promise<string>;
23
+ /**
24
+ * Create a cryptobox server
25
+ *
26
+ * @param otherPublicKey
27
+ * @param selfKeypair
28
+ */
29
+ protected createCryptoBoxServer(otherPublicKey: string, selfKeypair: KeyPair): Promise<SessionKeys>;
30
+ /**
31
+ * Create a cryptobox client
32
+ *
33
+ * @param otherPublicKey
34
+ * @param selfKeypair
35
+ */
36
+ protected createCryptoBoxClient(otherPublicKey: string, selfKeypair: KeyPair): Promise<SessionKeys>;
37
+ /**
38
+ * Encrypt a message for a specific publicKey (receiver, asymmetric)
39
+ *
40
+ * @param recipientPublicKey
41
+ * @param message
42
+ */
43
+ protected encryptMessageAsymmetric(recipientPublicKey: string, message: string): Promise<string>;
44
+ abstract unsubscribeFromEncryptedMessages(): Promise<void>;
45
+ abstract unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise<void>;
46
+ abstract sendMessage(message: string, peer?: PeerInfoType): Promise<void>;
47
+ }