@tomo-inc/wallet-adaptor-base 0.0.1 → 0.0.2
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/dist/index.cjs +735 -324
- package/dist/index.d.cts +152 -6
- package/dist/index.d.ts +152 -6
- package/dist/index.js +667 -325
- package/package.json +3 -2
- package/project.json +2 -2
- package/src/global.d.ts +7 -0
- package/src/index.ts +11 -8
- package/src/type.ts +8 -0
- package/src/utils/isMobile.ts +1 -1
- package/src/utils/log.ts +7 -0
- package/src/utils/utils.ts +5 -0
- package/src/wallet-api/balance.ts +4 -2
- package/src/wallet-api/connect.ts +77 -10
- package/src/wallet-api/sign-in.ts +20 -26
- package/src/wallet-api/sign-message.ts +80 -10
- package/src/wallets/Wallet.ts +2 -1
- package/src/wallets/default/backpackWallet/backpackWallet.ts +2 -4
- package/src/wallets/default/berasigWallet/berasigWallet.ts +2 -4
- package/src/wallets/default/binanceWallet/binanceWallet.ts +2 -4
- package/src/wallets/default/bitgetWallet/bitgetWallet.ts +2 -4
- package/src/wallets/default/bitskiWallet/bitskiWallet.ts +2 -4
- package/src/wallets/default/bitverseWallet/bitverseWallet.ts +2 -4
- package/src/wallets/default/bloomWallet/bloomWallet.ts +2 -4
- package/src/wallets/default/braveWallet/braveWallet.ts +2 -4
- package/src/wallets/default/bybitWallet/bybitWallet.ts +2 -4
- package/src/wallets/default/clvWallet/clvWallet.ts +2 -4
- package/src/wallets/default/coin98Wallet/coin98Wallet.ts +2 -4
- package/src/wallets/default/coinbaseWallet/coinbaseWallet.ts +2 -4
- package/src/wallets/default/compassWallet/compassWallet.ts +2 -4
- package/src/wallets/default/coreWallet/coreWallet.ts +2 -4
- package/src/wallets/default/ctrlWallet/ctrlWallet.ts +2 -4
- package/src/wallets/default/dawnWallet/dawnWallet.ts +2 -4
- package/src/wallets/default/desigWallet/desigWallet.ts +2 -4
- package/src/wallets/default/enkryptWallet/enkryptWallet.ts +2 -4
- package/src/wallets/default/foxWallet/foxWallet.ts +2 -4
- package/src/wallets/default/frameWallet/frameWallet.ts +2 -4
- package/src/wallets/default/gateWallet/gateWallet.ts +2 -4
- package/src/wallets/default/imTokenWallet/imTokenWallet.ts +2 -4
- package/src/wallets/default/injectedWallet/injectedWallet.ts +2 -4
- package/src/wallets/default/iopayWallet/iopayWallet.ts +2 -4
- package/src/wallets/default/kaiaWallet/kaiaWallet.ts +2 -4
- package/src/wallets/default/kaikasWallet/kaikasWallet.ts +2 -4
- package/src/wallets/default/krakenWallet/krakenWallet.ts +2 -4
- package/src/wallets/default/kresusWallet/kresusWallet.ts +2 -4
- package/src/wallets/default/ledgerWallet/ledgerWallet.ts +2 -4
- package/src/wallets/default/magicEdenWallet/magicEdenWallet.ts +5 -7
- package/src/wallets/default/mathWallet/mathWallet.svg +9 -0
- package/src/wallets/default/mathWallet/mathWallet.ts +2 -2
- package/src/wallets/default/metaMaskWallet/metaMaskWallet.ts +3 -2
- package/src/wallets/default/myDogeWallet/mydogeWallet.ts +1 -1
- package/src/wallets/default/nestWallet/nestWallet.ts +2 -4
- package/src/wallets/default/novaWallet/novaWallet.ts +2 -4
- package/src/wallets/default/oktoWallet/oktoWallet.ts +2 -4
- package/src/wallets/default/okxWallet/okxWallet.ts +2 -4
- package/src/wallets/default/omniWallet/omniWallet.ts +2 -4
- package/src/wallets/default/oneInchWallet/oneInchWallet.svg +30 -1
- package/src/wallets/default/oneInchWallet/oneInchWallet.ts +2 -4
- package/src/wallets/default/oneKeyWallet/oneKeyWallet.ts +2 -4
- package/src/wallets/default/paraSwapWallet/paraswapWallet.ts +2 -4
- package/src/wallets/default/petraWallet/petraWallet.svg +5 -0
- package/src/wallets/default/petraWallet/petraWallet.ts +24 -0
- package/src/wallets/default/phantomWallet/phantomWallet.ts +2 -4
- package/src/wallets/default/rabbyWallet/rabbyWallet.ts +2 -4
- package/src/wallets/default/rainbowWallet/rainbowWallet.ts +2 -4
- package/src/wallets/default/ramperWallet/ramperWallet.ts +2 -4
- package/src/wallets/default/readyWallet/readyWallet.ts +2 -4
- package/src/wallets/default/roninWallet/roninWallet.ts +2 -4
- package/src/wallets/default/safeWallet/safeWallet.ts +2 -4
- package/src/wallets/default/safeheronWallet/safeheronWallet.ts +2 -4
- package/src/wallets/default/safepalWallet/safepalWallet.ts +2 -4
- package/src/wallets/default/seifWallet/seifWallet.ts +2 -4
- package/src/wallets/default/solflareWallet/solflareWallet.svg +11 -0
- package/src/wallets/default/solflareWallet/solflareWallet.ts +2 -2
- package/src/wallets/default/subWallet/subWallet.ts +2 -4
- package/src/wallets/default/tahoWallet/tahoWallet.ts +2 -4
- package/src/wallets/default/talismanWallet/talismanWallet.ts +2 -4
- package/src/wallets/default/tokenPocketWallet/tokenPocketWallet.ts +2 -4
- package/src/wallets/default/tokenaryWallet/tokenaryWallet.ts +2 -4
- package/src/wallets/default/trezorWallet/trezorWallet.svg +7 -0
- package/src/wallets/default/trezorWallet/trezorWallet.ts +2 -2
- package/src/wallets/default/trustWallet/trustWallet.ts +3 -5
- package/src/wallets/default/uniswapWallet/uniswapWallet.ts +2 -4
- package/src/wallets/default/universalProfilesWallet/universalProfilesWallet.svg +13 -1351
- package/src/wallets/default/universalProfilesWallet/universalProfilesWallet.ts +2 -2
- package/src/wallets/default/valoraWallet/valoraWallet.ts +2 -4
- package/src/wallets/default/walletConnectWallet/walletConnectWallet.ts +2 -4
- package/src/wallets/default/wigwamWallet/wigwamWallet.ts +2 -4
- package/src/wallets/default/xPortalWallet/xPortalWallet.ts +2 -4
- package/src/wallets/default/zealWallet/zealWallet.ts +2 -4
- package/src/wallets/default/zerionWallet/zerionWallet.ts +2 -4
- package/src/wallets/default/zilPayWallet/zilPayWallet.ts +2 -4
- package/src/wallets/defaultConnectors.ts +213 -0
- package/src/wallets/detector.ts +11 -10
- package/src/wallets/index.ts +7 -76
- package/src/wallets/wallet-standard.ts +147 -47
- package/tsconfig.json +4 -1
- package/tsup.config.ts +55 -0
- package/src/wallets/default/mathWallet/icon.ts +0 -2
- package/src/wallets/default/metaMaskWallet/icon.ts +0 -2
- package/src/wallets/default/myDogeWallet/icon.ts +0 -2
- package/src/wallets/default/solflareWallet/icon.ts +0 -2
- package/src/wallets/default/trezorWallet/icon.ts +0 -2
- package/src/wallets/default/universalProfilesWallet/icon.ts +0 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tomo-inc/wallet-adaptor-base",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"author": "tomo.inc",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -16,9 +16,10 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
+
"@aptos-labs/ts-sdk": "^5.1.1",
|
|
19
20
|
"@solana/spl-token": "^0.4.13",
|
|
20
21
|
"@solana/web3.js": "^1.98.0",
|
|
21
|
-
"@
|
|
22
|
+
"@wallet-standard/core": "^1.1.0",
|
|
22
23
|
"viem": "2.21.54",
|
|
23
24
|
"@tomo-inc/wallet-connect-protocol": "0.0.3"
|
|
24
25
|
},
|
package/project.json
CHANGED
|
@@ -7,14 +7,14 @@
|
|
|
7
7
|
"executor": "nx:run-commands",
|
|
8
8
|
"outputs": ["{projectRoot}/dist"],
|
|
9
9
|
"options": {
|
|
10
|
-
"command": "tsup
|
|
10
|
+
"command": "tsup",
|
|
11
11
|
"cwd": "packages/wallet-adaptor-base"
|
|
12
12
|
}
|
|
13
13
|
},
|
|
14
14
|
"dev": {
|
|
15
15
|
"executor": "nx:run-commands",
|
|
16
16
|
"options": {
|
|
17
|
-
"command": "tsup
|
|
17
|
+
"command": "tsup --watch",
|
|
18
18
|
"cwd": "packages/wallet-adaptor-base"
|
|
19
19
|
}
|
|
20
20
|
},
|
package/src/global.d.ts
ADDED
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AdaptorChainType, Connector, WalletConnectorType } from "./type";
|
|
2
2
|
import { uniqueConnectors } from "./utils/utils";
|
|
3
|
-
import { defaultConnectors } from "./wallets";
|
|
4
|
-
import { WagmiWalletConfig, WalletConfig } from "./wallets/Wallet";
|
|
3
|
+
import { defaultConnectors } from "./wallets/defaultConnectors";
|
|
5
4
|
import { connectorDector, supportedWalletConfigTypes, walletConfigAdapter } from "./wallets/detector";
|
|
5
|
+
import { WagmiWalletConfig, WalletConfig } from "./wallets/Wallet";
|
|
6
6
|
import { eip6963Wallets } from "./wallets/wallet-eip6963";
|
|
7
7
|
import { walletStandardWallets } from "./wallets/wallet-standard";
|
|
8
8
|
import { setWalletConnectConfig, walletConnectWallets } from "./wallets/wallet-walletconnect";
|
|
@@ -56,13 +56,13 @@ export async function loadConnectors({
|
|
|
56
56
|
const connectorsFromConfig = uniqueConnectors([...recommonedConnectorsDetected, ...defaultConnectors]);
|
|
57
57
|
|
|
58
58
|
// Include WalletConnect wallets along with other detected wallets
|
|
59
|
-
const
|
|
59
|
+
const connectorsDetecteds = [...evmWallets, ...solanaWallets, ...aptosWallets, ...wcWallets];
|
|
60
60
|
|
|
61
|
-
for (const connector of
|
|
62
|
-
const
|
|
63
|
-
if (
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
for (const connector of connectorsDetecteds) {
|
|
62
|
+
const _connector = connectorsFromConfig.find((c) => c.info.name === connector.info.name);
|
|
63
|
+
if (_connector) {
|
|
64
|
+
_connector.isInstalled = true;
|
|
65
|
+
_connector.providers = { ..._connector.providers, ...connector.providers };
|
|
66
66
|
} else {
|
|
67
67
|
connectorsFromConfig.push(connector);
|
|
68
68
|
}
|
|
@@ -91,3 +91,6 @@ export async function loadConnectors({
|
|
|
91
91
|
|
|
92
92
|
//api
|
|
93
93
|
export * from "./wallet-api";
|
|
94
|
+
|
|
95
|
+
// Export all wallets
|
|
96
|
+
export * from "./wallets";
|
package/src/type.ts
CHANGED
|
@@ -4,6 +4,7 @@ export enum ProviderProtocol {
|
|
|
4
4
|
EIP6963 = "eip6963",
|
|
5
5
|
WALLET_STANDARD = "wallet-standard",
|
|
6
6
|
WALLET_CONNECT = "wallet-connect",
|
|
7
|
+
INJECT = "inject",
|
|
7
8
|
}
|
|
8
9
|
|
|
9
10
|
export enum ProviderChainType {
|
|
@@ -21,11 +22,13 @@ export const SupportedChainTypes = ["evm", "solana", "aptos"];
|
|
|
21
22
|
export interface WalletInfo {
|
|
22
23
|
uuid: string;
|
|
23
24
|
name: string;
|
|
25
|
+
sameNames?: string[];
|
|
24
26
|
namespace?: string;
|
|
25
27
|
icon: string;
|
|
26
28
|
iconBackground?: string;
|
|
27
29
|
rdns?: string;
|
|
28
30
|
isWalletConnect?: boolean;
|
|
31
|
+
deeplink?: string;
|
|
29
32
|
links: {
|
|
30
33
|
homepage?: string;
|
|
31
34
|
ios_install?: string;
|
|
@@ -62,6 +65,10 @@ export interface Connector {
|
|
|
62
65
|
};
|
|
63
66
|
}
|
|
64
67
|
|
|
68
|
+
export interface ConnectParams {
|
|
69
|
+
dappLink: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
65
72
|
export interface SignInParams {
|
|
66
73
|
scheme?: "https" | "http";
|
|
67
74
|
domain: string;
|
|
@@ -83,6 +90,7 @@ export interface WalletOptions {
|
|
|
83
90
|
network?: string;
|
|
84
91
|
};
|
|
85
92
|
provider: WalletProvider;
|
|
93
|
+
walletInfo?: WalletInfo;
|
|
86
94
|
}
|
|
87
95
|
|
|
88
96
|
export interface ChainInfo {
|
package/src/utils/isMobile.ts
CHANGED
package/src/utils/log.ts
ADDED
package/src/utils/utils.ts
CHANGED
|
@@ -12,3 +12,8 @@ export function uniqueConnectors(allConnectors: Connector[]) {
|
|
|
12
12
|
});
|
|
13
13
|
return connectors;
|
|
14
14
|
}
|
|
15
|
+
|
|
16
|
+
// uint8array to hex
|
|
17
|
+
export function uint8arrayToHex(uint8array: Uint8Array) {
|
|
18
|
+
return Array.from(uint8array, (byte) => byte.toString(16).padStart(2, "0")).join("");
|
|
19
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PublicKey, Connection } from "@solana/web3.js";
|
|
2
1
|
import { Aptos, AptosConfig, Network } from "@aptos-labs/ts-sdk";
|
|
2
|
+
import { Connection, PublicKey } from "@solana/web3.js";
|
|
3
3
|
import { WalletOptions } from "type";
|
|
4
4
|
|
|
5
5
|
export interface BalanceParams {
|
|
@@ -41,6 +41,7 @@ export const getBalance = async (
|
|
|
41
41
|
method: "eth_getBalance",
|
|
42
42
|
params: [address, "latest"],
|
|
43
43
|
});
|
|
44
|
+
console.log("getBalance evm res:", chainType, provider, { address, chainId, balance });
|
|
44
45
|
return {
|
|
45
46
|
total: Number(balance || "0") || 0,
|
|
46
47
|
tokenInfo,
|
|
@@ -52,7 +53,7 @@ export const getBalance = async (
|
|
|
52
53
|
const connection = new Connection(rpcUrl);
|
|
53
54
|
|
|
54
55
|
const balances = await connection.getMultipleAccountsInfo([address].map((addr) => new PublicKey(addr)));
|
|
55
|
-
console.log("solana balances", balances);
|
|
56
|
+
console.log("solana balances", chainType, provider, { address, chainId, balances });
|
|
56
57
|
|
|
57
58
|
return {
|
|
58
59
|
total: balances[0]?.lamports || 0,
|
|
@@ -86,6 +87,7 @@ export const getBalance = async (
|
|
|
86
87
|
throw error;
|
|
87
88
|
}
|
|
88
89
|
|
|
90
|
+
console.log("solana balances", chainType, provider, { address, chainId, balance });
|
|
89
91
|
return {
|
|
90
92
|
total: balance,
|
|
91
93
|
tokenInfo,
|
|
@@ -1,8 +1,27 @@
|
|
|
1
|
-
import { WalletOptions } from "type";
|
|
1
|
+
import { ConnectParams, WalletOptions } from "type";
|
|
2
|
+
import { isMobile } from "../utils/isMobile";
|
|
2
3
|
|
|
3
4
|
export const connect = async (
|
|
4
|
-
|
|
5
|
+
connectParams: ConnectParams,
|
|
6
|
+
walletOptions: Omit<WalletOptions, "account">,
|
|
5
7
|
): Promise<{ address: string; chainId?: string; network?: string }> => {
|
|
8
|
+
//deeplink in mobile
|
|
9
|
+
//https://link.metamask.io/dapp/app.uniswap.org
|
|
10
|
+
if (isMobile()) {
|
|
11
|
+
const deeplink = walletOptions?.walletInfo?.deeplink || "";
|
|
12
|
+
if (!deeplink) {
|
|
13
|
+
throw new Error("Deeplink not supported");
|
|
14
|
+
}
|
|
15
|
+
const dappLink = connectParams?.dappLink || "";
|
|
16
|
+
if (!dappLink) {
|
|
17
|
+
throw new Error("Dapp link is required");
|
|
18
|
+
}
|
|
19
|
+
const { hostname, pathname } = new URL(dappLink);
|
|
20
|
+
const link = `${deeplink}${hostname}${pathname}`;
|
|
21
|
+
(window as any).location.href = link;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
//inject provider/walletconnect provider
|
|
6
25
|
const { provider, chainType } = walletOptions;
|
|
7
26
|
|
|
8
27
|
if (!provider) {
|
|
@@ -20,25 +39,59 @@ export const connect = async (
|
|
|
20
39
|
address = res?.[0] || "";
|
|
21
40
|
chainId = await provider.request({ method: "eth_chainId" });
|
|
22
41
|
}
|
|
42
|
+
|
|
43
|
+
// console.log("connect request:", chainType, provider);
|
|
23
44
|
if (chainType === "solana") {
|
|
24
45
|
let res = null;
|
|
25
46
|
if (provider?.connect) {
|
|
26
47
|
res = await provider.connect();
|
|
48
|
+
address = res?.publicKey?.toString() || "";
|
|
27
49
|
}
|
|
28
50
|
if (provider?.request) {
|
|
29
51
|
res = await provider.request({
|
|
30
52
|
method: "connect",
|
|
31
53
|
});
|
|
54
|
+
address = res?.publicKey?.toString() || "";
|
|
55
|
+
}
|
|
56
|
+
if (provider?.["standard:connect"]) {
|
|
57
|
+
res = await provider["standard:connect"]?.connect();
|
|
58
|
+
address = res?.accounts?.[0]?.address || "";
|
|
32
59
|
}
|
|
33
|
-
address = provider?.publicKey?.toString() || "";
|
|
34
60
|
network = "mainnet-beta";
|
|
35
61
|
}
|
|
62
|
+
|
|
36
63
|
if (chainType === "aptos") {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
64
|
+
if (provider?.connect) {
|
|
65
|
+
await provider?.connect();
|
|
66
|
+
} else if (provider?.request) {
|
|
67
|
+
await provider.request({ method: "connect" });
|
|
68
|
+
} else if (provider?.["aptos:connect"]) {
|
|
69
|
+
await provider["aptos:connect"]?.connect();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (provider?.account) {
|
|
73
|
+
const account = await provider?.account();
|
|
74
|
+
address = account?.address || "";
|
|
75
|
+
} else if (provider?.["aptos:account"]) {
|
|
76
|
+
const account = await provider?.["aptos:account"]?.account();
|
|
77
|
+
const addressData = account?.address?.data;
|
|
78
|
+
const hexString = addressData
|
|
79
|
+
? Array.from(addressData as Uint8Array)
|
|
80
|
+
.map((b) => b.toString(16).padStart(2, "0"))
|
|
81
|
+
.join("")
|
|
82
|
+
: null;
|
|
83
|
+
address = `0x${hexString}`;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// if (provider?.network) {
|
|
87
|
+
// network = ((await provider?.network()) || "Mainnet") as string;
|
|
88
|
+
// }
|
|
89
|
+
// if (provider?.["aptos:network"]) {
|
|
90
|
+
// network = ((await provider?.["aptos:network"]?.network())?.name || "Mainnet") as string;
|
|
91
|
+
// }
|
|
92
|
+
network = "mainnet";
|
|
41
93
|
}
|
|
94
|
+
console.log("connect res:", chainType, provider, { address, chainId, network });
|
|
42
95
|
return { address, chainId, network };
|
|
43
96
|
};
|
|
44
97
|
|
|
@@ -56,10 +109,24 @@ export const disconnect = async (walletOptions: WalletOptions): Promise<boolean>
|
|
|
56
109
|
await provider.request({ method: "wallet_revokePermissions" });
|
|
57
110
|
}
|
|
58
111
|
if (chainType === "solana") {
|
|
59
|
-
|
|
112
|
+
if (provider?.disconnect) {
|
|
113
|
+
await provider.disconnect();
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
if (provider?.["standard:disconnect"]) {
|
|
117
|
+
await provider["standard:disconnect"]?.disconnect();
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
60
120
|
}
|
|
61
121
|
if (chainType === "aptos") {
|
|
62
|
-
|
|
122
|
+
if (provider?.disconnect) {
|
|
123
|
+
await provider.disconnect();
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
if (provider?.["aptos:disconnect"]) {
|
|
127
|
+
await provider["aptos:disconnect"]?.disconnect();
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
63
130
|
}
|
|
64
|
-
return
|
|
131
|
+
return false;
|
|
65
132
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { SignInParams, WalletOptions } from "type";
|
|
2
|
-
|
|
2
|
+
import { uint8arrayToHex } from "utils/utils";
|
|
3
|
+
import { signMessage } from "./sign-message";
|
|
3
4
|
/*
|
|
4
5
|
const params = {
|
|
5
6
|
domain: window.location.host,
|
|
@@ -12,7 +13,7 @@ const params = {
|
|
|
12
13
|
};
|
|
13
14
|
*/
|
|
14
15
|
|
|
15
|
-
export const signInWithWallet = async (signInData: SignInParams, walletOptions: WalletOptions) => {
|
|
16
|
+
export const signInWithWallet = async (signInData: SignInParams, walletOptions: WalletOptions): Promise<string> => {
|
|
16
17
|
const { chainType, account, provider } = walletOptions;
|
|
17
18
|
|
|
18
19
|
if (!provider) {
|
|
@@ -20,23 +21,16 @@ export const signInWithWallet = async (signInData: SignInParams, walletOptions:
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
const message = signInMessageBuilder(signInData, walletOptions);
|
|
23
|
-
const { address } = account;
|
|
24
|
-
|
|
25
24
|
if (chainType === "evm") {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
});
|
|
31
|
-
return sign;
|
|
32
|
-
} catch (error) {
|
|
33
|
-
throw error as Error;
|
|
34
|
-
}
|
|
25
|
+
return await signMessage({ message, nonce: signInData.nonce }, walletOptions);
|
|
26
|
+
}
|
|
27
|
+
if (chainType === "aptos") {
|
|
28
|
+
return await signMessage({ message, nonce: signInData.nonce }, walletOptions);
|
|
35
29
|
}
|
|
36
30
|
|
|
37
31
|
if (chainType === "solana") {
|
|
38
32
|
try {
|
|
39
|
-
if (provider?.signIn) {
|
|
33
|
+
if (provider?.signIn || provider?.["solana:signIn"]) {
|
|
40
34
|
// Create params object without address, scheme, and chainId
|
|
41
35
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
42
36
|
const { address: _address, scheme: _scheme, chainId: _chainId, ...signInDataWithoutFields } = signInData;
|
|
@@ -44,25 +38,25 @@ export const signInWithWallet = async (signInData: SignInParams, walletOptions:
|
|
|
44
38
|
const { address: _accountAddress, chainId: _accountChainId, ...accountWithoutFields } = account;
|
|
45
39
|
const params = { ...signInDataWithoutFields, ...accountWithoutFields };
|
|
46
40
|
|
|
47
|
-
const
|
|
41
|
+
const res = provider.signIn ? await provider.signIn(params) : await provider["solana:signIn"]?.signIn(params);
|
|
42
|
+
let signature = "";
|
|
43
|
+
if (typeof res === "object" && res?.signature) {
|
|
44
|
+
signature = res?.signature?.toHex?.() || uint8arrayToHex(res?.signature as Uint8Array) || "";
|
|
45
|
+
} else if (Array.isArray(res)) {
|
|
46
|
+
signature = res?.[0]?.signature?.toHex?.() || uint8arrayToHex(res?.[0]?.signature as Uint8Array) || "";
|
|
47
|
+
} else {
|
|
48
|
+
signature = res || "";
|
|
49
|
+
}
|
|
50
|
+
console.log("signInWithWallet solana res:", chainType, provider, { params, signature });
|
|
48
51
|
return signature;
|
|
49
52
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
return signature;
|
|
53
|
+
|
|
54
|
+
return await signMessage({ message, nonce: signInData.nonce }, walletOptions);
|
|
53
55
|
} catch (error) {
|
|
54
56
|
throw error as Error;
|
|
55
57
|
}
|
|
56
58
|
}
|
|
57
59
|
|
|
58
|
-
if (chainType === "aptos") {
|
|
59
|
-
const { signature } = await provider.signMessage({
|
|
60
|
-
message,
|
|
61
|
-
nonce: signInData.nonce,
|
|
62
|
-
});
|
|
63
|
-
return signature;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
60
|
throw new Error(`signInWithWallet not supported in ${chainType}`);
|
|
67
61
|
};
|
|
68
62
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { WalletOptions } from "type";
|
|
2
|
+
import { uint8arrayToHex } from "utils/utils";
|
|
2
3
|
|
|
3
4
|
/*
|
|
4
5
|
const params = {
|
|
@@ -12,7 +13,10 @@ const params = {
|
|
|
12
13
|
};
|
|
13
14
|
*/
|
|
14
15
|
|
|
15
|
-
export const signMessage = async (
|
|
16
|
+
export const signMessage = async (
|
|
17
|
+
data: { message: string; nonce: string },
|
|
18
|
+
walletOptions: WalletOptions,
|
|
19
|
+
): Promise<string> => {
|
|
16
20
|
const { chainType, account, provider } = walletOptions;
|
|
17
21
|
const { message, nonce } = data;
|
|
18
22
|
|
|
@@ -24,11 +28,12 @@ export const signMessage = async (data: { message: string; nonce: string }, wall
|
|
|
24
28
|
|
|
25
29
|
if (chainType === "evm") {
|
|
26
30
|
try {
|
|
27
|
-
const
|
|
31
|
+
const signature: string = await provider.request({
|
|
28
32
|
method: "personal_sign",
|
|
29
33
|
params: [message, address],
|
|
30
34
|
});
|
|
31
|
-
|
|
35
|
+
console.log("signMessage res:", chainType, provider, message, signature);
|
|
36
|
+
return signature;
|
|
32
37
|
} catch (error) {
|
|
33
38
|
throw error as Error;
|
|
34
39
|
}
|
|
@@ -37,20 +42,57 @@ export const signMessage = async (data: { message: string; nonce: string }, wall
|
|
|
37
42
|
if (chainType === "solana") {
|
|
38
43
|
try {
|
|
39
44
|
const encodedMessage = new TextEncoder().encode(message);
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
let signature = "";
|
|
46
|
+
if (provider?.signMessage) {
|
|
47
|
+
const res = await provider.signMessage(encodedMessage, "utf8");
|
|
48
|
+
if (typeof res === "object" && res?.signature) {
|
|
49
|
+
signature = res?.signature?.toHex?.() || uint8arrayToHex(res?.signature as Uint8Array) || "";
|
|
50
|
+
} else if (Array.isArray(res)) {
|
|
51
|
+
signature = res?.[0]?.signature?.toHex?.() || uint8arrayToHex(res?.[0]?.signature as Uint8Array) || "";
|
|
52
|
+
} else {
|
|
53
|
+
signature = res || "";
|
|
54
|
+
}
|
|
55
|
+
console.log("signMessage solana res:", chainType, provider, message, signature);
|
|
56
|
+
return signature;
|
|
57
|
+
}
|
|
58
|
+
if (provider?.["solana:signMessage"]) {
|
|
59
|
+
const res: any[] = await provider["solana:signMessage"]?.signMessage({
|
|
60
|
+
message: encodedMessage,
|
|
61
|
+
account: { address },
|
|
62
|
+
});
|
|
63
|
+
signature = res?.[0]?.signature?.toHex?.() || uint8arrayToHex(res?.[0]?.signature as Uint8Array) || "";
|
|
64
|
+
console.log("signMessage solana res:", chainType, provider, message, signature);
|
|
65
|
+
return signature;
|
|
66
|
+
}
|
|
67
|
+
throw new Error("signMessage solana not supported");
|
|
42
68
|
} catch (error) {
|
|
69
|
+
console.log("signMessage solana error:", chainType, provider, message, error);
|
|
43
70
|
throw error as Error;
|
|
44
71
|
}
|
|
45
72
|
}
|
|
46
73
|
|
|
47
74
|
if (chainType === "aptos") {
|
|
48
75
|
try {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
76
|
+
let signature = "";
|
|
77
|
+
if (provider?.signMessage) {
|
|
78
|
+
const res = await provider.signMessage({
|
|
79
|
+
message,
|
|
80
|
+
nonce,
|
|
81
|
+
});
|
|
82
|
+
signature = getAPTOSSignatureFromResponse(res);
|
|
83
|
+
console.log("signMessage aptos res:", chainType, provider, message, signature);
|
|
84
|
+
return signature;
|
|
85
|
+
}
|
|
86
|
+
if (provider?.["aptos:signMessage"]) {
|
|
87
|
+
const res = await provider["aptos:signMessage"]?.signMessage({
|
|
88
|
+
message,
|
|
89
|
+
nonce,
|
|
90
|
+
});
|
|
91
|
+
signature = getAPTOSSignatureFromResponse(res);
|
|
92
|
+
console.log("signMessage aptos res:", chainType, provider, message, signature);
|
|
93
|
+
return signature;
|
|
94
|
+
}
|
|
95
|
+
throw new Error("signMessage aptos not supported");
|
|
54
96
|
} catch (error) {
|
|
55
97
|
throw error as Error;
|
|
56
98
|
}
|
|
@@ -58,3 +100,31 @@ export const signMessage = async (data: { message: string; nonce: string }, wall
|
|
|
58
100
|
|
|
59
101
|
throw new Error(`signMessage not supported in ${chainType}`);
|
|
60
102
|
};
|
|
103
|
+
|
|
104
|
+
function getAPTOSSignatureFromResponse(res: any): string {
|
|
105
|
+
let signature = "";
|
|
106
|
+
if (typeof res === "object" && res?.args?.signature) {
|
|
107
|
+
const oSignature = res?.args?.signature;
|
|
108
|
+
// signature is an object with data and signature properties
|
|
109
|
+
if (typeof oSignature === "object" && oSignature?.data?.data) {
|
|
110
|
+
// some wallet signature is an object, can be converted to hex string
|
|
111
|
+
if (oSignature?.data?.data?.toHex) {
|
|
112
|
+
signature = oSignature?.data?.data?.toHex?.() || "";
|
|
113
|
+
} else if (typeof oSignature?.data?.data === "object") {
|
|
114
|
+
// the gate wallet signature is an object like { data: { data: { } } }, need to convert to hex string
|
|
115
|
+
signature = uint8arrayToHex(new Uint8Array(Object.values(oSignature?.data?.data))) || "";
|
|
116
|
+
} else {
|
|
117
|
+
signature = oSignature || "";
|
|
118
|
+
}
|
|
119
|
+
// signature is an object with signature property, like petra wallet
|
|
120
|
+
} else if (typeof oSignature === "object" && oSignature?.signature) {
|
|
121
|
+
signature = oSignature?.signature?.toString("hex") || "";
|
|
122
|
+
} else {
|
|
123
|
+
signature = oSignature || "";
|
|
124
|
+
}
|
|
125
|
+
// signature is a string, like okx wallet
|
|
126
|
+
} else if (res?.signature && typeof res?.signature === "string") {
|
|
127
|
+
signature = res?.signature || "";
|
|
128
|
+
}
|
|
129
|
+
return signature;
|
|
130
|
+
}
|
package/src/wallets/Wallet.ts
CHANGED
|
@@ -2,7 +2,7 @@ export type WalletConfig = {
|
|
|
2
2
|
id: string;
|
|
3
3
|
name: string;
|
|
4
4
|
rdns?: string;
|
|
5
|
-
namespace
|
|
5
|
+
namespace?: string;
|
|
6
6
|
flag?: string;
|
|
7
7
|
solana?: {
|
|
8
8
|
namespace?: string;
|
|
@@ -16,6 +16,7 @@ export type WalletConfig = {
|
|
|
16
16
|
iconAccent?: string;
|
|
17
17
|
iconBackground: string;
|
|
18
18
|
installed?: boolean;
|
|
19
|
+
deeplink?: string;
|
|
19
20
|
downloadUrls?: {
|
|
20
21
|
android?: string;
|
|
21
22
|
ios?: string;
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { WalletConfig } from "../../Wallet";
|
|
2
|
-
|
|
3
|
-
const backpackWalletIcon =
|
|
4
|
-
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48cmVjdCB3aWR0aD0iMjQwIiBoZWlnaHQ9IjI0MCIgZmlsbD0iI0VCNDY0NiIvPjxwYXRoIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEyOC45MDUgNjIuNzVjNC45NjkgMCA5LjYzMS42NjcgMTMuOTQ3IDEuOTAyQzEzOC42MjYgNTQuODA0IDEyOS44NTMgNTIgMTIwLjA4OSA1MmMtOS43ODMgMC0xOC41NzIgMi44MTUtMjIuNzg4IDEyLjcxIDQuMjg1LTEuMjc5IDguOTI2LTEuOTYgMTMuODc5LTEuOTZoMTcuNzI1Wm0tMTguODYyIDkuODg2Qzg2LjQ0NSA3Mi42MzYgNzMgOTEuMiA3MyAxMTQuMXYyMy41MjRjMCAyLjI5IDEuOTEzIDQuMTAxIDQuMjczIDQuMTAxaDg1LjQ1NGMyLjM2IDAgNC4yNzMtMS44MTEgNC4yNzMtNC4xMDFWMTE0LjFjMC0yMi45LTE1LjYzNS00MS40NjQtMzkuMjMyLTQxLjQ2NGgtMTcuNzI1Wm05LjkyNCA0MS42N2M4LjI1OSAwIDE0Ljk1NC02LjY5NiAxNC45NTQtMTQuOTU1cy02LjY5NS0xNC45NTQtMTQuOTU0LTE0Ljk1NC0xNC45NTUgNi42OTUtMTQuOTU1IDE0Ljk1NCA2LjY5NiAxNC45NTUgMTQuOTU1IDE0Ljk1NVpNNzMgMTU1LjU1NWMwLTIuMjkgMS45MTMtNC4xNDcgNC4yNzMtNC4xNDdoODUuNDU0YzIuMzYgMCA0LjI3MyAxLjg1NyA0LjI3MyA0LjE0N3YyNC44NzhjMCA0LjU4LTMuODI2IDguMjkzLTguNTQ1IDguMjkzaC03Ni45MWMtNC43MiAwLTguNTQ1LTMuNzEzLTguNTQ1LTguMjkzdi0yNC44NzhaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L3N2Zz4K";
|
|
2
|
+
import icon from "./backpackWallet.svg";
|
|
5
3
|
|
|
6
4
|
export const backpackWallet = (): WalletConfig => {
|
|
7
5
|
return {
|
|
@@ -9,7 +7,7 @@ export const backpackWallet = (): WalletConfig => {
|
|
|
9
7
|
name: "Backpack",
|
|
10
8
|
namespace: "backpack.ethereum",
|
|
11
9
|
rdns: "app.backpack.mobile",
|
|
12
|
-
icon
|
|
10
|
+
icon,
|
|
13
11
|
iconBackground: "#0C0D10",
|
|
14
12
|
downloadUrls: {
|
|
15
13
|
android: "https://play.google.com/store/apps/details?id=app.backpack.mobile",
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { WalletConfig } from "../../Wallet";
|
|
2
|
-
|
|
3
|
-
const berasigWalletIcon =
|
|
4
|
-
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48cGF0aCBmaWxsPSIjRkZEODZFIiBkPSJNMCAwaDE2NS41NTZ2MTY1LjU1NkgweiIvPjxwYXRoIGQ9Ik0xNy44MTIgNi42NDR2LS4zNWgtLjY3NWE1LjUwMiA1LjUwMiAwIDAgMC0yLjE5Ny0uNDU1aC0xLjgzOGMtLjc4IDAtMS41MjIuMTYyLTIuMTk2LjQ1NWgtLjExMnYuMDVhNS41NDIgNS41NDIgMCAwIDAtMy4yMjcgNS4wM3YxMS4yNDhoMS43MzlsLjAwMi0uMDRoOS40NjhsLjAwMi4wNGgxLjY5OFYxMS4zNzRhNS41MzcgNS41MzcgMCAwIDAtMi42NjQtNC43M1oiIGZpbGw9IiNGRkQ4NkUiLz48cGF0aCBkPSJNMjEuMDYxIDIyLjM5MnYtMTAuOTFjMC0uODI4LS4xNjQtMS42MzMtLjQ4Ny0yLjM5M2E2LjE2NSA2LjE2NSAwIDAgMC0xLjMyMy0xLjk1OSA2LjE3MyA2LjE3MyAwIDAgMC0xLjk1OS0xLjMyMyA2LjA5MiA2LjA5MiAwIDAgMC0yLjM5NC0uNDg3aC0xLjc4MmMtLjgyOSAwLTEuNjM0LjE2NC0yLjM5NC40ODdBNi4xNjUgNi4xNjUgMCAwIDAgOC43NjMgNy4xMyA2LjE3MyA2LjE3MyAwIDAgMCA3LjQzOSA5LjA5YTYuMDkyIDYuMDkyIDAgMCAwLS40ODYgMi4zOTR2MTAuOTA5SDUuNDQ0di4yNTdoMTQuODMzYS40MTMuNDEzIDAgMCAwIC4xMTMgMGgyLjE2NnYtLjI1N0gyMS4wNmguMDAxWm0tLjc5NC0uMTQ5Yy0uNDI0LS4wODctLjc1NS0uMjktLjk5LS42MDktLjUzOS0uNzMzLS40OS0xLjk3LS4yODUtMi44MDcuMTA3LS40MzYuMzA2LS43NC41OTMtLjkwNS4yMzYtLjEzNi40OTUtLjE1NS42ODItLjE0NHY0LjQ2NVpNOC41MDcgOC43MzRjLjM4My0uMTM5LjczLS4xNjYuOTY4LS4xMDkuMTUyLjAzNy4yNi4xMDYuMzA5LjIwMi4wMjMuMDQ2LjAzMy4xLjAzLjE1OS0uMDEzLjI1NS0uMjYyLjYxNC0uNzA1LjkwOWEyLjc5MyAyLjc5MyAwIDAgMS0uNjM2LjMxNiAyLjE0OCAyLjE0OCAwIDAgMS0uNjAxLjEyM2MuMTI1LS41NzMuMzQyLTEuMTEuNjM0LTEuNlptLS43MDQgMS45ODNoLjAzMmMuMjU0LS4wMDUuNTMtLjA2LjgwNy0uMTYyYTMuMTY3IDMuMTY3IDAgMCAwIC42NC0uMzE5IDIuNTU3IDIuNTU3IDAgMCAwIC42NzgtLjYyNmMuMTQtLjE5OS4yMTktLjM5Ni4yMzQtLjU4LjIxLjA1NC4zNjIuMTU3LjQzMi4yOThhLjU2Mi41NjIgMCAwIDEgLjAyMi40IDEuMjc2IDEuMjc2IDAgMCAxLS4yMDcuNDJjLS4yNTEuMzUzLS42NTguNjgyLTEuMTQ4LjkyOC0uNDkuMjQ1LS45OTkuMzc1LTEuNDMxLjM2NC0uMDI5IDAtLjA1Ni0uMDAyLS4wODMtLjAwNGwtLjAzMS0uMDAzYy4wMDItLjI0My4wMi0uNDgyLjA1NC0uNzE3Wm0tLjA1NSAxLjA5OWMuMTk3LjAxNS40MTEuMDAzLjYzNi0uMDM1LjM0NC0uMDU4LjcxMi0uMTggMS4wOC0uMzYzLjM2Ni0uMTg0LjY4My0uNDA2LjkzNS0uNjQ2LjE4LS4xNzIuMzI4LS4zNTEuNDM3LS41MzNhLjQuNCAwIDAgMSAuMDkyLjExOGMuMDYzLjEyNi4wNTMuMjkyLS4wMjQuNDc0YTEuMzc4IDEuMzc4IDAgMCAxLS4yMDguMzRjLS4yMy4yODktLjU3My41NTYtLjk3OC43NTktLjQwNS4yMDMtLjgyNC4zMTgtMS4xOTIuMzNIOC40MmExLjM2NSAxLjM2NSAwIDAgMS0uMjkzLS4wMzdjLS4xOC0uMDQ1LS4zMTMtLjEyOS0uMzgtLjI0NHYtLjE2M1ptMi4zMTguODA3Yy0uNzUyLjM3OC0xLjQzNi4zMjMtMS41OC4wMzhsLS4wMDgtLjAyYy40MjMtLjAwMS45MTgtLjEyMyAxLjQxMS0uMzcuNDk0LS4yNDguODg4LS41NyAxLjE0Mi0uOTFsLjAxLjAyYy4xNDMuMjg0LS4yMjMuODY1LS45NzUgMS4yNDJabS45MjctLjE5NmMtLjAzMy4yNjYtLjI0LjU3Ny0uNjEyLjc2My0uMzYuMTgtLjcyLjE2OC0uOTU1LjA0Ny4yNjUtLjA0Ni41NDMtLjE0LjgxMS0uMjczLjI5My0uMTQ3LjU1Mi0uMzMyLjc1Ny0uNTM3Wm0tMy4yNDUgOS45NjV2LTkuOTFjLjA5OC4wNTIuMjA5LjA5Mi4zMy4xMTkuMDEuMDguMDMyLjE1OC4wNjguMjMuMTM3LjI3My40NDMuNDI5Ljg2NC40NGguMDM4Yy4xNDQuMjAyLjM2LjM0LjYyNC4zOTIuMjgzLjA1Ny41OTYuMDEuODgtLjEzMi4yODMtLjE0My41MDgtLjM2NS42MzItLjYyNmEuOTg1Ljk4NSAwIDAgMCAuMDUtLjc2NWMuMjI5LS4zMzUuMjgyLS42NjUuMTQ4LS45MzFhLjY3NS42NzUgMCAwIDAtLjE0My0uMTkyYy4xMzQtLjI5Ni4xNTMtLjU4Ni4wMy0uODMyQS43OTcuNzk3IDAgMCAwIDExIDkuODgzYy4wODItLjI2LjA3Ny0uNTEtLjAzMi0uNzI3LS4xNDgtLjI5NS0uNDU4LS40NzMtLjg2LS41MzJIMTAuMWguMDFjLS4xNDQtLjI1My0uNDQzLS4zOTgtLjg0OC0uNDA4YTIuMTMgMi4xMyAwIDAgMC0uNDMuMDM1IDUuMzY0IDUuMzY0IDAgMCAxIDQuMjg1LTIuMTM4SDE0LjlhNS4zNzcgNS4zNzcgMCAwIDEgNS4wNiAzLjU3NmMtLjE2LS4wOS0uMzUtLjE3LS41NjgtLjI0bC0uMDA4LS4wMDMtLjAwOC0uMDAyYTEuMDcgMS4wNyAwIDAgMC0uODA2LjE2MmMtLjMxMy4yMS0uNTY5LjYtLjc2MSAxLjE2Mi0uMTc4LjA0LS40MDUuMDk0LS42MDQuMTUxYS45MzMuOTMzIDAgMCAwLS4xOS4wNmMtLjEuMDM0LS4xODMuMDY5LS4yMy4xMDEtLjIyNS4xMDctLjQ2OC4yNC0uNTkyLjMwOS0uNTItLjI5LS45NzItLjQxLTEuMzQ1LS4zNTVhMS4wNyAxLjA3IDAgMCAwLS43MDcuNDE4bC0uMDA1LjAwNi0uMDA0LjAwOGMtLjM2NC42MjEtLjQ0NSAxLjEyNi0uMjQgMS40OTguMjMxLjQxOC43NS41MzYgMSAuNTctLjIxOCAxLjE5NC0uMDczIDIuMDkyLjQzMSAyLjY2OWExLjkzIDEuOTMgMCAwIDAgMS4wNTguNjA1bC4wODQuMDE2YTIuMDM2IDIuMDM2IDAgMCAxLS4wODQtLjAxNmMtLjI4My4xODgtLjY3MS40NTktMS4wNjcuNzdhOC41MyA4LjUzIDAgMCAwLTEuMDY1Ljk2M2MtLjM1NC4zOTMtLjUzOS43MjctLjU2NCAxLjAyMWEuNjk1LjY5NSAwIDAgMCAuMjQxLjYwMWMuNTE0LjQ1OC45Mi42NzIgMS4yNzMuNjcyaC4wMzJjLjM0NC0uMDE0LjU2LS4yMjQuNzUtLjQwOWwuMDA4LS4wMDdjLjItLjE5NC41NTYtLjU3NS44MzUtLjg3N2ExMC40MSAxMC40MSAwIDAgMC0uMDE1LjkzOGMuMDI1LjgyOC4xNTkgMS40NjcuMzk4IDEuOTFINy43NDh2LjAwMlptOS45MyAwYy0uMjgyLS4zNjEtLjQ0NS0xLjAxOC0uNDczLTEuOTE3LS4wMjUtLjc4LjA2NC0xLjQ2NC4wNjUtMS40N2wuMDgzLS42MjktLjQyNy40N2MtLjAwOS4wMDktLjg3MS45NTctMS4yMTQgMS4yOWwtLjAwOC4wMDhjLS4xNi4xNTUtLjI5Ny4yOS0uNDg4LjI5Ni0uMjQ2LjAwOC0uNTktLjE4My0xLjAyNy0uNTcxYS4yOTYuMjk2IDAgMCAxLS4xMDktLjI3Yy4wMi0uMjIuMjM3LS43MzQgMS40NzYtMS43MDUuNzMtLjU3MiAxLjQ2LTEuMDIgMS40NjYtMS4wMjVsLS4wOC0uMTI2LjA5My4wMzgtLjE1OC0uMDk1LjIxMi4xMzdoLS4wMTVsLS4wNTUtLjA4OGE1LjAyIDUuMDIgMCAwIDEtLjM4NS0uMDk1IDEuNzQyIDEuNzQyIDAgMCAxLTEuMTMxLS41OTZjLS40Ny0uNTM5LS41ODctMS40MTEtLjM1LTIuNTkzbC4wMjgtLjEzOS0uMTQyLS4wMDVjLS4wMDcgMC0uNy0uMDMtLjkzNy0uNDU5LS4xNi0uMjkxLS4wODItLjcxMi4yMzItMS4yNTJhLjgyNC44MjQgMCAwIDEgLjU0Ny0uMzIyYy4zMzItLjA0OC43NTIuMDczIDEuMjQ5LjM1OWwuMDYuMDM0LjA2LS4wMzRjLjI1NC0uMTQzLjYyNC0uMzM2Ljg0MS0uNDI2LjE4NC0uMDYxLjQ4OC0uMTQxLjgzLS4yMTVsLjA3MS0uMDE2LjAyMi0uMDY1Yy4xNzgtLjU0Ni40MS0uOTE3LjY4OC0xLjEwMmEuODI0LjgyNCAwIDAgMSAuNjIzLS4xMjdjLjMyOC4xMDYuNTc4LjIzMy43NS4zOC4wODQuMzA1LjE0MS42MjEuMTcuOTQ2LS4xMi4yNC0uMjk3LjQxNS0uMy40MThsLS4xMDMuMDk4LjExNC4wODVjLjExLjA4Mi4yMTMuMTYzLjMxLjI0NXY1LjUyNmExLjYxMyAxLjYxMyAwIDAgMC0uODc2LjE5NmMtLjM4Ny4yMi0uNjUuNjEtLjc4NSAxLjE1Ny0uMDcuMjg2LS4xODMuODY2LS4xNSAxLjUzLjAzNC42Ni4yMDMgMS4yMDEuNTAxIDEuNjA3LjE2LjIxNi4zNTQuMzkxLjU4LjUyMmgtMS44Ni4wMDFaIiBmaWxsPSIjNDUxRDA3Ii8+PHBhdGggZD0iTTE0Ljk1IDExLjY0Yy0uMjMuMDY1LS40MTcuMjUxLS41NC41MzdsLS4wMDYuMDE0LS4wMDIuMDE2Yy0uMTAzLjY4Mi4yMDcuNzY2LjcyLjkwNWwuMTQ4LjA0LjAzNi0uMTA4Yy4xNjEtLjQ3Ny41NDQtMS4wMDQuNTQ3LTEuMDA5bC4wNzQtLjEtLjEwMi0uMDdjLS4zMjQtLjIyNC0uNjE4LS4zLS44NzUtLjIyNlptLjE2NiAxLjIyYy0uMi0uMDU0LS4zNDQtLjA5OC0uNDE4LS4xNzEtLjA1My0uMDUyLS4xMDEtLjE0NC0uMDYtLjQzLjA2Ny0uMTUuMTg1LS4zMzIuMzc5LS4zODguMTU5LS4wNDYuMzUtLjAwMy41NjkuMTI3YTQuNzQ1IDQuNzQ1IDAgMCAwLS40Ny44NjJaTTE3LjExIDE0LjA4NmEuOTM5LjkzOSAwIDAgMC0uMDYyLS40NjcuOTM5LjkzOSAwIDAgMC0uMjY2LS4zODdjLS4xMjgtLjEwNS0uMjctLjEzOS0uMzktLjA5My0uMTIxLjA0Ni0uMjA1LjE2Ny0uMjMuMzNhLjkzOC45MzggMCAwIDAgLjA2Mi40NjZjLjA2MS4xNi4xNTYuMjk3LjI2Ny4zODguMDkuMDc0LjE4Ny4xMTIuMjc5LjExMmEuMzA2LjMwNiAwIDAgMCAuMTEtLjAyYy4xMjEtLjA0Ni4yMDUtLjE2Ny4yMy0uMzNabS0uNTIyLS40NDdjLS4wODMuMDMyLS4xMjkuMTI1LS4xMjguMjM1bC0uMDEtLjAyNWMtLjA5Ny0uMjUyLS4wNDgtLjQ1NS4wMjgtLjQ4NGEuMDY2LjA2NiAwIDAgMSAuMDI1LS4wMDRjLjA4NCAwIC4yMzMuMTE5LjMyLjM0NWwuMDAyLjAwN2MtLjA3LS4wNzItLjE2LS4xMDQtLjIzNy0uMDc0WiIgZmlsbD0iIzQ1MUQwNyIvPjxwYXRoIGQ9Ik0xOS45MTUgMTUuNjkzYy4yMDQtLjIxNS4yOS0uNDI1LjMyNS0uNTYzbC4wMS0uMDM2LS4wMTMtLjAzNWMtLjQ4Mi0xLjMzLTEuMjM5LTEuNTUyLTEuNDU4LTEuNTg5LS4zMy0uNDEzLS44NDQtLjQ0OS0xLjAyLS40NDlsLS4wMTItLjAxNS0uMDE5LjAxNmEuMjA2LjIwNiAwIDAgMC0uMDI4LjAwMmwuMDAxLjAyMmMtLjEyNS4xMTctLjQ2LjQ3OS0uNDI4IDEuMDAyLS4xMzkuMTc0LS41NTMuODQ1LS4wMjEgMi4xNTZsLjAxNC4wMzUuMDMuMDJjLjE2Mi4xMDcuNDIyLjE3My43MzcuMTczLjMwNSAwIC42NjEtLjA2MiAxLjAyNS0uMjEyLjM1OC0uMTI5LjY0Ny0uMzA2Ljg1Ny0uNTI2Wm0tLjk0Ny4zMDNjLS43LjI4OC0xLjI3Ny4yMDctMS41MDcuMDgtLjI3My0uNjktLjI1NC0xLjE3LS4xODktMS40NTEuMDctLjMwNi4yMS0uNDUuMjEtLjQ1bC4wNDItLjA0Mi0uMDA2LS4wNTdjLS4wNDItLjM4OS4xODQtLjY4My4zMDYtLjgxLjE4My4wMS41NjMuMDcyLjc5Mi4zODlsLjAzNC4wNDcuMDU4LjAwM3MuMjAxLjAxNC40NTguMTk0Yy4yMzcuMTY2LjU3Mi41MS44MzEgMS4yMDctLjA2Mi4yMDItLjI4LjYyNC0xLjAyOC44OWwuMDEuMDI5LS4wMTEtLjAyOFoiIGZpbGw9IiM0NTFEMDciLz48cGF0aCBkPSJtMTkuNTE2IDE0LjgzMy0uMjQuMDIzdi0uMDA1YzAgLjAwMy0uMDAzLjIyLS40MjkuNDkybC0uMDYtLjE2Mi0uMTcyLS40NDljLjIzNy0uMTM2LjM2LS4zNzguMjg0LS41OC0uMDktLjIzMi0uNDEtLjMyNS0uNzE1LS4yMDhhLjc4Ny43ODcgMCAwIDAtLjA3My4wMzMuNjcuNjcgMCAwIDAtLjA3Ny4wMjRjLS4zMDUuMTE4LS40ODEuNC0uMzkyLjYzMy4wNzguMjAzLjMzMi4zLjU5OS4yNDJsLjE3MS40NDcuMDY1LjE2M2MtLjQ5OC4wODItLjY0Ni0uMDc4LS42NDgtLjA4YS4wMjcuMDI3IDAgMCAxIC4wMDQuMDA0bC0uMTk0LjE0NGMuMDE5LjAyNS4xNjIuMTk3LjU3NC4xOTcuMTI2IDAgLjI3Ny0uMDE2LjQ1Ny0uMDU4bC4wNDYtLjAxLjAwNC4wMTIuMDQyLS4wMjMuMDQ2LS4wMS0uMDA1LS4wMTMuMDQtLjAyMmMuNjktLjM4NS42NzctLjc1My42NzMtLjc5NFpNMTkuNTczIDExLjQwOGwuMDk5LjA1Ni4wODItLjEyOGMuMjg5LS40NDcuNDYzLS43MTYtLjA3LTEuMTU1bC0uMDEyLS4wMS0uMDE0LS4wMDZjLS4yODMtLjEzLS41NDYtLjE0NC0uNzYyLS4wNC0uMjQuMTE3LS40MDcuMzctLjQ5OS43NTNsLS4wMjkuMTIuMTIyLjAyNmMuMDA2LjAwMi42NDMuMTM3IDEuMDgyLjM4NFptLS41Ny0xLjA2NmMuMTgtLjA4OC4zOS0uMDMxLjU0LjAzNS4yMjIuMTg1LjI0Ny4yODYuMjQzLjM2LS4wMDYuMTA0LS4wODQuMjM0LS4xOTYuNDA3YTQuNzUgNC43NSAwIDAgMC0uOTI1LS4zMjdjLjA3Ni0uMjQzLjE4OS0uNDAzLjMzOC0uNDc1Wk0xOS4yMTggMTIuMjk3Yy0uMTI3LS4xMDQtLjI3LS4xMzgtLjM5LS4wOTItLjEyLjA0Ni0uMjA0LjE2Ni0uMjI5LjMzYS45MzguOTM4IDAgMCAwIC4wNjIuNDY2Yy4wNjEuMTYuMTU2LjI5Ny4yNjYuMzg4LjA5LjA3My4xODguMTEyLjI4LjExMmEuMzA3LjMwNyAwIDAgMCAuMTEtLjAyYy4xMjEtLjA0Ny4yMDQtLjE2Ny4yMy0uMzNhLjkzNy45MzcgMCAwIDAtLjA2Mi0uNDY3LjkzNi45MzYgMCAwIDAtLjI2Ny0uMzg3Wm0uMDUuNWMtLjA3My0uMDgzLS4xNy0uMTIxLS4yNTItLjA5LS4wNzcuMDMtLjEyMi4xMTMtLjEyNy4yMTRhLjAzNi4wMzYgMCAwIDEtLjAwMy0uMDA3Yy0uMDk2LS4yNTItLjA0OC0uNDU0LjAyOS0uNDg0LjAzNi0uMDE0LjA5Mi4wMDcuMTUuMDU0YS43MS43MSAwIDAgMSAuMTk0LjI4N2wuMDEuMDI2aC0uMDAxWiIgZmlsbD0iIzQ1MUQwNyIvPjxwYXRoIGQ9Im0xNS45OTkgMTcuNDE1LS4wNDQtLjAyYy0xLjE0NC0uNTI1LTEuOTE2LS4yMDQtMS45MjMtLjIwMWwtLjI0Ny4xMDYuMDMyLS4yNjZjLjEwOC0uODU3Ljk3OS0xLjc3NyAxLjAxNi0xLjgxNmwuMjI0LS4yMzUuMDQuMzIzYzAgLjAwNi4wOTUuNjk1LjY4MyAxLjA4Mi40ODYuMzIgMS4xNzMuMzU0IDIuMDQuMTA0YTcuNzc0IDcuNzc0IDAgMCAwIDIuODU2LTEuNjAybC4yMTMuMjJjLS4wNzMuMDcxLTEuODEgMS43My00Ljg0MiAyLjI5NmwtLjA0OS4wMDhabS0xLjMyNS0uNjNjLjM1NiAwIC44MjIuMDcgMS4zNjQuMzFhOS45OSA5Ljk5IDAgMCAwIC42MDMtLjEzNCAyLjAyNyAyLjAyNyAwIDAgMS0xLjAzMy0uMzE5IDEuOSAxLjkgMCAwIDEtLjc0Mi0uOTkzYy0uMjE1LjI2My0uNTU1LjcyOC0uNjkyIDEuMTg1LjEyNy0uMDI2LjI5Ni0uMDUuNS0uMDVaTTE1LjA4OCAyMi42MjdsLS4xOTYtLjE0OGMxLjI5My0uMzY5IDEuMTgyLTIuNDcxIDEuMTgtMi40OWwuMzA0LS4wMzhjLjAxMi4wOS4yNTQgMi4yMzUtMS4yODggMi42NzZaIiBmaWxsPSIjNDUxRDA3Ii8+PC9nPjxkZWZzPjxjbGlwUGF0aCBpZD0iYSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgyOHYyOEgweiIvPjwvY2xpcFBhdGg+PC9kZWZzPjwvc3ZnPg==";
|
|
2
|
+
import icon from "./berasigWallet.svg";
|
|
5
3
|
|
|
6
4
|
export const berasigWallet = (): WalletConfig => {
|
|
7
5
|
return {
|
|
@@ -9,7 +7,7 @@ export const berasigWallet = (): WalletConfig => {
|
|
|
9
7
|
name: "BeraSig",
|
|
10
8
|
namespace: "berasig.ethereum",
|
|
11
9
|
rdns: "app.berasig",
|
|
12
|
-
icon
|
|
10
|
+
icon,
|
|
13
11
|
iconBackground: "#ffffff",
|
|
14
12
|
downloadUrls: {
|
|
15
13
|
android: "https://play.google.com/store/apps/details?id=io.berasig.ios",
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { WalletConfig } from "../../Wallet";
|
|
2
|
-
|
|
3
|
-
const binanceWalletIcon =
|
|
4
|
-
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMzAiIGhlaWdodD0iMTMwIiBmaWxsPSJub25lIj48cGF0aCBmaWxsPSIjMDAwIiBkPSJNMCAwaDEzMHYxMzBIMHoiLz48cGF0aCBmaWxsPSIjRjNCQTJGIiBkPSJNNDUuNTg3IDU3LjAyIDY1LjAxIDM3LjYwNmwxOS40MyAxOS40MyAxMS4yOTUtMTEuMzAzTDY1LjAxIDE1IDM0LjI4NCA0NS43MjV6TTE1IDY1LjAwNGwxMS4yOTktMTEuMjk5IDExLjI5OCAxMS4yOTlMMjYuMyA3Ni4zMDJ6TTQ1LjU4NyA3Mi45ODMgNjUuMDEgOTIuNDA2bDE5LjQzLTE5LjQzIDExLjMwMyAxMS4yODctLjAwOC4wMDctMzAuNzI1IDMwLjczNC0zMC43MjUtMzAuNzE4LS4wMTYtLjAxNnpNOTIuNDAzIDY1LjAwNiAxMDMuNyA1My43MDggMTE1IDY1LjAwNmwtMTEuMjk5IDExLjI5OXoiLz48cGF0aCBmaWxsPSIjRjNCQTJGIiBkPSJtNzYuNDcxIDY0Ljk5OC0xMS40Ni0xMS40NjktOC40NzYgOC40NzUtLjk4Ljk3Mi0yLjAwNSAyLjAwNi0uMDE2LjAxNi4wMTYuMDI0IDExLjQ2IDExLjQ1MyAxMS40NjEtMTEuNDcuMDA4LS4wMDd6Ii8+PC9zdmc+";
|
|
2
|
+
import icon from "./binanceWallet.svg";
|
|
5
3
|
|
|
6
4
|
export const binanceWallet = (): WalletConfig => {
|
|
7
5
|
return {
|
|
@@ -10,7 +8,7 @@ export const binanceWallet = (): WalletConfig => {
|
|
|
10
8
|
namespace: "binancew3w.isExtension",
|
|
11
9
|
flag: "isBinance",
|
|
12
10
|
rdns: "com.binance.wallet",
|
|
13
|
-
icon
|
|
11
|
+
icon,
|
|
14
12
|
iconBackground: "#000000",
|
|
15
13
|
downloadUrls: {
|
|
16
14
|
android: "https://play.google.com/store/apps/details?id=com.binance.dev",
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type { WalletConfig } from "../../Wallet";
|
|
2
|
-
|
|
3
|
-
const bitgetWalletIcon =
|
|
4
|
-
"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSIjMDAxRjI5Ii8+CjxwYXRoIGQ9Ik0yMTkuOTQ4IDk1LjcwMjJDMjAxLjYyMyA5NS42OTI5IDE4My4zMyA5NS42ODM1IDE2NC45NDEgOTUuNzExNkMxNTMuODIyIDk1LjcxMTYgMTQ5LjY1MSAxMDkuNjcxIDE1Ny45MjEgMTE3LjkzOUwyODMuMDk4IDI0My4xMTdDMjg3LjAwNCAyNDYuNjkgMjg5LjQ0MSAyNTAuNTc0IDI4OS41MyAyNTUuNjkzQzI4OS40NDEgMjYwLjgxMiAyODcuMDA0IDI2NC42OTYgMjgzLjA5OCAyNjguMjY5TDE1Ny45MjEgMzkzLjQ0NkMxNDkuNjUxIDQwMS43MTUgMTUzLjgyMiA0MTUuNjc0IDE2NC45NDEgNDE1LjY3NEMxODMuMzMgNDE1LjcwMiAyMDEuNjIzIDQxNS42OTMgMjE5Ljk0OCA0MTUuNjgzQzIyOS4xMjIgNDE1LjY3OSAyMzguMzA1IDQxNS42NzQgMjQ3LjUxMSA0MTUuNjc0QzI1OS41NTUgNDE1LjY3NCAyNjYuNzIgNDA5LjI0IDI3My4xNTQgNDAyLjgwNUwzODYuMDQ3IDI4OS45MTJDMzk1LjA1NyAyODAuOTAyIDQwMy4xMTkgMjY4LjkzOSA0MDMuMDA5IDI1NS42OTNDNDAzLjExOSAyNDIuNDQ3IDM5NS4wNTcgMjMwLjQ4NCAzODYuMDQ3IDIyMS40NzRMMjczLjE1NCAxMDguNThDMjY2LjcyIDEwMi4xNDYgMjU5LjU1NSA5NS43MTE2IDI0Ny41MTEgOTUuNzExNkMyMzguMzA1IDk1LjcxMTYgMjI5LjEyMiA5NS43MDY5IDIxOS45NDggOTUuNzAyMloiIGZpbGw9IiMwMEYwRkYiLz4KPC9zdmc+Cg==";
|
|
2
|
+
import icon from "./bitgetWallet.svg";
|
|
5
3
|
|
|
6
4
|
export const bitgetWallet = (): WalletConfig => {
|
|
7
5
|
return {
|
|
@@ -15,7 +13,7 @@ export const bitgetWallet = (): WalletConfig => {
|
|
|
15
13
|
namespace: "bitkeep.aptos",
|
|
16
14
|
},
|
|
17
15
|
rdns: "com.bitget.web3",
|
|
18
|
-
icon
|
|
16
|
+
icon,
|
|
19
17
|
iconAccent: "#f6851a",
|
|
20
18
|
iconBackground: "#fff",
|
|
21
19
|
downloadUrls: {
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import type { WalletConfig } from "../../Wallet";
|
|
2
|
-
|
|
3
|
-
const bitskiWalletIcon =
|
|
4
|
-
"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCAyOCAyOCI+PGcgY2xpcC1wYXRoPSJ1cmwoI2EpIj48bWFzayBpZD0iYiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4IiB4PSIwIiB5PSIwIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiBzdHlsZT0ibWFzay10eXBlOmx1bWluYW5jZSI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTAgMGgyOHYyOEgwVjBaIi8+PC9tYXNrPjxnIG1hc2s9InVybCgjYikiPjxwYXRoIGZpbGw9IiNGRjI0NUEiIGQ9Ik0wIDBoMjh2MjhIMFYwWiIvPjxnIGZpbHRlcj0idXJsKCNjKSI+PHBhdGggc3Ryb2tlPSJ1cmwoI2QpIiBzdHJva2Utd2lkdGg9IjE2IiBkPSJNNyA3aDE0djE0SDdWN1oiLz48L2c+PG1hc2sgaWQ9ImUiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgeD0iNSIgeT0iNSIgbWFza1VuaXRzPSJ1c2VyU3BhY2VPblVzZSIgc3R5bGU9Im1hc2stdHlwZTphbHBoYSI+PHBhdGggZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOS4wOCA3LjEwMyA1Ljk4IDEwLjIwMmMtLjIzMi4yMzItLjIxNy40MjEuMDE1LjY1NGw5LjUxMyA5LjUxM2MuMjMzLjIzMy40MjIuMjQ4LjY1NS4wMTVsNC4zNS00LjM1YzIuMjY4LTIuMjY4IDIuMDgtNC42NjkuMjktNi40NTgtMS4yOC0xLjI4LTIuNjE4LTEuNzQ2LTQuMTQ2LTEuMzI0LS4yNDcuMDczLS4zNjQuMDQ0LS40OC0uMDcyLS4wNDMtLjA0My0uMDc3LS4wOTMtLjEyMi0uMTU3bC0uMDUzLS4wNzZjLS4xNzUtLjI2Mi0uNDY2LS42Ny0uNjk4LS45MDItMS44MzMtMS44MzMtNC4xNzUtMS45OTMtNi4yMjYuMDU3di4wMDFabTQgNC0uNzQyLjc0MmMtLjIzMi4yMzMtLjQyMS4yMTgtLjY1NC0uMDE1bC0uNjk4LS42OThjLS4yMzMtLjIzMy0uMjQ4LS40MjItLjAxNS0uNjU1bC43NDItLjc0MmMuMzc4LS4zNzguOTE2LS40MjEgMS4zNTMuMDE1LjQ1LjQ1LjM5Mi45NzUuMDE0IDEuMzUzWm00Ljc1NyAyLjM0Mi0xLjk0OSAxLjk1Yy0uMjMyLjIzMi0uNDIxLjIxOC0uNjU0LS4wMTVsLS42OTgtLjY5OGMtLjIzMy0uMjMzLS4yNDgtLjQyMi0uMDE1LS42NTVsMS45NS0xLjk1Yy41NjYtLjU2NiAxLjEwNC0uNjY5IDEuNTctLjIwMy40OC40OC4zNjQgMS4wMDMtLjIwNCAxLjU3di4wMDFaTTYuODE4IDE1LjE4M2EuODU3Ljg1NyAwIDAgMCAwIDEuMjEybDYuMDYxIDYuMDYxYS44NTcuODU3IDAgMCAwIDEuMjEyLTEuMjEyTDguMDMgMTUuMTgzYS44NTcuODU3IDAgMCAwLTEuMjEyIDBaIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L21hc2s+PGcgZmlsdGVyPSJ1cmwoI2YpIiBtYXNrPSJ1cmwoI2UpIj48cGF0aCBmaWxsPSJ1cmwoI2cpIiBkPSJNMjIuMTggMTMuOGE4LjE4MyA4LjE4MyAwIDAgMC0xNi4zNjYgMHYuODg5YTguMTgzIDguMTgzIDAgMCAwIDE2LjM2NiAwVjEzLjhaIi8+PHBhdGggZmlsbD0idXJsKCNoKSIgZmlsbC1vcGFjaXR5PSIuMTIiIGQ9Ik0yMi4xOCAxMy44YTguMTgzIDguMTgzIDAgMCAwLTE2LjM2NiAwdi44ODlhOC4xODMgOC4xODMgMCAwIDAgMTYuMzY2IDBWMTMuOFoiLz48cGF0aCBmaWxsPSIjZmZmIiBmaWxsLW9wYWNpdHk9Ii4yIiBkPSJNMjIuMTggMTMuOGE4LjE4MyA4LjE4MyAwIDAgMC0xNi4zNjYgMHYuODg5YTguMTgzIDguMTgzIDAgMCAwIDE2LjM2NiAwVjEzLjhaIiBzdHlsZT0ibWl4LWJsZW5kLW1vZGU6b3ZlcmxheSIvPjwvZz48L2c+PC9nPjxkZWZzPjxsaW5lYXJHcmFkaWVudCBpZD0iZCIgeDE9IjE0IiB4Mj0iMTQiIHkxPSIwIiB5Mj0iMjcuNjQ1IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIuNSIvPjxzdG9wIG9mZnNldD0iLjYzMyIgc3RvcC1jb2xvcj0iI0UwMDAzNyIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJnIiB4MT0iMTMuOTk3IiB4Mj0iMTMuOTk3IiB5MT0iNS42MTgiIHkyPSIyMi44NzIiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBzdG9wLWNvbG9yPSIjZmZmIi8+PHN0b3Agb2Zmc2V0PSIuNTQ0IiBzdG9wLWNvbG9yPSIjRjlGN0ZBIi8+PHN0b3Agb2Zmc2V0PSIuNzciIHN0b3AtY29sb3I9IiNGN0Y3RjciLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNFNkU2RTYiLz48L2xpbmVhckdyYWRpZW50PjxmaWx0ZXIgaWQ9ImMiIHdpZHRoPSIyMzAiIGhlaWdodD0iMjMwIiB4PSItMTAxIiB5PSItMTAxIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz48ZmVCbGVuZCBpbj0iU291cmNlR3JhcGhpYyIgaW4yPSJCYWNrZ3JvdW5kSW1hZ2VGaXgiIHJlc3VsdD0ic2hhcGUiLz48ZmVHYXVzc2lhbkJsdXIgcmVzdWx0PSJlZmZlY3QxX2ZvcmVncm91bmRCbHVyXzI5MDNfNDgyMjQiIHN0ZERldmlhdGlvbj0iNTAiLz48L2ZpbHRlcj48ZmlsdGVyIGlkPSJmIiB3aWR0aD0iMTM2LjM2NiIgaGVpZ2h0PSIxMzcuMjU0IiB4PSItNTQuMTg2IiB5PSItMTAuMzgyIiBjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnM9InNSR0IiIGZpbHRlclVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PGZlRmxvb2QgZmxvb2Qtb3BhY2l0eT0iMCIgcmVzdWx0PSJCYWNrZ3JvdW5kSW1hZ2VGaXgiLz48ZmVDb2xvck1hdHJpeCBpbj0iU291cmNlQWxwaGEiIHJlc3VsdD0iaGFyZEFscGhhIiB2YWx1ZXM9IjAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDEyNyAwIi8+PGZlT2Zmc2V0IGR5PSI0NCIvPjxmZUdhdXNzaWFuQmx1ciBzdGREZXZpYXRpb249IjMwIi8+PGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwLjI4IDAiLz48ZmVCbGVuZCBpbjI9IkJhY2tncm91bmRJbWFnZUZpeCIgcmVzdWx0PSJlZmZlY3QxX2Ryb3BTaGFkb3dfMjkwM180ODIyNCIvPjxmZUJsZW5kIGluPSJTb3VyY2VHcmFwaGljIiBpbjI9ImVmZmVjdDFfZHJvcFNoYWRvd18yOTAzXzQ4MjI0IiByZXN1bHQ9InNoYXBlIi8+PC9maWx0ZXI+PHJhZGlhbEdyYWRpZW50IGlkPSJoIiBjeD0iMCIgY3k9IjAiIHI9IjEiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoMCAxMi40NjE2IC0xMS44MjAxIDAgMTMuOTk3IDEwLjQxKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiPjxzdG9wIG9mZnNldD0iLjQ3OSIgc3RvcC1jb2xvcj0iI2ZmZiIvPjxzdG9wIG9mZnNldD0iMSIvPjwvcmFkaWFsR3JhZGllbnQ+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDI4djI4SDB6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+";
|
|
2
|
+
import icon from "./bitskiWallet.svg";
|
|
5
3
|
|
|
6
4
|
export const bitskiWallet = (): WalletConfig => ({
|
|
7
5
|
id: "bitski",
|
|
8
6
|
name: "Bitski",
|
|
9
7
|
namespace: "",
|
|
10
8
|
flag: "isBitski",
|
|
11
|
-
icon
|
|
9
|
+
icon,
|
|
12
10
|
iconBackground: "#fff",
|
|
13
11
|
downloadUrls: {
|
|
14
12
|
chrome: "https://chrome.google.com/webstore/detail/bitski/feejiigddaafeojfddjjlmfkabimkell",
|