@dynamic-labs/multi-wallet 0.17.0-RC.0 → 0.17.0-RC.1

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 (112) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/package.json +3 -3
  3. package/src/index.cjs +2 -2
  4. package/src/index.d.ts +1 -1
  5. package/src/index.js +1 -1
  6. package/src/multi-wallet.cjs +5 -8
  7. package/src/multi-wallet.js +5 -8
  8. package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.d.ts +2 -2
  9. package/src/utils/isEmailWalletConnector/isEmailWalletConnector.d.ts +2 -2
  10. package/src/utils/message.cjs +1 -1
  11. package/src/utils/message.js +1 -1
  12. package/src/utils/walletConnect.cjs +1 -1
  13. package/src/wallets/algorand/{myalgo.cjs → MyAlgoWalletConnector.cjs} +4 -42
  14. package/src/wallets/algorand/MyAlgoWalletConnector.d.ts +21 -0
  15. package/src/wallets/algorand/{myalgo.js → MyAlgoWalletConnector.js} +4 -42
  16. package/src/wallets/clients/coinbase/coinbase.cjs +2 -6
  17. package/src/wallets/clients/coinbase/coinbase.js +1 -1
  18. package/src/wallets/cosmos/{keplrWalletConnect.cjs → KeplrWalletConnect.cjs} +9 -25
  19. package/src/wallets/cosmos/{keplrWalletConnect.d.ts → KeplrWalletConnect.d.ts} +6 -14
  20. package/src/wallets/cosmos/{keplrWalletConnect.js → KeplrWalletConnect.js} +9 -25
  21. package/src/wallets/cosmos/{keplr.cjs → KeplrWalletConnector.cjs} +5 -17
  22. package/src/wallets/cosmos/{keplr.d.ts → KeplrWalletConnector.d.ts} +5 -13
  23. package/src/wallets/cosmos/{keplr.js → KeplrWalletConnector.js} +5 -17
  24. package/src/wallets/cosmos/getKeplrConnector.cjs +6 -6
  25. package/src/wallets/cosmos/getKeplrConnector.d.ts +3 -3
  26. package/src/wallets/cosmos/getKeplrConnector.js +3 -3
  27. package/src/wallets/cosmos/index.d.ts +1 -1
  28. package/src/wallets/ethereum/BloctoEvm.cjs +2 -31
  29. package/src/wallets/ethereum/BloctoEvm.d.ts +4 -13
  30. package/src/wallets/ethereum/BloctoEvm.js +2 -31
  31. package/src/wallets/ethereum/{ethProvider.cjs → EthWalletConnector.cjs} +38 -18
  32. package/src/wallets/ethereum/{ethProvider.d.ts → EthWalletConnector.d.ts} +4 -4
  33. package/src/wallets/ethereum/{ethProvider.js → EthWalletConnector.js} +38 -18
  34. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.cjs +9 -4
  35. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.d.ts +5 -5
  36. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.js +9 -4
  37. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.cjs +1 -1
  38. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.d.ts +2 -2
  39. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.js +1 -1
  40. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.cjs +1 -2
  41. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.d.ts +2 -3
  42. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.js +1 -2
  43. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.cjs +0 -1
  44. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.js +0 -1
  45. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +6 -13
  46. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +3 -10
  47. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +6 -13
  48. package/src/wallets/ethereum/coinbase.cjs +2 -18
  49. package/src/wallets/ethereum/coinbase.d.ts +3 -8
  50. package/src/wallets/ethereum/coinbase.js +2 -18
  51. package/src/wallets/ethereum/ethProviderHelper.cjs +16 -9
  52. package/src/wallets/ethereum/ethProviderHelper.js +16 -9
  53. package/src/wallets/ethereum/fortmatic.cjs +2 -25
  54. package/src/wallets/ethereum/fortmatic.d.ts +3 -11
  55. package/src/wallets/ethereum/fortmatic.js +2 -25
  56. package/src/wallets/ethereum/meta-mask.cjs +2 -9
  57. package/src/wallets/ethereum/meta-mask.d.ts +3 -7
  58. package/src/wallets/ethereum/meta-mask.js +2 -9
  59. package/src/wallets/flow/{flow-provider.cjs → FlowWalletConnector.cjs} +6 -33
  60. package/src/wallets/flow/{flow-provider.d.ts → FlowWalletConnector.d.ts} +4 -11
  61. package/src/wallets/flow/{flow-provider.js → FlowWalletConnector.js} +6 -33
  62. package/src/wallets/flow/blocto.cjs +2 -10
  63. package/src/wallets/flow/blocto.d.ts +2 -8
  64. package/src/wallets/flow/blocto.js +2 -10
  65. package/src/wallets/flow/dapper.cjs +2 -10
  66. package/src/wallets/flow/dapper.d.ts +2 -8
  67. package/src/wallets/flow/dapper.js +2 -10
  68. package/src/wallets/flow/lilico.cjs +2 -11
  69. package/src/wallets/flow/lilico.d.ts +2 -9
  70. package/src/wallets/flow/lilico.js +2 -11
  71. package/src/wallets/getMobileOrInjectedWallet.cjs +1 -1
  72. package/src/wallets/getMobileOrInjectedWallet.d.ts +1 -3
  73. package/src/wallets/getWalletConnectConnector.cjs +3 -2
  74. package/src/wallets/getWalletConnectConnector.d.ts +2 -1
  75. package/src/wallets/getWalletConnectConnector.js +2 -1
  76. package/src/wallets/solana/CoinbaseSolana.cjs +2 -25
  77. package/src/wallets/solana/CoinbaseSolana.d.ts +3 -12
  78. package/src/wallets/solana/CoinbaseSolana.js +2 -25
  79. package/src/wallets/solana/glow.cjs +2 -25
  80. package/src/wallets/solana/glow.d.ts +3 -12
  81. package/src/wallets/solana/glow.js +2 -25
  82. package/src/wallets/solana/phantom.cjs +2 -25
  83. package/src/wallets/solana/phantom.d.ts +3 -12
  84. package/src/wallets/solana/phantom.js +2 -25
  85. package/src/wallets/solana/slope.cjs +2 -31
  86. package/src/wallets/solana/slope.d.ts +2 -14
  87. package/src/wallets/solana/slope.js +2 -31
  88. package/src/wallets/solana/{solProvider.cjs → solWalletConnector.cjs} +6 -11
  89. package/src/wallets/solana/{solProvider.d.ts → solWalletConnector.d.ts} +4 -4
  90. package/src/wallets/solana/{solProvider.js → solWalletConnector.js} +6 -11
  91. package/src/wallets/solana/solflare.cjs +2 -31
  92. package/src/wallets/solana/solflare.d.ts +2 -14
  93. package/src/wallets/solana/solflare.js +2 -31
  94. package/src/wallets/starknet/argentx.cjs +2 -2
  95. package/src/wallets/starknet/argentx.d.ts +1 -1
  96. package/src/wallets/starknet/argentx.js +2 -2
  97. package/src/wallets/starknet/braavos.cjs +2 -2
  98. package/src/wallets/starknet/braavos.d.ts +1 -1
  99. package/src/wallets/starknet/braavos.js +2 -2
  100. package/src/wallets/starknet/{starknetProvider.cjs → starknetWalletConnector.cjs} +4 -34
  101. package/src/wallets/starknet/{starknetProvider.d.ts → starknetWalletConnector.d.ts} +3 -14
  102. package/src/wallets/starknet/{starknetProvider.js → starknetWalletConnector.js} +4 -34
  103. package/src/wallets/walletConnect/walletConnect.cjs +2 -19
  104. package/src/wallets/walletConnect/walletConnect.d.ts +3 -8
  105. package/src/wallets/walletConnect/walletConnect.js +2 -19
  106. package/src/wallets/walletConnect/walletConnectV2.cjs +69 -83
  107. package/src/wallets/walletConnect/walletConnectV2.d.ts +10 -12
  108. package/src/wallets/walletConnect/walletConnectV2.js +69 -80
  109. package/src/wallets/algorand/myalgo.d.ts +0 -36
  110. package/src/wallets/initializeWalletProviders.cjs +0 -14
  111. package/src/wallets/initializeWalletProviders.d.ts +0 -6
  112. package/src/wallets/initializeWalletProviders.js +0 -10
@@ -1,13 +1,11 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { ethers } from 'ethers';
3
+ import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
3
4
  import { DynamicError } from '../../errors.js';
4
5
  import { getEvmDefaultRpcProvider, getEvmRpcProviderByChainId } from '../../rpcProviders.js';
5
6
  import { findEvmNetwork } from './evm-network.js';
6
7
 
7
- class EthProvider {
8
- getDeepLink() {
9
- return undefined;
10
- }
8
+ class EthWalletConnector extends WalletConnectorBase {
11
9
  getRpcProvider() {
12
10
  var _a, _b;
13
11
  return __awaiter(this, void 0, void 0, function* () {
@@ -28,19 +26,7 @@ class EthProvider {
28
26
  });
29
27
  }
30
28
  constructor({ evmNetworks }) {
31
- this.canConnectViaSocial = false;
32
- this.getBalance = () => __awaiter(this, void 0, void 0, function* () {
33
- var _a;
34
- // This is equivalent to getSigner().getAddress() but does not crash
35
- // if the signer is not available
36
- const [address] = yield this.getConnectedAccounts();
37
- if (!address)
38
- return;
39
- const result = yield ((_a = this.getWeb3Provider()) === null || _a === void 0 ? void 0 : _a.getBalance(address));
40
- if (!result)
41
- return;
42
- return ethers.utils.formatEther(result);
43
- });
29
+ super();
44
30
  this.evmNetworkRpcMap = () => this.evmNetworks.reduce((acc, network) => {
45
31
  var _a;
46
32
  [acc[network.chainId]] = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a.length)
@@ -62,12 +48,46 @@ class EthProvider {
62
48
  return Promise.resolve(network === null || network === void 0 ? void 0 : network.chainId);
63
49
  });
64
50
  }
51
+ getNameService() {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const [[address], provider] = yield Promise.all([
54
+ this.getConnectedAccounts(),
55
+ this.getRpcProvider(),
56
+ ]);
57
+ if (!address || !provider || !('lookupAddress' in provider)) {
58
+ return;
59
+ }
60
+ const [ensName, ensAvatar] = yield Promise.all([
61
+ provider.lookupAddress(address),
62
+ provider.getAvatar(address),
63
+ ]);
64
+ const ensData = {
65
+ avatar: ensAvatar !== null && ensAvatar !== void 0 ? ensAvatar : undefined,
66
+ name: ensName !== null && ensName !== void 0 ? ensName : undefined,
67
+ };
68
+ return ensData;
69
+ });
70
+ }
65
71
  getSigner() {
66
72
  var _a;
67
73
  return __awaiter(this, void 0, void 0, function* () {
68
74
  return (_a = this.getWeb3Provider()) === null || _a === void 0 ? void 0 : _a.getSigner();
69
75
  });
70
76
  }
77
+ getBalance() {
78
+ var _a;
79
+ return __awaiter(this, void 0, void 0, function* () {
80
+ // This is equivalent to getSigner().getAddress() but does not crash
81
+ // if the signer is not available
82
+ const [address] = yield this.getConnectedAccounts();
83
+ if (!address)
84
+ return;
85
+ const result = yield ((_a = this.getWeb3Provider()) === null || _a === void 0 ? void 0 : _a.getBalance(address));
86
+ if (!result)
87
+ return;
88
+ return ethers.utils.formatEther(result);
89
+ });
90
+ }
71
91
  supportsNetworkSwitching() {
72
92
  return true;
73
93
  }
@@ -164,4 +184,4 @@ class EthProvider {
164
184
  }
165
185
  }
166
186
 
167
- export { EthProvider };
187
+ export { EthWalletConnector };
@@ -15,11 +15,16 @@ class EmailMagicWalletConnector extends MagicWalletConnector.MagicWalletConnecto
15
15
  }
16
16
  setEmail(email) {
17
17
  this._email = email;
18
- localStorage.setItem('magic-link-email', email);
18
+ if (!email) {
19
+ localStorage.removeItem('magic-link-email');
20
+ }
21
+ else {
22
+ localStorage.setItem('magic-link-email', email);
23
+ }
24
+ this.cancelPreviousEmail();
19
25
  }
20
26
  clearEmail() {
21
- this._email = '';
22
- localStorage.removeItem('magic-link-email');
27
+ this.setEmail(undefined);
23
28
  }
24
29
  endSession() {
25
30
  const _super = Object.create(null, {
@@ -40,7 +45,7 @@ class EmailMagicWalletConnector extends MagicWalletConnector.MagicWalletConnecto
40
45
  const client = this._magicClient.getClient();
41
46
  const user = yield this.getUserMetadata();
42
47
  if (user && user.publicAddress) {
43
- this.setEmail((user === null || user === void 0 ? void 0 : user.email) || '');
48
+ this.setEmail(user === null || user === void 0 ? void 0 : user.email);
44
49
  return user.publicAddress;
45
50
  }
46
51
  const { email } = this;
@@ -1,10 +1,10 @@
1
- import { EmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
1
+ import { IEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
2
2
  import { MagicPromiEvent, MagicWalletConnector } from '../MagicWalletConnector';
3
- export declare class EmailMagicWalletConnector extends MagicWalletConnector implements EmailWalletConnector {
3
+ export declare class EmailMagicWalletConnector extends MagicWalletConnector implements IEmailWalletConnector {
4
4
  canConnectViaEmail: boolean;
5
- _email: string | undefined;
6
- get email(): string | undefined;
7
- setEmail(email: string): void;
5
+ protected _email: string | undefined | null;
6
+ get email(): string | null | undefined;
7
+ setEmail(email: EmailMagicWalletConnector['email']): void;
8
8
  clearEmail(): void;
9
9
  endSession(): Promise<void>;
10
10
  cancelPreviousEmail(): void;
@@ -11,11 +11,16 @@ class EmailMagicWalletConnector extends MagicWalletConnector {
11
11
  }
12
12
  setEmail(email) {
13
13
  this._email = email;
14
- localStorage.setItem('magic-link-email', email);
14
+ if (!email) {
15
+ localStorage.removeItem('magic-link-email');
16
+ }
17
+ else {
18
+ localStorage.setItem('magic-link-email', email);
19
+ }
20
+ this.cancelPreviousEmail();
15
21
  }
16
22
  clearEmail() {
17
- this._email = '';
18
- localStorage.removeItem('magic-link-email');
23
+ this.setEmail(undefined);
19
24
  }
20
25
  endSession() {
21
26
  const _super = Object.create(null, {
@@ -36,7 +41,7 @@ class EmailMagicWalletConnector extends MagicWalletConnector {
36
41
  const client = this._magicClient.getClient();
37
42
  const user = yield this.getUserMetadata();
38
43
  if (user && user.publicAddress) {
39
- this.setEmail((user === null || user === void 0 ? void 0 : user.email) || '');
44
+ this.setEmail(user === null || user === void 0 ? void 0 : user.email);
40
45
  return user.publicAddress;
41
46
  }
42
47
  const { email } = this;
@@ -37,7 +37,7 @@ class EmailOTPMagicWalletConnector extends EmailMagicWalletConnector.EmailMagicW
37
37
  const client = this._magicClient.getClient();
38
38
  const user = yield this.getUserMetadata();
39
39
  if (user && user.publicAddress) {
40
- this.setEmail((user === null || user === void 0 ? void 0 : user.email) || '');
40
+ this.setEmail(user === null || user === void 0 ? void 0 : user.email);
41
41
  return user.publicAddress;
42
42
  }
43
43
  const { email } = this;
@@ -1,9 +1,9 @@
1
1
  import { Magic } from 'magic-sdk';
2
- import { EmailOTPWalletConnector } from '@dynamic-labs/wallet-connector-core';
2
+ import { IEmailOTPWalletConnector } from '@dynamic-labs/wallet-connector-core';
3
3
  import { EmailMagicWalletConnector } from '../EmailMagicWalletConnector';
4
4
  import { MagicPromiEvent } from '../MagicWalletConnector';
5
5
  type LoginWithEmailOTPPromiEvent = ReturnType<Magic['auth']['loginWithEmailOTP']>;
6
- export declare class EmailOTPMagicWalletConnector extends EmailMagicWalletConnector implements EmailOTPWalletConnector {
6
+ export declare class EmailOTPMagicWalletConnector extends EmailMagicWalletConnector implements IEmailOTPWalletConnector {
7
7
  _handle: LoginWithEmailOTPPromiEvent | undefined;
8
8
  verifyOneTimePassword(otp: string): Promise<boolean>;
9
9
  loginWithMagic(): Promise<MagicPromiEvent | undefined>;
@@ -33,7 +33,7 @@ class EmailOTPMagicWalletConnector extends EmailMagicWalletConnector {
33
33
  const client = this._magicClient.getClient();
34
34
  const user = yield this.getUserMetadata();
35
35
  if (user && user.publicAddress) {
36
- this.setEmail((user === null || user === void 0 ? void 0 : user.email) || '');
36
+ this.setEmail(user === null || user === void 0 ? void 0 : user.email);
37
37
  return user.publicAddress;
38
38
  }
39
39
  const { email } = this;
@@ -17,12 +17,11 @@ const chainNameToChainIdMap = {
17
17
  sepolia: 11155111,
18
18
  };
19
19
  class MagicClientNetworkHandler {
20
- constructor({ apiKey, createClient, evmNetworks, config, }) {
20
+ constructor({ createClient, evmNetworks, config, }) {
21
21
  var _a, _b;
22
22
  this._clients = {};
23
23
  this.evmNetworks = [];
24
24
  this._config = config;
25
- this._apiKey = apiKey;
26
25
  this.evmNetworks = evmNetworks;
27
26
  this._networkId =
28
27
  typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
@@ -6,11 +6,10 @@ export type MagicLinkConfig = Pick<MagicSDKAdditionalConfiguration<string, Magic
6
6
  redirectURI?: string;
7
7
  };
8
8
  type ConfigForNetwork = MagicSDKAdditionalConfiguration<string, MagicSDKExtensionsOption<string>> | undefined;
9
- export type MagicClientNetworkHandlerProps<TClient> = Pick<MagicConnectorProps, 'apiKey' | 'config' | 'evmNetworks'> & {
9
+ export type MagicClientNetworkHandlerProps<TClient> = Pick<MagicConnectorProps, 'config' | 'evmNetworks'> & {
10
10
  createClient: (config: ConfigForNetwork) => TClient;
11
11
  };
12
12
  export declare class MagicClientNetworkHandler<TClient = unknown> {
13
- protected _apiKey: string;
14
13
  protected _clients: {
15
14
  [chainId: number]: TClient;
16
15
  };
@@ -19,7 +18,7 @@ export declare class MagicClientNetworkHandler<TClient = unknown> {
19
18
  protected _listeners: WalletEventListeners | undefined;
20
19
  evmNetworks: EvmNetwork[];
21
20
  protected _createClient: MagicClientNetworkHandlerProps<TClient>['createClient'];
22
- constructor({ apiKey, createClient, evmNetworks, config, }: MagicClientNetworkHandlerProps<TClient>);
21
+ constructor({ createClient, evmNetworks, config, }: MagicClientNetworkHandlerProps<TClient>);
23
22
  setListeners(listeners: WalletEventListeners | undefined): void;
24
23
  onChainChanged(networkChainId: number): void;
25
24
  selectNetwork(networkChainId: number): Promise<void>;
@@ -13,12 +13,11 @@ const chainNameToChainIdMap = {
13
13
  sepolia: 11155111,
14
14
  };
15
15
  class MagicClientNetworkHandler {
16
- constructor({ apiKey, createClient, evmNetworks, config, }) {
16
+ constructor({ createClient, evmNetworks, config, }) {
17
17
  var _a, _b;
18
18
  this._clients = {};
19
19
  this.evmNetworks = [];
20
20
  this._config = config;
21
- this._apiKey = apiKey;
22
21
  this.evmNetworks = evmNetworks;
23
22
  this._networkId =
24
23
  typeof (config === null || config === void 0 ? void 0 : config.network) === 'string'
@@ -14,7 +14,6 @@ class MagicSocialWalletConnector extends MagicWalletConnector.MagicWalletConnect
14
14
  super(opts);
15
15
  this.canConnectViaSocial = true;
16
16
  this._magicClient = new MagicClientNetworkHandler.MagicClientNetworkHandler({
17
- apiKey: opts.apiKey,
18
17
  config: opts.config,
19
18
  createClient: (config) => new magicSdk.Magic(opts.apiKey, Object.assign(Object.assign({}, config), { extensions: [new oauth.OAuthExtension()] })),
20
19
  evmNetworks: opts.evmNetworks,
@@ -10,7 +10,6 @@ class MagicSocialWalletConnector extends MagicWalletConnector {
10
10
  super(opts);
11
11
  this.canConnectViaSocial = true;
12
12
  this._magicClient = new MagicClientNetworkHandler({
13
- apiKey: opts.apiKey,
14
13
  config: opts.config,
15
14
  createClient: (config) => new Magic(opts.apiKey, Object.assign(Object.assign({}, config), { extensions: [new OAuthExtension()] })),
16
15
  evmNetworks: opts.evmNetworks,
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var tslib = require('tslib');
6
6
  var magicSdk = require('magic-sdk');
7
7
  var ethers = require('ethers');
8
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
9
  var errors = require('../../../../errors.cjs');
9
10
  var logger = require('../../../../utils/logger.cjs');
10
11
  var assignConfirmationScreenToProvider = require('../../../../utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs');
@@ -12,19 +13,17 @@ var CancellablePromise = require('../../../../utils/CancellablePromise/Cancellab
12
13
  var MagicClientNetworkHandler = require('../MagicClientNetworkHandler/MagicClientNetworkHandler.cjs');
13
14
 
14
15
  const storedAddressKey = 'dynamic_magic_address';
15
- class MagicWalletConnector {
16
+ class MagicWalletConnector extends walletConnectorCore.WalletConnectorBase {
17
+ get key() {
18
+ return 'magiclink';
19
+ }
16
20
  constructor({ apiKey, walletUiUtils, evmNetworks, config, }) {
17
- this.key = 'magiclink';
21
+ super();
18
22
  this.canConnectViaCustodialService = true;
19
- this.canConnectViaQrCode = false;
20
- this.canConnectViaSocial = false;
21
23
  this.connectedChain = 'EVM';
22
24
  this.supportedChains = ['ETH', 'EVM'];
23
- this.isWalletConnect = false;
24
25
  this.name = 'Magic Link';
25
- this.providerResources = undefined;
26
26
  this._magicClient = new MagicClientNetworkHandler.MagicClientNetworkHandler({
27
- apiKey,
28
27
  config,
29
28
  createClient: (config) => new magicSdk.Magic(apiKey, config),
30
29
  evmNetworks,
@@ -128,12 +127,6 @@ class MagicWalletConnector {
128
127
  return provider;
129
128
  });
130
129
  }
131
- isInstalledOnBrowser() {
132
- return false;
133
- }
134
- proveOwnership(messageToSign) {
135
- return this.signMessage(messageToSign);
136
- }
137
130
  setupEventListeners(listeners) {
138
131
  this._listeners = listeners;
139
132
  this._magicClient.setListeners(listeners);
@@ -1,7 +1,7 @@
1
1
  import { LoginWithMagicLinkEvents, Magic, MagicUserMetadata, PromiEvent } from 'magic-sdk';
2
2
  import { ethers } from 'ethers';
3
3
  import { OAuthExtension, OAuthProvider } from '@magic-ext/oauth';
4
- import { Chain, WalletConnector, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
4
+ import { Chain, WalletConnectorBase, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
5
5
  import { WalletUiUtils } from '../../../../types';
6
6
  import { CancellablePromise } from '../../../../utils/CancellablePromise';
7
7
  import { MagicLinkConfig, MagicClientNetworkHandler } from '../MagicClientNetworkHandler';
@@ -17,17 +17,12 @@ export type MagicPromiEvent = PromiEvent<string | null, LoginWithMagicLinkEvents
17
17
  error: (reason: any) => void;
18
18
  settled: () => void;
19
19
  }>;
20
- export declare abstract class MagicWalletConnector implements WalletConnector {
21
- key: string;
20
+ export declare abstract class MagicWalletConnector extends WalletConnectorBase {
21
+ get key(): string;
22
22
  canConnectViaCustodialService: boolean;
23
- canConnectViaQrCode: boolean;
24
- canConnectViaSocial: boolean;
25
23
  connectedChain: Chain;
26
24
  supportedChains: Chain[];
27
- isWalletConnect: boolean;
28
25
  name: string;
29
- switchNetworkOnlyFromWallet?: boolean;
30
- providerResources?: string[];
31
26
  evmNetworks: EvmNetwork[];
32
27
  _walletUiUtils: WalletUiUtils;
33
28
  _listeners: WalletEventListeners | undefined;
@@ -46,8 +41,6 @@ export declare abstract class MagicWalletConnector implements WalletConnector {
46
41
  getRpcProvider(): Promise<void | ethers.providers.JsonRpcProvider | undefined>;
47
42
  getSigner(): Promise<ethers.providers.JsonRpcSigner | undefined>;
48
43
  getWeb3Provider(): Promise<ethers.providers.Web3Provider>;
49
- isInstalledOnBrowser(): boolean;
50
- proveOwnership(messageToSign: string): Promise<string | undefined>;
51
44
  setupEventListeners(listeners: WalletEventListeners): void;
52
45
  signMessage(messageToSign: string): Promise<string | undefined>;
53
46
  supportsNetworkSwitching(): boolean;
@@ -1,6 +1,7 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { Magic } from 'magic-sdk';
3
3
  import { ethers } from 'ethers';
4
+ import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
4
5
  import { DynamicError } from '../../../../errors.js';
5
6
  import { logger } from '../../../../utils/logger.js';
6
7
  import { assignConfirmationScreenToProvider } from '../../../../utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js';
@@ -8,19 +9,17 @@ import { CancellablePromise } from '../../../../utils/CancellablePromise/Cancell
8
9
  import { MagicClientNetworkHandler } from '../MagicClientNetworkHandler/MagicClientNetworkHandler.js';
9
10
 
10
11
  const storedAddressKey = 'dynamic_magic_address';
11
- class MagicWalletConnector {
12
+ class MagicWalletConnector extends WalletConnectorBase {
13
+ get key() {
14
+ return 'magiclink';
15
+ }
12
16
  constructor({ apiKey, walletUiUtils, evmNetworks, config, }) {
13
- this.key = 'magiclink';
17
+ super();
14
18
  this.canConnectViaCustodialService = true;
15
- this.canConnectViaQrCode = false;
16
- this.canConnectViaSocial = false;
17
19
  this.connectedChain = 'EVM';
18
20
  this.supportedChains = ['ETH', 'EVM'];
19
- this.isWalletConnect = false;
20
21
  this.name = 'Magic Link';
21
- this.providerResources = undefined;
22
22
  this._magicClient = new MagicClientNetworkHandler({
23
- apiKey,
24
23
  config,
25
24
  createClient: (config) => new Magic(apiKey, config),
26
25
  evmNetworks,
@@ -124,12 +123,6 @@ class MagicWalletConnector {
124
123
  return provider;
125
124
  });
126
125
  }
127
- isInstalledOnBrowser() {
128
- return false;
129
- }
130
- proveOwnership(messageToSign) {
131
- return this.signMessage(messageToSign);
132
- }
133
126
  setupEventListeners(listeners) {
134
127
  this._listeners = listeners;
135
128
  this._magicClient.setListeners(listeners);
@@ -3,19 +3,16 @@
3
3
  var tslib = require('tslib');
4
4
  var ethers = require('ethers');
5
5
  var coinbase = require('../clients/coinbase/coinbase.cjs');
6
- var normalizeWalletName = require('../../utils/normalizeWalletName/normalizeWalletName.cjs');
7
6
  var ethProviderHelper = require('./ethProviderHelper.cjs');
8
- var ethProvider = require('./ethProvider.cjs');
7
+ var EthWalletConnector = require('./EthWalletConnector.cjs');
9
8
 
10
- class Coinbase extends ethProvider.EthProvider {
9
+ class Coinbase extends EthWalletConnector.EthWalletConnector {
11
10
  constructor({ appName, appLogoUrl, evmNetworks, }) {
12
11
  super({ evmNetworks });
13
12
  this.name = 'Coinbase';
14
13
  this.supportedChains = ['EVM', 'ETH'];
15
14
  this.connectedChain = 'EVM';
16
15
  this.canConnectViaQrCode = true;
17
- this.canConnectViaCustodialService = false;
18
- this.isWalletConnect = false;
19
16
  this.ethProviderHelper = new ethProviderHelper.EthProviderHelper();
20
17
  this.coinbaseProviderOpts = {
21
18
  appLogoUrl: appLogoUrl,
@@ -23,9 +20,6 @@ class Coinbase extends ethProvider.EthProvider {
23
20
  evmNetworks: evmNetworks,
24
21
  };
25
22
  }
26
- get key() {
27
- return normalizeWalletName.normalizeWalletName(this.name);
28
- }
29
23
  setupEventListeners(listeners) {
30
24
  return this.ethProviderHelper._setupEventListeners(listeners, this.getWeb3Provider());
31
25
  }
@@ -43,11 +37,6 @@ class Coinbase extends ethProvider.EthProvider {
43
37
  isInstalledOnBrowser() {
44
38
  return this.ethProviderHelper.isInstalledHelper(this.name);
45
39
  }
46
- connect() {
47
- return tslib.__awaiter(this, void 0, void 0, function* () {
48
- yield this.fetchPublicAddress();
49
- });
50
- }
51
40
  fetchPublicAddress(opts) {
52
41
  return tslib.__awaiter(this, void 0, void 0, function* () {
53
42
  if (this.isInstalledOnBrowser()) {
@@ -64,11 +53,6 @@ class Coinbase extends ethProvider.EthProvider {
64
53
  return coinbase.signMessage(this.coinbaseProviderOpts, messageToSign);
65
54
  });
66
55
  }
67
- proveOwnership(messageToSign) {
68
- return tslib.__awaiter(this, void 0, void 0, function* () {
69
- return this.signMessage(messageToSign);
70
- });
71
- }
72
56
  endSession() {
73
57
  return tslib.__awaiter(this, void 0, void 0, function* () {
74
58
  if (this.isInstalledOnBrowser())
@@ -1,15 +1,13 @@
1
1
  import { ethers } from 'ethers';
2
- import { Chain, FetchPublicAddressOpts, WalletConnector, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
2
+ import { Chain, FetchPublicAddressOpts, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
3
3
  import { EthProviderHelper } from './ethProviderHelper';
4
- import { EthProvider } from './ethProvider';
4
+ import { EthWalletConnector } from './EthWalletConnector';
5
5
  import { EvmNetwork } from './evm-network';
6
- declare class Coinbase extends EthProvider implements WalletConnector {
6
+ declare class Coinbase extends EthWalletConnector {
7
7
  name: string;
8
8
  supportedChains: Chain[];
9
9
  connectedChain: Chain;
10
10
  canConnectViaQrCode: boolean;
11
- canConnectViaCustodialService: boolean;
12
- isWalletConnect: boolean;
13
11
  ethProviderHelper: EthProviderHelper;
14
12
  private coinbaseProviderOpts;
15
13
  constructor({ appName, appLogoUrl, evmNetworks, }: {
@@ -17,15 +15,12 @@ declare class Coinbase extends EthProvider implements WalletConnector {
17
15
  appName?: string;
18
16
  evmNetworks: EvmNetwork[];
19
17
  });
20
- get key(): string;
21
18
  setupEventListeners(listeners: WalletEventListeners): () => void;
22
19
  teardownEventListeners(): void;
23
20
  getWeb3Provider(): ethers.providers.Web3Provider | undefined;
24
21
  isInstalledOnBrowser(): boolean;
25
- connect(): Promise<void>;
26
22
  fetchPublicAddress(opts?: FetchPublicAddressOpts): Promise<string | undefined>;
27
23
  signMessage(messageToSign: string): Promise<string | undefined>;
28
- proveOwnership(messageToSign: string): Promise<string | undefined>;
29
24
  endSession(): Promise<void>;
30
25
  }
31
26
  export default Coinbase;
@@ -1,19 +1,16 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { ethers } from 'ethers';
3
3
  import { getCoinbaseProvider, fetchPublicAddress, signMessage, killCoinbaseSession } from '../clients/coinbase/coinbase.js';
4
- import { normalizeWalletName } from '../../utils/normalizeWalletName/normalizeWalletName.js';
5
4
  import { EthProviderHelper } from './ethProviderHelper.js';
6
- import { EthProvider } from './ethProvider.js';
5
+ import { EthWalletConnector } from './EthWalletConnector.js';
7
6
 
8
- class Coinbase extends EthProvider {
7
+ class Coinbase extends EthWalletConnector {
9
8
  constructor({ appName, appLogoUrl, evmNetworks, }) {
10
9
  super({ evmNetworks });
11
10
  this.name = 'Coinbase';
12
11
  this.supportedChains = ['EVM', 'ETH'];
13
12
  this.connectedChain = 'EVM';
14
13
  this.canConnectViaQrCode = true;
15
- this.canConnectViaCustodialService = false;
16
- this.isWalletConnect = false;
17
14
  this.ethProviderHelper = new EthProviderHelper();
18
15
  this.coinbaseProviderOpts = {
19
16
  appLogoUrl: appLogoUrl,
@@ -21,9 +18,6 @@ class Coinbase extends EthProvider {
21
18
  evmNetworks: evmNetworks,
22
19
  };
23
20
  }
24
- get key() {
25
- return normalizeWalletName(this.name);
26
- }
27
21
  setupEventListeners(listeners) {
28
22
  return this.ethProviderHelper._setupEventListeners(listeners, this.getWeb3Provider());
29
23
  }
@@ -41,11 +35,6 @@ class Coinbase extends EthProvider {
41
35
  isInstalledOnBrowser() {
42
36
  return this.ethProviderHelper.isInstalledHelper(this.name);
43
37
  }
44
- connect() {
45
- return __awaiter(this, void 0, void 0, function* () {
46
- yield this.fetchPublicAddress();
47
- });
48
- }
49
38
  fetchPublicAddress(opts) {
50
39
  return __awaiter(this, void 0, void 0, function* () {
51
40
  if (this.isInstalledOnBrowser()) {
@@ -62,11 +51,6 @@ class Coinbase extends EthProvider {
62
51
  return signMessage(this.coinbaseProviderOpts, messageToSign);
63
52
  });
64
53
  }
65
- proveOwnership(messageToSign) {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- return this.signMessage(messageToSign);
68
- });
69
- }
70
54
  endSession() {
71
55
  return __awaiter(this, void 0, void 0, function* () {
72
56
  if (this.isInstalledOnBrowser())
@@ -150,7 +150,7 @@ class EthProviderHelper {
150
150
  // nothing to teardown
151
151
  };
152
152
  }
153
- const provider = web3Provider.provider;
153
+ const externalProvider = web3Provider.provider;
154
154
  this.handleAccountChange = (accounts) => tslib.__awaiter(this, void 0, void 0, function* () {
155
155
  var _a, _b;
156
156
  if (accounts.length === 0) {
@@ -171,19 +171,26 @@ class EthProviderHelper {
171
171
  }
172
172
  yield ((_d = listeners.onDisconnect) === null || _d === void 0 ? void 0 : _d.call(listeners));
173
173
  });
174
- provider.on('accountsChanged', this.handleAccountChange);
175
- provider.on('chainChanged', this.handleChainChange);
176
- provider.on('disconnect', this.handleDisconnect);
174
+ externalProvider.on('accountsChanged', this.handleAccountChange);
175
+ externalProvider.on('chainChanged', this.handleChainChange);
176
+ externalProvider.on('disconnect', this.handleDisconnect);
177
177
  return () => { };
178
178
  }
179
179
  _teardownEventListeners(name) {
180
180
  const web3Provider = this.findProvider(name);
181
- if (!web3Provider) {
182
- return;
181
+ if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
182
+ throw new Error(`Could not find provider for ${name}`);
183
+ }
184
+ const externalProvider = web3Provider.provider;
185
+ if (this.handleAccountChange) {
186
+ externalProvider.removeListener('accountsChanged', this.handleAccountChange);
187
+ }
188
+ if (this.handleChainChange) {
189
+ externalProvider.removeListener('chainChanged', this.handleChainChange);
190
+ }
191
+ if (this.handleDisconnect) {
192
+ externalProvider.removeListener('disconnect', this.handleDisconnect);
183
193
  }
184
- web3Provider.off('accountsChanged', this.handleAccountChange);
185
- web3Provider.off('chainChangedm', this.handleChainChange);
186
- web3Provider.off('disconnect', this.handleDisconnect);
187
194
  }
188
195
  }
189
196
 
@@ -146,7 +146,7 @@ class EthProviderHelper {
146
146
  // nothing to teardown
147
147
  };
148
148
  }
149
- const provider = web3Provider.provider;
149
+ const externalProvider = web3Provider.provider;
150
150
  this.handleAccountChange = (accounts) => __awaiter(this, void 0, void 0, function* () {
151
151
  var _a, _b;
152
152
  if (accounts.length === 0) {
@@ -167,19 +167,26 @@ class EthProviderHelper {
167
167
  }
168
168
  yield ((_d = listeners.onDisconnect) === null || _d === void 0 ? void 0 : _d.call(listeners));
169
169
  });
170
- provider.on('accountsChanged', this.handleAccountChange);
171
- provider.on('chainChanged', this.handleChainChange);
172
- provider.on('disconnect', this.handleDisconnect);
170
+ externalProvider.on('accountsChanged', this.handleAccountChange);
171
+ externalProvider.on('chainChanged', this.handleChainChange);
172
+ externalProvider.on('disconnect', this.handleDisconnect);
173
173
  return () => { };
174
174
  }
175
175
  _teardownEventListeners(name) {
176
176
  const web3Provider = this.findProvider(name);
177
- if (!web3Provider) {
178
- return;
177
+ if (!web3Provider || !(web3Provider === null || web3Provider === void 0 ? void 0 : web3Provider.provider)) {
178
+ throw new Error(`Could not find provider for ${name}`);
179
+ }
180
+ const externalProvider = web3Provider.provider;
181
+ if (this.handleAccountChange) {
182
+ externalProvider.removeListener('accountsChanged', this.handleAccountChange);
183
+ }
184
+ if (this.handleChainChange) {
185
+ externalProvider.removeListener('chainChanged', this.handleChainChange);
186
+ }
187
+ if (this.handleDisconnect) {
188
+ externalProvider.removeListener('disconnect', this.handleDisconnect);
179
189
  }
180
- web3Provider.off('accountsChanged', this.handleAccountChange);
181
- web3Provider.off('chainChangedm', this.handleChainChange);
182
- web3Provider.off('disconnect', this.handleDisconnect);
183
190
  }
184
191
  }
185
192