@dynamic-labs/multi-wallet 0.16.16 → 0.16.17-viem.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 (52) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +4 -4
  3. package/src/getOrMapViemChain.cjs +77 -0
  4. package/src/getOrMapViemChain.d.ts +11 -0
  5. package/src/getOrMapViemChain.js +51 -0
  6. package/src/multi-wallet.cjs +2 -3
  7. package/src/multi-wallet.js +2 -3
  8. package/src/rpcProviders.cjs +6 -2
  9. package/src/rpcProviders.js +6 -2
  10. package/src/types.d.ts +16 -8
  11. package/src/utils/message.cjs +2 -2
  12. package/src/utils/message.js +1 -1
  13. package/src/wallets/algorand/myalgo.d.ts +1 -2
  14. package/src/wallets/clients/coinbase/coinbase.cjs +2 -2
  15. package/src/wallets/clients/coinbase/coinbase.js +2 -2
  16. package/src/wallets/clients/walletConnect/walletConnect.cjs +9 -5
  17. package/src/wallets/clients/walletConnect/walletConnect.d.ts +2 -2
  18. package/src/wallets/clients/walletConnect/walletConnect.js +9 -5
  19. package/src/wallets/ethereum/BloctoEvm.d.ts +4 -2
  20. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +35 -14
  21. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +4 -4
  22. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +35 -14
  23. package/src/wallets/ethereum/coinbase.cjs +18 -7
  24. package/src/wallets/ethereum/coinbase.d.ts +4 -2
  25. package/src/wallets/ethereum/coinbase.js +18 -7
  26. package/src/wallets/ethereum/ethProvider.cjs +13 -29
  27. package/src/wallets/ethereum/ethProvider.d.ts +7 -7
  28. package/src/wallets/ethereum/ethProvider.js +13 -29
  29. package/src/wallets/ethereum/ethProviderHelper.cjs +52 -34
  30. package/src/wallets/ethereum/ethProviderHelper.d.ts +20 -20
  31. package/src/wallets/ethereum/ethProviderHelper.js +52 -34
  32. package/src/wallets/ethereum/fortmatic.cjs +15 -7
  33. package/src/wallets/ethereum/fortmatic.d.ts +5 -3
  34. package/src/wallets/ethereum/fortmatic.js +15 -7
  35. package/src/wallets/ethereum/meta-mask.cjs +13 -2
  36. package/src/wallets/ethereum/meta-mask.d.ts +5 -3
  37. package/src/wallets/ethereum/meta-mask.js +13 -2
  38. package/src/wallets/walletConnect/walletConnect.cjs +8 -6
  39. package/src/wallets/walletConnect/walletConnect.d.ts +4 -4
  40. package/src/wallets/walletConnect/walletConnect.js +8 -6
  41. package/src/wallets/walletConnect/walletConnectV2.cjs +11 -7
  42. package/src/wallets/walletConnect/walletConnectV2.d.ts +4 -4
  43. package/src/wallets/walletConnect/walletConnectV2.js +11 -7
  44. package/src/wallets/window.d.ts +3 -1
  45. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs +0 -54
  46. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +0 -3
  47. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js +0 -50
  48. package/src/utils/assignConfirmationScreenToProvider/index.d.ts +0 -1
  49. package/src/utils/isFunction/isFunction.cjs +0 -8
  50. package/src/utils/isFunction/isFunction.js +0 -4
  51. package/src/wallets/ethereum/BloctoEvm.cjs +0 -140
  52. package/src/wallets/ethereum/BloctoEvm.js +0 -134
package/CHANGELOG.md CHANGED
@@ -1,4 +1,11 @@
1
1
 
2
+ ### [0.16.17-viem.0](https://github.com/dynamic-labs/DynamicAuth/compare/v0.16.16...v0.16.17-viem.0) (2023-05-12)
3
+
4
+
5
+ ### Features
6
+
7
+ * replace ethers with viem ([995baa0](https://github.com/dynamic-labs/DynamicAuth/commit/995baa05fe13681e24388c55a6639779a88d78df))
8
+
2
9
  ### [0.16.16](https://github.com/dynamic-labs/DynamicAuth/compare/v0.16.15...v0.16.16) (2023-05-11)
3
10
 
4
11
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/multi-wallet",
3
- "version": "0.16.16",
3
+ "version": "0.16.17-viem.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -12,7 +12,7 @@
12
12
  "@dynamic-labs/sdk-api": "0.0.174",
13
13
  "@dynamic-labs/wallet-book": "^0.0.14",
14
14
  "starknet": "^3.19.0",
15
- "ethers": "^5.7.2",
15
+ "viem": "^0.3.22",
16
16
  "@randlabs/myalgo-connect": "^1.4.2",
17
17
  "@solana/web3.js": "^1.70.1",
18
18
  "@coinbase/wallet-sdk": "^3.6.4",
@@ -28,8 +28,8 @@
28
28
  "magic-sdk": "^16.0.1",
29
29
  "@keplr-wallet/provider": "0.11.56",
30
30
  "@keplr-wallet/types": "^0.11.51",
31
- "@dynamic-labs/logger": "0.16.16",
32
- "@dynamic-labs/wallet-connector-core": "0.16.16"
31
+ "@dynamic-labs/logger": "0.16.17-viem.0",
32
+ "@dynamic-labs/wallet-connector-core": "0.16.17-viem.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@walletconnect/types": "^2.2.1"
@@ -0,0 +1,77 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var chains = require('viem/chains');
6
+
7
+ function _interopNamespace(e) {
8
+ if (e && e.__esModule) return e;
9
+ var n = Object.create(null);
10
+ if (e) {
11
+ Object.keys(e).forEach(function (k) {
12
+ if (k !== 'default') {
13
+ var d = Object.getOwnPropertyDescriptor(e, k);
14
+ Object.defineProperty(n, k, d.get ? d : {
15
+ enumerable: true,
16
+ get: function () { return e[k]; }
17
+ });
18
+ }
19
+ });
20
+ }
21
+ n["default"] = e;
22
+ return Object.freeze(n);
23
+ }
24
+
25
+ var chains__namespace = /*#__PURE__*/_interopNamespace(chains);
26
+
27
+ // eslint-disable-next-line import/no-namespace
28
+ /**
29
+ * Gets the chain object for the given chain id.
30
+ * @param chainId - Chain id of the target EVM chain.
31
+ * @returns Viem's chain object.
32
+ */
33
+ const getChain = (chainId) => {
34
+ for (const chain of Object.values(chains__namespace)) {
35
+ if ('id' in chain) {
36
+ if (chain.id === chainId) {
37
+ return chain;
38
+ }
39
+ }
40
+ }
41
+ throw new Error(`Chain with id ${chainId} not found`);
42
+ };
43
+ const mapChain = (network) => {
44
+ var _a;
45
+ return ({
46
+ blockExplorers: ((_a = network.blockExplorerUrls) === null || _a === void 0 ? void 0 : _a[0])
47
+ ? {
48
+ default: {
49
+ name: network.blockExplorerUrls[0],
50
+ url: network.blockExplorerUrls[0],
51
+ },
52
+ }
53
+ : undefined,
54
+ id: network.chainId,
55
+ name: network.vanityName || network.chainName,
56
+ nativeCurrency: network.nativeCurrency,
57
+ network: network.chainName,
58
+ rpcUrls: {
59
+ default: { http: network.rpcUrls },
60
+ public: { http: network.rpcUrls },
61
+ },
62
+ });
63
+ };
64
+ const getOrMapViemChain = (network) => {
65
+ let chain;
66
+ try {
67
+ chain = getChain(network.chainId);
68
+ }
69
+ catch (_a) {
70
+ chain = mapChain(network);
71
+ }
72
+ return chain;
73
+ };
74
+
75
+ exports.getChain = getChain;
76
+ exports.getOrMapViemChain = getOrMapViemChain;
77
+ exports.mapChain = mapChain;
@@ -0,0 +1,11 @@
1
+ import { Chain } from 'viem';
2
+ import * as chains from 'viem/chains';
3
+ import { EvmNetwork } from './wallets/ethereum/evm-network';
4
+ /**
5
+ * Gets the chain object for the given chain id.
6
+ * @param chainId - Chain id of the target EVM chain.
7
+ * @returns Viem's chain object.
8
+ */
9
+ export declare const getChain: (chainId: number) => chains.Chain;
10
+ export declare const mapChain: (network: EvmNetwork) => Chain;
11
+ export declare const getOrMapViemChain: (network: EvmNetwork) => Chain;
@@ -0,0 +1,51 @@
1
+ import * as chains from 'viem/chains';
2
+
3
+ // eslint-disable-next-line import/no-namespace
4
+ /**
5
+ * Gets the chain object for the given chain id.
6
+ * @param chainId - Chain id of the target EVM chain.
7
+ * @returns Viem's chain object.
8
+ */
9
+ const getChain = (chainId) => {
10
+ for (const chain of Object.values(chains)) {
11
+ if ('id' in chain) {
12
+ if (chain.id === chainId) {
13
+ return chain;
14
+ }
15
+ }
16
+ }
17
+ throw new Error(`Chain with id ${chainId} not found`);
18
+ };
19
+ const mapChain = (network) => {
20
+ var _a;
21
+ return ({
22
+ blockExplorers: ((_a = network.blockExplorerUrls) === null || _a === void 0 ? void 0 : _a[0])
23
+ ? {
24
+ default: {
25
+ name: network.blockExplorerUrls[0],
26
+ url: network.blockExplorerUrls[0],
27
+ },
28
+ }
29
+ : undefined,
30
+ id: network.chainId,
31
+ name: network.vanityName || network.chainName,
32
+ nativeCurrency: network.nativeCurrency,
33
+ network: network.chainName,
34
+ rpcUrls: {
35
+ default: { http: network.rpcUrls },
36
+ public: { http: network.rpcUrls },
37
+ },
38
+ });
39
+ };
40
+ const getOrMapViemChain = (network) => {
41
+ let chain;
42
+ try {
43
+ chain = getChain(network.chainId);
44
+ }
45
+ catch (_a) {
46
+ chain = mapChain(network);
47
+ }
48
+ return chain;
49
+ };
50
+
51
+ export { getChain, getOrMapViemChain, mapChain };
@@ -24,7 +24,6 @@ var ExodusSol = require('./wallets/solana/injected/ExodusSol.cjs');
24
24
  var BloctoInjected = require('./wallets/ethereum/injected/BloctoInjected.cjs');
25
25
  var argentx = require('./wallets/starknet/argentx.cjs');
26
26
  var braavos = require('./wallets/starknet/braavos.cjs');
27
- var BloctoEvm = require('./wallets/ethereum/BloctoEvm.cjs');
28
27
  var phantomLedger = require('./wallets/solana/phantom-ledger.cjs');
29
28
  var CoinbaseSolana = require('./wallets/solana/CoinbaseSolana.cjs');
30
29
  var Frame = require('./wallets/ethereum/injected/Frame.cjs');
@@ -34,7 +33,7 @@ var getWalletConnectConnector = require('./wallets/getWalletConnectConnector.cjs
34
33
  var initializeWalletProviders = require('./wallets/initializeWalletProviders.cjs');
35
34
  var Dawn = require('./wallets/ethereum/injected/Dawn.cjs');
36
35
  var PhantomEvm = require('./wallets/ethereum/injected/PhantomEvm.cjs');
37
- require('ethers');
36
+ require('viem');
38
37
  require('./utils/logger.cjs');
39
38
  require('./wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.cjs');
40
39
  var EmailOTPMagicWalletConnector = require('./wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.cjs');
@@ -113,7 +112,7 @@ const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, ne
113
112
  new slope({ solNetworks: solanaNetworkConfigs }),
114
113
  new dapper({ appLogoUrl, appName }),
115
114
  new blocto({ appLogoUrl, appName }),
116
- new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
115
+ // new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
117
116
  new BloctoInjected({ evmNetworks: evmNetworkConfigs }),
118
117
  getWalletConnectConnector.getWalletConnectConnector({
119
118
  evmNetworks: evmNetworkConfigs,
@@ -20,7 +20,6 @@ import ExodusSol from './wallets/solana/injected/ExodusSol.js';
20
20
  import BloctoInjected from './wallets/ethereum/injected/BloctoInjected.js';
21
21
  import ArgentX from './wallets/starknet/argentx.js';
22
22
  import Braavos from './wallets/starknet/braavos.js';
23
- import BloctoEvm from './wallets/ethereum/BloctoEvm.js';
24
23
  import PhantomLedger from './wallets/solana/phantom-ledger.js';
25
24
  export { walletName as phantomLedgerWalletName } from './wallets/solana/phantom-ledger.js';
26
25
  import CoinbaseSolana from './wallets/solana/CoinbaseSolana.js';
@@ -31,7 +30,7 @@ import { getWalletConnectConnector } from './wallets/getWalletConnectConnector.j
31
30
  import { initializeWalletProviders } from './wallets/initializeWalletProviders.js';
32
31
  import Dawn from './wallets/ethereum/injected/Dawn.js';
33
32
  import PhantomEvm from './wallets/ethereum/injected/PhantomEvm.js';
34
- import 'ethers';
33
+ import 'viem';
35
34
  import './utils/logger.js';
36
35
  import './wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.js';
37
36
  import { EmailOTPMagicWalletConnector } from './wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.js';
@@ -110,7 +109,7 @@ const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, ne
110
109
  new Slope({ solNetworks: solanaNetworkConfigs }),
111
110
  new Dapper({ appLogoUrl, appName }),
112
111
  new Blocto({ appLogoUrl, appName }),
113
- new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
112
+ // new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
114
113
  new BloctoInjected({ evmNetworks: evmNetworkConfigs }),
115
114
  getWalletConnectConnector({
116
115
  evmNetworks: evmNetworkConfigs,
@@ -2,8 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var viem = require('viem');
5
6
  var web3_js = require('@solana/web3.js');
6
- var ethers = require('ethers');
7
+ var getOrMapViemChain = require('./getOrMapViemChain.cjs');
7
8
 
8
9
  const getRpcProviders = (configurations) => {
9
10
  const rpcProviders = {};
@@ -11,7 +12,10 @@ const getRpcProviders = (configurations) => {
11
12
  rpcProviders.evm = configurations.evm.map((network) => {
12
13
  var _a;
13
14
  const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
14
- const provider = new ethers.ethers.providers.JsonRpcProvider(rpcUrl, network.chainId);
15
+ const provider = viem.createPublicClient({
16
+ chain: getOrMapViemChain.getOrMapViemChain(network),
17
+ transport: viem.http(rpcUrl),
18
+ });
15
19
  return {
16
20
  chainId: network.chainId,
17
21
  chainName: network.chainName,
@@ -1,5 +1,6 @@
1
+ import { createPublicClient, http } from 'viem';
1
2
  import { Connection } from '@solana/web3.js';
2
- import { ethers } from 'ethers';
3
+ import { getOrMapViemChain } from './getOrMapViemChain.js';
3
4
 
4
5
  const getRpcProviders = (configurations) => {
5
6
  const rpcProviders = {};
@@ -7,7 +8,10 @@ const getRpcProviders = (configurations) => {
7
8
  rpcProviders.evm = configurations.evm.map((network) => {
8
9
  var _a;
9
10
  const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
10
- const provider = new ethers.providers.JsonRpcProvider(rpcUrl, network.chainId);
11
+ const provider = createPublicClient({
12
+ chain: getOrMapViemChain(network),
13
+ transport: http(rpcUrl),
14
+ });
11
15
  return {
12
16
  chainId: network.chainId,
13
17
  chainName: network.chainName,
package/src/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Connection } from '@solana/web3.js';
2
- import { ethers } from 'ethers';
2
+ import { PublicClient, TransactionReceipt, TransactionRequest } from 'viem';
3
3
  import type { NetworkConfiguration } from '@dynamic-labs/sdk-api';
4
4
  import { WalletConnector, Chain } from '@dynamic-labs/wallet-connector-core';
5
5
  import { EvmNetwork } from './wallets/ethereum/evm-network';
@@ -10,7 +10,7 @@ export type VendorCredentials = {
10
10
  export type EvmRpcProvider = {
11
11
  chainId: number;
12
12
  chainName: string;
13
- provider: ethers.providers.JsonRpcProvider;
13
+ provider: PublicClient;
14
14
  };
15
15
  export type SolanaRpcProvider = {
16
16
  chainId?: number;
@@ -40,16 +40,23 @@ export type GetSupportedWalletsOpts = {
40
40
  walletUiUtils?: WalletUiUtils;
41
41
  };
42
42
  export type GetSupportedWallets = (opts?: GetSupportedWalletsOpts) => Promise<WalletConnector[]>;
43
+ export type Deferrable<T> = {
44
+ [K in keyof T]: T[K] | Promise<T[K]>;
45
+ };
46
+ interface ArrayLike<T> {
47
+ readonly [n: number]: T;
48
+ readonly length: number;
49
+ }
50
+ export type Bytes = ArrayLike<number>;
43
51
  export type WalletUiUtils = {
44
52
  enableInternalSign: () => void;
45
53
  sendTransaction: (props: {
46
- handler: (transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>) => Promise<ethers.providers.TransactionResponse>;
47
- provider: ethers.providers.Web3Provider;
48
- transaction: ethers.utils.Deferrable<ethers.providers.TransactionRequest>;
49
- }) => Promise<ethers.providers.TransactionResponse>;
54
+ handler: (transaction: TransactionRequest) => Promise<TransactionReceipt>;
55
+ transaction: TransactionRequest;
56
+ }) => Promise<TransactionReceipt>;
50
57
  signMessage: (props: {
51
- handler: (message: string | ethers.utils.Bytes) => Promise<string>;
52
- message: string | ethers.utils.Bytes;
58
+ handler: () => Promise<string>;
59
+ message: string | Bytes;
53
60
  }) => Promise<string>;
54
61
  };
55
62
  export type ChainInfo = {
@@ -62,3 +69,4 @@ export type ChainWihtIcon = {
62
69
  icon?: string;
63
70
  name: string | undefined;
64
71
  };
72
+ export {};
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var utils = require('ethers/lib/utils');
5
+ var viem = require('viem');
6
6
  var logger = require('./logger.cjs');
7
7
  var getChainInfo = require('./getChainInfo/getChainInfo.cjs');
8
8
 
@@ -44,7 +44,7 @@ const generateMessageToSign = ({ blockchain, domain, chainId, nonce, uri, public
44
44
  const getEip55Address = (publicKey, chainId) => {
45
45
  try {
46
46
  if (chainId) {
47
- return utils.getAddress(publicKey);
47
+ return viem.getAddress(publicKey);
48
48
  }
49
49
  }
50
50
  catch (err) {
@@ -1,4 +1,4 @@
1
- import { getAddress } from 'ethers/lib/utils.js';
1
+ import { getAddress } from 'viem';
2
2
  import { logger } from './logger.js';
3
3
  import { getChainInfo } from './getChainInfo/getChainInfo.js';
4
4
 
@@ -1,5 +1,4 @@
1
1
  import { Connection } from '@solana/web3.js';
2
- import { ethers } from 'ethers';
3
2
  import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
4
3
  import { IMyAlgoSigner } from './myalgoSigner';
5
4
  declare class MyAlgo implements WalletConnector {
@@ -26,7 +25,7 @@ declare class MyAlgo implements WalletConnector {
26
25
  isInstalledOnBrowser(): boolean;
27
26
  supportsNetworkSwitching(): boolean;
28
27
  switchNetwork(): Promise<void>;
29
- getWeb3Provider(): void | ethers.providers.Web3Provider | Connection | undefined;
28
+ getWeb3Provider(): void | Connection | undefined;
30
29
  getRpcProvider(): Promise<void>;
31
30
  setupEventListeners(): void;
32
31
  teardownEventListeners(): void;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var walletSdk = require('@coinbase/wallet-sdk');
7
- var utils = require('ethers/lib/utils');
7
+ var viem = require('viem');
8
8
  var errors = require('../../../errors.cjs');
9
9
  var constants = require('../../constants.cjs');
10
10
 
@@ -58,7 +58,7 @@ const signMessage = (coinbaseProviderOpts, messageToSign) => tslib.__awaiter(voi
58
58
  try {
59
59
  return yield provider.request({
60
60
  method: 'personal_sign',
61
- params: [utils.hexlify(utils.toUtf8Bytes(messageToSign)), address.toLowerCase()],
61
+ params: [viem.toHex(viem.toBytes(messageToSign)), address.toLowerCase()],
62
62
  });
63
63
  }
64
64
  catch (err) {
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { CoinbaseWalletSDK } from '@coinbase/wallet-sdk';
3
- import { hexlify, toUtf8Bytes } from 'ethers/lib/utils.js';
3
+ import { toHex, toBytes } from 'viem';
4
4
  import { DynamicError } from '../../../errors.js';
5
5
  import { infuraId } from '../../constants.js';
6
6
 
@@ -54,7 +54,7 @@ const signMessage = (coinbaseProviderOpts, messageToSign) => __awaiter(void 0, v
54
54
  try {
55
55
  return yield provider.request({
56
56
  method: 'personal_sign',
57
- params: [hexlify(toUtf8Bytes(messageToSign)), address.toLowerCase()],
57
+ params: [toHex(toBytes(messageToSign)), address.toLowerCase()],
58
58
  });
59
59
  }
60
60
  catch (err) {
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var Client = require('@walletconnect/client');
7
- var ethers = require('ethers');
7
+ var viem = require('viem');
8
8
  var isMobile = require('../../../utils/isMobile.cjs');
9
9
  var isSameAddress = require('../../../utils/isSameAddress/isSameAddress.cjs');
10
10
  var logger = require('../../../utils/logger.cjs');
@@ -213,8 +213,7 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
213
213
  if (!rpcProvider) {
214
214
  return;
215
215
  }
216
- const contract = new ethers.Contract(accountPublicAddress, IS_VALID_SIGNATURE_ABI, yield rpcProvider());
217
- const safeTransactionPromise = waitForSafeTransaction(signature, messageToSign, contract);
216
+ const safeTransactionPromise = waitForSafeTransaction(accountPublicAddress, signature, messageToSign, yield rpcProvider());
218
217
  const timeoutPromise = new Promise((resolve) => {
219
218
  setTimeout(resolve, 120000);
220
219
  });
@@ -226,13 +225,18 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
226
225
  // the transaction is recorded first on the blockchain
227
226
  // redcoast verify WILL fail if it attempts to verify the signature
228
227
  // that has not yet been properly processed!
229
- const waitForSafeTransaction = (signature, messageToSign, contract) => tslib.__awaiter(void 0, void 0, void 0, function* () {
228
+ const waitForSafeTransaction = (address, signature, messageToSign, client) => tslib.__awaiter(void 0, void 0, void 0, function* () {
230
229
  // wait for safe wallet to finish txn on the blockchain contract
231
230
  for (let i = 0; i < 120; i++) {
232
231
  try {
233
232
  // this will result in an exception if the transaction is still not ready
234
233
  // we need to catch it below
235
- const result = yield contract.isValidSignature(ethers.ethers.utils.hashMessage(messageToSign), signature);
234
+ const result = yield (client === null || client === void 0 ? void 0 : client.readContract({
235
+ abi: IS_VALID_SIGNATURE_ABI,
236
+ address: address,
237
+ args: [viem.hashMessage(messageToSign), signature],
238
+ functionName: 'isValidSignature',
239
+ }));
236
240
  if (result === MAGIC_VALUE)
237
241
  return;
238
242
  }
@@ -1,5 +1,5 @@
1
1
  import Client from '@walletconnect/client';
2
- import { ethers } from 'ethers';
2
+ import { PublicClient } from 'viem';
3
3
  import { FetchPublicAddressOpts, PayloadParams, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
4
4
  import { WalletSchema } from '@dynamic-labs/wallet-book';
5
5
  import { KeplrWalletConnectV1 } from '../../cosmos/wcClient';
@@ -20,4 +20,4 @@ export declare const createSession: (client: Client) => Promise<PayloadParams>;
20
20
  export declare const useDeepLink: (metadata: WalletSchema, wcClient: Client, opts?: FetchPublicAddressOpts) => void;
21
21
  export declare const fetchWalletConnectCosmosPublicAddress: (metadata: WalletSchema, wcClient: Client, provider: KeplrWalletConnectV1, opts: FetchPublicAddressOpts & Required<Pick<FetchPublicAddressOpts, 'chainId'>>) => Promise<string>;
22
22
  export declare const fetchWalletConnectEVMPublicAddress: (metadata: WalletSchema, wcClient: Client, opts?: FetchPublicAddressOpts) => Promise<string | undefined>;
23
- export declare const signWalletConnectPersonalMessage: (messageToSign: string, metadata: WalletSchema, client: Client, rpcProvider?: () => Promise<ethers.providers.JsonRpcProvider | undefined>) => Promise<string | undefined>;
23
+ export declare const signWalletConnectPersonalMessage: (messageToSign: string, metadata: WalletSchema, client: Client, rpcProvider?: () => Promise<PublicClient | undefined>) => Promise<string | undefined>;
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import Client from '@walletconnect/client';
3
- import { Contract, ethers } from 'ethers';
3
+ import { hashMessage } from 'viem';
4
4
  import { isMobile, isIOS } from '../../../utils/isMobile.js';
5
5
  import { isSameAddress } from '../../../utils/isSameAddress/isSameAddress.js';
6
6
  import { logger } from '../../../utils/logger.js';
@@ -205,8 +205,7 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
205
205
  if (!rpcProvider) {
206
206
  return;
207
207
  }
208
- const contract = new Contract(accountPublicAddress, IS_VALID_SIGNATURE_ABI, yield rpcProvider());
209
- const safeTransactionPromise = waitForSafeTransaction(signature, messageToSign, contract);
208
+ const safeTransactionPromise = waitForSafeTransaction(accountPublicAddress, signature, messageToSign, yield rpcProvider());
210
209
  const timeoutPromise = new Promise((resolve) => {
211
210
  setTimeout(resolve, 120000);
212
211
  });
@@ -218,13 +217,18 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
218
217
  // the transaction is recorded first on the blockchain
219
218
  // redcoast verify WILL fail if it attempts to verify the signature
220
219
  // that has not yet been properly processed!
221
- const waitForSafeTransaction = (signature, messageToSign, contract) => __awaiter(void 0, void 0, void 0, function* () {
220
+ const waitForSafeTransaction = (address, signature, messageToSign, client) => __awaiter(void 0, void 0, void 0, function* () {
222
221
  // wait for safe wallet to finish txn on the blockchain contract
223
222
  for (let i = 0; i < 120; i++) {
224
223
  try {
225
224
  // this will result in an exception if the transaction is still not ready
226
225
  // we need to catch it below
227
- const result = yield contract.isValidSignature(ethers.utils.hashMessage(messageToSign), signature);
226
+ const result = yield (client === null || client === void 0 ? void 0 : client.readContract({
227
+ abi: IS_VALID_SIGNATURE_ABI,
228
+ address: address,
229
+ args: [hashMessage(messageToSign), signature],
230
+ functionName: 'isValidSignature',
231
+ }));
228
232
  if (result === MAGIC_VALUE)
229
233
  return;
230
234
  }
@@ -1,4 +1,4 @@
1
- import { ethers } from 'ethers';
1
+ import { WalletClient } from 'viem';
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,9 +18,11 @@ 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;
21
23
  get key(): string;
22
24
  private getClient;
23
- getWeb3Provider(): ethers.providers.Web3Provider | undefined;
25
+ getWeb3Provider(): WalletClient | undefined;
24
26
  fetchPublicAddress(): Promise<string | undefined>;
25
27
  connect(): Promise<void>;
26
28
  isInstalledOnBrowser(): boolean;
@@ -3,10 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
- var ethers = require('ethers');
7
- var errors = require('../../../../errors.cjs');
6
+ var viem = require('viem');
8
7
  var logger = require('../../../../utils/logger.cjs');
9
- var assignConfirmationScreenToProvider = require('../../../../utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs');
10
8
  var CancellablePromise = require('../../../../utils/CancellablePromise/CancellablePromise.cjs');
11
9
  var MagicClientNetworkHandler = require('../MagicClientNetworkHandler/MagicClientNetworkHandler.cjs');
12
10
 
@@ -84,12 +82,10 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
84
82
  }
85
83
  getBalance() {
86
84
  return tslib.__awaiter(this, void 0, void 0, function* () {
85
+ const signer = yield this.getSigner();
87
86
  const provider = yield this.getWeb3Provider();
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));
87
+ const [userAddress] = yield signer.getAddresses();
88
+ return viem.formatEther(yield provider.getBalance({ address: userAddress }));
93
89
  });
94
90
  }
95
91
  getConnectedAccounts() {
@@ -113,15 +109,37 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
113
109
  getSigner() {
114
110
  return tslib.__awaiter(this, void 0, void 0, function* () {
115
111
  const provider = yield this.getWeb3Provider();
116
- return provider.getSigner();
112
+ return viem.createWalletClient({ transport: viem.custom(provider) });
117
113
  });
118
114
  }
119
115
  getWeb3Provider() {
120
116
  return tslib.__awaiter(this, void 0, void 0, function* () {
121
117
  const client = this.getClient();
122
- const provider = new ethers.ethers.providers.Web3Provider(client.rpcProvider);
123
- assignConfirmationScreenToProvider.assignConfirmationScreenToProvider(provider, this._walletUiUtils);
124
- return provider;
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;
125
143
  });
126
144
  }
127
145
  isInstalledOnBrowser() {
@@ -140,8 +158,11 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
140
158
  }
141
159
  signMessage(messageToSign) {
142
160
  return tslib.__awaiter(this, void 0, void 0, function* () {
143
- const provider = yield this.getWeb3Provider();
144
- return provider.getSigner().signMessage(messageToSign);
161
+ const signer = yield this.getSigner();
162
+ return signer.signMessage({
163
+ account: (yield this.fetchPublicAddress()),
164
+ message: messageToSign,
165
+ });
145
166
  });
146
167
  }
147
168
  supportsNetworkSwitching() {
@@ -1,5 +1,5 @@
1
1
  import { LoginWithMagicLinkEvents, MagicUserMetadata, PromiEvent } from 'magic-sdk';
2
- import { ethers } from 'ethers';
2
+ import { PublicClient, WalletClient } from 'viem';
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 | ethers.providers.JsonRpcProvider | undefined>;
43
- getSigner(): Promise<ethers.providers.JsonRpcSigner | undefined>;
44
- getWeb3Provider(): Promise<ethers.providers.Web3Provider>;
42
+ getRpcProvider(): Promise<void | PublicClient | undefined>;
43
+ getSigner(): Promise<WalletClient>;
44
+ getWeb3Provider(): Promise<PublicClient>;
45
45
  isInstalledOnBrowser(): boolean;
46
46
  proveOwnership(messageToSign: string): Promise<string | undefined>;
47
47
  setupEventListeners(listeners: WalletEventListeners): void;