@dynamic-labs/multi-wallet 0.16.12-viem.1 → 0.16.13

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 (58) hide show
  1. package/CHANGELOG.md +13 -3
  2. package/package.json +4 -4
  3. package/src/errors.cjs +2 -1
  4. package/src/errors.d.ts +6 -2
  5. package/src/errors.js +2 -1
  6. package/src/multi-wallet.cjs +4 -3
  7. package/src/multi-wallet.js +4 -3
  8. package/src/rpcProviders.cjs +2 -6
  9. package/src/rpcProviders.js +2 -6
  10. package/src/types.d.ts +8 -16
  11. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs +54 -0
  12. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +3 -0
  13. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js +50 -0
  14. package/src/utils/assignConfirmationScreenToProvider/index.d.ts +1 -0
  15. package/src/utils/isFunction/isFunction.cjs +8 -0
  16. package/src/utils/isFunction/isFunction.js +4 -0
  17. package/src/utils/message.cjs +2 -2
  18. package/src/utils/message.js +1 -1
  19. package/src/wallets/algorand/myalgo.d.ts +2 -1
  20. package/src/wallets/clients/coinbase/coinbase.cjs +2 -2
  21. package/src/wallets/clients/coinbase/coinbase.js +2 -2
  22. package/src/wallets/clients/walletConnect/walletConnect.cjs +5 -9
  23. package/src/wallets/clients/walletConnect/walletConnect.d.ts +2 -2
  24. package/src/wallets/clients/walletConnect/walletConnect.js +5 -9
  25. package/src/wallets/ethereum/BloctoEvm.cjs +140 -0
  26. package/src/wallets/ethereum/BloctoEvm.d.ts +2 -4
  27. package/src/wallets/ethereum/BloctoEvm.js +134 -0
  28. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.cjs +37 -5
  29. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.d.ts +3 -0
  30. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.js +37 -5
  31. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +14 -35
  32. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +4 -4
  33. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +14 -35
  34. package/src/wallets/ethereum/coinbase.cjs +7 -18
  35. package/src/wallets/ethereum/coinbase.d.ts +2 -750
  36. package/src/wallets/ethereum/coinbase.js +7 -18
  37. package/src/wallets/ethereum/ethProvider.cjs +29 -13
  38. package/src/wallets/ethereum/ethProvider.d.ts +7 -7
  39. package/src/wallets/ethereum/ethProvider.js +29 -13
  40. package/src/wallets/ethereum/ethProviderHelper.cjs +34 -52
  41. package/src/wallets/ethereum/ethProviderHelper.d.ts +20 -20
  42. package/src/wallets/ethereum/ethProviderHelper.js +34 -52
  43. package/src/wallets/ethereum/fortmatic.cjs +7 -15
  44. package/src/wallets/ethereum/fortmatic.d.ts +3 -5
  45. package/src/wallets/ethereum/fortmatic.js +7 -15
  46. package/src/wallets/ethereum/meta-mask.cjs +2 -13
  47. package/src/wallets/ethereum/meta-mask.d.ts +3 -752
  48. package/src/wallets/ethereum/meta-mask.js +2 -13
  49. package/src/wallets/walletConnect/walletConnect.cjs +6 -8
  50. package/src/wallets/walletConnect/walletConnect.d.ts +4 -751
  51. package/src/wallets/walletConnect/walletConnect.js +6 -8
  52. package/src/wallets/walletConnect/walletConnectV2.cjs +7 -11
  53. package/src/wallets/walletConnect/walletConnectV2.d.ts +4 -751
  54. package/src/wallets/walletConnect/walletConnectV2.js +7 -11
  55. package/src/wallets/window.d.ts +1 -3
  56. package/src/getOrMapViemChain.cjs +0 -77
  57. package/src/getOrMapViemChain.d.ts +0 -11
  58. package/src/getOrMapViemChain.js +0 -51
@@ -0,0 +1,140 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var BloctoSDK = require('@blocto/sdk');
5
+ var ethers = require('ethers');
6
+ var normalizeWalletName = require('../../utils/normalizeWalletName/normalizeWalletName.cjs');
7
+ var logger = require('../../utils/logger.cjs');
8
+ var ethProvider = require('./ethProvider.cjs');
9
+ var ethProviderHelper = require('./ethProviderHelper.cjs');
10
+
11
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
+
13
+ var BloctoSDK__default = /*#__PURE__*/_interopDefaultLegacy(BloctoSDK);
14
+
15
+ class BloctoEvm extends ethProvider.EthProvider {
16
+ constructor({ evmNetworks }) {
17
+ var _a, _b;
18
+ // Taken from : https://docs.blocto.app/blocto-sdk/javascript-sdk/evm-sdk/provider
19
+ const BLOCTO_SUPPORTED_CHAIN_IDS = [1, 4, 56, 97, 137, 80001, 43114, 43113];
20
+ const bloctoSupportedNetworks = evmNetworks.filter((n) => BLOCTO_SUPPORTED_CHAIN_IDS.includes(n.chainId));
21
+ super({ evmNetworks: bloctoSupportedNetworks });
22
+ this.LOCAL_STORAGE_KEY = 'dynamic_blocto_evm_chain_id';
23
+ this.name = 'bloctoevm';
24
+ this.canConnectViaQrCode = false;
25
+ this.canConnectViaCustodialService = true;
26
+ this.isWalletConnect = false;
27
+ this.connectedChain = 'EVM';
28
+ this.supportedChains = ['EVM', 'ETH'];
29
+ this.ethProviderHelper = new ethProviderHelper.EthProviderHelper();
30
+ this.supportsNetworkSwitching = () => false;
31
+ this.chainId =
32
+ Number(localStorage.getItem(this.LOCAL_STORAGE_KEY)) ||
33
+ ((_a = bloctoSupportedNetworks.find((n) => n.chainId === 137)) === null || _a === void 0 ? void 0 : _a.chainId) ||
34
+ ((_b = bloctoSupportedNetworks[0]) === null || _b === void 0 ? void 0 : _b.chainId);
35
+ }
36
+ get key() {
37
+ return normalizeWalletName.normalizeWalletName(this.name);
38
+ }
39
+ getClient() {
40
+ if (!this.client) {
41
+ const network = this.evmNetworks.find((n) => n.chainId === this.chainId);
42
+ if (network) {
43
+ this.client = new BloctoSDK__default["default"]({
44
+ ethereum: {
45
+ chainId: `0x${this.chainId.toString(16)}`,
46
+ rpc: network.rpcUrls[0],
47
+ },
48
+ });
49
+ }
50
+ else {
51
+ logger.logger.error("Couldn't find a configured network for Blocto EVM");
52
+ }
53
+ }
54
+ return this.client;
55
+ }
56
+ getWeb3Provider() {
57
+ const client = this.getClient();
58
+ // If there are no accounts yet, we shouldn't wrap the provider in ethers
59
+ if (client && client.ethereum && client.ethereum.accounts.length > 0) {
60
+ return new ethers.ethers.providers.Web3Provider(client.ethereum);
61
+ }
62
+ else {
63
+ return undefined;
64
+ }
65
+ }
66
+ // We are calling the client directly and not via Web3Provider because if we will wrap it in Ethers,
67
+ // Ethers will be making retries on failure. This becomes an issue on the connect step.
68
+ // When Blocto's modal closes prior to receiving a response with the address on the connect step,
69
+ // then ethers would retry and the modal will open again.
70
+ fetchPublicAddress() {
71
+ return tslib.__awaiter(this, void 0, void 0, function* () {
72
+ try {
73
+ const client = this.getClient();
74
+ if (client && client.ethereum) {
75
+ const addresses = yield client.ethereum.request({
76
+ method: 'eth_requestAccounts',
77
+ });
78
+ if (addresses.length > 0) {
79
+ return addresses[0];
80
+ }
81
+ }
82
+ return undefined;
83
+ }
84
+ catch (e) {
85
+ logger.logger.error(e);
86
+ return Promise.reject(e);
87
+ }
88
+ });
89
+ }
90
+ connect() {
91
+ return tslib.__awaiter(this, void 0, void 0, function* () {
92
+ yield this.fetchPublicAddress();
93
+ });
94
+ }
95
+ isInstalledOnBrowser() {
96
+ return false;
97
+ }
98
+ proveOwnership(messageToSign) {
99
+ return this.signMessage(messageToSign);
100
+ }
101
+ signMessage(messageToSign) {
102
+ return tslib.__awaiter(this, void 0, void 0, function* () {
103
+ try {
104
+ const signer = yield this.getSigner();
105
+ return yield (signer === null || signer === void 0 ? void 0 : signer.signMessage(messageToSign));
106
+ }
107
+ catch (e) {
108
+ if (e.message === 'User declined the signing request') {
109
+ return Promise.reject({ code: '4001' });
110
+ }
111
+ else {
112
+ return Promise.reject(e);
113
+ }
114
+ }
115
+ });
116
+ }
117
+ endSession() {
118
+ return tslib.__awaiter(this, void 0, void 0, function* () {
119
+ const client = this.getClient();
120
+ localStorage.removeItem('sdk.session');
121
+ if (client && client.ethereum && client.ethereum.accounts.length > 0) {
122
+ yield client.ethereum.request({ method: 'wallet_disconnect' });
123
+ }
124
+ });
125
+ }
126
+ // *********************
127
+ // Unimplemented methods
128
+ // *********************
129
+ switchNetwork() {
130
+ return Promise.resolve();
131
+ }
132
+ setupEventListeners() {
133
+ return;
134
+ }
135
+ teardownEventListeners() {
136
+ return;
137
+ }
138
+ }
139
+
140
+ module.exports = BloctoEvm;
@@ -1,4 +1,4 @@
1
- import { WalletClient } from 'viem';
1
+ import { ethers } from 'ethers';
2
2
  import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
3
3
  import { EvmNetwork } from './evm-network';
4
4
  import { EthProvider } from './ethProvider';
@@ -18,11 +18,9 @@ declare class BloctoEvm extends EthProvider implements WalletConnector {
18
18
  constructor({ evmNetworks }: {
19
19
  evmNetworks: EvmNetwork[];
20
20
  });
21
- providerResources: string[] | undefined;
22
- switchNetworkOnlyFromWallet: boolean | undefined;
23
21
  get key(): string;
24
22
  private getClient;
25
- getWeb3Provider(): WalletClient | undefined;
23
+ getWeb3Provider(): ethers.providers.Web3Provider | undefined;
26
24
  fetchPublicAddress(): Promise<string | undefined>;
27
25
  connect(): Promise<void>;
28
26
  isInstalledOnBrowser(): boolean;
@@ -0,0 +1,134 @@
1
+ import { __awaiter } from 'tslib';
2
+ import BloctoSDK from '@blocto/sdk';
3
+ import { ethers } from 'ethers';
4
+ import { normalizeWalletName } from '../../utils/normalizeWalletName/normalizeWalletName.js';
5
+ import { logger } from '../../utils/logger.js';
6
+ import { EthProvider } from './ethProvider.js';
7
+ import { EthProviderHelper } from './ethProviderHelper.js';
8
+
9
+ class BloctoEvm extends EthProvider {
10
+ constructor({ evmNetworks }) {
11
+ var _a, _b;
12
+ // Taken from : https://docs.blocto.app/blocto-sdk/javascript-sdk/evm-sdk/provider
13
+ const BLOCTO_SUPPORTED_CHAIN_IDS = [1, 4, 56, 97, 137, 80001, 43114, 43113];
14
+ const bloctoSupportedNetworks = evmNetworks.filter((n) => BLOCTO_SUPPORTED_CHAIN_IDS.includes(n.chainId));
15
+ super({ evmNetworks: bloctoSupportedNetworks });
16
+ this.LOCAL_STORAGE_KEY = 'dynamic_blocto_evm_chain_id';
17
+ this.name = 'bloctoevm';
18
+ this.canConnectViaQrCode = false;
19
+ this.canConnectViaCustodialService = true;
20
+ this.isWalletConnect = false;
21
+ this.connectedChain = 'EVM';
22
+ this.supportedChains = ['EVM', 'ETH'];
23
+ this.ethProviderHelper = new EthProviderHelper();
24
+ this.supportsNetworkSwitching = () => false;
25
+ this.chainId =
26
+ Number(localStorage.getItem(this.LOCAL_STORAGE_KEY)) ||
27
+ ((_a = bloctoSupportedNetworks.find((n) => n.chainId === 137)) === null || _a === void 0 ? void 0 : _a.chainId) ||
28
+ ((_b = bloctoSupportedNetworks[0]) === null || _b === void 0 ? void 0 : _b.chainId);
29
+ }
30
+ get key() {
31
+ return normalizeWalletName(this.name);
32
+ }
33
+ getClient() {
34
+ if (!this.client) {
35
+ const network = this.evmNetworks.find((n) => n.chainId === this.chainId);
36
+ if (network) {
37
+ this.client = new BloctoSDK({
38
+ ethereum: {
39
+ chainId: `0x${this.chainId.toString(16)}`,
40
+ rpc: network.rpcUrls[0],
41
+ },
42
+ });
43
+ }
44
+ else {
45
+ logger.error("Couldn't find a configured network for Blocto EVM");
46
+ }
47
+ }
48
+ return this.client;
49
+ }
50
+ getWeb3Provider() {
51
+ const client = this.getClient();
52
+ // If there are no accounts yet, we shouldn't wrap the provider in ethers
53
+ if (client && client.ethereum && client.ethereum.accounts.length > 0) {
54
+ return new ethers.providers.Web3Provider(client.ethereum);
55
+ }
56
+ else {
57
+ return undefined;
58
+ }
59
+ }
60
+ // We are calling the client directly and not via Web3Provider because if we will wrap it in Ethers,
61
+ // Ethers will be making retries on failure. This becomes an issue on the connect step.
62
+ // When Blocto's modal closes prior to receiving a response with the address on the connect step,
63
+ // then ethers would retry and the modal will open again.
64
+ fetchPublicAddress() {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ try {
67
+ const client = this.getClient();
68
+ if (client && client.ethereum) {
69
+ const addresses = yield client.ethereum.request({
70
+ method: 'eth_requestAccounts',
71
+ });
72
+ if (addresses.length > 0) {
73
+ return addresses[0];
74
+ }
75
+ }
76
+ return undefined;
77
+ }
78
+ catch (e) {
79
+ logger.error(e);
80
+ return Promise.reject(e);
81
+ }
82
+ });
83
+ }
84
+ connect() {
85
+ return __awaiter(this, void 0, void 0, function* () {
86
+ yield this.fetchPublicAddress();
87
+ });
88
+ }
89
+ isInstalledOnBrowser() {
90
+ return false;
91
+ }
92
+ proveOwnership(messageToSign) {
93
+ return this.signMessage(messageToSign);
94
+ }
95
+ signMessage(messageToSign) {
96
+ return __awaiter(this, void 0, void 0, function* () {
97
+ try {
98
+ const signer = yield this.getSigner();
99
+ return yield (signer === null || signer === void 0 ? void 0 : signer.signMessage(messageToSign));
100
+ }
101
+ catch (e) {
102
+ if (e.message === 'User declined the signing request') {
103
+ return Promise.reject({ code: '4001' });
104
+ }
105
+ else {
106
+ return Promise.reject(e);
107
+ }
108
+ }
109
+ });
110
+ }
111
+ endSession() {
112
+ return __awaiter(this, void 0, void 0, function* () {
113
+ const client = this.getClient();
114
+ localStorage.removeItem('sdk.session');
115
+ if (client && client.ethereum && client.ethereum.accounts.length > 0) {
116
+ yield client.ethereum.request({ method: 'wallet_disconnect' });
117
+ }
118
+ });
119
+ }
120
+ // *********************
121
+ // Unimplemented methods
122
+ // *********************
123
+ switchNetwork() {
124
+ return Promise.resolve();
125
+ }
126
+ setupEventListeners() {
127
+ return;
128
+ }
129
+ teardownEventListeners() {
130
+ return;
131
+ }
132
+ }
133
+
134
+ export { BloctoEvm as default };
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var magicSdk = require('magic-sdk');
7
+ var logger = require('../../../../utils/logger.cjs');
7
8
 
8
9
  // these are based off of Magic's EthNetworkName type
9
10
  const chainNameToChainIdMap = {
@@ -25,15 +26,21 @@ class MagicClientNetworkHandler {
25
26
  this._config = config;
26
27
  this._apiKey = apiKey;
27
28
  this.evmNetworks = evmNetworks;
28
- this._networkId =
29
- typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
30
- ? chainNameToChainIdMap[config.network]
31
- : (_b = (_a = config === null || config === void 0 ? void 0 : config.network) === null || _a === void 0 ? void 0 : _a.chainId) !== null && _b !== void 0 ? _b : 1;
29
+ if (this.lastUsedNetworkId) {
30
+ this._networkId = this.lastUsedNetworkId;
31
+ }
32
+ else {
33
+ this._networkId =
34
+ typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
35
+ ? chainNameToChainIdMap[config.network]
36
+ : (_b = (_a = config === null || config === void 0 ? void 0 : config.network) === null || _a === void 0 ? void 0 : _a.chainId) !== null && _b !== void 0 ? _b : 1;
37
+ }
32
38
  }
33
39
  selectNetwork(networkChainId) {
34
40
  var _a;
35
41
  return tslib.__awaiter(this, void 0, void 0, function* () {
36
42
  this._networkId = networkChainId;
43
+ this.lastUsedNetworkId = networkChainId;
37
44
  (_a = this.onChainChanged) === null || _a === void 0 ? void 0 : _a.call(this, networkChainId);
38
45
  });
39
46
  }
@@ -91,6 +98,31 @@ class MagicClientNetworkHandler {
91
98
  var _a;
92
99
  return (_a = this.evmNetworks.find((evmNetwork) => evmNetwork.networkId === networkId)) === null || _a === void 0 ? void 0 : _a.chainId;
93
100
  }
94
- }
101
+ get lastUsedNetworkId() {
102
+ const savedNetworkIdText = localStorage.getItem(MagicClientNetworkHandler.lastUsedNetworkIdStorageKey);
103
+ if (!savedNetworkIdText)
104
+ return undefined;
105
+ try {
106
+ const networkId = parseInt(savedNetworkIdText);
107
+ if (isNaN(networkId)) {
108
+ return undefined;
109
+ }
110
+ return networkId;
111
+ }
112
+ catch (err) {
113
+ logger.logger.error(err);
114
+ return undefined;
115
+ }
116
+ }
117
+ set lastUsedNetworkId(networkId) {
118
+ if (networkId === undefined) {
119
+ localStorage.removeItem(MagicClientNetworkHandler.lastUsedNetworkIdStorageKey);
120
+ }
121
+ else {
122
+ localStorage.setItem(MagicClientNetworkHandler.lastUsedNetworkIdStorageKey, networkId.toString());
123
+ }
124
+ }
125
+ }
126
+ MagicClientNetworkHandler.lastUsedNetworkIdStorageKey = 'magic-last-used-network-id';
95
127
 
96
128
  exports.MagicClientNetworkHandler = MagicClientNetworkHandler;
@@ -11,6 +11,7 @@ export declare abstract class MagicClientNetworkHandler {
11
11
  private _networkId;
12
12
  private _config;
13
13
  evmNetworks: EvmNetwork[];
14
+ static lastUsedNetworkIdStorageKey: string;
14
15
  constructor({ apiKey, evmNetworks, config }: MagicClientNetworkHandlerProps);
15
16
  abstract onChainChanged?(networkChainId: number): void;
16
17
  selectNetwork(networkChainId: number): Promise<void>;
@@ -21,4 +22,6 @@ export declare abstract class MagicClientNetworkHandler {
21
22
  private get configNetworkId();
22
23
  private _getRpcUrlByNetworkId;
23
24
  private _getChainIdByNetworkId;
25
+ get lastUsedNetworkId(): number | undefined;
26
+ set lastUsedNetworkId(networkId: number | undefined);
24
27
  }
@@ -1,5 +1,6 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { Magic } from 'magic-sdk';
3
+ import { logger } from '../../../../utils/logger.js';
3
4
 
4
5
  // these are based off of Magic's EthNetworkName type
5
6
  const chainNameToChainIdMap = {
@@ -21,15 +22,21 @@ class MagicClientNetworkHandler {
21
22
  this._config = config;
22
23
  this._apiKey = apiKey;
23
24
  this.evmNetworks = evmNetworks;
24
- this._networkId =
25
- typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
26
- ? chainNameToChainIdMap[config.network]
27
- : (_b = (_a = config === null || config === void 0 ? void 0 : config.network) === null || _a === void 0 ? void 0 : _a.chainId) !== null && _b !== void 0 ? _b : 1;
25
+ if (this.lastUsedNetworkId) {
26
+ this._networkId = this.lastUsedNetworkId;
27
+ }
28
+ else {
29
+ this._networkId =
30
+ typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
31
+ ? chainNameToChainIdMap[config.network]
32
+ : (_b = (_a = config === null || config === void 0 ? void 0 : config.network) === null || _a === void 0 ? void 0 : _a.chainId) !== null && _b !== void 0 ? _b : 1;
33
+ }
28
34
  }
29
35
  selectNetwork(networkChainId) {
30
36
  var _a;
31
37
  return __awaiter(this, void 0, void 0, function* () {
32
38
  this._networkId = networkChainId;
39
+ this.lastUsedNetworkId = networkChainId;
33
40
  (_a = this.onChainChanged) === null || _a === void 0 ? void 0 : _a.call(this, networkChainId);
34
41
  });
35
42
  }
@@ -87,6 +94,31 @@ class MagicClientNetworkHandler {
87
94
  var _a;
88
95
  return (_a = this.evmNetworks.find((evmNetwork) => evmNetwork.networkId === networkId)) === null || _a === void 0 ? void 0 : _a.chainId;
89
96
  }
90
- }
97
+ get lastUsedNetworkId() {
98
+ const savedNetworkIdText = localStorage.getItem(MagicClientNetworkHandler.lastUsedNetworkIdStorageKey);
99
+ if (!savedNetworkIdText)
100
+ return undefined;
101
+ try {
102
+ const networkId = parseInt(savedNetworkIdText);
103
+ if (isNaN(networkId)) {
104
+ return undefined;
105
+ }
106
+ return networkId;
107
+ }
108
+ catch (err) {
109
+ logger.error(err);
110
+ return undefined;
111
+ }
112
+ }
113
+ set lastUsedNetworkId(networkId) {
114
+ if (networkId === undefined) {
115
+ localStorage.removeItem(MagicClientNetworkHandler.lastUsedNetworkIdStorageKey);
116
+ }
117
+ else {
118
+ localStorage.setItem(MagicClientNetworkHandler.lastUsedNetworkIdStorageKey, networkId.toString());
119
+ }
120
+ }
121
+ }
122
+ MagicClientNetworkHandler.lastUsedNetworkIdStorageKey = 'magic-last-used-network-id';
91
123
 
92
124
  export { MagicClientNetworkHandler };
@@ -3,8 +3,10 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
- var viem = require('viem');
6
+ var ethers = require('ethers');
7
+ var errors = require('../../../../errors.cjs');
7
8
  var logger = require('../../../../utils/logger.cjs');
9
+ var assignConfirmationScreenToProvider = require('../../../../utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs');
8
10
  var CancellablePromise = require('../../../../utils/CancellablePromise/CancellablePromise.cjs');
9
11
  var MagicClientNetworkHandler = require('../MagicClientNetworkHandler/MagicClientNetworkHandler.cjs');
10
12
 
@@ -82,10 +84,12 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
82
84
  }
83
85
  getBalance() {
84
86
  return tslib.__awaiter(this, void 0, void 0, function* () {
85
- const signer = yield this.getSigner();
86
87
  const provider = yield this.getWeb3Provider();
87
- const [userAddress] = yield signer.getAddresses();
88
- return viem.formatEther(yield provider.getBalance({ address: userAddress }));
88
+ if (!provider)
89
+ throw new errors.DynamicError('No provider');
90
+ const signer = provider.getSigner();
91
+ const userAddress = yield signer.getAddress();
92
+ return ethers.ethers.utils.formatEther(yield provider.getBalance(userAddress));
89
93
  });
90
94
  }
91
95
  getConnectedAccounts() {
@@ -109,37 +113,15 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
109
113
  getSigner() {
110
114
  return tslib.__awaiter(this, void 0, void 0, function* () {
111
115
  const provider = yield this.getWeb3Provider();
112
- return viem.createWalletClient({ transport: viem.custom(provider) });
116
+ return provider.getSigner();
113
117
  });
114
118
  }
115
119
  getWeb3Provider() {
116
120
  return tslib.__awaiter(this, void 0, void 0, function* () {
117
121
  const client = this.getClient();
118
- const publicClient = viem.createPublicClient({
119
- transport: viem.custom({
120
- request: (args) => tslib.__awaiter(this, void 0, void 0, function* () {
121
- var _a, _b;
122
- if (args.method === 'personal_sign') {
123
- return this._walletUiUtils.signMessage({
124
- handler: () => client.rpcProvider.request(args),
125
- message: viem.fromHex((_a = args.params) === null || _a === void 0 ? void 0 : _a[0], 'string'),
126
- });
127
- }
128
- else if (args.method === 'eth_sendTransaction') {
129
- return this._walletUiUtils.sendTransaction({
130
- handler: () => client.rpcProvider.request(args),
131
- transaction: (_b = args.params) === null || _b === void 0 ? void 0 : _b[0],
132
- });
133
- }
134
- else {
135
- return client.rpcProvider.request(args);
136
- }
137
- }),
138
- }, {
139
- retryCount: 0,
140
- }),
141
- });
142
- return publicClient;
122
+ const provider = new ethers.ethers.providers.Web3Provider(client.rpcProvider);
123
+ assignConfirmationScreenToProvider.assignConfirmationScreenToProvider(provider, this._walletUiUtils);
124
+ return provider;
143
125
  });
144
126
  }
145
127
  isInstalledOnBrowser() {
@@ -158,11 +140,8 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
158
140
  }
159
141
  signMessage(messageToSign) {
160
142
  return tslib.__awaiter(this, void 0, void 0, function* () {
161
- const signer = yield this.getSigner();
162
- return signer.signMessage({
163
- account: (yield this.fetchPublicAddress()),
164
- message: messageToSign,
165
- });
143
+ const provider = yield this.getWeb3Provider();
144
+ return provider.getSigner().signMessage(messageToSign);
166
145
  });
167
146
  }
168
147
  supportsNetworkSwitching() {
@@ -1,5 +1,5 @@
1
1
  import { LoginWithMagicLinkEvents, MagicUserMetadata, PromiEvent } from 'magic-sdk';
2
- import { PublicClient, WalletClient } from 'viem';
2
+ import { ethers } from 'ethers';
3
3
  import { Chain, WalletConnector, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
4
4
  import { WalletUiUtils } from '../../../../types';
5
5
  import { CancellablePromise } from '../../../../utils/CancellablePromise';
@@ -39,9 +39,9 @@ export declare abstract class MagicWalletConnector extends MagicClientNetworkHan
39
39
  getBalance(): Promise<string | undefined>;
40
40
  getConnectedAccounts(): Promise<string[]>;
41
41
  getNetwork(): Promise<number | undefined>;
42
- getRpcProvider(): Promise<void | PublicClient | undefined>;
43
- getSigner(): Promise<WalletClient>;
44
- getWeb3Provider(): Promise<PublicClient>;
42
+ getRpcProvider(): Promise<void | ethers.providers.JsonRpcProvider | undefined>;
43
+ getSigner(): Promise<ethers.providers.JsonRpcSigner | undefined>;
44
+ getWeb3Provider(): Promise<ethers.providers.Web3Provider>;
45
45
  isInstalledOnBrowser(): boolean;
46
46
  proveOwnership(messageToSign: string): Promise<string | undefined>;
47
47
  setupEventListeners(listeners: WalletEventListeners): void;
@@ -1,6 +1,8 @@
1
1
  import { __awaiter } from 'tslib';
2
- import { formatEther, createWalletClient, custom, createPublicClient, fromHex } from 'viem';
2
+ import { ethers } from 'ethers';
3
+ import { DynamicError } from '../../../../errors.js';
3
4
  import { logger } from '../../../../utils/logger.js';
5
+ import { assignConfirmationScreenToProvider } from '../../../../utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js';
4
6
  import { CancellablePromise } from '../../../../utils/CancellablePromise/CancellablePromise.js';
5
7
  import { MagicClientNetworkHandler } from '../MagicClientNetworkHandler/MagicClientNetworkHandler.js';
6
8
 
@@ -78,10 +80,12 @@ class MagicWalletConnector extends MagicClientNetworkHandler {
78
80
  }
79
81
  getBalance() {
80
82
  return __awaiter(this, void 0, void 0, function* () {
81
- const signer = yield this.getSigner();
82
83
  const provider = yield this.getWeb3Provider();
83
- const [userAddress] = yield signer.getAddresses();
84
- return formatEther(yield provider.getBalance({ address: userAddress }));
84
+ if (!provider)
85
+ throw new DynamicError('No provider');
86
+ const signer = provider.getSigner();
87
+ const userAddress = yield signer.getAddress();
88
+ return ethers.utils.formatEther(yield provider.getBalance(userAddress));
85
89
  });
86
90
  }
87
91
  getConnectedAccounts() {
@@ -105,37 +109,15 @@ class MagicWalletConnector extends MagicClientNetworkHandler {
105
109
  getSigner() {
106
110
  return __awaiter(this, void 0, void 0, function* () {
107
111
  const provider = yield this.getWeb3Provider();
108
- return createWalletClient({ transport: custom(provider) });
112
+ return provider.getSigner();
109
113
  });
110
114
  }
111
115
  getWeb3Provider() {
112
116
  return __awaiter(this, void 0, void 0, function* () {
113
117
  const client = this.getClient();
114
- const publicClient = createPublicClient({
115
- transport: custom({
116
- request: (args) => __awaiter(this, void 0, void 0, function* () {
117
- var _a, _b;
118
- if (args.method === 'personal_sign') {
119
- return this._walletUiUtils.signMessage({
120
- handler: () => client.rpcProvider.request(args),
121
- message: fromHex((_a = args.params) === null || _a === void 0 ? void 0 : _a[0], 'string'),
122
- });
123
- }
124
- else if (args.method === 'eth_sendTransaction') {
125
- return this._walletUiUtils.sendTransaction({
126
- handler: () => client.rpcProvider.request(args),
127
- transaction: (_b = args.params) === null || _b === void 0 ? void 0 : _b[0],
128
- });
129
- }
130
- else {
131
- return client.rpcProvider.request(args);
132
- }
133
- }),
134
- }, {
135
- retryCount: 0,
136
- }),
137
- });
138
- return publicClient;
118
+ const provider = new ethers.providers.Web3Provider(client.rpcProvider);
119
+ assignConfirmationScreenToProvider(provider, this._walletUiUtils);
120
+ return provider;
139
121
  });
140
122
  }
141
123
  isInstalledOnBrowser() {
@@ -154,11 +136,8 @@ class MagicWalletConnector extends MagicClientNetworkHandler {
154
136
  }
155
137
  signMessage(messageToSign) {
156
138
  return __awaiter(this, void 0, void 0, function* () {
157
- const signer = yield this.getSigner();
158
- return signer.signMessage({
159
- account: (yield this.fetchPublicAddress()),
160
- message: messageToSign,
161
- });
139
+ const provider = yield this.getWeb3Provider();
140
+ return provider.getSigner().signMessage(messageToSign);
162
141
  });
163
142
  }
164
143
  supportsNetworkSwitching() {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var tslib = require('tslib');
4
- var viem = require('viem');
4
+ var ethers = require('ethers');
5
5
  var coinbase = require('../clients/coinbase/coinbase.cjs');
6
6
  var normalizeWalletName = require('../../utils/normalizeWalletName/normalizeWalletName.cjs');
7
7
  var ethProviderHelper = require('./ethProviderHelper.cjs');
@@ -27,29 +27,18 @@ class Coinbase extends ethProvider.EthProvider {
27
27
  return normalizeWalletName.normalizeWalletName(this.name);
28
28
  }
29
29
  setupEventListeners(listeners) {
30
- const provider = this.ethProviderHelper.findProvider(this.name);
31
- if (!provider) {
32
- return () => { };
33
- }
34
- return this.ethProviderHelper._setupEventListeners(listeners, this.name, viem.createPublicClient({
35
- transport: viem.custom(provider),
36
- }));
30
+ return this.ethProviderHelper._setupEventListeners(listeners, this.getWeb3Provider());
37
31
  }
38
32
  teardownEventListeners() {
39
33
  return this.ethProviderHelper._teardownEventListeners(this.name);
40
34
  }
41
35
  getWeb3Provider() {
42
- const provider = this.ethProviderHelper.findProvider(this.name);
43
- if (this.isInstalledOnBrowser() && provider) {
44
- return viem.createWalletClient({
45
- transport: viem.custom(provider),
46
- });
36
+ if (this.isInstalledOnBrowser()) {
37
+ return this.ethProviderHelper.findProvider(this.name);
47
38
  }
48
- return viem.createWalletClient({
49
- transport: viem.custom(coinbase.getCoinbaseProvider({
50
- opts: this.coinbaseProviderOpts,
51
- })),
52
- });
39
+ return new ethers.ethers.providers.Web3Provider(coinbase.getCoinbaseProvider({
40
+ opts: this.coinbaseProviderOpts,
41
+ }), 'any');
53
42
  }
54
43
  isInstalledOnBrowser() {
55
44
  return this.ethProviderHelper.isInstalledHelper(this.name);