@dynamic-labs/ethereum 0.19.0-alpha.8 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/CHANGELOG.md +321 -0
  2. package/package.json +13 -10
  3. package/src/EthWalletConnector.cjs +189 -193
  4. package/src/EthWalletConnector.d.ts +298 -41
  5. package/src/EthWalletConnector.js +190 -194
  6. package/src/coinbase/client/client.cjs +78 -0
  7. package/src/coinbase/client/client.d.ts +6 -0
  8. package/src/coinbase/client/client.js +71 -0
  9. package/src/coinbase/client/index.d.ts +2 -0
  10. package/src/coinbase/client/types.d.ts +14 -0
  11. package/src/coinbase/coinbase.cjs +71 -0
  12. package/src/coinbase/coinbase.d.ts +535 -0
  13. package/src/coinbase/coinbase.js +67 -0
  14. package/src/coinbase/index.d.ts +3 -0
  15. package/src/constants.d.ts +1 -1
  16. package/src/ethProviderHelper.cjs +132 -208
  17. package/src/ethProviderHelper.d.ts +28 -36
  18. package/src/ethProviderHelper.js +133 -209
  19. package/src/index.cjs +30 -26
  20. package/src/index.d.ts +9 -8
  21. package/src/index.js +25 -20
  22. package/src/injected/BloctoInjected.cjs +6 -6
  23. package/src/injected/BloctoInjected.d.ts +4 -4
  24. package/src/injected/BloctoInjected.js +6 -6
  25. package/src/injected/BraveEvm.cjs +6 -6
  26. package/src/injected/BraveEvm.d.ts +4 -4
  27. package/src/injected/BraveEvm.js +6 -6
  28. package/src/injected/Dawn.cjs +6 -6
  29. package/src/injected/Dawn.d.ts +4 -4
  30. package/src/injected/Dawn.js +6 -6
  31. package/src/injected/ExodusEvm.cjs +8 -8
  32. package/src/injected/ExodusEvm.d.ts +5 -5
  33. package/src/injected/ExodusEvm.js +7 -7
  34. package/src/injected/Frame.cjs +6 -6
  35. package/src/injected/Frame.d.ts +4 -4
  36. package/src/injected/Frame.js +6 -6
  37. package/src/injected/GameStop.cjs +6 -6
  38. package/src/injected/GameStop.d.ts +4 -4
  39. package/src/injected/GameStop.js +6 -6
  40. package/src/injected/InjectedWalletBase.cjs +86 -65
  41. package/src/injected/InjectedWalletBase.d.ts +29 -24
  42. package/src/injected/InjectedWalletBase.js +86 -65
  43. package/src/injected/LegacyInjectedWalletBase.cjs +83 -0
  44. package/src/injected/LegacyInjectedWalletBase.d.ts +24 -0
  45. package/src/injected/LegacyInjectedWalletBase.js +81 -0
  46. package/src/injected/Opera.cjs +6 -6
  47. package/src/injected/Opera.d.ts +4 -4
  48. package/src/injected/Opera.js +6 -6
  49. package/src/injected/PhantomEvm.cjs +28 -28
  50. package/src/injected/PhantomEvm.d.ts +5 -5
  51. package/src/injected/PhantomEvm.js +28 -28
  52. package/src/injected/Rabby.cjs +8 -8
  53. package/src/injected/Rabby.d.ts +5 -5
  54. package/src/injected/Rabby.js +7 -7
  55. package/src/injected/Superb.cjs +6 -6
  56. package/src/injected/Superb.d.ts +4 -4
  57. package/src/injected/Superb.js +6 -6
  58. package/src/injected/Trust.cjs +8 -8
  59. package/src/injected/Trust.d.ts +5 -5
  60. package/src/injected/Trust.js +7 -7
  61. package/src/injected/Zerion.cjs +8 -8
  62. package/src/injected/Zerion.d.ts +5 -5
  63. package/src/injected/Zerion.js +7 -7
  64. package/src/injected/fetchInjectedWalletConnectors.cjs +33 -0
  65. package/src/injected/fetchInjectedWalletConnectors.d.ts +6 -0
  66. package/src/injected/fetchInjectedWalletConnectors.js +29 -0
  67. package/src/injected/index.d.ts +13 -16
  68. package/src/injected/legacyInjectedWallets.cjs +48 -0
  69. package/src/injected/legacyInjectedWallets.d.ts +3 -0
  70. package/src/injected/legacyInjectedWallets.js +43 -0
  71. package/src/legacyEthProviderHelper.cjs +187 -0
  72. package/src/legacyEthProviderHelper.d.ts +34 -0
  73. package/src/legacyEthProviderHelper.js +183 -0
  74. package/src/polyfills.cjs +11 -11
  75. package/src/polyfills.d.ts +1 -1
  76. package/src/polyfills.js +11 -11
  77. package/src/types.d.ts +37 -24
  78. package/src/utils/eventListenerHandlers.cjs +34 -0
  79. package/src/utils/eventListenerHandlers.d.ts +8 -0
  80. package/src/utils/eventListenerHandlers.js +30 -0
  81. package/src/utils/findEvmNetwork.cjs +13 -13
  82. package/src/utils/findEvmNetwork.d.ts +6 -6
  83. package/src/utils/findEvmNetwork.js +13 -13
  84. package/src/utils/isString.d.ts +1 -1
  85. package/src/utils/isUnsupportedProviderError/index.d.ts +1 -1
  86. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.cjs +6 -6
  87. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.d.ts +6 -6
  88. package/src/utils/isUnsupportedProviderError/isUnsupportedProviderError.js +6 -6
  89. package/src/utils/last.d.ts +1 -1
  90. package/src/utils/parseIntSafe.cjs +13 -13
  91. package/src/utils/parseIntSafe.d.ts +1 -1
  92. package/src/utils/parseIntSafe.js +13 -13
  93. package/src/walletConnect/client/client.cjs +179 -175
  94. package/src/walletConnect/client/client.d.ts +17 -17
  95. package/src/walletConnect/client/client.js +179 -175
  96. package/src/walletConnect/client/index.d.ts +1 -1
  97. package/src/walletConnect/client/types.d.ts +4 -4
  98. package/src/walletConnect/fetchWalletConnectWallets.cjs +37 -52
  99. package/src/walletConnect/fetchWalletConnectWallets.d.ts +9 -10
  100. package/src/walletConnect/fetchWalletConnectWallets.js +38 -52
  101. package/src/walletConnect/index.d.ts +3 -3
  102. package/src/walletConnect/walletConnect.cjs +131 -129
  103. package/src/walletConnect/walletConnect.d.ts +52 -52
  104. package/src/walletConnect/walletConnect.js +131 -129
  105. package/src/walletConnect/walletConnectV2.cjs +419 -385
  106. package/src/walletConnect/walletConnectV2.d.ts +326 -64
  107. package/src/walletConnect/walletConnectV2.js +420 -386
  108. package/src/injected/MetaMask.cjs +0 -15
  109. package/src/injected/MetaMask.d.ts +0 -5
  110. package/src/injected/MetaMask.js +0 -11
  111. package/src/injected/OKX.cjs +0 -15
  112. package/src/injected/OKX.d.ts +0 -5
  113. package/src/injected/OKX.js +0 -11
  114. package/src/injected/UnknownInjectedWallet.cjs +0 -14
  115. package/src/injected/UnknownInjectedWallet.d.ts +0 -4
  116. package/src/injected/UnknownInjectedWallet.js +0 -10
  117. package/src/injected/index.cjs +0 -53
  118. package/src/injected/index.js +0 -49
@@ -1,6 +1,6 @@
1
1
  import { __rest, __awaiter } from '../../_virtual/_tslib.js';
2
2
  import WalletConnectProvider from '@walletconnect/ethereum-provider';
3
- import { ethers } from 'ethers';
3
+ import { createWalletClient, custom } from 'viem';
4
4
  import { normalizeWalletName, getDeepLink } from '@dynamic-labs/wallet-connector-core';
5
5
  import { getWalletBookWallet } from '@dynamic-labs/wallet-book';
6
6
  import { isMobile, DynamicError } from '@dynamic-labs/utils';
@@ -8,134 +8,136 @@ import { EthWalletConnector } from '../EthWalletConnector.js';
8
8
  import { INFURA_ID } from '../constants.js';
9
9
  import { initClient, setupWalletConnectEventListeners, teardownWalletConnectEventListeners, fetchWalletConnectEVMPublicAddress, signWalletConnectPersonalMessage, killWalletConnectSession } from './client/client.js';
10
10
 
11
- class WalletConnect extends EthWalletConnector {
12
- constructor(_a) {
13
- var { walletConnectV1Bridge, walletName } = _a, props = __rest(_a, ["walletConnectV1Bridge", "walletName"]);
14
- super(props);
15
- this.supportedChains = ['EVM', 'ETH'];
16
- this.connectedChain = 'EVM';
17
- this.bridge = 'https://bridge.walletconnect.org';
18
- this.canConnectViaQrCode = true;
19
- this.isWalletConnect = true;
20
- this.switchNetworkOnlyFromWallet = false;
21
- this.name = walletName;
22
- if (walletConnectV1Bridge) {
23
- this.bridge = walletConnectV1Bridge;
24
- }
25
- this.deepLinkPreference = props.deepLinkPreference || 'native';
26
- }
27
- getClient() {
28
- if (this.client) {
29
- return this.client;
30
- }
31
- this.client = initClient(normalizeWalletName(this.name), this.bridge, this.clientOptions);
32
- return this.client;
33
- }
34
- supportsNetworkSwitching() {
35
- if (this.connectedChain === 'EVM') {
36
- return true;
37
- }
38
- else {
39
- const client = this.getClient();
40
- return Boolean(client === null || client === void 0 ? void 0 : client.chainId);
41
- }
42
- }
43
- setupEventListeners() {
44
- setupWalletConnectEventListeners(this, this.getClient());
45
- }
46
- teardownEventListeners() {
47
- teardownWalletConnectEventListeners(this.getClient());
48
- }
49
- getWeb3Provider() {
50
- const client = this.getClient();
51
- return client
52
- ? new ethers.providers.Web3Provider(new WalletConnectProvider({
53
- connector: client,
54
- infuraId: INFURA_ID,
55
- rpc: this.evmNetworkRpcMap(),
56
- }), 'any')
57
- : undefined;
58
- }
59
- fetchPublicAddress(opts) {
60
- return __awaiter(this, void 0, void 0, function* () {
61
- return fetchWalletConnectEVMPublicAddress(getWalletBookWallet(this.walletBook, this.key), this.getClient(), this.deepLinkPreference, Object.assign(Object.assign({}, opts), { onConnect: (payload) => {
62
- var _a;
63
- (_a = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _a === void 0 ? void 0 : _a.call(opts, payload);
64
- this.connectedChain = payload.params[0].chainId ? 'EVM' : 'SOL';
65
- } }));
66
- });
67
- }
68
- getDeepLink() {
69
- var _a;
70
- const wallet = getWalletBookWallet(this.walletBook, this.key);
71
- if (!isMobile() && !((_a = wallet.desktop) === null || _a === void 0 ? void 0 : _a.native)) {
72
- return undefined;
73
- }
74
- return getDeepLink({
75
- metadata: wallet,
76
- mode: 'regular',
77
- preference: this.deepLinkPreference,
78
- uri: this.getClient().uri,
79
- });
80
- }
81
- signMessage(messageToSign) {
82
- return __awaiter(this, void 0, void 0, function* () {
83
- return signWalletConnectPersonalMessage(messageToSign, getWalletBookWallet(this.walletBook, this.key), this.getClient(), this.deepLinkPreference,
84
- // don't call getRpcProvider until we really need to
85
- () => __awaiter(this, void 0, void 0, function* () { return this.getRpcProvider(); }));
86
- });
87
- }
88
- endSession() {
89
- return __awaiter(this, void 0, void 0, function* () {
90
- killWalletConnectSession(this.getClient());
91
- });
92
- }
93
- providerSwitchNetwork({ network, provider, }) {
94
- const _super = Object.create(null, {
95
- providerSwitchNetwork: { get: () => super.providerSwitchNetwork }
96
- });
97
- return __awaiter(this, void 0, void 0, function* () {
98
- const client = this.getClient();
99
- const currentNetworkId = yield this.getNetwork();
100
- if (currentNetworkId && currentNetworkId === network.chainId) {
101
- return;
102
- }
103
- if (this.switchNetworkOnlyFromWallet !== undefined &&
104
- this.switchNetworkOnlyFromWallet) {
105
- throw new DynamicError('Network switching is only supported through the wallet');
106
- }
107
- if (!this.supportsNetworkSwitching()) {
108
- throw new DynamicError('Network switching not supported');
109
- }
110
- if (!client) {
111
- throw new DynamicError('Client not found');
112
- }
113
- if (isMobile()) {
114
- const deepLink = getDeepLink({
115
- metadata: getWalletBookWallet(this.walletBook, this.key),
116
- mode: 'regular',
117
- preference: this.deepLinkPreference,
118
- uri: client.uri,
119
- });
120
- window.location.href = deepLink;
121
- }
122
- return _super.providerSwitchNetwork.call(this, { network, provider });
123
- });
124
- }
125
- getConnectedAccounts() {
126
- return __awaiter(this, void 0, void 0, function* () {
127
- const client = this.getClient();
128
- if (!client.connected)
129
- return [];
130
- return client.accounts;
131
- });
132
- }
133
- getSession() {
134
- var _a;
135
- return __awaiter(this, void 0, void 0, function* () {
136
- return (_a = this.client) === null || _a === void 0 ? void 0 : _a.session;
137
- });
138
- }
11
+ class WalletConnect extends EthWalletConnector {
12
+ constructor(_a) {
13
+ var { walletConnectV1Bridge, walletName } = _a, props = __rest(_a, ["walletConnectV1Bridge", "walletName"]);
14
+ super(props);
15
+ this.supportedChains = ['EVM', 'ETH'];
16
+ this.connectedChain = 'EVM';
17
+ this.bridge = 'https://bridge.walletconnect.org';
18
+ this.canConnectViaQrCode = true;
19
+ this.isWalletConnect = true;
20
+ this.switchNetworkOnlyFromWallet = false;
21
+ this.name = walletName;
22
+ if (walletConnectV1Bridge) {
23
+ this.bridge = walletConnectV1Bridge;
24
+ }
25
+ this.deepLinkPreference = props.deepLinkPreference || 'native';
26
+ }
27
+ getClient() {
28
+ if (this.client) {
29
+ return this.client;
30
+ }
31
+ this.client = initClient(normalizeWalletName(this.name), this.bridge, this.clientOptions);
32
+ return this.client;
33
+ }
34
+ supportsNetworkSwitching() {
35
+ if (this.connectedChain === 'EVM') {
36
+ return true;
37
+ }
38
+ else {
39
+ const client = this.getClient();
40
+ return Boolean(client === null || client === void 0 ? void 0 : client.chainId);
41
+ }
42
+ }
43
+ setupEventListeners() {
44
+ setupWalletConnectEventListeners(this, this.getClient());
45
+ }
46
+ teardownEventListeners() {
47
+ teardownWalletConnectEventListeners(this.getClient());
48
+ }
49
+ getWalletClient() {
50
+ const client = this.getClient();
51
+ return client
52
+ ? createWalletClient({
53
+ transport: custom(new WalletConnectProvider({
54
+ connector: client,
55
+ infuraId: INFURA_ID,
56
+ rpc: this.evmNetworkRpcMap(),
57
+ })),
58
+ })
59
+ : undefined;
60
+ }
61
+ fetchPublicAddress(opts) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ return fetchWalletConnectEVMPublicAddress(getWalletBookWallet(this.walletBook, this.key), this.getClient(), this.deepLinkPreference, Object.assign(Object.assign({}, opts), { onConnect: (payload) => {
64
+ var _a;
65
+ (_a = opts === null || opts === void 0 ? void 0 : opts.onConnect) === null || _a === void 0 ? void 0 : _a.call(opts, payload);
66
+ this.connectedChain = payload.params[0].chainId ? 'EVM' : 'SOL';
67
+ } }));
68
+ });
69
+ }
70
+ getDeepLink() {
71
+ var _a;
72
+ const wallet = getWalletBookWallet(this.walletBook, this.key);
73
+ if (!isMobile() && !((_a = wallet.desktop) === null || _a === void 0 ? void 0 : _a.native)) {
74
+ return undefined;
75
+ }
76
+ return getDeepLink({
77
+ metadata: wallet,
78
+ mode: 'regular',
79
+ preference: this.deepLinkPreference,
80
+ uri: this.getClient().uri,
81
+ });
82
+ }
83
+ signMessage(messageToSign) {
84
+ return __awaiter(this, void 0, void 0, function* () {
85
+ return signWalletConnectPersonalMessage(messageToSign, getWalletBookWallet(this.walletBook, this.key), this.getClient(), this.deepLinkPreference,
86
+ // don't call getPublicClient until we really need to
87
+ () => __awaiter(this, void 0, void 0, function* () { return this.getPublicClient(); }));
88
+ });
89
+ }
90
+ endSession() {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ killWalletConnectSession(this.getClient());
93
+ });
94
+ }
95
+ providerSwitchNetwork({ network, provider, }) {
96
+ const _super = Object.create(null, {
97
+ providerSwitchNetwork: { get: () => super.providerSwitchNetwork }
98
+ });
99
+ return __awaiter(this, void 0, void 0, function* () {
100
+ const client = this.getClient();
101
+ const currentNetworkId = yield this.getNetwork();
102
+ if (currentNetworkId && currentNetworkId === network.chainId) {
103
+ return;
104
+ }
105
+ if (this.switchNetworkOnlyFromWallet !== undefined &&
106
+ this.switchNetworkOnlyFromWallet) {
107
+ throw new DynamicError('Network switching is only supported through the wallet');
108
+ }
109
+ if (!this.supportsNetworkSwitching()) {
110
+ throw new DynamicError('Network switching not supported');
111
+ }
112
+ if (!client) {
113
+ throw new DynamicError('Client not found');
114
+ }
115
+ if (isMobile()) {
116
+ const deepLink = getDeepLink({
117
+ metadata: getWalletBookWallet(this.walletBook, this.key),
118
+ mode: 'regular',
119
+ preference: this.deepLinkPreference,
120
+ uri: client.uri,
121
+ });
122
+ window.location.href = deepLink;
123
+ }
124
+ return _super.providerSwitchNetwork.call(this, { network, provider });
125
+ });
126
+ }
127
+ getConnectedAccounts() {
128
+ return __awaiter(this, void 0, void 0, function* () {
129
+ const client = this.getClient();
130
+ if (!client.connected)
131
+ return [];
132
+ return client.accounts;
133
+ });
134
+ }
135
+ getSession() {
136
+ var _a;
137
+ return __awaiter(this, void 0, void 0, function* () {
138
+ return (_a = this.client) === null || _a === void 0 ? void 0 : _a.session;
139
+ });
140
+ }
139
141
  }
140
142
 
141
143
  export { WalletConnect };