@dynamic-labs/multi-wallet 0.17.0-RC.5 → 0.17.0-RC.7

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 (69) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/package.json +7 -4
  3. package/src/index.cjs +0 -5
  4. package/src/index.d.ts +0 -2
  5. package/src/index.js +0 -1
  6. package/src/multi-wallet.cjs +45 -76
  7. package/src/multi-wallet.js +45 -76
  8. package/src/types.d.ts +9 -28
  9. package/src/utils/findProvider/findProvider.cjs +7 -0
  10. package/src/utils/findProvider/findProvider.d.ts +2 -0
  11. package/src/utils/findProvider/findProvider.js +3 -0
  12. package/src/utils/findProvider/index.d.ts +1 -0
  13. package/src/utils/message.d.ts +2 -2
  14. package/src/utils/walletConnect.cjs +21 -20
  15. package/src/utils/walletConnect.d.ts +4 -3
  16. package/src/utils/walletConnect.js +21 -20
  17. package/src/wallets/clients/coinbase/types.d.ts +2 -2
  18. package/src/wallets/clients/walletConnect/walletConnect.cjs +8 -13
  19. package/src/wallets/clients/walletConnect/walletConnect.js +8 -13
  20. package/src/wallets/cosmos/KeplrWalletConnect.cjs +7 -6
  21. package/src/wallets/cosmos/KeplrWalletConnect.d.ts +3 -3
  22. package/src/wallets/cosmos/KeplrWalletConnect.js +7 -6
  23. package/src/wallets/cosmos/KeplrWalletConnector.cjs +9 -2
  24. package/src/wallets/cosmos/KeplrWalletConnector.d.ts +5 -3
  25. package/src/wallets/cosmos/KeplrWalletConnector.js +9 -2
  26. package/src/wallets/cosmos/getKeplrConnector.d.ts +2 -2
  27. package/src/wallets/ethereum/BloctoEvm.cjs +7 -7
  28. package/src/wallets/ethereum/BloctoEvm.d.ts +2 -5
  29. package/src/wallets/ethereum/BloctoEvm.js +7 -7
  30. package/src/wallets/ethereum/EthWalletConnector.cjs +27 -11
  31. package/src/wallets/ethereum/EthWalletConnector.d.ts +7 -4
  32. package/src/wallets/ethereum/EthWalletConnector.js +27 -11
  33. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.cjs +5 -4
  34. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.d.ts +3 -3
  35. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.js +5 -4
  36. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.cjs +1 -0
  37. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.js +1 -0
  38. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +4 -2
  39. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +4 -3
  40. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +4 -2
  41. package/src/wallets/ethereum/coinbase.cjs +3 -2
  42. package/src/wallets/ethereum/coinbase.d.ts +6 -7
  43. package/src/wallets/ethereum/coinbase.js +4 -3
  44. package/src/wallets/ethereum/evm-network.cjs +2 -2
  45. package/src/wallets/ethereum/evm-network.d.ts +1 -17
  46. package/src/wallets/ethereum/evm-network.js +2 -2
  47. package/src/wallets/ethereum/fortmatic.cjs +3 -2
  48. package/src/wallets/ethereum/fortmatic.d.ts +5 -6
  49. package/src/wallets/ethereum/fortmatic.js +4 -3
  50. package/src/wallets/ethereum/meta-mask.d.ts +1 -1
  51. package/src/wallets/getMobileOrInjectedWallet.cjs +5 -9
  52. package/src/wallets/getMobileOrInjectedWallet.d.ts +5 -4
  53. package/src/wallets/getMobileOrInjectedWallet.js +5 -9
  54. package/src/wallets/getWalletConnectConnector.cjs +7 -10
  55. package/src/wallets/getWalletConnectConnector.d.ts +2 -5
  56. package/src/wallets/getWalletConnectConnector.js +7 -10
  57. package/src/wallets/solana/solWalletConnector.cjs +22 -4
  58. package/src/wallets/solana/solWalletConnector.d.ts +8 -5
  59. package/src/wallets/solana/solWalletConnector.js +22 -4
  60. package/src/wallets/walletConnect/walletConnect.cjs +3 -2
  61. package/src/wallets/walletConnect/walletConnect.d.ts +6 -6
  62. package/src/wallets/walletConnect/walletConnect.js +4 -3
  63. package/src/wallets/walletConnect/walletConnectV2.cjs +1 -1
  64. package/src/wallets/walletConnect/walletConnectV2.d.ts +7 -7
  65. package/src/wallets/walletConnect/walletConnectV2.js +1 -1
  66. package/src/wallets/walletConnect/zerion.d.ts +2 -4
  67. package/src/rpcProviders.cjs +0 -76
  68. package/src/rpcProviders.d.ts +0 -5
  69. package/src/rpcProviders.js +0 -69
package/CHANGELOG.md CHANGED
@@ -1,4 +1,43 @@
1
1
 
2
+ ## [0.17.0-RC.7](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.6...v0.17.0-RC.7) (2023-04-28)
3
+
4
+
5
+ ### ⚠ BREAKING CHANGES
6
+
7
+ * EvmNetwork has deprecated `chainName` and replaced it with `name` with the exact same value.
8
+ Additionally, calling `walletConnector.getNetwork()` or `walletConnector.switchNetwork()` are generic network types of `string | number`
9
+
10
+ If for example, you know you are working with an EVM network, you can type cast with `walletConnector.getNetwork<number>()` to work nicely in typescript.
11
+
12
+ * feat: add network config version to invalidate local storage cache if new version is available
13
+
14
+ ### Features
15
+
16
+ * added onramp funding UI ([#1884](https://github.com/dynamic-labs/DynamicAuth/issues/1884)) ([d2d9895](https://github.com/dynamic-labs/DynamicAuth/commit/d2d98953b511ebe4aa62b6b5c9cd36c15e1fef97))
17
+ * create useNameService hook ([#1909](https://github.com/dynamic-labs/DynamicAuth/issues/1909)) ([78fd40a](https://github.com/dynamic-labs/DynamicAuth/commit/78fd40a7781fd907b6b807c544b5840fab30009a))
18
+ * **DYN-2235:** automatically move customer to the next step after updating their network ([#1999](https://github.com/dynamic-labs/DynamicAuth/issues/1999)) ([7721f51](https://github.com/dynamic-labs/DynamicAuth/commit/7721f51a92a899613c63a0bdc4d3504ab5d027b7))
19
+ * expose getNameService to useDynamicContext and add it to walletkitactions ([#1987](https://github.com/dynamic-labs/DynamicAuth/issues/1987)) ([48ac670](https://github.com/dynamic-labs/DynamicAuth/commit/48ac670bf086a67648c8853329a8069ba3905d36))
20
+ * **magic-link:** add default chain id to magic connector ([#1946](https://github.com/dynamic-labs/DynamicAuth/issues/1946)) ([8b64d96](https://github.com/dynamic-labs/DynamicAuth/commit/8b64d9680525e4882c390667f98d778ce887343e))
21
+
22
+
23
+ ### Bug Fixes
24
+
25
+ * call authSucces in missing places ([#1961](https://github.com/dynamic-labs/DynamicAuth/issues/1961)) ([c61ee5b](https://github.com/dynamic-labs/DynamicAuth/commit/c61ee5bac965a0b7c8f62ee8a5aa0167b1aa190b)), closes [#1963](https://github.com/dynamic-labs/DynamicAuth/issues/1963)
26
+ * display ens info when there's any ([#1973](https://github.com/dynamic-labs/DynamicAuth/issues/1973)) ([9b14dbe](https://github.com/dynamic-labs/DynamicAuth/commit/9b14dbe69043933edce7f0cecc0406f6d7c7a45d))
27
+ * revert trigger onAuthSuccess on additional flows ([#1953](https://github.com/dynamic-labs/DynamicAuth/issues/1953)) ([#1960](https://github.com/dynamic-labs/DynamicAuth/issues/1960)) ([fb10791](https://github.com/dynamic-labs/DynamicAuth/commit/fb107914eb799692e25d4fa63229ad66967bd3aa))
28
+ * show 'install extension' prompt when selecting a secondary wallet that cannot be detected ([#1948](https://github.com/dynamic-labs/DynamicAuth/issues/1948)) ([b6593c1](https://github.com/dynamic-labs/DynamicAuth/commit/b6593c19fe8edaefeca3fa9b8b1d5c64f7c3b9f9))
29
+ * support both number and string types for chainId regardless of chain ([#1978](https://github.com/dynamic-labs/DynamicAuth/issues/1978)) ([25fcc96](https://github.com/dynamic-labs/DynamicAuth/commit/25fcc969129be832cc0e9c68edc04773944dacae))
30
+ * update setPrimaryWallet return type ([#1983](https://github.com/dynamic-labs/DynamicAuth/issues/1983)) ([0724a4b](https://github.com/dynamic-labs/DynamicAuth/commit/0724a4bcaee25639b29335a91824dcaedb7b0330))
31
+ * update walletconnect disconned callback to reject instead of throwing an error ([#1992](https://github.com/dynamic-labs/DynamicAuth/issues/1992)) ([da726cf](https://github.com/dynamic-labs/DynamicAuth/commit/da726cfca67c945026bd29c6db7f8c6fef910b4d))
32
+
33
+ ## [0.17.0-RC.6](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.5...v0.17.0-RC.6) (2023-04-25)
34
+
35
+
36
+ ### Bug Fixes
37
+
38
+ * pass autoConnect to true on wagmi client ([#1957](https://github.com/dynamic-labs/DynamicAuth/issues/1957)) ([10b9df8](https://github.com/dynamic-labs/DynamicAuth/commit/10b9df87374e9d4c4d85b98110cc10e84ed35cb8))
39
+ * trigger onAuthSuccess on additional flows ([#1953](https://github.com/dynamic-labs/DynamicAuth/issues/1953)) ([a485231](https://github.com/dynamic-labs/DynamicAuth/commit/a4852312bc8a11136b391ca59d38755397c00f76))
40
+
2
41
  ## [0.17.0-RC.5](https://github.com/dynamic-labs/DynamicAuth/compare/v0.17.0-RC.4...v0.17.0-RC.5) (2023-04-24)
3
42
 
4
43
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/multi-wallet",
3
- "version": "0.17.0-RC.5",
3
+ "version": "0.17.0-RC.7",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -9,7 +9,7 @@
9
9
  "dependencies": {
10
10
  "buffer": "^6.0.3",
11
11
  "deepmerge": "^4.3.1",
12
- "@dynamic-labs/sdk-api": "0.0.178",
12
+ "@dynamic-labs/sdk-api": "0.0.183",
13
13
  "@dynamic-labs/wallet-book": "^0.0.11",
14
14
  "@magic-ext/oauth": "^10.2.0",
15
15
  "starknet": "^3.19.0",
@@ -29,8 +29,11 @@
29
29
  "magic-sdk": "^16.0.1",
30
30
  "@keplr-wallet/provider": "0.11.56",
31
31
  "@keplr-wallet/types": "^0.11.51",
32
- "@dynamic-labs/logger": "0.17.0-RC.5",
33
- "@dynamic-labs/wallet-connector-core": "0.17.0-RC.5"
32
+ "@dynamic-labs/logger": "0.17.0-RC.7",
33
+ "@dynamic-labs/rpc-providers": "0.17.0-RC.7",
34
+ "@dynamic-labs/types": "0.17.0-RC.7",
35
+ "@dynamic-labs/utils": "0.17.0-RC.7",
36
+ "@dynamic-labs/wallet-connector-core": "0.17.0-RC.7"
34
37
  },
35
38
  "devDependencies": {
36
39
  "@walletconnect/types": "^2.2.1"
package/src/index.cjs CHANGED
@@ -5,7 +5,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  require('./polyfills.cjs');
6
6
  var multiWallet = require('./multi-wallet.cjs');
7
7
  var errors = require('./errors.cjs');
8
- var rpcProviders = require('./rpcProviders.cjs');
9
8
  var logger = require('./utils/logger.cjs');
10
9
  var EmailMagicWalletConnector = require('./wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.cjs');
11
10
  var MagicWalletConnector = require('./wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs');
@@ -42,10 +41,6 @@ exports.NotSupportedError = errors.NotSupportedError;
42
41
  exports.UsernameAlreadyExistsError = errors.UsernameAlreadyExistsError;
43
42
  exports.WalletNotDeployedError = errors.WalletNotDeployedError;
44
43
  exports.WalletUsedError = errors.WalletUsedError;
45
- exports.getEvmDefaultRpcProvider = rpcProviders.getEvmDefaultRpcProvider;
46
- exports.getEvmRpcProviderByChainId = rpcProviders.getEvmRpcProviderByChainId;
47
- exports.getRpcProviders = rpcProviders.getRpcProviders;
48
- exports.getSolanaDefaultRpcProvider = rpcProviders.getSolanaDefaultRpcProvider;
49
44
  exports.logger = logger.logger;
50
45
  exports.EmailMagicWalletConnector = EmailMagicWalletConnector.EmailMagicWalletConnector;
51
46
  exports.MagicWalletConnector = MagicWalletConnector.MagicWalletConnector;
package/src/index.d.ts CHANGED
@@ -2,7 +2,6 @@ import './polyfills';
2
2
  export * from './multi-wallet';
3
3
  export * from './types';
4
4
  export * from './errors';
5
- export * from './rpcProviders';
6
5
  export * from './utils/logger';
7
6
  export * from './wallets/ethereum/MagicConnector';
8
7
  export { generateMessageToSign } from './utils/message';
@@ -15,7 +14,6 @@ export { getChainInfo } from './utils/getChainInfo';
15
14
  export { getWalletConnectorByName } from './utils/getWalletConnectorByName';
16
15
  export * from './wallets/clients/walletConnect';
17
16
  export * from './wallets/clients/coinbase';
18
- export type { EvmNetwork } from './wallets/ethereum/evm-network';
19
17
  export { KeplrWalletConnector } from './wallets/cosmos/KeplrWalletConnector';
20
18
  export * from './utils/isSameAddress';
21
19
  export { DEFAULT_STARKNET_TYPED_DATA_DOMAIN as defaultStarknetTypedDataDomain } from './wallets/constants';
package/src/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  import './polyfills.js';
2
2
  export { filteredWalletConnectWallets, getEnabledWallets, getSupportedChainsForWalletConnector, getSupportedWallets } from './multi-wallet.js';
3
3
  export { ChainalysisError, DynamicError, EmailAlreadyExistsError, EmailVerificationError, NoAccessError, NotSupportedError, UsernameAlreadyExistsError, WalletNotDeployedError, WalletUsedError } from './errors.js';
4
- export { getEvmDefaultRpcProvider, getEvmRpcProviderByChainId, getRpcProviders, getSolanaDefaultRpcProvider } from './rpcProviders.js';
5
4
  export { logger } from './utils/logger.js';
6
5
  export { EmailMagicWalletConnector } from './wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.js';
7
6
  export { MagicWalletConnector } from './wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js';
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib = require('tslib');
6
6
  var walletBook = require('@dynamic-labs/wallet-book');
7
+ var sdkApi = require('@dynamic-labs/sdk-api');
7
8
  var phantom = require('./wallets/solana/phantom.cjs');
8
9
  var coinbase = require('./wallets/ethereum/coinbase.cjs');
9
10
  var slope = require('./wallets/solana/slope.cjs');
@@ -36,6 +37,7 @@ var PhantomEvm = require('./wallets/ethereum/injected/PhantomEvm.cjs');
36
37
  require('magic-sdk');
37
38
  require('ethers');
38
39
  require('@dynamic-labs/wallet-connector-core');
40
+ require('@dynamic-labs/utils');
39
41
  require('./utils/logger.cjs');
40
42
  var EmailOTPMagicWalletConnector = require('./wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.cjs');
41
43
  var MagicSocialWalletConnector = require('./wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.cjs');
@@ -45,6 +47,7 @@ var Zerion = require('./wallets/ethereum/injected/Zerion.cjs');
45
47
  var getMobileOrInjectedWallet = require('./wallets/getMobileOrInjectedWallet.cjs');
46
48
  var metaMask = require('./wallets/ethereum/meta-mask.cjs');
47
49
  var Trust = require('./wallets/ethereum/injected/Trust.cjs');
50
+ var findProvider = require('./utils/findProvider/findProvider.cjs');
48
51
 
49
52
  let wallets = [];
50
53
  // These wallets are either not supported or implement their
@@ -68,102 +71,68 @@ const defaultWalletUiUtils = {
68
71
  throw Error('signMessage not implemented');
69
72
  },
70
73
  };
71
- const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, networkConfigurations, skipMemo, vendorCredentials, walletConnectProjectId, walletUiUtils, magicLinkApiKey, magicLinkConfig, } = {
72
- appLogoUrl: '',
73
- appName: '',
74
- isWalletConnectV2Enabled: false,
75
- networkConfigurations: { cosmos: [], evm: [], solana: [], starknet: [] },
76
- skipMemo: false,
77
- vendorCredentials: {},
78
- walletConnectProjectId: '',
79
- }) => tslib.__awaiter(void 0, void 0, void 0, function* () {
74
+ const getSupportedWallets = (args) => tslib.__awaiter(void 0, void 0, void 0, function* () {
75
+ const { appLogoUrl = '', appName = '', chainRpcProviders, isWalletConnectV2Enabled = false, magicLinkConfig = undefined, networkConfigurations = { cosmos: [], evm: [], solana: [], starknet: [] }, providers = [], skipMemo = false, vendorCredentials = {}, walletConnectProjectId = '', walletUiUtils = undefined, } = args;
80
76
  if (!skipMemo && wallets.length > 0) {
81
77
  return wallets;
82
78
  }
83
79
  const evmNetworkConfigs = (networkConfigurations === null || networkConfigurations === void 0 ? void 0 : networkConfigurations.evm) || [];
84
80
  const solanaNetworkConfigs = (networkConfigurations === null || networkConfigurations === void 0 ? void 0 : networkConfigurations.solana) || [];
85
81
  const cosmosNetworkConfigs = (networkConfigurations === null || networkConfigurations === void 0 ? void 0 : networkConfigurations.cosmos) || [];
86
- const walletConnectWallets = walletConnect.fetchWalletConnectWallets(evmNetworkConfigs, isWalletConnectV2Enabled);
82
+ const magicLinkProvider = findProvider.findProvider(providers, sdkApi.ProviderEnum.MagicLink);
83
+ const opts = {
84
+ appLogoUrl,
85
+ appName,
86
+ chainRpcProviders,
87
+ evmNetworks: evmNetworkConfigs,
88
+ solNetworks: solanaNetworkConfigs,
89
+ walletUiUtils: walletUiUtils || defaultWalletUiUtils,
90
+ };
91
+ const walletConnectWallets = walletConnect.fetchWalletConnectWallets(Object.assign(Object.assign({}, opts), { isV2Enabled: isWalletConnectV2Enabled }));
87
92
  // temporary hack to filter out metamask, which currently has walletconnect
88
93
  // functionality built-in
89
94
  const filtered = walletConnectWallets.filter(({ name }) => !filteredWalletConnectWallets.includes(name));
90
95
  const allWallets = [
91
- new Dawn({ evmNetworks: evmNetworkConfigs }),
92
- new phantom({ solNetworks: solanaNetworkConfigs }),
93
- getMobileOrInjectedWallet.getMobileOrInjectedWallet({
94
- evmNetworks: evmNetworkConfigs,
95
- injectedWallet: new metaMask({ evmNetworks: evmNetworkConfigs }),
96
- isWalletConnectV2: isWalletConnectV2Enabled,
97
- walletConnectName: 'MetaMask',
98
- }),
99
- getMobileOrInjectedWallet.getMobileOrInjectedWallet({
100
- evmNetworks: evmNetworkConfigs,
101
- injectedWallet: new Trust({ evmNetworks: evmNetworkConfigs }),
102
- isWalletConnectV2: isWalletConnectV2Enabled,
103
- walletConnectName: 'Trust',
104
- }),
105
- new PhantomEvm({ evmNetworks: evmNetworkConfigs }),
106
- new phantomLedger["default"]({ solNetworks: solanaNetworkConfigs }),
107
- new coinbase({
108
- appLogoUrl,
109
- appName,
110
- evmNetworks: evmNetworkConfigs,
111
- }),
112
- new solflare({ solNetworks: solanaNetworkConfigs }),
113
- new glow({ solNetworks: solanaNetworkConfigs }),
114
- new slope({ solNetworks: solanaNetworkConfigs }),
115
- new dapper({ appLogoUrl, appName }),
116
- new blocto({ appLogoUrl, appName }),
117
- new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
118
- new BloctoInjected({ evmNetworks: evmNetworkConfigs }),
119
- getWalletConnectConnector.getWalletConnectConnector({
120
- evmNetworks: evmNetworkConfigs,
121
- isWalletConnectV2Enabled,
122
- projectId: walletConnectProjectId,
123
- }),
124
- new BraveSol({ solNetworks: solanaNetworkConfigs }),
125
- new BraveEvm({ evmNetworks: evmNetworkConfigs }),
126
- new UnknownInjectedWallet({ evmNetworks: evmNetworkConfigs }),
127
- new GameStop({ evmNetworks: evmNetworkConfigs }),
128
- new ExodusEvm({ evmNetworks: evmNetworkConfigs }),
129
- new ExodusSol({ solNetworks: solanaNetworkConfigs }),
130
- new Opera({ evmNetworks: evmNetworkConfigs }),
131
- ...(magicLinkApiKey
96
+ new Dawn(opts),
97
+ new phantom(opts),
98
+ getMobileOrInjectedWallet.getMobileOrInjectedWallet(Object.assign(Object.assign({}, opts), { injectedWallet: new metaMask(opts), isWalletConnectV2: isWalletConnectV2Enabled, walletName: 'MetaMask' })),
99
+ getMobileOrInjectedWallet.getMobileOrInjectedWallet(Object.assign(Object.assign({}, opts), { injectedWallet: new Trust(opts), isWalletConnectV2: isWalletConnectV2Enabled, walletName: 'Trust' })),
100
+ new PhantomEvm(opts),
101
+ new phantomLedger["default"](opts),
102
+ new coinbase(opts),
103
+ new solflare(opts),
104
+ new glow(opts),
105
+ new slope(opts),
106
+ new dapper(opts),
107
+ new blocto(opts),
108
+ new BloctoEvm(opts),
109
+ new BloctoInjected(opts),
110
+ getWalletConnectConnector.getWalletConnectConnector(Object.assign(Object.assign({}, opts), { isWalletConnectV2Enabled, projectId: walletConnectProjectId })),
111
+ new BraveSol(opts),
112
+ new BraveEvm(opts),
113
+ new UnknownInjectedWallet(opts),
114
+ new GameStop(opts),
115
+ new ExodusEvm(opts),
116
+ new ExodusSol(opts),
117
+ new Opera(opts),
118
+ ...((magicLinkProvider === null || magicLinkProvider === void 0 ? void 0 : magicLinkProvider.providerProjectId)
132
119
  ? [
133
- new EmailOTPMagicWalletConnector.EmailOTPMagicWalletConnector({
134
- apiKey: magicLinkApiKey,
135
- config: magicLinkConfig,
136
- evmNetworks: evmNetworkConfigs,
137
- walletUiUtils: walletUiUtils || defaultWalletUiUtils,
138
- }),
139
- new MagicSocialWalletConnector.MagicSocialWalletConnector({
140
- apiKey: magicLinkApiKey,
141
- config: magicLinkConfig,
142
- evmNetworks: evmNetworkConfigs,
143
- walletUiUtils: walletUiUtils || defaultWalletUiUtils,
144
- }),
120
+ new EmailOTPMagicWalletConnector.EmailOTPMagicWalletConnector(Object.assign(Object.assign({}, opts), { apiKey: magicLinkProvider.providerProjectId, config: magicLinkConfig, defaultChainId: magicLinkProvider.defaultChainId })),
121
+ new MagicSocialWalletConnector.MagicSocialWalletConnector(Object.assign(Object.assign({}, opts), { apiKey: magicLinkProvider.providerProjectId, config: magicLinkConfig, defaultChainId: magicLinkProvider.defaultChainId })),
145
122
  ]
146
123
  : []),
147
124
  new MyAlgoWalletConnector(),
148
125
  new argentx(),
149
126
  new braavos(),
150
- new CoinbaseSolana({ solNetworks: solanaNetworkConfigs }),
151
- new Frame({ evmNetworks: evmNetworkConfigs }),
152
- new lilico({ appLogoUrl, appName }),
153
- getMobileOrInjectedWallet.getMobileOrInjectedWallet({
154
- evmNetworks: evmNetworkConfigs,
155
- injectedWallet: new Zerion({ evmNetworks: evmNetworkConfigs }),
156
- isWalletConnectV2: isWalletConnectV2Enabled,
157
- walletConnectName: 'Zerion',
158
- }),
127
+ new CoinbaseSolana(opts),
128
+ new Frame(opts),
129
+ new lilico(opts),
130
+ getMobileOrInjectedWallet.getMobileOrInjectedWallet(Object.assign(Object.assign({}, opts), { injectedWallet: new Zerion(opts), isWalletConnectV2: isWalletConnectV2Enabled, walletName: 'Zerion' })),
159
131
  //TODO: https://linear.app/dynamic-labs/issue/DYN-2127/rename-evmnetworks-to-networks-across-the-application
160
132
  getKeplrConnector.getKeplerConnector({ evmNetworks: cosmosNetworkConfigs }),
161
133
  ...((vendorCredentials === null || vendorCredentials === void 0 ? void 0 : vendorCredentials.fortmatic)
162
134
  ? [
163
- new fortmatic({
164
- apiKey: vendorCredentials.fortmatic,
165
- evmNetworks: evmNetworkConfigs,
166
- }),
135
+ new fortmatic(Object.assign(Object.assign({}, opts), { apiKey: vendorCredentials.fortmatic })),
167
136
  ]
168
137
  : []),
169
138
  ...filtered,
@@ -1,5 +1,6 @@
1
1
  import { __awaiter } from 'tslib';
2
2
  import { getWalletBookWallet } from '@dynamic-labs/wallet-book';
3
+ import { ProviderEnum } from '@dynamic-labs/sdk-api';
3
4
  import Phantom from './wallets/solana/phantom.js';
4
5
  import Coinbase from './wallets/ethereum/coinbase.js';
5
6
  import Slope from './wallets/solana/slope.js';
@@ -33,6 +34,7 @@ import PhantomEvm from './wallets/ethereum/injected/PhantomEvm.js';
33
34
  import 'magic-sdk';
34
35
  import 'ethers';
35
36
  import '@dynamic-labs/wallet-connector-core';
37
+ import '@dynamic-labs/utils';
36
38
  import './utils/logger.js';
37
39
  import { EmailOTPMagicWalletConnector } from './wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.js';
38
40
  import { MagicSocialWalletConnector } from './wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.js';
@@ -42,6 +44,7 @@ import Zerion from './wallets/ethereum/injected/Zerion.js';
42
44
  import { getMobileOrInjectedWallet } from './wallets/getMobileOrInjectedWallet.js';
43
45
  import MetaMask from './wallets/ethereum/meta-mask.js';
44
46
  import Trust from './wallets/ethereum/injected/Trust.js';
47
+ import { findProvider } from './utils/findProvider/findProvider.js';
45
48
 
46
49
  let wallets = [];
47
50
  // These wallets are either not supported or implement their
@@ -65,102 +68,68 @@ const defaultWalletUiUtils = {
65
68
  throw Error('signMessage not implemented');
66
69
  },
67
70
  };
68
- const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, networkConfigurations, skipMemo, vendorCredentials, walletConnectProjectId, walletUiUtils, magicLinkApiKey, magicLinkConfig, } = {
69
- appLogoUrl: '',
70
- appName: '',
71
- isWalletConnectV2Enabled: false,
72
- networkConfigurations: { cosmos: [], evm: [], solana: [], starknet: [] },
73
- skipMemo: false,
74
- vendorCredentials: {},
75
- walletConnectProjectId: '',
76
- }) => __awaiter(void 0, void 0, void 0, function* () {
71
+ const getSupportedWallets = (args) => __awaiter(void 0, void 0, void 0, function* () {
72
+ const { appLogoUrl = '', appName = '', chainRpcProviders, isWalletConnectV2Enabled = false, magicLinkConfig = undefined, networkConfigurations = { cosmos: [], evm: [], solana: [], starknet: [] }, providers = [], skipMemo = false, vendorCredentials = {}, walletConnectProjectId = '', walletUiUtils = undefined, } = args;
77
73
  if (!skipMemo && wallets.length > 0) {
78
74
  return wallets;
79
75
  }
80
76
  const evmNetworkConfigs = (networkConfigurations === null || networkConfigurations === void 0 ? void 0 : networkConfigurations.evm) || [];
81
77
  const solanaNetworkConfigs = (networkConfigurations === null || networkConfigurations === void 0 ? void 0 : networkConfigurations.solana) || [];
82
78
  const cosmosNetworkConfigs = (networkConfigurations === null || networkConfigurations === void 0 ? void 0 : networkConfigurations.cosmos) || [];
83
- const walletConnectWallets = fetchWalletConnectWallets(evmNetworkConfigs, isWalletConnectV2Enabled);
79
+ const magicLinkProvider = findProvider(providers, ProviderEnum.MagicLink);
80
+ const opts = {
81
+ appLogoUrl,
82
+ appName,
83
+ chainRpcProviders,
84
+ evmNetworks: evmNetworkConfigs,
85
+ solNetworks: solanaNetworkConfigs,
86
+ walletUiUtils: walletUiUtils || defaultWalletUiUtils,
87
+ };
88
+ const walletConnectWallets = fetchWalletConnectWallets(Object.assign(Object.assign({}, opts), { isV2Enabled: isWalletConnectV2Enabled }));
84
89
  // temporary hack to filter out metamask, which currently has walletconnect
85
90
  // functionality built-in
86
91
  const filtered = walletConnectWallets.filter(({ name }) => !filteredWalletConnectWallets.includes(name));
87
92
  const allWallets = [
88
- new Dawn({ evmNetworks: evmNetworkConfigs }),
89
- new Phantom({ solNetworks: solanaNetworkConfigs }),
90
- getMobileOrInjectedWallet({
91
- evmNetworks: evmNetworkConfigs,
92
- injectedWallet: new MetaMask({ evmNetworks: evmNetworkConfigs }),
93
- isWalletConnectV2: isWalletConnectV2Enabled,
94
- walletConnectName: 'MetaMask',
95
- }),
96
- getMobileOrInjectedWallet({
97
- evmNetworks: evmNetworkConfigs,
98
- injectedWallet: new Trust({ evmNetworks: evmNetworkConfigs }),
99
- isWalletConnectV2: isWalletConnectV2Enabled,
100
- walletConnectName: 'Trust',
101
- }),
102
- new PhantomEvm({ evmNetworks: evmNetworkConfigs }),
103
- new PhantomLedger({ solNetworks: solanaNetworkConfigs }),
104
- new Coinbase({
105
- appLogoUrl,
106
- appName,
107
- evmNetworks: evmNetworkConfigs,
108
- }),
109
- new Solflare({ solNetworks: solanaNetworkConfigs }),
110
- new Glow({ solNetworks: solanaNetworkConfigs }),
111
- new Slope({ solNetworks: solanaNetworkConfigs }),
112
- new Dapper({ appLogoUrl, appName }),
113
- new Blocto({ appLogoUrl, appName }),
114
- new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
115
- new BloctoInjected({ evmNetworks: evmNetworkConfigs }),
116
- getWalletConnectConnector({
117
- evmNetworks: evmNetworkConfigs,
118
- isWalletConnectV2Enabled,
119
- projectId: walletConnectProjectId,
120
- }),
121
- new BraveSol({ solNetworks: solanaNetworkConfigs }),
122
- new BraveEvm({ evmNetworks: evmNetworkConfigs }),
123
- new UnknownInjectedWallet({ evmNetworks: evmNetworkConfigs }),
124
- new GameStop({ evmNetworks: evmNetworkConfigs }),
125
- new ExodusEvm({ evmNetworks: evmNetworkConfigs }),
126
- new ExodusSol({ solNetworks: solanaNetworkConfigs }),
127
- new Opera({ evmNetworks: evmNetworkConfigs }),
128
- ...(magicLinkApiKey
93
+ new Dawn(opts),
94
+ new Phantom(opts),
95
+ getMobileOrInjectedWallet(Object.assign(Object.assign({}, opts), { injectedWallet: new MetaMask(opts), isWalletConnectV2: isWalletConnectV2Enabled, walletName: 'MetaMask' })),
96
+ getMobileOrInjectedWallet(Object.assign(Object.assign({}, opts), { injectedWallet: new Trust(opts), isWalletConnectV2: isWalletConnectV2Enabled, walletName: 'Trust' })),
97
+ new PhantomEvm(opts),
98
+ new PhantomLedger(opts),
99
+ new Coinbase(opts),
100
+ new Solflare(opts),
101
+ new Glow(opts),
102
+ new Slope(opts),
103
+ new Dapper(opts),
104
+ new Blocto(opts),
105
+ new BloctoEvm(opts),
106
+ new BloctoInjected(opts),
107
+ getWalletConnectConnector(Object.assign(Object.assign({}, opts), { isWalletConnectV2Enabled, projectId: walletConnectProjectId })),
108
+ new BraveSol(opts),
109
+ new BraveEvm(opts),
110
+ new UnknownInjectedWallet(opts),
111
+ new GameStop(opts),
112
+ new ExodusEvm(opts),
113
+ new ExodusSol(opts),
114
+ new Opera(opts),
115
+ ...((magicLinkProvider === null || magicLinkProvider === void 0 ? void 0 : magicLinkProvider.providerProjectId)
129
116
  ? [
130
- new EmailOTPMagicWalletConnector({
131
- apiKey: magicLinkApiKey,
132
- config: magicLinkConfig,
133
- evmNetworks: evmNetworkConfigs,
134
- walletUiUtils: walletUiUtils || defaultWalletUiUtils,
135
- }),
136
- new MagicSocialWalletConnector({
137
- apiKey: magicLinkApiKey,
138
- config: magicLinkConfig,
139
- evmNetworks: evmNetworkConfigs,
140
- walletUiUtils: walletUiUtils || defaultWalletUiUtils,
141
- }),
117
+ new EmailOTPMagicWalletConnector(Object.assign(Object.assign({}, opts), { apiKey: magicLinkProvider.providerProjectId, config: magicLinkConfig, defaultChainId: magicLinkProvider.defaultChainId })),
118
+ new MagicSocialWalletConnector(Object.assign(Object.assign({}, opts), { apiKey: magicLinkProvider.providerProjectId, config: magicLinkConfig, defaultChainId: magicLinkProvider.defaultChainId })),
142
119
  ]
143
120
  : []),
144
121
  new MyAlgoWalletConnector(),
145
122
  new ArgentX(),
146
123
  new Braavos(),
147
- new CoinbaseSolana({ solNetworks: solanaNetworkConfigs }),
148
- new Frame({ evmNetworks: evmNetworkConfigs }),
149
- new Lilico({ appLogoUrl, appName }),
150
- getMobileOrInjectedWallet({
151
- evmNetworks: evmNetworkConfigs,
152
- injectedWallet: new Zerion({ evmNetworks: evmNetworkConfigs }),
153
- isWalletConnectV2: isWalletConnectV2Enabled,
154
- walletConnectName: 'Zerion',
155
- }),
124
+ new CoinbaseSolana(opts),
125
+ new Frame(opts),
126
+ new Lilico(opts),
127
+ getMobileOrInjectedWallet(Object.assign(Object.assign({}, opts), { injectedWallet: new Zerion(opts), isWalletConnectV2: isWalletConnectV2Enabled, walletName: 'Zerion' })),
156
128
  //TODO: https://linear.app/dynamic-labs/issue/DYN-2127/rename-evmnetworks-to-networks-across-the-application
157
129
  getKeplerConnector({ evmNetworks: cosmosNetworkConfigs }),
158
130
  ...((vendorCredentials === null || vendorCredentials === void 0 ? void 0 : vendorCredentials.fortmatic)
159
131
  ? [
160
- new Fortmatic({
161
- apiKey: vendorCredentials.fortmatic,
162
- evmNetworks: evmNetworkConfigs,
163
- }),
132
+ new Fortmatic(Object.assign(Object.assign({}, opts), { apiKey: vendorCredentials.fortmatic })),
164
133
  ]
165
134
  : []),
166
135
  ...filtered,
package/src/types.d.ts CHANGED
@@ -1,46 +1,27 @@
1
- import { Connection } from '@solana/web3.js';
2
1
  import { ethers } from 'ethers';
3
2
  import { OAuthProvider } from '@magic-ext/oauth';
4
- import type { NetworkConfiguration } from '@dynamic-labs/sdk-api';
3
+ import type { Provider } from '@dynamic-labs/sdk-api';
5
4
  import { WalletConnector, Chain } from '@dynamic-labs/wallet-connector-core';
6
- import { EvmNetwork } from './wallets/ethereum/evm-network';
5
+ import { NetworkConfigurationMap } from '@dynamic-labs/types';
6
+ import { ChainRpcProviders } from '@dynamic-labs/rpc-providers';
7
7
  import { MagicLinkConfig } from './wallets/ethereum/MagicConnector';
8
8
  export type VendorCredentials = {
9
9
  fortmatic?: string;
10
10
  };
11
- export type EvmRpcProvider = {
12
- chainId: number;
13
- chainName: string;
14
- provider: ethers.providers.JsonRpcProvider;
15
- };
16
- export type SolanaRpcProvider = {
17
- chainId?: number;
18
- chainName: string;
19
- provider: Connection;
20
- };
21
- export type RpcProviders = {
22
- evm?: EvmRpcProvider[];
23
- solana?: SolanaRpcProvider[];
24
- };
25
- export type NetworkConfigurationMap = {
26
- cosmos: EvmNetwork[] | undefined;
27
- evm: EvmNetwork[] | undefined;
28
- solana: NetworkConfiguration[] | undefined;
29
- starknet: NetworkConfiguration[] | undefined;
30
- };
31
11
  export type GetSupportedWalletsOpts = {
32
12
  appLogoUrl?: string;
33
13
  appName?: string;
34
- isWalletConnectV2Enabled: boolean;
35
- magicLinkApiKey?: string;
14
+ chainRpcProviders: typeof ChainRpcProviders;
15
+ isWalletConnectV2Enabled?: boolean;
36
16
  magicLinkConfig?: MagicLinkConfig;
37
- networkConfigurations: NetworkConfigurationMap | undefined;
17
+ networkConfigurations?: NetworkConfigurationMap;
18
+ providers?: Provider[];
38
19
  skipMemo?: boolean;
39
20
  vendorCredentials?: VendorCredentials;
40
- walletConnectProjectId: string | undefined;
21
+ walletConnectProjectId?: string;
41
22
  walletUiUtils?: WalletUiUtils;
42
23
  };
43
- export type GetSupportedWallets = (opts?: GetSupportedWalletsOpts) => Promise<WalletConnector[]>;
24
+ export type GetSupportedWallets = (opts: GetSupportedWalletsOpts) => Promise<WalletConnector[]>;
44
25
  export type WalletUiUtils = {
45
26
  enableInternalSign: () => void;
46
27
  sendTransaction: (props: {
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const findProvider = (providers, provider) => providers.find((providerSetting) => providerSetting.provider === provider);
6
+
7
+ exports.findProvider = findProvider;
@@ -0,0 +1,2 @@
1
+ import { Provider, ProviderEnum } from '@dynamic-labs/sdk-api';
2
+ export declare const findProvider: (providers: Provider[], provider: ProviderEnum) => Provider | undefined;
@@ -0,0 +1,3 @@
1
+ const findProvider = (providers, provider) => providers.find((providerSetting) => providerSetting.provider === provider);
2
+
3
+ export { findProvider };
@@ -0,0 +1 @@
1
+ export { findProvider } from './findProvider';
@@ -1,7 +1,7 @@
1
1
  import { Chain } from '@dynamic-labs/wallet-connector-core';
2
2
  export interface MessageParameters {
3
3
  blockchain: Chain;
4
- chainId?: number;
4
+ chainId?: number | string;
5
5
  domain: string;
6
6
  issuedAt?: string;
7
7
  nonce: string;
@@ -12,4 +12,4 @@ export interface MessageParameters {
12
12
  uri: string;
13
13
  }
14
14
  export declare const generateMessageToSign: ({ blockchain, domain, chainId, nonce, uri, publicKey, issuedAt, statement, requestId, resources, }: MessageParameters) => string;
15
- export declare const getEip55Address: (publicKey: string, chainId?: number) => string;
15
+ export declare const getEip55Address: (publicKey: string, chainId?: number | string) => string;
@@ -2,29 +2,30 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var tslib = require('tslib');
5
6
  var walletBook = require('@dynamic-labs/wallet-book');
6
7
  var walletConnect = require('../wallets/walletConnect/walletConnect.cjs');
7
8
  var walletConnectV2 = require('../wallets/walletConnect/walletConnectV2.cjs');
8
9
 
9
- const fetchWalletConnectWallets = (evmNetworks, isV2Enabled) => Object.values(walletBook.useWalletBook().wallets)
10
- .filter((wallet) => wallet.walletConnect)
11
- .map((wallet) => {
12
- var _a;
13
- const { shortName } = wallet;
14
- const name = shortName || wallet.name;
15
- let connector;
16
- // justification: we filtered out null/undefined above
17
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
18
- if (isV2Enabled && ((_a = wallet.walletConnect.sdks) === null || _a === void 0 ? void 0 : _a.includes('sign_v2'))) {
19
- connector = new walletConnectV2({
20
- evmNetworks,
21
- walletName: name,
22
- });
23
- }
24
- else {
25
- connector = new walletConnect({ evmNetworks, walletName: name });
26
- }
27
- return connector;
28
- });
10
+ const fetchWalletConnectWallets = (_a) => {
11
+ var { isV2Enabled } = _a, props = tslib.__rest(_a, ["isV2Enabled"]);
12
+ return Object.values(walletBook.useWalletBook().wallets)
13
+ .filter((wallet) => wallet.walletConnect)
14
+ .map((wallet) => {
15
+ var _a;
16
+ const { shortName } = wallet;
17
+ const name = shortName || wallet.name;
18
+ let connector;
19
+ // justification: we filtered out null/undefined above
20
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
21
+ if (isV2Enabled && ((_a = wallet.walletConnect.sdks) === null || _a === void 0 ? void 0 : _a.includes('sign_v2'))) {
22
+ connector = new walletConnectV2(Object.assign(Object.assign({}, props), { walletName: name }));
23
+ }
24
+ else {
25
+ connector = new walletConnect(Object.assign(Object.assign({}, props), { walletName: name }));
26
+ }
27
+ return connector;
28
+ });
29
+ };
29
30
 
30
31
  exports.fetchWalletConnectWallets = fetchWalletConnectWallets;
@@ -1,4 +1,5 @@
1
1
  import WalletConnect from '../wallets/walletConnect';
2
- import { EvmNetwork } from '../wallets/ethereum/evm-network';
3
- import WalletConnectV2 from '../wallets/walletConnect/walletConnectV2';
4
- export declare const fetchWalletConnectWallets: (evmNetworks: EvmNetwork[], isV2Enabled: boolean) => (WalletConnectV2 | WalletConnect)[];
2
+ import WalletConnectV2, { WalletConnectorV2Opts } from '../wallets/walletConnect/walletConnectV2';
3
+ export declare const fetchWalletConnectWallets: ({ isV2Enabled, ...props }: {
4
+ isV2Enabled: boolean;
5
+ } & Omit<WalletConnectorV2Opts, "walletName">) => (WalletConnectV2 | WalletConnect)[];