@dynamic-labs/ethereum 0.19.0-alpha.9 → 0.19.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 (110) hide show
  1. package/CHANGELOG.md +292 -0
  2. package/package.json +14 -11
  3. package/src/EthWalletConnector.cjs +189 -193
  4. package/src/EthWalletConnector.d.ts +298 -41
  5. package/src/EthWalletConnector.js +190 -194
  6. package/src/coinbase/client/client.cjs +78 -0
  7. package/src/coinbase/client/client.d.ts +6 -0
  8. package/src/coinbase/client/client.js +71 -0
  9. package/src/coinbase/client/index.d.ts +2 -0
  10. package/src/coinbase/client/types.d.ts +14 -0
  11. package/src/coinbase/coinbase.cjs +71 -0
  12. package/src/coinbase/coinbase.d.ts +535 -0
  13. package/src/coinbase/coinbase.js +67 -0
  14. package/src/coinbase/index.d.ts +3 -0
  15. package/src/constants.d.ts +1 -1
  16. package/src/ethProviderHelper.cjs +129 -127
  17. package/src/ethProviderHelper.d.ts +28 -27
  18. package/src/ethProviderHelper.js +130 -128
  19. package/src/index.cjs +10 -8
  20. package/src/index.d.ts +9 -9
  21. package/src/index.js +10 -7
  22. package/src/injected/BloctoInjected.cjs +5 -5
  23. package/src/injected/BloctoInjected.d.ts +4 -4
  24. package/src/injected/BloctoInjected.js +5 -5
  25. package/src/injected/BraveEvm.cjs +5 -5
  26. package/src/injected/BraveEvm.d.ts +4 -4
  27. package/src/injected/BraveEvm.js +5 -5
  28. package/src/injected/Dawn.cjs +5 -5
  29. package/src/injected/Dawn.d.ts +4 -4
  30. package/src/injected/Dawn.js +5 -5
  31. package/src/injected/ExodusEvm.cjs +6 -6
  32. package/src/injected/ExodusEvm.d.ts +5 -5
  33. package/src/injected/ExodusEvm.js +6 -6
  34. package/src/injected/Frame.cjs +5 -5
  35. package/src/injected/Frame.d.ts +4 -4
  36. package/src/injected/Frame.js +5 -5
  37. package/src/injected/GameStop.cjs +5 -5
  38. package/src/injected/GameStop.d.ts +4 -4
  39. package/src/injected/GameStop.js +5 -5
  40. package/src/injected/InjectedWalletBase.cjs +86 -78
  41. package/src/injected/InjectedWalletBase.d.ts +29 -29
  42. package/src/injected/InjectedWalletBase.js +86 -78
  43. package/src/injected/LegacyInjectedWalletBase.cjs +71 -65
  44. package/src/injected/LegacyInjectedWalletBase.d.ts +24 -24
  45. package/src/injected/LegacyInjectedWalletBase.js +71 -65
  46. package/src/injected/Opera.cjs +5 -5
  47. package/src/injected/Opera.d.ts +4 -4
  48. package/src/injected/Opera.js +5 -5
  49. package/src/injected/PhantomEvm.cjs +27 -27
  50. package/src/injected/PhantomEvm.d.ts +5 -5
  51. package/src/injected/PhantomEvm.js +27 -27
  52. package/src/injected/Rabby.cjs +6 -6
  53. package/src/injected/Rabby.d.ts +5 -5
  54. package/src/injected/Rabby.js +6 -6
  55. package/src/injected/Superb.cjs +5 -5
  56. package/src/injected/Superb.d.ts +4 -4
  57. package/src/injected/Superb.js +5 -5
  58. package/src/injected/Trust.cjs +6 -6
  59. package/src/injected/Trust.d.ts +5 -5
  60. package/src/injected/Trust.js +6 -6
  61. package/src/injected/Zerion.cjs +6 -6
  62. package/src/injected/Zerion.d.ts +5 -5
  63. package/src/injected/Zerion.js +6 -6
  64. package/src/injected/fetchInjectedWalletConnectors.cjs +23 -22
  65. package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -6
  66. package/src/injected/fetchInjectedWalletConnectors.js +23 -22
  67. package/src/injected/index.d.ts +13 -14
  68. package/src/injected/legacyInjectedWallets.cjs +27 -30
  69. package/src/injected/legacyInjectedWallets.d.ts +3 -3
  70. package/src/injected/legacyInjectedWallets.js +27 -30
  71. package/src/legacyEthProviderHelper.cjs +175 -181
  72. package/src/legacyEthProviderHelper.d.ts +34 -33
  73. package/src/legacyEthProviderHelper.js +175 -181
  74. package/src/polyfills.cjs +11 -11
  75. package/src/polyfills.d.ts +1 -1
  76. package/src/polyfills.js +11 -11
  77. package/src/types.d.ts +37 -35
  78. package/src/utils/eventListenerHandlers.cjs +25 -25
  79. package/src/utils/eventListenerHandlers.d.ts +8 -8
  80. package/src/utils/eventListenerHandlers.js +25 -25
  81. package/src/utils/findEvmNetwork.cjs +13 -13
  82. package/src/utils/findEvmNetwork.d.ts +6 -6
  83. package/src/utils/findEvmNetwork.js +13 -13
  84. package/src/utils/isString.d.ts +1 -1
  85. package/src/utils/isUnsupportedProviderError/index.d.ts +1 -1
  86. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +6 -6
  87. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -6
  88. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +6 -6
  89. package/src/utils/last.d.ts +1 -1
  90. package/src/utils/parseIntSafe.cjs +13 -13
  91. package/src/utils/parseIntSafe.d.ts +1 -1
  92. package/src/utils/parseIntSafe.js +13 -13
  93. package/src/walletConnect/client/client.cjs +179 -175
  94. package/src/walletConnect/client/client.d.ts +17 -17
  95. package/src/walletConnect/client/client.js +179 -175
  96. package/src/walletConnect/client/index.d.ts +1 -1
  97. package/src/walletConnect/client/types.d.ts +4 -4
  98. package/src/walletConnect/fetchWalletConnectWallets.cjs +37 -37
  99. package/src/walletConnect/fetchWalletConnectWallets.d.ts +9 -9
  100. package/src/walletConnect/fetchWalletConnectWallets.js +37 -37
  101. package/src/walletConnect/index.d.ts +3 -3
  102. package/src/walletConnect/walletConnect.cjs +131 -129
  103. package/src/walletConnect/walletConnect.d.ts +52 -52
  104. package/src/walletConnect/walletConnect.js +131 -129
  105. package/src/walletConnect/walletConnectV2.cjs +419 -387
  106. package/src/walletConnect/walletConnectV2.d.ts +326 -64
  107. package/src/walletConnect/walletConnectV2.js +420 -388
  108. package/src/injected/MetaMask.cjs +0 -15
  109. package/src/injected/MetaMask.d.ts +0 -5
  110. package/src/injected/MetaMask.js +0 -11
@@ -3,137 +3,139 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _tslib = require('../_virtual/_tslib.cjs');
6
- var ethers = require('ethers');
6
+ var viem = require('viem');
7
7
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
8
  var utils = require('@dynamic-labs/utils');
9
- var isUnsupportedProviderError = require('./utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs');
10
9
  var eventListenerHandlers = require('./utils/eventListenerHandlers.cjs');
11
10
 
12
- class EthProviderHelper {
13
- constructor(wallet) {
14
- this.wallet = wallet;
15
- }
16
- getInstalledProvider() {
17
- const config = this.getInjectedConfig();
18
- if (!config ||
19
- !config.extensionLocators ||
20
- !config.extensionLocators.length)
21
- return undefined;
22
- return this.installedProviderLookup(config.extensionLocators);
23
- }
24
- getInjectedConfig() {
25
- if (!this.wallet || !this.wallet.injectedConfig)
26
- return;
27
- const { injectedConfig } = this.wallet;
28
- return injectedConfig.find((c) => c.chain === 'evm');
29
- }
30
- installedProviders() {
31
- const config = this.getInjectedConfig();
32
- if (!config)
33
- return [];
34
- const providers = [];
35
- if (config.windowLocations) {
36
- for (const windowLocation of config.windowLocations) {
37
- const foundProviders = utils.getPathFromObject(window, windowLocation);
38
- if (foundProviders && foundProviders.length)
39
- providers.push(...foundProviders);
40
- }
41
- }
42
- if (window.ethereum) {
43
- if (!window.ethereum.providers || !window.ethereum.providers.length) {
44
- providers.push(window.ethereum);
45
- }
46
- else {
47
- window.ethereum.providers.forEach((p) => providers.push(p));
48
- }
49
- }
50
- return providers;
51
- }
52
- installedProviderLookup(providerFlags) {
53
- const allInstalledProviders = this.installedProviders();
54
- return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
55
- }
56
- isInstalledHelper() {
57
- return this.findProvider() !== undefined;
58
- }
59
- findProvider() {
60
- const windowReference = this.getInstalledProvider();
61
- try {
62
- return windowReference === undefined
63
- ? undefined
64
- : new ethers.ethers.providers.Web3Provider(windowReference, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
65
- }
66
- catch (err) {
67
- if (isUnsupportedProviderError.isUnsupportedProviderError(err)) {
68
- walletConnectorCore.logger.error(`ETH Provider is not supported ${err.value}`, err);
69
- return;
70
- }
71
- walletConnectorCore.logger.error(`Could not find provider for ${this.wallet.name}`, err);
72
- return undefined;
73
- }
74
- }
75
- fetchPublicAddress() {
76
- return _tslib.__awaiter(this, void 0, void 0, function* () {
77
- const provider = this.findProvider();
78
- if (!provider) {
79
- return Promise.resolve(undefined);
80
- }
81
- return this.fetchPublicAddressWithProvider(provider);
82
- });
83
- }
84
- fetchPublicAddressWithProvider(provider) {
85
- return _tslib.__awaiter(this, void 0, void 0, function* () {
86
- try {
87
- const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
88
- const publicAddress = ethers.utils.getAddress(lowercaseAddress);
89
- return publicAddress;
90
- }
91
- catch (err) {
92
- walletConnectorCore.logger.error(err);
93
- return Promise.reject(err);
94
- }
95
- });
96
- }
97
- signMessage(messageToSign) {
98
- return _tslib.__awaiter(this, void 0, void 0, function* () {
99
- const walletAddress = yield this.fetchPublicAddress();
100
- if (!walletAddress) {
101
- return Promise.resolve(undefined);
102
- }
103
- const provider = this.findProvider();
104
- if (!provider) {
105
- return Promise.resolve(undefined);
106
- }
107
- const signer = provider.getSigner();
108
- const signedMessage = yield signer.signMessage(messageToSign);
109
- return signedMessage;
110
- });
111
- }
112
- _setupEventListeners(walletConnector, web3Provider) {
113
- const externalProvider = web3Provider.provider;
114
- const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers.eventListenerHandlers(walletConnector, web3Provider);
115
- externalProvider.on('accountsChanged', handleAccountChange);
116
- externalProvider.on('chainChanged', handleChainChange);
117
- externalProvider.on('disconnect', handleDisconnect);
118
- const tearDownEventListeners = () => {
119
- if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
120
- return;
121
- }
122
- const externalProvider = web3Provider.provider;
123
- if (handleAccountChange) {
124
- externalProvider.removeListener('accountsChanged', handleAccountChange);
125
- }
126
- if (handleChainChange) {
127
- externalProvider.removeListener('chainChanged', handleChainChange);
128
- }
129
- if (handleDisconnect) {
130
- externalProvider.removeListener('disconnect', handleDisconnect);
131
- }
132
- };
133
- return {
134
- tearDownEventListeners,
135
- };
136
- }
11
+ class EthProviderHelper {
12
+ constructor(wallet) {
13
+ this.wallet = wallet;
14
+ }
15
+ getInstalledProvider() {
16
+ const config = this.getInjectedConfig();
17
+ if (!config ||
18
+ !config.extensionLocators ||
19
+ !config.extensionLocators.length)
20
+ return undefined;
21
+ return this.installedProviderLookup(config.extensionLocators);
22
+ }
23
+ getInjectedConfig() {
24
+ if (!this.wallet || !this.wallet.injectedConfig)
25
+ return;
26
+ const { injectedConfig } = this.wallet;
27
+ return injectedConfig.find((c) => c.chain === 'evm');
28
+ }
29
+ installedProviders() {
30
+ const config = this.getInjectedConfig();
31
+ if (!config)
32
+ return [];
33
+ const providers = [];
34
+ if (config.windowLocations) {
35
+ for (const windowLocation of config.windowLocations) {
36
+ const foundProviders = utils.getProvidersFromWindow(windowLocation);
37
+ if (foundProviders && foundProviders.length)
38
+ providers.push(...foundProviders);
39
+ }
40
+ }
41
+ if (window.ethereum) {
42
+ if (!window.ethereum.providers || !window.ethereum.providers.length) {
43
+ providers.push(window.ethereum);
44
+ }
45
+ else {
46
+ window.ethereum.providers.forEach((p) => providers.push(p));
47
+ }
48
+ }
49
+ return providers;
50
+ }
51
+ installedProviderLookup(providerFlags) {
52
+ const allInstalledProviders = this.installedProviders();
53
+ return walletConnectorCore.ProviderLookup(allInstalledProviders, providerFlags);
54
+ }
55
+ isInstalledHelper() {
56
+ return this.findProvider() !== undefined;
57
+ }
58
+ findProvider() {
59
+ return this.getInstalledProvider();
60
+ }
61
+ findWalletClient() {
62
+ const provider = this.findProvider();
63
+ if (!provider) {
64
+ return undefined;
65
+ }
66
+ return viem.createWalletClient({
67
+ transport: viem.custom(provider),
68
+ });
69
+ }
70
+ fetchPublicAddress() {
71
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
72
+ const client = this.findWalletClient();
73
+ if (!client) {
74
+ return Promise.resolve(undefined);
75
+ }
76
+ return this.fetchPublicAddressWithProvider(client);
77
+ });
78
+ }
79
+ fetchPublicAddressWithProvider(client) {
80
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
81
+ try {
82
+ const [lowercaseAddress] = yield client.requestAddresses();
83
+ const publicAddress = viem.getAddress(lowercaseAddress);
84
+ return publicAddress;
85
+ }
86
+ catch (err) {
87
+ walletConnectorCore.logger.error(err);
88
+ return Promise.reject(err);
89
+ }
90
+ });
91
+ }
92
+ signMessage(messageToSign) {
93
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
94
+ const walletAddress = yield this.fetchPublicAddress();
95
+ if (!walletAddress) {
96
+ return Promise.resolve(undefined);
97
+ }
98
+ const client = this.findWalletClient();
99
+ if (!client) {
100
+ return Promise.resolve(undefined);
101
+ }
102
+ const signedMessage = yield client.signMessage({
103
+ account: walletAddress,
104
+ message: messageToSign,
105
+ });
106
+ return signedMessage;
107
+ });
108
+ }
109
+ _setupEventListeners(walletConnector, publicClient) {
110
+ const web3Provider = this.findProvider();
111
+ if (!web3Provider) {
112
+ return {
113
+ tearDownEventListeners: () => { },
114
+ };
115
+ }
116
+ const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers.eventListenerHandlers(walletConnector, publicClient);
117
+ web3Provider.on('accountsChanged', handleAccountChange);
118
+ web3Provider.on('chainChanged', handleChainChange);
119
+ web3Provider.on('disconnect', handleDisconnect);
120
+ const tearDownEventListeners = () => {
121
+ const web3Provider = this.findProvider();
122
+ if (!web3Provider) {
123
+ return;
124
+ }
125
+ if (handleAccountChange) {
126
+ web3Provider.removeListener('accountsChanged', handleAccountChange);
127
+ }
128
+ if (handleChainChange) {
129
+ web3Provider.removeListener('chainChanged', handleChainChange);
130
+ }
131
+ if (handleDisconnect) {
132
+ web3Provider.removeListener('disconnect', handleDisconnect);
133
+ }
134
+ };
135
+ return {
136
+ tearDownEventListeners,
137
+ };
138
+ }
137
139
  }
138
140
 
139
141
  exports.EthProviderHelper = EthProviderHelper;
@@ -1,27 +1,28 @@
1
- import { ethers } from 'ethers';
2
- import { ProviderCondition, WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
- import { WalletSchema } from '@dynamic-labs/wallet-book';
4
- import { IEthereum, ProviderFlag } from './types';
5
- export declare class EthProviderHelper {
6
- private wallet;
7
- constructor(wallet: WalletSchema);
8
- getInstalledProvider(): IEthereum | undefined;
9
- getInjectedConfig(): {
10
- chain: string;
11
- extensionLocators: {
12
- value: boolean;
13
- flag: string;
14
- }[];
15
- windowLocations?: string[] | undefined;
16
- } | undefined;
17
- installedProviders(): IEthereum[];
18
- installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
19
- isInstalledHelper(): boolean;
20
- findProvider(): ethers.providers.Web3Provider | undefined;
21
- fetchPublicAddress(): Promise<string | undefined>;
22
- fetchPublicAddressWithProvider(provider: ethers.providers.Web3Provider): Promise<string | undefined>;
23
- signMessage(messageToSign: string): Promise<string | undefined>;
24
- _setupEventListeners(walletConnector: WalletConnector, web3Provider: ethers.providers.Web3Provider): {
25
- tearDownEventListeners: () => void;
26
- };
27
- }
1
+ import { Hex, PublicClient, WalletClient } from 'viem';
2
+ import { ProviderCondition, WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
+ import { WalletSchema } from '@dynamic-labs/wallet-book';
4
+ import { IEthereum, ProviderFlag } from './types';
5
+ export declare class EthProviderHelper {
6
+ private wallet;
7
+ constructor(wallet: WalletSchema);
8
+ getInstalledProvider(): IEthereum | undefined;
9
+ getInjectedConfig(): {
10
+ chain: string;
11
+ extensionLocators: {
12
+ value: boolean;
13
+ flag: string;
14
+ }[];
15
+ windowLocations?: string[] | undefined;
16
+ } | undefined;
17
+ installedProviders(): IEthereum[];
18
+ installedProviderLookup(providerFlags: Array<ProviderCondition<ProviderFlag>>): IEthereum | undefined;
19
+ isInstalledHelper(): boolean;
20
+ findProvider(): IEthereum | undefined;
21
+ findWalletClient(): WalletClient | undefined;
22
+ fetchPublicAddress(): Promise<Hex | undefined>;
23
+ fetchPublicAddressWithProvider(client: WalletClient): Promise<Hex | undefined>;
24
+ signMessage(messageToSign: string): Promise<string | undefined>;
25
+ _setupEventListeners(walletConnector: WalletConnector, publicClient: PublicClient): {
26
+ tearDownEventListeners: () => void;
27
+ };
28
+ }
@@ -1,135 +1,137 @@
1
1
  import { __awaiter } from '../_virtual/_tslib.js';
2
- import { ethers, utils } from 'ethers';
2
+ import { createWalletClient, custom, getAddress } from 'viem';
3
3
  import { ProviderLookup, logger } from '@dynamic-labs/wallet-connector-core';
4
- import { getPathFromObject } from '@dynamic-labs/utils';
5
- import { isUnsupportedProviderError } from './utils/isUnsupportedProviderError/isUnsupportedProviderError.js';
4
+ import { getProvidersFromWindow } from '@dynamic-labs/utils';
6
5
  import { eventListenerHandlers } from './utils/eventListenerHandlers.js';
7
6
 
8
- class EthProviderHelper {
9
- constructor(wallet) {
10
- this.wallet = wallet;
11
- }
12
- getInstalledProvider() {
13
- const config = this.getInjectedConfig();
14
- if (!config ||
15
- !config.extensionLocators ||
16
- !config.extensionLocators.length)
17
- return undefined;
18
- return this.installedProviderLookup(config.extensionLocators);
19
- }
20
- getInjectedConfig() {
21
- if (!this.wallet || !this.wallet.injectedConfig)
22
- return;
23
- const { injectedConfig } = this.wallet;
24
- return injectedConfig.find((c) => c.chain === 'evm');
25
- }
26
- installedProviders() {
27
- const config = this.getInjectedConfig();
28
- if (!config)
29
- return [];
30
- const providers = [];
31
- if (config.windowLocations) {
32
- for (const windowLocation of config.windowLocations) {
33
- const foundProviders = getPathFromObject(window, windowLocation);
34
- if (foundProviders && foundProviders.length)
35
- providers.push(...foundProviders);
36
- }
37
- }
38
- if (window.ethereum) {
39
- if (!window.ethereum.providers || !window.ethereum.providers.length) {
40
- providers.push(window.ethereum);
41
- }
42
- else {
43
- window.ethereum.providers.forEach((p) => providers.push(p));
44
- }
45
- }
46
- return providers;
47
- }
48
- installedProviderLookup(providerFlags) {
49
- const allInstalledProviders = this.installedProviders();
50
- return ProviderLookup(allInstalledProviders, providerFlags);
51
- }
52
- isInstalledHelper() {
53
- return this.findProvider() !== undefined;
54
- }
55
- findProvider() {
56
- const windowReference = this.getInstalledProvider();
57
- try {
58
- return windowReference === undefined
59
- ? undefined
60
- : new ethers.providers.Web3Provider(windowReference, 'any'); // https://github.com/ethers-io/ethers.js/discussions/1480
61
- }
62
- catch (err) {
63
- if (isUnsupportedProviderError(err)) {
64
- logger.error(`ETH Provider is not supported ${err.value}`, err);
65
- return;
66
- }
67
- logger.error(`Could not find provider for ${this.wallet.name}`, err);
68
- return undefined;
69
- }
70
- }
71
- fetchPublicAddress() {
72
- return __awaiter(this, void 0, void 0, function* () {
73
- const provider = this.findProvider();
74
- if (!provider) {
75
- return Promise.resolve(undefined);
76
- }
77
- return this.fetchPublicAddressWithProvider(provider);
78
- });
79
- }
80
- fetchPublicAddressWithProvider(provider) {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- try {
83
- const [lowercaseAddress] = yield provider.send('eth_requestAccounts', []);
84
- const publicAddress = utils.getAddress(lowercaseAddress);
85
- return publicAddress;
86
- }
87
- catch (err) {
88
- logger.error(err);
89
- return Promise.reject(err);
90
- }
91
- });
92
- }
93
- signMessage(messageToSign) {
94
- return __awaiter(this, void 0, void 0, function* () {
95
- const walletAddress = yield this.fetchPublicAddress();
96
- if (!walletAddress) {
97
- return Promise.resolve(undefined);
98
- }
99
- const provider = this.findProvider();
100
- if (!provider) {
101
- return Promise.resolve(undefined);
102
- }
103
- const signer = provider.getSigner();
104
- const signedMessage = yield signer.signMessage(messageToSign);
105
- return signedMessage;
106
- });
107
- }
108
- _setupEventListeners(walletConnector, web3Provider) {
109
- const externalProvider = web3Provider.provider;
110
- const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector, web3Provider);
111
- externalProvider.on('accountsChanged', handleAccountChange);
112
- externalProvider.on('chainChanged', handleChainChange);
113
- externalProvider.on('disconnect', handleDisconnect);
114
- const tearDownEventListeners = () => {
115
- if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
116
- return;
117
- }
118
- const externalProvider = web3Provider.provider;
119
- if (handleAccountChange) {
120
- externalProvider.removeListener('accountsChanged', handleAccountChange);
121
- }
122
- if (handleChainChange) {
123
- externalProvider.removeListener('chainChanged', handleChainChange);
124
- }
125
- if (handleDisconnect) {
126
- externalProvider.removeListener('disconnect', handleDisconnect);
127
- }
128
- };
129
- return {
130
- tearDownEventListeners,
131
- };
132
- }
7
+ class EthProviderHelper {
8
+ constructor(wallet) {
9
+ this.wallet = wallet;
10
+ }
11
+ getInstalledProvider() {
12
+ const config = this.getInjectedConfig();
13
+ if (!config ||
14
+ !config.extensionLocators ||
15
+ !config.extensionLocators.length)
16
+ return undefined;
17
+ return this.installedProviderLookup(config.extensionLocators);
18
+ }
19
+ getInjectedConfig() {
20
+ if (!this.wallet || !this.wallet.injectedConfig)
21
+ return;
22
+ const { injectedConfig } = this.wallet;
23
+ return injectedConfig.find((c) => c.chain === 'evm');
24
+ }
25
+ installedProviders() {
26
+ const config = this.getInjectedConfig();
27
+ if (!config)
28
+ return [];
29
+ const providers = [];
30
+ if (config.windowLocations) {
31
+ for (const windowLocation of config.windowLocations) {
32
+ const foundProviders = getProvidersFromWindow(windowLocation);
33
+ if (foundProviders && foundProviders.length)
34
+ providers.push(...foundProviders);
35
+ }
36
+ }
37
+ if (window.ethereum) {
38
+ if (!window.ethereum.providers || !window.ethereum.providers.length) {
39
+ providers.push(window.ethereum);
40
+ }
41
+ else {
42
+ window.ethereum.providers.forEach((p) => providers.push(p));
43
+ }
44
+ }
45
+ return providers;
46
+ }
47
+ installedProviderLookup(providerFlags) {
48
+ const allInstalledProviders = this.installedProviders();
49
+ return ProviderLookup(allInstalledProviders, providerFlags);
50
+ }
51
+ isInstalledHelper() {
52
+ return this.findProvider() !== undefined;
53
+ }
54
+ findProvider() {
55
+ return this.getInstalledProvider();
56
+ }
57
+ findWalletClient() {
58
+ const provider = this.findProvider();
59
+ if (!provider) {
60
+ return undefined;
61
+ }
62
+ return createWalletClient({
63
+ transport: custom(provider),
64
+ });
65
+ }
66
+ fetchPublicAddress() {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const client = this.findWalletClient();
69
+ if (!client) {
70
+ return Promise.resolve(undefined);
71
+ }
72
+ return this.fetchPublicAddressWithProvider(client);
73
+ });
74
+ }
75
+ fetchPublicAddressWithProvider(client) {
76
+ return __awaiter(this, void 0, void 0, function* () {
77
+ try {
78
+ const [lowercaseAddress] = yield client.requestAddresses();
79
+ const publicAddress = getAddress(lowercaseAddress);
80
+ return publicAddress;
81
+ }
82
+ catch (err) {
83
+ logger.error(err);
84
+ return Promise.reject(err);
85
+ }
86
+ });
87
+ }
88
+ signMessage(messageToSign) {
89
+ return __awaiter(this, void 0, void 0, function* () {
90
+ const walletAddress = yield this.fetchPublicAddress();
91
+ if (!walletAddress) {
92
+ return Promise.resolve(undefined);
93
+ }
94
+ const client = this.findWalletClient();
95
+ if (!client) {
96
+ return Promise.resolve(undefined);
97
+ }
98
+ const signedMessage = yield client.signMessage({
99
+ account: walletAddress,
100
+ message: messageToSign,
101
+ });
102
+ return signedMessage;
103
+ });
104
+ }
105
+ _setupEventListeners(walletConnector, publicClient) {
106
+ const web3Provider = this.findProvider();
107
+ if (!web3Provider) {
108
+ return {
109
+ tearDownEventListeners: () => { },
110
+ };
111
+ }
112
+ const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector, publicClient);
113
+ web3Provider.on('accountsChanged', handleAccountChange);
114
+ web3Provider.on('chainChanged', handleChainChange);
115
+ web3Provider.on('disconnect', handleDisconnect);
116
+ const tearDownEventListeners = () => {
117
+ const web3Provider = this.findProvider();
118
+ if (!web3Provider) {
119
+ return;
120
+ }
121
+ if (handleAccountChange) {
122
+ web3Provider.removeListener('accountsChanged', handleAccountChange);
123
+ }
124
+ if (handleChainChange) {
125
+ web3Provider.removeListener('chainChanged', handleChainChange);
126
+ }
127
+ if (handleDisconnect) {
128
+ web3Provider.removeListener('disconnect', handleDisconnect);
129
+ }
130
+ };
131
+ return {
132
+ tearDownEventListeners,
133
+ };
134
+ }
133
135
  }
134
136
 
135
137
  export { EthProviderHelper };
package/src/index.cjs CHANGED
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('./polyfills.cjs');
6
+ var turnkey = require('@dynamic-labs/turnkey');
6
7
  var BloctoInjected = require('./injected/BloctoInjected.cjs');
7
8
  var BraveEvm = require('./injected/BraveEvm.cjs');
8
9
  var Dawn = require('./injected/Dawn.cjs');
9
10
  var ExodusEvm = require('./injected/ExodusEvm.cjs');
10
11
  var Frame = require('./injected/Frame.cjs');
11
12
  var GameStop = require('./injected/GameStop.cjs');
12
- var MetaMask = require('./injected/MetaMask.cjs');
13
13
  var Opera = require('./injected/Opera.cjs');
14
14
  var PhantomEvm = require('./injected/PhantomEvm.cjs');
15
15
  var Trust = require('./injected/Trust.cjs');
@@ -19,7 +19,7 @@ var fetchInjectedWalletConnectors = require('./injected/fetchInjectedWalletConne
19
19
  var legacyInjectedWallets = require('./injected/legacyInjectedWallets.cjs');
20
20
  require('./walletConnect/walletConnectV2.cjs');
21
21
  require('@walletconnect/ethereum-provider');
22
- require('ethers');
22
+ require('viem');
23
23
  require('@dynamic-labs/wallet-connector-core');
24
24
  require('@dynamic-labs/wallet-book');
25
25
  require('@dynamic-labs/utils');
@@ -27,14 +27,17 @@ var EthWalletConnector = require('./EthWalletConnector.cjs');
27
27
  var constants = require('./constants.cjs');
28
28
  require('@walletconnect/client');
29
29
  var fetchWalletConnectWallets = require('./walletConnect/fetchWalletConnectWallets.cjs');
30
+ var coinbase = require('./coinbase/coinbase.cjs');
30
31
  var ethProviderHelper = require('./ethProviderHelper.cjs');
31
32
  var legacyEthProviderHelper = require('./legacyEthProviderHelper.cjs');
32
33
 
33
- const EthereumWalletConnectors = (props) => [
34
- ...legacyInjectedWallets.legacyInjectedWallets,
35
- ...fetchInjectedWalletConnectors.fetchInjectedWalletConnector(props),
36
- ...fetchWalletConnectWallets.fetchWalletConnectWallets(props),
37
- fetchWalletConnectWallets.getWalletConnectConnector(props),
34
+ const EthereumWalletConnectors = (props) => [
35
+ ...legacyInjectedWallets.legacyInjectedWallets,
36
+ ...fetchInjectedWalletConnectors.fetchInjectedWalletConnector(props),
37
+ ...fetchWalletConnectWallets.fetchWalletConnectWallets(props),
38
+ ...turnkey.TurnkeyWalletConnectors(props),
39
+ coinbase.Coinbase,
40
+ fetchWalletConnectWallets.getWalletConnectConnector(props),
38
41
  ];
39
42
 
40
43
  exports.BloctoInjected = BloctoInjected.BloctoInjected;
@@ -43,7 +46,6 @@ exports.Dawn = Dawn.Dawn;
43
46
  exports.ExodusEvm = ExodusEvm.ExodusEvm;
44
47
  exports.Frame = Frame.Frame;
45
48
  exports.GameStop = GameStop.GameStop;
46
- exports.MetaMask = MetaMask.MetaMask;
47
49
  exports.Opera = Opera.Opera;
48
50
  exports.PhantomEvm = PhantomEvm.PhantomEvm;
49
51
  exports.Trust = Trust.Trust;