@dynamic-labs/ethereum 0.0.0-exp20240808.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 (81) hide show
  1. package/CHANGELOG.md +3746 -0
  2. package/LICENSE +21 -0
  3. package/README.md +0 -0
  4. package/_virtual/_tslib.cjs +49 -0
  5. package/_virtual/_tslib.js +44 -0
  6. package/package.json +46 -0
  7. package/src/EthWalletConnector.cjs +234 -0
  8. package/src/EthWalletConnector.d.ts +3088 -0
  9. package/src/EthWalletConnector.js +230 -0
  10. package/src/coinbase/coinbase.cjs +98 -0
  11. package/src/coinbase/coinbase.d.ts +22 -0
  12. package/src/coinbase/coinbase.js +94 -0
  13. package/src/coinbase/helpers.cjs +38 -0
  14. package/src/coinbase/helpers.d.ts +3 -0
  15. package/src/coinbase/helpers.js +34 -0
  16. package/src/coinbase/index.d.ts +3 -0
  17. package/src/coinbase/types.d.ts +18 -0
  18. package/src/constants.cjs +8 -0
  19. package/src/constants.d.ts +1 -0
  20. package/src/constants.js +4 -0
  21. package/src/ethProviderHelper.cjs +163 -0
  22. package/src/ethProviderHelper.d.ts +43 -0
  23. package/src/ethProviderHelper.js +159 -0
  24. package/src/index.cjs +49 -0
  25. package/src/index.d.ts +11 -0
  26. package/src/index.js +35 -0
  27. package/src/injected/ExodusEvm.cjs +20 -0
  28. package/src/injected/ExodusEvm.d.ts +8 -0
  29. package/src/injected/ExodusEvm.js +16 -0
  30. package/src/injected/FallbackEvmConnector.cjs +22 -0
  31. package/src/injected/FallbackEvmConnector.d.ts +9 -0
  32. package/src/injected/FallbackEvmConnector.js +18 -0
  33. package/src/injected/InjectedWalletBase.cjs +110 -0
  34. package/src/injected/InjectedWalletBase.d.ts +29 -0
  35. package/src/injected/InjectedWalletBase.js +108 -0
  36. package/src/injected/PhantomEvm.cjs +37 -0
  37. package/src/injected/PhantomEvm.d.ts +8 -0
  38. package/src/injected/PhantomEvm.js +33 -0
  39. package/src/injected/UnknownInjected.cjs +21 -0
  40. package/src/injected/UnknownInjected.d.ts +8 -0
  41. package/src/injected/UnknownInjected.js +17 -0
  42. package/src/injected/fetchInjectedWalletConnectors.cjs +67 -0
  43. package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -0
  44. package/src/injected/fetchInjectedWalletConnectors.js +62 -0
  45. package/src/injected/index.d.ts +5 -0
  46. package/src/polyfills.cjs +17 -0
  47. package/src/polyfills.d.ts +1 -0
  48. package/src/polyfills.js +15 -0
  49. package/src/types.d.ts +33 -0
  50. package/src/utils/findEvmNetwork.cjs +21 -0
  51. package/src/utils/findEvmNetwork.d.ts +6 -0
  52. package/src/utils/findEvmNetwork.js +17 -0
  53. package/src/utils/getNameservice.cjs +46 -0
  54. package/src/utils/getNameservice.d.ts +6 -0
  55. package/src/utils/getNameservice.js +42 -0
  56. package/src/utils/index.d.ts +2 -0
  57. package/src/utils/isEthWalletConnector/index.d.ts +1 -0
  58. package/src/utils/isEthWalletConnector/isEthWalletConnector.cjs +8 -0
  59. package/src/utils/isEthWalletConnector/isEthWalletConnector.d.ts +3 -0
  60. package/src/utils/isEthWalletConnector/isEthWalletConnector.js +4 -0
  61. package/src/utils/isString.d.ts +1 -0
  62. package/src/utils/isUnsupportedProviderError/index.d.ts +1 -0
  63. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -0
  64. package/src/utils/last.d.ts +1 -0
  65. package/src/utils/parseIntSafe.cjs +23 -0
  66. package/src/utils/parseIntSafe.d.ts +1 -0
  67. package/src/utils/parseIntSafe.js +19 -0
  68. package/src/wallet/EthereumWallet.cjs +65 -0
  69. package/src/wallet/EthereumWallet.d.ts +17 -0
  70. package/src/wallet/EthereumWallet.js +61 -0
  71. package/src/wallet/index.d.ts +2 -0
  72. package/src/wallet/isEthereumWallet.cjs +8 -0
  73. package/src/wallet/isEthereumWallet.d.ts +3 -0
  74. package/src/wallet/isEthereumWallet.js +4 -0
  75. package/src/walletConnect/fetchWalletConnectWallets.cjs +30 -0
  76. package/src/walletConnect/fetchWalletConnectWallets.d.ts +6 -0
  77. package/src/walletConnect/fetchWalletConnectWallets.js +25 -0
  78. package/src/walletConnect/index.d.ts +2 -0
  79. package/src/walletConnect/walletConnect.cjs +531 -0
  80. package/src/walletConnect/walletConnect.d.ts +78 -0
  81. package/src/walletConnect/walletConnect.js +522 -0
@@ -0,0 +1,163 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../_virtual/_tslib.cjs');
7
+ var viem = require('viem');
8
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
+ var utils = require('@dynamic-labs/utils');
10
+ var viemUtils = require('@dynamic-labs/viem-utils');
11
+
12
+ class EthProviderHelper {
13
+ constructor(wallet, connector) {
14
+ this.wallet = wallet;
15
+ this.connector = connector;
16
+ }
17
+ getInstalledProvider() {
18
+ const eip6963Config = this.getEip6963Config();
19
+ if (eip6963Config) {
20
+ const eip6963Provider = this.eip6963ProviderLookup(eip6963Config.rdns);
21
+ if (eip6963Provider) {
22
+ return eip6963Provider;
23
+ }
24
+ }
25
+ const config = this.getInjectedConfig();
26
+ if (!config ||
27
+ !config.extensionLocators ||
28
+ !config.extensionLocators.length)
29
+ return undefined;
30
+ return this.installedProviderLookup(config.extensionLocators);
31
+ }
32
+ getEip6963Config() {
33
+ if (!this.wallet || !this.wallet.eip6963Config)
34
+ return;
35
+ return this.wallet.eip6963Config;
36
+ }
37
+ getInjectedConfig() {
38
+ if (!this.wallet || !this.wallet.injectedConfig)
39
+ return;
40
+ const { injectedConfig } = this.wallet;
41
+ return injectedConfig.find((c) => c.chain === 'evm');
42
+ }
43
+ installedProviders() {
44
+ const config = this.getInjectedConfig();
45
+ if (!config)
46
+ return [];
47
+ const providers = [];
48
+ if (config.windowLocations) {
49
+ for (const windowLocation of config.windowLocations) {
50
+ const foundProviders = utils.getProvidersFromWindow(windowLocation);
51
+ if (foundProviders && foundProviders.length)
52
+ providers.push(...foundProviders);
53
+ }
54
+ }
55
+ if (window.ethereum) {
56
+ if (!window.ethereum.providers || !window.ethereum.providers.length) {
57
+ providers.push(window.ethereum);
58
+ }
59
+ else {
60
+ window.ethereum.providers.forEach((p) => providers.push(p));
61
+ }
62
+ }
63
+ return providers;
64
+ }
65
+ installedProviderLookup(extensionLocators) {
66
+ const allInstalledProviders = this.installedProviders();
67
+ return walletConnectorCore.ProviderLookup(allInstalledProviders, extensionLocators);
68
+ }
69
+ eip6963ProviderLookup(rdns) {
70
+ var _a;
71
+ const { providers } = utils.Eip6963ProviderSingleton.get();
72
+ return (_a = providers.find((provider) => { var _a; return ((_a = provider === null || provider === void 0 ? void 0 : provider.info) === null || _a === void 0 ? void 0 : _a.rdns) === rdns; })) === null || _a === void 0 ? void 0 : _a.provider;
73
+ }
74
+ isInstalledHelper() {
75
+ return this.findProvider() !== undefined;
76
+ }
77
+ findProvider() {
78
+ return this.getInstalledProvider();
79
+ }
80
+ findWalletClient(chainId) {
81
+ const provider = this.findProvider();
82
+ if (!provider) {
83
+ return undefined;
84
+ }
85
+ return viem.createWalletClient({
86
+ account: this.connector.getActiveAccount(),
87
+ chain: chainId ? viemUtils.chainsMap[chainId] : this.connector.getActiveChain(),
88
+ transport: viem.custom(provider),
89
+ });
90
+ }
91
+ getAddress() {
92
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
93
+ const client = this.findWalletClient();
94
+ if (!client) {
95
+ return Promise.resolve(undefined);
96
+ }
97
+ return this.getAddressWithProvider(client);
98
+ });
99
+ }
100
+ getAddressWithProvider(client) {
101
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
102
+ try {
103
+ const [lowercaseAddress] = yield client.requestAddresses();
104
+ const publicAddress = viem.getAddress(lowercaseAddress);
105
+ this.connector.setActiveAccount(publicAddress);
106
+ return publicAddress;
107
+ }
108
+ catch (err) {
109
+ walletConnectorCore.logger.error(err);
110
+ return Promise.reject(err);
111
+ }
112
+ });
113
+ }
114
+ signMessage(messageToSign) {
115
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
116
+ const walletAddress = yield this.getAddress();
117
+ if (!walletAddress) {
118
+ return Promise.resolve(undefined);
119
+ }
120
+ const client = this.findWalletClient();
121
+ if (!client) {
122
+ return Promise.resolve(undefined);
123
+ }
124
+ const signedMessage = yield client.signMessage({
125
+ account: walletAddress,
126
+ message: messageToSign,
127
+ });
128
+ return signedMessage;
129
+ });
130
+ }
131
+ _setupEventListeners(walletConnector) {
132
+ const web3Provider = this.findProvider();
133
+ if (!web3Provider) {
134
+ return {
135
+ tearDownEventListeners: () => { },
136
+ };
137
+ }
138
+ const { handleAccountChange, handleChainChange, handleDisconnect } = walletConnectorCore.eventListenerHandlers(walletConnector);
139
+ web3Provider.on('accountsChanged', handleAccountChange);
140
+ web3Provider.on('chainChanged', handleChainChange);
141
+ web3Provider.on('disconnect', handleDisconnect);
142
+ const tearDownEventListeners = () => {
143
+ const web3Provider = this.findProvider();
144
+ if (!web3Provider) {
145
+ return;
146
+ }
147
+ if (handleAccountChange) {
148
+ web3Provider.removeListener('accountsChanged', handleAccountChange);
149
+ }
150
+ if (handleChainChange) {
151
+ web3Provider.removeListener('chainChanged', handleChainChange);
152
+ }
153
+ if (handleDisconnect) {
154
+ web3Provider.removeListener('disconnect', handleDisconnect);
155
+ }
156
+ };
157
+ return {
158
+ tearDownEventListeners,
159
+ };
160
+ }
161
+ }
162
+
163
+ exports.EthProviderHelper = EthProviderHelper;
@@ -0,0 +1,43 @@
1
+ import { Hex, WalletClient, Account, Transport, Chain as ViemChain } from 'viem';
2
+ import { ProviderCondition, WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
+ import { WalletSchema } from '@dynamic-labs/wallet-book';
4
+ import { IEthereum, ExtensionLocator } from './types';
5
+ import { EthWalletConnector } from '.';
6
+ export declare class EthProviderHelper {
7
+ private wallet;
8
+ private connector;
9
+ constructor(wallet: WalletSchema, connector: EthWalletConnector);
10
+ getInstalledProvider(): IEthereum | undefined;
11
+ getEip6963Config(): {
12
+ rdns: string;
13
+ } | undefined;
14
+ getInjectedConfig(): {
15
+ chain: string;
16
+ extensionLocators: {
17
+ value: boolean;
18
+ flag: string;
19
+ }[];
20
+ providerInterface?: string | undefined;
21
+ walletStandard?: {
22
+ features: string[];
23
+ name: string;
24
+ } | undefined;
25
+ walletStandardLocators?: {
26
+ name: string;
27
+ locator: string;
28
+ }[] | undefined;
29
+ windowLocations?: string[] | undefined;
30
+ } | undefined;
31
+ installedProviders(): IEthereum[];
32
+ installedProviderLookup(extensionLocators: Array<ProviderCondition<ExtensionLocator>>): IEthereum | undefined;
33
+ eip6963ProviderLookup(rdns: string): IEthereum | undefined;
34
+ isInstalledHelper(): boolean;
35
+ findProvider(): IEthereum | undefined;
36
+ findWalletClient(chainId?: string): WalletClient<Transport, ViemChain, Account> | undefined;
37
+ getAddress(): Promise<Hex | undefined>;
38
+ getAddressWithProvider(client: WalletClient): Promise<Hex | undefined>;
39
+ signMessage(messageToSign: string): Promise<string | undefined>;
40
+ _setupEventListeners(walletConnector: WalletConnector): {
41
+ tearDownEventListeners: () => void;
42
+ };
43
+ }
@@ -0,0 +1,159 @@
1
+ 'use client'
2
+ import { __awaiter } from '../_virtual/_tslib.js';
3
+ import { createWalletClient, custom, getAddress } from 'viem';
4
+ import { ProviderLookup, eventListenerHandlers, logger } from '@dynamic-labs/wallet-connector-core';
5
+ import { getProvidersFromWindow, Eip6963ProviderSingleton } from '@dynamic-labs/utils';
6
+ import { chainsMap } from '@dynamic-labs/viem-utils';
7
+
8
+ class EthProviderHelper {
9
+ constructor(wallet, connector) {
10
+ this.wallet = wallet;
11
+ this.connector = connector;
12
+ }
13
+ getInstalledProvider() {
14
+ const eip6963Config = this.getEip6963Config();
15
+ if (eip6963Config) {
16
+ const eip6963Provider = this.eip6963ProviderLookup(eip6963Config.rdns);
17
+ if (eip6963Provider) {
18
+ return eip6963Provider;
19
+ }
20
+ }
21
+ const config = this.getInjectedConfig();
22
+ if (!config ||
23
+ !config.extensionLocators ||
24
+ !config.extensionLocators.length)
25
+ return undefined;
26
+ return this.installedProviderLookup(config.extensionLocators);
27
+ }
28
+ getEip6963Config() {
29
+ if (!this.wallet || !this.wallet.eip6963Config)
30
+ return;
31
+ return this.wallet.eip6963Config;
32
+ }
33
+ getInjectedConfig() {
34
+ if (!this.wallet || !this.wallet.injectedConfig)
35
+ return;
36
+ const { injectedConfig } = this.wallet;
37
+ return injectedConfig.find((c) => c.chain === 'evm');
38
+ }
39
+ installedProviders() {
40
+ const config = this.getInjectedConfig();
41
+ if (!config)
42
+ return [];
43
+ const providers = [];
44
+ if (config.windowLocations) {
45
+ for (const windowLocation of config.windowLocations) {
46
+ const foundProviders = getProvidersFromWindow(windowLocation);
47
+ if (foundProviders && foundProviders.length)
48
+ providers.push(...foundProviders);
49
+ }
50
+ }
51
+ if (window.ethereum) {
52
+ if (!window.ethereum.providers || !window.ethereum.providers.length) {
53
+ providers.push(window.ethereum);
54
+ }
55
+ else {
56
+ window.ethereum.providers.forEach((p) => providers.push(p));
57
+ }
58
+ }
59
+ return providers;
60
+ }
61
+ installedProviderLookup(extensionLocators) {
62
+ const allInstalledProviders = this.installedProviders();
63
+ return ProviderLookup(allInstalledProviders, extensionLocators);
64
+ }
65
+ eip6963ProviderLookup(rdns) {
66
+ var _a;
67
+ const { providers } = Eip6963ProviderSingleton.get();
68
+ return (_a = providers.find((provider) => { var _a; return ((_a = provider === null || provider === void 0 ? void 0 : provider.info) === null || _a === void 0 ? void 0 : _a.rdns) === rdns; })) === null || _a === void 0 ? void 0 : _a.provider;
69
+ }
70
+ isInstalledHelper() {
71
+ return this.findProvider() !== undefined;
72
+ }
73
+ findProvider() {
74
+ return this.getInstalledProvider();
75
+ }
76
+ findWalletClient(chainId) {
77
+ const provider = this.findProvider();
78
+ if (!provider) {
79
+ return undefined;
80
+ }
81
+ return createWalletClient({
82
+ account: this.connector.getActiveAccount(),
83
+ chain: chainId ? chainsMap[chainId] : this.connector.getActiveChain(),
84
+ transport: custom(provider),
85
+ });
86
+ }
87
+ getAddress() {
88
+ return __awaiter(this, void 0, void 0, function* () {
89
+ const client = this.findWalletClient();
90
+ if (!client) {
91
+ return Promise.resolve(undefined);
92
+ }
93
+ return this.getAddressWithProvider(client);
94
+ });
95
+ }
96
+ getAddressWithProvider(client) {
97
+ return __awaiter(this, void 0, void 0, function* () {
98
+ try {
99
+ const [lowercaseAddress] = yield client.requestAddresses();
100
+ const publicAddress = getAddress(lowercaseAddress);
101
+ this.connector.setActiveAccount(publicAddress);
102
+ return publicAddress;
103
+ }
104
+ catch (err) {
105
+ logger.error(err);
106
+ return Promise.reject(err);
107
+ }
108
+ });
109
+ }
110
+ signMessage(messageToSign) {
111
+ return __awaiter(this, void 0, void 0, function* () {
112
+ const walletAddress = yield this.getAddress();
113
+ if (!walletAddress) {
114
+ return Promise.resolve(undefined);
115
+ }
116
+ const client = this.findWalletClient();
117
+ if (!client) {
118
+ return Promise.resolve(undefined);
119
+ }
120
+ const signedMessage = yield client.signMessage({
121
+ account: walletAddress,
122
+ message: messageToSign,
123
+ });
124
+ return signedMessage;
125
+ });
126
+ }
127
+ _setupEventListeners(walletConnector) {
128
+ const web3Provider = this.findProvider();
129
+ if (!web3Provider) {
130
+ return {
131
+ tearDownEventListeners: () => { },
132
+ };
133
+ }
134
+ const { handleAccountChange, handleChainChange, handleDisconnect } = eventListenerHandlers(walletConnector);
135
+ web3Provider.on('accountsChanged', handleAccountChange);
136
+ web3Provider.on('chainChanged', handleChainChange);
137
+ web3Provider.on('disconnect', handleDisconnect);
138
+ const tearDownEventListeners = () => {
139
+ const web3Provider = this.findProvider();
140
+ if (!web3Provider) {
141
+ return;
142
+ }
143
+ if (handleAccountChange) {
144
+ web3Provider.removeListener('accountsChanged', handleAccountChange);
145
+ }
146
+ if (handleChainChange) {
147
+ web3Provider.removeListener('chainChanged', handleChainChange);
148
+ }
149
+ if (handleDisconnect) {
150
+ web3Provider.removeListener('disconnect', handleDisconnect);
151
+ }
152
+ };
153
+ return {
154
+ tearDownEventListeners,
155
+ };
156
+ }
157
+ }
158
+
159
+ export { EthProviderHelper };
package/src/index.cjs ADDED
@@ -0,0 +1,49 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ require('./polyfills.cjs');
7
+ var embeddedWalletEvm = require('@dynamic-labs/embedded-wallet-evm');
8
+ var PhantomEvm = require('./injected/PhantomEvm.cjs');
9
+ var ExodusEvm = require('./injected/ExodusEvm.cjs');
10
+ var UnknownInjected = require('./injected/UnknownInjected.cjs');
11
+ var FallbackEvmConnector = require('./injected/FallbackEvmConnector.cjs');
12
+ var fetchInjectedWalletConnectors = require('./injected/fetchInjectedWalletConnectors.cjs');
13
+ require('./walletConnect/walletConnect.cjs');
14
+ var fetchWalletConnectWallets = require('./walletConnect/fetchWalletConnectWallets.cjs');
15
+ var coinbase = require('./coinbase/coinbase.cjs');
16
+ require('@dynamic-labs/rpc-provider-ethereum');
17
+ var EthWalletConnector = require('./EthWalletConnector.cjs');
18
+ var ethProviderHelper = require('./ethProviderHelper.cjs');
19
+ var constants = require('./constants.cjs');
20
+ var isEthWalletConnector = require('./utils/isEthWalletConnector/isEthWalletConnector.cjs');
21
+ var getNameservice = require('./utils/getNameservice.cjs');
22
+ var EthereumWallet = require('./wallet/EthereumWallet.cjs');
23
+ var isEthereumWallet = require('./wallet/isEthereumWallet.cjs');
24
+
25
+ const EthereumWalletConnectors = (props) => [
26
+ ...fetchInjectedWalletConnectors.injectedWalletOverrides,
27
+ ...fetchInjectedWalletConnectors.fetchInjectedWalletConnector(props),
28
+ ...fetchWalletConnectWallets.fetchWalletConnectWallets(props),
29
+ ...embeddedWalletEvm.TurnkeyEVMWalletConnectors(props),
30
+ coinbase.Coinbase,
31
+ UnknownInjected.UnknownInjected,
32
+ FallbackEvmConnector.FallbackEvmConnector,
33
+ fetchWalletConnectWallets.getWalletConnectConnector(),
34
+ ];
35
+
36
+ exports.PhantomEvm = PhantomEvm.PhantomEvm;
37
+ exports.ExodusEvm = ExodusEvm.ExodusEvm;
38
+ exports.UnknownInjected = UnknownInjected.UnknownInjected;
39
+ exports.FallbackEvmConnector = FallbackEvmConnector.FallbackEvmConnector;
40
+ exports.fetchInjectedWalletConnector = fetchInjectedWalletConnectors.fetchInjectedWalletConnector;
41
+ exports.injectedWalletOverrides = fetchInjectedWalletConnectors.injectedWalletOverrides;
42
+ exports.EthWalletConnector = EthWalletConnector.EthWalletConnector;
43
+ exports.EthProviderHelper = ethProviderHelper.EthProviderHelper;
44
+ exports.INFURA_ID = constants.INFURA_ID;
45
+ exports.isEthWalletConnector = isEthWalletConnector.isEthWalletConnector;
46
+ exports.getNameservice = getNameservice.getNameservice;
47
+ exports.EthereumWallet = EthereumWallet.EthereumWallet;
48
+ exports.isEthereumWallet = isEthereumWallet.isEthereumWallet;
49
+ exports.EthereumWalletConnectors = EthereumWalletConnectors;
package/src/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ import './polyfills';
2
+ import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
3
+ import '@dynamic-labs/rpc-provider-ethereum';
4
+ export * from './injected';
5
+ export * from './EthWalletConnector';
6
+ export * from './ethProviderHelper';
7
+ export * from './constants';
8
+ export * from './types';
9
+ export * from './utils';
10
+ export * from './wallet';
11
+ export declare const EthereumWalletConnectors: (props: any) => WalletConnectorConstructor[];
package/src/index.js ADDED
@@ -0,0 +1,35 @@
1
+ 'use client'
2
+ import './polyfills.js';
3
+ import { TurnkeyEVMWalletConnectors } from '@dynamic-labs/embedded-wallet-evm';
4
+ export { PhantomEvm } from './injected/PhantomEvm.js';
5
+ export { ExodusEvm } from './injected/ExodusEvm.js';
6
+ import { UnknownInjected } from './injected/UnknownInjected.js';
7
+ export { UnknownInjected } from './injected/UnknownInjected.js';
8
+ import { FallbackEvmConnector } from './injected/FallbackEvmConnector.js';
9
+ export { FallbackEvmConnector } from './injected/FallbackEvmConnector.js';
10
+ import { injectedWalletOverrides, fetchInjectedWalletConnector } from './injected/fetchInjectedWalletConnectors.js';
11
+ export { fetchInjectedWalletConnector, injectedWalletOverrides } from './injected/fetchInjectedWalletConnectors.js';
12
+ import './walletConnect/walletConnect.js';
13
+ import { fetchWalletConnectWallets, getWalletConnectConnector } from './walletConnect/fetchWalletConnectWallets.js';
14
+ import { Coinbase } from './coinbase/coinbase.js';
15
+ import '@dynamic-labs/rpc-provider-ethereum';
16
+ export { EthWalletConnector } from './EthWalletConnector.js';
17
+ export { EthProviderHelper } from './ethProviderHelper.js';
18
+ export { INFURA_ID } from './constants.js';
19
+ export { isEthWalletConnector } from './utils/isEthWalletConnector/isEthWalletConnector.js';
20
+ export { getNameservice } from './utils/getNameservice.js';
21
+ export { EthereumWallet } from './wallet/EthereumWallet.js';
22
+ export { isEthereumWallet } from './wallet/isEthereumWallet.js';
23
+
24
+ const EthereumWalletConnectors = (props) => [
25
+ ...injectedWalletOverrides,
26
+ ...fetchInjectedWalletConnector(props),
27
+ ...fetchWalletConnectWallets(props),
28
+ ...TurnkeyEVMWalletConnectors(props),
29
+ Coinbase,
30
+ UnknownInjected,
31
+ FallbackEvmConnector,
32
+ getWalletConnectConnector(),
33
+ ];
34
+
35
+ export { EthereumWalletConnectors };
@@ -0,0 +1,20 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var walletBook = require('@dynamic-labs/wallet-book');
7
+ var InjectedWalletBase = require('./InjectedWalletBase.cjs');
8
+
9
+ // leaving ExodusEvm in here due to a backwards compatibility issue with this one wallet and v18
10
+ class ExodusEvm extends InjectedWalletBase {
11
+ constructor(props) {
12
+ super(props);
13
+ this.name = 'ExodusEvm';
14
+ this.overrideKey = 'exodusevm';
15
+ this.walletConnectorFallback = true;
16
+ this.wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
17
+ }
18
+ }
19
+
20
+ exports.ExodusEvm = ExodusEvm;
@@ -0,0 +1,8 @@
1
+ import { EthWalletConnectorOpts } from '..';
2
+ import InjectedWalletBase from './InjectedWalletBase';
3
+ export declare class ExodusEvm extends InjectedWalletBase {
4
+ name: string;
5
+ overrideKey: string;
6
+ walletConnectorFallback: boolean;
7
+ constructor(props: EthWalletConnectorOpts);
8
+ }
@@ -0,0 +1,16 @@
1
+ 'use client'
2
+ import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
3
+ import InjectedWalletBase from './InjectedWalletBase.js';
4
+
5
+ // leaving ExodusEvm in here due to a backwards compatibility issue with this one wallet and v18
6
+ class ExodusEvm extends InjectedWalletBase {
7
+ constructor(props) {
8
+ super(props);
9
+ this.name = 'ExodusEvm';
10
+ this.overrideKey = 'exodusevm';
11
+ this.walletConnectorFallback = true;
12
+ this.wallet = findWalletBookWallet(this.walletBook, this.key);
13
+ }
14
+ }
15
+
16
+ export { ExodusEvm };
@@ -0,0 +1,22 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var walletBook = require('@dynamic-labs/wallet-book');
7
+ var InjectedWalletBase = require('./InjectedWalletBase.cjs');
8
+
9
+ class FallbackEvmConnector extends InjectedWalletBase {
10
+ constructor(props) {
11
+ super(props);
12
+ this.name = 'Fallback Connector';
13
+ this.overrideKey = 'fallbackconnector';
14
+ this.isAvailable = false;
15
+ this.wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
16
+ }
17
+ isInstalledOnBrowser() {
18
+ return false;
19
+ }
20
+ }
21
+
22
+ exports.FallbackEvmConnector = FallbackEvmConnector;
@@ -0,0 +1,9 @@
1
+ import { EthWalletConnectorOpts } from '..';
2
+ import InjectedWalletBase from './InjectedWalletBase';
3
+ export declare class FallbackEvmConnector extends InjectedWalletBase {
4
+ name: string;
5
+ overrideKey: string;
6
+ isAvailable: boolean;
7
+ constructor(props: EthWalletConnectorOpts);
8
+ isInstalledOnBrowser(): boolean;
9
+ }
@@ -0,0 +1,18 @@
1
+ 'use client'
2
+ import { findWalletBookWallet } from '@dynamic-labs/wallet-book';
3
+ import InjectedWalletBase from './InjectedWalletBase.js';
4
+
5
+ class FallbackEvmConnector extends InjectedWalletBase {
6
+ constructor(props) {
7
+ super(props);
8
+ this.name = 'Fallback Connector';
9
+ this.overrideKey = 'fallbackconnector';
10
+ this.isAvailable = false;
11
+ this.wallet = findWalletBookWallet(this.walletBook, this.key);
12
+ }
13
+ isInstalledOnBrowser() {
14
+ return false;
15
+ }
16
+ }
17
+
18
+ export { FallbackEvmConnector };
@@ -0,0 +1,110 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ var _tslib = require('../../_virtual/_tslib.cjs');
5
+ var walletBook = require('@dynamic-labs/wallet-book');
6
+ var utils = require('@dynamic-labs/utils');
7
+ var ethProviderHelper = require('../ethProviderHelper.cjs');
8
+ var EthWalletConnector = require('../EthWalletConnector.cjs');
9
+ var walletConnect = require('../walletConnect/walletConnect.cjs');
10
+
11
+ class InjectedWalletBase extends EthWalletConnector.EthWalletConnector {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.supportedChains = ['ETH', 'EVM'];
15
+ this.connectedChain = 'EVM';
16
+ this.walletConnectorFallback = false;
17
+ }
18
+ getEthProviderHelper() {
19
+ if (!this.wallet) {
20
+ // changing this to findWalletBookWallet so it returns undefined if not found which
21
+ // allows the getEthProviderHelper to return undefined if the wallet is not installed
22
+ this.wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
23
+ }
24
+ if (this.wallet && !this.ethProviderHelper) {
25
+ this.ethProviderHelper = new ethProviderHelper.EthProviderHelper(this.wallet, this);
26
+ }
27
+ // this.ethProviderHelper is undefined if the wallet is not installed or found in walletbook
28
+ return this.ethProviderHelper;
29
+ }
30
+ getMobileOrInstalledWallet() {
31
+ var _a, _b;
32
+ if (!this.wallet) {
33
+ this.wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
34
+ }
35
+ if (this.isInstalledOnBrowser()) {
36
+ return this;
37
+ }
38
+ // this is to handle the case where the user is in a webview.
39
+ // when the user is in a webview, customers should set the deepLinkPreference prop to universal,
40
+ // in which case this condition will be false, and the SDK will use WalletConnect (if available)
41
+ if (((_b = (_a = this.wallet) === null || _a === void 0 ? void 0 : _a.mobile) === null || _b === void 0 ? void 0 : _b.inAppBrowser) &&
42
+ this.mobileExperience === 'in-app-browser' &&
43
+ utils.isMobile()) {
44
+ return this;
45
+ }
46
+ // this is the case where the wallet is not installed on the browser and
47
+ // it does not support WalletConnect. in this case, the SDK will instruct
48
+ // the user to download the wallet extension
49
+ if (!this.walletConnectorFallback) {
50
+ return this;
51
+ }
52
+ return new walletConnect.WalletConnect(Object.assign(Object.assign({}, this.constructorProps), { walletName: this.name }));
53
+ }
54
+ setupEventListeners() {
55
+ const provider = this.getWalletClient();
56
+ if (!provider)
57
+ return;
58
+ const ethProviderHelper = this.getEthProviderHelper();
59
+ if (!ethProviderHelper)
60
+ return;
61
+ const { tearDownEventListeners } = ethProviderHelper._setupEventListeners(this);
62
+ this.teardownEventListeners = tearDownEventListeners;
63
+ }
64
+ getWalletClient(chainId) {
65
+ var _a;
66
+ return (_a = this.getEthProviderHelper()) === null || _a === void 0 ? void 0 : _a.findWalletClient(chainId);
67
+ }
68
+ isInstalledOnBrowser() {
69
+ var _a;
70
+ return ((_a = this.getEthProviderHelper()) === null || _a === void 0 ? void 0 : _a.findProvider()) !== undefined;
71
+ }
72
+ getAddress() {
73
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
74
+ var _a;
75
+ return (_a = this.getEthProviderHelper()) === null || _a === void 0 ? void 0 : _a.getAddress();
76
+ });
77
+ }
78
+ connect() {
79
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
80
+ yield this.getAddress();
81
+ });
82
+ }
83
+ signMessage(messageToSign) {
84
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
85
+ var _a;
86
+ return (_a = this.getEthProviderHelper()) === null || _a === void 0 ? void 0 : _a.signMessage(messageToSign);
87
+ });
88
+ }
89
+ proveOwnership(messageToSign) {
90
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
91
+ return this.signMessage(messageToSign);
92
+ });
93
+ }
94
+ endSession() {
95
+ return _tslib.__awaiter(this, void 0, void 0, function* () {
96
+ // nothing to do on browser-based metamask
97
+ return;
98
+ });
99
+ }
100
+ providerSwitchNetwork(_a) {
101
+ const _super = Object.create(null, {
102
+ providerSwitchNetwork: { get: () => super.providerSwitchNetwork }
103
+ });
104
+ return _tslib.__awaiter(this, arguments, void 0, function* ({ network, provider, }) {
105
+ return _super.providerSwitchNetwork.call(this, { network, provider });
106
+ });
107
+ }
108
+ }
109
+
110
+ module.exports = InjectedWalletBase;