@dynamic-labs/ethereum 2.0.0-alpha.5 → 2.0.0-alpha.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.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,43 @@
1
1
 
2
+ ## [2.0.0-alpha.7](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.6...v2.0.0-alpha.7) (2024-02-28)
3
+
4
+
5
+ ### ⚠ BREAKING CHANGES
6
+
7
+ * add networkValidationMode and remove enableForcedNetworkValidation (#4778)
8
+
9
+ ### Features
10
+
11
+ * add bitget and okx wallets ([51fab41](https://github.com/dynamic-labs/DynamicAuth/commit/51fab413096fd89ce99c6c617cf4f3f5db9bf44d))
12
+ * add networkValidationMode and remove enableForcedNetworkValidation ([#4778](https://github.com/dynamic-labs/DynamicAuth/issues/4778)) ([ccb9576](https://github.com/dynamic-labs/DynamicAuth/commit/ccb9576c81b2c570185f5126d6d1fcfcbb5ac9e3))
13
+
14
+
15
+ ### Bug Fixes
16
+
17
+ * **GVTY-1243:** non evm onramp urls ([#4791](https://github.com/dynamic-labs/DynamicAuth/issues/4791)) ([fea602e](https://github.com/dynamic-labs/DynamicAuth/commit/fea602e2835b4bb9bc096b96375fa97297bf35f1))
18
+ * revert use enableForcedNetworkValidation on connect-only ([#4750](https://github.com/dynamic-labs/DynamicAuth/issues/4750)) ([#4772](https://github.com/dynamic-labs/DynamicAuth/issues/4772)) ([b871c22](https://github.com/dynamic-labs/DynamicAuth/commit/b871c2295f39230bc34ae1fca5f8817cd9251a17))
19
+ * use correct chromeId for okx and bitget wallets and remove group from coin98 ([#4795](https://github.com/dynamic-labs/DynamicAuth/issues/4795)) ([e63bad7](https://github.com/dynamic-labs/DynamicAuth/commit/e63bad76ed06636151212c915a102359a03b4218))
20
+
21
+ ## [2.0.0-alpha.6](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.5...v2.0.0-alpha.6) (2024-02-26)
22
+
23
+
24
+ ### ⚠ BREAKING CHANGES
25
+
26
+ * setShowAuthFlow opens dynamic profile in non-multi-wallet states
27
+
28
+ ### Features
29
+
30
+ * allow passing prop to hide embedded wallet action confirmation UIs ([#4775](https://github.com/dynamic-labs/DynamicAuth/issues/4775)) ([d7c6a46](https://github.com/dynamic-labs/DynamicAuth/commit/d7c6a4699e41f6a62d31880c3bd0346ebfa0e3ba))
31
+ * make sms mobile keyboard numeric ([#4755](https://github.com/dynamic-labs/DynamicAuth/issues/4755)) ([f36844a](https://github.com/dynamic-labs/DynamicAuth/commit/f36844aeaae240c520181b3242492db8ffc64a50))
32
+ * setShowAuthFlow opens dynamic profile in non-multi-wallet states ([42dbbc0](https://github.com/dynamic-labs/DynamicAuth/commit/42dbbc00a5cebe937dca5a80397cdd3c577f6a45))
33
+
34
+
35
+ ### Bug Fixes
36
+
37
+ * demo one-time codes for solana wallets fix ([#4760](https://github.com/dynamic-labs/DynamicAuth/issues/4760)) ([a5ab2a8](https://github.com/dynamic-labs/DynamicAuth/commit/a5ab2a8bc348a35a898e03db0900bfab88184c17))
38
+ * only store passcode in backend when auto-generated by dynamic ([#4764](https://github.com/dynamic-labs/DynamicAuth/issues/4764)) ([528bedc](https://github.com/dynamic-labs/DynamicAuth/commit/528bedce5cbd3022ddafe4242954a04f5b70ae74))
39
+ * use enableForcedNetworkValidation on connect-only ([#4750](https://github.com/dynamic-labs/DynamicAuth/issues/4750)) ([6299f7c](https://github.com/dynamic-labs/DynamicAuth/commit/6299f7c3ce705ddb19714f6b7a3a488851ed8dde))
40
+
2
41
  ## [2.0.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.4...v2.0.0-alpha.5) (2024-02-22)
3
42
 
4
43
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/ethereum",
3
- "version": "2.0.0-alpha.5",
3
+ "version": "2.0.0-alpha.7",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -26,16 +26,16 @@
26
26
  "./package.json": "./package.json"
27
27
  },
28
28
  "dependencies": {
29
- "@coinbase/wallet-sdk": "3.9.1",
29
+ "@coinbase/wallet-sdk": "3.9.2",
30
30
  "@walletconnect/universal-provider": "2.10.6",
31
31
  "eventemitter3": "5.0.1",
32
32
  "buffer": "6.0.3",
33
- "@dynamic-labs/rpc-provider-ethereum": "2.0.0-alpha.5",
34
- "@dynamic-labs/turnkey": "2.0.0-alpha.5",
35
- "@dynamic-labs/types": "2.0.0-alpha.5",
36
- "@dynamic-labs/utils": "2.0.0-alpha.5",
37
- "@dynamic-labs/wallet-book": "2.0.0-alpha.5",
38
- "@dynamic-labs/wallet-connector-core": "2.0.0-alpha.5",
33
+ "@dynamic-labs/rpc-provider-ethereum": "2.0.0-alpha.7",
34
+ "@dynamic-labs/turnkey": "2.0.0-alpha.7",
35
+ "@dynamic-labs/types": "2.0.0-alpha.7",
36
+ "@dynamic-labs/utils": "2.0.0-alpha.7",
37
+ "@dynamic-labs/wallet-book": "2.0.0-alpha.7",
38
+ "@dynamic-labs/wallet-connector-core": "2.0.0-alpha.7",
39
39
  "stream": "0.0.2"
40
40
  },
41
41
  "peerDependencies": {
@@ -6,7 +6,6 @@ var _tslib = require('../_virtual/_tslib.cjs');
6
6
  var viem = require('viem');
7
7
  var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
8
8
  var utils = require('@dynamic-labs/utils');
9
- var rpcProviderEthereum = require('@dynamic-labs/rpc-provider-ethereum');
10
9
  var findEvmNetwork = require('./utils/findEvmNetwork.cjs');
11
10
 
12
11
  class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
@@ -38,25 +37,7 @@ class EthWalletConnector extends walletConnectorCore.WalletConnectorBase {
38
37
  }, {});
39
38
  this.evmNetworks = utils.parseEvmNetworks(props.evmNetworks);
40
39
  this.chainRpcProviders = props.chainRpcProviders;
41
- (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(rpcProviderEthereum.ProviderChain.EVM, (config) => {
42
- const rpcProviders = {};
43
- if (config === null || config === void 0 ? void 0 : config.evm) {
44
- rpcProviders.evm = utils.parseEvmNetworks(config.evm).map((network) => {
45
- var _a;
46
- const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
47
- const provider = viem.createPublicClient({
48
- chain: utils.getOrMapViemChain(network),
49
- transport: viem.http(rpcUrl),
50
- });
51
- return {
52
- chainId: network.chainId,
53
- chainName: network.name,
54
- provider,
55
- };
56
- });
57
- }
58
- return rpcProviders.evm;
59
- });
40
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerEvmProviders();
60
41
  }
61
42
  getNetwork() {
62
43
  return _tslib.__awaiter(this, void 0, void 0, function* () {
@@ -40,20 +40,20 @@ export declare abstract class EthWalletConnector extends WalletConnectorBase {
40
40
  type: string;
41
41
  uid: string;
42
42
  addChain: (args: import("viem").AddChainParameters) => Promise<void>;
43
- deployContract: <const TAbi extends import("viem").Abi | readonly unknown[], TChainOverride extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride>) => Promise<`0x${string}`>;
43
+ deployContract: <const abi extends import("viem").Abi | readonly unknown[], chainOverride extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<abi, import("viem").Chain | undefined, import("viem").Account | undefined, chainOverride>) => Promise<`0x${string}`>;
44
44
  getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
45
45
  getChainId: () => Promise<number>;
46
46
  getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
47
- prepareTransactionRequest: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
47
+ prepareTransactionRequest: <TParameterType extends import("viem").PrepareTransactionRequestParameterType, TChainOverride extends import("viem").Chain | undefined = undefined, TAccountOverride extends `0x${string}` | import("viem").Account | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride, TAccountOverride, TParameterType>) => Promise<import("viem").PrepareTransactionRequestReturnType<import("viem").Chain, import("viem").Account | undefined, TChainOverride, TAccountOverride, TParameterType>>;
48
48
  requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
49
49
  requestPermissions: (args: {
50
50
  [x: string]: Record<string, any>;
51
51
  eth_accounts: Record<string, any>;
52
52
  }) => Promise<import("viem").RequestPermissionsReturnType>;
53
- sendRawTransaction: (args: import("node_modules/viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
54
- sendTransaction: <TChainOverride_2 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
53
+ sendRawTransaction: (args: import("viem").SendRawTransactionParameters) => Promise<`0x${string}`>;
54
+ sendTransaction: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<`0x${string}`>;
55
55
  signMessage: (args: import("viem").SignMessageParameters<import("viem").Account | undefined>) => Promise<`0x${string}`>;
56
- signTransaction: <TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("node_modules/viem/_types/actions/wallet/signTransaction").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
56
+ signTransaction: <TChainOverride_2 extends import("viem").Chain | undefined>(args: import("viem").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
57
57
  signTypedData: <const TTypedData extends {
58
58
  [x: string]: readonly import("viem").TypedDataParameter[];
59
59
  [x: `string[${string}]`]: undefined;
@@ -264,7 +264,7 @@ export declare abstract class EthWalletConnector extends WalletConnectorBase {
264
264
  }, TPrimaryType extends string>(args: import("viem").SignTypedDataParameters<TTypedData, TPrimaryType, import("viem").Account | undefined>) => Promise<`0x${string}`>;
265
265
  switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
266
266
  watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
267
- writeContract: <const TAbi_1 extends import("viem").Abi | readonly unknown[], TFunctionName extends string, TChainOverride_4 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_1, TFunctionName, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_4>) => Promise<`0x${string}`>;
267
+ writeContract: <const abi_1 extends import("viem").Abi | readonly unknown[], functionName extends import("viem").ContractFunctionName<abi_1, "nonpayable" | "payable">, args extends import("viem").ContractFunctionArgs<abi_1, "pure" | "view", functionName>, TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<abi_1, functionName, args, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
268
268
  extend: <const client extends {
269
269
  [x: string]: unknown;
270
270
  account?: undefined;
@@ -278,7 +278,7 @@ export declare abstract class EthWalletConnector extends WalletConnectorBase {
278
278
  transport?: undefined;
279
279
  type?: undefined;
280
280
  uid?: undefined;
281
- } & Partial<Pick<import("viem").PublicActions, "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getChainId" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "prepareTransactionRequest" | "readContract" | "sendRawTransaction" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
281
+ } & Partial<Pick<import("viem").PublicActions<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined>, "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getChainId" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "prepareTransactionRequest" | "readContract" | "sendRawTransaction" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
282
282
  } | undefined>;
283
283
  getBalance(): Promise<string | undefined>;
284
284
  supportsNetworkSwitching(): boolean;
@@ -1,8 +1,7 @@
1
1
  import { __awaiter } from '../_virtual/_tslib.js';
2
- import { createPublicClient, http, formatEther } from 'viem';
2
+ import { formatEther } from 'viem';
3
3
  import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
4
- import { parseEvmNetworks, getOrMapViemChain, retryableFn, FALLBACK_UNDEFINED, DynamicError } from '@dynamic-labs/utils';
5
- import { ProviderChain } from '@dynamic-labs/rpc-provider-ethereum';
4
+ import { parseEvmNetworks, retryableFn, FALLBACK_UNDEFINED, DynamicError, getOrMapViemChain } from '@dynamic-labs/utils';
6
5
  import { findEvmNetwork } from './utils/findEvmNetwork.js';
7
6
 
8
7
  class EthWalletConnector extends WalletConnectorBase {
@@ -34,25 +33,7 @@ class EthWalletConnector extends WalletConnectorBase {
34
33
  }, {});
35
34
  this.evmNetworks = parseEvmNetworks(props.evmNetworks);
36
35
  this.chainRpcProviders = props.chainRpcProviders;
37
- (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerChainProviders(ProviderChain.EVM, (config) => {
38
- const rpcProviders = {};
39
- if (config === null || config === void 0 ? void 0 : config.evm) {
40
- rpcProviders.evm = parseEvmNetworks(config.evm).map((network) => {
41
- var _a;
42
- const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
43
- const provider = createPublicClient({
44
- chain: getOrMapViemChain(network),
45
- transport: http(rpcUrl),
46
- });
47
- return {
48
- chainId: network.chainId,
49
- chainName: network.name,
50
- provider,
51
- };
52
- });
53
- }
54
- return rpcProviders.evm;
55
- });
36
+ (_a = this.chainRpcProviders) === null || _a === void 0 ? void 0 : _a.registerEvmProviders();
56
37
  }
57
38
  getNetwork() {
58
39
  return __awaiter(this, void 0, void 0, function* () {
@@ -12,12 +12,14 @@ var ethProviderHelper = require('../ethProviderHelper.cjs');
12
12
  var EthWalletConnector = require('../EthWalletConnector.cjs');
13
13
  require('../walletConnect/walletConnect.cjs');
14
14
  var client = require('./client/client.cjs');
15
+ require('@dynamic-labs/rpc-provider-ethereum');
15
16
 
16
17
  class Coinbase extends EthWalletConnector.EthWalletConnector {
17
18
  constructor(_a) {
18
19
  var { appName, appLogoUrl, evmNetworks } = _a, props = _tslib.__rest(_a, ["appName", "appLogoUrl", "evmNetworks"]);
19
20
  super(Object.assign({ evmNetworks }, props));
20
21
  this.name = 'Coinbase';
22
+ this.overrideKey = 'coinbase';
21
23
  this.supportedChains = ['EVM', 'ETH'];
22
24
  this.connectedChain = 'EVM';
23
25
  this.canConnectViaQrCode = true;
@@ -7,6 +7,7 @@ type CoinbaseOpts = EthWalletConnectorOpts & {
7
7
  };
8
8
  export declare class Coinbase extends EthWalletConnector {
9
9
  name: string;
10
+ overrideKey: string;
10
11
  supportedChains: Chain[];
11
12
  connectedChain: Chain;
12
13
  canConnectViaQrCode: boolean;
@@ -32,20 +33,20 @@ export declare class Coinbase extends EthWalletConnector {
32
33
  type: string;
33
34
  uid: string;
34
35
  addChain: (args: import("viem").AddChainParameters) => Promise<void>;
35
- deployContract: <const TAbi extends import("viem").Abi | readonly unknown[], TChainOverride extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride>) => Promise<`0x${string}`>;
36
+ deployContract: <const abi extends import("viem").Abi | readonly unknown[], chainOverride extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<abi, import("viem").Chain | undefined, import("viem").Account | undefined, chainOverride>) => Promise<`0x${string}`>;
36
37
  getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
37
38
  getChainId: () => Promise<number>;
38
39
  getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
39
- prepareTransactionRequest: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
40
+ prepareTransactionRequest: <TParameterType extends import("viem").PrepareTransactionRequestParameterType, TChainOverride extends import("viem").Chain | undefined = undefined, TAccountOverride extends `0x${string}` | import("viem").Account | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride, TAccountOverride, TParameterType>) => Promise<import("viem").PrepareTransactionRequestReturnType<import("viem").Chain, import("viem").Account | undefined, TChainOverride, TAccountOverride, TParameterType>>;
40
41
  requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
41
42
  requestPermissions: (args: {
42
43
  [x: string]: Record<string, any>;
43
44
  eth_accounts: Record<string, any>;
44
45
  }) => Promise<import("viem").RequestPermissionsReturnType>;
45
- sendRawTransaction: (args: import("node_modules/viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
46
- sendTransaction: <TChainOverride_2 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
46
+ sendRawTransaction: (args: import("viem").SendRawTransactionParameters) => Promise<`0x${string}`>;
47
+ sendTransaction: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_1>) => Promise<`0x${string}`>;
47
48
  signMessage: (args: import("viem").SignMessageParameters<import("viem").Account | undefined>) => Promise<`0x${string}`>;
48
- signTransaction: <TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("node_modules/viem/_types/actions/wallet/signTransaction").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
49
+ signTransaction: <TChainOverride_2 extends import("viem").Chain | undefined>(args: import("viem").SignTransactionParameters<import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_2>) => Promise<`0x${string}`>;
49
50
  signTypedData: <const TTypedData extends {
50
51
  [x: string]: readonly import("viem").TypedDataParameter[];
51
52
  [x: `string[${string}]`]: undefined;
@@ -256,7 +257,7 @@ export declare class Coinbase extends EthWalletConnector {
256
257
  }, TPrimaryType extends string>(args: import("viem").SignTypedDataParameters<TTypedData, TPrimaryType, import("viem").Account | undefined>) => Promise<`0x${string}`>;
257
258
  switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
258
259
  watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
259
- writeContract: <const TAbi_1 extends import("viem").Abi | readonly unknown[], TFunctionName extends string, TChainOverride_4 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_1, TFunctionName, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_4>) => Promise<`0x${string}`>;
260
+ writeContract: <const abi_1 extends import("viem").Abi | readonly unknown[], functionName extends import("viem").ContractFunctionName<abi_1, "nonpayable" | "payable">, args extends import("viem").ContractFunctionArgs<abi_1, "pure" | "view", functionName>, TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<abi_1, functionName, args, import("viem").Chain | undefined, import("viem").Account | undefined, TChainOverride_3>) => Promise<`0x${string}`>;
260
261
  extend: <const client extends {
261
262
  [x: string]: unknown;
262
263
  account?: undefined;
@@ -270,7 +271,7 @@ export declare class Coinbase extends EthWalletConnector {
270
271
  transport?: undefined;
271
272
  type?: undefined;
272
273
  uid?: undefined;
273
- } & Partial<Pick<import("viem").PublicActions, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
274
+ } & Partial<Pick<import("viem").PublicActions<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined>, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>) => client) => import("viem").Client<import("viem").Transport, import("viem").Chain | undefined, import("viem").Account | undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<import("viem").Chain | undefined, import("viem").Account | undefined>>;
274
275
  } | {
275
276
  account: undefined;
276
277
  batch?: {
@@ -289,20 +290,20 @@ export declare class Coinbase extends EthWalletConnector {
289
290
  type: string;
290
291
  uid: string;
291
292
  addChain: (args: import("viem").AddChainParameters) => Promise<void>;
292
- deployContract: <const TAbi_2 extends import("viem").Abi | readonly unknown[], TChainOverride_5 extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi_2, undefined, undefined, TChainOverride_5>) => Promise<`0x${string}`>;
293
+ deployContract: <const abi_2 extends import("viem").Abi | readonly unknown[], chainOverride_1 extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<abi_2, undefined, undefined, chainOverride_1>) => Promise<`0x${string}`>;
293
294
  getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
294
295
  getChainId: () => Promise<number>;
295
296
  getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
296
- prepareTransactionRequest: <TChainOverride_6 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride_6>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
297
+ prepareTransactionRequest: <TParameterType_1 extends import("viem").PrepareTransactionRequestParameterType, TChainOverride_4 extends import("viem").Chain | undefined = undefined, TAccountOverride_1 extends `0x${string}` | import("viem").Account | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride_4, TAccountOverride_1, TParameterType_1>) => Promise<import("viem").PrepareTransactionRequestReturnType<import("viem").Chain, undefined, TChainOverride_4, TAccountOverride_1, TParameterType_1>>;
297
298
  requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
298
299
  requestPermissions: (args: {
299
300
  [x: string]: Record<string, any>;
300
301
  eth_accounts: Record<string, any>;
301
302
  }) => Promise<import("viem").RequestPermissionsReturnType>;
302
- sendRawTransaction: (args: import("node_modules/viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
303
- sendTransaction: <TChainOverride_7 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_7>) => Promise<`0x${string}`>;
303
+ sendRawTransaction: (args: import("viem").SendRawTransactionParameters) => Promise<`0x${string}`>;
304
+ sendTransaction: <TChainOverride_5 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_5>) => Promise<`0x${string}`>;
304
305
  signMessage: (args: import("viem").SignMessageParameters<undefined>) => Promise<`0x${string}`>;
305
- signTransaction: <TChainOverride_8 extends import("viem").Chain | undefined = undefined>(args: import("node_modules/viem/_types/actions/wallet/signTransaction").SignTransactionParameters<undefined, undefined, TChainOverride_8>) => Promise<`0x${string}`>;
306
+ signTransaction: <TChainOverride_6 extends import("viem").Chain | undefined>(args: import("viem").SignTransactionParameters<undefined, undefined, TChainOverride_6>) => Promise<`0x${string}`>;
306
307
  signTypedData: <const TTypedData_1 extends {
307
308
  [x: string]: readonly import("viem").TypedDataParameter[];
308
309
  [x: `string[${string}]`]: undefined;
@@ -513,7 +514,7 @@ export declare class Coinbase extends EthWalletConnector {
513
514
  }, TPrimaryType_1 extends string>(args: import("viem").SignTypedDataParameters<TTypedData_1, TPrimaryType_1, undefined>) => Promise<`0x${string}`>;
514
515
  switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
515
516
  watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
516
- writeContract: <const TAbi_3 extends import("viem").Abi | readonly unknown[], TFunctionName_1 extends string, TChainOverride_9 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_3, TFunctionName_1, undefined, undefined, TChainOverride_9>) => Promise<`0x${string}`>;
517
+ writeContract: <const abi_3 extends import("viem").Abi | readonly unknown[], functionName_1 extends import("viem").ContractFunctionName<abi_3, "nonpayable" | "payable">, args_1 extends import("viem").ContractFunctionArgs<abi_3, "pure" | "view", functionName_1>, TChainOverride_7 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<abi_3, functionName_1, args_1, undefined, undefined, TChainOverride_7>) => Promise<`0x${string}`>;
517
518
  extend: <const client_1 extends {
518
519
  [x: string]: unknown;
519
520
  account?: undefined;
@@ -527,7 +528,7 @@ export declare class Coinbase extends EthWalletConnector {
527
528
  transport?: undefined;
528
529
  type?: undefined;
529
530
  uid?: undefined;
530
- } & Partial<Pick<import("viem").PublicActions, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client_1) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K_1 in keyof client_1]: client_1[K_1]; } & import("viem").WalletActions<undefined, undefined>>;
531
+ } & Partial<Pick<import("viem").PublicActions<import("viem").CustomTransport, undefined, undefined>, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions<undefined, undefined>, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client_1) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K_1 in keyof client_1]: client_1[K_1]; } & import("viem").WalletActions<undefined, undefined>>;
531
532
  } | undefined;
532
533
  isInstalledOnBrowser(): boolean;
533
534
  fetchPublicAddress(opts?: FetchPublicAddressOpts): Promise<string | undefined>;
@@ -8,12 +8,14 @@ import { EthProviderHelper } from '../ethProviderHelper.js';
8
8
  import { EthWalletConnector } from '../EthWalletConnector.js';
9
9
  import '../walletConnect/walletConnect.js';
10
10
  import { getCoinbaseProvider, fetchPublicAddress, signMessage, killCoinbaseSession } from './client/client.js';
11
+ import '@dynamic-labs/rpc-provider-ethereum';
11
12
 
12
13
  class Coinbase extends EthWalletConnector {
13
14
  constructor(_a) {
14
15
  var { appName, appLogoUrl, evmNetworks } = _a, props = __rest(_a, ["appName", "appLogoUrl", "evmNetworks"]);
15
16
  super(Object.assign({ evmNetworks }, props));
16
17
  this.name = 'Coinbase';
18
+ this.overrideKey = 'coinbase';
17
19
  this.supportedChains = ['EVM', 'ETH'];
18
20
  this.connectedChain = 'EVM';
19
21
  this.canConnectViaQrCode = true;
package/src/index.cjs CHANGED
@@ -10,6 +10,7 @@ var fetchInjectedWalletConnectors = require('./injected/fetchInjectedWalletConne
10
10
  require('./walletConnect/walletConnect.cjs');
11
11
  var fetchWalletConnectWallets = require('./walletConnect/fetchWalletConnectWallets.cjs');
12
12
  var coinbase = require('./coinbase/coinbase.cjs');
13
+ require('@dynamic-labs/rpc-provider-ethereum');
13
14
  var EthWalletConnector = require('./EthWalletConnector.cjs');
14
15
  var ethProviderHelper = require('./ethProviderHelper.cjs');
15
16
  var constants = require('./constants.cjs');
package/src/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import './polyfills';
2
2
  import { WalletConnectorConstructor } from '@dynamic-labs/wallet-connector-core';
3
+ import '@dynamic-labs/rpc-provider-ethereum';
3
4
  export * from './injected';
4
5
  export * from './EthWalletConnector';
5
6
  export * from './ethProviderHelper';
package/src/index.js CHANGED
@@ -7,6 +7,7 @@ export { fetchInjectedWalletConnector, injectedWalletOverrides } from './injecte
7
7
  import './walletConnect/walletConnect.js';
8
8
  import { fetchWalletConnectWallets, getWalletConnectConnector } from './walletConnect/fetchWalletConnectWallets.js';
9
9
  import { Coinbase } from './coinbase/coinbase.js';
10
+ import '@dynamic-labs/rpc-provider-ethereum';
10
11
  export { EthWalletConnector } from './EthWalletConnector.js';
11
12
  export { EthProviderHelper } from './ethProviderHelper.js';
12
13
  export { INFURA_ID } from './constants.js';
@@ -10,6 +10,7 @@ class ExodusEvm extends InjectedWalletBase {
10
10
  constructor(props) {
11
11
  super(props);
12
12
  this.name = 'ExodusEvm';
13
+ this.overrideKey = 'exodusevm';
13
14
  this.walletConnectorFallback = true;
14
15
  this.wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
15
16
  }
@@ -2,6 +2,7 @@ import { EthWalletConnectorOpts } from '..';
2
2
  import InjectedWalletBase from './InjectedWalletBase';
3
3
  export declare class ExodusEvm extends InjectedWalletBase {
4
4
  name: string;
5
+ overrideKey: string;
5
6
  walletConnectorFallback: boolean;
6
7
  constructor(props: EthWalletConnectorOpts);
7
8
  }
@@ -6,6 +6,7 @@ class ExodusEvm extends InjectedWalletBase {
6
6
  constructor(props) {
7
7
  super(props);
8
8
  this.name = 'ExodusEvm';
9
+ this.overrideKey = 'exodusevm';
9
10
  this.walletConnectorFallback = true;
10
11
  this.wallet = findWalletBookWallet(this.walletBook, this.key);
11
12
  }
@@ -11,6 +11,7 @@ class PhantomEvm extends InjectedWalletBase {
11
11
  constructor(props) {
12
12
  super(props);
13
13
  this.name = 'PhantomEvm';
14
+ this.overrideKey = 'phantomevm';
14
15
  this.wallet = walletBook.findWalletBookWallet(this.walletBook, this.key);
15
16
  }
16
17
  fetchPublicAddress() {
@@ -2,6 +2,7 @@ import { EthWalletConnectorOpts } from '..';
2
2
  import InjectedWalletBase from './InjectedWalletBase';
3
3
  export declare class PhantomEvm extends InjectedWalletBase {
4
4
  name: string;
5
+ overrideKey: string;
5
6
  constructor(props: EthWalletConnectorOpts);
6
7
  fetchPublicAddress(): Promise<string | undefined>;
7
8
  }
@@ -7,6 +7,7 @@ class PhantomEvm extends InjectedWalletBase {
7
7
  constructor(props) {
8
8
  super(props);
9
9
  this.name = 'PhantomEvm';
10
+ this.overrideKey = 'phantomevm';
10
11
  this.wallet = findWalletBookWallet(this.walletBook, this.key);
11
12
  }
12
13
  fetchPublicAddress() {
@@ -6,14 +6,15 @@ var walletConnect = require('./walletConnect.cjs');
6
6
 
7
7
  const fetchWalletConnectWallets = ({ walletBook, }) => {
8
8
  var _a;
9
- return Object.values((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
10
- .filter((wallet) => wallet.walletConnect && !wallet.filterFromWalletConnect)
11
- .map((wallet) => {
9
+ return Object.entries((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
10
+ .filter(([, wallet]) => wallet.walletConnect && !wallet.filterFromWalletConnect)
11
+ .map(([key, wallet]) => {
12
12
  const { shortName } = wallet;
13
13
  const name = shortName || wallet.name;
14
14
  return class extends walletConnect.WalletConnect {
15
15
  constructor(props) {
16
16
  super(Object.assign(Object.assign({}, props), { walletName: name }));
17
+ this.overrideKey = key;
17
18
  }
18
19
  };
19
20
  });
@@ -2,14 +2,15 @@ import { WalletConnect } from './walletConnect.js';
2
2
 
3
3
  const fetchWalletConnectWallets = ({ walletBook, }) => {
4
4
  var _a;
5
- return Object.values((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
6
- .filter((wallet) => wallet.walletConnect && !wallet.filterFromWalletConnect)
7
- .map((wallet) => {
5
+ return Object.entries((_a = walletBook === null || walletBook === void 0 ? void 0 : walletBook.wallets) !== null && _a !== void 0 ? _a : {})
6
+ .filter(([, wallet]) => wallet.walletConnect && !wallet.filterFromWalletConnect)
7
+ .map(([key, wallet]) => {
8
8
  const { shortName } = wallet;
9
9
  const name = shortName || wallet.name;
10
10
  return class extends WalletConnect {
11
11
  constructor(props) {
12
12
  super(Object.assign(Object.assign({}, props), { walletName: name }));
13
+ this.overrideKey = key;
13
14
  }
14
15
  };
15
16
  });
@@ -6,9 +6,9 @@ var _tslib = require('../../_virtual/_tslib.cjs');
6
6
  var Provider = require('@walletconnect/universal-provider');
7
7
  var EventEmitter = require('eventemitter3');
8
8
  var viem = require('viem');
9
- var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
10
- var walletBook = require('@dynamic-labs/wallet-book');
11
9
  var utils = require('@dynamic-labs/utils');
10
+ var walletBook = require('@dynamic-labs/wallet-book');
11
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
12
12
  var EthWalletConnector = require('../EthWalletConnector.cjs');
13
13
  var parseIntSafe = require('../utils/parseIntSafe.cjs');
14
14
 
@@ -53,11 +53,7 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
53
53
  .map((network) => `eip155:${network.chainId}`));
54
54
  }
55
55
  getMappedChainsByPreferredOrder() {
56
- // adding Ethereum to avoid an error connecting if none of the evm networks are supported by the wallet
57
56
  const allChains = this.getMappedChains();
58
- if (!allChains.includes('eip155:1')) {
59
- allChains.push('eip155:1');
60
- }
61
57
  const reorderedChains = this.preferredChains.filter((chain) => allChains.includes(chain));
62
58
  const remainingChains = allChains.filter((chain) => !this.preferredChains.includes(chain));
63
59
  return [...reorderedChains, ...remainingChains];
@@ -102,15 +98,17 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
102
98
  }
103
99
  createInitProviderPromise() {
104
100
  return _tslib.__awaiter(this, void 0, void 0, function* () {
105
- const provider = yield Provider__default["default"].init({
101
+ WalletConnect.provider = yield Provider__default["default"].init({
106
102
  logger: walletConnectorCore.logger.logLevel.toLowerCase() === 'debug' ? 'debug' : undefined,
107
103
  projectId: this.projectId,
108
104
  });
109
- WalletConnect.provider = provider;
110
105
  this.teardownEventListeners();
111
106
  this.setupEventListeners();
112
107
  });
113
108
  }
109
+ // We need to add a gate to this method since we will be calling it asynchronously
110
+ // from different places (such as setShowAuthFlow), which means there's a chance for
111
+ // a race condition to happen where createInitProviderPromise is called multiple times
114
112
  initProvider() {
115
113
  return _tslib.__awaiter(this, void 0, void 0, function* () {
116
114
  const { provider } = WalletConnect;
@@ -246,7 +244,7 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
246
244
  // the connection is established, but we need to wait for it to
247
245
  // finish setting up the connection URI and making it available
248
246
  // on the provider
249
- yield new Promise((resolve) => setTimeout(resolve, 1000));
247
+ yield utils.sleep(1000);
250
248
  if (!WalletConnect.provider || !((_b = WalletConnect.provider) === null || _b === void 0 ? void 0 : _b.uri)) {
251
249
  walletConnectorCore.logger.debug('No WC2 provider found, escaping and throwing error');
252
250
  throw new utils.DynamicError('No provider found');
@@ -262,22 +260,40 @@ class WalletConnect extends EthWalletConnector.EthWalletConnector {
262
260
  reject(new utils.DynamicError('No provider found'));
263
261
  return;
264
262
  }
265
- ee.on('walletconnect_connection_failed', () => {
263
+ const onFail = () => {
266
264
  const error = new utils.DynamicError('Connection rejected. Please try again.');
267
265
  error.code = 'connection_rejected';
268
266
  if (WalletConnect.provider) {
269
267
  WalletConnect.provider.uri = undefined;
268
+ // this is needed for mobile to work when using universal links.
269
+ // if the user cancels the connection, we need to re-initialize the provider
270
+ // so that the async work is done ahead of time, before the user tries to connect again,
271
+ // otherwise they will trigger the iOS bug where they are redirected to the app store
272
+ this.init();
270
273
  }
271
274
  reject(error);
272
- });
273
- WalletConnect.provider.on('connect', ({ session }) => {
275
+ // We must clean up the onConnect and onFail listeners
276
+ // whenever the connection attempt either succeeds or fails
277
+ cleanupListeners();
278
+ };
279
+ const onConnect = ({ session }) => {
274
280
  if (!session) {
275
281
  reject(new utils.DynamicError('No session found'));
276
282
  }
277
283
  this.setSession(session);
278
284
  this.setActiveAccount(session.namespaces.eip155.accounts[0].split(':')[2]);
279
285
  resolve(this.activeAccount);
280
- });
286
+ // We must clean up the onConnect and onFail listeners
287
+ // whenever the connection attempt either succeeds or fails
288
+ cleanupListeners();
289
+ };
290
+ const cleanupListeners = () => {
291
+ var _a;
292
+ ee.off('walletconnect_connection_failed', onFail);
293
+ (_a = WalletConnect.provider) === null || _a === void 0 ? void 0 : _a.off('connect', onConnect);
294
+ };
295
+ ee.on('walletconnect_connection_failed', onFail);
296
+ WalletConnect.provider.on('connect', onConnect);
281
297
  });
282
298
  });
283
299
  }
@@ -1,7 +1,7 @@
1
1
  import type { SessionTypes } from '@walletconnect/types';
2
2
  import { Hex, WalletClient } from 'viem';
3
- import { Chain, FetchPublicAddressOpts, DeepLinkVariant } from '@dynamic-labs/wallet-connector-core';
4
3
  import { EvmNetwork } from '@dynamic-labs/types';
4
+ import { Chain, DeepLinkVariant, FetchPublicAddressOpts, IWalletConnectConnector } from '@dynamic-labs/wallet-connector-core';
5
5
  import { EthWalletConnector, EthWalletConnectorOpts } from '../EthWalletConnector';
6
6
  export type WalletConnectOpts = EthWalletConnectorOpts & {
7
7
  projectId?: string;
@@ -9,7 +9,7 @@ export type WalletConnectOpts = EthWalletConnectorOpts & {
9
9
  deepLinkPreference?: DeepLinkVariant;
10
10
  walletConnectPreferredChains?: `eip155:${number}`[];
11
11
  };
12
- export declare class WalletConnect extends EthWalletConnector {
12
+ export declare class WalletConnect extends EthWalletConnector implements IWalletConnectConnector {
13
13
  supportedChains: Chain[];
14
14
  connectedChain: Chain;
15
15
  name: string;
@@ -62,20 +62,20 @@ export declare class WalletConnect extends EthWalletConnector {
62
62
  type: string;
63
63
  uid: string;
64
64
  addChain: (args: import("viem").AddChainParameters) => Promise<void>;
65
- deployContract: <const TAbi extends import("viem").Abi | readonly unknown[], TChainOverride extends import("viem").Chain | undefined = undefined>(args: import("viem").DeployContractParameters<TAbi, undefined, undefined, TChainOverride>) => Promise<`0x${string}`>;
65
+ deployContract: <const abi extends import("viem").Abi | readonly unknown[], chainOverride extends import("viem").Chain | undefined>(args: import("viem").DeployContractParameters<abi, undefined, undefined, chainOverride>) => Promise<`0x${string}`>;
66
66
  getAddresses: () => Promise<import("viem").GetAddressesReturnType>;
67
67
  getChainId: () => Promise<number>;
68
68
  getPermissions: () => Promise<import("viem").GetPermissionsReturnType>;
69
- prepareTransactionRequest: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride_1>) => Promise<import("viem").PrepareTransactionRequestReturnType>;
69
+ prepareTransactionRequest: <TParameterType extends import("viem").PrepareTransactionRequestParameterType, TChainOverride extends import("viem").Chain | undefined = undefined, TAccountOverride extends `0x${string}` | import("viem").Account | undefined = undefined>(args: import("viem").PrepareTransactionRequestParameters<undefined, undefined, TChainOverride, TAccountOverride, TParameterType>) => Promise<import("viem").PrepareTransactionRequestReturnType<import("viem").Chain, undefined, TChainOverride, TAccountOverride, TParameterType>>;
70
70
  requestAddresses: () => Promise<import("viem").RequestAddressesReturnType>;
71
71
  requestPermissions: (args: {
72
72
  [x: string]: Record<string, any>;
73
73
  eth_accounts: Record<string, any>;
74
74
  }) => Promise<import("viem").RequestPermissionsReturnType>;
75
- sendRawTransaction: (args: import("node_modules/viem/_types/actions/wallet/sendRawTransaction").SendRawTransactionParameters) => Promise<`0x${string}`>;
76
- sendTransaction: <TChainOverride_2 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_2>) => Promise<`0x${string}`>;
75
+ sendRawTransaction: (args: import("viem").SendRawTransactionParameters) => Promise<`0x${string}`>;
76
+ sendTransaction: <TChainOverride_1 extends import("viem").Chain | undefined = undefined>(args: import("viem").SendTransactionParameters<undefined, undefined, TChainOverride_1>) => Promise<`0x${string}`>;
77
77
  signMessage: (args: import("viem").SignMessageParameters<undefined>) => Promise<`0x${string}`>;
78
- signTransaction: <TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("node_modules/viem/_types/actions/wallet/signTransaction").SignTransactionParameters<undefined, undefined, TChainOverride_3>) => Promise<`0x${string}`>;
78
+ signTransaction: <TChainOverride_2 extends import("viem").Chain | undefined>(args: import("viem").SignTransactionParameters<undefined, undefined, TChainOverride_2>) => Promise<`0x${string}`>;
79
79
  signTypedData: <const TTypedData extends {
80
80
  [x: string]: readonly import("viem").TypedDataParameter[];
81
81
  [x: `string[${string}]`]: undefined;
@@ -286,7 +286,7 @@ export declare class WalletConnect extends EthWalletConnector {
286
286
  }, TPrimaryType extends string>(args: import("viem").SignTypedDataParameters<TTypedData, TPrimaryType, undefined>) => Promise<`0x${string}`>;
287
287
  switchChain: (args: import("viem").SwitchChainParameters) => Promise<void>;
288
288
  watchAsset: (args: import("viem").WatchAssetParams) => Promise<boolean>;
289
- writeContract: <const TAbi_1 extends import("viem").Abi | readonly unknown[], TFunctionName extends string, TChainOverride_4 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<TAbi_1, TFunctionName, undefined, undefined, TChainOverride_4>) => Promise<`0x${string}`>;
289
+ writeContract: <const abi_1 extends import("viem").Abi | readonly unknown[], functionName extends import("viem").ContractFunctionName<abi_1, "nonpayable" | "payable">, args extends import("viem").ContractFunctionArgs<abi_1, "pure" | "view", functionName>, TChainOverride_3 extends import("viem").Chain | undefined = undefined>(args: import("viem").WriteContractParameters<abi_1, functionName, args, undefined, undefined, TChainOverride_3>) => Promise<`0x${string}`>;
290
290
  extend: <const client extends {
291
291
  [x: string]: unknown;
292
292
  account?: undefined;
@@ -300,7 +300,7 @@ export declare class WalletConnect extends EthWalletConnector {
300
300
  transport?: undefined;
301
301
  type?: undefined;
302
302
  uid?: undefined;
303
- } & Partial<Pick<import("viem").PublicActions, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<undefined, undefined>>;
303
+ } & Partial<Pick<import("viem").PublicActions<import("viem").CustomTransport, undefined, undefined>, "getChainId" | "prepareTransactionRequest" | "sendRawTransaction" | "call" | "createContractEventFilter" | "createEventFilter" | "estimateContractGas" | "estimateGas" | "getBlock" | "getBlockNumber" | "getContractEvents" | "getEnsText" | "getFilterChanges" | "getGasPrice" | "getLogs" | "getTransaction" | "getTransactionCount" | "getTransactionReceipt" | "readContract" | "simulateContract" | "uninstallFilter" | "watchBlockNumber" | "watchContractEvent"> & Pick<import("viem").WalletActions<undefined, undefined>, "sendTransaction" | "writeContract">>>(fn: (client: import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, import("viem").WalletActions<undefined, undefined>>) => client) => import("viem").Client<import("viem").CustomTransport, undefined, undefined, import("viem").WalletRpcSchema, { [K in keyof client]: client[K]; } & import("viem").WalletActions<undefined, undefined>>;
304
304
  } | undefined;
305
305
  fetchPublicAddress(opts?: FetchPublicAddressOpts): Promise<string | undefined>;
306
306
  /**
@@ -329,5 +329,5 @@ export declare class WalletConnect extends EthWalletConnector {
329
329
  }): Promise<void>;
330
330
  getConnectedAccounts(): Promise<string[]>;
331
331
  private isMetaMask;
332
- getSupportedNetworks(): Promise<string[] | undefined>;
332
+ getSupportedNetworks(): Promise<string[]>;
333
333
  }
@@ -2,9 +2,9 @@ import { __awaiter } from '../../_virtual/_tslib.js';
2
2
  import Provider from '@walletconnect/universal-provider';
3
3
  import EventEmitter from 'eventemitter3';
4
4
  import { createWalletClient, custom } from 'viem';
5
- import { logger, performPlatformSpecificConnectionMethod, getDeepLink } from '@dynamic-labs/wallet-connector-core';
5
+ import { DynamicError, sleep, isMobile } from '@dynamic-labs/utils';
6
6
  import { getWalletBookWallet } from '@dynamic-labs/wallet-book';
7
- import { DynamicError, isMobile } from '@dynamic-labs/utils';
7
+ import { logger, performPlatformSpecificConnectionMethod, getDeepLink } from '@dynamic-labs/wallet-connector-core';
8
8
  import { EthWalletConnector } from '../EthWalletConnector.js';
9
9
  import { parseIntSafe } from '../utils/parseIntSafe.js';
10
10
 
@@ -44,11 +44,7 @@ class WalletConnect extends EthWalletConnector {
44
44
  .map((network) => `eip155:${network.chainId}`));
45
45
  }
46
46
  getMappedChainsByPreferredOrder() {
47
- // adding Ethereum to avoid an error connecting if none of the evm networks are supported by the wallet
48
47
  const allChains = this.getMappedChains();
49
- if (!allChains.includes('eip155:1')) {
50
- allChains.push('eip155:1');
51
- }
52
48
  const reorderedChains = this.preferredChains.filter((chain) => allChains.includes(chain));
53
49
  const remainingChains = allChains.filter((chain) => !this.preferredChains.includes(chain));
54
50
  return [...reorderedChains, ...remainingChains];
@@ -93,15 +89,17 @@ class WalletConnect extends EthWalletConnector {
93
89
  }
94
90
  createInitProviderPromise() {
95
91
  return __awaiter(this, void 0, void 0, function* () {
96
- const provider = yield Provider.init({
92
+ WalletConnect.provider = yield Provider.init({
97
93
  logger: logger.logLevel.toLowerCase() === 'debug' ? 'debug' : undefined,
98
94
  projectId: this.projectId,
99
95
  });
100
- WalletConnect.provider = provider;
101
96
  this.teardownEventListeners();
102
97
  this.setupEventListeners();
103
98
  });
104
99
  }
100
+ // We need to add a gate to this method since we will be calling it asynchronously
101
+ // from different places (such as setShowAuthFlow), which means there's a chance for
102
+ // a race condition to happen where createInitProviderPromise is called multiple times
105
103
  initProvider() {
106
104
  return __awaiter(this, void 0, void 0, function* () {
107
105
  const { provider } = WalletConnect;
@@ -237,7 +235,7 @@ class WalletConnect extends EthWalletConnector {
237
235
  // the connection is established, but we need to wait for it to
238
236
  // finish setting up the connection URI and making it available
239
237
  // on the provider
240
- yield new Promise((resolve) => setTimeout(resolve, 1000));
238
+ yield sleep(1000);
241
239
  if (!WalletConnect.provider || !((_b = WalletConnect.provider) === null || _b === void 0 ? void 0 : _b.uri)) {
242
240
  logger.debug('No WC2 provider found, escaping and throwing error');
243
241
  throw new DynamicError('No provider found');
@@ -253,22 +251,40 @@ class WalletConnect extends EthWalletConnector {
253
251
  reject(new DynamicError('No provider found'));
254
252
  return;
255
253
  }
256
- ee.on('walletconnect_connection_failed', () => {
254
+ const onFail = () => {
257
255
  const error = new DynamicError('Connection rejected. Please try again.');
258
256
  error.code = 'connection_rejected';
259
257
  if (WalletConnect.provider) {
260
258
  WalletConnect.provider.uri = undefined;
259
+ // this is needed for mobile to work when using universal links.
260
+ // if the user cancels the connection, we need to re-initialize the provider
261
+ // so that the async work is done ahead of time, before the user tries to connect again,
262
+ // otherwise they will trigger the iOS bug where they are redirected to the app store
263
+ this.init();
261
264
  }
262
265
  reject(error);
263
- });
264
- WalletConnect.provider.on('connect', ({ session }) => {
266
+ // We must clean up the onConnect and onFail listeners
267
+ // whenever the connection attempt either succeeds or fails
268
+ cleanupListeners();
269
+ };
270
+ const onConnect = ({ session }) => {
265
271
  if (!session) {
266
272
  reject(new DynamicError('No session found'));
267
273
  }
268
274
  this.setSession(session);
269
275
  this.setActiveAccount(session.namespaces.eip155.accounts[0].split(':')[2]);
270
276
  resolve(this.activeAccount);
271
- });
277
+ // We must clean up the onConnect and onFail listeners
278
+ // whenever the connection attempt either succeeds or fails
279
+ cleanupListeners();
280
+ };
281
+ const cleanupListeners = () => {
282
+ var _a;
283
+ ee.off('walletconnect_connection_failed', onFail);
284
+ (_a = WalletConnect.provider) === null || _a === void 0 ? void 0 : _a.off('connect', onConnect);
285
+ };
286
+ ee.on('walletconnect_connection_failed', onFail);
287
+ WalletConnect.provider.on('connect', onConnect);
272
288
  });
273
289
  });
274
290
  }