@dynamic-labs-sdk/evm 0.5.0 → 0.7.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 (60) hide show
  1. package/dist/addEIP6963Extension-B9r9lgc0.cjs.js +59 -0
  2. package/dist/addEIP6963Extension-B9r9lgc0.cjs.js.map +1 -0
  3. package/dist/addEIP6963Extension-D7Sjfh-Q.esm.js +54 -0
  4. package/dist/addEIP6963Extension-D7Sjfh-Q.esm.js.map +1 -0
  5. package/dist/{addWaasEvmExtension-E0T0QK9i.esm.js → addWaasEvmExtension-C4J963oh.esm.js} +2 -2
  6. package/dist/{addWaasEvmExtension-E0T0QK9i.esm.js.map → addWaasEvmExtension-C4J963oh.esm.js.map} +1 -1
  7. package/dist/{addWaasEvmExtension-Cbj4c7W8.cjs.js → addWaasEvmExtension-Da1oL1Uq.cjs.js} +2 -2
  8. package/dist/{addWaasEvmExtension-Cbj4c7W8.cjs.js.map → addWaasEvmExtension-Da1oL1Uq.cjs.js.map} +1 -1
  9. package/dist/{addEIP6963Extension-CgvtCBas.cjs.js → createWalletProviderFromEIP1193Provider-BjFdQbKT.cjs.js} +3 -52
  10. package/dist/createWalletProviderFromEIP1193Provider-BjFdQbKT.cjs.js.map +1 -0
  11. package/dist/{addEIP6963Extension-C9obd5mt.esm.js → createWalletProviderFromEIP1193Provider-BlpJn4oS.esm.js} +3 -52
  12. package/dist/createWalletProviderFromEIP1193Provider-BlpJn4oS.esm.js.map +1 -0
  13. package/dist/eip6963.cjs.js +3 -2
  14. package/dist/eip6963.cjs.js.map +1 -1
  15. package/dist/eip6963.esm.js +3 -2
  16. package/dist/eip6963.esm.js.map +1 -1
  17. package/dist/exports/windowInjected.d.ts +2 -0
  18. package/dist/exports/windowInjected.d.ts.map +1 -0
  19. package/dist/index.cjs.js +4 -3
  20. package/dist/index.cjs.js.map +1 -1
  21. package/dist/index.esm.js +4 -3
  22. package/dist/index.esm.js.map +1 -1
  23. package/dist/{mapNetworkDataToViemChain-B4YB-yZt.esm.js → mapNetworkDataToViemChain-BeqJB1Af.esm.js} +1 -1
  24. package/dist/{mapNetworkDataToViemChain-B4YB-yZt.esm.js.map → mapNetworkDataToViemChain-BeqJB1Af.esm.js.map} +1 -1
  25. package/dist/{mapNetworkDataToViemChain-CvTDSkkK.cjs.js → mapNetworkDataToViemChain-DFVApcmV.cjs.js} +1 -1
  26. package/dist/{mapNetworkDataToViemChain-CvTDSkkK.cjs.js.map → mapNetworkDataToViemChain-DFVApcmV.cjs.js.map} +1 -1
  27. package/dist/{package-DXe9DIvt.cjs.js → package-BhNWipax.cjs.js} +2 -2
  28. package/dist/package-BhNWipax.cjs.js.map +1 -0
  29. package/dist/{package-BSFIt1-g.esm.js → package-Cr7pL-a0.esm.js} +2 -2
  30. package/dist/package-Cr7pL-a0.esm.js.map +1 -0
  31. package/dist/tsconfig.lib.tsbuildinfo +1 -1
  32. package/dist/viem.cjs.js +2 -2
  33. package/dist/viem.esm.js +2 -2
  34. package/dist/waas.cjs.js +2 -2
  35. package/dist/waas.esm.js +2 -2
  36. package/dist/walletConnect.cjs.js +1 -1
  37. package/dist/walletConnect.esm.js +1 -1
  38. package/dist/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.d.ts +21 -0
  39. package/dist/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.d.ts.map +1 -0
  40. package/dist/windowInjected/addEvmWindowInjectedExtension/index.d.ts +2 -0
  41. package/dist/windowInjected/addEvmWindowInjectedExtension/index.d.ts.map +1 -0
  42. package/dist/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.d.ts +20 -0
  43. package/dist/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.d.ts.map +1 -0
  44. package/dist/windowInjected/utils/detectEvmWalletFromProvider/index.d.ts +2 -0
  45. package/dist/windowInjected/utils/detectEvmWalletFromProvider/index.d.ts.map +1 -0
  46. package/dist/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.d.ts +15 -0
  47. package/dist/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.d.ts.map +1 -0
  48. package/dist/windowInjected/utils/getEvmInjectedProviders/index.d.ts +2 -0
  49. package/dist/windowInjected/utils/getEvmInjectedProviders/index.d.ts.map +1 -0
  50. package/dist/windowInjected/windowInjected.types.d.ts +27 -0
  51. package/dist/windowInjected/windowInjected.types.d.ts.map +1 -0
  52. package/dist/windowInjected.cjs.js +150 -0
  53. package/dist/windowInjected.cjs.js.map +1 -0
  54. package/dist/windowInjected.esm.js +150 -0
  55. package/dist/windowInjected.esm.js.map +1 -0
  56. package/package.json +10 -5
  57. package/dist/addEIP6963Extension-C9obd5mt.esm.js.map +0 -1
  58. package/dist/addEIP6963Extension-CgvtCBas.cjs.js.map +0 -1
  59. package/dist/package-BSFIt1-g.esm.js.map +0 -1
  60. package/dist/package-DXe9DIvt.cjs.js.map +0 -1
package/dist/viem.cjs.js CHANGED
@@ -1,5 +1,5 @@
1
- const require_package = require('./package-DXe9DIvt.cjs.js');
2
- const require_mapNetworkDataToViemChain = require('./mapNetworkDataToViemChain-CvTDSkkK.cjs.js');
1
+ const require_package = require('./package-BhNWipax.cjs.js');
2
+ const require_mapNetworkDataToViemChain = require('./mapNetworkDataToViemChain-DFVApcmV.cjs.js');
3
3
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
4
4
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
5
5
  let _dynamic_labs_sdk_client = require("@dynamic-labs-sdk/client");
package/dist/viem.esm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { n as version, t as name } from "./package-BSFIt1-g.esm.js";
2
- import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-B4YB-yZt.esm.js";
1
+ import { n as version, t as name } from "./package-Cr7pL-a0.esm.js";
2
+ import { t as mapNetworkDataToViemChain } from "./mapNetworkDataToViemChain-BeqJB1Af.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
  import { assertDefined, getDefaultClient, getWalletProviderFromWalletAccount } from "@dynamic-labs-sdk/client/core";
5
5
  import { InvalidParamError, getActiveNetworkData } from "@dynamic-labs-sdk/client";
package/dist/waas.cjs.js CHANGED
@@ -1,6 +1,6 @@
1
- const require_package = require('./package-DXe9DIvt.cjs.js');
1
+ const require_package = require('./package-BhNWipax.cjs.js');
2
2
  require('./registerEvmNetworkProviderBuilder-DDwm5_Df.cjs.js');
3
- const require_addWaasEvmExtension = require('./addWaasEvmExtension-Cbj4c7W8.cjs.js');
3
+ const require_addWaasEvmExtension = require('./addWaasEvmExtension-Da1oL1Uq.cjs.js');
4
4
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
5
5
 
6
6
  //#region src/exports/waas.ts
package/dist/waas.esm.js CHANGED
@@ -1,6 +1,6 @@
1
- import { n as version, t as name } from "./package-BSFIt1-g.esm.js";
1
+ import { n as version, t as name } from "./package-Cr7pL-a0.esm.js";
2
2
  import "./registerEvmNetworkProviderBuilder-CkGuzJNe.esm.js";
3
- import { t as addWaasEvmExtension } from "./addWaasEvmExtension-E0T0QK9i.esm.js";
3
+ import { t as addWaasEvmExtension } from "./addWaasEvmExtension-C4J963oh.esm.js";
4
4
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
5
5
 
6
6
  //#region src/exports/waas.ts
@@ -1,4 +1,4 @@
1
- const require_package = require('./package-DXe9DIvt.cjs.js');
1
+ const require_package = require('./package-BhNWipax.cjs.js');
2
2
  const require_registerEvmNetworkProviderBuilder = require('./registerEvmNetworkProviderBuilder-DDwm5_Df.cjs.js');
3
3
  let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
4
4
  let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
@@ -1,4 +1,4 @@
1
- import { n as version, t as name } from "./package-BSFIt1-g.esm.js";
1
+ import { n as version, t as name } from "./package-Cr7pL-a0.esm.js";
2
2
  import { t as registerEvmNetworkProviderBuilder } from "./registerEvmNetworkProviderBuilder-CkGuzJNe.esm.js";
3
3
  import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
4
4
  import { CHAINS_INFO_MAP, WalletProviderPriority, assertDefined, createApiClient, createSignInMessageStatement, emitEvent, filterDuplicates, formatWalletProviderGroupKey, formatWalletProviderKey, getActiveNetworkIdFromLastKnownRegistry, getCore, getDefaultClient, getWalletProviderRegistry, registerExtension, switchActiveNetworkInLastKnownRegistry, waitForProjectSettings } from "@dynamic-labs-sdk/client/core";
@@ -0,0 +1,21 @@
1
+ export declare const EVM_WINDOW_INJECTED_EXTENSION_KEY = "evmWindowInjected";
2
+ /**
3
+ * Adds the EVM window injected extension to the Dynamic client.
4
+ *
5
+ * This extension enables integration with wallets that are injected into window.ethereum
6
+ * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**
7
+ * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),
8
+ * which typically inject their provider into window.ethereum rather than announcing
9
+ * via EIP-6963.
10
+ *
11
+ * Also useful as a fallback for:
12
+ * - Older browser extension wallets that predate EIP-6963
13
+ * - Safari or certain mobile browsers with limited EIP-6963 support
14
+ *
15
+ * Wallet providers registered via this extension have lower priority than EIP-6963
16
+ * providers, so if a wallet supports both, the EIP-6963 version will be used.
17
+ *
18
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
19
+ */
20
+ export declare const addEvmWindowInjectedExtension: (client?: import("@dynamic-labs-sdk/client").DynamicClient) => void;
21
+ //# sourceMappingURL=addEvmWindowInjectedExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addEvmWindowInjectedExtension.d.ts","sourceRoot":"","sources":["../../../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iCAAiC,sBAAsB,CAAC;AAErE;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,6BAA6B,qEAkCzC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { addEvmWindowInjectedExtension, EVM_WINDOW_INJECTED_EXTENSION_KEY, } from './addEvmWindowInjectedExtension';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/windowInjected/addEvmWindowInjectedExtension/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,iCAAiC,GAClC,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { EIP1193Provider } from '../../../EvmWalletProvider.types';
2
+ import type { EvmWalletDetectionResult } from '../../windowInjected.types';
3
+ type DetectEvmWalletFromProviderParams = {
4
+ provider: EIP1193Provider;
5
+ };
6
+ /**
7
+ * Detects wallet identity from provider flags using hardcoded checks.
8
+ *
9
+ * This is essential for wallet app in-app browsers where the wallet injects
10
+ * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).
11
+ *
12
+ * The order of checks matters - more specific flags should be checked first
13
+ * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).
14
+ *
15
+ * @param params.provider - The EIP-1193 provider to detect
16
+ * @returns Detection result with displayName and icon, or null if unknown
17
+ */
18
+ export declare const detectEvmWalletFromProvider: ({ provider, }: DetectEvmWalletFromProviderParams) => EvmWalletDetectionResult | null;
19
+ export {};
20
+ //# sourceMappingURL=detectEvmWalletFromProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detectEvmWalletFromProvider.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EACV,wBAAwB,EAEzB,MAAM,4BAA4B,CAAC;AAIpC,KAAK,iCAAiC,GAAG;IACvC,QAAQ,EAAE,eAAe,CAAC;CAC3B,CAAC;AAKF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,kBAErC,iCAAiC,KAAG,wBAAwB,GAAG,IAwEjE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { detectEvmWalletFromProvider } from './detectEvmWalletFromProvider';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/detectEvmWalletFromProvider/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { EIP1193Provider } from '../../../EvmWalletProvider.types';
2
+ /**
3
+ * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.
4
+ *
5
+ * This function collects all injected EVM providers from the window object,
6
+ * handling both single provider and multi-provider (EIP-5749) scenarios.
7
+ *
8
+ * This is particularly important for wallet app in-app browsers (e.g., MetaMask
9
+ * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into
10
+ * window.ethereum rather than announcing via EIP-6963.
11
+ *
12
+ * @returns Array of all detected EIP-1193 providers
13
+ */
14
+ export declare const getEvmInjectedProviders: () => EIP1193Provider[];
15
+ //# sourceMappingURL=getEvmInjectedProviders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEvmInjectedProviders.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAKxE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,uBAAuB,QAAO,eAAe,EAOzD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { getEvmInjectedProviders } from './getEvmInjectedProviders';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/windowInjected/utils/getEvmInjectedProviders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Known wallet flag properties that are commonly set on EVM providers.
3
+ *
4
+ * These flags are used to identify which wallet injected the provider,
5
+ * particularly in wallet app in-app browsers where the wallet sets these
6
+ * flags on the injected window.ethereum provider.
7
+ */
8
+ export type KnownEvmWalletFlags = {
9
+ isBraveWallet?: boolean;
10
+ isCoinbaseWallet?: boolean;
11
+ isFrame?: boolean;
12
+ isMetaMask?: boolean;
13
+ isOkxWallet?: boolean;
14
+ isPhantom?: boolean;
15
+ isRabby?: boolean;
16
+ isTrust?: boolean;
17
+ isZerion?: boolean;
18
+ };
19
+ /**
20
+ * Result of detecting a wallet from its provider flags.
21
+ */
22
+ export type EvmWalletDetectionResult = {
23
+ displayName: string;
24
+ groupKey?: string;
25
+ icon: string;
26
+ };
27
+ //# sourceMappingURL=windowInjected.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowInjected.types.d.ts","sourceRoot":"","sources":["../../src/windowInjected/windowInjected.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
@@ -0,0 +1,150 @@
1
+ const require_package = require('./package-BhNWipax.cjs.js');
2
+ const require_registerEvmNetworkProviderBuilder = require('./registerEvmNetworkProviderBuilder-DDwm5_Df.cjs.js');
3
+ const require_createWalletProviderFromEIP1193Provider = require('./createWalletProviderFromEIP1193Provider-BjFdQbKT.cjs.js');
4
+ let _dynamic_labs_sdk_assert_package_version = require("@dynamic-labs-sdk/assert-package-version");
5
+ let _dynamic_labs_sdk_client_core = require("@dynamic-labs-sdk/client/core");
6
+
7
+ //#region src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts
8
+ const getSpriteIcon = (name$1) => `${_dynamic_labs_sdk_client_core.DYNAMIC_ICONIC_SPRITE_URL}#${name$1}`;
9
+ /**
10
+ * Detects wallet identity from provider flags using hardcoded checks.
11
+ *
12
+ * This is essential for wallet app in-app browsers where the wallet injects
13
+ * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).
14
+ *
15
+ * The order of checks matters - more specific flags should be checked first
16
+ * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).
17
+ *
18
+ * @param params.provider - The EIP-1193 provider to detect
19
+ * @returns Detection result with displayName and icon, or null if unknown
20
+ */
21
+ const detectEvmWalletFromProvider = ({ provider }) => {
22
+ const p = provider;
23
+ if (p.isCoinbaseWallet) return {
24
+ displayName: "Coinbase Wallet",
25
+ icon: getSpriteIcon("coinbasewallet")
26
+ };
27
+ if (p.isBraveWallet) return {
28
+ displayName: "Brave Wallet",
29
+ icon: getSpriteIcon("brave")
30
+ };
31
+ if (p.isPhantom) return {
32
+ displayName: "Phantom",
33
+ icon: getSpriteIcon("phantom")
34
+ };
35
+ if (p.isRabby) return {
36
+ displayName: "Rabby Wallet",
37
+ icon: getSpriteIcon("rabby")
38
+ };
39
+ if (p.isTrust) return {
40
+ displayName: "Trust Wallet",
41
+ icon: getSpriteIcon("trust")
42
+ };
43
+ if (p.isFrame) return {
44
+ displayName: "Frame",
45
+ icon: getSpriteIcon("frame")
46
+ };
47
+ if (p.isOkxWallet) return {
48
+ displayName: "OKX Wallet",
49
+ icon: getSpriteIcon("okx")
50
+ };
51
+ if (p.isZerion) return {
52
+ displayName: "Zerion",
53
+ icon: getSpriteIcon("zerion")
54
+ };
55
+ if (p.isMetaMask) return {
56
+ displayName: "MetaMask",
57
+ icon: getSpriteIcon("metamask")
58
+ };
59
+ return null;
60
+ };
61
+
62
+ //#endregion
63
+ //#region src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts
64
+ const EVM_PROVIDER_LOCATOR = "ethereum";
65
+ /**
66
+ * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.
67
+ *
68
+ * This function collects all injected EVM providers from the window object,
69
+ * handling both single provider and multi-provider (EIP-5749) scenarios.
70
+ *
71
+ * This is particularly important for wallet app in-app browsers (e.g., MetaMask
72
+ * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into
73
+ * window.ethereum rather than announcing via EIP-6963.
74
+ *
75
+ * @returns Array of all detected EIP-1193 providers
76
+ */
77
+ const getEvmInjectedProviders = () => {
78
+ return (0, _dynamic_labs_sdk_client_core.getAllProvidersFromWindow)(EVM_PROVIDER_LOCATOR).filter(isEIP1193Provider);
79
+ };
80
+ const isEIP1193Provider = (provider) => {
81
+ if (typeof provider !== "object" || provider === null) return false;
82
+ return typeof provider.request === "function";
83
+ };
84
+
85
+ //#endregion
86
+ //#region src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts
87
+ const EVM_WINDOW_INJECTED_EXTENSION_KEY = "evmWindowInjected";
88
+ /**
89
+ * Adds the EVM window injected extension to the Dynamic client.
90
+ *
91
+ * This extension enables integration with wallets that are injected into window.ethereum
92
+ * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**
93
+ * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),
94
+ * which typically inject their provider into window.ethereum rather than announcing
95
+ * via EIP-6963.
96
+ *
97
+ * Also useful as a fallback for:
98
+ * - Older browser extension wallets that predate EIP-6963
99
+ * - Safari or certain mobile browsers with limited EIP-6963 support
100
+ *
101
+ * Wallet providers registered via this extension have lower priority than EIP-6963
102
+ * providers, so if a wallet supports both, the EIP-6963 version will be used.
103
+ *
104
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
105
+ */
106
+ const addEvmWindowInjectedExtension = (client = (0, _dynamic_labs_sdk_client_core.getDefaultClient)()) => {
107
+ if ((0, _dynamic_labs_sdk_client_core.hasExtension)({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)) return;
108
+ (0, _dynamic_labs_sdk_client_core.registerExtension)({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);
109
+ require_registerEvmNetworkProviderBuilder.registerEvmNetworkProviderBuilder(client);
110
+ const walletProviderRegistry = (0, _dynamic_labs_sdk_client_core.getWalletProviderRegistry)(client);
111
+ getEvmInjectedProviders().forEach((provider) => {
112
+ const walletInfo = detectEvmWalletFromProvider({ provider });
113
+ if (!walletInfo) return;
114
+ const walletProvider = require_createWalletProviderFromEIP1193Provider.createWalletProviderFromEIP1193Provider({
115
+ displayName: walletInfo.displayName,
116
+ eip1193: provider,
117
+ icon: walletInfo.icon
118
+ }, client);
119
+ walletProviderRegistry.register({
120
+ priority: _dynamic_labs_sdk_client_core.WalletProviderPriority.WINDOW_INJECT,
121
+ walletProvider
122
+ });
123
+ });
124
+ };
125
+
126
+ //#endregion
127
+ //#region src/exports/windowInjected.ts
128
+ /**
129
+ * EVM Window Injected Extension
130
+ *
131
+ * Provides support for wallets that are injected into window.ethereum rather than
132
+ * announcing via EIP-6963. This is primarily needed for **wallet app in-app
133
+ * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase
134
+ * Wallet browser).
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';
139
+ * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';
140
+ *
141
+ * // Add both extensions - EIP-6963 takes priority, window injected is fallback
142
+ * addEIP6963Extension(client);
143
+ * addEvmWindowInjectedExtension(client);
144
+ * ```
145
+ */
146
+ (0, _dynamic_labs_sdk_assert_package_version.assertPackageVersion)(require_package.name, require_package.version);
147
+
148
+ //#endregion
149
+ exports.addEvmWindowInjectedExtension = addEvmWindowInjectedExtension;
150
+ //# sourceMappingURL=windowInjected.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowInjected.cjs.js","names":["DYNAMIC_ICONIC_SPRITE_URL","name","createWalletProviderFromEIP1193Provider","WalletProviderPriority","packageName","packageVersion"],"sources":["../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts","../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts","../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts","../src/exports/windowInjected.ts"],"sourcesContent":["import { DYNAMIC_ICONIC_SPRITE_URL } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\nimport type {\n EvmWalletDetectionResult,\n KnownEvmWalletFlags,\n} from '../../windowInjected.types';\n\ntype ProviderWithFlags = EIP1193Provider & KnownEvmWalletFlags;\n\ntype DetectEvmWalletFromProviderParams = {\n provider: EIP1193Provider;\n};\n\nconst getSpriteIcon = (name: string): string =>\n `${DYNAMIC_ICONIC_SPRITE_URL}#${name}`;\n\n/**\n * Detects wallet identity from provider flags using hardcoded checks.\n *\n * This is essential for wallet app in-app browsers where the wallet injects\n * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).\n *\n * The order of checks matters - more specific flags should be checked first\n * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).\n *\n * @param params.provider - The EIP-1193 provider to detect\n * @returns Detection result with displayName and icon, or null if unknown\n */\nexport const detectEvmWalletFromProvider = ({\n provider,\n}: DetectEvmWalletFromProviderParams): EvmWalletDetectionResult | null => {\n const p = provider as ProviderWithFlags;\n\n // Check more specific flags first to avoid false positives\n // Many wallets set isMetaMask for compatibility, so check their unique flags first\n\n if (p.isCoinbaseWallet) {\n return {\n displayName: 'Coinbase Wallet',\n icon: getSpriteIcon('coinbasewallet'),\n };\n }\n\n if (p.isBraveWallet) {\n return {\n displayName: 'Brave Wallet',\n icon: getSpriteIcon('brave'),\n };\n }\n\n if (p.isPhantom) {\n return {\n displayName: 'Phantom',\n icon: getSpriteIcon('phantom'),\n };\n }\n\n if (p.isRabby) {\n return {\n displayName: 'Rabby Wallet',\n icon: getSpriteIcon('rabby'),\n };\n }\n\n if (p.isTrust) {\n return {\n displayName: 'Trust Wallet',\n icon: getSpriteIcon('trust'),\n };\n }\n\n if (p.isFrame) {\n return {\n displayName: 'Frame',\n icon: getSpriteIcon('frame'),\n };\n }\n\n if (p.isOkxWallet) {\n return {\n displayName: 'OKX Wallet',\n icon: getSpriteIcon('okx'),\n };\n }\n\n if (p.isZerion) {\n return {\n displayName: 'Zerion',\n icon: getSpriteIcon('zerion'),\n };\n }\n\n // MetaMask check comes last because many wallets set isMetaMask for compatibility\n if (p.isMetaMask) {\n return {\n displayName: 'MetaMask',\n icon: getSpriteIcon('metamask'),\n };\n }\n\n // Unknown wallet - don't register\n return null;\n};\n","import { getAllProvidersFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\n\n// eslint-disable-next-line custom-rules/ban-ethereum-eth-terms -- window.ethereum is the standard EIP-1193 injection point\nconst EVM_PROVIDER_LOCATOR = 'ethereum';\n\n/**\n * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.\n *\n * This function collects all injected EVM providers from the window object,\n * handling both single provider and multi-provider (EIP-5749) scenarios.\n *\n * This is particularly important for wallet app in-app browsers (e.g., MetaMask\n * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into\n * window.ethereum rather than announcing via EIP-6963.\n *\n * @returns Array of all detected EIP-1193 providers\n */\nexport const getEvmInjectedProviders = (): EIP1193Provider[] => {\n const providers = getAllProvidersFromWindow<EIP1193Provider>(\n EVM_PROVIDER_LOCATOR\n );\n\n // Filter to only include objects that look like EIP-1193 providers\n return providers.filter(isEIP1193Provider);\n};\n\nconst isEIP1193Provider = (provider: unknown): provider is EIP1193Provider => {\n if (typeof provider !== 'object' || provider === null) {\n return false;\n }\n\n const p = provider as Record<string, unknown>;\n\n // Must have request method - the core EIP-1193 requirement\n return typeof p.request === 'function';\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { detectEvmWalletFromProvider } from '../utils/detectEvmWalletFromProvider';\nimport { getEvmInjectedProviders } from '../utils/getEvmInjectedProviders';\n\nexport const EVM_WINDOW_INJECTED_EXTENSION_KEY = 'evmWindowInjected';\n\n/**\n * Adds the EVM window injected extension to the Dynamic client.\n *\n * This extension enables integration with wallets that are injected into window.ethereum\n * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**\n * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),\n * which typically inject their provider into window.ethereum rather than announcing\n * via EIP-6963.\n *\n * Also useful as a fallback for:\n * - Older browser extension wallets that predate EIP-6963\n * - Safari or certain mobile browsers with limited EIP-6963 support\n *\n * Wallet providers registered via this extension have lower priority than EIP-6963\n * providers, so if a wallet supports both, the EIP-6963 version will be used.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {\n if (\n hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const providers = getEvmInjectedProviders();\n\n providers.forEach((provider) => {\n const walletInfo = detectEvmWalletFromProvider({ provider });\n\n if (!walletInfo) {\n return;\n }\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: walletInfo.displayName,\n eip1193: provider,\n icon: walletInfo.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n","/**\n * EVM Window Injected Extension\n *\n * Provides support for wallets that are injected into window.ethereum rather than\n * announcing via EIP-6963. This is primarily needed for **wallet app in-app\n * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase\n * Wallet browser).\n *\n * @example\n * ```typescript\n * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';\n * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';\n *\n * // Add both extensions - EIP-6963 takes priority, window injected is fallback\n * addEIP6963Extension(client);\n * addEvmWindowInjectedExtension(client);\n * ```\n */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addEvmWindowInjectedExtension } from '../windowInjected/addEvmWindowInjectedExtension';\n"],"mappings":";;;;;;;AAcA,MAAM,iBAAiB,WACrB,GAAGA,wDAA0B,GAAGC;;;;;;;;;;;;;AAclC,MAAa,+BAA+B,EAC1C,eACwE;CACxE,MAAM,IAAI;AAKV,KAAI,EAAE,iBACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,iBAAiB;EACtC;AAGH,KAAI,EAAE,cACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,UACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,UAAU;EAC/B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,YACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,MAAM;EAC3B;AAGH,KAAI,EAAE,SACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,SAAS;EAC9B;AAIH,KAAI,EAAE,WACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,WAAW;EAChC;AAIH,QAAO;;;;;ACjGT,MAAM,uBAAuB;;;;;;;;;;;;;AAc7B,MAAa,gCAAmD;AAM9D,qEAJE,qBACD,CAGgB,OAAO,kBAAkB;;AAG5C,MAAM,qBAAqB,aAAmD;AAC5E,KAAI,OAAO,aAAa,YAAY,aAAa,KAC/C,QAAO;AAMT,QAAO,OAHG,SAGM,YAAY;;;;;ACvB9B,MAAa,oCAAoC;;;;;;;;;;;;;;;;;;;AAoBjD,MAAa,iCAAiC,8DAA2B,KAAK;AAC5E,qDACe,EAAE,cAAc,mCAAmC,EAAE,OAAO,CAEzE;AAGF,sDAAkB,EAAE,cAAc,mCAAmC,EAAE,OAAO;AAC9E,6EAAkC,OAAO;CAEzC,MAAM,sFAAmD,OAAO;AAGhE,CAFkB,yBAAyB,CAEjC,SAAS,aAAa;EAC9B,MAAM,aAAa,4BAA4B,EAAE,UAAU,CAAC;AAE5D,MAAI,CAAC,WACH;EAGF,MAAM,iBAAiBC,wFACrB;GACE,aAAa,WAAW;GACxB,SAAS;GACT,MAAM,WAAW;GAClB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAUC,qDAAuB;GACjC;GACD,CAAC;GACF;;;;;;;;;;;;;;;;;;;;;;;mEC1CiBC,sBAAaC,wBAAe"}
@@ -0,0 +1,150 @@
1
+ import { n as version, t as name } from "./package-Cr7pL-a0.esm.js";
2
+ import { t as registerEvmNetworkProviderBuilder } from "./registerEvmNetworkProviderBuilder-CkGuzJNe.esm.js";
3
+ import { t as createWalletProviderFromEIP1193Provider } from "./createWalletProviderFromEIP1193Provider-BlpJn4oS.esm.js";
4
+ import { assertPackageVersion } from "@dynamic-labs-sdk/assert-package-version";
5
+ import { DYNAMIC_ICONIC_SPRITE_URL, WalletProviderPriority, getAllProvidersFromWindow, getDefaultClient, getWalletProviderRegistry, hasExtension, registerExtension } from "@dynamic-labs-sdk/client/core";
6
+
7
+ //#region src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts
8
+ const getSpriteIcon = (name$1) => `${DYNAMIC_ICONIC_SPRITE_URL}#${name$1}`;
9
+ /**
10
+ * Detects wallet identity from provider flags using hardcoded checks.
11
+ *
12
+ * This is essential for wallet app in-app browsers where the wallet injects
13
+ * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).
14
+ *
15
+ * The order of checks matters - more specific flags should be checked first
16
+ * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).
17
+ *
18
+ * @param params.provider - The EIP-1193 provider to detect
19
+ * @returns Detection result with displayName and icon, or null if unknown
20
+ */
21
+ const detectEvmWalletFromProvider = ({ provider }) => {
22
+ const p = provider;
23
+ if (p.isCoinbaseWallet) return {
24
+ displayName: "Coinbase Wallet",
25
+ icon: getSpriteIcon("coinbasewallet")
26
+ };
27
+ if (p.isBraveWallet) return {
28
+ displayName: "Brave Wallet",
29
+ icon: getSpriteIcon("brave")
30
+ };
31
+ if (p.isPhantom) return {
32
+ displayName: "Phantom",
33
+ icon: getSpriteIcon("phantom")
34
+ };
35
+ if (p.isRabby) return {
36
+ displayName: "Rabby Wallet",
37
+ icon: getSpriteIcon("rabby")
38
+ };
39
+ if (p.isTrust) return {
40
+ displayName: "Trust Wallet",
41
+ icon: getSpriteIcon("trust")
42
+ };
43
+ if (p.isFrame) return {
44
+ displayName: "Frame",
45
+ icon: getSpriteIcon("frame")
46
+ };
47
+ if (p.isOkxWallet) return {
48
+ displayName: "OKX Wallet",
49
+ icon: getSpriteIcon("okx")
50
+ };
51
+ if (p.isZerion) return {
52
+ displayName: "Zerion",
53
+ icon: getSpriteIcon("zerion")
54
+ };
55
+ if (p.isMetaMask) return {
56
+ displayName: "MetaMask",
57
+ icon: getSpriteIcon("metamask")
58
+ };
59
+ return null;
60
+ };
61
+
62
+ //#endregion
63
+ //#region src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts
64
+ const EVM_PROVIDER_LOCATOR = "ethereum";
65
+ /**
66
+ * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.
67
+ *
68
+ * This function collects all injected EVM providers from the window object,
69
+ * handling both single provider and multi-provider (EIP-5749) scenarios.
70
+ *
71
+ * This is particularly important for wallet app in-app browsers (e.g., MetaMask
72
+ * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into
73
+ * window.ethereum rather than announcing via EIP-6963.
74
+ *
75
+ * @returns Array of all detected EIP-1193 providers
76
+ */
77
+ const getEvmInjectedProviders = () => {
78
+ return getAllProvidersFromWindow(EVM_PROVIDER_LOCATOR).filter(isEIP1193Provider);
79
+ };
80
+ const isEIP1193Provider = (provider) => {
81
+ if (typeof provider !== "object" || provider === null) return false;
82
+ return typeof provider.request === "function";
83
+ };
84
+
85
+ //#endregion
86
+ //#region src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts
87
+ const EVM_WINDOW_INJECTED_EXTENSION_KEY = "evmWindowInjected";
88
+ /**
89
+ * Adds the EVM window injected extension to the Dynamic client.
90
+ *
91
+ * This extension enables integration with wallets that are injected into window.ethereum
92
+ * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**
93
+ * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),
94
+ * which typically inject their provider into window.ethereum rather than announcing
95
+ * via EIP-6963.
96
+ *
97
+ * Also useful as a fallback for:
98
+ * - Older browser extension wallets that predate EIP-6963
99
+ * - Safari or certain mobile browsers with limited EIP-6963 support
100
+ *
101
+ * Wallet providers registered via this extension have lower priority than EIP-6963
102
+ * providers, so if a wallet supports both, the EIP-6963 version will be used.
103
+ *
104
+ * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.
105
+ */
106
+ const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {
107
+ if (hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)) return;
108
+ registerExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);
109
+ registerEvmNetworkProviderBuilder(client);
110
+ const walletProviderRegistry = getWalletProviderRegistry(client);
111
+ getEvmInjectedProviders().forEach((provider) => {
112
+ const walletInfo = detectEvmWalletFromProvider({ provider });
113
+ if (!walletInfo) return;
114
+ const walletProvider = createWalletProviderFromEIP1193Provider({
115
+ displayName: walletInfo.displayName,
116
+ eip1193: provider,
117
+ icon: walletInfo.icon
118
+ }, client);
119
+ walletProviderRegistry.register({
120
+ priority: WalletProviderPriority.WINDOW_INJECT,
121
+ walletProvider
122
+ });
123
+ });
124
+ };
125
+
126
+ //#endregion
127
+ //#region src/exports/windowInjected.ts
128
+ /**
129
+ * EVM Window Injected Extension
130
+ *
131
+ * Provides support for wallets that are injected into window.ethereum rather than
132
+ * announcing via EIP-6963. This is primarily needed for **wallet app in-app
133
+ * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase
134
+ * Wallet browser).
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';
139
+ * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';
140
+ *
141
+ * // Add both extensions - EIP-6963 takes priority, window injected is fallback
142
+ * addEIP6963Extension(client);
143
+ * addEvmWindowInjectedExtension(client);
144
+ * ```
145
+ */
146
+ assertPackageVersion(name, version);
147
+
148
+ //#endregion
149
+ export { addEvmWindowInjectedExtension };
150
+ //# sourceMappingURL=windowInjected.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windowInjected.esm.js","names":["name","packageName","packageVersion"],"sources":["../src/windowInjected/utils/detectEvmWalletFromProvider/detectEvmWalletFromProvider.ts","../src/windowInjected/utils/getEvmInjectedProviders/getEvmInjectedProviders.ts","../src/windowInjected/addEvmWindowInjectedExtension/addEvmWindowInjectedExtension.ts","../src/exports/windowInjected.ts"],"sourcesContent":["import { DYNAMIC_ICONIC_SPRITE_URL } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\nimport type {\n EvmWalletDetectionResult,\n KnownEvmWalletFlags,\n} from '../../windowInjected.types';\n\ntype ProviderWithFlags = EIP1193Provider & KnownEvmWalletFlags;\n\ntype DetectEvmWalletFromProviderParams = {\n provider: EIP1193Provider;\n};\n\nconst getSpriteIcon = (name: string): string =>\n `${DYNAMIC_ICONIC_SPRITE_URL}#${name}`;\n\n/**\n * Detects wallet identity from provider flags using hardcoded checks.\n *\n * This is essential for wallet app in-app browsers where the wallet injects\n * its provider with identifying flags (e.g., isMetaMask, isCoinbaseWallet).\n *\n * The order of checks matters - more specific flags should be checked first\n * to avoid false positives (e.g., some MetaMask forks also set isMetaMask).\n *\n * @param params.provider - The EIP-1193 provider to detect\n * @returns Detection result with displayName and icon, or null if unknown\n */\nexport const detectEvmWalletFromProvider = ({\n provider,\n}: DetectEvmWalletFromProviderParams): EvmWalletDetectionResult | null => {\n const p = provider as ProviderWithFlags;\n\n // Check more specific flags first to avoid false positives\n // Many wallets set isMetaMask for compatibility, so check their unique flags first\n\n if (p.isCoinbaseWallet) {\n return {\n displayName: 'Coinbase Wallet',\n icon: getSpriteIcon('coinbasewallet'),\n };\n }\n\n if (p.isBraveWallet) {\n return {\n displayName: 'Brave Wallet',\n icon: getSpriteIcon('brave'),\n };\n }\n\n if (p.isPhantom) {\n return {\n displayName: 'Phantom',\n icon: getSpriteIcon('phantom'),\n };\n }\n\n if (p.isRabby) {\n return {\n displayName: 'Rabby Wallet',\n icon: getSpriteIcon('rabby'),\n };\n }\n\n if (p.isTrust) {\n return {\n displayName: 'Trust Wallet',\n icon: getSpriteIcon('trust'),\n };\n }\n\n if (p.isFrame) {\n return {\n displayName: 'Frame',\n icon: getSpriteIcon('frame'),\n };\n }\n\n if (p.isOkxWallet) {\n return {\n displayName: 'OKX Wallet',\n icon: getSpriteIcon('okx'),\n };\n }\n\n if (p.isZerion) {\n return {\n displayName: 'Zerion',\n icon: getSpriteIcon('zerion'),\n };\n }\n\n // MetaMask check comes last because many wallets set isMetaMask for compatibility\n if (p.isMetaMask) {\n return {\n displayName: 'MetaMask',\n icon: getSpriteIcon('metamask'),\n };\n }\n\n // Unknown wallet - don't register\n return null;\n};\n","import { getAllProvidersFromWindow } from '@dynamic-labs-sdk/client/core';\n\nimport type { EIP1193Provider } from '../../../EvmWalletProvider.types';\n\n// eslint-disable-next-line custom-rules/ban-ethereum-eth-terms -- window.ethereum is the standard EIP-1193 injection point\nconst EVM_PROVIDER_LOCATOR = 'ethereum';\n\n/**\n * Gets all EIP-1193 providers from window.ethereum and window.ethereum.providers.\n *\n * This function collects all injected EVM providers from the window object,\n * handling both single provider and multi-provider (EIP-5749) scenarios.\n *\n * This is particularly important for wallet app in-app browsers (e.g., MetaMask\n * mobile, Trust Wallet, Coinbase Wallet) which inject their provider into\n * window.ethereum rather than announcing via EIP-6963.\n *\n * @returns Array of all detected EIP-1193 providers\n */\nexport const getEvmInjectedProviders = (): EIP1193Provider[] => {\n const providers = getAllProvidersFromWindow<EIP1193Provider>(\n EVM_PROVIDER_LOCATOR\n );\n\n // Filter to only include objects that look like EIP-1193 providers\n return providers.filter(isEIP1193Provider);\n};\n\nconst isEIP1193Provider = (provider: unknown): provider is EIP1193Provider => {\n if (typeof provider !== 'object' || provider === null) {\n return false;\n }\n\n const p = provider as Record<string, unknown>;\n\n // Must have request method - the core EIP-1193 requirement\n return typeof p.request === 'function';\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { detectEvmWalletFromProvider } from '../utils/detectEvmWalletFromProvider';\nimport { getEvmInjectedProviders } from '../utils/getEvmInjectedProviders';\n\nexport const EVM_WINDOW_INJECTED_EXTENSION_KEY = 'evmWindowInjected';\n\n/**\n * Adds the EVM window injected extension to the Dynamic client.\n *\n * This extension enables integration with wallets that are injected into window.ethereum\n * but don't support EIP-6963. The primary use case is **wallet app in-app browsers**\n * (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase Wallet browser),\n * which typically inject their provider into window.ethereum rather than announcing\n * via EIP-6963.\n *\n * Also useful as a fallback for:\n * - Older browser extension wallets that predate EIP-6963\n * - Safari or certain mobile browsers with limited EIP-6963 support\n *\n * Wallet providers registered via this extension have lower priority than EIP-6963\n * providers, so if a wallet supports both, the EIP-6963 version will be used.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n */\nexport const addEvmWindowInjectedExtension = (client = getDefaultClient()) => {\n if (\n hasExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client)\n ) {\n return;\n }\n\n registerExtension({ extensionKey: EVM_WINDOW_INJECTED_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n const providers = getEvmInjectedProviders();\n\n providers.forEach((provider) => {\n const walletInfo = detectEvmWalletFromProvider({ provider });\n\n if (!walletInfo) {\n return;\n }\n\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: walletInfo.displayName,\n eip1193: provider,\n icon: walletInfo.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WINDOW_INJECT,\n walletProvider,\n });\n });\n};\n","/**\n * EVM Window Injected Extension\n *\n * Provides support for wallets that are injected into window.ethereum rather than\n * announcing via EIP-6963. This is primarily needed for **wallet app in-app\n * browsers** (e.g., MetaMask mobile browser, Trust Wallet browser, Coinbase\n * Wallet browser).\n *\n * @example\n * ```typescript\n * import { addEIP6963Extension } from '@dynamic-labs-sdk/evm/eip6963';\n * import { addEvmWindowInjectedExtension } from '@dynamic-labs-sdk/evm/window-injected';\n *\n * // Add both extensions - EIP-6963 takes priority, window injected is fallback\n * addEIP6963Extension(client);\n * addEvmWindowInjectedExtension(client);\n * ```\n */\nimport { assertPackageVersion } from '@dynamic-labs-sdk/assert-package-version';\n\nimport {\n name as packageName,\n version as packageVersion,\n} from '../../package.json';\nassertPackageVersion(packageName, packageVersion);\n\nexport { addEvmWindowInjectedExtension } from '../windowInjected/addEvmWindowInjectedExtension';\n"],"mappings":";;;;;;;AAcA,MAAM,iBAAiB,WACrB,GAAG,0BAA0B,GAAGA;;;;;;;;;;;;;AAclC,MAAa,+BAA+B,EAC1C,eACwE;CACxE,MAAM,IAAI;AAKV,KAAI,EAAE,iBACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,iBAAiB;EACtC;AAGH,KAAI,EAAE,cACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,UACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,UAAU;EAC/B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,QACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,QAAQ;EAC7B;AAGH,KAAI,EAAE,YACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,MAAM;EAC3B;AAGH,KAAI,EAAE,SACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,SAAS;EAC9B;AAIH,KAAI,EAAE,WACJ,QAAO;EACL,aAAa;EACb,MAAM,cAAc,WAAW;EAChC;AAIH,QAAO;;;;;ACjGT,MAAM,uBAAuB;;;;;;;;;;;;;AAc7B,MAAa,gCAAmD;AAM9D,QALkB,0BAChB,qBACD,CAGgB,OAAO,kBAAkB;;AAG5C,MAAM,qBAAqB,aAAmD;AAC5E,KAAI,OAAO,aAAa,YAAY,aAAa,KAC/C,QAAO;AAMT,QAAO,OAHG,SAGM,YAAY;;;;;ACvB9B,MAAa,oCAAoC;;;;;;;;;;;;;;;;;;;AAoBjD,MAAa,iCAAiC,SAAS,kBAAkB,KAAK;AAC5E,KACE,aAAa,EAAE,cAAc,mCAAmC,EAAE,OAAO,CAEzE;AAGF,mBAAkB,EAAE,cAAc,mCAAmC,EAAE,OAAO;AAC9E,mCAAkC,OAAO;CAEzC,MAAM,yBAAyB,0BAA0B,OAAO;AAGhE,CAFkB,yBAAyB,CAEjC,SAAS,aAAa;EAC9B,MAAM,aAAa,4BAA4B,EAAE,UAAU,CAAC;AAE5D,MAAI,CAAC,WACH;EAGF,MAAM,iBAAiB,wCACrB;GACE,aAAa,WAAW;GACxB,SAAS;GACT,MAAM,WAAW;GAClB,EACD,OACD;AAED,yBAAuB,SAAS;GAC9B,UAAU,uBAAuB;GACjC;GACD,CAAC;GACF;;;;;;;;;;;;;;;;;;;;;;;AC1CJ,qBAAqBC,MAAaC,QAAe"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs-sdk/evm",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "module": "./dist/index.esm.js",
@@ -34,15 +34,20 @@
34
34
  "types": "./dist/exports/walletConnect.d.ts",
35
35
  "import": "./dist/walletConnect.esm.js",
36
36
  "default": "./dist/walletConnect.cjs.js"
37
+ },
38
+ "./window-injected": {
39
+ "types": "./dist/exports/windowInjected.d.ts",
40
+ "import": "./dist/windowInjected.esm.js",
41
+ "default": "./dist/windowInjected.cjs.js"
37
42
  }
38
43
  },
39
44
  "dependencies": {
40
- "@dynamic-labs/sdk-api-core": "0.0.860",
45
+ "@dynamic-labs/sdk-api-core": "0.0.864",
41
46
  "@walletconnect/types": "2.21.8",
42
47
  "@walletconnect/utils": "2.21.8",
43
- "@dynamic-labs-sdk/client": "0.5.0",
44
- "@dynamic-labs-sdk/wallet-connect": "0.5.0",
45
- "@dynamic-labs-sdk/assert-package-version": "0.5.0"
48
+ "@dynamic-labs-sdk/assert-package-version": "0.7.0",
49
+ "@dynamic-labs-sdk/client": "0.7.0",
50
+ "@dynamic-labs-sdk/wallet-connect": "0.7.0"
46
51
  },
47
52
  "devDependencies": {
48
53
  "eventemitter3": "5.0.1",
@@ -1 +0,0 @@
1
- {"version":3,"file":"addEIP6963Extension-C9obd5mt.esm.js","names":["addNetwork: AddNetwork","payload: RequestAddChainPayload","getActiveNetworkId: GetActiveNetworkId","switchActiveNetwork: switchActiveNetwork","networkData","chain: Chain","addNetworkWrapped: EvmWalletProvider['addNetwork']","connect: EvmWalletProvider['connect']","viemGetAddress","disconnect: EvmWalletProvider['disconnect']","getConnectedAddresses: EvmWalletProvider['getConnectedAddresses']","signMessage: EvmWalletProvider['signMessage']","chain","terminate: EvmWalletProvider['terminate']"],"sources":["../src/utils/createWalletProviderFromEIP1193Provider/addNetwork/addNetwork.ts","../src/utils/createWalletProviderFromEIP1193Provider/getActiveNetworkId/getActiveNetworkId.ts","../src/utils/createWalletProviderFromEIP1193Provider/isUnrecognizedChainError/isUnrecognizedChainError.ts","../src/utils/createWalletProviderFromEIP1193Provider/switchActiveNetwork/switchActiveNetwork.ts","../src/utils/createWalletProviderFromEIP1193Provider/createWalletProviderFromEIP1193Provider.ts","../src/eip6963/utils/isEip6963Event/isEip6963Event.ts","../src/eip6963/utils/listenForEIP6963ProviderAnnouncement/listenForEIP6963ProviderAnnouncement.ts","../src/eip6963/addEIP6963Extension/addEIP6963Extension.ts"],"sourcesContent":["import type { ExtendParameters } from '@dynamic-labs-sdk/client/core';\nimport { toHex } from 'viem';\n\nimport type {\n EIP1193Provider,\n EvmWalletProvider,\n} from '../../../EvmWalletProvider.types';\n\n// source: https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_addethereumchain/\ntype RequestAddChainPayload = {\n /**\n * An array of one or more URLs pointing to block explorer sites for the chain.\n */\n blockExplorerUrls?: string[];\n /**\n * The chain ID as a 0x-prefixed hexadecimal string, per the eth_chainId method.\n * MetaMask compares this chain ID value with the eth_chainId return value.\n * If these values aren't identical, MetaMask rejects the request.\n */\n chainId: string;\n /**\n * A human-readable name for the chain.\n */\n chainName: string;\n /**\n * An array of one or more URLs pointing to icons that can be used to visually identify the chain.\n */\n iconUrls?: string[];\n /**\n * An object containing information about the native currency of the chain.\n */\n nativeCurrency: {\n /**\n * A non-negative integer representing the number of decimals the native currency uses.\n */\n decimals: number;\n /**\n * A human-readable name of the native currency.\n */\n name: string;\n /**\n * A human-readable symbol of the native currency.\n */\n symbol: string;\n };\n /**\n * An array of one or more URLs pointing to RPC endpoints that can be used to communicate with the chain.\n * At least one item is required.\n */\n rpcUrls: string[];\n};\n\ntype AddNetwork = ExtendParameters<\n EvmWalletProvider['addNetwork'],\n {\n eip1193: EIP1193Provider;\n }\n>;\n\n/**\n * Allows requesting that the eip1193 provider adds a network to its list of available networks.\n */\nexport const addNetwork: AddNetwork = async ({ eip1193, networkData }) => {\n const chainId = toHex(parseInt(networkData.networkId));\n\n const payload: RequestAddChainPayload = {\n blockExplorerUrls: networkData.blockExplorerUrls,\n chainId,\n chainName: networkData.displayName,\n iconUrls: [networkData.iconUrl],\n nativeCurrency: networkData.nativeCurrency,\n rpcUrls: networkData.rpcUrls.http,\n };\n\n await eip1193.request({\n method: 'wallet_addEthereumChain',\n params: [payload],\n });\n};\n","import type {\n EIP1193Provider,\n EvmWalletProvider,\n} from '../../../EvmWalletProvider.types';\n\ntype GetActiveNetworkId = (args: {\n eip1193: EIP1193Provider;\n}) => ReturnType<EvmWalletProvider['getActiveNetworkId']>;\n\nexport const getActiveNetworkId: GetActiveNetworkId = async ({ eip1193 }) => {\n const chainIdHex = (await eip1193.request({\n method: 'eth_chainId',\n params: [],\n })) as string;\n\n return { networkId: `${parseInt(chainIdHex, 16)}` };\n};\n","// Sources:\n// https://docs.metamask.io/wallet/reference/json-rpc-methods/wallet_switchethereumchain/\n// https://docs.metamask.io/guide/rpc-api.html#usage-with-wallet-switchethereumchain\n\nconst isRecord = (value: unknown) =>\n typeof value === 'object' && value !== null;\n\nexport const isUnrecognizedChainError = (error: object) => {\n const isCode4902 = 'code' in error && error.code === 4902;\n\n const hasUnrecognizedChainMessage =\n 'message' in error &&\n typeof error.message === 'string' &&\n error.message.toLowerCase().includes('unrecognized chain');\n\n const isOriginalErrorCode4902 =\n 'data' in error &&\n isRecord(error.data) &&\n 'originalError' in error.data &&\n isRecord(error.data.originalError) &&\n 'code' in error.data.originalError &&\n error.data.originalError.code === 4902;\n\n return isCode4902 || hasUnrecognizedChainMessage || isOriginalErrorCode4902;\n};\n","import {\n type DynamicClient,\n NetworkNotAddedError,\n NetworkSwitchingUnavailableError,\n UnrecognizedNetworkError,\n UserRejectedError,\n getNetworksData,\n} from '@dynamic-labs-sdk/client';\nimport type { ExtendParameters } from '@dynamic-labs-sdk/client/core';\nimport { toHex } from 'viem';\n\nimport type {\n EIP1193Provider,\n EvmWalletProvider,\n} from '../../../EvmWalletProvider.types';\nimport { isUnrecognizedChainError } from '../isUnrecognizedChainError';\n\ntype switchActiveNetwork = ExtendParameters<\n EvmWalletProvider['switchActiveNetwork'],\n {\n client: DynamicClient;\n eip1193: EIP1193Provider;\n walletProviderKey: string;\n }\n>;\n\nexport const switchActiveNetwork: switchActiveNetwork = async ({\n networkId,\n client,\n eip1193,\n walletProviderKey,\n}) => {\n const chainId = toHex(parseInt(networkId));\n\n try {\n await eip1193.request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId }],\n });\n } catch (error) {\n // We declare this error here to DRY it from being created in 2 different points below\n const userRejectedError = new UserRejectedError({\n action: 'switch wallet active network',\n });\n\n if (typeof error === 'string' && error.includes('rejected')) {\n throw userRejectedError;\n }\n\n if (typeof error !== 'object' || error === null) {\n throw error;\n }\n\n if (\n 'details' in error &&\n Array.isArray(error.details) &&\n error.details.includes(\n // eslint-disable-next-line custom-rules/ban-ethereum-eth-terms\n '\"wallet_switchEthereumChain\" not implemented'\n )\n ) {\n throw new NetworkSwitchingUnavailableError({\n originalError: error,\n walletProviderKey,\n });\n }\n\n // Bear in mind: the unrecognized chain error also contains 'rejected' in message,\n // so it needs to be checked for before the rejection error itself.\n if (isUnrecognizedChainError(error)) {\n const networkData = getNetworksData(client).find(\n (networkData) =>\n networkData.networkId === networkId && networkData.chain === 'EVM'\n );\n\n if (!networkData) {\n throw new UnrecognizedNetworkError({\n networkId,\n originalError: error,\n walletProviderKey,\n });\n }\n\n throw new NetworkNotAddedError({\n networkData,\n networkId,\n originalError: error,\n walletProviderKey,\n });\n } else if (\n 'message' in error &&\n typeof error.message === 'string' &&\n error.message.includes('rejected')\n ) {\n throw userRejectedError;\n } else {\n throw error;\n }\n }\n};\n","/* eslint-disable custom-rules/require-client-param */\nimport type { Chain, DynamicClient } from '@dynamic-labs-sdk/client';\nimport {\n createWalletProviderEventEmitter,\n formatWalletProviderGroupKey,\n formatWalletProviderKey,\n} from '@dynamic-labs-sdk/client/core';\nimport { WalletProviderEnum } from '@dynamic-labs/sdk-api-core';\nimport { isHex, getAddress as viemGetAddress } from 'viem';\n\nimport type {\n EIP1193Provider,\n EvmWalletProvider,\n} from '../../EvmWalletProvider.types';\nimport { addNetwork } from './addNetwork';\nimport { getActiveNetworkId } from './getActiveNetworkId/getActiveNetworkId';\nimport { switchActiveNetwork } from './switchActiveNetwork';\n\ntype CreateWalletProviderFromEIP1193ProviderParams = {\n displayName: string;\n eip1193: EIP1193Provider;\n icon: string;\n};\n\nexport const createWalletProviderFromEIP1193Provider = (\n { eip1193, icon, displayName }: CreateWalletProviderFromEIP1193ProviderParams,\n client: DynamicClient\n): EvmWalletProvider => {\n const chain: Chain = 'EVM';\n\n const walletProviderType = WalletProviderEnum.BrowserExtension;\n\n const key = formatWalletProviderKey({\n chain,\n displayName,\n walletProviderType,\n });\n\n const addNetworkWrapped: EvmWalletProvider['addNetwork'] = async ({\n networkData,\n }) => addNetwork({ eip1193, networkData });\n\n const connect: EvmWalletProvider['connect'] = async () => {\n const addresses = (await eip1193.request({\n method: 'eth_requestAccounts',\n params: [],\n })) as string[];\n\n const formattedAddresses = addresses.map((address) =>\n viemGetAddress(address)\n );\n\n return {\n addresses: formattedAddresses.map((address) => ({\n address,\n })),\n };\n };\n\n const disconnect: EvmWalletProvider['disconnect'] = async () => {\n await eip1193.request({\n method: 'wallet_revokePermissions',\n params: [\n {\n eth_accounts: {},\n },\n ],\n });\n };\n\n const getConnectedAddresses: EvmWalletProvider['getConnectedAddresses'] =\n async () => {\n const addresses = (await eip1193.request({\n method: 'eth_accounts',\n params: [],\n })) as string[];\n\n const formattedAddresses = addresses.map((address) =>\n viemGetAddress(address)\n );\n\n return {\n addresses: formattedAddresses,\n };\n };\n\n const signMessage: EvmWalletProvider['signMessage'] = async ({\n message,\n walletAccount,\n }) => {\n const params = [message];\n\n if (walletAccount) {\n params.push(walletAccount.address);\n }\n\n const signedMessage = await eip1193.request({\n method: 'personal_sign',\n params,\n });\n\n return {\n signature: signedMessage as string,\n };\n };\n\n const { getEventEmitter, cleanupEventEmitter } =\n createWalletProviderEventEmitter({\n removeEventListeners: () => {\n eip1193.removeAllListeners();\n },\n\n setupEventListeners: ({\n handleAccountsChanged,\n handleDisconnected,\n handleNetworkChanged,\n }) => {\n eip1193.on('accountsChanged', (addresses) => {\n handleAccountsChanged({ addresses });\n });\n\n eip1193.on('disconnected', () => {\n handleDisconnected();\n });\n\n eip1193.on('chainChanged', (chain) => {\n const networkId = isHex(chain)\n ? parseInt(chain, 16).toString()\n : chain.toString();\n\n handleNetworkChanged({ networkId });\n });\n },\n });\n\n const terminate: EvmWalletProvider['terminate'] = async () => {\n cleanupEventEmitter();\n };\n\n return {\n addNetwork: addNetworkWrapped,\n chain,\n connect,\n disconnect,\n get events() {\n return getEventEmitter();\n },\n getActiveNetworkId: () => getActiveNetworkId({ eip1193 }),\n getConnectedAddresses,\n groupKey: formatWalletProviderGroupKey(displayName),\n key,\n metadata: { displayName, icon },\n request: eip1193.request.bind(eip1193.request),\n signMessage,\n switchActiveNetwork: ({ networkId }) =>\n switchActiveNetwork({\n client,\n eip1193,\n networkId,\n walletProviderKey: key,\n }),\n terminate,\n walletProviderType,\n };\n};\n","import type { Eip6963AnnounceProviderEvent } from '../../eip6963.types';\n\nexport const isEip6963Event = (\n event: unknown\n): event is Eip6963AnnounceProviderEvent =>\n event !== null &&\n event !== undefined &&\n (event as Eip6963AnnounceProviderEvent).type === 'eip6963:announceProvider' &&\n (event as Eip6963AnnounceProviderEvent).detail !== undefined &&\n (event as Eip6963AnnounceProviderEvent).detail !== null;\n","import type { EIP6963ProviderDetail } from '../../eip6963.types';\nimport { isEip6963Event } from '../isEip6963Event';\n\nexport const listenForEIP6963ProviderAnnouncement = (\n onProvider: (providerDetail: EIP6963ProviderDetail) => void,\n /**\n * This feature is only available in the browser\n * so it is fine to use the window directly here.\n *\n * TODO: check with others\n */\n // eslint-disable-next-line no-restricted-globals\n globalWindow = window\n): VoidFunction => {\n const handler = (event: Event) => {\n if (!isEip6963Event(event)) return;\n\n onProvider(event.detail);\n };\n\n globalWindow.addEventListener('eip6963:announceProvider', handler);\n\n globalWindow.dispatchEvent(new Event('eip6963:requestProvider'));\n\n return () => {\n globalWindow.removeEventListener('eip6963:announceProvider', handler);\n };\n};\n","import {\n WalletProviderPriority,\n getDefaultClient,\n getWalletProviderRegistry,\n hasExtension,\n registerExtension,\n} from '@dynamic-labs-sdk/client/core';\n\nimport { registerEvmNetworkProviderBuilder } from '../../registerEvmNetworkProviderBuilder';\nimport { createWalletProviderFromEIP1193Provider } from '../../utils/createWalletProviderFromEIP1193Provider';\nimport { listenForEIP6963ProviderAnnouncement } from './../utils/listenForEIP6963ProviderAnnouncement';\n\nexport const EIP6963_EXTENSION_KEY = 'eip6963';\n\n/**\n * Adds the EIP-6963 extension to the Dynamic client.\n *\n * This extension enables integration with wallets that support EIP-6963,\n * automatically detecting and registering compatible wallets for use with the Dynamic SDK.\n *\n * @param [client] - The Dynamic client instance. Only required when using multiple Dynamic clients.\n * @returns A function that can be used to remove EIP-6963 global event listeners that were added.\n */\nexport const addEIP6963Extension = (client = getDefaultClient()) => {\n if (hasExtension({ extensionKey: EIP6963_EXTENSION_KEY }, client)) {\n return () => {\n // noop\n };\n }\n\n registerExtension({ extensionKey: EIP6963_EXTENSION_KEY }, client);\n registerEvmNetworkProviderBuilder(client);\n\n const walletProviderRegistry = getWalletProviderRegistry(client);\n\n return listenForEIP6963ProviderAnnouncement((detail) => {\n const walletProvider = createWalletProviderFromEIP1193Provider(\n {\n displayName: detail.info.name,\n eip1193: detail.provider,\n icon: detail.info.icon,\n },\n client\n );\n\n walletProviderRegistry.register({\n priority: WalletProviderPriority.WALLET_SELF_ANNOUNCEMENT_STANDARD,\n walletProvider,\n });\n });\n};\n"],"mappings":"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"}