@metamask/connect-evm 0.1.0 → 0.1.2

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.
@@ -0,0 +1,593 @@
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
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
11
+ if (kind === "m") throw new TypeError("Private method is not writable");
12
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
13
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
14
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
15
+ };
16
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
17
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
18
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
19
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
20
+ };
21
+ var _MetamaskConnectEVM_instances, _MetamaskConnectEVM_core, _MetamaskConnectEVM_provider, _MetamaskConnectEVM_sessionScopes, _MetamaskConnectEVM_eventHandlers, _MetamaskConnectEVM_sessionChangedHandler, _MetamaskConnectEVM_removeNotificationHandler, _MetamaskConnectEVM_getCoreOptions, _MetamaskConnectEVM_createInvokeOptions, _MetamaskConnectEVM_trackWalletActionRequested, _MetamaskConnectEVM_trackWalletActionSucceeded, _MetamaskConnectEVM_trackWalletActionFailed, _MetamaskConnectEVM_requestInterceptor, _MetamaskConnectEVM_clearConnectionState, _MetamaskConnectEVM_addEthereumChain, _MetamaskConnectEVM_request, _MetamaskConnectEVM_onChainChanged, _MetamaskConnectEVM_onAccountsChanged, _MetamaskConnectEVM_onConnect, _MetamaskConnectEVM_onDisconnect, _MetamaskConnectEVM_attemptSessionRecovery;
22
+ import { analytics } from '@metamask/analytics';
23
+ import { createMetamaskConnect, getWalletActionAnalyticsProperties, isRejectionError, TransportType, } from '@metamask/connect-multichain';
24
+ import { numberToHex, hexToNumber, isHexString as isHex, } from '@metamask/utils';
25
+ import { IGNORED_METHODS } from './constants';
26
+ import { enableDebug, logger } from './logger';
27
+ import { EIP1193Provider } from './provider';
28
+ import { getPermittedEthChainIds } from './utils/caip';
29
+ import { isAccountsRequest, isAddChainRequest, isConnectRequest, isSwitchChainRequest, validSupportedChainsUrls, } from './utils/type-guards';
30
+ const DEFAULT_CHAIN_ID = 1;
31
+ /**
32
+ * The MetamaskConnectEVM class provides an EIP-1193 compatible interface for connecting
33
+ * to MetaMask and interacting with Ethereum Virtual Machine (EVM) networks.
34
+ *
35
+ * This class serves as a modern replacement for MetaMask SDK V1, offering enhanced
36
+ * functionality and cross-platform compatibility. It wraps the Multichain SDK to provide
37
+ * a simplified, EIP-1193 compliant API for dapp developers.
38
+ *
39
+ * Key features:
40
+ * - EIP-1193 provider interface for seamless integration with existing dapp code
41
+ * - Automatic session recovery when reloading or opening in new tabs
42
+ * - Chain switching with automatic chain addition if not configured
43
+ * - Event-driven architecture with support for connect, disconnect, accountsChanged, and chainChanged events
44
+ * - Cross-platform support for browser extensions and mobile applications
45
+ * - Built-in handling of common Ethereum methods (eth_accounts, wallet_switchEthereumChain, etc.)
46
+ *
47
+ * @example
48
+ * ```typescript
49
+ * const sdk = await createMetamaskConnectEVM({
50
+ * dapp: { name: 'My DApp', url: 'https://mydapp.com' }
51
+ * });
52
+ *
53
+ * await sdk.connect({ chainId: 1 });
54
+ * const provider = await sdk.getProvider();
55
+ * const accounts = await provider.request({ method: 'eth_accounts' });
56
+ * ```
57
+ */
58
+ export class MetamaskConnectEVM {
59
+ /**
60
+ * Creates a new MetamaskConnectEVM instance.
61
+ *
62
+ * @param options - The options for the MetamaskConnectEVM instance
63
+ * @param options.core - The core instance of the Multichain SDK
64
+ * @param options.eventHandlers - Optional event handlers for EIP-1193 provider events
65
+ */
66
+ constructor({ core, eventHandlers }) {
67
+ _MetamaskConnectEVM_instances.add(this);
68
+ /** The core instance of the Multichain SDK */
69
+ _MetamaskConnectEVM_core.set(this, void 0);
70
+ /** An instance of the EIP-1193 provider interface */
71
+ _MetamaskConnectEVM_provider.set(this, void 0);
72
+ /** The session scopes currently permitted */
73
+ _MetamaskConnectEVM_sessionScopes.set(this, {});
74
+ /** Optional event handlers for the EIP-1193 provider events. */
75
+ _MetamaskConnectEVM_eventHandlers.set(this, void 0);
76
+ /** The handler for the wallet_sessionChanged event */
77
+ _MetamaskConnectEVM_sessionChangedHandler.set(this, void 0);
78
+ /** The clean-up function for the notification handler */
79
+ _MetamaskConnectEVM_removeNotificationHandler.set(this, void 0);
80
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_core, core, "f");
81
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_provider, new EIP1193Provider(core, __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_requestInterceptor).bind(this)), "f");
82
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_eventHandlers, eventHandlers, "f");
83
+ /**
84
+ * Handles the wallet_sessionChanged event.
85
+ * Updates the internal connection state with the new session data.
86
+ *
87
+ * @param session - The session data
88
+ */
89
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_sessionChangedHandler, (session) => {
90
+ var _a;
91
+ logger('event: wallet_sessionChanged', session);
92
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_sessionScopes, (_a = session === null || session === void 0 ? void 0 : session.sessionScopes) !== null && _a !== void 0 ? _a : {}, "f");
93
+ }, "f");
94
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").on('wallet_sessionChanged', __classPrivateFieldGet(this, _MetamaskConnectEVM_sessionChangedHandler, "f").bind(this));
95
+ // Attempt to set the permitted accounts if there's a valid previous session.
96
+ // TODO (wenfix): does it make sense to catch here?
97
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_attemptSessionRecovery).call(this).catch((error) => {
98
+ console.error('Error attempting session recovery', error);
99
+ });
100
+ logger('Connect/EVM constructor completed');
101
+ }
102
+ /**
103
+ * Connects to the wallet with the specified chain ID and optional account.
104
+ *
105
+ * @param options - The connection options
106
+ * @param options.account - Optional specific account to connect to
107
+ * @param options.forceRequest - Wwhether to force a request regardless of an existing session
108
+ * @param options.chainIds - Array of chain IDs to connect to
109
+ * @returns A promise that resolves with the connected accounts and chain ID
110
+ */
111
+ connect() {
112
+ return __awaiter(this, arguments, void 0, function* ({ account, forceRequest, chainIds } = {
113
+ chainIds: [DEFAULT_CHAIN_ID],
114
+ }) {
115
+ var _a, _b;
116
+ logger('request: connect', { account });
117
+ if (!chainIds || chainIds.length === 0) {
118
+ throw new Error('chainIds must be an array of at least one chain ID');
119
+ }
120
+ const caipChainIds = Array.from(new Set((_a = chainIds.concat(DEFAULT_CHAIN_ID)) !== null && _a !== void 0 ? _a : [DEFAULT_CHAIN_ID])).map((id) => `eip155:${id}`);
121
+ const caipAccountIds = account
122
+ ? caipChainIds.map((caipChainId) => `${caipChainId}:${account}`)
123
+ : [];
124
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").connect(caipChainIds, caipAccountIds, forceRequest);
125
+ const hexPermittedChainIds = getPermittedEthChainIds(__classPrivateFieldGet(this, _MetamaskConnectEVM_sessionScopes, "f"));
126
+ const initialChainId = hexPermittedChainIds[0];
127
+ const initialAccounts = yield __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").transport.sendEip1193Message({ method: 'eth_accounts', params: [] });
128
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onConnect).call(this, {
129
+ chainId: initialChainId,
130
+ accounts: initialAccounts.result,
131
+ });
132
+ // Remove previous notification handler if it exists
133
+ (_b = __classPrivateFieldGet(this, _MetamaskConnectEVM_removeNotificationHandler, "f")) === null || _b === void 0 ? void 0 : _b.call(this);
134
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_removeNotificationHandler, __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").transport.onNotification((notification) => {
135
+ var _a;
136
+ // @ts-expect-error TODO: address this
137
+ if ((notification === null || notification === void 0 ? void 0 : notification.method) === 'metamask_accountsChanged') {
138
+ // @ts-expect-error TODO: address this
139
+ const accounts = notification === null || notification === void 0 ? void 0 : notification.params;
140
+ logger('transport-event: accountsChanged', accounts);
141
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onAccountsChanged).call(this, accounts);
142
+ }
143
+ // @ts-expect-error TODO: address this
144
+ if ((notification === null || notification === void 0 ? void 0 : notification.method) === 'metamask_chainChanged') {
145
+ // @ts-expect-error TODO: address this
146
+ const notificationChainId = Number((_a = notification === null || notification === void 0 ? void 0 : notification.params) === null || _a === void 0 ? void 0 : _a.chainId);
147
+ logger('transport-event: chainChanged', notificationChainId);
148
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onChainChanged).call(this, notificationChainId);
149
+ }
150
+ }), "f");
151
+ logger('fulfilled-request: connect', {
152
+ chainId: chainIds[0],
153
+ accounts: __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").accounts,
154
+ });
155
+ // TODO: update required here since accounts and chainId are now promises
156
+ return {
157
+ accounts: __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").accounts,
158
+ chainId: hexToNumber(initialChainId),
159
+ };
160
+ });
161
+ }
162
+ /**
163
+ * Connects to the wallet and signs a message using personal_sign.
164
+ *
165
+ * @param options - The connection options
166
+ * @param options.message - The message to sign after connecting
167
+ * @param options.chainIds - Optional chain IDs to connect to (defaults to ethereum mainnet if not provided)
168
+ * @returns A promise that resolves with the signature
169
+ * @throws Error if the selected account is not available after timeout
170
+ */
171
+ connectAndSign(_a) {
172
+ return __awaiter(this, arguments, void 0, function* ({ message, chainIds, }) {
173
+ var _b, _c;
174
+ const { accounts, chainId } = yield this.connect({
175
+ chainIds: chainIds !== null && chainIds !== void 0 ? chainIds : [DEFAULT_CHAIN_ID],
176
+ });
177
+ const result = (yield __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").request({
178
+ method: 'personal_sign',
179
+ params: [accounts[0], message],
180
+ }));
181
+ (_c = (_b = __classPrivateFieldGet(this, _MetamaskConnectEVM_eventHandlers, "f")) === null || _b === void 0 ? void 0 : _b.connectAndSign) === null || _c === void 0 ? void 0 : _c.call(_b, {
182
+ accounts,
183
+ chainId,
184
+ signResponse: result,
185
+ });
186
+ return result;
187
+ });
188
+ }
189
+ /**
190
+ * Connects to the wallet and invokes a method with specified parameters.
191
+ *
192
+ * @param options - The options for connecting and invoking the method
193
+ * @param options.method - The method name to invoke
194
+ * @param options.params - The parameters to pass to the method, or a function that receives the account and returns params
195
+ * @param options.chainIds - Optional chain IDs to connect to (defaults to ethereum mainnet if not provided)
196
+ * @param options.account - Optional specific account to connect to
197
+ * @param options.forceRequest - Whether to force a request regardless of an existing session
198
+ * @returns A promise that resolves with the result of the method invocation
199
+ * @throws Error if the selected account is not available after timeout (for methods that require an account)
200
+ */
201
+ connectWith(_a) {
202
+ return __awaiter(this, arguments, void 0, function* ({ method, params, chainIds, account, forceRequest, }) {
203
+ var _b, _c;
204
+ const { accounts: connectedAccounts, chainId: connectedChainId } = yield this.connect({
205
+ chainIds: chainIds !== null && chainIds !== void 0 ? chainIds : [DEFAULT_CHAIN_ID],
206
+ account,
207
+ forceRequest,
208
+ });
209
+ const resolvedParams = typeof params === 'function' ? params(connectedAccounts[0]) : params;
210
+ const result = yield __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").request({
211
+ method,
212
+ params: resolvedParams,
213
+ });
214
+ (_c = (_b = __classPrivateFieldGet(this, _MetamaskConnectEVM_eventHandlers, "f")) === null || _b === void 0 ? void 0 : _b.connectWith) === null || _c === void 0 ? void 0 : _c.call(_b, {
215
+ accounts: connectedAccounts,
216
+ chainId: connectedChainId,
217
+ connectWithResponse: result,
218
+ });
219
+ return result;
220
+ });
221
+ }
222
+ /**
223
+ * Disconnects from the wallet by revoking the session and cleaning up event listeners.
224
+ *
225
+ * @returns A promise that resolves when disconnection is complete
226
+ */
227
+ disconnect() {
228
+ return __awaiter(this, void 0, void 0, function* () {
229
+ logger('request: disconnect');
230
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").disconnect();
231
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onDisconnect).call(this);
232
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_clearConnectionState).call(this);
233
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").off('wallet_sessionChanged', __classPrivateFieldGet(this, _MetamaskConnectEVM_sessionChangedHandler, "f"));
234
+ if (__classPrivateFieldGet(this, _MetamaskConnectEVM_removeNotificationHandler, "f")) {
235
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_removeNotificationHandler, "f").call(this);
236
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_removeNotificationHandler, undefined, "f");
237
+ }
238
+ logger('fulfilled-request: disconnect');
239
+ });
240
+ }
241
+ /**
242
+ * Switches the Ethereum chain. Will track state internally whenever possible.
243
+ *
244
+ * @param options - The options for the switch chain request
245
+ * @param options.chainId - The chain ID to switch to
246
+ * @param options.chainConfiguration - The chain configuration to use in case the chain is not present by the wallet
247
+ * @returns The result of the switch chain request
248
+ */
249
+ switchChain(_a) {
250
+ return __awaiter(this, arguments, void 0, function* ({ chainId, chainConfiguration, }) {
251
+ const method = 'wallet_switchEthereumChain';
252
+ const hexChainId = isHex(chainId) ? chainId : numberToHex(chainId);
253
+ const scope = `eip155:${isHex(chainId) ? hexToNumber(chainId) : chainId}`;
254
+ const params = [{ chainId: hexChainId }];
255
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionRequested).call(this, method, scope, params);
256
+ // TODO (wenfix): better way to return here other than resolving.
257
+ if (this.selectedChainId === hexChainId) {
258
+ return Promise.resolve();
259
+ }
260
+ const permittedChainIds = getPermittedEthChainIds(__classPrivateFieldGet(this, _MetamaskConnectEVM_sessionScopes, "f"));
261
+ if (permittedChainIds.includes(hexChainId) &&
262
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").transportType === TransportType.MWP) {
263
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onChainChanged).call(this, hexChainId);
264
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionSucceeded).call(this, method, scope, params);
265
+ return Promise.resolve();
266
+ }
267
+ try {
268
+ const result = yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_request).call(this, {
269
+ method: 'wallet_switchEthereumChain',
270
+ params,
271
+ });
272
+ // When using the MWP transport, the error is returned instead of thrown,
273
+ // so we force it into the catch block here.
274
+ const resultWithError = result;
275
+ if (resultWithError === null || resultWithError === void 0 ? void 0 : resultWithError.error) {
276
+ throw new Error(resultWithError.error.message);
277
+ }
278
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionSucceeded).call(this, method, scope, params);
279
+ if (result.result === null) {
280
+ // result is successful we eagerly call onChainChanged to update the provider's selected chain ID.
281
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onChainChanged).call(this, hexChainId);
282
+ }
283
+ return result;
284
+ }
285
+ catch (error) {
286
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionFailed).call(this, method, scope, params, error);
287
+ // Fallback to add the chain if its not configured in the wallet.
288
+ if (error.message.includes('Unrecognized chain ID')) {
289
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_addEthereumChain).call(this, chainConfiguration);
290
+ }
291
+ throw error;
292
+ }
293
+ });
294
+ }
295
+ /**
296
+ * Gets the EIP-1193 provider instance
297
+ *
298
+ * @returns The EIP-1193 provider instance
299
+ */
300
+ getProvider() {
301
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f");
302
+ }
303
+ /**
304
+ * Gets the currently selected chain ID on the wallet
305
+ *
306
+ * @returns The currently selected chain ID or undefined if no chain is selected
307
+ */
308
+ getChainId() {
309
+ return this.selectedChainId;
310
+ }
311
+ /**
312
+ * Gets the currently selected account on the wallet
313
+ *
314
+ * @returns The currently selected account or undefined if no account is selected
315
+ */
316
+ getAccount() {
317
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedAccount;
318
+ }
319
+ // Convenience getters for the EIP-1193 provider
320
+ /**
321
+ * Gets the currently permitted accounts
322
+ *
323
+ * @returns The currently permitted accounts
324
+ */
325
+ get accounts() {
326
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").accounts;
327
+ }
328
+ /**
329
+ * Gets the currently selected account on the wallet
330
+ *
331
+ * @returns The currently selected account or undefined if no account is selected
332
+ */
333
+ get selectedAccount() {
334
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedAccount;
335
+ }
336
+ /**
337
+ * Gets the currently selected chain ID on the wallet
338
+ *
339
+ * @returns The currently selected chain ID or undefined if no chain is selected
340
+ */
341
+ get selectedChainId() {
342
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedChainId;
343
+ }
344
+ }
345
+ _MetamaskConnectEVM_core = new WeakMap(), _MetamaskConnectEVM_provider = new WeakMap(), _MetamaskConnectEVM_sessionScopes = new WeakMap(), _MetamaskConnectEVM_eventHandlers = new WeakMap(), _MetamaskConnectEVM_sessionChangedHandler = new WeakMap(), _MetamaskConnectEVM_removeNotificationHandler = new WeakMap(), _MetamaskConnectEVM_instances = new WeakSet(), _MetamaskConnectEVM_getCoreOptions = function _MetamaskConnectEVM_getCoreOptions() {
346
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").options;
347
+ }, _MetamaskConnectEVM_createInvokeOptions = function _MetamaskConnectEVM_createInvokeOptions(method, scope, params) {
348
+ return {
349
+ scope,
350
+ request: { method, params },
351
+ };
352
+ }, _MetamaskConnectEVM_trackWalletActionRequested = function _MetamaskConnectEVM_trackWalletActionRequested(method, scope, params) {
353
+ return __awaiter(this, void 0, void 0, function* () {
354
+ const coreOptions = __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_getCoreOptions).call(this);
355
+ try {
356
+ const invokeOptions = __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_createInvokeOptions).call(this, method, scope, params);
357
+ const props = yield getWalletActionAnalyticsProperties(coreOptions, __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").storage, invokeOptions);
358
+ analytics.track('mmconnect_wallet_action_requested', props);
359
+ }
360
+ catch (error) {
361
+ logger('Error tracking mmconnect_wallet_action_requested event', error);
362
+ }
363
+ });
364
+ }, _MetamaskConnectEVM_trackWalletActionSucceeded = function _MetamaskConnectEVM_trackWalletActionSucceeded(method, scope, params) {
365
+ return __awaiter(this, void 0, void 0, function* () {
366
+ const coreOptions = __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_getCoreOptions).call(this);
367
+ try {
368
+ const invokeOptions = __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_createInvokeOptions).call(this, method, scope, params);
369
+ const props = yield getWalletActionAnalyticsProperties(coreOptions, __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").storage, invokeOptions);
370
+ analytics.track('mmconnect_wallet_action_succeeded', props);
371
+ }
372
+ catch (error) {
373
+ logger('Error tracking mmconnect_wallet_action_succeeded event', error);
374
+ }
375
+ });
376
+ }, _MetamaskConnectEVM_trackWalletActionFailed = function _MetamaskConnectEVM_trackWalletActionFailed(method, scope, params, error) {
377
+ return __awaiter(this, void 0, void 0, function* () {
378
+ const coreOptions = __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_getCoreOptions).call(this);
379
+ try {
380
+ const invokeOptions = __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_createInvokeOptions).call(this, method, scope, params);
381
+ const props = yield getWalletActionAnalyticsProperties(coreOptions, __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").storage, invokeOptions);
382
+ const isRejection = isRejectionError(error);
383
+ if (isRejection) {
384
+ analytics.track('mmconnect_wallet_action_rejected', props);
385
+ }
386
+ else {
387
+ analytics.track('mmconnect_wallet_action_failed', props);
388
+ }
389
+ }
390
+ catch (_a) {
391
+ logger('Error tracking wallet action rejected or failed event', error);
392
+ }
393
+ });
394
+ }, _MetamaskConnectEVM_requestInterceptor = function _MetamaskConnectEVM_requestInterceptor(request) {
395
+ return __awaiter(this, void 0, void 0, function* () {
396
+ logger(`Intercepting request for method: ${request.method}`);
397
+ if (IGNORED_METHODS.includes(request.method)) {
398
+ // TODO: replace with correct method unsupported provider error
399
+ return Promise.reject(new Error(`Method: ${request.method} is not supported by Metamask Connect/EVM`));
400
+ }
401
+ if (request.method === 'wallet_revokePermissions') {
402
+ return this.disconnect();
403
+ }
404
+ if (isConnectRequest(request)) {
405
+ // When calling wallet_requestPermissions, we need to force a new session request to prompt
406
+ // the user for accounts, because internally the Multichain SDK will check if
407
+ // the user is already connected and skip the request if so, unless we
408
+ // explicitly request a specific account. This is needed to workaround
409
+ // wallet_requestPermissions not requesting specific accounts.
410
+ const shouldForceConnectionRequest = request.method === 'wallet_requestPermissions';
411
+ const { method, params } = request;
412
+ const initiallySelectedChainId = DEFAULT_CHAIN_ID;
413
+ const scope = `eip155:${initiallySelectedChainId}`;
414
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionRequested).call(this, method, scope, params);
415
+ try {
416
+ const result = yield this.connect({
417
+ chainIds: [initiallySelectedChainId],
418
+ forceRequest: shouldForceConnectionRequest,
419
+ });
420
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionSucceeded).call(this, method, scope, params);
421
+ return result;
422
+ }
423
+ catch (error) {
424
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionFailed).call(this, method, scope, params, error);
425
+ throw error;
426
+ }
427
+ }
428
+ if (isSwitchChainRequest(request)) {
429
+ return this.switchChain({
430
+ chainId: parseInt(request.params[0].chainId, 16),
431
+ });
432
+ }
433
+ if (isAddChainRequest(request)) {
434
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_addEthereumChain).call(this, request.params[0]);
435
+ }
436
+ if (isAccountsRequest(request)) {
437
+ const { method } = request;
438
+ const chainId = __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedChainId
439
+ ? hexToNumber(__classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedChainId)
440
+ : 1;
441
+ const scope = `eip155:${chainId}`;
442
+ const params = [];
443
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionRequested).call(this, method, scope, params);
444
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionSucceeded).call(this, method, scope, params);
445
+ return __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").accounts;
446
+ }
447
+ logger('Request not intercepted, forwarding to default handler', request);
448
+ return Promise.resolve();
449
+ });
450
+ }, _MetamaskConnectEVM_clearConnectionState = function _MetamaskConnectEVM_clearConnectionState() {
451
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").accounts = [];
452
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedChainId = undefined;
453
+ }, _MetamaskConnectEVM_addEthereumChain = function _MetamaskConnectEVM_addEthereumChain(chainConfiguration) {
454
+ return __awaiter(this, void 0, void 0, function* () {
455
+ var _a;
456
+ logger('addEthereumChain called', { chainConfiguration });
457
+ const method = 'wallet_addEthereumChain';
458
+ if (!chainConfiguration) {
459
+ throw new Error('No chain configuration found.');
460
+ }
461
+ // Get chain ID from config or use current chain
462
+ const chainId = chainConfiguration.chainId
463
+ ? parseInt(chainConfiguration.chainId, 16)
464
+ : hexToNumber((_a = __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedChainId) !== null && _a !== void 0 ? _a : '0x1');
465
+ const scope = `eip155:${chainId}`;
466
+ const params = [chainConfiguration];
467
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionRequested).call(this, method, scope, params);
468
+ try {
469
+ const result = yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_request).call(this, {
470
+ method: 'wallet_addEthereumChain',
471
+ params,
472
+ });
473
+ if (result.result === null) {
474
+ // if result is successful we eagerly call onChainChanged to update the provider's selected chain ID.
475
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onChainChanged).call(this, chainId);
476
+ }
477
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionSucceeded).call(this, method, scope, params);
478
+ }
479
+ catch (error) {
480
+ yield __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_trackWalletActionFailed).call(this, method, scope, params, error);
481
+ throw error;
482
+ }
483
+ });
484
+ }, _MetamaskConnectEVM_request = function _MetamaskConnectEVM_request(request) {
485
+ return __awaiter(this, void 0, void 0, function* () {
486
+ logger('direct request to metamask-provider called', request);
487
+ const result = __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").transport.sendEip1193Message(request);
488
+ if (request.method === 'wallet_addEthereumChain' ||
489
+ request.method === 'wallet_switchEthereumChain') {
490
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").openDeeplinkIfNeeded();
491
+ }
492
+ return result;
493
+ });
494
+ }, _MetamaskConnectEVM_onChainChanged = function _MetamaskConnectEVM_onChainChanged(chainId) {
495
+ var _a, _b;
496
+ const hexChainId = isHex(chainId) ? chainId : numberToHex(chainId);
497
+ if (hexChainId === __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedChainId) {
498
+ return;
499
+ }
500
+ logger('handler: chainChanged', { chainId });
501
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").selectedChainId = chainId;
502
+ (_b = (_a = __classPrivateFieldGet(this, _MetamaskConnectEVM_eventHandlers, "f")) === null || _a === void 0 ? void 0 : _a.chainChanged) === null || _b === void 0 ? void 0 : _b.call(_a, hexChainId);
503
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").emit('chainChanged', hexChainId);
504
+ }, _MetamaskConnectEVM_onAccountsChanged = function _MetamaskConnectEVM_onAccountsChanged(accounts) {
505
+ var _a, _b;
506
+ logger('handler: accountsChanged', accounts);
507
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").accounts = accounts;
508
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").emit('accountsChanged', accounts);
509
+ (_b = (_a = __classPrivateFieldGet(this, _MetamaskConnectEVM_eventHandlers, "f")) === null || _a === void 0 ? void 0 : _a.accountsChanged) === null || _b === void 0 ? void 0 : _b.call(_a, accounts);
510
+ }, _MetamaskConnectEVM_onConnect = function _MetamaskConnectEVM_onConnect({ chainId, accounts, }) {
511
+ var _a, _b;
512
+ logger('handler: connect', { chainId, accounts });
513
+ const data = {
514
+ chainId: isHex(chainId) ? chainId : numberToHex(chainId),
515
+ accounts,
516
+ };
517
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").emit('connect', data);
518
+ (_b = (_a = __classPrivateFieldGet(this, _MetamaskConnectEVM_eventHandlers, "f")) === null || _a === void 0 ? void 0 : _a.connect) === null || _b === void 0 ? void 0 : _b.call(_a, data);
519
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onChainChanged).call(this, chainId);
520
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onAccountsChanged).call(this, accounts);
521
+ }, _MetamaskConnectEVM_onDisconnect = function _MetamaskConnectEVM_onDisconnect() {
522
+ var _a, _b;
523
+ logger('handler: disconnect');
524
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_provider, "f").emit('disconnect');
525
+ (_b = (_a = __classPrivateFieldGet(this, _MetamaskConnectEVM_eventHandlers, "f")) === null || _a === void 0 ? void 0 : _a.disconnect) === null || _b === void 0 ? void 0 : _b.call(_a);
526
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onAccountsChanged).call(this, []);
527
+ }, _MetamaskConnectEVM_attemptSessionRecovery = function _MetamaskConnectEVM_attemptSessionRecovery() {
528
+ return __awaiter(this, void 0, void 0, function* () {
529
+ try {
530
+ const response = yield __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").transport.request({
531
+ method: 'wallet_getSession',
532
+ });
533
+ const { sessionScopes } = response.result;
534
+ __classPrivateFieldSet(this, _MetamaskConnectEVM_sessionScopes, sessionScopes, "f");
535
+ const permittedChainIds = getPermittedEthChainIds(sessionScopes);
536
+ // Instead of using the accounts we get back from calling `wallet_getSession`
537
+ // we get permitted accounts from `eth_accounts` to make sure we have them ordered by last selected account
538
+ // and correctly set the currently selected account for the dapp
539
+ const permittedAccounts = yield __classPrivateFieldGet(this, _MetamaskConnectEVM_core, "f").transport.sendEip1193Message({
540
+ method: 'eth_accounts',
541
+ params: [],
542
+ });
543
+ if (permittedChainIds.length && permittedAccounts.result) {
544
+ __classPrivateFieldGet(this, _MetamaskConnectEVM_instances, "m", _MetamaskConnectEVM_onConnect).call(this, {
545
+ chainId: permittedChainIds[0],
546
+ accounts: permittedAccounts.result,
547
+ });
548
+ }
549
+ }
550
+ catch (error) {
551
+ console.error('Error attempting session recovery', error);
552
+ }
553
+ });
554
+ };
555
+ /**
556
+ * Creates a new Metamask Connect/EVM instance
557
+ *
558
+ * @param options - The options for the Metamask Connect/EVM layer
559
+ * @param options.dapp - Dapp identification and branding settings
560
+ * @param options.api - API configuration including read-only RPC map
561
+ * @param options.api.supportedNetworks - A map of CAIP chain IDs to RPC URLs for read-only requests
562
+ * @param options.eventEmitter - The event emitter to use for the Metamask Connect/EVM layer
563
+ * @param options.eventHandlers - The event handlers to use for the Metamask Connect/EVM layer
564
+ * @returns The Metamask Connect/EVM layer instance
565
+ */
566
+ export function createMetamaskConnectEVM(options) {
567
+ return __awaiter(this, void 0, void 0, function* () {
568
+ var _a;
569
+ enableDebug(options.debug);
570
+ logger('Creating Metamask Connect/EVM with options:', options);
571
+ // Validate that supportedNetworks is provided and not empty
572
+ if (!((_a = options.api) === null || _a === void 0 ? void 0 : _a.supportedNetworks) ||
573
+ Object.keys(options.api.supportedNetworks).length === 0) {
574
+ throw new Error('supportedNetworks is required and must contain at least one chain configuration');
575
+ }
576
+ validSupportedChainsUrls(options.api.supportedNetworks, 'supportedNetworks');
577
+ try {
578
+ const core = yield createMetamaskConnect(Object.assign(Object.assign({}, options), { api: {
579
+ supportedNetworks: options.api.supportedNetworks,
580
+ } }));
581
+ return new MetamaskConnectEVM({
582
+ core,
583
+ eventHandlers: options.eventHandlers,
584
+ supportedNetworks: options.api.supportedNetworks,
585
+ });
586
+ }
587
+ catch (error) {
588
+ console.error('Error creating Metamask Connect/EVM', error);
589
+ throw error;
590
+ }
591
+ });
592
+ }
593
+ //# sourceMappingURL=connect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/connect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const IGNORED_METHODS: string[];
2
+ export declare const CONNECT_METHODS: string[];
3
+ export declare const ACCOUNTS_METHODS: string[];
4
+ export declare const INTERCEPTABLE_METHODS: string[];
5
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,UAO3B,CAAC;AAEF,eAAO,MAAM,eAAe,UAG3B,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAmC,CAAC;AAEjE,eAAO,MAAM,qBAAqB,UAQjC,CAAC"}