@dynamic-labs/multi-wallet 0.15.1-minimal.0 → 0.15.1
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 +52 -0
- package/package.json +17 -13
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/multi-wallet.d.ts +1 -0
- package/src/multi-wallet.js +67 -2
- package/src/multi-wallet.js.map +1 -1
- package/src/types.d.ts +1 -0
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.d.ts +3 -0
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js +30 -0
- package/src/utils/assignConfirmationScreenToProvider/assignConfirmationScreenToProvider.js.map +1 -0
- package/src/utils/assignConfirmationScreenToProvider/index.d.ts +1 -0
- package/src/utils/assignConfirmationScreenToProvider/index.js +6 -0
- package/src/utils/assignConfirmationScreenToProvider/index.js.map +1 -0
- package/src/wallets/algorand/myalgo.d.ts +34 -0
- package/src/wallets/algorand/myalgo.js +178 -0
- package/src/wallets/algorand/myalgo.js.map +1 -0
- package/src/wallets/algorand/myalgoSigner.d.ts +21 -0
- package/src/wallets/algorand/myalgoSigner.js +23 -0
- package/src/wallets/algorand/myalgoSigner.js.map +1 -0
- package/src/wallets/ethereum/BloctoEvm.d.ts +34 -0
- package/src/wallets/ethereum/BloctoEvm.js +135 -0
- package/src/wallets/ethereum/BloctoEvm.js.map +1 -0
- package/src/wallets/ethereum/MagicLink.d.ts +48 -0
- package/src/wallets/ethereum/MagicLink.js +178 -0
- package/src/wallets/ethereum/MagicLink.js.map +1 -0
- package/src/wallets/ethereum/fortmatic.d.ts +34 -0
- package/src/wallets/ethereum/fortmatic.js +93 -0
- package/src/wallets/ethereum/fortmatic.js.map +1 -0
- package/src/wallets/ethereum/injected/BloctoInjected.d.ts +6 -0
- package/src/wallets/ethereum/injected/BloctoInjected.js +13 -0
- package/src/wallets/ethereum/injected/BloctoInjected.js.map +1 -0
- package/src/wallets/flow/blocto.d.ts +13 -0
- package/src/wallets/flow/blocto.js +29 -0
- package/src/wallets/flow/blocto.js.map +1 -0
- package/src/wallets/flow/dapper.d.ts +13 -0
- package/src/wallets/flow/dapper.js +29 -0
- package/src/wallets/flow/dapper.js.map +1 -0
- package/src/wallets/flow/flow-provider.d.ts +34 -0
- package/src/wallets/flow/flow-provider.js +184 -0
- package/src/wallets/flow/flow-provider.js.map +1 -0
- package/src/wallets/flow/lilico.d.ts +15 -0
- package/src/wallets/flow/lilico.js +50 -0
- package/src/wallets/flow/lilico.js.map +1 -0
- package/src/wallets/solana/CoinbaseSolana.d.ts +26 -0
- package/src/wallets/solana/CoinbaseSolana.js +76 -0
- package/src/wallets/solana/CoinbaseSolana.js.map +1 -0
- package/src/wallets/solana/glow.d.ts +25 -0
- package/src/wallets/solana/glow.js +73 -0
- package/src/wallets/solana/glow.js.map +1 -0
- package/src/wallets/solana/injected/BraveSol.d.ts +6 -0
- package/src/wallets/solana/injected/BraveSol.js +17 -0
- package/src/wallets/solana/injected/BraveSol.js.map +1 -0
- package/src/wallets/solana/injected/ExodusSol.d.ts +5 -0
- package/src/wallets/solana/injected/ExodusSol.js +12 -0
- package/src/wallets/solana/injected/ExodusSol.js.map +1 -0
- package/src/wallets/solana/phantom-ledger.d.ts +16 -0
- package/src/wallets/solana/phantom-ledger.js +67 -0
- package/src/wallets/solana/phantom-ledger.js.map +1 -0
- package/src/wallets/solana/phantom.d.ts +26 -0
- package/src/wallets/solana/phantom.js +99 -0
- package/src/wallets/solana/phantom.js.map +1 -0
- package/src/wallets/solana/slope.d.ts +39 -0
- package/src/wallets/solana/slope.js +124 -0
- package/src/wallets/solana/slope.js.map +1 -0
- package/src/wallets/solana/solProvider.d.ts +16 -0
- package/src/wallets/solana/solProvider.js +56 -0
- package/src/wallets/solana/solProvider.js.map +1 -0
- package/src/wallets/solana/solProviderHelper.d.ts +29 -0
- package/src/wallets/solana/solProviderHelper.js +144 -0
- package/src/wallets/solana/solProviderHelper.js.map +1 -0
- package/src/wallets/solana/solflare.d.ts +26 -0
- package/src/wallets/solana/solflare.js +93 -0
- package/src/wallets/solana/solflare.js.map +1 -0
- package/src/wallets/starknet/argentx.d.ts +6 -0
- package/src/wallets/starknet/argentx.js +11 -0
- package/src/wallets/starknet/argentx.js.map +1 -0
- package/src/wallets/starknet/braavos.d.ts +6 -0
- package/src/wallets/starknet/braavos.js +11 -0
- package/src/wallets/starknet/braavos.js.map +1 -0
- package/src/wallets/starknet/ethereumContractAbi.json +340 -0
- package/src/wallets/starknet/starknetProvider.d.ts +31 -0
- package/src/wallets/starknet/starknetProvider.js +98 -0
- package/src/wallets/starknet/starknetProvider.js.map +1 -0
- package/src/wallets/starknet/starknetProviderHelper.d.ts +17 -0
- package/src/wallets/starknet/starknetProviderHelper.js +159 -0
- package/src/wallets/starknet/starknetProviderHelper.js.map +1 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
import { EvmNetwork } from './evm-network';
|
|
4
|
+
import { EthProvider } from './ethProvider';
|
|
5
|
+
import { EthProviderHelper } from './ethProviderHelper';
|
|
6
|
+
declare class BloctoEvm extends EthProvider implements WalletConnector {
|
|
7
|
+
LOCAL_STORAGE_KEY: string;
|
|
8
|
+
private client?;
|
|
9
|
+
name: string;
|
|
10
|
+
canConnectViaQrCode: boolean;
|
|
11
|
+
canConnectViaCustodialService: boolean;
|
|
12
|
+
isWalletConnect: boolean;
|
|
13
|
+
connectedChain: Chain;
|
|
14
|
+
supportedChains: Chain[];
|
|
15
|
+
chainId: number;
|
|
16
|
+
ethProviderHelper: EthProviderHelper;
|
|
17
|
+
supportsNetworkSwitching: () => boolean;
|
|
18
|
+
constructor({ evmNetworks }: {
|
|
19
|
+
evmNetworks: EvmNetwork[];
|
|
20
|
+
});
|
|
21
|
+
get key(): string;
|
|
22
|
+
private getClient;
|
|
23
|
+
getWeb3Provider(): ethers.providers.Web3Provider | undefined;
|
|
24
|
+
fetchPublicAddress(): Promise<string | undefined>;
|
|
25
|
+
connect(): Promise<void>;
|
|
26
|
+
isInstalledOnBrowser(): boolean;
|
|
27
|
+
proveOwnership(messageToSign: string): Promise<string | undefined>;
|
|
28
|
+
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
29
|
+
endSession?(): Promise<void>;
|
|
30
|
+
switchNetwork(): Promise<void>;
|
|
31
|
+
setupEventListeners(): void;
|
|
32
|
+
teardownEventListeners(): void;
|
|
33
|
+
}
|
|
34
|
+
export default BloctoEvm;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const sdk_1 = tslib_1.__importDefault(require("@blocto/sdk"));
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const normalizeWalletName_1 = require("../../utils/normalizeWalletName");
|
|
7
|
+
const logger_1 = require("../../utils/logger");
|
|
8
|
+
const ethProvider_1 = require("./ethProvider");
|
|
9
|
+
const ethProviderHelper_1 = require("./ethProviderHelper");
|
|
10
|
+
class BloctoEvm extends ethProvider_1.EthProvider {
|
|
11
|
+
constructor({ evmNetworks }) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
// Taken from : https://docs.blocto.app/blocto-sdk/javascript-sdk/evm-sdk/provider
|
|
14
|
+
const BLOCTO_SUPPORTED_CHAIN_IDS = [1, 4, 56, 97, 137, 80001, 43114, 43113];
|
|
15
|
+
const bloctoSupportedNetworks = evmNetworks.filter((n) => BLOCTO_SUPPORTED_CHAIN_IDS.includes(n.chainId));
|
|
16
|
+
super({ evmNetworks: bloctoSupportedNetworks });
|
|
17
|
+
this.LOCAL_STORAGE_KEY = 'dynamic_blocto_evm_chain_id';
|
|
18
|
+
this.name = 'bloctoevm';
|
|
19
|
+
this.canConnectViaQrCode = false;
|
|
20
|
+
this.canConnectViaCustodialService = true;
|
|
21
|
+
this.isWalletConnect = false;
|
|
22
|
+
this.connectedChain = 'EVM';
|
|
23
|
+
this.supportedChains = ['EVM', 'ETH'];
|
|
24
|
+
this.ethProviderHelper = new ethProviderHelper_1.EthProviderHelper();
|
|
25
|
+
this.supportsNetworkSwitching = () => false;
|
|
26
|
+
this.chainId =
|
|
27
|
+
Number(localStorage.getItem(this.LOCAL_STORAGE_KEY)) ||
|
|
28
|
+
((_a = bloctoSupportedNetworks.find((n) => n.chainId === 137)) === null || _a === void 0 ? void 0 : _a.chainId) ||
|
|
29
|
+
((_b = bloctoSupportedNetworks[0]) === null || _b === void 0 ? void 0 : _b.chainId);
|
|
30
|
+
}
|
|
31
|
+
get key() {
|
|
32
|
+
return (0, normalizeWalletName_1.normalizeWalletName)(this.name);
|
|
33
|
+
}
|
|
34
|
+
getClient() {
|
|
35
|
+
if (!this.client) {
|
|
36
|
+
const network = this.evmNetworks.find((n) => n.chainId === this.chainId);
|
|
37
|
+
if (network) {
|
|
38
|
+
this.client = new sdk_1.default({
|
|
39
|
+
ethereum: {
|
|
40
|
+
chainId: `0x${this.chainId.toString(16)}`,
|
|
41
|
+
rpc: network.rpcUrls[0],
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
logger_1.logger.error("Couldn't find a configured network for Blocto EVM");
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return this.client;
|
|
50
|
+
}
|
|
51
|
+
getWeb3Provider() {
|
|
52
|
+
const client = this.getClient();
|
|
53
|
+
// If there are no accounts yet, we shouldn't wrap the provider in ethers
|
|
54
|
+
if (client && client.ethereum && client.ethereum.accounts.length > 0) {
|
|
55
|
+
return new ethers_1.ethers.providers.Web3Provider(client.ethereum);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// We are calling the client directly and not via Web3Provider because if we will wrap it in Ethers,
|
|
62
|
+
// Ethers will be making retries on failure. This becomes an issue on the connect step.
|
|
63
|
+
// When Blocto's modal closes prior to receiving a response with the address on the connect step,
|
|
64
|
+
// then ethers would retry and the modal will open again.
|
|
65
|
+
fetchPublicAddress() {
|
|
66
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
try {
|
|
68
|
+
const client = this.getClient();
|
|
69
|
+
if (client && client.ethereum) {
|
|
70
|
+
const addresses = yield client.ethereum.request({
|
|
71
|
+
method: 'eth_requestAccounts',
|
|
72
|
+
});
|
|
73
|
+
if (addresses.length > 0) {
|
|
74
|
+
return addresses[0];
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
catch (e) {
|
|
80
|
+
logger_1.logger.error(e);
|
|
81
|
+
return Promise.reject(e);
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
connect() {
|
|
86
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
87
|
+
yield this.fetchPublicAddress();
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
isInstalledOnBrowser() {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
proveOwnership(messageToSign) {
|
|
94
|
+
return this.signMessage(messageToSign);
|
|
95
|
+
}
|
|
96
|
+
signMessage(messageToSign) {
|
|
97
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
98
|
+
try {
|
|
99
|
+
const signer = yield this.getSigner();
|
|
100
|
+
return yield (signer === null || signer === void 0 ? void 0 : signer.signMessage(messageToSign));
|
|
101
|
+
}
|
|
102
|
+
catch (e) {
|
|
103
|
+
if (e.message === 'User declined the signing request') {
|
|
104
|
+
return Promise.reject({ code: '4001' });
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
return Promise.reject(e);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
endSession() {
|
|
113
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
const client = this.getClient();
|
|
115
|
+
localStorage.removeItem('sdk.session');
|
|
116
|
+
if (client && client.ethereum && client.ethereum.accounts.length > 0) {
|
|
117
|
+
yield client.ethereum.request({ method: 'wallet_disconnect' });
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
// *********************
|
|
122
|
+
// Unimplemented methods
|
|
123
|
+
// *********************
|
|
124
|
+
switchNetwork() {
|
|
125
|
+
return Promise.resolve();
|
|
126
|
+
}
|
|
127
|
+
setupEventListeners() {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
teardownEventListeners() {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.default = BloctoEvm;
|
|
135
|
+
//# sourceMappingURL=BloctoEvm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BloctoEvm.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/ethereum/BloctoEvm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Magic as MagicClient, MagicUserMetadata } from 'magic-sdk';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
import { Chain, EmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
4
|
+
import { WalletUiUtils } from '../../types';
|
|
5
|
+
import { EvmNetwork } from './evm-network';
|
|
6
|
+
export declare class MagicConnector implements EmailWalletConnector {
|
|
7
|
+
canConnectViaCustodialService: boolean;
|
|
8
|
+
canConnectViaQrCode: boolean;
|
|
9
|
+
connectedChain: Chain;
|
|
10
|
+
supportedChains: Chain[];
|
|
11
|
+
isWalletConnect: boolean;
|
|
12
|
+
key: string;
|
|
13
|
+
name: string;
|
|
14
|
+
canConnectViaEmail: boolean;
|
|
15
|
+
switchNetworkOnlyFromWallet?: boolean;
|
|
16
|
+
evmNetworks: EvmNetwork[];
|
|
17
|
+
_apiKey: string;
|
|
18
|
+
_email: string | undefined;
|
|
19
|
+
_magicSdk: MagicClient | undefined;
|
|
20
|
+
_walletUiUtils: WalletUiUtils;
|
|
21
|
+
_provider: ethers.providers.Web3Provider | undefined;
|
|
22
|
+
constructor({ apiKey, walletUiUtils, evmNetworks, }: {
|
|
23
|
+
apiKey: string;
|
|
24
|
+
evmNetworks: EvmNetwork[];
|
|
25
|
+
walletUiUtils: WalletUiUtils;
|
|
26
|
+
});
|
|
27
|
+
_getClient(): Promise<MagicClient<import("magic-sdk").MagicSDKExtensionsOption<string>>>;
|
|
28
|
+
get email(): string | undefined;
|
|
29
|
+
setEmail(email: string): void;
|
|
30
|
+
connect(): Promise<void>;
|
|
31
|
+
endSession?(): Promise<void>;
|
|
32
|
+
isLoggedIn(): Promise<boolean>;
|
|
33
|
+
getUserMetadata(): Promise<MagicUserMetadata | undefined>;
|
|
34
|
+
fetchPublicAddress(): Promise<string | undefined>;
|
|
35
|
+
getBalance(): Promise<string | undefined>;
|
|
36
|
+
getConnectedAccounts(): Promise<string[]>;
|
|
37
|
+
getNetwork(): Promise<number | undefined>;
|
|
38
|
+
getRpcProvider(): Promise<void | ethers.providers.JsonRpcProvider | undefined>;
|
|
39
|
+
getSigner(): Promise<ethers.providers.JsonRpcSigner | undefined>;
|
|
40
|
+
getWeb3Provider(): Promise<ethers.providers.Web3Provider>;
|
|
41
|
+
isInstalledOnBrowser(): boolean;
|
|
42
|
+
proveOwnership(messageToSign: string): Promise<string | undefined>;
|
|
43
|
+
setupEventListeners(): void;
|
|
44
|
+
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
45
|
+
supportsNetworkSwitching(): boolean;
|
|
46
|
+
switchNetwork(): Promise<void>;
|
|
47
|
+
teardownEventListeners(): void;
|
|
48
|
+
}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MagicConnector = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const magic_sdk_1 = require("magic-sdk");
|
|
6
|
+
const ethers_1 = require("ethers");
|
|
7
|
+
const errors_1 = require("../../errors");
|
|
8
|
+
const logger_1 = require("../../utils/logger");
|
|
9
|
+
const assignConfirmationScreenToProvider_1 = require("../../utils/assignConfirmationScreenToProvider");
|
|
10
|
+
class MagicConnector {
|
|
11
|
+
constructor({ apiKey, walletUiUtils, evmNetworks, }) {
|
|
12
|
+
this.canConnectViaCustodialService = true;
|
|
13
|
+
this.canConnectViaQrCode = false;
|
|
14
|
+
this.connectedChain = 'EVM';
|
|
15
|
+
this.supportedChains = ['ETH', 'EVM'];
|
|
16
|
+
this.isWalletConnect = false;
|
|
17
|
+
this.key = 'magiclink';
|
|
18
|
+
this.name = 'Magic Link';
|
|
19
|
+
this.canConnectViaEmail = true;
|
|
20
|
+
this.evmNetworks = [];
|
|
21
|
+
this._magicSdk = undefined;
|
|
22
|
+
this._apiKey = apiKey;
|
|
23
|
+
this._walletUiUtils = walletUiUtils;
|
|
24
|
+
this.evmNetworks = evmNetworks;
|
|
25
|
+
}
|
|
26
|
+
_getClient() {
|
|
27
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
28
|
+
if (!this._magicSdk) {
|
|
29
|
+
this._magicSdk = new magic_sdk_1.Magic(this._apiKey);
|
|
30
|
+
yield this._magicSdk.preload();
|
|
31
|
+
}
|
|
32
|
+
return this._magicSdk;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
get email() {
|
|
36
|
+
return this._email;
|
|
37
|
+
}
|
|
38
|
+
setEmail(email) {
|
|
39
|
+
this._email = email;
|
|
40
|
+
localStorage.setItem('magic-link-email', email);
|
|
41
|
+
}
|
|
42
|
+
connect() {
|
|
43
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
44
|
+
yield this.fetchPublicAddress();
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
endSession() {
|
|
48
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
const client = yield this._getClient();
|
|
50
|
+
yield client.user.logout();
|
|
51
|
+
this.setEmail('');
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
isLoggedIn() {
|
|
55
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const client = yield this._getClient();
|
|
57
|
+
return client.user.isLoggedIn();
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
getUserMetadata() {
|
|
61
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
62
|
+
if (yield this.isLoggedIn()) {
|
|
63
|
+
const client = yield this._getClient();
|
|
64
|
+
return client.user.getMetadata();
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
fetchPublicAddress() {
|
|
70
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const client = yield this._getClient();
|
|
72
|
+
try {
|
|
73
|
+
const user = yield this.getUserMetadata();
|
|
74
|
+
if (user && user.publicAddress) {
|
|
75
|
+
this.setEmail((user === null || user === void 0 ? void 0 : user.email) || '');
|
|
76
|
+
return user.publicAddress;
|
|
77
|
+
}
|
|
78
|
+
const { email } = this;
|
|
79
|
+
if (!email)
|
|
80
|
+
return;
|
|
81
|
+
try {
|
|
82
|
+
yield client.auth.loginWithMagicLink({
|
|
83
|
+
email,
|
|
84
|
+
showUI: false,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
logger_1.logger.error(err);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
const metadata = yield client.user.getMetadata();
|
|
92
|
+
if (!metadata || !metadata.publicAddress) {
|
|
93
|
+
throw new Error('No public address');
|
|
94
|
+
}
|
|
95
|
+
return metadata.publicAddress;
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
getBalance() {
|
|
103
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
104
|
+
const provider = yield this.getWeb3Provider();
|
|
105
|
+
if (!provider)
|
|
106
|
+
throw new errors_1.DynamicError('No provider');
|
|
107
|
+
const signer = provider.getSigner();
|
|
108
|
+
const userAddress = yield signer.getAddress();
|
|
109
|
+
return ethers_1.ethers.utils.formatEther(yield provider.getBalance(userAddress));
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
getConnectedAccounts() {
|
|
113
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
114
|
+
const isLoggedIn = yield this.isLoggedIn();
|
|
115
|
+
if (!isLoggedIn)
|
|
116
|
+
return [];
|
|
117
|
+
const metadata = yield this.getUserMetadata();
|
|
118
|
+
if (!metadata || !(metadata === null || metadata === void 0 ? void 0 : metadata.publicAddress))
|
|
119
|
+
return [];
|
|
120
|
+
return [metadata.publicAddress];
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
getNetwork() {
|
|
124
|
+
var _a;
|
|
125
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
return (_a = (yield this.getWeb3Provider())) === null || _a === void 0 ? void 0 : _a.getNetwork().then((network) => network.chainId);
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
getRpcProvider() {
|
|
130
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
131
|
+
return undefined;
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
getSigner() {
|
|
135
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
136
|
+
const provider = yield this.getWeb3Provider();
|
|
137
|
+
return provider.getSigner();
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
getWeb3Provider() {
|
|
141
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
142
|
+
if (this._provider) {
|
|
143
|
+
return this._provider;
|
|
144
|
+
}
|
|
145
|
+
const client = yield this._getClient();
|
|
146
|
+
const provider = new ethers_1.ethers.providers.Web3Provider(client.rpcProvider);
|
|
147
|
+
(0, assignConfirmationScreenToProvider_1.assignConfirmationScreenToProvider)(provider, this._walletUiUtils);
|
|
148
|
+
this._provider = provider;
|
|
149
|
+
return this._provider;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
isInstalledOnBrowser() {
|
|
153
|
+
return false;
|
|
154
|
+
}
|
|
155
|
+
proveOwnership(messageToSign) {
|
|
156
|
+
return this.signMessage(messageToSign);
|
|
157
|
+
}
|
|
158
|
+
setupEventListeners() {
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
signMessage(messageToSign) {
|
|
162
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
163
|
+
const provider = yield this.getWeb3Provider();
|
|
164
|
+
return provider.getSigner().signMessage(messageToSign);
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
supportsNetworkSwitching() {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
switchNetwork() {
|
|
171
|
+
throw new Error('Method not implemented.');
|
|
172
|
+
}
|
|
173
|
+
teardownEventListeners() {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
exports.MagicConnector = MagicConnector;
|
|
178
|
+
//# sourceMappingURL=MagicLink.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MagicLink.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/ethereum/MagicLink.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
3
|
+
import { EthProviderHelper } from './ethProviderHelper';
|
|
4
|
+
import { EthProvider } from './ethProvider';
|
|
5
|
+
import { EvmNetwork } from './evm-network';
|
|
6
|
+
declare class Fortmatic extends EthProvider implements WalletConnector {
|
|
7
|
+
name: string;
|
|
8
|
+
supportedChains: Chain[];
|
|
9
|
+
connectedChain: Chain;
|
|
10
|
+
canConnectViaQrCode: boolean;
|
|
11
|
+
canConnectViaCustodialService: boolean;
|
|
12
|
+
isWalletConnect: boolean;
|
|
13
|
+
ethProviderHelper: EthProviderHelper;
|
|
14
|
+
publicAddress: string | undefined;
|
|
15
|
+
private apiKey;
|
|
16
|
+
constructor({ evmNetworks, apiKey, }: {
|
|
17
|
+
apiKey: string;
|
|
18
|
+
evmNetworks: EvmNetwork[];
|
|
19
|
+
});
|
|
20
|
+
get key(): string;
|
|
21
|
+
setupEventListeners(): void;
|
|
22
|
+
teardownEventListeners(): void;
|
|
23
|
+
getFortmaticProvider(): import("fortmatic/dist/cjs/src/core/fm-provider").FmProvider;
|
|
24
|
+
getWeb3Provider(): ethers.providers.Web3Provider;
|
|
25
|
+
isInstalledOnBrowser(): boolean;
|
|
26
|
+
connect(): Promise<void>;
|
|
27
|
+
fetchPublicAddress(): Promise<string | undefined>;
|
|
28
|
+
signMessage(messageToSign: string): Promise<string | undefined>;
|
|
29
|
+
proveOwnership(messageToSign: string): Promise<string | undefined>;
|
|
30
|
+
endSession(): Promise<void>;
|
|
31
|
+
supportsNetworkSwitching(): boolean;
|
|
32
|
+
providerSwitchNetwork(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export default Fortmatic;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const fortmatic_1 = tslib_1.__importDefault(require("fortmatic"));
|
|
6
|
+
const normalizeWalletName_1 = require("../../utils/normalizeWalletName");
|
|
7
|
+
const errors_1 = require("../../errors");
|
|
8
|
+
const logger_1 = require("../../utils/logger");
|
|
9
|
+
const ethProviderHelper_1 = require("./ethProviderHelper");
|
|
10
|
+
const ethProvider_1 = require("./ethProvider");
|
|
11
|
+
class Fortmatic extends ethProvider_1.EthProvider {
|
|
12
|
+
constructor({ evmNetworks, apiKey, }) {
|
|
13
|
+
super({ evmNetworks });
|
|
14
|
+
this.name = 'Fortmatic';
|
|
15
|
+
this.supportedChains = ['ETH', 'EVM'];
|
|
16
|
+
this.connectedChain = 'EVM';
|
|
17
|
+
this.canConnectViaQrCode = false;
|
|
18
|
+
this.canConnectViaCustodialService = true;
|
|
19
|
+
this.isWalletConnect = false;
|
|
20
|
+
this.ethProviderHelper = new ethProviderHelper_1.EthProviderHelper();
|
|
21
|
+
this.apiKey = apiKey;
|
|
22
|
+
}
|
|
23
|
+
get key() {
|
|
24
|
+
return (0, normalizeWalletName_1.normalizeWalletName)(this.name);
|
|
25
|
+
}
|
|
26
|
+
setupEventListeners() {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
teardownEventListeners() {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
getFortmaticProvider() {
|
|
33
|
+
const fm = new fortmatic_1.default(this.apiKey);
|
|
34
|
+
return fm.getProvider();
|
|
35
|
+
}
|
|
36
|
+
getWeb3Provider() {
|
|
37
|
+
const provider = new ethers_1.ethers.providers.Web3Provider(this.getFortmaticProvider());
|
|
38
|
+
return provider;
|
|
39
|
+
}
|
|
40
|
+
isInstalledOnBrowser() {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
connect() {
|
|
44
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
45
|
+
yield this.fetchPublicAddress();
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
fetchPublicAddress() {
|
|
49
|
+
var _a;
|
|
50
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
51
|
+
const fmProvider = this.getFortmaticProvider();
|
|
52
|
+
try {
|
|
53
|
+
const [address] = yield fmProvider.enable();
|
|
54
|
+
return address;
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
if ((error === null || error === void 0 ? void 0 : error.code) === -32603 && ((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.includes('User denied'))) {
|
|
58
|
+
error.code = 4001; // hack the error code to be the same as Metamask
|
|
59
|
+
}
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
signMessage(messageToSign) {
|
|
65
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
66
|
+
const signer = this.getWeb3Provider().getSigner();
|
|
67
|
+
const signedMessage = yield signer.signMessage(messageToSign);
|
|
68
|
+
logger_1.logger.debug('signedMessage:', signedMessage);
|
|
69
|
+
return signedMessage;
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
proveOwnership(messageToSign) {
|
|
73
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
74
|
+
return this.signMessage(messageToSign);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
endSession() {
|
|
78
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
const fm = new fortmatic_1.default(this.apiKey);
|
|
80
|
+
fm.user.logout();
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
supportsNetworkSwitching() {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
providerSwitchNetwork() {
|
|
87
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
throw new errors_1.DynamicError('Not supported');
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
exports.default = Fortmatic;
|
|
93
|
+
//# sourceMappingURL=fortmatic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fortmatic.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/ethereum/fortmatic.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,kEAAwC;AAIxC,yEAAsE;AACtE,yCAA4C;AAC5C,+CAA4C;AAE5C,2DAAwD;AACxD,+CAA4C;AAG5C,MAAM,SAAU,SAAQ,yBAAW;IAcjC,YAAY,EACV,WAAW,EACX,MAAM,GAIP;QACC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QApBzB,SAAI,GAAG,WAAW,CAAC;QAEnB,oBAAe,GAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE1C,mBAAc,GAAU,KAAK,CAAC;QAE9B,wBAAmB,GAAG,KAAK,CAAC;QAC5B,kCAA6B,GAAG,IAAI,CAAC;QACrC,oBAAe,GAAG,KAAK,CAAC;QACxB,sBAAiB,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAY1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAA,yCAAmB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,mBAAmB;QACjB,OAAO;IACT,CAAC;IAED,sBAAsB;QACpB,OAAO;IACT,CAAC;IAED,oBAAoB;QAClB,MAAM,EAAE,GAAG,IAAI,mBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAEQ,eAAe;QACtB,MAAM,QAAQ,GAAG,IAAI,eAAM,CAAC,SAAS,CAAC,YAAY,CAChD,IAAI,CAAC,oBAAoB,EAAS,CACnC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,oBAAoB;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAEK,OAAO;;YACX,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;KAAA;IAEK,kBAAkB;;;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/C,IAAI;gBACF,MAAM,CAAC,OAAO,CAAC,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC5C,OAAO,OAAO,CAAC;aAChB;YAAC,OAAO,KAAU,EAAE;gBACnB,IAAI,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,IAAI,MAAK,CAAC,KAAK,KAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,QAAQ,CAAC,aAAa,CAAC,CAAA,EAAE;oBACrE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,iDAAiD;iBACrE;gBACD,MAAM,KAAK,CAAC;aACb;;KACF;IAEK,WAAW,CAAC,aAAqB;;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAC9D,eAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;YAC9C,OAAO,aAAa,CAAC;QACvB,CAAC;KAAA;IAEK,cAAc,CAAC,aAAqB;;YACxC,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC;KAAA;IAEK,UAAU;;YACd,MAAM,EAAE,GAAG,IAAI,mBAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5C,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;KAAA;IAEQ,wBAAwB;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAEc,qBAAqB;;YAClC,MAAM,IAAI,qBAAY,CAAC,eAAe,CAAC,CAAC;QAC1C,CAAC;KAAA;CACF;AAED,kBAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
const meta_mask_1 = tslib_1.__importDefault(require("../meta-mask"));
|
|
5
|
+
class BloctoInjected extends meta_mask_1.default {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.name = 'bloctoInjected';
|
|
9
|
+
this.canConnectViaQrCode = false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.default = BloctoInjected;
|
|
13
|
+
//# sourceMappingURL=BloctoInjected.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BloctoInjected.js","sourceRoot":"","sources":["../../../../../../../packages/multi-wallet/src/wallets/ethereum/injected/BloctoInjected.ts"],"names":[],"mappings":";;;AAAA,qEAAoC;AAEpC,MAAM,cAAe,SAAQ,mBAAQ;IAArC;;QACW,SAAI,GAAG,gBAAgB,CAAC;QACxB,wBAAmB,GAAG,KAAK,CAAC;IACvC,CAAC;CAAA;AAED,kBAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
import { FlowProvider } from './flow-provider';
|
|
3
|
+
declare class Blocto extends FlowProvider implements WalletConnector {
|
|
4
|
+
name: string;
|
|
5
|
+
supportedChains: Chain[];
|
|
6
|
+
connectedChain: Chain;
|
|
7
|
+
canConnectViaQrCode: boolean;
|
|
8
|
+
canConnectViaCustodialService: boolean;
|
|
9
|
+
isWalletConnect: boolean;
|
|
10
|
+
get key(): string;
|
|
11
|
+
setupConfig(): void;
|
|
12
|
+
}
|
|
13
|
+
export default Blocto;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fcl_1 = require("@onflow/fcl");
|
|
4
|
+
const normalizeWalletName_1 = require("../../utils/normalizeWalletName");
|
|
5
|
+
const flow_provider_1 = require("./flow-provider");
|
|
6
|
+
class Blocto extends flow_provider_1.FlowProvider {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.name = 'Blocto';
|
|
10
|
+
this.supportedChains = ['FLOW'];
|
|
11
|
+
this.connectedChain = 'FLOW';
|
|
12
|
+
this.canConnectViaQrCode = false;
|
|
13
|
+
this.canConnectViaCustodialService = true;
|
|
14
|
+
this.isWalletConnect = false;
|
|
15
|
+
}
|
|
16
|
+
get key() {
|
|
17
|
+
return (0, normalizeWalletName_1.normalizeWalletName)(this.name);
|
|
18
|
+
}
|
|
19
|
+
setupConfig() {
|
|
20
|
+
super.setupConfig();
|
|
21
|
+
(0, fcl_1.config)()
|
|
22
|
+
.put('challenge.scope', 'email')
|
|
23
|
+
.put('discovery.wallet', 'https://flow-wallet.blocto.app/authn')
|
|
24
|
+
.put('service.OpenID.scopes', 'email!')
|
|
25
|
+
.put('discovery.wallet.method', undefined);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
exports.default = Blocto;
|
|
29
|
+
//# sourceMappingURL=blocto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocto.js","sourceRoot":"","sources":["../../../../../../packages/multi-wallet/src/wallets/flow/blocto.ts"],"names":[],"mappings":";;AAAA,qCAAqC;AAIrC,yEAAsE;AAEtE,mDAA+C;AAE/C,MAAM,MAAO,SAAQ,4BAAY;IAAjC;;QACE,SAAI,GAAG,QAAQ,CAAC;QAEhB,oBAAe,GAAY,CAAC,MAAM,CAAC,CAAC;QAEpC,mBAAc,GAAU,MAAM,CAAC;QAE/B,wBAAmB,GAAG,KAAK,CAAC;QAC5B,kCAA6B,GAAG,IAAI,CAAC;QACrC,oBAAe,GAAG,KAAK,CAAC;IAe1B,CAAC;IAbC,IAAI,GAAG;QACL,OAAO,IAAA,yCAAmB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEQ,WAAW;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,IAAA,YAAM,GAAE;aACL,GAAG,CAAC,iBAAiB,EAAE,OAAO,CAAC;aAC/B,GAAG,CAAC,kBAAkB,EAAE,sCAAsC,CAAC;aAC/D,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC;aACtC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;IAC/C,CAAC;CACF;AAED,kBAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Chain, WalletConnector } from '@dynamic-labs/wallet-connector-core';
|
|
2
|
+
import { FlowProvider } from './flow-provider';
|
|
3
|
+
declare class Dapper extends FlowProvider implements WalletConnector {
|
|
4
|
+
name: string;
|
|
5
|
+
supportedChains: Chain[];
|
|
6
|
+
connectedChain: Chain;
|
|
7
|
+
canConnectViaQrCode: boolean;
|
|
8
|
+
canConnectViaCustodialService: boolean;
|
|
9
|
+
isWalletConnect: boolean;
|
|
10
|
+
get key(): string;
|
|
11
|
+
setupConfig(): void;
|
|
12
|
+
}
|
|
13
|
+
export default Dapper;
|