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

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 (233) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/package.json +8 -14
  3. package/src/index.cjs +0 -57
  4. package/src/index.d.ts +0 -13
  5. package/src/index.js +1 -18
  6. package/src/multi-wallet.cjs +27 -87
  7. package/src/multi-wallet.d.ts +0 -1
  8. package/src/multi-wallet.js +25 -84
  9. package/src/types.d.ts +2 -23
  10. package/src/utils/getApiProviders.cjs +15 -0
  11. package/src/utils/getApiProviders.d.ts +10 -0
  12. package/src/utils/getApiProviders.js +11 -0
  13. package/src/utils/message.cjs +3 -4
  14. package/src/utils/message.js +1 -2
  15. package/src/wallets/algorand/MyAlgoWalletConnector.cjs +3 -3
  16. package/src/wallets/algorand/MyAlgoWalletConnector.js +1 -1
  17. package/src/wallets/constants.cjs +0 -2
  18. package/src/wallets/constants.js +1 -2
  19. package/src/wallets/cosmos/KeplrWalletConnect.cjs +16 -17
  20. package/src/wallets/cosmos/KeplrWalletConnect.d.ts +9 -5
  21. package/src/wallets/cosmos/KeplrWalletConnect.js +9 -10
  22. package/src/wallets/cosmos/KeplrWalletConnector.cjs +13 -5
  23. package/src/wallets/cosmos/KeplrWalletConnector.d.ts +6 -4
  24. package/src/wallets/cosmos/KeplrWalletConnector.js +13 -5
  25. package/src/wallets/cosmos/wcClient.lib.cjs +141 -0
  26. package/src/wallets/{clients/walletConnect/walletConnect.d.ts → cosmos/wcClient.lib.d.ts} +8 -11
  27. package/src/wallets/cosmos/wcClient.lib.js +126 -0
  28. package/src/wallets/flow/FlowWalletConnector.cjs +7 -8
  29. package/src/wallets/flow/FlowWalletConnector.js +2 -3
  30. package/src/wallets/flow/lilico.cjs +2 -2
  31. package/src/wallets/flow/lilico.js +1 -1
  32. package/src/wallets/solana/CoinbaseSolana.cjs +8 -11
  33. package/src/wallets/solana/CoinbaseSolana.d.ts +1 -3
  34. package/src/wallets/solana/CoinbaseSolana.js +8 -11
  35. package/src/wallets/solana/glow.cjs +8 -11
  36. package/src/wallets/solana/glow.d.ts +1 -3
  37. package/src/wallets/solana/glow.js +8 -11
  38. package/src/wallets/solana/injected/BraveSol.cjs +2 -1
  39. package/src/wallets/solana/injected/BraveSol.js +2 -1
  40. package/src/wallets/solana/phantom-ledger.cjs +5 -5
  41. package/src/wallets/solana/phantom-ledger.js +1 -1
  42. package/src/wallets/solana/phantom.cjs +11 -15
  43. package/src/wallets/solana/phantom.d.ts +1 -3
  44. package/src/wallets/solana/phantom.js +9 -13
  45. package/src/wallets/solana/slope.cjs +4 -4
  46. package/src/wallets/solana/slope.js +1 -1
  47. package/src/wallets/solana/solProviderHelper.cjs +49 -51
  48. package/src/wallets/solana/solProviderHelper.d.ts +20 -20
  49. package/src/wallets/solana/solProviderHelper.js +48 -50
  50. package/src/wallets/solana/solWalletConnector.cjs +2 -2
  51. package/src/wallets/solana/solWalletConnector.js +1 -1
  52. package/src/wallets/solana/solflare.cjs +6 -7
  53. package/src/wallets/solana/solflare.d.ts +0 -2
  54. package/src/wallets/solana/solflare.js +6 -7
  55. package/src/wallets/starknet/braavos.cjs +2 -2
  56. package/src/wallets/starknet/braavos.js +1 -1
  57. package/src/wallets/starknet/starknetWalletConnector.cjs +5 -6
  58. package/src/wallets/starknet/starknetWalletConnector.js +2 -3
  59. package/src/wallets/window.d.ts +10 -22
  60. package/src/errors.cjs +0 -66
  61. package/src/errors.d.ts +0 -34
  62. package/src/errors.js +0 -54
  63. package/src/utils/CancellablePromise/CancellablePromise.cjs +0 -33
  64. package/src/utils/CancellablePromise/CancellablePromise.d.ts +0 -9
  65. package/src/utils/CancellablePromise/CancellablePromise.js +0 -29
  66. package/src/utils/CancellablePromise/index.d.ts +0 -1
  67. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs +0 -54
  68. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +0 -3
  69. package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js +0 -50
  70. package/src/utils/assignConfirmationScreenToProvider/index.d.ts +0 -1
  71. package/src/utils/encoding.cjs +0 -18
  72. package/src/utils/encoding.d.ts +0 -4
  73. package/src/utils/encoding.js +0 -12
  74. package/src/utils/findProvider/findProvider.cjs +0 -7
  75. package/src/utils/findProvider/findProvider.d.ts +0 -2
  76. package/src/utils/findProvider/findProvider.js +0 -3
  77. package/src/utils/findProvider/index.d.ts +0 -1
  78. package/src/utils/getChainInfo/getChainInfo.cjs +0 -59
  79. package/src/utils/getChainInfo/getChainInfo.d.ts +0 -2
  80. package/src/utils/getChainInfo/getChainInfo.js +0 -55
  81. package/src/utils/getChainInfo/index.d.ts +0 -1
  82. package/src/utils/getWalletConnectorByName.cjs +0 -19
  83. package/src/utils/getWalletConnectorByName.d.ts +0 -2
  84. package/src/utils/getWalletConnectorByName.js +0 -15
  85. package/src/utils/isEmailOTPWalletConnector/index.d.ts +0 -1
  86. package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.cjs +0 -7
  87. package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.d.ts +0 -2
  88. package/src/utils/isEmailOTPWalletConnector/isEmailOTPWalletConnector.js +0 -3
  89. package/src/utils/isEmailWalletConnector/index.d.ts +0 -1
  90. package/src/utils/isEmailWalletConnector/isEmailWalletConnector.cjs +0 -7
  91. package/src/utils/isEmailWalletConnector/isEmailWalletConnector.d.ts +0 -2
  92. package/src/utils/isEmailWalletConnector/isEmailWalletConnector.js +0 -3
  93. package/src/utils/isFunction/index.d.ts +0 -1
  94. package/src/utils/isFunction/isFunction.cjs +0 -8
  95. package/src/utils/isFunction/isFunction.d.ts +0 -1
  96. package/src/utils/isFunction/isFunction.js +0 -4
  97. package/src/utils/isMobile.cjs +0 -54
  98. package/src/utils/isMobile.d.ts +0 -13
  99. package/src/utils/isMobile.js +0 -46
  100. package/src/utils/isSameAddress/index.d.ts +0 -1
  101. package/src/utils/isSameAddress/isSameAddress.cjs +0 -9
  102. package/src/utils/isSameAddress/isSameAddress.d.ts +0 -1
  103. package/src/utils/isSameAddress/isSameAddress.js +0 -5
  104. package/src/utils/isSameAddress/utils/index.d.ts +0 -1
  105. package/src/utils/isSameAddress/utils/normalizeAddress/index.d.ts +0 -1
  106. package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.cjs +0 -17
  107. package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.d.ts +0 -1
  108. package/src/utils/isSameAddress/utils/normalizeAddress/normalizeAddress.js +0 -13
  109. package/src/utils/isSocialWalletConnector/index.d.ts +0 -1
  110. package/src/utils/isSocialWalletConnector/isSocialWalletConnector.cjs +0 -7
  111. package/src/utils/isSocialWalletConnector/isSocialWalletConnector.d.ts +0 -2
  112. package/src/utils/isSocialWalletConnector/isSocialWalletConnector.js +0 -3
  113. package/src/utils/isUnsupportedProviderError/index.d.ts +0 -1
  114. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +0 -13
  115. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +0 -6
  116. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +0 -9
  117. package/src/utils/logger.cjs +0 -9
  118. package/src/utils/logger.d.ts +0 -2
  119. package/src/utils/logger.js +0 -5
  120. package/src/utils/normalizeWalletName/index.d.ts +0 -1
  121. package/src/utils/normalizeWalletName/normalizeWalletName.cjs +0 -7
  122. package/src/utils/normalizeWalletName/normalizeWalletName.d.ts +0 -1
  123. package/src/utils/normalizeWalletName/normalizeWalletName.js +0 -3
  124. package/src/utils/shouldLowercaseAddress.cjs +0 -11
  125. package/src/utils/shouldLowercaseAddress.d.ts +0 -1
  126. package/src/utils/shouldLowercaseAddress.js +0 -7
  127. package/src/utils/walletConnect.cjs +0 -31
  128. package/src/utils/walletConnect.d.ts +0 -5
  129. package/src/utils/walletConnect.js +0 -27
  130. package/src/wallets/ProviderLookup.cjs +0 -18
  131. package/src/wallets/ProviderLookup.d.ts +0 -4
  132. package/src/wallets/ProviderLookup.js +0 -14
  133. package/src/wallets/clients/coinbase/coinbase.cjs +0 -73
  134. package/src/wallets/clients/coinbase/coinbase.d.ts +0 -6
  135. package/src/wallets/clients/coinbase/coinbase.js +0 -66
  136. package/src/wallets/clients/coinbase/index.d.ts +0 -2
  137. package/src/wallets/clients/coinbase/types.d.ts +0 -14
  138. package/src/wallets/clients/walletConnect/index.d.ts +0 -1
  139. package/src/wallets/clients/walletConnect/types.d.ts +0 -4
  140. package/src/wallets/clients/walletConnect/walletConnect.cjs +0 -250
  141. package/src/wallets/clients/walletConnect/walletConnect.js +0 -233
  142. package/src/wallets/cosmos/getKeplrConnector.cjs +0 -18
  143. package/src/wallets/cosmos/getKeplrConnector.d.ts +0 -6
  144. package/src/wallets/cosmos/getKeplrConnector.js +0 -14
  145. package/src/wallets/ethereum/BloctoEvm.cjs +0 -111
  146. package/src/wallets/ethereum/BloctoEvm.d.ts +0 -22
  147. package/src/wallets/ethereum/BloctoEvm.js +0 -105
  148. package/src/wallets/ethereum/EthWalletConnector.cjs +0 -207
  149. package/src/wallets/ethereum/EthWalletConnector.d.ts +0 -38
  150. package/src/wallets/ethereum/EthWalletConnector.js +0 -203
  151. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.cjs +0 -63
  152. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.d.ts +0 -12
  153. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/EmailMagicWalletConnector.js +0 -59
  154. package/src/wallets/ethereum/MagicConnector/EmailMagicWalletConnector/index.d.ts +0 -1
  155. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.cjs +0 -62
  156. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.d.ts +0 -11
  157. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.js +0 -58
  158. package/src/wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/index.d.ts +0 -1
  159. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.cjs +0 -103
  160. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.d.ts +0 -33
  161. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/MagicClientNetworkHandler.js +0 -99
  162. package/src/wallets/ethereum/MagicConnector/MagicClientNetworkHandler/index.d.ts +0 -2
  163. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.cjs +0 -56
  164. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.d.ts +0 -12
  165. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/MagicSocialWalletConnector.js +0 -52
  166. package/src/wallets/ethereum/MagicConnector/MagicSocialWalletConnector/index.d.ts +0 -1
  167. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +0 -177
  168. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +0 -54
  169. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +0 -173
  170. package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/index.d.ts +0 -2
  171. package/src/wallets/ethereum/MagicConnector/index.d.ts +0 -5
  172. package/src/wallets/ethereum/coinbase.cjs +0 -66
  173. package/src/wallets/ethereum/coinbase.d.ts +0 -25
  174. package/src/wallets/ethereum/coinbase.js +0 -64
  175. package/src/wallets/ethereum/ethProviderHelper.cjs +0 -197
  176. package/src/wallets/ethereum/ethProviderHelper.d.ts +0 -40
  177. package/src/wallets/ethereum/ethProviderHelper.js +0 -193
  178. package/src/wallets/ethereum/evm-network.cjs +0 -20
  179. package/src/wallets/ethereum/evm-network.d.ts +0 -6
  180. package/src/wallets/ethereum/evm-network.js +0 -16
  181. package/src/wallets/ethereum/fortmatic.cjs +0 -76
  182. package/src/wallets/ethereum/fortmatic.d.ts +0 -25
  183. package/src/wallets/ethereum/fortmatic.js +0 -70
  184. package/src/wallets/ethereum/injected/BloctoInjected.cjs +0 -13
  185. package/src/wallets/ethereum/injected/BloctoInjected.d.ts +0 -6
  186. package/src/wallets/ethereum/injected/BloctoInjected.js +0 -11
  187. package/src/wallets/ethereum/injected/BraveEvm.cjs +0 -13
  188. package/src/wallets/ethereum/injected/BraveEvm.d.ts +0 -6
  189. package/src/wallets/ethereum/injected/BraveEvm.js +0 -11
  190. package/src/wallets/ethereum/injected/Dawn.cjs +0 -13
  191. package/src/wallets/ethereum/injected/Dawn.d.ts +0 -6
  192. package/src/wallets/ethereum/injected/Dawn.js +0 -11
  193. package/src/wallets/ethereum/injected/ExodusEvm.cjs +0 -13
  194. package/src/wallets/ethereum/injected/ExodusEvm.d.ts +0 -6
  195. package/src/wallets/ethereum/injected/ExodusEvm.js +0 -11
  196. package/src/wallets/ethereum/injected/Frame.cjs +0 -13
  197. package/src/wallets/ethereum/injected/Frame.d.ts +0 -6
  198. package/src/wallets/ethereum/injected/Frame.js +0 -11
  199. package/src/wallets/ethereum/injected/GameStop.cjs +0 -13
  200. package/src/wallets/ethereum/injected/GameStop.d.ts +0 -6
  201. package/src/wallets/ethereum/injected/GameStop.js +0 -11
  202. package/src/wallets/ethereum/injected/Opera.cjs +0 -13
  203. package/src/wallets/ethereum/injected/Opera.d.ts +0 -6
  204. package/src/wallets/ethereum/injected/Opera.js +0 -11
  205. package/src/wallets/ethereum/injected/PhantomEvm.cjs +0 -37
  206. package/src/wallets/ethereum/injected/PhantomEvm.d.ts +0 -7
  207. package/src/wallets/ethereum/injected/PhantomEvm.js +0 -35
  208. package/src/wallets/ethereum/injected/Trust.cjs +0 -13
  209. package/src/wallets/ethereum/injected/Trust.d.ts +0 -6
  210. package/src/wallets/ethereum/injected/Trust.js +0 -11
  211. package/src/wallets/ethereum/injected/UnknownInjectedWallet.cjs +0 -13
  212. package/src/wallets/ethereum/injected/UnknownInjectedWallet.d.ts +0 -6
  213. package/src/wallets/ethereum/injected/UnknownInjectedWallet.js +0 -11
  214. package/src/wallets/ethereum/injected/Zerion.cjs +0 -13
  215. package/src/wallets/ethereum/injected/Zerion.d.ts +0 -6
  216. package/src/wallets/ethereum/injected/Zerion.js +0 -11
  217. package/src/wallets/ethereum/meta-mask.cjs +0 -63
  218. package/src/wallets/ethereum/meta-mask.d.ts +0 -26
  219. package/src/wallets/ethereum/meta-mask.js +0 -61
  220. package/src/wallets/getMobileOrInjectedWallet.cjs +0 -22
  221. package/src/wallets/getMobileOrInjectedWallet.d.ts +0 -9
  222. package/src/wallets/getMobileOrInjectedWallet.js +0 -18
  223. package/src/wallets/getWalletConnectConnector.cjs +0 -16
  224. package/src/wallets/getWalletConnectConnector.d.ts +0 -5
  225. package/src/wallets/getWalletConnectConnector.js +0 -12
  226. package/src/wallets/walletConnect/index.d.ts +0 -2
  227. package/src/wallets/walletConnect/walletConnect.cjs +0 -133
  228. package/src/wallets/walletConnect/walletConnect.d.ts +0 -34
  229. package/src/wallets/walletConnect/walletConnect.js +0 -127
  230. package/src/wallets/walletConnect/walletConnectV2.cjs +0 -268
  231. package/src/wallets/walletConnect/walletConnectV2.d.ts +0 -38
  232. package/src/wallets/walletConnect/walletConnectV2.js +0 -262
  233. package/src/wallets/walletConnect/zerion.d.ts +0 -6
@@ -1,4 +0,0 @@
1
- import { IEthereum, ISolana, ProviderCondition } from './window';
2
- type AllowedProvidersInterfaces = IEthereum | ISolana;
3
- export declare const ProviderLookup: <T extends AllowedProvidersInterfaces>(installedProviders: T[], providerFlags: Array<ProviderCondition>) => T | undefined;
4
- export {};
@@ -1,14 +0,0 @@
1
- const ProviderLookup = (installedProviders, providerFlags) => {
2
- if (providerFlags.length === 0) {
3
- return undefined;
4
- }
5
- return installedProviders.find((provider) => {
6
- const providerFlagMatch = providerFlags.every((condition) => {
7
- const flagValue = (provider === null || provider === void 0 ? void 0 : provider[condition.flag]) || false;
8
- return flagValue === condition.value;
9
- });
10
- return providerFlagMatch === true;
11
- });
12
- };
13
-
14
- export { ProviderLookup };
@@ -1,73 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var tslib = require('tslib');
6
- var walletSdk = require('@coinbase/wallet-sdk');
7
- var utils = require('ethers/lib/utils');
8
- var errors = require('../../../errors.cjs');
9
- var constants = require('../../constants.cjs');
10
-
11
- const jsonRpcUrl = `https://mainnet.infura.io/v3/${constants.infuraId}`;
12
- const chainId = 1;
13
- const getCoinbaseProvider = ({ opts: { appLogoUrl, appName = '', evmNetworks = [] } = {}, handlers, }) => {
14
- var _a, _b;
15
- const coinbaseWalletSDK = new walletSdk.CoinbaseWalletSDK({
16
- appLogoUrl,
17
- appName,
18
- eventListener: {
19
- onEvent: (eventType) => {
20
- if (eventType === 'walletlink_sdk.disconnected') {
21
- handlers === null || handlers === void 0 ? void 0 : handlers.onDisconnect();
22
- }
23
- },
24
- },
25
- headlessMode: true,
26
- reloadOnDisconnect: false,
27
- });
28
- const network = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((network) => network.chainId === chainId);
29
- const rpcUrl = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || ((_b = network === null || network === void 0 ? void 0 : network.rpcUrls) === null || _b === void 0 ? void 0 : _b[0]) || jsonRpcUrl;
30
- return coinbaseWalletSDK.makeWeb3Provider(rpcUrl, chainId);
31
- };
32
- const killCoinbaseSession = () => {
33
- const provider = getCoinbaseProvider({
34
- opts: { appLogoUrl: '', appName: '' },
35
- });
36
- if (provider.connected) {
37
- provider.close();
38
- }
39
- };
40
- const fetchPublicAddress = (coinbaseProviderOpts, opts) => tslib.__awaiter(void 0, void 0, void 0, function* () {
41
- var _a;
42
- const provider = getCoinbaseProvider({ opts: coinbaseProviderOpts });
43
- const { qrUrl } = provider;
44
- if (!qrUrl) {
45
- throw new errors.DynamicError('no qr url available');
46
- }
47
- (_a = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _a === void 0 ? void 0 : _a.call(opts, qrUrl);
48
- const [address] = yield provider.request({
49
- method: 'eth_requestAccounts',
50
- });
51
- return address;
52
- });
53
- const signMessage = (coinbaseProviderOpts, messageToSign) => tslib.__awaiter(void 0, void 0, void 0, function* () {
54
- const provider = getCoinbaseProvider({ opts: coinbaseProviderOpts });
55
- const [address] = yield provider.request({
56
- method: 'eth_requestAccounts',
57
- });
58
- try {
59
- return yield provider.request({
60
- method: 'personal_sign',
61
- params: [utils.hexlify(utils.toUtf8Bytes(messageToSign)), address.toLowerCase()],
62
- });
63
- }
64
- catch (err) {
65
- yield provider.close();
66
- return undefined;
67
- }
68
- });
69
-
70
- exports.fetchPublicAddress = fetchPublicAddress;
71
- exports.getCoinbaseProvider = getCoinbaseProvider;
72
- exports.killCoinbaseSession = killCoinbaseSession;
73
- exports.signMessage = signMessage;
@@ -1,6 +0,0 @@
1
- import { FetchPublicAddressOpts } from '@dynamic-labs/wallet-connector-core';
2
- import { GetCoinbaseProvider, GetCoinbaseProviderOpts } from './types';
3
- export declare const getCoinbaseProvider: GetCoinbaseProvider;
4
- export declare const killCoinbaseSession: () => void;
5
- export declare const fetchPublicAddress: (coinbaseProviderOpts: GetCoinbaseProviderOpts, opts?: FetchPublicAddressOpts) => Promise<string | undefined>;
6
- export declare const signMessage: (coinbaseProviderOpts: GetCoinbaseProviderOpts, messageToSign: string) => Promise<string | undefined>;
@@ -1,66 +0,0 @@
1
- import { __awaiter } from 'tslib';
2
- import { CoinbaseWalletSDK } from '@coinbase/wallet-sdk';
3
- import { hexlify, toUtf8Bytes } from 'ethers/lib/utils.js';
4
- import { DynamicError } from '../../../errors.js';
5
- import { infuraId } from '../../constants.js';
6
-
7
- const jsonRpcUrl = `https://mainnet.infura.io/v3/${infuraId}`;
8
- const chainId = 1;
9
- const getCoinbaseProvider = ({ opts: { appLogoUrl, appName = '', evmNetworks = [] } = {}, handlers, }) => {
10
- var _a, _b;
11
- const coinbaseWalletSDK = new CoinbaseWalletSDK({
12
- appLogoUrl,
13
- appName,
14
- eventListener: {
15
- onEvent: (eventType) => {
16
- if (eventType === 'walletlink_sdk.disconnected') {
17
- handlers === null || handlers === void 0 ? void 0 : handlers.onDisconnect();
18
- }
19
- },
20
- },
21
- headlessMode: true,
22
- reloadOnDisconnect: false,
23
- });
24
- const network = evmNetworks === null || evmNetworks === void 0 ? void 0 : evmNetworks.find((network) => network.chainId === chainId);
25
- const rpcUrl = ((_a = network === null || network === void 0 ? void 0 : network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || ((_b = network === null || network === void 0 ? void 0 : network.rpcUrls) === null || _b === void 0 ? void 0 : _b[0]) || jsonRpcUrl;
26
- return coinbaseWalletSDK.makeWeb3Provider(rpcUrl, chainId);
27
- };
28
- const killCoinbaseSession = () => {
29
- const provider = getCoinbaseProvider({
30
- opts: { appLogoUrl: '', appName: '' },
31
- });
32
- if (provider.connected) {
33
- provider.close();
34
- }
35
- };
36
- const fetchPublicAddress = (coinbaseProviderOpts, opts) => __awaiter(void 0, void 0, void 0, function* () {
37
- var _a;
38
- const provider = getCoinbaseProvider({ opts: coinbaseProviderOpts });
39
- const { qrUrl } = provider;
40
- if (!qrUrl) {
41
- throw new DynamicError('no qr url available');
42
- }
43
- (_a = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _a === void 0 ? void 0 : _a.call(opts, qrUrl);
44
- const [address] = yield provider.request({
45
- method: 'eth_requestAccounts',
46
- });
47
- return address;
48
- });
49
- const signMessage = (coinbaseProviderOpts, messageToSign) => __awaiter(void 0, void 0, void 0, function* () {
50
- const provider = getCoinbaseProvider({ opts: coinbaseProviderOpts });
51
- const [address] = yield provider.request({
52
- method: 'eth_requestAccounts',
53
- });
54
- try {
55
- return yield provider.request({
56
- method: 'personal_sign',
57
- params: [hexlify(toUtf8Bytes(messageToSign)), address.toLowerCase()],
58
- });
59
- }
60
- catch (err) {
61
- yield provider.close();
62
- return undefined;
63
- }
64
- });
65
-
66
- export { fetchPublicAddress, getCoinbaseProvider, killCoinbaseSession, signMessage };
@@ -1,2 +0,0 @@
1
- export * from './coinbase';
2
- export * from './types';
@@ -1,14 +0,0 @@
1
- import { CoinbaseWalletProvider } from '@coinbase/wallet-sdk';
2
- import { GenericNetwork } from '@dynamic-labs/types';
3
- export type GetCoinbaseProviderOpts = {
4
- appLogoUrl?: string;
5
- appName?: string;
6
- evmNetworks?: GenericNetwork[];
7
- };
8
- export type CoinbaseProviderHandlerOpts = {
9
- onDisconnect(): Promise<void>;
10
- };
11
- export type GetCoinbaseProvider = (args: {
12
- handlers?: CoinbaseProviderHandlerOpts;
13
- opts?: GetCoinbaseProviderOpts;
14
- }) => CoinbaseWalletProvider;
@@ -1 +0,0 @@
1
- export * from './walletConnect';
@@ -1,4 +0,0 @@
1
- import Client from '@walletconnect/client';
2
- export type InitializeWalletConnectClientOpts = {
3
- bridge?: Client['bridge'];
4
- };
@@ -1,250 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var tslib = require('tslib');
6
- var Client = require('@walletconnect/client');
7
- var ethers = require('ethers');
8
- var isMobile = require('../../../utils/isMobile.cjs');
9
- var isSameAddress = require('../../../utils/isSameAddress/isSameAddress.cjs');
10
- var logger = require('../../../utils/logger.cjs');
11
-
12
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
-
14
- var Client__default = /*#__PURE__*/_interopDefaultLegacy(Client);
15
-
16
- const initClient = (name, settings) => {
17
- const storageId = `walletconnect-${name}`;
18
- const session = localStorage.getItem(storageId);
19
- const clientArgs = session
20
- ? { session: JSON.parse(session), storageId }
21
- : { bridge: 'https://bridge.walletconnect.org', storageId };
22
- return new Client__default["default"](Object.assign(Object.assign({}, clientArgs), settings));
23
- };
24
- /**
25
- * Attach event handlers to WalletConnect events.
26
- */
27
- const setupWalletConnectEventListeners = (opts, client) => {
28
- if (!client) {
29
- return () => {
30
- // nothing to teardown
31
- };
32
- }
33
- let prevAccount;
34
- let prevChain;
35
- if (client.connected) {
36
- // eslint-disable-next-line prefer-destructuring
37
- prevAccount = client.accounts[0];
38
- prevChain = client.chainId;
39
- }
40
- client.on('disconnect', () => tslib.__awaiter(void 0, void 0, void 0, function* () {
41
- var _a;
42
- yield ((_a = opts.onDisconnect) === null || _a === void 0 ? void 0 : _a.call(opts));
43
- }));
44
- client.on('session_update', (_, payload) => tslib.__awaiter(void 0, void 0, void 0, function* () {
45
- var _b, _c;
46
- // eslint-disable-next-line prefer-destructuring
47
- const { accounts, chainId } = payload.params[0];
48
- const didAccountChange = !isSameAddress.isSameAddress(prevAccount || '', accounts[0], 'eip155');
49
- const didChainChange = prevChain !== chainId;
50
- // eslint-disable-next-line prefer-destructuring
51
- prevAccount = accounts[0];
52
- prevChain = chainId;
53
- if (didAccountChange) {
54
- yield ((_b = opts.onAccountChange) === null || _b === void 0 ? void 0 : _b.call(opts, accounts));
55
- }
56
- if (didChainChange) {
57
- yield ((_c = opts.onChainChange) === null || _c === void 0 ? void 0 : _c.call(opts, String(chainId)));
58
- }
59
- }));
60
- return () => {
61
- client.off('disconnect');
62
- client.off('session_update');
63
- };
64
- };
65
- const teardownWalletConnectEventListeners = (client) => {
66
- client.off('disconnect');
67
- client.off('session_update');
68
- };
69
- /**
70
- * Initialize a client from a stored session and terminate the connection.
71
- */
72
- const killWalletConnectSession = (client) => tslib.__awaiter(void 0, void 0, void 0, function* () {
73
- try {
74
- if (client === null || client === void 0 ? void 0 : client.connected) {
75
- yield client.killSession();
76
- }
77
- }
78
- catch (e) {
79
- logger.logger.debug(e);
80
- }
81
- });
82
- const getDeepLink = (uri, metadata, { removeWCUri = false, } = {}) => {
83
- var _a, _b, _c, _d;
84
- if (!isMobile.isMobile()) {
85
- const origin = ((_a = metadata.desktop) === null || _a === void 0 ? void 0 : _a.universal) || ((_b = metadata.desktop) === null || _b === void 0 ? void 0 : _b.native);
86
- if (removeWCUri)
87
- return origin || '';
88
- return `${origin}?uri=${encodeURIComponent(uri !== null && uri !== void 0 ? uri : '')}`;
89
- }
90
- // deeplinks for ios require special treatment
91
- // see: https://docs.walletconnect.com/mobile-linking#for-ios
92
- else if (isMobile.isIOS()) {
93
- const origin = ((_c = metadata.mobile) === null || _c === void 0 ? void 0 : _c.universal) || ((_d = metadata.mobile) === null || _d === void 0 ? void 0 : _d.native);
94
- if (removeWCUri)
95
- return origin || '';
96
- return `${origin}?uri=${encodeURIComponent(uri !== null && uri !== void 0 ? uri : '')}`;
97
- }
98
- // on android, the deeplink is simply the uri
99
- // see: https://docs.walletconnect.com/mobile-linking#for-android
100
- return uri;
101
- };
102
- const createSession = (client) => tslib.__awaiter(void 0, void 0, void 0, function* () {
103
- return new Promise((resolve, reject) => {
104
- client.on('connect', (error, payload) => tslib.__awaiter(void 0, void 0, void 0, function* () {
105
- if (error)
106
- throw error;
107
- resolve(payload);
108
- }));
109
- client.on('disconnect', (error, payload) => {
110
- reject(error || payload.params[0].message);
111
- });
112
- });
113
- });
114
- const useDeepLink = (metadata, wcClient, opts) => {
115
- var _a, _b, _c;
116
- const deepLink = getDeepLink(wcClient.uri, metadata);
117
- if (isMobile.isMobile()) {
118
- window.location.href = deepLink;
119
- }
120
- else {
121
- if ((_a = metadata === null || metadata === void 0 ? void 0 : metadata.desktop) === null || _a === void 0 ? void 0 : _a.native) {
122
- (_b = opts === null || opts === void 0 ? void 0 : opts.onDesktopUri) === null || _b === void 0 ? void 0 : _b.call(opts, deepLink);
123
- }
124
- (_c = opts === null || opts === void 0 ? void 0 : opts.onDisplayUri) === null || _c === void 0 ? void 0 : _c.call(opts, wcClient.uri);
125
- }
126
- };
127
- const fetchWalletConnectCosmosPublicAddress = (metadata, wcClient, provider, opts) => tslib.__awaiter(void 0, void 0, void 0, function* () {
128
- var _a;
129
- if (wcClient.connected) {
130
- const key = yield provider.getKey(opts.chainId);
131
- return key.bech32Address;
132
- }
133
- yield wcClient.createSession();
134
- useDeepLink(metadata, wcClient, opts);
135
- const payload = yield createSession(wcClient);
136
- const key = yield provider.getKey(opts.chainId);
137
- (_a = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _a === void 0 ? void 0 : _a.call(opts, payload);
138
- wcClient.accounts = [key.bech32Address];
139
- return key.bech32Address;
140
- });
141
- const fetchWalletConnectEVMPublicAddress = (metadata, wcClient, opts) => tslib.__awaiter(void 0, void 0, void 0, function* () {
142
- var _b;
143
- if (wcClient.connected) {
144
- const [accountPublicAddress] = wcClient.accounts;
145
- return accountPublicAddress;
146
- }
147
- // createSession will trigger the QR code...
148
- yield wcClient.createSession();
149
- useDeepLink(metadata, wcClient, opts);
150
- const payload = yield createSession(wcClient);
151
- (_b = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _b === void 0 ? void 0 : _b.call(opts, payload);
152
- const [accountPublicAddress] = payload.params[0].accounts;
153
- return accountPublicAddress;
154
- });
155
- const signWalletConnectPersonalMessage = (messageToSign, metadata, client, rpcProvider) => tslib.__awaiter(void 0, void 0, void 0, function* () {
156
- var _c, _d;
157
- const isCryptoWallet = ((_c = client === null || client === void 0 ? void 0 : client.peerMeta) === null || _c === void 0 ? void 0 : _c.name) === 'Crypto.com | DeFi Wallet' ||
158
- ((_d = client === null || client === void 0 ? void 0 : client.peerMeta) === null || _d === void 0 ? void 0 : _d.name) === 'DeFi Wallet';
159
- if (!client || !client.connected) {
160
- return;
161
- }
162
- const [accountPublicAddress] = client.accounts;
163
- if (isMobile.isMobile()) {
164
- const deepLink = getDeepLink(client.uri, metadata, {
165
- removeWCUri: isMobile.isIOS() && isCryptoWallet,
166
- });
167
- window.location.href = deepLink;
168
- }
169
- try {
170
- // This delay is required for Crypto.com DeFi wallet, when there is no delay the app
171
- // will not open the pop-up to sign. That seems to be a limitation in the standalone client
172
- // so the delay is required to allow the users to sign the message
173
- if (isCryptoWallet && isMobile.isMobile()) {
174
- yield sleep(4000);
175
- }
176
- else {
177
- // The delay of 1 second is necessary for some of the wallets to open the sign UI in the
178
- // correct order, without this some wallets like Trust or OKX will no open properly,
179
- // and not allowing the user to sign the message
180
- yield sleep(1000);
181
- }
182
- const signature = yield client.signPersonalMessage([
183
- messageToSign,
184
- accountPublicAddress,
185
- ]);
186
- yield waitForSafeTransactionOrTimeout(accountPublicAddress, signature, messageToSign, client, rpcProvider);
187
- return signature;
188
- }
189
- catch (e) {
190
- logger.logger.debug(e);
191
- throw e;
192
- }
193
- });
194
- const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
195
- // Successful value as defined by the EIP
196
- // https://eips.ethereum.org/EIPS/eip-1271#specification
197
- const MAGIC_VALUE = '0x1626ba7e';
198
- const IS_VALID_SIGNATURE_ABI = [
199
- 'function isValidSignature(bytes32 _message, bytes _signature) public view returns (bytes4)',
200
- ];
201
- const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messageToSign, client, rpcProvider) => tslib.__awaiter(void 0, void 0, void 0, function* () {
202
- var _e;
203
- if (signature === '0x' &&
204
- // this is what wallet connect client returns there's no `safe` or `Safe`
205
- // exact string anywhere, so this seems like the best proxy
206
- ((_e = client.peerMeta) === null || _e === void 0 ? void 0 : _e.name) === 'WalletConnect Safe App') {
207
- if (!rpcProvider) {
208
- return;
209
- }
210
- const contract = new ethers.Contract(accountPublicAddress, IS_VALID_SIGNATURE_ABI, yield rpcProvider());
211
- const safeTransactionPromise = waitForSafeTransaction(signature, messageToSign, contract);
212
- const timeoutPromise = new Promise((resolve) => {
213
- setTimeout(resolve, 120000);
214
- });
215
- yield Promise.race([safeTransactionPromise, timeoutPromise]);
216
- }
217
- });
218
- // this is a hack for safe
219
- // before sending the signature downstream, we need to make sure
220
- // the transaction is recorded first on the blockchain
221
- // redcoast verify WILL fail if it attempts to verify the signature
222
- // that has not yet been properly processed!
223
- const waitForSafeTransaction = (signature, messageToSign, contract) => tslib.__awaiter(void 0, void 0, void 0, function* () {
224
- // wait for safe wallet to finish txn on the blockchain contract
225
- for (let i = 0; i < 120; i++) {
226
- try {
227
- // this will result in an exception if the transaction is still not ready
228
- // we need to catch it below
229
- const result = yield contract.isValidSignature(ethers.ethers.utils.hashMessage(messageToSign), signature);
230
- if (result === MAGIC_VALUE)
231
- return;
232
- }
233
- catch (err) {
234
- logger.logger.info('Safe transaction cannot be validated yet. Retrying.');
235
- }
236
- // try again after 2 seconds
237
- yield sleep(2000);
238
- }
239
- });
240
-
241
- exports.createSession = createSession;
242
- exports.fetchWalletConnectCosmosPublicAddress = fetchWalletConnectCosmosPublicAddress;
243
- exports.fetchWalletConnectEVMPublicAddress = fetchWalletConnectEVMPublicAddress;
244
- exports.getDeepLink = getDeepLink;
245
- exports.initClient = initClient;
246
- exports.killWalletConnectSession = killWalletConnectSession;
247
- exports.setupWalletConnectEventListeners = setupWalletConnectEventListeners;
248
- exports.signWalletConnectPersonalMessage = signWalletConnectPersonalMessage;
249
- exports.teardownWalletConnectEventListeners = teardownWalletConnectEventListeners;
250
- exports.useDeepLink = useDeepLink;