@dynamic-labs/multi-wallet 0.16.11 → 0.16.12-viem.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/package.json +4 -4
- package/src/getOrMapViemChain.cjs +77 -0
- package/src/getOrMapViemChain.d.ts +11 -0
- package/src/getOrMapViemChain.js +51 -0
- package/src/multi-wallet.cjs +2 -3
- package/src/multi-wallet.js +2 -3
- package/src/rpcProviders.cjs +6 -2
- package/src/rpcProviders.js +6 -2
- package/src/types.d.ts +16 -8
- package/src/utils/message.cjs +2 -2
- package/src/utils/message.js +1 -1
- package/src/wallets/algorand/myalgo.d.ts +1 -2
- package/src/wallets/clients/coinbase/coinbase.cjs +2 -2
- package/src/wallets/clients/coinbase/coinbase.js +2 -2
- package/src/wallets/clients/walletConnect/walletConnect.cjs +9 -5
- package/src/wallets/clients/walletConnect/walletConnect.d.ts +2 -2
- package/src/wallets/clients/walletConnect/walletConnect.js +9 -5
- package/src/wallets/ethereum/BloctoEvm.d.ts +4 -2
- package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.cjs +35 -14
- package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.d.ts +4 -4
- package/src/wallets/ethereum/MagicConnector/MagicWalletConnector/MagicWalletConnector.js +35 -14
- package/src/wallets/ethereum/coinbase.cjs +18 -7
- package/src/wallets/ethereum/coinbase.d.ts +750 -2
- package/src/wallets/ethereum/coinbase.js +18 -7
- package/src/wallets/ethereum/ethProvider.cjs +13 -29
- package/src/wallets/ethereum/ethProvider.d.ts +7 -7
- package/src/wallets/ethereum/ethProvider.js +13 -29
- package/src/wallets/ethereum/ethProviderHelper.cjs +52 -34
- package/src/wallets/ethereum/ethProviderHelper.d.ts +20 -20
- package/src/wallets/ethereum/ethProviderHelper.js +52 -34
- package/src/wallets/ethereum/fortmatic.cjs +15 -7
- package/src/wallets/ethereum/fortmatic.d.ts +5 -3
- package/src/wallets/ethereum/fortmatic.js +15 -7
- package/src/wallets/ethereum/meta-mask.cjs +13 -2
- package/src/wallets/ethereum/meta-mask.d.ts +752 -3
- package/src/wallets/ethereum/meta-mask.js +13 -2
- package/src/wallets/walletConnect/walletConnect.cjs +8 -6
- package/src/wallets/walletConnect/walletConnect.d.ts +751 -4
- package/src/wallets/walletConnect/walletConnect.js +8 -6
- package/src/wallets/walletConnect/walletConnectV2.cjs +11 -7
- package/src/wallets/walletConnect/walletConnectV2.d.ts +751 -4
- package/src/wallets/walletConnect/walletConnectV2.js +11 -7
- package/src/wallets/window.d.ts +3 -1
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs +0 -54
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +0 -3
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js +0 -50
- package/src/utils/assignConfirmationScreenToProvider/index.d.ts +0 -1
- package/src/utils/isFunction/isFunction.cjs +0 -8
- package/src/utils/isFunction/isFunction.js +0 -4
- package/src/wallets/ethereum/BloctoEvm.cjs +0 -140
- package/src/wallets/ethereum/BloctoEvm.js +0 -134
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
|
|
2
|
+
### [0.16.12-viem.0](https://github.com/dynamic-labs/DynamicAuth/compare/v0.16.11...v0.16.12-viem.0) (2023-05-05)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* replace ethers with viem ([29d0d89](https://github.com/dynamic-labs/DynamicAuth/commit/29d0d89ff74355453e9294c2323b40a4447a0557))
|
|
8
|
+
|
|
2
9
|
### [0.16.11](https://github.com/dynamic-labs/DynamicAuth/compare/v0.16.10...v0.16.11) (2023-05-03)
|
|
3
10
|
|
|
4
11
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/multi-wallet",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.12-viem.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@dynamic-labs/sdk-api": "0.0.174",
|
|
13
13
|
"@dynamic-labs/wallet-book": "^0.0.14",
|
|
14
14
|
"starknet": "^3.19.0",
|
|
15
|
-
"
|
|
15
|
+
"viem": "^0.3.17",
|
|
16
16
|
"@randlabs/myalgo-connect": "^1.4.2",
|
|
17
17
|
"@solana/web3.js": "^1.70.1",
|
|
18
18
|
"@coinbase/wallet-sdk": "^3.6.4",
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"magic-sdk": "^16.0.1",
|
|
29
29
|
"@keplr-wallet/provider": "0.11.56",
|
|
30
30
|
"@keplr-wallet/types": "^0.11.51",
|
|
31
|
-
"@dynamic-labs/logger": "0.16.
|
|
32
|
-
"@dynamic-labs/wallet-connector-core": "0.16.
|
|
31
|
+
"@dynamic-labs/logger": "0.16.12-viem.0",
|
|
32
|
+
"@dynamic-labs/wallet-connector-core": "0.16.12-viem.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@walletconnect/types": "^2.2.1"
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var chains = require('viem/chains');
|
|
6
|
+
|
|
7
|
+
function _interopNamespace(e) {
|
|
8
|
+
if (e && e.__esModule) return e;
|
|
9
|
+
var n = Object.create(null);
|
|
10
|
+
if (e) {
|
|
11
|
+
Object.keys(e).forEach(function (k) {
|
|
12
|
+
if (k !== 'default') {
|
|
13
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
14
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
15
|
+
enumerable: true,
|
|
16
|
+
get: function () { return e[k]; }
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
n["default"] = e;
|
|
22
|
+
return Object.freeze(n);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
var chains__namespace = /*#__PURE__*/_interopNamespace(chains);
|
|
26
|
+
|
|
27
|
+
// eslint-disable-next-line import/no-namespace
|
|
28
|
+
/**
|
|
29
|
+
* Gets the chain object for the given chain id.
|
|
30
|
+
* @param chainId - Chain id of the target EVM chain.
|
|
31
|
+
* @returns Viem's chain object.
|
|
32
|
+
*/
|
|
33
|
+
const getChain = (chainId) => {
|
|
34
|
+
for (const chain of Object.values(chains__namespace)) {
|
|
35
|
+
if ('id' in chain) {
|
|
36
|
+
if (chain.id === chainId) {
|
|
37
|
+
return chain;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
throw new Error(`Chain with id ${chainId} not found`);
|
|
42
|
+
};
|
|
43
|
+
const mapChain = (network) => {
|
|
44
|
+
var _a;
|
|
45
|
+
return ({
|
|
46
|
+
blockExplorers: ((_a = network.blockExplorerUrls) === null || _a === void 0 ? void 0 : _a[0])
|
|
47
|
+
? {
|
|
48
|
+
default: {
|
|
49
|
+
name: network.blockExplorerUrls[0],
|
|
50
|
+
url: network.blockExplorerUrls[0],
|
|
51
|
+
},
|
|
52
|
+
}
|
|
53
|
+
: undefined,
|
|
54
|
+
id: network.chainId,
|
|
55
|
+
name: network.vanityName || network.chainName,
|
|
56
|
+
nativeCurrency: network.nativeCurrency,
|
|
57
|
+
network: network.chainName,
|
|
58
|
+
rpcUrls: {
|
|
59
|
+
default: { http: network.rpcUrls },
|
|
60
|
+
public: { http: network.rpcUrls },
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
const getOrMapViemChain = (network) => {
|
|
65
|
+
let chain;
|
|
66
|
+
try {
|
|
67
|
+
chain = getChain(network.chainId);
|
|
68
|
+
}
|
|
69
|
+
catch (_a) {
|
|
70
|
+
chain = mapChain(network);
|
|
71
|
+
}
|
|
72
|
+
return chain;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
exports.getChain = getChain;
|
|
76
|
+
exports.getOrMapViemChain = getOrMapViemChain;
|
|
77
|
+
exports.mapChain = mapChain;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Chain } from 'viem';
|
|
2
|
+
import * as chains from 'viem/chains';
|
|
3
|
+
import { EvmNetwork } from './wallets/ethereum/evm-network';
|
|
4
|
+
/**
|
|
5
|
+
* Gets the chain object for the given chain id.
|
|
6
|
+
* @param chainId - Chain id of the target EVM chain.
|
|
7
|
+
* @returns Viem's chain object.
|
|
8
|
+
*/
|
|
9
|
+
export declare const getChain: (chainId: number) => chains.Chain;
|
|
10
|
+
export declare const mapChain: (network: EvmNetwork) => Chain;
|
|
11
|
+
export declare const getOrMapViemChain: (network: EvmNetwork) => Chain;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import * as chains from 'viem/chains';
|
|
2
|
+
|
|
3
|
+
// eslint-disable-next-line import/no-namespace
|
|
4
|
+
/**
|
|
5
|
+
* Gets the chain object for the given chain id.
|
|
6
|
+
* @param chainId - Chain id of the target EVM chain.
|
|
7
|
+
* @returns Viem's chain object.
|
|
8
|
+
*/
|
|
9
|
+
const getChain = (chainId) => {
|
|
10
|
+
for (const chain of Object.values(chains)) {
|
|
11
|
+
if ('id' in chain) {
|
|
12
|
+
if (chain.id === chainId) {
|
|
13
|
+
return chain;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
throw new Error(`Chain with id ${chainId} not found`);
|
|
18
|
+
};
|
|
19
|
+
const mapChain = (network) => {
|
|
20
|
+
var _a;
|
|
21
|
+
return ({
|
|
22
|
+
blockExplorers: ((_a = network.blockExplorerUrls) === null || _a === void 0 ? void 0 : _a[0])
|
|
23
|
+
? {
|
|
24
|
+
default: {
|
|
25
|
+
name: network.blockExplorerUrls[0],
|
|
26
|
+
url: network.blockExplorerUrls[0],
|
|
27
|
+
},
|
|
28
|
+
}
|
|
29
|
+
: undefined,
|
|
30
|
+
id: network.chainId,
|
|
31
|
+
name: network.vanityName || network.chainName,
|
|
32
|
+
nativeCurrency: network.nativeCurrency,
|
|
33
|
+
network: network.chainName,
|
|
34
|
+
rpcUrls: {
|
|
35
|
+
default: { http: network.rpcUrls },
|
|
36
|
+
public: { http: network.rpcUrls },
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
const getOrMapViemChain = (network) => {
|
|
41
|
+
let chain;
|
|
42
|
+
try {
|
|
43
|
+
chain = getChain(network.chainId);
|
|
44
|
+
}
|
|
45
|
+
catch (_a) {
|
|
46
|
+
chain = mapChain(network);
|
|
47
|
+
}
|
|
48
|
+
return chain;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export { getChain, getOrMapViemChain, mapChain };
|
package/src/multi-wallet.cjs
CHANGED
|
@@ -24,7 +24,6 @@ var ExodusSol = require('./wallets/solana/injected/ExodusSol.cjs');
|
|
|
24
24
|
var BloctoInjected = require('./wallets/ethereum/injected/BloctoInjected.cjs');
|
|
25
25
|
var argentx = require('./wallets/starknet/argentx.cjs');
|
|
26
26
|
var braavos = require('./wallets/starknet/braavos.cjs');
|
|
27
|
-
var BloctoEvm = require('./wallets/ethereum/BloctoEvm.cjs');
|
|
28
27
|
var phantomLedger = require('./wallets/solana/phantom-ledger.cjs');
|
|
29
28
|
var CoinbaseSolana = require('./wallets/solana/CoinbaseSolana.cjs');
|
|
30
29
|
var Frame = require('./wallets/ethereum/injected/Frame.cjs');
|
|
@@ -34,7 +33,7 @@ var getWalletConnectConnector = require('./wallets/getWalletConnectConnector.cjs
|
|
|
34
33
|
var initializeWalletProviders = require('./wallets/initializeWalletProviders.cjs');
|
|
35
34
|
var Dawn = require('./wallets/ethereum/injected/Dawn.cjs');
|
|
36
35
|
var PhantomEvm = require('./wallets/ethereum/injected/PhantomEvm.cjs');
|
|
37
|
-
require('
|
|
36
|
+
require('viem');
|
|
38
37
|
require('./utils/logger.cjs');
|
|
39
38
|
require('magic-sdk');
|
|
40
39
|
var EmailOTPMagicWalletConnector = require('./wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.cjs');
|
|
@@ -113,7 +112,7 @@ const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, ne
|
|
|
113
112
|
new slope({ solNetworks: solanaNetworkConfigs }),
|
|
114
113
|
new dapper({ appLogoUrl, appName }),
|
|
115
114
|
new blocto({ appLogoUrl, appName }),
|
|
116
|
-
new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
|
|
115
|
+
// new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
|
|
117
116
|
new BloctoInjected({ evmNetworks: evmNetworkConfigs }),
|
|
118
117
|
getWalletConnectConnector.getWalletConnectConnector({
|
|
119
118
|
evmNetworks: evmNetworkConfigs,
|
package/src/multi-wallet.js
CHANGED
|
@@ -20,7 +20,6 @@ import ExodusSol from './wallets/solana/injected/ExodusSol.js';
|
|
|
20
20
|
import BloctoInjected from './wallets/ethereum/injected/BloctoInjected.js';
|
|
21
21
|
import ArgentX from './wallets/starknet/argentx.js';
|
|
22
22
|
import Braavos from './wallets/starknet/braavos.js';
|
|
23
|
-
import BloctoEvm from './wallets/ethereum/BloctoEvm.js';
|
|
24
23
|
import PhantomLedger from './wallets/solana/phantom-ledger.js';
|
|
25
24
|
export { walletName as phantomLedgerWalletName } from './wallets/solana/phantom-ledger.js';
|
|
26
25
|
import CoinbaseSolana from './wallets/solana/CoinbaseSolana.js';
|
|
@@ -31,7 +30,7 @@ import { getWalletConnectConnector } from './wallets/getWalletConnectConnector.j
|
|
|
31
30
|
import { initializeWalletProviders } from './wallets/initializeWalletProviders.js';
|
|
32
31
|
import Dawn from './wallets/ethereum/injected/Dawn.js';
|
|
33
32
|
import PhantomEvm from './wallets/ethereum/injected/PhantomEvm.js';
|
|
34
|
-
import '
|
|
33
|
+
import 'viem';
|
|
35
34
|
import './utils/logger.js';
|
|
36
35
|
import 'magic-sdk';
|
|
37
36
|
import { EmailOTPMagicWalletConnector } from './wallets/ethereum/MagicConnector/EmailOTPMagicWalletConnector/EmailOTPMagicWalletConnector.js';
|
|
@@ -110,7 +109,7 @@ const getSupportedWallets = ({ appLogoUrl, appName, isWalletConnectV2Enabled, ne
|
|
|
110
109
|
new Slope({ solNetworks: solanaNetworkConfigs }),
|
|
111
110
|
new Dapper({ appLogoUrl, appName }),
|
|
112
111
|
new Blocto({ appLogoUrl, appName }),
|
|
113
|
-
new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
|
|
112
|
+
// new BloctoEvm({ evmNetworks: evmNetworkConfigs }),
|
|
114
113
|
new BloctoInjected({ evmNetworks: evmNetworkConfigs }),
|
|
115
114
|
getWalletConnectConnector({
|
|
116
115
|
evmNetworks: evmNetworkConfigs,
|
package/src/rpcProviders.cjs
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var viem = require('viem');
|
|
5
6
|
var web3_js = require('@solana/web3.js');
|
|
6
|
-
var
|
|
7
|
+
var getOrMapViemChain = require('./getOrMapViemChain.cjs');
|
|
7
8
|
|
|
8
9
|
const getRpcProviders = (configurations) => {
|
|
9
10
|
const rpcProviders = {};
|
|
@@ -11,7 +12,10 @@ const getRpcProviders = (configurations) => {
|
|
|
11
12
|
rpcProviders.evm = configurations.evm.map((network) => {
|
|
12
13
|
var _a;
|
|
13
14
|
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
14
|
-
const provider =
|
|
15
|
+
const provider = viem.createPublicClient({
|
|
16
|
+
chain: getOrMapViemChain.getOrMapViemChain(network),
|
|
17
|
+
transport: viem.http(rpcUrl),
|
|
18
|
+
});
|
|
15
19
|
return {
|
|
16
20
|
chainId: network.chainId,
|
|
17
21
|
chainName: network.chainName,
|
package/src/rpcProviders.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { createPublicClient, http } from 'viem';
|
|
1
2
|
import { Connection } from '@solana/web3.js';
|
|
2
|
-
import {
|
|
3
|
+
import { getOrMapViemChain } from './getOrMapViemChain.js';
|
|
3
4
|
|
|
4
5
|
const getRpcProviders = (configurations) => {
|
|
5
6
|
const rpcProviders = {};
|
|
@@ -7,7 +8,10 @@ const getRpcProviders = (configurations) => {
|
|
|
7
8
|
rpcProviders.evm = configurations.evm.map((network) => {
|
|
8
9
|
var _a;
|
|
9
10
|
const rpcUrl = ((_a = network.privateCustomerRpcUrls) === null || _a === void 0 ? void 0 : _a[0]) || network.rpcUrls[0];
|
|
10
|
-
const provider =
|
|
11
|
+
const provider = createPublicClient({
|
|
12
|
+
chain: getOrMapViemChain(network),
|
|
13
|
+
transport: http(rpcUrl),
|
|
14
|
+
});
|
|
11
15
|
return {
|
|
12
16
|
chainId: network.chainId,
|
|
13
17
|
chainName: network.chainName,
|
package/src/types.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Connection } from '@solana/web3.js';
|
|
2
|
-
import {
|
|
2
|
+
import { PublicClient, TransactionReceipt, TransactionRequest } from 'viem';
|
|
3
3
|
import type { NetworkConfiguration } from '@dynamic-labs/sdk-api';
|
|
4
4
|
import { WalletConnector, Chain } from '@dynamic-labs/wallet-connector-core';
|
|
5
5
|
import { EvmNetwork } from './wallets/ethereum/evm-network';
|
|
@@ -10,7 +10,7 @@ export type VendorCredentials = {
|
|
|
10
10
|
export type EvmRpcProvider = {
|
|
11
11
|
chainId: number;
|
|
12
12
|
chainName: string;
|
|
13
|
-
provider:
|
|
13
|
+
provider: PublicClient;
|
|
14
14
|
};
|
|
15
15
|
export type SolanaRpcProvider = {
|
|
16
16
|
chainId?: number;
|
|
@@ -40,16 +40,23 @@ export type GetSupportedWalletsOpts = {
|
|
|
40
40
|
walletUiUtils?: WalletUiUtils;
|
|
41
41
|
};
|
|
42
42
|
export type GetSupportedWallets = (opts?: GetSupportedWalletsOpts) => Promise<WalletConnector[]>;
|
|
43
|
+
export type Deferrable<T> = {
|
|
44
|
+
[K in keyof T]: T[K] | Promise<T[K]>;
|
|
45
|
+
};
|
|
46
|
+
interface ArrayLike<T> {
|
|
47
|
+
readonly [n: number]: T;
|
|
48
|
+
readonly length: number;
|
|
49
|
+
}
|
|
50
|
+
export type Bytes = ArrayLike<number>;
|
|
43
51
|
export type WalletUiUtils = {
|
|
44
52
|
enableInternalSign: () => void;
|
|
45
53
|
sendTransaction: (props: {
|
|
46
|
-
handler: (transaction:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}) => Promise<ethers.providers.TransactionResponse>;
|
|
54
|
+
handler: (transaction: TransactionRequest) => Promise<TransactionReceipt>;
|
|
55
|
+
transaction: TransactionRequest;
|
|
56
|
+
}) => Promise<TransactionReceipt>;
|
|
50
57
|
signMessage: (props: {
|
|
51
|
-
handler: (
|
|
52
|
-
message: string |
|
|
58
|
+
handler: () => Promise<string>;
|
|
59
|
+
message: string | Bytes;
|
|
53
60
|
}) => Promise<string>;
|
|
54
61
|
};
|
|
55
62
|
export type ChainInfo = {
|
|
@@ -62,3 +69,4 @@ export type ChainWihtIcon = {
|
|
|
62
69
|
icon?: string;
|
|
63
70
|
name: string | undefined;
|
|
64
71
|
};
|
|
72
|
+
export {};
|
package/src/utils/message.cjs
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var viem = require('viem');
|
|
6
6
|
var logger = require('./logger.cjs');
|
|
7
7
|
var getChainInfo = require('./getChainInfo/getChainInfo.cjs');
|
|
8
8
|
|
|
@@ -44,7 +44,7 @@ const generateMessageToSign = ({ blockchain, domain, chainId, nonce, uri, public
|
|
|
44
44
|
const getEip55Address = (publicKey, chainId) => {
|
|
45
45
|
try {
|
|
46
46
|
if (chainId) {
|
|
47
|
-
return
|
|
47
|
+
return viem.getAddress(publicKey);
|
|
48
48
|
}
|
|
49
49
|
}
|
|
50
50
|
catch (err) {
|
package/src/utils/message.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Connection } from '@solana/web3.js';
|
|
2
|
-
import { ethers } from 'ethers';
|
|
3
2
|
import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
4
3
|
import { IMyAlgoSigner } from './myalgoSigner';
|
|
5
4
|
declare class MyAlgo implements WalletConnector {
|
|
@@ -26,7 +25,7 @@ declare class MyAlgo implements WalletConnector {
|
|
|
26
25
|
isInstalledOnBrowser(): boolean;
|
|
27
26
|
supportsNetworkSwitching(): boolean;
|
|
28
27
|
switchNetwork(): Promise<void>;
|
|
29
|
-
getWeb3Provider(): void |
|
|
28
|
+
getWeb3Provider(): void | Connection | undefined;
|
|
30
29
|
getRpcProvider(): Promise<void>;
|
|
31
30
|
setupEventListeners(): void;
|
|
32
31
|
teardownEventListeners(): void;
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var walletSdk = require('@coinbase/wallet-sdk');
|
|
7
|
-
var
|
|
7
|
+
var viem = require('viem');
|
|
8
8
|
var errors = require('../../../errors.cjs');
|
|
9
9
|
var constants = require('../../constants.cjs');
|
|
10
10
|
|
|
@@ -58,7 +58,7 @@ const signMessage = (coinbaseProviderOpts, messageToSign) => tslib.__awaiter(voi
|
|
|
58
58
|
try {
|
|
59
59
|
return yield provider.request({
|
|
60
60
|
method: 'personal_sign',
|
|
61
|
-
params: [
|
|
61
|
+
params: [viem.toHex(viem.toBytes(messageToSign)), address.toLowerCase()],
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
catch (err) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import { CoinbaseWalletSDK } from '@coinbase/wallet-sdk';
|
|
3
|
-
import {
|
|
3
|
+
import { toHex, toBytes } from 'viem';
|
|
4
4
|
import { DynamicError } from '../../../errors.js';
|
|
5
5
|
import { infuraId } from '../../constants.js';
|
|
6
6
|
|
|
@@ -54,7 +54,7 @@ const signMessage = (coinbaseProviderOpts, messageToSign) => __awaiter(void 0, v
|
|
|
54
54
|
try {
|
|
55
55
|
return yield provider.request({
|
|
56
56
|
method: 'personal_sign',
|
|
57
|
-
params: [
|
|
57
|
+
params: [toHex(toBytes(messageToSign)), address.toLowerCase()],
|
|
58
58
|
});
|
|
59
59
|
}
|
|
60
60
|
catch (err) {
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
6
|
var Client = require('@walletconnect/client');
|
|
7
|
-
var
|
|
7
|
+
var viem = require('viem');
|
|
8
8
|
var isMobile = require('../../../utils/isMobile.cjs');
|
|
9
9
|
var isSameAddress = require('../../../utils/isSameAddress/isSameAddress.cjs');
|
|
10
10
|
var logger = require('../../../utils/logger.cjs');
|
|
@@ -213,8 +213,7 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
|
|
|
213
213
|
if (!rpcProvider) {
|
|
214
214
|
return;
|
|
215
215
|
}
|
|
216
|
-
const
|
|
217
|
-
const safeTransactionPromise = waitForSafeTransaction(signature, messageToSign, contract);
|
|
216
|
+
const safeTransactionPromise = waitForSafeTransaction(accountPublicAddress, signature, messageToSign, yield rpcProvider());
|
|
218
217
|
const timeoutPromise = new Promise((resolve) => {
|
|
219
218
|
setTimeout(resolve, 120000);
|
|
220
219
|
});
|
|
@@ -226,13 +225,18 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
|
|
|
226
225
|
// the transaction is recorded first on the blockchain
|
|
227
226
|
// redcoast verify WILL fail if it attempts to verify the signature
|
|
228
227
|
// that has not yet been properly processed!
|
|
229
|
-
const waitForSafeTransaction = (signature, messageToSign,
|
|
228
|
+
const waitForSafeTransaction = (address, signature, messageToSign, client) => tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
230
229
|
// wait for safe wallet to finish txn on the blockchain contract
|
|
231
230
|
for (let i = 0; i < 120; i++) {
|
|
232
231
|
try {
|
|
233
232
|
// this will result in an exception if the transaction is still not ready
|
|
234
233
|
// we need to catch it below
|
|
235
|
-
const result = yield
|
|
234
|
+
const result = yield (client === null || client === void 0 ? void 0 : client.readContract({
|
|
235
|
+
abi: IS_VALID_SIGNATURE_ABI,
|
|
236
|
+
address: address,
|
|
237
|
+
args: [viem.hashMessage(messageToSign), signature],
|
|
238
|
+
functionName: 'isValidSignature',
|
|
239
|
+
}));
|
|
236
240
|
if (result === MAGIC_VALUE)
|
|
237
241
|
return;
|
|
238
242
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import Client from '@walletconnect/client';
|
|
2
|
-
import {
|
|
2
|
+
import { PublicClient } from 'viem';
|
|
3
3
|
import { FetchPublicAddressOpts, PayloadParams, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
|
|
4
4
|
import { WalletSchema } from '@dynamic-labs/wallet-book';
|
|
5
5
|
import { KeplrWalletConnectV1 } from '../../cosmos/wcClient';
|
|
@@ -20,4 +20,4 @@ export declare const createSession: (client: Client) => Promise<PayloadParams>;
|
|
|
20
20
|
export declare const useDeepLink: (metadata: WalletSchema, wcClient: Client, opts?: FetchPublicAddressOpts) => void;
|
|
21
21
|
export declare const fetchWalletConnectCosmosPublicAddress: (metadata: WalletSchema, wcClient: Client, provider: KeplrWalletConnectV1, opts: FetchPublicAddressOpts & Required<Pick<FetchPublicAddressOpts, 'chainId'>>) => Promise<string>;
|
|
22
22
|
export declare const fetchWalletConnectEVMPublicAddress: (metadata: WalletSchema, wcClient: Client, opts?: FetchPublicAddressOpts) => Promise<string | undefined>;
|
|
23
|
-
export declare const signWalletConnectPersonalMessage: (messageToSign: string, metadata: WalletSchema, client: Client, rpcProvider?: () => Promise<
|
|
23
|
+
export declare const signWalletConnectPersonalMessage: (messageToSign: string, metadata: WalletSchema, client: Client, rpcProvider?: () => Promise<PublicClient | undefined>) => Promise<string | undefined>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from 'tslib';
|
|
2
2
|
import Client from '@walletconnect/client';
|
|
3
|
-
import {
|
|
3
|
+
import { hashMessage } from 'viem';
|
|
4
4
|
import { isMobile, isIOS } from '../../../utils/isMobile.js';
|
|
5
5
|
import { isSameAddress } from '../../../utils/isSameAddress/isSameAddress.js';
|
|
6
6
|
import { logger } from '../../../utils/logger.js';
|
|
@@ -205,8 +205,7 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
|
|
|
205
205
|
if (!rpcProvider) {
|
|
206
206
|
return;
|
|
207
207
|
}
|
|
208
|
-
const
|
|
209
|
-
const safeTransactionPromise = waitForSafeTransaction(signature, messageToSign, contract);
|
|
208
|
+
const safeTransactionPromise = waitForSafeTransaction(accountPublicAddress, signature, messageToSign, yield rpcProvider());
|
|
210
209
|
const timeoutPromise = new Promise((resolve) => {
|
|
211
210
|
setTimeout(resolve, 120000);
|
|
212
211
|
});
|
|
@@ -218,13 +217,18 @@ const waitForSafeTransactionOrTimeout = (accountPublicAddress, signature, messag
|
|
|
218
217
|
// the transaction is recorded first on the blockchain
|
|
219
218
|
// redcoast verify WILL fail if it attempts to verify the signature
|
|
220
219
|
// that has not yet been properly processed!
|
|
221
|
-
const waitForSafeTransaction = (signature, messageToSign,
|
|
220
|
+
const waitForSafeTransaction = (address, signature, messageToSign, client) => __awaiter(void 0, void 0, void 0, function* () {
|
|
222
221
|
// wait for safe wallet to finish txn on the blockchain contract
|
|
223
222
|
for (let i = 0; i < 120; i++) {
|
|
224
223
|
try {
|
|
225
224
|
// this will result in an exception if the transaction is still not ready
|
|
226
225
|
// we need to catch it below
|
|
227
|
-
const result = yield
|
|
226
|
+
const result = yield (client === null || client === void 0 ? void 0 : client.readContract({
|
|
227
|
+
abi: IS_VALID_SIGNATURE_ABI,
|
|
228
|
+
address: address,
|
|
229
|
+
args: [hashMessage(messageToSign), signature],
|
|
230
|
+
functionName: 'isValidSignature',
|
|
231
|
+
}));
|
|
228
232
|
if (result === MAGIC_VALUE)
|
|
229
233
|
return;
|
|
230
234
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WalletClient } from 'viem';
|
|
2
2
|
import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
3
3
|
import { EvmNetwork } from './evm-network';
|
|
4
4
|
import { EthProvider } from './ethProvider';
|
|
@@ -18,9 +18,11 @@ declare class BloctoEvm extends EthProvider implements WalletConnector {
|
|
|
18
18
|
constructor({ evmNetworks }: {
|
|
19
19
|
evmNetworks: EvmNetwork[];
|
|
20
20
|
});
|
|
21
|
+
providerResources: string[] | undefined;
|
|
22
|
+
switchNetworkOnlyFromWallet: boolean | undefined;
|
|
21
23
|
get key(): string;
|
|
22
24
|
private getClient;
|
|
23
|
-
getWeb3Provider():
|
|
25
|
+
getWeb3Provider(): WalletClient | undefined;
|
|
24
26
|
fetchPublicAddress(): Promise<string | undefined>;
|
|
25
27
|
connect(): Promise<void>;
|
|
26
28
|
isInstalledOnBrowser(): boolean;
|
|
@@ -3,10 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var tslib = require('tslib');
|
|
6
|
-
var
|
|
7
|
-
var errors = require('../../../../errors.cjs');
|
|
6
|
+
var viem = require('viem');
|
|
8
7
|
var logger = require('../../../../utils/logger.cjs');
|
|
9
|
-
var assignConfirmationScreenToProvider = require('../../../../utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.cjs');
|
|
10
8
|
var CancellablePromise = require('../../../../utils/CancellablePromise/CancellablePromise.cjs');
|
|
11
9
|
var MagicClientNetworkHandler = require('../MagicClientNetworkHandler/MagicClientNetworkHandler.cjs');
|
|
12
10
|
|
|
@@ -84,12 +82,10 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
|
|
|
84
82
|
}
|
|
85
83
|
getBalance() {
|
|
86
84
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
85
|
+
const signer = yield this.getSigner();
|
|
87
86
|
const provider = yield this.getWeb3Provider();
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const signer = provider.getSigner();
|
|
91
|
-
const userAddress = yield signer.getAddress();
|
|
92
|
-
return ethers.ethers.utils.formatEther(yield provider.getBalance(userAddress));
|
|
87
|
+
const [userAddress] = yield signer.getAddresses();
|
|
88
|
+
return viem.formatEther(yield provider.getBalance({ address: userAddress }));
|
|
93
89
|
});
|
|
94
90
|
}
|
|
95
91
|
getConnectedAccounts() {
|
|
@@ -113,15 +109,37 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
|
|
|
113
109
|
getSigner() {
|
|
114
110
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
115
111
|
const provider = yield this.getWeb3Provider();
|
|
116
|
-
return
|
|
112
|
+
return viem.createWalletClient({ transport: viem.custom(provider) });
|
|
117
113
|
});
|
|
118
114
|
}
|
|
119
115
|
getWeb3Provider() {
|
|
120
116
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
121
117
|
const client = this.getClient();
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
118
|
+
const publicClient = viem.createPublicClient({
|
|
119
|
+
transport: viem.custom({
|
|
120
|
+
request: (args) => tslib.__awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
if (args.method === 'personal_sign') {
|
|
123
|
+
return this._walletUiUtils.signMessage({
|
|
124
|
+
handler: () => client.rpcProvider.request(args),
|
|
125
|
+
message: viem.fromHex((_a = args.params) === null || _a === void 0 ? void 0 : _a[0], 'string'),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
else if (args.method === 'eth_sendTransaction') {
|
|
129
|
+
return this._walletUiUtils.sendTransaction({
|
|
130
|
+
handler: () => client.rpcProvider.request(args),
|
|
131
|
+
transaction: (_b = args.params) === null || _b === void 0 ? void 0 : _b[0],
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
return client.rpcProvider.request(args);
|
|
136
|
+
}
|
|
137
|
+
}),
|
|
138
|
+
}, {
|
|
139
|
+
retryCount: 0,
|
|
140
|
+
}),
|
|
141
|
+
});
|
|
142
|
+
return publicClient;
|
|
125
143
|
});
|
|
126
144
|
}
|
|
127
145
|
isInstalledOnBrowser() {
|
|
@@ -140,8 +158,11 @@ class MagicWalletConnector extends MagicClientNetworkHandler.MagicClientNetworkH
|
|
|
140
158
|
}
|
|
141
159
|
signMessage(messageToSign) {
|
|
142
160
|
return tslib.__awaiter(this, void 0, void 0, function* () {
|
|
143
|
-
const
|
|
144
|
-
return
|
|
161
|
+
const signer = yield this.getSigner();
|
|
162
|
+
return signer.signMessage({
|
|
163
|
+
account: (yield this.fetchPublicAddress()),
|
|
164
|
+
message: messageToSign,
|
|
165
|
+
});
|
|
145
166
|
});
|
|
146
167
|
}
|
|
147
168
|
supportsNetworkSwitching() {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LoginWithMagicLinkEvents, MagicUserMetadata, PromiEvent } from 'magic-sdk';
|
|
2
|
-
import {
|
|
2
|
+
import { PublicClient, WalletClient } from 'viem';
|
|
3
3
|
import { Chain, WalletConnector, WalletEventListeners } from '@dynamic-labs/wallet-connector-core';
|
|
4
4
|
import { WalletUiUtils } from '../../../../types';
|
|
5
5
|
import { CancellablePromise } from '../../../../utils/CancellablePromise';
|
|
@@ -39,9 +39,9 @@ export declare abstract class MagicWalletConnector extends MagicClientNetworkHan
|
|
|
39
39
|
getBalance(): Promise<string | undefined>;
|
|
40
40
|
getConnectedAccounts(): Promise<string[]>;
|
|
41
41
|
getNetwork(): Promise<number | undefined>;
|
|
42
|
-
getRpcProvider(): Promise<void |
|
|
43
|
-
getSigner(): Promise<
|
|
44
|
-
getWeb3Provider(): Promise<
|
|
42
|
+
getRpcProvider(): Promise<void | PublicClient | undefined>;
|
|
43
|
+
getSigner(): Promise<WalletClient>;
|
|
44
|
+
getWeb3Provider(): Promise<PublicClient>;
|
|
45
45
|
isInstalledOnBrowser(): boolean;
|
|
46
46
|
proveOwnership(messageToSign: string): Promise<string | undefined>;
|
|
47
47
|
setupEventListeners(listeners: WalletEventListeners): void;
|