@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 +39 -0
- package/package.json +8 -8
- package/src/EthWalletConnector.cjs +1 -20
- package/src/EthWalletConnector.d.ts +7 -7
- package/src/EthWalletConnector.js +3 -22
- package/src/coinbase/coinbase.cjs +2 -0
- package/src/coinbase/coinbase.d.ts +15 -14
- package/src/coinbase/coinbase.js +2 -0
- package/src/index.cjs +1 -0
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/injected/ExodusEvm.cjs +1 -0
- package/src/injected/ExodusEvm.d.ts +1 -0
- package/src/injected/ExodusEvm.js +1 -0
- package/src/injected/PhantomEvm.cjs +1 -0
- package/src/injected/PhantomEvm.d.ts +1 -0
- package/src/injected/PhantomEvm.js +1 -0
- package/src/walletConnect/fetchWalletConnectWallets.cjs +4 -3
- package/src/walletConnect/fetchWalletConnectWallets.js +4 -3
- package/src/walletConnect/walletConnect.cjs +29 -13
- package/src/walletConnect/walletConnect.d.ts +10 -10
- package/src/walletConnect/walletConnect.js +29 -13
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.
|
|
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.
|
|
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.
|
|
34
|
-
"@dynamic-labs/turnkey": "2.0.0-alpha.
|
|
35
|
-
"@dynamic-labs/types": "2.0.0-alpha.
|
|
36
|
-
"@dynamic-labs/utils": "2.0.0-alpha.
|
|
37
|
-
"@dynamic-labs/wallet-book": "2.0.0-alpha.
|
|
38
|
-
"@dynamic-labs/wallet-connector-core": "2.0.0-alpha.
|
|
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.
|
|
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
|
|
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: <
|
|
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("
|
|
54
|
-
sendTransaction: <
|
|
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: <
|
|
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
|
|
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 {
|
|
2
|
+
import { formatEther } from 'viem';
|
|
3
3
|
import { WalletConnectorBase } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
-
import { parseEvmNetworks,
|
|
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.
|
|
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
|
|
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: <
|
|
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("
|
|
46
|
-
sendTransaction: <
|
|
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: <
|
|
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
|
|
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
|
|
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: <
|
|
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("
|
|
303
|
-
sendTransaction: <
|
|
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: <
|
|
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
|
|
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>;
|
package/src/coinbase/coinbase.js
CHANGED
|
@@ -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
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
|
}
|
|
@@ -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
|
}
|
|
@@ -6,14 +6,15 @@ var walletConnect = require('./walletConnect.cjs');
|
|
|
6
6
|
|
|
7
7
|
const fetchWalletConnectWallets = ({ walletBook, }) => {
|
|
8
8
|
var _a;
|
|
9
|
-
return Object.
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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: <
|
|
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("
|
|
76
|
-
sendTransaction: <
|
|
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: <
|
|
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
|
|
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[]
|
|
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 {
|
|
5
|
+
import { DynamicError, sleep, isMobile } from '@dynamic-labs/utils';
|
|
6
6
|
import { getWalletBookWallet } from '@dynamic-labs/wallet-book';
|
|
7
|
-
import {
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
}
|