@dynamic-labs/ethereum 1.0.0-alpha.7 → 1.0.0-alpha.9

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/CHANGELOG.md CHANGED
@@ -1,4 +1,40 @@
1
1
 
2
+ ## [1.0.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.8...v1.0.0-alpha.9) (2023-12-07)
3
+
4
+
5
+ ### ⚠ BREAKING CHANGES
6
+
7
+ * how to migrate
8
+ Whenever you would use the property wallets from the object returned by useDynamicContext, you must now rename it to walletConnectorOptions.
9
+
10
+ ### Features
11
+
12
+ * add support for eip6963 ([#4064](https://github.com/dynamic-labs/DynamicAuth/issues/4064)) ([3f8cf0e](https://github.com/dynamic-labs/DynamicAuth/commit/3f8cf0e4250945f3a331f701d491a308fab5f7b8))
13
+ * allow AA wallets to access owner features ([#4079](https://github.com/dynamic-labs/DynamicAuth/issues/4079)) ([9efc2be](https://github.com/dynamic-labs/DynamicAuth/commit/9efc2bee87ec9193c3682863d72024b3586de724))
14
+ * introduce UserWalletsContext ([#4083](https://github.com/dynamic-labs/DynamicAuth/issues/4083)) ([b9ca7f6](https://github.com/dynamic-labs/DynamicAuth/commit/b9ca7f6b0aff4b3992325b70cc9a903ece445c7f))
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * ensure zero dev provider will receive a signer ([#4084](https://github.com/dynamic-labs/DynamicAuth/issues/4084)) ([f02a540](https://github.com/dynamic-labs/DynamicAuth/commit/f02a54036d39bfc5fb0c262f292acf914e4bd653))
20
+ * render recovery section only when turnkey provider is enabled ([#4093](https://github.com/dynamic-labs/DynamicAuth/issues/4093)) ([5f29bd2](https://github.com/dynamic-labs/DynamicAuth/commit/5f29bd23ccca2e307822377be28396edc7ab1fda))
21
+ * reset selected social provider on logout ([#4078](https://github.com/dynamic-labs/DynamicAuth/issues/4078)) ([85dc611](https://github.com/dynamic-labs/DynamicAuth/commit/85dc611d9c0e733bdb9d316b008bdaa35bcc2a91))
22
+
23
+
24
+ * rename wallets > walletConnectorOptions ([#4086](https://github.com/dynamic-labs/DynamicAuth/issues/4086)) ([10a7795](https://github.com/dynamic-labs/DynamicAuth/commit/10a779567e751469a667095726da52d78facbd57))
25
+
26
+ ## [1.0.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.7...v1.0.0-alpha.8) (2023-12-05)
27
+
28
+
29
+ ### ⚠ BREAKING CHANGES
30
+
31
+ * rename EthereumSmartWalletConnectors to ZeroDevSmartWalletConnectors (#4067)
32
+
33
+
34
+ ### Features
35
+
36
+ * add support for pregenerated wallets + securing them ([#3968](https://github.com/dynamic-labs/DynamicAuth/issues/3968)) ([8212b76](https://github.com/dynamic-labs/DynamicAuth/commit/8212b760ba199bd989e0ba2ad3caf97590db4861))
37
+
2
38
  ## [1.0.0-alpha.7](https://github.com/dynamic-labs/DynamicAuth/compare/v1.0.0-alpha.6...v1.0.0-alpha.7) (2023-12-05)
3
39
 
4
40
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum",
3
- "version": "1.0.0-alpha.7",
3
+ "version": "1.0.0-alpha.9",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -32,12 +32,12 @@
32
32
  "@walletconnect/universal-provider": "2.10.6",
33
33
  "eventemitter3": "5.0.1",
34
34
  "buffer": "6.0.3",
35
- "@dynamic-labs/rpc-providers": "1.0.0-alpha.7",
36
- "@dynamic-labs/turnkey": "1.0.0-alpha.7",
37
- "@dynamic-labs/types": "1.0.0-alpha.7",
38
- "@dynamic-labs/utils": "1.0.0-alpha.7",
39
- "@dynamic-labs/wallet-book": "1.0.0-alpha.7",
40
- "@dynamic-labs/wallet-connector-core": "1.0.0-alpha.7",
35
+ "@dynamic-labs/rpc-providers": "1.0.0-alpha.9",
36
+ "@dynamic-labs/turnkey": "1.0.0-alpha.9",
37
+ "@dynamic-labs/types": "1.0.0-alpha.9",
38
+ "@dynamic-labs/utils": "1.0.0-alpha.9",
39
+ "@dynamic-labs/wallet-book": "1.0.0-alpha.9",
40
+ "@dynamic-labs/wallet-connector-core": "1.0.0-alpha.9",
41
41
  "stream": "0.0.2"
42
42
  },
43
43
  "peerDependencies": {
@@ -30,20 +30,20 @@ export declare class Coinbase extends EthWalletConnector {
30
30
  type: string;
31
31
  uid: string;
32
32
  addChain: (args: import("viem").AddChainParameters) => Promise<void>;
33
- deployContract: <const TAbi extends import("viem").Abi | readonly unknown[], TChainOverride extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<TAbi, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride>) => Promise<`0x${string}`>;
33
+ deployContract: <const TAbi extends import("viem").Abi | readonly unknown[], TChainOverride extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride>) => Promise<`0x${string}`>;
34
34
  getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
35
35
  getChainId: () => Promise<number>;
36
36
  getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
37
- prepareTransactionRequest: <TChainOverride_1 extends import("viem").Chain | undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
37
+ prepareTransactionRequest: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
38
38
  requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
39
39
  requestPermissions: (args: {
40
40
  [x: string]: Record<string, any>;
41
41
  eth_accounts: Record<string, any>;
42
42
  }) => Promise<import("viem").RequestPermissionsReturnType>;
43
43
  sendRawTransaction: (args: import("viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
44
- sendTransaction: <TChainOverride_2 extends import("viem").Chain | undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
44
+ sendTransaction: <TChainOverride_2 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
45
45
  signMessage: (args: import("viem").SignMessageParameters<import("viem").Account | undefined>) => Promise<`0x${string}`>;
46
- signTransaction: <TChainOverride_3 extends import("viem").Chain | undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
46
+ signTransaction: <TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
47
47
  signTypedData: <const TTypedData extends {
48
48
  [x: string]: readonly import("viem").TypedDataParameter[];
49
49
  [x: `string[${string}]`]: undefined;
@@ -254,7 +254,7 @@ export declare class Coinbase extends EthWalletConnector {
254
254
  }, TPrimaryType extends string>(args: import("viem").SignTypedDataParameters<TTypedData, TPrimaryType, import("viem").Account | undefined>) => Promise<`0x${string}`>;
255
255
  switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
256
256
  watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
257
- writeContract: <const TAbi_1 extends import("viem").Abi | readonly unknown[], TFunctionName extends string, TChainOverride_4 extends import("viem").Chain | undefined>(args: import("viem").WriteContractParameters<TAbi_1, TFunctionName, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_4>) => Promise<`0x${string}`>;
257
+ writeContract: <const TAbi_1 extends import("viem").Abi | readonly unknown[], TFunctionName extends string, TChainOverride_4 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_1, TFunctionName, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_4>) => Promise<`0x${string}`>;
258
258
  extend: <const client extends {
259
259
  [x: string]: unknown;
260
260
  account?: undefined;
@@ -268,7 +268,7 @@ export declare class Coinbase extends EthWalletConnector {
268
268
  transport?: undefined;
269
269
  type?: undefined;
270
270
  uid?: undefined;
271
- }>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
271
+ } & Partial<Pick<import("viem").PublicActions, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
272
272
  } | {
273
273
  account: undefined;
274
274
  batch?: {
@@ -287,20 +287,20 @@ export declare class Coinbase extends EthWalletConnector {
287
287
  type: string;
288
288
  uid: string;
289
289
  addChain: (args: import("viem").AddChainParameters) => Promise<void>;
290
- deployContract: <const TAbi_2 extends import("viem").Abi | readonly unknown[], TChainOverride_5 extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<TAbi_2, undefined, undefined, TChainOverride_5>) => Promise<`0x${string}`>;
290
+ deployContract: <const TAbi_2 extends import("viem").Abi | readonly unknown[], TChainOverride_5 extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi_2, undefined, undefined, TChainOverride_5>) => Promise<`0x${string}`>;
291
291
  getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
292
292
  getChainId: () => Promise<number>;
293
293
  getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
294
- prepareTransactionRequest: <TChainOverride_6 extends import("viem").Chain | undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride_6>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
294
+ prepareTransactionRequest: <TChainOverride_6 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride_6>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
295
295
  requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
296
296
  requestPermissions: (args: {
297
297
  [x: string]: Record<string, any>;
298
298
  eth_accounts: Record<string, any>;
299
299
  }) => Promise<import("viem").RequestPermissionsReturnType>;
300
300
  sendRawTransaction: (args: import("viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
301
- sendTransaction: <TChainOverride_7 extends import("viem").Chain | undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_7>) => Promise<`0x${string}`>;
301
+ sendTransaction: <TChainOverride_7 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_7>) => Promise<`0x${string}`>;
302
302
  signMessage: (args: import("viem").SignMessageParameters<undefined>) => Promise<`0x${string}`>;
303
- signTransaction: <TChainOverride_8 extends import("viem").Chain | undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<undefined, undefined, TChainOverride_8>) => Promise<`0x${string}`>;
303
+ signTransaction: <TChainOverride_8 extends import("viem").Chain | undefined = undefined>(args: import("viem/_types/actions/wallet/signTransaction").SignTransactionParameters<undefined, undefined, TChainOverride_8>) => Promise<`0x${string}`>;
304
304
  signTypedData: <const TTypedData_1 extends {
305
305
  [x: string]: readonly import("viem").TypedDataParameter[];
306
306
  [x: `string[${string}]`]: undefined;
@@ -511,7 +511,7 @@ export declare class Coinbase extends EthWalletConnector {
511
511
  }, TPrimaryType_1 extends string>(args: import("viem").SignTypedDataParameters<TTypedData_1, TPrimaryType_1, undefined>) => Promise<`0x${string}`>;
512
512
  switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
513
513
  watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
514
- writeContract: <const TAbi_3 extends import("viem").Abi | readonly unknown[], TFunctionName_1 extends string, TChainOverride_9 extends import("viem").Chain | undefined>(args: import("viem").WriteContractParameters<TAbi_3, TFunctionName_1, undefined, undefined, TChainOverride_9>) => Promise<`0x${string}`>;
514
+ writeContract: <const TAbi_3 extends import("viem").Abi | readonly unknown[], TFunctionName_1 extends string, TChainOverride_9 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_3, TFunctionName_1, undefined, undefined, TChainOverride_9>) => Promise<`0x${string}`>;
515
515
  extend: <const client_1 extends {
516
516
  [x: string]: unknown;
517
517
  account?: undefined;
@@ -525,7 +525,7 @@ export declare class Coinbase extends EthWalletConnector {
525
525
  transport?: undefined;
526
526
  type?: undefined;
527
527
  uid?: undefined;
528
- }>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client_1) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K_1 in keyof client_1]: client_1[K_1]; } & import("viem").WalletActions<undefined, undefined>>;
528
+ } & Partial<Pick<import("viem").PublicActions, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client_1) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K_1 in keyof client_1]: client_1[K_1]; } & import("viem").WalletActions<undefined, undefined>>;
529
529
  } | undefined;
530
530
  isInstalledOnBrowser(): boolean;
531
531
  fetchPublicAddress(opts?: FetchPublicAddressOpts): Promise<string | undefined>;
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const isEip9693Event = (event) => event.type === 'eip6963:announceProvider' &&
6
+ event.detail !== undefined;
7
+ class Eip6963Provider {
8
+ constructor() {
9
+ this.providers = [];
10
+ }
11
+ registerProviders() {
12
+ if (typeof window === 'undefined') {
13
+ return;
14
+ }
15
+ window.addEventListener('eip6963:announceProvider', (event) => {
16
+ if (!isEip9693Event(event)) {
17
+ return;
18
+ }
19
+ this.providers.push(event.detail);
20
+ });
21
+ window.dispatchEvent(new Event('eip6963:requestProvider'));
22
+ }
23
+ }
24
+ class Eip6963ProviderSingleton {
25
+ constructor() {
26
+ this.eip6963Provider = new Eip6963Provider();
27
+ }
28
+ static get() {
29
+ var _a;
30
+ if (!((_a = Eip6963ProviderSingleton.instance) === null || _a === void 0 ? void 0 : _a.eip6963Provider)) {
31
+ Eip6963ProviderSingleton.instance = new Eip6963ProviderSingleton();
32
+ Eip6963ProviderSingleton.instance.eip6963Provider.registerProviders();
33
+ }
34
+ return Eip6963ProviderSingleton.instance.eip6963Provider;
35
+ }
36
+ }
37
+
38
+ exports.Eip6963Provider = Eip6963Provider;
39
+ exports.Eip6963ProviderSingleton = Eip6963ProviderSingleton;
@@ -0,0 +1,25 @@
1
+ import { IEthereum } from './types';
2
+ /**
3
+ * Represents the assets needed to display a wallet
4
+ */
5
+ type Eip6963ProviderInfo = {
6
+ uuid: string;
7
+ name: string;
8
+ icon: string;
9
+ rdns: string;
10
+ };
11
+ type Eip6963ProviderDetail = {
12
+ info: Eip6963ProviderInfo;
13
+ provider: IEthereum;
14
+ };
15
+ export declare class Eip6963Provider {
16
+ providers: Eip6963ProviderDetail[];
17
+ registerProviders(): void;
18
+ }
19
+ export declare class Eip6963ProviderSingleton {
20
+ readonly eip6963Provider: Eip6963Provider;
21
+ private constructor();
22
+ private static instance;
23
+ static get(): Eip6963Provider;
24
+ }
25
+ export {};
@@ -0,0 +1,34 @@
1
+ const isEip9693Event = (event) => event.type === 'eip6963:announceProvider' &&
2
+ event.detail !== undefined;
3
+ class Eip6963Provider {
4
+ constructor() {
5
+ this.providers = [];
6
+ }
7
+ registerProviders() {
8
+ if (typeof window === 'undefined') {
9
+ return;
10
+ }
11
+ window.addEventListener('eip6963:announceProvider', (event) => {
12
+ if (!isEip9693Event(event)) {
13
+ return;
14
+ }
15
+ this.providers.push(event.detail);
16
+ });
17
+ window.dispatchEvent(new Event('eip6963:requestProvider'));
18
+ }
19
+ }
20
+ class Eip6963ProviderSingleton {
21
+ constructor() {
22
+ this.eip6963Provider = new Eip6963Provider();
23
+ }
24
+ static get() {
25
+ var _a;
26
+ if (!((_a = Eip6963ProviderSingleton.instance) === null || _a === void 0 ? void 0 : _a.eip6963Provider)) {
27
+ Eip6963ProviderSingleton.instance = new Eip6963ProviderSingleton();
28
+ Eip6963ProviderSingleton.instance.eip6963Provider.registerProviders();
29
+ }
30
+ return Eip6963ProviderSingleton.instance.eip6963Provider;
31
+ }
32
+ }
33
+
34
+ export { Eip6963Provider, Eip6963ProviderSingleton };
@@ -7,12 +7,20 @@ var viem = require('viem');
7
7
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
8
  var utils = require('@dynamic-labs/utils');
9
9
  var eventListenerHandlers = require('./utils/eventListenerHandlers.cjs');
10
+ var eip6963Provider = require('./eip6963Provider.cjs');
10
11
 
11
12
  class EthProviderHelper {
12
13
  constructor(wallet) {
13
14
  this.wallet = wallet;
14
15
  }
15
16
  getInstalledProvider() {
17
+ const eip6963Config = this.getEip6963Config();
18
+ if (eip6963Config) {
19
+ const eip6963Provider = this.eip6963ProviderLookup(eip6963Config.rdns);
20
+ if (eip6963Provider) {
21
+ return eip6963Provider;
22
+ }
23
+ }
16
24
  const config = this.getInjectedConfig();
17
25
  if (!config ||
18
26
  !config.extensionLocators ||
@@ -20,6 +28,11 @@ class EthProviderHelper {
20
28
  return undefined;
21
29
  return this.installedProviderLookup(config.extensionLocators);
22
30
  }
31
+ getEip6963Config() {
32
+ if (!this.wallet || !this.wallet.eip6963Config)
33
+ return;
34
+ return this.wallet.eip6963Config;
35
+ }
23
36
  getInjectedConfig() {
24
37
  if (!this.wallet || !this.wallet.injectedConfig)
25
38
  return;
@@ -52,6 +65,11 @@ class EthProviderHelper {
52
65
  const allInstalledProviders = this.installedProviders();
53
66
  return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
54
67
  }
68
+ eip6963ProviderLookup(rdns) {
69
+ var _a;
70
+ const { providers } = eip6963Provider.Eip6963ProviderSingleton.get();
71
+ return (_a = providers.find((provider) => provider.info.rdns === rdns)) === null || _a === void 0 ? void 0 : _a.provider;
72
+ }
55
73
  isInstalledHelper() {
56
74
  return this.findProvider() !== undefined;
57
75
  }
@@ -6,6 +6,9 @@ export declare class EthProviderHelper {
6
6
  private wallet;
7
7
  constructor(wallet: WalletSchema);
8
8
  getInstalledProvider(): IEthereum | undefined;
9
+ getEip6963Config(): {
10
+ rdns: string;
11
+ } | undefined;
9
12
  getInjectedConfig(): {
10
13
  chain: string;
11
14
  extensionLocators: {
@@ -16,6 +19,7 @@ export declare class EthProviderHelper {
16
19
  } | undefined;
17
20
  installedProviders(): IEthereum[];
18
21
  installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
22
+ eip6963ProviderLookup(rdns: string): IEthereum | undefined;
19
23
  isInstalledHelper(): boolean;
20
24
  findProvider(): IEthereum | undefined;
21
25
  findWalletClient(): WalletClient | undefined;
@@ -3,12 +3,20 @@ import { createWalletClient, custom, getAddress } from 'viem';
3
3
  import { ProviderLookup, logger } from '@dynamic-labs/wallet-connector-core';
4
4
  import { getProvidersFromWindow } from '@dynamic-labs/utils';
5
5
  import { eventListenerHandlers } from './utils/eventListenerHandlers.js';
6
+ import { Eip6963ProviderSingleton } from './eip6963Provider.js';
6
7
 
7
8
  class EthProviderHelper {
8
9
  constructor(wallet) {
9
10
  this.wallet = wallet;
10
11
  }
11
12
  getInstalledProvider() {
13
+ const eip6963Config = this.getEip6963Config();
14
+ if (eip6963Config) {
15
+ const eip6963Provider = this.eip6963ProviderLookup(eip6963Config.rdns);
16
+ if (eip6963Provider) {
17
+ return eip6963Provider;
18
+ }
19
+ }
12
20
  const config = this.getInjectedConfig();
13
21
  if (!config ||
14
22
  !config.extensionLocators ||
@@ -16,6 +24,11 @@ class EthProviderHelper {
16
24
  return undefined;
17
25
  return this.installedProviderLookup(config.extensionLocators);
18
26
  }
27
+ getEip6963Config() {
28
+ if (!this.wallet || !this.wallet.eip6963Config)
29
+ return;
30
+ return this.wallet.eip6963Config;
31
+ }
19
32
  getInjectedConfig() {
20
33
  if (!this.wallet || !this.wallet.injectedConfig)
21
34
  return;
@@ -48,6 +61,11 @@ class EthProviderHelper {
48
61
  const allInstalledProviders = this.installedProviders();
49
62
  return ProviderLookup(allInstalledProviders, providerFlags);
50
63
  }
64
+ eip6963ProviderLookup(rdns) {
65
+ var _a;
66
+ const { providers } = Eip6963ProviderSingleton.get();
67
+ return (_a = providers.find((provider) => provider.info.rdns === rdns)) === null || _a === void 0 ? void 0 : _a.provider;
68
+ }
51
69
  isInstalledHelper() {
52
70
  return this.findProvider() !== undefined;
53
71
  }