@dynamic-labs-sdk/evm 1.31.0 → 1.31.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.
- package/README.md +22 -0
- package/dist/{addWaasEvmExtension-CyXCTxGv.esm.js → addWaasEvmExtension-BMR_gR6B.esm.js} +10 -6
- package/dist/addWaasEvmExtension-BMR_gR6B.esm.js.map +1 -0
- package/dist/{addWaasEvmExtension-CP2ibnvq.cjs → addWaasEvmExtension-BjoGfmQX.cjs} +9 -5
- package/dist/addWaasEvmExtension-BjoGfmQX.cjs.map +1 -0
- package/dist/{addWaasEvmExtension-DYKWl5DG.native.esm.js → addWaasEvmExtension-KdZlXrUW.native.esm.js} +10 -6
- package/dist/addWaasEvmExtension-KdZlXrUW.native.esm.js.map +1 -0
- package/dist/baseAccount.cjs +1 -1
- package/dist/baseAccount.esm.js +1 -1
- package/dist/baseAccount.native.esm.js +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.esm.js +1 -1
- package/dist/core.native.esm.js +1 -1
- package/dist/eip6963.cjs +1 -1
- package/dist/eip6963.esm.js +1 -1
- package/dist/eip6963.native.esm.js +1 -1
- package/dist/errors/MetaMaskDirectConnectNotSupportedError/MetaMaskDirectConnectNotSupportedError.d.ts +14 -0
- package/dist/errors/MetaMaskDirectConnectNotSupportedError/MetaMaskDirectConnectNotSupportedError.d.ts.map +1 -0
- package/dist/errors/MetaMaskDirectConnectNotSupportedError/index.d.ts +2 -0
- package/dist/errors/MetaMaskDirectConnectNotSupportedError/index.d.ts.map +1 -0
- package/dist/exports/metamask.d.ts +3 -0
- package/dist/exports/metamask.d.ts.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.esm.js +2 -2
- package/dist/index.native.esm.js +2 -2
- package/dist/metamask/addMetaMaskEvmExtension/addMetaMaskEvmExtension.d.ts +23 -0
- package/dist/metamask/addMetaMaskEvmExtension/addMetaMaskEvmExtension.d.ts.map +1 -0
- package/dist/metamask/addMetaMaskEvmExtension/index.d.ts +2 -0
- package/dist/metamask/addMetaMaskEvmExtension/index.d.ts.map +1 -0
- package/dist/metamask/connectAndVerifyWithMetaMaskUriEvm/connectAndVerifyWithMetaMaskUriEvm.d.ts.map +1 -1
- package/dist/metamask/connectWithMetaMaskUriEvm/connectWithMetaMaskUriEvm.d.ts.map +1 -1
- package/dist/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.d.ts +20 -3
- package/dist/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.d.ts.map +1 -1
- package/dist/metamask/getMetaMaskEvmSdkWalletProviderKey/getMetaMaskEvmSdkWalletProviderKey.d.ts +17 -0
- package/dist/metamask/getMetaMaskEvmSdkWalletProviderKey/getMetaMaskEvmSdkWalletProviderKey.d.ts.map +1 -0
- package/dist/metamask/getMetaMaskEvmSdkWalletProviderKey/index.d.ts +2 -0
- package/dist/metamask/getMetaMaskEvmSdkWalletProviderKey/index.d.ts.map +1 -0
- package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/index.d.ts +2 -0
- package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/index.d.ts.map +1 -0
- package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.d.ts +22 -0
- package/dist/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.d.ts.map +1 -0
- package/dist/metamask/warnMetaMaskEvmIntegrationIncomplete/index.d.ts +2 -0
- package/dist/metamask/warnMetaMaskEvmIntegrationIncomplete/index.d.ts.map +1 -0
- package/dist/metamask/warnMetaMaskEvmIntegrationIncomplete/warnMetaMaskEvmIntegrationIncomplete.d.ts +18 -0
- package/dist/metamask/warnMetaMaskEvmIntegrationIncomplete/warnMetaMaskEvmIntegrationIncomplete.d.ts.map +1 -0
- package/dist/metamask.cjs +230 -247
- package/dist/metamask.cjs.map +1 -1
- package/dist/metamask.esm.js +231 -251
- package/dist/metamask.esm.js.map +1 -1
- package/dist/metamask.native.esm.js +231 -251
- package/dist/metamask.native.esm.js.map +1 -1
- package/dist/{package--hhb8lj2.native.esm.js → package-DHXe8K1l.native.esm.js} +2 -2
- package/dist/package-DHXe8K1l.native.esm.js.map +1 -0
- package/dist/{package-CIdQu8lB.cjs → package-cXTEEW7P.cjs} +2 -2
- package/dist/package-cXTEEW7P.cjs.map +1 -0
- package/dist/{package-D0IvC55z.esm.js → package-wISL2vMS.esm.js} +2 -2
- package/dist/package-wISL2vMS.esm.js.map +1 -0
- package/dist/tempo.cjs +1 -1
- package/dist/tempo.esm.js +1 -1
- package/dist/tempo.native.esm.js +1 -1
- package/dist/tsconfig.lib.tsbuildinfo +1 -1
- package/dist/viem.cjs +1 -1
- package/dist/viem.esm.js +1 -1
- package/dist/viem.native.esm.js +1 -1
- package/dist/waas/utils/createWalletProviderForWaasEvm/signAuthorization/signAuthorization.d.ts.map +1 -1
- package/dist/waas/utils/createWalletProviderForWaasEvm/signTypedData/signTypedData.d.ts.map +1 -1
- package/dist/waas.cjs +2 -2
- package/dist/waas.esm.js +2 -2
- package/dist/waas.native.esm.js +2 -2
- package/dist/walletConnect/addWalletConnectEvmExtension/addWalletConnectEvmExtension.d.ts.map +1 -1
- package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/index.d.ts +2 -0
- package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/index.d.ts.map +1 -0
- package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/registerWalletConnectEvmUriConnectionStarter.d.ts +19 -0
- package/dist/walletConnect/registerWalletConnectEvmUriConnectionStarter/registerWalletConnectEvmUriConnectionStarter.d.ts.map +1 -0
- package/dist/walletConnect.cjs +98 -58
- package/dist/walletConnect.cjs.map +1 -1
- package/dist/walletConnect.esm.js +99 -59
- package/dist/walletConnect.esm.js.map +1 -1
- package/dist/walletConnect.native.esm.js +99 -59
- package/dist/walletConnect.native.esm.js.map +1 -1
- package/dist/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.d.ts.map +1 -1
- package/dist/windowInjected/utils/isProviderSelectionRouter/index.d.ts +2 -0
- package/dist/windowInjected/utils/isProviderSelectionRouter/index.d.ts.map +1 -0
- package/dist/windowInjected/utils/isProviderSelectionRouter/isProviderSelectionRouter.d.ts +30 -0
- package/dist/windowInjected/utils/isProviderSelectionRouter/isProviderSelectionRouter.d.ts.map +1 -0
- package/dist/windowInjected.cjs +34 -1
- package/dist/windowInjected.cjs.map +1 -1
- package/dist/windowInjected.esm.js +34 -1
- package/dist/windowInjected.esm.js.map +1 -1
- package/dist/windowInjected.native.esm.js +34 -1
- package/dist/windowInjected.native.esm.js.map +1 -1
- package/package.json +5 -6
- package/dist/addWaasEvmExtension-CP2ibnvq.cjs.map +0 -1
- package/dist/addWaasEvmExtension-CyXCTxGv.esm.js.map +0 -1
- package/dist/addWaasEvmExtension-DYKWl5DG.native.esm.js.map +0 -1
- package/dist/getEvmNetworksData-CGZjI4hV.native.esm.js +0 -18
- package/dist/getEvmNetworksData-CGZjI4hV.native.esm.js.map +0 -1
- package/dist/getEvmNetworksData-ChkgLvCg.esm.js +0 -18
- package/dist/getEvmNetworksData-ChkgLvCg.esm.js.map +0 -1
- package/dist/getEvmNetworksData-DBJIMiOH.cjs +0 -23
- package/dist/getEvmNetworksData-DBJIMiOH.cjs.map +0 -1
- package/dist/metamask/metamask.types.d.ts +0 -14
- package/dist/metamask/metamask.types.d.ts.map +0 -1
- package/dist/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.d.ts +0 -18
- package/dist/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.d.ts.map +0 -1
- package/dist/metamask/utils/createMetaMaskEvmController/index.d.ts +0 -2
- package/dist/metamask/utils/createMetaMaskEvmController/index.d.ts.map +0 -1
- package/dist/metamask/utils/getOrCreateMetaMaskEvmController/getOrCreateMetaMaskEvmController.d.ts +0 -27
- package/dist/metamask/utils/getOrCreateMetaMaskEvmController/getOrCreateMetaMaskEvmController.d.ts.map +0 -1
- package/dist/metamask/utils/getOrCreateMetaMaskEvmController/index.d.ts +0 -2
- package/dist/metamask/utils/getOrCreateMetaMaskEvmController/index.d.ts.map +0 -1
- package/dist/metamask/utils/getSupportedNetworks/getSupportedNetworks.d.ts +0 -6
- package/dist/metamask/utils/getSupportedNetworks/getSupportedNetworks.d.ts.map +0 -1
- package/dist/metamask/utils/getSupportedNetworks/index.d.ts +0 -2
- package/dist/metamask/utils/getSupportedNetworks/index.d.ts.map +0 -1
- package/dist/metamask/utils/subscribeMetaMaskEvmFacadeListener/index.d.ts +0 -3
- package/dist/metamask/utils/subscribeMetaMaskEvmFacadeListener/index.d.ts.map +0 -1
- package/dist/metamask/utils/subscribeMetaMaskEvmFacadeListener/subscribeMetaMaskEvmFacadeListener.d.ts +0 -40
- package/dist/metamask/utils/subscribeMetaMaskEvmFacadeListener/subscribeMetaMaskEvmFacadeListener.d.ts.map +0 -1
- package/dist/metamask/utils/warnWhenChainNotConfigured/index.d.ts +0 -3
- package/dist/metamask/utils/warnWhenChainNotConfigured/index.d.ts.map +0 -1
- package/dist/metamask/utils/warnWhenChainNotConfigured/warnWhenChainNotConfigured.d.ts +0 -28
- package/dist/metamask/utils/warnWhenChainNotConfigured/warnWhenChainNotConfigured.d.ts.map +0 -1
- package/dist/package--hhb8lj2.native.esm.js.map +0 -1
- package/dist/package-CIdQu8lB.cjs.map +0 -1
- package/dist/package-D0IvC55z.esm.js.map +0 -1
package/dist/metamask/warnMetaMaskEvmIntegrationIncomplete/warnMetaMaskEvmIntegrationIncomplete.d.ts
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { DynamicClient } from '@dynamic-labs-sdk/client';
|
|
2
|
+
/**
|
|
3
|
+
* Warns when `addMetaMaskEvmExtension()` hasn't been added, since a wallet
|
|
4
|
+
* connected via `connectWithMetaMaskUriEvm` without it won't be restored
|
|
5
|
+
* after a page reload.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* warnMetaMaskEvmIntegrationIncomplete(client);
|
|
10
|
+
* ```
|
|
11
|
+
* @param client - The Dynamic client instance.
|
|
12
|
+
* @returns void
|
|
13
|
+
* @see connectWithMetaMaskUriEvm
|
|
14
|
+
* @see addMetaMaskEvmExtension
|
|
15
|
+
* @notInstrumented
|
|
16
|
+
*/
|
|
17
|
+
export declare const warnMetaMaskEvmIntegrationIncomplete: (client: DynamicClient) => void;
|
|
18
|
+
//# sourceMappingURL=warnMetaMaskEvmIntegrationIncomplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnMetaMaskEvmIntegrationIncomplete.d.ts","sourceRoot":"","sources":["../../../src/metamask/warnMetaMaskEvmIntegrationIncomplete/warnMetaMaskEvmIntegrationIncomplete.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,oCAAoC,GAC/C,QAAQ,aAAa,KACpB,IAeF,CAAC"}
|
package/dist/metamask.cjs
CHANGED
|
@@ -1,216 +1,59 @@
|
|
|
1
|
-
const require_package = require('./package-
|
|
1
|
+
const require_package = require('./package-cXTEEW7P.cjs');
|
|
2
2
|
const require_evmTransferAmount = require('./evmTransferAmount-Ddvx91b0.cjs');
|
|
3
3
|
require('./createPublicClientFromNetworkData-BAC8YTrK.cjs');
|
|
4
4
|
const require_createWalletProviderFromEIP1193Provider = require('./createWalletProviderFromEIP1193Provider-E1WbEBET.cjs');
|
|
5
|
-
const require_getEvmNetworksData = require('./getEvmNetworksData-DBJIMiOH.cjs');
|
|
6
5
|
let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
|
|
7
6
|
let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
|
|
8
7
|
let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
|
|
9
8
|
let _dynamic_labs_sdk_api_core = require("@dynamic-labs/sdk-api-core");
|
|
9
|
+
let _dynamic_labs_sdk_metamask_core = require("@dynamic-labs-sdk/metamask/core");
|
|
10
10
|
let _dynamic_labs_sdk_metamask = require("@dynamic-labs-sdk/metamask");
|
|
11
|
-
let _metamask_connect_evm = require("@metamask/connect-evm");
|
|
12
11
|
|
|
13
|
-
//#region src/
|
|
14
|
-
/** @notInstrumented */
|
|
15
|
-
const getSupportedNetworks = (client) => {
|
|
16
|
-
const evmNetworks = require_getEvmNetworksData.getEvmNetworksData(client).sort((a, b) => {
|
|
17
|
-
if (a.networkId === "1") return -1;
|
|
18
|
-
if (b.networkId === "1") return 1;
|
|
19
|
-
return 0;
|
|
20
|
-
});
|
|
21
|
-
(0, _dynamic_labs_sdk_client_core.assertNonEmptyArray)(evmNetworks, "No EVM networks have been configured. Make sure to add at least one EVM network to your project settings in the Dynamic Dashboard.");
|
|
22
|
-
const supportedNetworks = {};
|
|
23
|
-
for (const network of evmNetworks) {
|
|
24
|
-
const hexChainId = `0x${Number.parseInt(network.networkId, 10).toString(16)}`;
|
|
25
|
-
supportedNetworks[hexChainId] = network.rpcUrls.http[0];
|
|
26
|
-
}
|
|
27
|
-
return supportedNetworks;
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
//#endregion
|
|
31
|
-
//#region src/metamask/utils/warnWhenChainNotConfigured/warnWhenChainNotConfigured.ts
|
|
32
|
-
/**
|
|
33
|
-
* Warns when the chain MetaMask reports -- via its `connect` or
|
|
34
|
-
* `chainChanged` events -- is not among the project's configured EVM
|
|
35
|
-
* networks. MetaMask's SDK gates every signing request
|
|
36
|
-
* (`personal_sign`, `eth_sendTransaction`, `eth_signTypedData_v4`) on
|
|
37
|
-
* `supportedNetworks` and throws before the wallet is ever contacted when
|
|
38
|
-
* the chain isn't listed, while `eth_accounts`/`eth_chainId` bypass that
|
|
39
|
-
* gate entirely -- so connect appears to succeed and only signing fails,
|
|
40
|
-
* with no deeplink and no obvious cause. This warn surfaces the mismatch
|
|
41
|
-
* the moment it arises instead of leaving it to be diagnosed from a
|
|
42
|
-
* cryptic signing failure.
|
|
43
|
-
* @notInstrumented
|
|
44
|
-
*/
|
|
45
|
-
const warnWhenChainNotConfigured = ({ chainId, supportedNetworks }, client) => {
|
|
46
|
-
const configuredChainIds = Object.keys(supportedNetworks);
|
|
47
|
-
if (configuredChainIds.includes(chainId)) return;
|
|
48
|
-
(0, _dynamic_labs_sdk_client_core.getCore)(client).logger.warn(`[metamask] Wallet chain ${chainId} is not in the project's configured EVM networks (${configuredChainIds.join(", ")}). Signing requests will fail before MetaMask opens until this network is added to your project's EVM networks in the Dynamic Dashboard.`);
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
//#endregion
|
|
52
|
-
//#region src/metamask/utils/createMetaMaskEvmController/createMetaMaskEvmController.ts
|
|
12
|
+
//#region src/errors/MetaMaskDirectConnectNotSupportedError/MetaMaskDirectConnectNotSupportedError.ts
|
|
53
13
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* The MetaMask SDK's own verbose logging is tied to the Dynamic client's log
|
|
62
|
-
* level, so turning on `debug` logging for the Dynamic SDK also surfaces
|
|
63
|
-
* MetaMask's internal SDK trace output.
|
|
64
|
-
*
|
|
65
|
-
* @notInstrumented
|
|
14
|
+
* Thrown when `connect()` is called directly on the MetaMask SDK placeholder
|
|
15
|
+
* wallet provider (the entry `addMetaMaskEvmExtension` registers so MetaMask
|
|
16
|
+
* still shows up in the wallet picker when no browser extension is
|
|
17
|
+
* installed). That placeholder has no generic connect flow of its own --
|
|
18
|
+
* connecting requires the QR / deeplink pairing flow, so callers must drive
|
|
19
|
+
* `connectWithMetaMaskUriEvm` (or `connectAndVerifyWithMetaMaskUriEvm`)
|
|
20
|
+
* instead of the picker's default connect.
|
|
66
21
|
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
iconUrl: appLogoUrl,
|
|
78
|
-
name: appName,
|
|
79
|
-
nativeScheme: (0, _dynamic_labs_sdk_client_core.getNativeLinkScheme)({ nativeLink: appNativeLink }),
|
|
80
|
-
url: appUniversalLink ?? ""
|
|
81
|
-
},
|
|
82
|
-
debug: logger.isEnabled("debug"),
|
|
83
|
-
eventHandlers: {
|
|
84
|
-
chainChanged: (chainId) => {
|
|
85
|
-
warnWhenChainNotConfigured({
|
|
86
|
-
chainId,
|
|
87
|
-
supportedNetworks
|
|
88
|
-
}, client);
|
|
89
|
-
},
|
|
90
|
-
connect: ({ chainId }) => {
|
|
91
|
-
latestDisplayUri = void 0;
|
|
92
|
-
warnWhenChainNotConfigured({
|
|
93
|
-
chainId,
|
|
94
|
-
supportedNetworks
|
|
95
|
-
}, client);
|
|
96
|
-
},
|
|
97
|
-
disconnect: () => {
|
|
98
|
-
latestDisplayUri = void 0;
|
|
99
|
-
},
|
|
100
|
-
displayUri: (uri) => {
|
|
101
|
-
latestDisplayUri = uri;
|
|
102
|
-
for (const listener of listeners) listener(uri);
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
mobile: { preferredOpenLink: (deeplink) => {
|
|
106
|
-
const { logger: logger$1 } = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
107
|
-
logger$1.debug("[metamask] opening MWP deeplink", deeplink);
|
|
108
|
-
(0, _dynamic_labs_sdk_client_core.getCore)(client).openDeeplink(deeplink).then(() => {
|
|
109
|
-
logger$1.debug("[metamask] opened MWP deeplink", deeplink);
|
|
110
|
-
}).catch((error) => {
|
|
111
|
-
logger$1.warn("[metamask] failed to open MWP deeplink", error);
|
|
112
|
-
});
|
|
113
|
-
} },
|
|
114
|
-
ui: {
|
|
115
|
-
headless: true,
|
|
116
|
-
preferExtension: true
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
latestDisplayUri = void 0;
|
|
120
|
-
const onDisplayUri = (listener) => {
|
|
121
|
-
listeners.add(listener);
|
|
122
|
-
if (latestDisplayUri !== void 0) listener(latestDisplayUri);
|
|
123
|
-
return () => {
|
|
124
|
-
listeners.delete(listener);
|
|
125
|
-
};
|
|
126
|
-
};
|
|
127
|
-
const chainIds = Object.keys(supportedNetworks);
|
|
128
|
-
let inFlightConnect = null;
|
|
129
|
-
const connect = () => {
|
|
130
|
-
if (inFlightConnect) return inFlightConnect;
|
|
131
|
-
inFlightConnect = (async () => {
|
|
132
|
-
try {
|
|
133
|
-
if (sdk.status === "connecting") try {
|
|
134
|
-
await sdk.disconnect();
|
|
135
|
-
} catch (error) {
|
|
136
|
-
(0, _dynamic_labs_sdk_client_core.getCore)(client).logger.debug("[metamask] pre-connect disconnect rejected (expected when aborting a pairing the wallet never accepted)", error);
|
|
137
|
-
}
|
|
138
|
-
await sdk.connect({ chainIds });
|
|
139
|
-
} finally {
|
|
140
|
-
inFlightConnect = null;
|
|
141
|
-
}
|
|
142
|
-
})();
|
|
143
|
-
return inFlightConnect;
|
|
144
|
-
};
|
|
145
|
-
return {
|
|
146
|
-
clearCachedDisplayUri: () => {
|
|
147
|
-
latestDisplayUri = void 0;
|
|
148
|
-
},
|
|
149
|
-
connect,
|
|
150
|
-
getLatestDisplayUri: () => latestDisplayUri,
|
|
151
|
-
onDisplayUri,
|
|
152
|
-
sdk
|
|
153
|
-
};
|
|
22
|
+
var MetaMaskDirectConnectNotSupportedError = class extends _dynamic_labs_sdk_client.BaseError {
|
|
23
|
+
constructor() {
|
|
24
|
+
super({
|
|
25
|
+
cause: null,
|
|
26
|
+
code: "metamask_direct_connect_not_supported",
|
|
27
|
+
docsUrl: null,
|
|
28
|
+
name: "MetaMaskDirectConnectNotSupportedError",
|
|
29
|
+
shortMessage: "MetaMask cannot be connected directly; call connectWithMetaMaskUriEvm (or connectAndVerifyWithMetaMaskUriEvm) to get a QR/URI pairing flow instead"
|
|
30
|
+
});
|
|
31
|
+
}
|
|
154
32
|
};
|
|
155
33
|
|
|
156
34
|
//#endregion
|
|
157
|
-
//#region src/metamask/
|
|
158
|
-
const
|
|
35
|
+
//#region src/metamask/getMetaMaskEvmSdkWalletProviderKey/getMetaMaskEvmSdkWalletProviderKey.ts
|
|
36
|
+
const METAMASK_EVM_SDK_DISPLAY_NAME = "MetaMask";
|
|
159
37
|
/**
|
|
160
|
-
*
|
|
161
|
-
*
|
|
162
|
-
* `
|
|
163
|
-
*
|
|
164
|
-
* `connectWithMetaMaskEvm` URI-returning helper — shares the same
|
|
165
|
-
* controller (and therefore the same SDK instance, display-URI cache, and
|
|
166
|
-
* listener registry) per Dynamic client.
|
|
167
|
-
*
|
|
168
|
-
* This matches the pattern used by the WalletConnect `getSignClient`
|
|
169
|
-
* accessor: the first call triggers construction; subsequent calls
|
|
170
|
-
* (within the same client) return the cached promise without re-running
|
|
171
|
-
* the builder.
|
|
172
|
-
*
|
|
173
|
-
* The cache is **per-Dynamic-client, not per-SDK-instance**:
|
|
174
|
-
* `@metamask/connect-evm`'s `createEVMClient` is itself a singleton —
|
|
175
|
-
* a second call returns the same underlying SDK — so when multiple
|
|
176
|
-
* Dynamic clients coexist they end up sharing the same MetaMask SDK
|
|
177
|
-
* instance (and therefore the same active pairing session) regardless
|
|
178
|
-
* of this cache. The wrapper exists to own the controller's
|
|
179
|
-
* `display_uri` cache and listener registry per Dynamic client, which
|
|
180
|
-
* the SDK itself does not expose.
|
|
38
|
+
* Deterministic wallet provider key for the MetaMask SDK's connect-less EVM
|
|
39
|
+
* placeholder. Computed without building the wallet provider itself, so
|
|
40
|
+
* `addMetaMaskEvmExtension` can check for a matching wallet account before
|
|
41
|
+
* paying the cost of `createMetaMaskEvmWalletProvider`.
|
|
181
42
|
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* const key = getMetaMaskEvmSdkWalletProviderKey();
|
|
46
|
+
* ```
|
|
47
|
+
* @returns The deterministic wallet provider key.
|
|
48
|
+
* @see createMetaMaskEvmWalletProvider
|
|
49
|
+
* @see reconcileMetaMaskWalletProvider
|
|
182
50
|
* @notInstrumented
|
|
183
51
|
*/
|
|
184
|
-
const
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Subscribes a facade listener to the underlying MetaMask SDK provider,
|
|
191
|
-
* forwarding events through per-event adapters:
|
|
192
|
-
*
|
|
193
|
-
* - `accountsChanged` — clones the readonly addresses array
|
|
194
|
-
* `@metamask/connect-evm` hands the listener, since the Dynamic SDK
|
|
195
|
-
* facade contract emits a mutable `Address[]`.
|
|
196
|
-
* - `chainChanged` — passes the chain id through verbatim.
|
|
197
|
-
* - `disconnected` — bridged to the SDK's canonical `disconnect`
|
|
198
|
-
* event, which the SDK actually emits.
|
|
199
|
-
*
|
|
200
|
-
* Returns the unsubscribe function returned by the SDK provider so the
|
|
201
|
-
* caller can clean it up later (for example, when the facade's
|
|
202
|
-
* `removeAllListeners` is invoked).
|
|
203
|
-
*
|
|
204
|
-
* @notInstrumented
|
|
205
|
-
*/
|
|
206
|
-
const subscribeMetaMaskEvmFacadeListener = ({ client, pending, provider }) => {
|
|
207
|
-
if (pending.event === "accountsChanged") return provider.on("accountsChanged", (addresses) => pending.listener([...addresses]));
|
|
208
|
-
if (pending.event === "chainChanged") return provider.on("chainChanged", (chainId) => pending.listener(chainId));
|
|
209
|
-
if (pending.event === "disconnected") return provider.on("disconnect", () => pending.listener());
|
|
210
|
-
const exhaustiveCheck = pending;
|
|
211
|
-
(0, _dynamic_labs_sdk_client_core.getCore)(client).logger.debug("[metamask] subscribeMetaMaskEvmFacadeListener: unhandled event", exhaustiveCheck.event);
|
|
212
|
-
return NOOP_UNSUBSCRIBE;
|
|
213
|
-
};
|
|
52
|
+
const getMetaMaskEvmSdkWalletProviderKey = () => (0, _dynamic_labs_sdk_client_core.formatWalletProviderKey)({
|
|
53
|
+
chain: "EVM",
|
|
54
|
+
displayName: METAMASK_EVM_SDK_DISPLAY_NAME,
|
|
55
|
+
walletProviderType: _dynamic_labs_sdk_api_core.WalletProviderEnum.QrCode
|
|
56
|
+
});
|
|
214
57
|
|
|
215
58
|
//#endregion
|
|
216
59
|
//#region src/metamask/createMetaMaskEvmWalletProvider/createMetaMaskEvmWalletProvider.ts
|
|
@@ -219,70 +62,149 @@ const METAMASK_ICON = `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL
|
|
|
219
62
|
/**
|
|
220
63
|
* Builds the `EvmWalletProvider` registered AFTER a successful MetaMask
|
|
221
64
|
* SDK URI pairing. Wraps the SDK's EIP-1193 provider behind the Dynamic
|
|
222
|
-
* facade
|
|
223
|
-
* shim) and drops `connect` so the provider is filtered out of the
|
|
65
|
+
* facade and drops `connect` so the provider is filtered out of the
|
|
224
66
|
* wallet picker by `getAvailableWalletProvidersData` — mirroring how
|
|
225
67
|
* WalletConnect URI sessions register a signing-only provider. The facade's
|
|
226
68
|
* `request` also traces dispatch/resolution at debug level, since a signing
|
|
227
69
|
* request that never gets a deep-link back to the wallet otherwise leaves
|
|
228
70
|
* no signal on the Dynamic side.
|
|
229
71
|
*
|
|
72
|
+
* `on` is a no-op: the facade doesn't yet bridge MetaMask's own
|
|
73
|
+
* `accountsChanged`/`chainChanged`/`disconnected` events through to the
|
|
74
|
+
* EIP-1193 listener contract.
|
|
75
|
+
*
|
|
76
|
+
* `switchActiveNetwork` routes through `assertMetaMaskNetworkIsGranted`
|
|
77
|
+
* before persisting -- see its inline comment for why (every configured
|
|
78
|
+
* network is an *optional* MetaMask scope, so signing/sending calls on an
|
|
79
|
+
* ungranted one would otherwise fail). The facade's `request` similarly
|
|
80
|
+
* routes its active-network lookup through `resolveActiveMetaMaskScope`
|
|
81
|
+
* rather than reading the registry directly, so a default network MetaMask
|
|
82
|
+
* never granted self-heals before it reaches a real signing/sending call.
|
|
83
|
+
*
|
|
84
|
+
* `switchActiveNetwork`/`disconnectWalletAccount` are local, Dynamic-side
|
|
85
|
+
* actions with no live wallet event to bridge, so they emit `networkChanged`/
|
|
86
|
+
* `disconnected` themselves via `metaMaskEvents` -- otherwise `events` would
|
|
87
|
+
* never fire for MetaMask at all (unlike every other EVM wallet provider,
|
|
88
|
+
* whose events come from bridging the wallet's own EIP-1193 events).
|
|
89
|
+
*
|
|
230
90
|
* @notInstrumented
|
|
231
91
|
*/
|
|
232
|
-
const createMetaMaskEvmWalletProvider =
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
const
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
},
|
|
252
|
-
removeAllListeners: () => {
|
|
253
|
-
for (const unsubscribe of subscriberCleanups) try {
|
|
254
|
-
unsubscribe();
|
|
255
|
-
} catch (error) {
|
|
256
|
-
(0, _dynamic_labs_sdk_client_core.getCore)(client).logger.error("[metamask] removeAllListeners: unsubscribe failed", error);
|
|
257
|
-
}
|
|
258
|
-
subscriberCleanups.clear();
|
|
259
|
-
},
|
|
260
|
-
request: async (request) => {
|
|
261
|
-
const { logger } = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
262
|
-
logger.debug("[metamask] eip1193 request dispatched", {
|
|
92
|
+
const createMetaMaskEvmWalletProvider = (client) => {
|
|
93
|
+
const metaMaskClientInstanceManager = (0, _dynamic_labs_sdk_metamask_core.getOrCreateMetaMaskClientInstanceManager)(client);
|
|
94
|
+
const walletProviderKey = getMetaMaskEvmSdkWalletProviderKey();
|
|
95
|
+
const metaMaskEvents = (0, _dynamic_labs_sdk_metamask_core.createMetaMaskWalletProviderEventEmitter)();
|
|
96
|
+
const walletProvider = require_createWalletProviderFromEIP1193Provider.createWalletProviderFromEIP1193Provider({
|
|
97
|
+
displayName: METAMASK_DISPLAY_NAME,
|
|
98
|
+
eip1193: {
|
|
99
|
+
on: () => {},
|
|
100
|
+
removeAllListeners: () => {},
|
|
101
|
+
request: async (request) => {
|
|
102
|
+
const { logger } = (0, _dynamic_labs_sdk_client_core.getCore)(client);
|
|
103
|
+
const metaMaskClient = await metaMaskClientInstanceManager.getMetaMaskClient();
|
|
104
|
+
try {
|
|
105
|
+
const { networkId } = await (0, _dynamic_labs_sdk_metamask_core.resolveActiveMetaMaskScope)({
|
|
106
|
+
chain: "EVM",
|
|
107
|
+
metaMaskClient,
|
|
108
|
+
walletProviderKey
|
|
109
|
+
}, client);
|
|
110
|
+
logger.debug("[MetaMask:Provider] eip1193 request dispatched", {
|
|
263
111
|
method: request.method,
|
|
264
|
-
|
|
112
|
+
networkId,
|
|
113
|
+
status: metaMaskClient.status
|
|
114
|
+
});
|
|
115
|
+
if (request.method === "eth_chainId") return `0x${Number(networkId).toString(16)}`;
|
|
116
|
+
const result = await metaMaskClient.invokeMethod({
|
|
117
|
+
request,
|
|
118
|
+
scope: `eip155:${networkId}`
|
|
265
119
|
});
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
});
|
|
275
|
-
throw error;
|
|
276
|
-
}
|
|
120
|
+
logger.debug("[MetaMask:Provider] eip1193 request resolved", { method: request.method });
|
|
121
|
+
return result;
|
|
122
|
+
} catch (error) {
|
|
123
|
+
logger.warn("[MetaMask:Provider] eip1193 request rejected", {
|
|
124
|
+
error,
|
|
125
|
+
method: request.method
|
|
126
|
+
});
|
|
127
|
+
throw error;
|
|
277
128
|
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
icon: METAMASK_ICON,
|
|
132
|
+
walletProviderType: _dynamic_labs_sdk_api_core.WalletProviderEnum.QrCode
|
|
133
|
+
}, client);
|
|
134
|
+
const switchActiveNetwork = async ({ networkId }) => {
|
|
135
|
+
await (0, _dynamic_labs_sdk_metamask_core.assertMetaMaskNetworkIsGranted)({
|
|
136
|
+
chain: "EVM",
|
|
137
|
+
metaMaskClient: await metaMaskClientInstanceManager.getMetaMaskClient(),
|
|
138
|
+
networkId
|
|
139
|
+
}, client);
|
|
140
|
+
const { networkId: previousNetworkId } = await (0, _dynamic_labs_sdk_client_core.getActiveNetworkIdFromLastKnownRegistry)({
|
|
141
|
+
client,
|
|
142
|
+
walletProviderKey
|
|
143
|
+
});
|
|
144
|
+
await (0, _dynamic_labs_sdk_client_core.switchActiveNetworkInLastKnownRegistry)({
|
|
145
|
+
client,
|
|
146
|
+
networkId,
|
|
147
|
+
walletProviderKey
|
|
148
|
+
});
|
|
149
|
+
if (networkId !== previousNetworkId) metaMaskEvents.emitNetworkChanged({ networkId });
|
|
150
|
+
};
|
|
151
|
+
const disconnectWalletAccount = async () => {
|
|
152
|
+
await (0, _dynamic_labs_sdk_metamask_core.disconnectMetaMaskWalletProvider)({
|
|
153
|
+
chain: "EVM",
|
|
154
|
+
walletProviderKey
|
|
155
|
+
}, client);
|
|
156
|
+
metaMaskEvents.emitDisconnected();
|
|
157
|
+
};
|
|
158
|
+
const destroy = async (args) => {
|
|
159
|
+
await walletProvider.destroy?.(args);
|
|
160
|
+
metaMaskEvents.cleanupEventEmitter();
|
|
161
|
+
};
|
|
162
|
+
return {
|
|
163
|
+
...walletProvider,
|
|
164
|
+
connect: async () => {
|
|
165
|
+
throw new MetaMaskDirectConnectNotSupportedError();
|
|
166
|
+
},
|
|
167
|
+
destroy,
|
|
168
|
+
disconnectWalletAccount,
|
|
169
|
+
get events() {
|
|
170
|
+
return metaMaskEvents.getEventEmitter();
|
|
171
|
+
},
|
|
172
|
+
switchActiveNetwork
|
|
283
173
|
};
|
|
284
174
|
};
|
|
285
175
|
|
|
176
|
+
//#endregion
|
|
177
|
+
//#region src/metamask/addMetaMaskEvmExtension/addMetaMaskEvmExtension.ts
|
|
178
|
+
const METAMASK_EVM_EXTENSION_KEY = "metaMaskEvm";
|
|
179
|
+
/**
|
|
180
|
+
* Integrates MetaMask Connect (MetaMask's multichain SDK) with the Dynamic
|
|
181
|
+
* client for EVM, letting users connect MetaMask on platforms where the
|
|
182
|
+
* browser extension isn't available — e.g. scanning a QR code, or opening
|
|
183
|
+
* the MetaMask mobile app from a website or React Native app. Call this
|
|
184
|
+
* once during setup.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* const client = createDynamicClient({ environmentId: '...' });
|
|
189
|
+
*
|
|
190
|
+
* addMetaMaskEvmExtension(client);
|
|
191
|
+
* ```
|
|
192
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
193
|
+
* @returns void
|
|
194
|
+
* @see connectWithMetaMaskUriEvm
|
|
195
|
+
* @see addEvmExtension
|
|
196
|
+
* @notInstrumented
|
|
197
|
+
*/
|
|
198
|
+
const addMetaMaskEvmExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
|
|
199
|
+
if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client)) return;
|
|
200
|
+
require_evmTransferAmount.registerEvmNetworkProviderBuilder(client);
|
|
201
|
+
(0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client);
|
|
202
|
+
(0, _dynamic_labs_sdk_metamask_core.reconcileMetaMaskWalletProvider)({
|
|
203
|
+
walletProviderBuilder: createMetaMaskEvmWalletProvider,
|
|
204
|
+
walletProviderKey: getMetaMaskEvmSdkWalletProviderKey()
|
|
205
|
+
}, client);
|
|
206
|
+
};
|
|
207
|
+
|
|
286
208
|
//#endregion
|
|
287
209
|
//#region src/metamask/connectAndVerifyWithMetaMaskUriEvm/connectAndVerifyWithMetaMaskUriEvm.ts
|
|
288
210
|
/**
|
|
@@ -304,7 +226,6 @@ const connectAndVerifyWithMetaMaskUriEvm = async (client = (0, _dynamic_labs_sdk
|
|
|
304
226
|
const { approval, uri } = await (0, _dynamic_labs_sdk_metamask.connectWithMetaMaskUri)({
|
|
305
227
|
addToDynamicWalletAccounts: false,
|
|
306
228
|
chain: "EVM",
|
|
307
|
-
getController: getOrCreateMetaMaskEvmController,
|
|
308
229
|
walletProviderBuilder: createMetaMaskEvmWalletProvider
|
|
309
230
|
}, client);
|
|
310
231
|
const verifiedApproval = async () => {
|
|
@@ -319,6 +240,35 @@ const connectAndVerifyWithMetaMaskUriEvm = async (client = (0, _dynamic_labs_sdk
|
|
|
319
240
|
};
|
|
320
241
|
};
|
|
321
242
|
|
|
243
|
+
//#endregion
|
|
244
|
+
//#region src/metamask/warnMetaMaskEvmIntegrationIncomplete/warnMetaMaskEvmIntegrationIncomplete.ts
|
|
245
|
+
/**
|
|
246
|
+
* Warns when `addMetaMaskEvmExtension()` hasn't been added, since a wallet
|
|
247
|
+
* connected via `connectWithMetaMaskUriEvm` without it won't be restored
|
|
248
|
+
* after a page reload.
|
|
249
|
+
*
|
|
250
|
+
* @example
|
|
251
|
+
* ```ts
|
|
252
|
+
* warnMetaMaskEvmIntegrationIncomplete(client);
|
|
253
|
+
* ```
|
|
254
|
+
* @param client - The Dynamic client instance.
|
|
255
|
+
* @returns void
|
|
256
|
+
* @see connectWithMetaMaskUriEvm
|
|
257
|
+
* @see addMetaMaskEvmExtension
|
|
258
|
+
* @notInstrumented
|
|
259
|
+
*/
|
|
260
|
+
const warnMetaMaskEvmIntegrationIncomplete = (client) => {
|
|
261
|
+
if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: METAMASK_EVM_EXTENSION_KEY }, client)) return;
|
|
262
|
+
(0, _dynamic_labs_sdk_client_core.getCore)(client).logger.warn(`MetaMask integration is incomplete: addMetaMaskEvmExtension() is missing. Add it during setup:
|
|
263
|
+
|
|
264
|
+
import { addMetaMaskEvmExtension } from '@dynamic-labs-sdk/evm/metamask';
|
|
265
|
+
import { createDynamicClient } from '@dynamic-labs-sdk/client';
|
|
266
|
+
|
|
267
|
+
const client = createDynamicClient({ environmentId: '...' });
|
|
268
|
+
|
|
269
|
+
addMetaMaskEvmExtension(client);`);
|
|
270
|
+
};
|
|
271
|
+
|
|
322
272
|
//#endregion
|
|
323
273
|
//#region src/metamask/connectWithMetaMaskUriEvm/connectWithMetaMaskUriEvm.ts
|
|
324
274
|
/**
|
|
@@ -332,11 +282,11 @@ const connectAndVerifyWithMetaMaskUriEvm = async (client = (0, _dynamic_labs_sdk
|
|
|
332
282
|
* @notInstrumented
|
|
333
283
|
*/
|
|
334
284
|
const connectWithMetaMaskUriEvm = ({ addToDynamicWalletAccounts = true } = {}, client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
285
|
+
warnMetaMaskEvmIntegrationIncomplete(client);
|
|
335
286
|
require_evmTransferAmount.registerEvmNetworkProviderBuilder(client);
|
|
336
287
|
return (0, _dynamic_labs_sdk_metamask.connectWithMetaMaskUri)({
|
|
337
288
|
addToDynamicWalletAccounts,
|
|
338
289
|
chain: "EVM",
|
|
339
|
-
getController: getOrCreateMetaMaskEvmController,
|
|
340
290
|
walletProviderBuilder: createMetaMaskEvmWalletProvider
|
|
341
291
|
}, client);
|
|
342
292
|
};
|
|
@@ -353,18 +303,51 @@ const connectWithMetaMaskUriEvm = ({ addToDynamicWalletAccounts = true } = {}, c
|
|
|
353
303
|
*/
|
|
354
304
|
const getMetaMaskEvmExtensionWalletProviderKey = (client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => (0, _dynamic_labs_sdk_metamask.getMetaMaskExtensionWalletProviderKey)({ chain: "EVM" }, client);
|
|
355
305
|
|
|
306
|
+
//#endregion
|
|
307
|
+
//#region src/metamask/registerMetaMaskEvmUriConnectionStarter/registerMetaMaskEvmUriConnectionStarter.ts
|
|
308
|
+
/**
|
|
309
|
+
* Registers the MetaMask SDK URI pairing for EVM with the client, so higher
|
|
310
|
+
* level connection APIs can mint a MetaMask URI for EVM without depending on
|
|
311
|
+
* this package.
|
|
312
|
+
*
|
|
313
|
+
* Call it during app setup to opt into the MetaMask URI path — it is kept out
|
|
314
|
+
* of the EVM extension so apps that never pair with MetaMask over a URI don't
|
|
315
|
+
* bundle the MetaMask SDK.
|
|
316
|
+
*
|
|
317
|
+
* @example
|
|
318
|
+
* ```ts
|
|
319
|
+
* registerMetaMaskEvmUriConnectionStarter();
|
|
320
|
+
* ```
|
|
321
|
+
*
|
|
322
|
+
* @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
|
|
323
|
+
* @returns Nothing.
|
|
324
|
+
* @see connectWithMetaMaskUriEvm
|
|
325
|
+
* @see getUriConnectionStarterRegistry
|
|
326
|
+
* @notInstrumented
|
|
327
|
+
*/
|
|
328
|
+
const registerMetaMaskEvmUriConnectionStarter = (client = (0, _dynamic_labs_sdk_client.getDefaultClient)()) => {
|
|
329
|
+
(0, _dynamic_labs_sdk_client_core.getUriConnectionStarterRegistry)(client).register({
|
|
330
|
+
chain: "EVM",
|
|
331
|
+
start: ({ addToDynamicWalletAccounts }) => connectWithMetaMaskUriEvm({ addToDynamicWalletAccounts }, client),
|
|
332
|
+
type: "metamaskSdkUri"
|
|
333
|
+
});
|
|
334
|
+
};
|
|
335
|
+
|
|
356
336
|
//#endregion
|
|
357
337
|
//#region src/exports/metamask.ts
|
|
358
338
|
(0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_package.name, require_package.version);
|
|
359
339
|
|
|
360
340
|
//#endregion
|
|
341
|
+
exports.MetaMaskDirectConnectNotSupportedError = MetaMaskDirectConnectNotSupportedError;
|
|
361
342
|
Object.defineProperty(exports, 'MetaMaskDisplayUriMissingError', {
|
|
362
343
|
enumerable: true,
|
|
363
344
|
get: function () {
|
|
364
345
|
return _dynamic_labs_sdk_metamask.MetaMaskDisplayUriMissingError;
|
|
365
346
|
}
|
|
366
347
|
});
|
|
348
|
+
exports.addMetaMaskEvmExtension = addMetaMaskEvmExtension;
|
|
367
349
|
exports.connectAndVerifyWithMetaMaskUriEvm = connectAndVerifyWithMetaMaskUriEvm;
|
|
368
350
|
exports.connectWithMetaMaskUriEvm = connectWithMetaMaskUriEvm;
|
|
369
351
|
exports.getMetaMaskEvmExtensionWalletProviderKey = getMetaMaskEvmExtensionWalletProviderKey;
|
|
352
|
+
exports.registerMetaMaskEvmUriConnectionStarter = registerMetaMaskEvmUriConnectionStarter;
|
|
370
353
|
//# sourceMappingURL=metamask.cjs.map
|