@metamask/connect-multichain 0.1.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 (241) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE +20 -0
  3. package/README.md +15 -0
  4. package/dist/browser/es/connect-multichain.d.mts +585 -0
  5. package/dist/browser/es/connect-multichain.mjs +2609 -0
  6. package/dist/browser/es/connect-multichain.mjs.map +1 -0
  7. package/dist/browser/es/metafile-esm.json +1 -0
  8. package/dist/browser/iife/connect-multichain.d.ts +585 -0
  9. package/dist/browser/iife/connect-multichain.js +30057 -0
  10. package/dist/browser/iife/connect-multichain.js.map +1 -0
  11. package/dist/browser/iife/metafile-iife.json +1 -0
  12. package/dist/browser/umd/connect-multichain.d.ts +585 -0
  13. package/dist/browser/umd/connect-multichain.js +2622 -0
  14. package/dist/browser/umd/connect-multichain.js.map +1 -0
  15. package/dist/browser/umd/metafile-cjs.json +1 -0
  16. package/dist/node/cjs/connect-multichain.d.ts +585 -0
  17. package/dist/node/cjs/connect-multichain.js +2603 -0
  18. package/dist/node/cjs/connect-multichain.js.map +1 -0
  19. package/dist/node/cjs/metafile-cjs.json +1 -0
  20. package/dist/node/es/connect-multichain.d.mts +585 -0
  21. package/dist/node/es/connect-multichain.mjs +2564 -0
  22. package/dist/node/es/connect-multichain.mjs.map +1 -0
  23. package/dist/node/es/metafile-esm.json +1 -0
  24. package/dist/react-native/es/connect-multichain.d.mts +585 -0
  25. package/dist/react-native/es/connect-multichain.mjs +2517 -0
  26. package/dist/react-native/es/connect-multichain.mjs.map +1 -0
  27. package/dist/react-native/es/metafile-esm.json +1 -0
  28. package/dist/src/config/index.d.ts +4 -0
  29. package/dist/src/config/index.d.ts.map +1 -0
  30. package/dist/src/config/index.js +4 -0
  31. package/dist/src/config/index.js.map +1 -0
  32. package/dist/src/domain/errors/base.d.ts +7 -0
  33. package/dist/src/domain/errors/base.d.ts.map +1 -0
  34. package/dist/src/domain/errors/base.js +8 -0
  35. package/dist/src/domain/errors/base.js.map +1 -0
  36. package/dist/src/domain/errors/index.d.ts +3 -0
  37. package/dist/src/domain/errors/index.d.ts.map +1 -0
  38. package/dist/src/domain/errors/index.js +2 -0
  39. package/dist/src/domain/errors/index.js.map +1 -0
  40. package/dist/src/domain/errors/rpc.d.ts +25 -0
  41. package/dist/src/domain/errors/rpc.d.ts.map +1 -0
  42. package/dist/src/domain/errors/rpc.js +33 -0
  43. package/dist/src/domain/errors/rpc.js.map +1 -0
  44. package/dist/src/domain/errors/storage.d.ts +24 -0
  45. package/dist/src/domain/errors/storage.d.ts.map +1 -0
  46. package/dist/src/domain/errors/storage.js +30 -0
  47. package/dist/src/domain/errors/storage.js.map +1 -0
  48. package/dist/src/domain/errors/types.d.ts +7 -0
  49. package/dist/src/domain/errors/types.d.ts.map +1 -0
  50. package/dist/src/domain/errors/types.js +2 -0
  51. package/dist/src/domain/errors/types.js.map +1 -0
  52. package/dist/src/domain/events/index.d.ts +39 -0
  53. package/dist/src/domain/events/index.d.ts.map +1 -0
  54. package/dist/src/domain/events/index.js +58 -0
  55. package/dist/src/domain/events/index.js.map +1 -0
  56. package/dist/src/domain/events/types/index.d.ts +8 -0
  57. package/dist/src/domain/events/types/index.d.ts.map +1 -0
  58. package/dist/src/domain/events/types/index.js +2 -0
  59. package/dist/src/domain/events/types/index.js.map +1 -0
  60. package/dist/src/domain/index.d.ts +9 -0
  61. package/dist/src/domain/index.d.ts.map +1 -0
  62. package/dist/src/domain/index.js +9 -0
  63. package/dist/src/domain/index.js.map +1 -0
  64. package/dist/src/domain/logger/index.d.ts +41 -0
  65. package/dist/src/domain/logger/index.d.ts.map +1 -0
  66. package/dist/src/domain/logger/index.js +79 -0
  67. package/dist/src/domain/logger/index.js.map +1 -0
  68. package/dist/src/domain/multichain/api/constants.d.ts +5 -0
  69. package/dist/src/domain/multichain/api/constants.d.ts.map +1 -0
  70. package/dist/src/domain/multichain/api/constants.js +101 -0
  71. package/dist/src/domain/multichain/api/constants.js.map +1 -0
  72. package/dist/src/domain/multichain/api/eip155.d.ts +58 -0
  73. package/dist/src/domain/multichain/api/eip155.d.ts.map +1 -0
  74. package/dist/src/domain/multichain/api/eip155.js +2 -0
  75. package/dist/src/domain/multichain/api/eip155.js.map +1 -0
  76. package/dist/src/domain/multichain/api/infura.d.ts +3 -0
  77. package/dist/src/domain/multichain/api/infura.d.ts.map +1 -0
  78. package/dist/src/domain/multichain/api/infura.js +10 -0
  79. package/dist/src/domain/multichain/api/infura.js.map +1 -0
  80. package/dist/src/domain/multichain/api/types.d.ts +89 -0
  81. package/dist/src/domain/multichain/api/types.d.ts.map +1 -0
  82. package/dist/src/domain/multichain/api/types.js +2 -0
  83. package/dist/src/domain/multichain/api/types.js.map +1 -0
  84. package/dist/src/domain/multichain/index.d.ts +51 -0
  85. package/dist/src/domain/multichain/index.d.ts.map +1 -0
  86. package/dist/src/domain/multichain/index.js +33 -0
  87. package/dist/src/domain/multichain/index.js.map +1 -0
  88. package/dist/src/domain/multichain/types.d.ts +102 -0
  89. package/dist/src/domain/multichain/types.d.ts.map +1 -0
  90. package/dist/src/domain/multichain/types.js +2 -0
  91. package/dist/src/domain/multichain/types.js.map +1 -0
  92. package/dist/src/domain/platform/index.d.ts +17 -0
  93. package/dist/src/domain/platform/index.d.ts.map +1 -0
  94. package/dist/src/domain/platform/index.js +122 -0
  95. package/dist/src/domain/platform/index.js.map +1 -0
  96. package/dist/src/domain/store/adapter.d.ts +10 -0
  97. package/dist/src/domain/store/adapter.d.ts.map +1 -0
  98. package/dist/src/domain/store/adapter.js +6 -0
  99. package/dist/src/domain/store/adapter.js.map +1 -0
  100. package/dist/src/domain/store/client.d.ts +16 -0
  101. package/dist/src/domain/store/client.d.ts.map +1 -0
  102. package/dist/src/domain/store/client.js +3 -0
  103. package/dist/src/domain/store/client.js.map +1 -0
  104. package/dist/src/domain/store/index.d.ts +3 -0
  105. package/dist/src/domain/store/index.d.ts.map +1 -0
  106. package/dist/src/domain/store/index.js +3 -0
  107. package/dist/src/domain/store/index.js.map +1 -0
  108. package/dist/src/domain/ui/factory.d.ts +26 -0
  109. package/dist/src/domain/ui/factory.d.ts.map +1 -0
  110. package/dist/src/domain/ui/factory.js +2 -0
  111. package/dist/src/domain/ui/factory.js.map +1 -0
  112. package/dist/src/domain/ui/index.d.ts +3 -0
  113. package/dist/src/domain/ui/index.d.ts.map +1 -0
  114. package/dist/src/domain/ui/index.js +2 -0
  115. package/dist/src/domain/ui/index.js.map +1 -0
  116. package/dist/src/domain/ui/types.d.ts +34 -0
  117. package/dist/src/domain/ui/types.d.ts.map +1 -0
  118. package/dist/src/domain/ui/types.js +38 -0
  119. package/dist/src/domain/ui/types.js.map +1 -0
  120. package/dist/src/domain/utils/index.d.ts +7 -0
  121. package/dist/src/domain/utils/index.d.ts.map +1 -0
  122. package/dist/src/domain/utils/index.js +9 -0
  123. package/dist/src/domain/utils/index.js.map +1 -0
  124. package/dist/src/index.browser.d.ts +4 -0
  125. package/dist/src/index.browser.d.ts.map +1 -0
  126. package/dist/src/index.browser.js +28 -0
  127. package/dist/src/index.browser.js.map +1 -0
  128. package/dist/src/index.native.d.ts +4 -0
  129. package/dist/src/index.native.d.ts.map +1 -0
  130. package/dist/src/index.native.js +28 -0
  131. package/dist/src/index.native.js.map +1 -0
  132. package/dist/src/index.node.d.ts +4 -0
  133. package/dist/src/index.node.d.ts.map +1 -0
  134. package/dist/src/index.node.js +28 -0
  135. package/dist/src/index.node.js.map +1 -0
  136. package/dist/src/multichain/index.d.ts +41 -0
  137. package/dist/src/multichain/index.d.ts.map +1 -0
  138. package/dist/src/multichain/index.js +499 -0
  139. package/dist/src/multichain/index.js.map +1 -0
  140. package/dist/src/multichain/rpc/handlers/rpcClient.d.ts +19 -0
  141. package/dist/src/multichain/rpc/handlers/rpcClient.d.ts.map +1 -0
  142. package/dist/src/multichain/rpc/handlers/rpcClient.js +105 -0
  143. package/dist/src/multichain/rpc/handlers/rpcClient.js.map +1 -0
  144. package/dist/src/multichain/rpc/requestRouter.d.ts +29 -0
  145. package/dist/src/multichain/rpc/requestRouter.d.ts.map +1 -0
  146. package/dist/src/multichain/rpc/requestRouter.js +104 -0
  147. package/dist/src/multichain/rpc/requestRouter.js.map +1 -0
  148. package/dist/src/multichain/transports/default/index.d.ts +17 -0
  149. package/dist/src/multichain/transports/default/index.d.ts.map +1 -0
  150. package/dist/src/multichain/transports/default/index.js +101 -0
  151. package/dist/src/multichain/transports/default/index.js.map +1 -0
  152. package/dist/src/multichain/transports/mwp/KeyManager.d.ts +9 -0
  153. package/dist/src/multichain/transports/mwp/KeyManager.d.ts.map +1 -0
  154. package/dist/src/multichain/transports/mwp/KeyManager.js +35 -0
  155. package/dist/src/multichain/transports/mwp/KeyManager.js.map +1 -0
  156. package/dist/src/multichain/transports/mwp/index.d.ts +65 -0
  157. package/dist/src/multichain/transports/mwp/index.d.ts.map +1 -0
  158. package/dist/src/multichain/transports/mwp/index.js +323 -0
  159. package/dist/src/multichain/transports/mwp/index.js.map +1 -0
  160. package/dist/src/multichain/utils/index.d.ts +41 -0
  161. package/dist/src/multichain/utils/index.d.ts.map +1 -0
  162. package/dist/src/multichain/utils/index.js +239 -0
  163. package/dist/src/multichain/utils/index.js.map +1 -0
  164. package/dist/src/store/adapters/node.d.ts +9 -0
  165. package/dist/src/store/adapters/node.d.ts.map +1 -0
  166. package/dist/src/store/adapters/node.js +34 -0
  167. package/dist/src/store/adapters/node.js.map +1 -0
  168. package/dist/src/store/adapters/rn.d.ts +8 -0
  169. package/dist/src/store/adapters/rn.d.ts.map +1 -0
  170. package/dist/src/store/adapters/rn.js +33 -0
  171. package/dist/src/store/adapters/rn.js.map +1 -0
  172. package/dist/src/store/adapters/web.d.ts +16 -0
  173. package/dist/src/store/adapters/web.d.ts.map +1 -0
  174. package/dist/src/store/adapters/web.js +99 -0
  175. package/dist/src/store/adapters/web.js.map +1 -0
  176. package/dist/src/store/index.d.ts +17 -0
  177. package/dist/src/store/index.d.ts.map +1 -0
  178. package/dist/src/store/index.js +130 -0
  179. package/dist/src/store/index.js.map +1 -0
  180. package/dist/src/ui/index.d.ts +45 -0
  181. package/dist/src/ui/index.d.ts.map +1 -0
  182. package/dist/src/ui/index.js +185 -0
  183. package/dist/src/ui/index.js.map +1 -0
  184. package/dist/src/ui/modals/base/AbstractInstallModal.d.ts +16 -0
  185. package/dist/src/ui/modals/base/AbstractInstallModal.d.ts.map +1 -0
  186. package/dist/src/ui/modals/base/AbstractInstallModal.js +90 -0
  187. package/dist/src/ui/modals/base/AbstractInstallModal.js.map +1 -0
  188. package/dist/src/ui/modals/base/AbstractOTPModal.d.ts +8 -0
  189. package/dist/src/ui/modals/base/AbstractOTPModal.d.ts.map +1 -0
  190. package/dist/src/ui/modals/base/AbstractOTPModal.js +16 -0
  191. package/dist/src/ui/modals/base/AbstractOTPModal.js.map +1 -0
  192. package/dist/src/ui/modals/base/utils.d.ts +3 -0
  193. package/dist/src/ui/modals/base/utils.d.ts.map +1 -0
  194. package/dist/src/ui/modals/base/utils.js +30 -0
  195. package/dist/src/ui/modals/base/utils.js.map +1 -0
  196. package/dist/src/ui/modals/node/index.d.ts +3 -0
  197. package/dist/src/ui/modals/node/index.d.ts.map +1 -0
  198. package/dist/src/ui/modals/node/index.js +3 -0
  199. package/dist/src/ui/modals/node/index.js.map +1 -0
  200. package/dist/src/ui/modals/node/install.d.ts +9 -0
  201. package/dist/src/ui/modals/node/install.d.ts.map +1 -0
  202. package/dist/src/ui/modals/node/install.js +47 -0
  203. package/dist/src/ui/modals/node/install.js.map +1 -0
  204. package/dist/src/ui/modals/node/otp.d.ts +10 -0
  205. package/dist/src/ui/modals/node/otp.d.ts.map +1 -0
  206. package/dist/src/ui/modals/node/otp.js +10 -0
  207. package/dist/src/ui/modals/node/otp.js.map +1 -0
  208. package/dist/src/ui/modals/rn/index.d.ts +3 -0
  209. package/dist/src/ui/modals/rn/index.d.ts.map +1 -0
  210. package/dist/src/ui/modals/rn/index.js +3 -0
  211. package/dist/src/ui/modals/rn/index.js.map +1 -0
  212. package/dist/src/ui/modals/rn/install.d.ts +7 -0
  213. package/dist/src/ui/modals/rn/install.d.ts.map +1 -0
  214. package/dist/src/ui/modals/rn/install.js +9 -0
  215. package/dist/src/ui/modals/rn/install.js.map +1 -0
  216. package/dist/src/ui/modals/rn/otp.d.ts +10 -0
  217. package/dist/src/ui/modals/rn/otp.d.ts.map +1 -0
  218. package/dist/src/ui/modals/rn/otp.js +10 -0
  219. package/dist/src/ui/modals/rn/otp.js.map +1 -0
  220. package/dist/src/ui/modals/types.d.ts +13 -0
  221. package/dist/src/ui/modals/types.d.ts.map +1 -0
  222. package/dist/src/ui/modals/types.js +2 -0
  223. package/dist/src/ui/modals/types.js.map +1 -0
  224. package/dist/src/ui/modals/web/index.d.ts +3 -0
  225. package/dist/src/ui/modals/web/index.d.ts.map +1 -0
  226. package/dist/src/ui/modals/web/index.js +3 -0
  227. package/dist/src/ui/modals/web/index.js.map +1 -0
  228. package/dist/src/ui/modals/web/install.d.ts +7 -0
  229. package/dist/src/ui/modals/web/install.d.ts.map +1 -0
  230. package/dist/src/ui/modals/web/install.js +32 -0
  231. package/dist/src/ui/modals/web/install.js.map +1 -0
  232. package/dist/src/ui/modals/web/otp.d.ts +10 -0
  233. package/dist/src/ui/modals/web/otp.d.ts.map +1 -0
  234. package/dist/src/ui/modals/web/otp.js +10 -0
  235. package/dist/src/ui/modals/web/otp.js.map +1 -0
  236. package/dist/src/ui/qr.d.ts +3 -0
  237. package/dist/src/ui/qr.d.ts.map +1 -0
  238. package/dist/src/ui/qr.js +32 -0
  239. package/dist/src/ui/qr.js.map +1 -0
  240. package/dist/types/connect-multichain.d.ts +585 -0
  241. package/package.json +111 -0
@@ -0,0 +1,323 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { SessionStore } from '@metamask/mobile-wallet-protocol-core';
11
+ import { TransportTimeoutError, } from '@metamask/multichain-api-client';
12
+ import { createLogger, } from '../../../domain';
13
+ import { addValidAccounts, getOptionalScopes, getValidAccounts, isSameScopesAndAccounts, } from '../../utils';
14
+ const DEFAULT_REQUEST_TIMEOUT = 60 * 1000;
15
+ const CONNECTION_GRACE_PERIOD = 60 * 1000;
16
+ const DEFAULT_CONNECTION_TIMEOUT = DEFAULT_REQUEST_TIMEOUT + CONNECTION_GRACE_PERIOD;
17
+ const SESSION_STORE_KEY = 'cache_wallet_getSession';
18
+ const CACHED_METHOD_LIST = [
19
+ 'wallet_getSession',
20
+ 'wallet_createSession',
21
+ 'wallet_sessionChanged',
22
+ ];
23
+ const CACHED_RESET_METHOD_LIST = ['wallet_revokeSession'];
24
+ const logger = createLogger('metamask-sdk:transport');
25
+ /**
26
+ * Mobile Wallet Protocol transport implementation
27
+ * Bridges the MWP DappClient with the multichain API client Transport interface
28
+ */
29
+ export class MWPTransport {
30
+ get pendingRequests() {
31
+ return this.__pendingRequests;
32
+ }
33
+ set pendingRequests(pendingRequests) {
34
+ this.__pendingRequests = pendingRequests;
35
+ }
36
+ get sessionRequest() {
37
+ return this.currentSessionRequest;
38
+ }
39
+ constructor(dappClient, kvstore, options = {
40
+ requestTimeout: DEFAULT_REQUEST_TIMEOUT,
41
+ connectionTimeout: DEFAULT_CONNECTION_TIMEOUT,
42
+ }) {
43
+ this.dappClient = dappClient;
44
+ this.kvstore = kvstore;
45
+ this.options = options;
46
+ this.__reqId = 0;
47
+ this.__pendingRequests = new Map();
48
+ this.notificationCallbacks = new Set();
49
+ this.dappClient.on('message', this.handleMessage.bind(this));
50
+ if (typeof window !== 'undefined' &&
51
+ typeof window.addEventListener !== 'undefined') {
52
+ this.windowFocusHandler = this.onWindowFocus.bind(this);
53
+ window.addEventListener('focus', this.windowFocusHandler);
54
+ }
55
+ }
56
+ onWindowFocus() {
57
+ if (!this.isConnected()) {
58
+ this.dappClient.reconnect();
59
+ }
60
+ }
61
+ notifyCallbacks(data) {
62
+ this.notificationCallbacks.forEach((callback) => callback(data));
63
+ }
64
+ rejectRequest(id, error = new Error('Request rejected')) {
65
+ const request = this.pendingRequests.get(id);
66
+ if (request) {
67
+ this.pendingRequests.delete(id);
68
+ clearTimeout(request.timeout);
69
+ request.reject(error);
70
+ }
71
+ }
72
+ handleMessage(message) {
73
+ if (typeof message === 'object' && message !== null) {
74
+ if ('data' in message) {
75
+ const messagePayload = message.data;
76
+ if ('id' in messagePayload && typeof messagePayload.id === 'string') {
77
+ const request = this.pendingRequests.get(messagePayload.id);
78
+ if (request) {
79
+ const requestWithName = Object.assign(Object.assign({}, messagePayload), { method: request.method === 'wallet_getSession' ||
80
+ request.method === 'wallet_createSession'
81
+ ? 'wallet_sessionChanged'
82
+ : request.method });
83
+ const notification = Object.assign(Object.assign({}, messagePayload), { method: request.method === 'wallet_getSession' ||
84
+ request.method === 'wallet_createSession'
85
+ ? 'wallet_sessionChanged'
86
+ : request.method, params: requestWithName.result });
87
+ clearTimeout(request.timeout);
88
+ this.notifyCallbacks(notification);
89
+ request.resolve(requestWithName);
90
+ this.pendingRequests.delete(messagePayload.id);
91
+ }
92
+ }
93
+ else {
94
+ this.notifyCallbacks(message.data);
95
+ }
96
+ }
97
+ }
98
+ }
99
+ onResumeSuccess(resumeResolve, resumeReject, options) {
100
+ return __awaiter(this, void 0, void 0, function* () {
101
+ var _a, _b, _c, _d, _e, _f, _g;
102
+ try {
103
+ const sessionRequest = yield this.request({
104
+ method: 'wallet_getSession',
105
+ });
106
+ if (sessionRequest.error) {
107
+ return resumeReject(new Error(sessionRequest.error.message));
108
+ }
109
+ let walletSession = sessionRequest.result;
110
+ if (walletSession && options) {
111
+ const currentScopes = Object.keys((_a = walletSession === null || walletSession === void 0 ? void 0 : walletSession.sessionScopes) !== null && _a !== void 0 ? _a : {});
112
+ const proposedScopes = (_b = options === null || options === void 0 ? void 0 : options.scopes) !== null && _b !== void 0 ? _b : [];
113
+ const proposedCaipAccountIds = (_c = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _c !== void 0 ? _c : [];
114
+ const hasSameScopesAndAccounts = isSameScopesAndAccounts(currentScopes, proposedScopes, walletSession, proposedCaipAccountIds);
115
+ if (!hasSameScopesAndAccounts) {
116
+ const optionalScopes = addValidAccounts(getOptionalScopes((_d = options === null || options === void 0 ? void 0 : options.scopes) !== null && _d !== void 0 ? _d : []), getValidAccounts((_e = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _e !== void 0 ? _e : []));
117
+ const sessionRequest = {
118
+ optionalScopes,
119
+ };
120
+ const response = yield this.request({
121
+ method: 'wallet_createSession',
122
+ params: sessionRequest,
123
+ });
124
+ if (response.error) {
125
+ return resumeReject(new Error(response.error.message));
126
+ }
127
+ // TODO: Maybe find a better way to revoke sessions on wallet without triggering an empty notification
128
+ // Issue of this is it will send a session update event with an empty session and right after we may get the session recovered
129
+ // await this.request({ method: 'wallet_revokeSession', params: walletSession });
130
+ walletSession = response.result;
131
+ }
132
+ }
133
+ else if (!walletSession) {
134
+ const optionalScopes = addValidAccounts(getOptionalScopes((_f = options === null || options === void 0 ? void 0 : options.scopes) !== null && _f !== void 0 ? _f : []), getValidAccounts((_g = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _g !== void 0 ? _g : []));
135
+ const sessionRequest = { optionalScopes };
136
+ const response = yield this.request({
137
+ method: 'wallet_createSession',
138
+ params: sessionRequest,
139
+ });
140
+ if (response.error) {
141
+ return resumeReject(new Error(response.error.message));
142
+ }
143
+ walletSession = response.result;
144
+ }
145
+ this.notifyCallbacks({
146
+ method: 'wallet_sessionChanged',
147
+ params: walletSession,
148
+ });
149
+ return resumeResolve();
150
+ }
151
+ catch (err) {
152
+ return resumeReject(err);
153
+ }
154
+ });
155
+ }
156
+ connect(options) {
157
+ return __awaiter(this, void 0, void 0, function* () {
158
+ const { dappClient, kvstore } = this;
159
+ const sessionStore = new SessionStore(kvstore);
160
+ let session;
161
+ try {
162
+ const [activeSession] = yield sessionStore.list();
163
+ if (activeSession) {
164
+ logger('active session found', activeSession);
165
+ session = activeSession;
166
+ }
167
+ }
168
+ catch (_a) {
169
+ /* empty */
170
+ }
171
+ let timeout;
172
+ const connectionPromise = new Promise((resolve, reject) => {
173
+ let connection;
174
+ if (session) {
175
+ connection = new Promise((resumeResolve, resumeReject) => {
176
+ var _a;
177
+ if (this.dappClient.state === 'CONNECTED') {
178
+ this.onResumeSuccess(resumeResolve, resumeReject, options);
179
+ }
180
+ else {
181
+ this.dappClient.once('connected', () => __awaiter(this, void 0, void 0, function* () {
182
+ this.onResumeSuccess(resumeResolve, resumeReject, options);
183
+ }));
184
+ dappClient.resume((_a = session === null || session === void 0 ? void 0 : session.id) !== null && _a !== void 0 ? _a : '');
185
+ }
186
+ });
187
+ }
188
+ else {
189
+ connection = new Promise((resolveConnection, rejectConnection) => {
190
+ var _a, _b;
191
+ const optionalScopes = addValidAccounts(getOptionalScopes((_a = options === null || options === void 0 ? void 0 : options.scopes) !== null && _a !== void 0 ? _a : []), getValidAccounts((_b = options === null || options === void 0 ? void 0 : options.caipAccountIds) !== null && _b !== void 0 ? _b : []));
192
+ const sessionRequest = {
193
+ optionalScopes,
194
+ };
195
+ const request = {
196
+ jsonrpc: '2.0',
197
+ id: `${this.__reqId++}`,
198
+ method: 'wallet_createSession',
199
+ params: sessionRequest,
200
+ };
201
+ this.dappClient.on('message', (message) => __awaiter(this, void 0, void 0, function* () {
202
+ if (typeof message === 'object' && message !== null) {
203
+ if ('data' in message) {
204
+ const messagePayload = message.data;
205
+ if (messagePayload.method === 'wallet_createSession' ||
206
+ messagePayload.method === 'wallet_sessionChanged') {
207
+ if (messagePayload.error) {
208
+ return rejectConnection(messagePayload.error);
209
+ }
210
+ this.notifyCallbacks(message.data);
211
+ yield this.storeWalletSession(request, messagePayload);
212
+ return resolveConnection();
213
+ }
214
+ }
215
+ }
216
+ }));
217
+ dappClient
218
+ .connect({ mode: 'trusted', initialPayload: request })
219
+ .catch(rejectConnection);
220
+ });
221
+ }
222
+ timeout = setTimeout(() => {
223
+ reject(new TransportTimeoutError());
224
+ }, this.options.connectionTimeout);
225
+ connection.then(resolve).catch(reject);
226
+ });
227
+ return connectionPromise.finally(() => {
228
+ if (timeout) {
229
+ clearTimeout(timeout);
230
+ }
231
+ });
232
+ });
233
+ }
234
+ /**
235
+ * Disconnects from the Mobile Wallet Protocol
236
+ *
237
+ * @returns Nothing
238
+ */
239
+ disconnect() {
240
+ return __awaiter(this, void 0, void 0, function* () {
241
+ // Clean up window focus event listener
242
+ if (typeof window !== 'undefined' &&
243
+ typeof window.removeEventListener !== 'undefined' &&
244
+ this.windowFocusHandler) {
245
+ window.removeEventListener('focus', this.windowFocusHandler);
246
+ this.windowFocusHandler = undefined;
247
+ }
248
+ return this.dappClient.disconnect();
249
+ });
250
+ }
251
+ /**
252
+ * Checks if the transport is connected
253
+ *
254
+ * @returns True if transport is connected, false otherwise
255
+ */
256
+ isConnected() {
257
+ // biome-ignore lint/suspicious/noExplicitAny: required if state is not made public in dappClient
258
+ return this.dappClient.state === 'CONNECTED';
259
+ }
260
+ fetchCachedWalletSession(request) {
261
+ return __awaiter(this, void 0, void 0, function* () {
262
+ var _a;
263
+ if (request.method === 'wallet_getSession') {
264
+ const walletGetSession = yield this.kvstore.get(SESSION_STORE_KEY);
265
+ if (walletGetSession) {
266
+ const walletSession = JSON.parse(walletGetSession);
267
+ return {
268
+ id: request.id,
269
+ jsonrpc: '2.0',
270
+ result: (_a = walletSession.params) !== null && _a !== void 0 ? _a : walletSession.result,
271
+ method: request.method,
272
+ };
273
+ }
274
+ }
275
+ });
276
+ }
277
+ storeWalletSession(request, response) {
278
+ return __awaiter(this, void 0, void 0, function* () {
279
+ if (CACHED_METHOD_LIST.includes(request.method)) {
280
+ yield this.kvstore.set(SESSION_STORE_KEY, JSON.stringify(response));
281
+ }
282
+ else if (CACHED_RESET_METHOD_LIST.includes(request.method)) {
283
+ yield this.kvstore.delete(SESSION_STORE_KEY);
284
+ }
285
+ });
286
+ }
287
+ request(payload, options) {
288
+ return __awaiter(this, void 0, void 0, function* () {
289
+ const request = Object.assign({ jsonrpc: '2.0', id: `${this.__reqId++}` }, payload);
290
+ const cachedWalletSession = yield this.fetchCachedWalletSession(request);
291
+ if (cachedWalletSession) {
292
+ this.notifyCallbacks(cachedWalletSession);
293
+ return cachedWalletSession;
294
+ }
295
+ return new Promise((resolve, reject) => {
296
+ var _a;
297
+ const timeout = setTimeout(() => {
298
+ this.rejectRequest(request.id, new TransportTimeoutError());
299
+ }, (_a = options === null || options === void 0 ? void 0 : options.timeout) !== null && _a !== void 0 ? _a : this.options.requestTimeout);
300
+ this.pendingRequests.set(request.id, {
301
+ request,
302
+ method: request.method,
303
+ resolve: (response) => __awaiter(this, void 0, void 0, function* () {
304
+ if (CACHED_METHOD_LIST.includes(request.method)) {
305
+ yield this.storeWalletSession(request, response);
306
+ }
307
+ return resolve(response);
308
+ }),
309
+ reject,
310
+ timeout,
311
+ });
312
+ this.dappClient.sendRequest(request).catch(reject);
313
+ });
314
+ });
315
+ }
316
+ onNotification(callback) {
317
+ this.notificationCallbacks.add(callback);
318
+ return () => {
319
+ this.notificationCallbacks.delete(callback);
320
+ };
321
+ }
322
+ }
323
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/multichain/transports/mwp/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type CaipAccountId, type CaipChainId } from '@metamask/utils';
2
+ import { type DappSettings, type MultichainOptions, type Scope, type SessionData } from '../../domain';
3
+ export type OptionalScopes = Record<Scope, SessionData['sessionScopes'][Scope]>;
4
+ /**
5
+ * Compress a string using pako (deflateRaw)
6
+ * Returns a base64-encoded compressed string
7
+ */
8
+ export declare function compressString(str: string): string;
9
+ export declare function getDappId(dapp?: DappSettings): string;
10
+ export declare function openDeeplink(options: MultichainOptions, deeplink: string, universalLink: string): void;
11
+ export declare function getOptionalScopes(scopes: Scope[]): OptionalScopes;
12
+ export declare const extractFavicon: () => string | undefined;
13
+ export declare function setupInfuraProvider(options: MultichainOptions): MultichainOptions;
14
+ export declare function setupDappMetadata(options: MultichainOptions): MultichainOptions;
15
+ /**
16
+ * Enhanced scope checking function that validates both scopes and accounts
17
+ * @param currentScopes - Current scopes from the existing session
18
+ * @param proposedScopes - Proposed scopes from the connect options
19
+ * @param walletSession - The existing wallet session data
20
+ * @param proposedCaipAccountIds - Proposed account IDs from the connect options
21
+ * @returns true if scopes and accounts match, false otherwise
22
+ */
23
+ export declare function isSameScopesAndAccounts(currentScopes: Scope[], proposedScopes: Scope[], walletSession: SessionData, proposedCaipAccountIds: CaipAccountId[]): boolean;
24
+ export declare function getValidAccounts(caipAccountIds: CaipAccountId[]): {
25
+ address: import("@metamask/utils").CaipAccountAddress;
26
+ chainId: CaipChainId;
27
+ chain: {
28
+ namespace: import("@metamask/utils").CaipNamespace;
29
+ reference: import("@metamask/utils").CaipReference;
30
+ };
31
+ }[];
32
+ /**
33
+ * Adds valid accounts to their corresponding scopes based on chain namespace and reference.
34
+ * Returns a new OptionalScopes object without modifying the input.
35
+ *
36
+ * @param optionalScopes - The scopes to add accounts to
37
+ * @param validAccounts - Array of parsed valid accounts
38
+ * @returns A new OptionalScopes object with accounts added to matching scopes
39
+ */
40
+ export declare function addValidAccounts(optionalScopes: OptionalScopes, validAccounts: ReturnType<typeof getValidAccounts>): OptionalScopes;
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/multichain/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,YAAY,EAGjB,KAAK,iBAAiB,EAEtB,KAAK,KAAK,EACV,KAAK,WAAW,EACjB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAiBhF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,YAAY,UAM5C;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,QA2BtB;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,kBAahD;AAED,eAAO,MAAM,cAAc,0BAiB1B,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,CAenB;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,GACzB,iBAAiB,CA8DnB;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,KAAK,EAAE,EACtB,cAAc,EAAE,KAAK,EAAE,EACvB,aAAa,EAAE,WAAW,EAC1B,sBAAsB,EAAE,aAAa,EAAE,GACtC,OAAO,CAoBT;AAED,wBAAgB,gBAAgB,CAAC,cAAc,EAAE,aAAa,EAAE;;;;;;;IAc/D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,cAAc,EAC9B,aAAa,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACjD,cAAc,CAqDhB"}
@@ -0,0 +1,239 @@
1
+ import { deflate } from 'pako';
2
+ import { parseCaipAccountId, parseCaipChainId, } from '@metamask/utils';
3
+ import { getInfuraRpcUrls, getPlatformType, PlatformType, } from '../../domain';
4
+ /**
5
+ * Cross-platform base64 encoding
6
+ * Works in browser, Node.js, and React Native environments
7
+ */
8
+ function base64Encode(str) {
9
+ if (typeof btoa !== 'undefined') {
10
+ // Browser and React Native with polyfills
11
+ return btoa(str);
12
+ }
13
+ else if (typeof Buffer !== 'undefined') {
14
+ // Node.js
15
+ return Buffer.from(str).toString('base64');
16
+ }
17
+ throw new Error('No base64 encoding method available');
18
+ }
19
+ /**
20
+ * Compress a string using pako (deflateRaw)
21
+ * Returns a base64-encoded compressed string
22
+ */
23
+ export function compressString(str) {
24
+ const compressed = deflate(str);
25
+ // Convert Uint8Array to string for base64 encoding
26
+ const binaryString = String.fromCharCode.apply(null, Array.from(compressed));
27
+ return base64Encode(binaryString);
28
+ }
29
+ export function getDappId(dapp) {
30
+ var _a, _b;
31
+ if (typeof window === 'undefined' || typeof window.location === 'undefined') {
32
+ return (_b = (_a = dapp === null || dapp === void 0 ? void 0 : dapp.name) !== null && _a !== void 0 ? _a : dapp === null || dapp === void 0 ? void 0 : dapp.url) !== null && _b !== void 0 ? _b : 'N/A';
33
+ }
34
+ return window.location.hostname;
35
+ }
36
+ export function openDeeplink(options, deeplink, universalLink) {
37
+ const { mobile } = options;
38
+ const useDeeplink = mobile && mobile.useDeeplink !== undefined ? mobile.useDeeplink : true;
39
+ if (useDeeplink) {
40
+ if (typeof window !== 'undefined') {
41
+ // We don't need to open a deeplink in a new tab
42
+ // It avoid the browser to display a blank page
43
+ window.location.href = deeplink;
44
+ }
45
+ }
46
+ else if (typeof document !== 'undefined') {
47
+ // Workaround for https://github.com/rainbow-me/rainbowkit/issues/524.
48
+ // Using 'window.open' causes issues on iOS in non-Safari browsers and
49
+ // WebViews where a blank tab is left behind after connecting.
50
+ // This is especially bad in some WebView scenarios (e.g. following a
51
+ // link from Twitter) where the user doesn't have any mechanism for
52
+ // closing the blank tab.
53
+ // For whatever reason, links with a target of "_blank" don't suffer
54
+ // from this problem, and programmatically clicking a detached link
55
+ // element with the same attributes also avoids the issue.
56
+ const link = document.createElement('a');
57
+ link.href = universalLink;
58
+ link.target = '_self';
59
+ link.rel = 'noreferrer noopener';
60
+ link.click();
61
+ }
62
+ }
63
+ export function getOptionalScopes(scopes) {
64
+ return scopes.reduce((prev, scope) => (Object.assign(Object.assign({}, prev), { [scope]: {
65
+ methods: [],
66
+ notifications: [],
67
+ accounts: [],
68
+ } })), {});
69
+ }
70
+ export const extractFavicon = () => {
71
+ var _a;
72
+ if (typeof document === 'undefined') {
73
+ return undefined;
74
+ }
75
+ let favicon;
76
+ const nodeList = document.getElementsByTagName('link');
77
+ // eslint-disable-next-line @typescript-eslint/prefer-for-of
78
+ for (let i = 0; i < nodeList.length; i++) {
79
+ if (nodeList[i].getAttribute('rel') === 'icon' ||
80
+ nodeList[i].getAttribute('rel') === 'shortcut icon') {
81
+ favicon = (_a = nodeList[i].getAttribute('href')) !== null && _a !== void 0 ? _a : undefined;
82
+ }
83
+ }
84
+ return favicon;
85
+ };
86
+ export function setupInfuraProvider(options) {
87
+ var _a, _b;
88
+ const infuraAPIKey = (_a = options.api) === null || _a === void 0 ? void 0 : _a.infuraAPIKey;
89
+ if (!infuraAPIKey) {
90
+ return options;
91
+ }
92
+ const urlsWithToken = getInfuraRpcUrls(infuraAPIKey);
93
+ if ((_b = options.api) === null || _b === void 0 ? void 0 : _b.readonlyRPCMap) {
94
+ options.api.readonlyRPCMap = Object.assign(Object.assign({}, options.api.readonlyRPCMap), urlsWithToken);
95
+ }
96
+ else if (options.api) {
97
+ options.api.readonlyRPCMap = urlsWithToken;
98
+ }
99
+ return options;
100
+ }
101
+ export function setupDappMetadata(options) {
102
+ var _a;
103
+ const platform = getPlatformType();
104
+ const isBrowser = platform === PlatformType.DesktopWeb ||
105
+ platform === PlatformType.MobileWeb ||
106
+ platform === PlatformType.MetaMaskMobileWebview;
107
+ if (!((_a = options.dapp) === null || _a === void 0 ? void 0 : _a.url)) {
108
+ // Automatically set dappMetadata on web env if not defined
109
+ if (isBrowser) {
110
+ options.dapp = Object.assign(Object.assign({}, options.dapp), { url: `${window.location.protocol}//${window.location.host}` });
111
+ }
112
+ else {
113
+ throw new Error('You must provide dapp url');
114
+ }
115
+ }
116
+ const BASE_64_ICON_MAX_LENGTH = 163400;
117
+ // Check if iconUrl and url are valid
118
+ const urlPattern = /^(http|https):\/\/[^\s]*$/; // Regular expression for URLs starting with http:// or https://
119
+ if (options.dapp) {
120
+ if ('iconUrl' in options.dapp) {
121
+ if (options.dapp.iconUrl && !urlPattern.test(options.dapp.iconUrl)) {
122
+ console.warn('Invalid dappMetadata.iconUrl: URL must start with http:// or https://');
123
+ options.dapp.iconUrl = undefined;
124
+ }
125
+ }
126
+ // This check ensures that the base64Icon string in the dappMetadata does not exceed 163,400 characters.
127
+ // The character limit is important because a longer base64-encoded string causes the connection to the mobile app to fail.
128
+ // Keeping the base64Icon string length below this threshold ensures reliable communication and functionality.
129
+ if ('base64Icon' in options.dapp) {
130
+ if (options.dapp.base64Icon &&
131
+ options.dapp.base64Icon.length > BASE_64_ICON_MAX_LENGTH) {
132
+ console.warn('Invalid dappMetadata.base64Icon: Base64-encoded icon string length must be less than 163400 characters');
133
+ options.dapp.base64Icon = undefined;
134
+ }
135
+ }
136
+ if (options.dapp.url && !urlPattern.test(options.dapp.url)) {
137
+ console.warn('Invalid dappMetadata.url: URL must start with http:// or https://');
138
+ }
139
+ const favicon = extractFavicon();
140
+ if (favicon &&
141
+ !('iconUrl' in options.dapp) &&
142
+ !('base64Icon' in options.dapp)) {
143
+ const faviconUrl = `${window.location.protocol}//${window.location.host}${favicon}`;
144
+ // @ts-ignore
145
+ options.dapp.iconUrl = faviconUrl;
146
+ }
147
+ }
148
+ return options;
149
+ }
150
+ /**
151
+ * Enhanced scope checking function that validates both scopes and accounts
152
+ * @param currentScopes - Current scopes from the existing session
153
+ * @param proposedScopes - Proposed scopes from the connect options
154
+ * @param walletSession - The existing wallet session data
155
+ * @param proposedCaipAccountIds - Proposed account IDs from the connect options
156
+ * @returns true if scopes and accounts match, false otherwise
157
+ */
158
+ export function isSameScopesAndAccounts(currentScopes, proposedScopes, walletSession, proposedCaipAccountIds) {
159
+ const isSameScopes = currentScopes.every((scope) => proposedScopes.includes(scope)) &&
160
+ proposedScopes.every((scope) => currentScopes.includes(scope));
161
+ if (!isSameScopes) {
162
+ return false;
163
+ }
164
+ const existingAccountIds = Object.values(walletSession.sessionScopes)
165
+ .filter(({ accounts }) => Boolean(accounts))
166
+ .flatMap(({ accounts }) => accounts !== null && accounts !== void 0 ? accounts : []);
167
+ const allProposedAccountsIncluded = proposedCaipAccountIds.every((proposedAccountId) => existingAccountIds.includes(proposedAccountId));
168
+ return allProposedAccountsIncluded;
169
+ }
170
+ export function getValidAccounts(caipAccountIds) {
171
+ return caipAccountIds.reduce((caipAccounts, caipAccountId) => {
172
+ try {
173
+ // biome-ignore lint/performance/noAccumulatingSpread: Needed
174
+ return [...caipAccounts, parseCaipAccountId(caipAccountId)];
175
+ }
176
+ catch (err) {
177
+ const stringifiedAccountId = JSON.stringify(caipAccountId);
178
+ console.error(`Invalid CAIP account ID: ${stringifiedAccountId}`, err);
179
+ return caipAccounts;
180
+ }
181
+ }, []);
182
+ }
183
+ /**
184
+ * Adds valid accounts to their corresponding scopes based on chain namespace and reference.
185
+ * Returns a new OptionalScopes object without modifying the input.
186
+ *
187
+ * @param optionalScopes - The scopes to add accounts to
188
+ * @param validAccounts - Array of parsed valid accounts
189
+ * @returns A new OptionalScopes object with accounts added to matching scopes
190
+ */
191
+ export function addValidAccounts(optionalScopes, validAccounts) {
192
+ var _a;
193
+ if (!optionalScopes || !(validAccounts === null || validAccounts === void 0 ? void 0 : validAccounts.length)) {
194
+ return optionalScopes;
195
+ }
196
+ const result = Object.fromEntries(Object.entries(optionalScopes).map(([scope, scopeData]) => {
197
+ var _a, _b, _c;
198
+ return [
199
+ scope,
200
+ {
201
+ methods: [...((_a = scopeData === null || scopeData === void 0 ? void 0 : scopeData.methods) !== null && _a !== void 0 ? _a : [])],
202
+ notifications: [...((_b = scopeData === null || scopeData === void 0 ? void 0 : scopeData.notifications) !== null && _b !== void 0 ? _b : [])],
203
+ accounts: [...((_c = scopeData === null || scopeData === void 0 ? void 0 : scopeData.accounts) !== null && _c !== void 0 ? _c : [])],
204
+ },
205
+ ];
206
+ }));
207
+ // Group accounts by their chain identifier for efficient lookup
208
+ const accountsByChain = new Map();
209
+ for (const account of validAccounts) {
210
+ const chainKey = `${account.chain.namespace}:${account.chain.reference}`;
211
+ const accountId = `${account.chainId}:${account.address}`;
212
+ if (!accountsByChain.has(chainKey)) {
213
+ accountsByChain.set(chainKey, []);
214
+ }
215
+ (_a = accountsByChain.get(chainKey)) === null || _a === void 0 ? void 0 : _a.push(accountId);
216
+ }
217
+ // Add accounts to matching scopes
218
+ for (const [scopeKey, scopeData] of Object.entries(result)) {
219
+ if (!(scopeData === null || scopeData === void 0 ? void 0 : scopeData.accounts)) {
220
+ continue;
221
+ }
222
+ try {
223
+ const scope = scopeKey;
224
+ const scopeDetails = parseCaipChainId(scope);
225
+ const chainKey = `${scopeDetails.namespace}:${scopeDetails.reference}`;
226
+ const matchingAccounts = accountsByChain.get(chainKey);
227
+ if (matchingAccounts) {
228
+ const existingAccounts = new Set(scopeData.accounts);
229
+ const newAccounts = matchingAccounts.filter((account) => !existingAccounts.has(account));
230
+ scopeData.accounts.push(...newAccounts);
231
+ }
232
+ }
233
+ catch (error) {
234
+ console.error(`Invalid scope format: ${scopeKey}`, error);
235
+ }
236
+ }
237
+ return result;
238
+ }
239
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/multichain/utils/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { StoreAdapter } from '../../domain';
2
+ export declare class StoreAdapterNode extends StoreAdapter {
3
+ readonly platform = "node";
4
+ private storage;
5
+ get(key: string): Promise<string | null>;
6
+ set(key: string, value: string): Promise<void>;
7
+ delete(key: string): Promise<void>;
8
+ }
9
+ //# sourceMappingURL=node.d.ts.map