diff --git a/examples/sandbox/index.html b/examples/sandbox/index.html
index 8b9f9ef95..a7190c115 100644
--- a/examples/sandbox/index.html
+++ b/examples/sandbox/index.html
@@ -113,7 +113,6 @@
Select
-
@@ -121,7 +120,6 @@ Select
-
diff --git a/examples/sandbox/index.ts b/examples/sandbox/index.ts
index 0e1e91325..4f7d59609 100644
--- a/examples/sandbox/index.ts
+++ b/examples/sandbox/index.ts
@@ -13,13 +13,10 @@ import * as ledgerWebUSB from "@shapeshiftoss/hdwallet-ledger-webusb";
import * as metaMask from "@shapeshiftoss/hdwallet-metamask-multichain";
import * as native from "@shapeshiftoss/hdwallet-native";
import * as phantom from "@shapeshiftoss/hdwallet-phantom";
-import * as portis from "@shapeshiftoss/hdwallet-portis";
import * as trezorConnect from "@shapeshiftoss/hdwallet-trezor-connect";
import * as vultisig from "@shapeshiftoss/hdwallet-vultisig";
-import { WalletConnectProviderConfig } from "@shapeshiftoss/hdwallet-walletconnect";
-import * as walletConnect from "@shapeshiftoss/hdwallet-walletconnect";
import * as walletConnectv2 from "@shapeshiftoss/hdwallet-walletconnectv2";
-import { EthereumProviderOptions } from "@walletconnect/ethereum-provider/dist/types/EthereumProvider";
+import { EthereumProviderOptions } from "@walletconnect/ethereum-provider";
import { TypedData } from "eip-712";
import $, { noop } from "jquery";
import Web3 from "web3";
@@ -76,13 +73,8 @@ import {
const keyring = new core.Keyring();
-const portisAppId = "ff763d3d-9e34-45a1-81d1-caa39b9c64f9";
const mnemonic = "alcohol woman abuse must during monitor noble actual mixed trade anger aisle";
-const walletConnectOptions: WalletConnectProviderConfig = {
- rpc: {
- 1: "https://mainnet.infura.io/v3/d734c7eebcdf400185d7eb67322a7e57",
- },
-};
+
const walletConnectV2Options: EthereumProviderOptions = {
projectId: "5abef0455c768644c2bc866f1520374f",
chains: [1],
@@ -126,11 +118,9 @@ const coinbaseAdapter = coinbase.CoinbaseAdapter.useKeyring(keyring, coinbaseOpt
const keepkeyAdapter = keepkeyWebUSB.WebUSBKeepKeyAdapter.useKeyring(keyring);
const kkbridgeAdapter = keepkeyTcp.TCPKeepKeyAdapter.useKeyring(keyring);
const kkemuAdapter = keepkeyTcp.TCPKeepKeyAdapter.useKeyring(keyring);
-const portisAdapter = portis.PortisAdapter.useKeyring(keyring, { portisAppId });
const metaMaskAdapter = metaMask.MetaMaskAdapter.useKeyring(keyring, "io.metamask");
const phantomAdapter = phantom.PhantomAdapter.useKeyring(keyring);
const vultisigAdapter = vultisig.VultisigAdapter.useKeyring(keyring);
-const walletConnectAdapter = walletConnect.WalletConnectAdapter.useKeyring(keyring, walletConnectOptions);
const walletConnectV2Adapter = walletConnectv2.WalletConnectV2Adapter.useKeyring(keyring, walletConnectV2Options);
const keplrAdapter = keplr.KeplrAdapter.useKeyring(keyring);
const nativeAdapter = native.NativeAdapter.useKeyring(keyring);
@@ -158,14 +148,12 @@ const $kkemu = $("#kkemu");
const $trezor = $("#trezor");
const $ledgerwebusb = $("#ledgerwebusb");
const $ledgerwebhid = $("#ledgerwebhid");
-const $portis = $("#portis");
const $native = $("#native");
const $gridplus = $("#gridplus");
const $metaMask = $("#metaMask");
const $phantom = $("#phantom");
const $vultisig = $("#vultisig");
const $coinbase = $("#coinbase");
-const $walletConnect = $("#walletConnect");
const $walletConnectV2 = $("#walletConnectV2");
const $keplr = $("#keplr");
const $keyring = $("#keyring");
@@ -212,20 +200,6 @@ $ledgerwebhid.on("click", async (e) => {
$("#keyring select").val(await wallet.getDeviceID());
});
-$portis.on("click", async (e) => {
- e.preventDefault();
- wallet = await portisAdapter.pairDevice();
- window["wallet"] = wallet;
-
- let deviceId = "nothing";
- try {
- deviceId = await wallet.getDeviceID();
- } catch (error) {
- console.error(error);
- }
- $("#keyring select").val(deviceId);
-});
-
$native.on("click", async (e) => {
e.preventDefault();
wallet = await nativeAdapter.pairDevice("testid");
@@ -326,19 +300,6 @@ $keplr.on("click", async (e) => {
}
});
-$walletConnect.on("click", async (e) => {
- e.preventDefault();
- try {
- wallet = await walletConnectAdapter.pairDevice();
- window["wallet"] = wallet;
- let deviceID = "nothing";
- deviceID = await wallet.getDeviceID();
- $("#keyring select").val(deviceID);
- } catch (error) {
- console.error(error);
- }
-});
-
$walletConnectV2.on("click", async (e) => {
e.preventDefault();
try {
@@ -418,12 +379,6 @@ async function deviceConnected(deviceId) {
console.error("Could not initialize LedgerWebHIDAdapter", e);
}
- try {
- await portisAdapter.initialize();
- } catch (e) {
- console.error("Could not initialize PortisAdapter", e);
- }
-
try {
await nativeAdapter.initialize();
} catch (e) {
@@ -460,12 +415,6 @@ async function deviceConnected(deviceId) {
console.error("Could not initialize CoinbaseAdapter", e);
}
- try {
- await walletConnectAdapter.initialize();
- } catch (e) {
- console.error("Could not initialize WalletConnectAdapter", e);
- }
-
try {
await walletConnectV2Adapter.initialize();
} catch (e) {
@@ -731,7 +680,7 @@ $getXpubs.each(function () {
addressNList: hardenedPath,
curve: "secp256k1",
showDisplay: true, // Not supported by TrezorConnect or Ledger, but KeepKey should do it
- coin: portis.isPortis(wallet) ? "Bitcoin" : "Ethereum",
+ coin: "Ethereum",
},
];
diff --git a/integration/src/bitcoin/bitcoin.ts b/integration/src/bitcoin/bitcoin.ts
index 1a38b4a31..5c3011a58 100644
--- a/integration/src/bitcoin/bitcoin.ts
+++ b/integration/src/bitcoin/bitcoin.ts
@@ -3,7 +3,6 @@ import * as ledger from "@shapeshiftoss/hdwallet-ledger";
import * as metamask from "@shapeshiftoss/hdwallet-metamask-multichain";
import * as native from "@shapeshiftoss/hdwallet-native";
import * as phantom from "@shapeshiftoss/hdwallet-phantom";
-import * as portis from "@shapeshiftoss/hdwallet-portis";
import * as trezor from "@shapeshiftoss/hdwallet-trezor";
import * as vultisig from "@shapeshiftoss/hdwallet-vultisig";
@@ -63,7 +62,7 @@ export function bitcoinTests(get: () => { wallet: core.HDWallet; info: core.HDWa
test(
"btcSupportsCoin()",
async () => {
- if (!wallet || portis.isPortis(wallet)) return;
+ if (!wallet) return;
// Non-EVM things are a pain to test with snaps on test env, this wasn't tested before and still isn't
if (metamask.isMetaMask(wallet)) return;
expect(wallet.btcSupportsCoin("Bitcoin")).toBeTruthy();
@@ -75,14 +74,7 @@ export function bitcoinTests(get: () => { wallet: core.HDWallet; info: core.HDWa
test(
"btcSupportsCoin() - Testnet",
async () => {
- if (
- !wallet ||
- portis.isPortis(wallet) ||
- phantom.isPhantom(wallet) ||
- metamask.isMetaMask(wallet) ||
- vultisig.isVultisig(wallet)
- )
- return;
+ if (!wallet || phantom.isPhantom(wallet) || metamask.isMetaMask(wallet) || vultisig.isVultisig(wallet)) return;
expect(wallet.btcSupportsCoin("Testnet")).toBeTruthy();
expect(await info.btcSupportsCoin("Testnet")).toBeTruthy();
},
@@ -94,7 +86,6 @@ export function bitcoinTests(get: () => { wallet: core.HDWallet; info: core.HDWa
!wallet ||
ledger.isLedger(wallet) ||
trezor.isTrezor(wallet) ||
- portis.isPortis(wallet) ||
phantom.isPhantom(wallet) ||
vultisig.isVultisig(wallet)
)
@@ -179,7 +170,7 @@ export function bitcoinTests(get: () => { wallet: core.HDWallet; info: core.HDWa
test(
"btcGetAddress()",
async () => {
- if (!wallet || portis.isPortis(wallet)) return;
+ if (!wallet) return;
await each(
[
[
@@ -249,7 +240,7 @@ export function bitcoinTests(get: () => { wallet: core.HDWallet; info: core.HDWa
test(
"btcSignTx() - p2pkh",
async () => {
- if (!wallet || portis.isPortis(wallet) || phantom.isPhantom(wallet) || metamask.isMetaMask(wallet)) return;
+ if (!wallet || phantom.isPhantom(wallet) || metamask.isMetaMask(wallet)) return;
if (ledger.isLedger(wallet)) return; // FIXME: Expected failure
const tx: core.BitcoinTx = {
version: 1,
@@ -324,7 +315,7 @@ export function bitcoinTests(get: () => { wallet: core.HDWallet; info: core.HDWa
test(
"btcSignTx() - thorchain swap",
async () => {
- if (!wallet || portis.isPortis(wallet) || phantom.isPhantom(wallet) || metamask.isMetaMask(wallet)) return;
+ if (!wallet || phantom.isPhantom(wallet) || metamask.isMetaMask(wallet)) return;
if (ledger.isLedger(wallet)) return; // FIXME: Expected failure
if (trezor.isTrezor(wallet)) return; //TODO: Add trezor support for op return data passed at top level
const tx: core.BitcoinTx = {
@@ -430,13 +421,6 @@ export function bitcoinTests(get: () => { wallet: core.HDWallet; info: core.HDWa
message: "Hello World",
});
- // not implemented on portis
- if (portis.isPortis(wallet)) {
- // eslint-disable-next-line jest/no-conditional-expect
- await expect(res).rejects.toThrowError("not supported");
- return;
- }
-
await expect(res).resolves.toEqual({
address: "1FH6ehAd5ZFXCM1cLGzHxK1s4dGdq1JusM",
signature:
diff --git a/integration/src/bitcoin/testnet.ts b/integration/src/bitcoin/testnet.ts
index 4e21a2d9b..8f1380e72 100644
--- a/integration/src/bitcoin/testnet.ts
+++ b/integration/src/bitcoin/testnet.ts
@@ -1,7 +1,6 @@
import * as core from "@shapeshiftoss/hdwallet-core";
import * as ledger from "@shapeshiftoss/hdwallet-ledger";
import * as metamask from "@shapeshiftoss/hdwallet-metamask-multichain";
-import * as portis from "@shapeshiftoss/hdwallet-portis";
const MNEMONIC12_ALLALL = "all all all all all all all all all all all all";
@@ -32,7 +31,7 @@ export function testnetTests(get: () => { wallet: core.HDWallet; info: core.HDWa
test(
"btcSignTx() - p2sh-p2wpkh",
async () => {
- if (!wallet || portis.isPortis(wallet)) return;
+ if (!wallet) return;
// Non-EVM things are a pain to test with snaps on test env, this wasn't tested before and still isn't
if (metamask.isMetaMask(wallet)) return;
if (ledger.isLedger(wallet)) return; // FIXME: Expected failure
@@ -77,7 +76,7 @@ export function testnetTests(get: () => { wallet: core.HDWallet; info: core.HDWa
);
test("btcSignTx() - p2wpkh", async () => {
- if (!wallet || portis.isPortis(wallet)) return;
+ if (!wallet) return;
// Non-EVM things are a pain to test with snaps on test env, this wasn't tested before and still isn't
if (metamask.isMetaMask(wallet)) return;
if (ledger.isLedger(wallet)) return; // FIXME: Expected failure
diff --git a/integration/src/ethereum/ethereum.ts b/integration/src/ethereum/ethereum.ts
index 93a1dd051..ca4370cfb 100644
--- a/integration/src/ethereum/ethereum.ts
+++ b/integration/src/ethereum/ethereum.ts
@@ -2,7 +2,6 @@ import * as core from "@shapeshiftoss/hdwallet-core";
import { ETHSignTx } from "@shapeshiftoss/hdwallet-core";
import * as ledger from "@shapeshiftoss/hdwallet-ledger";
import * as metamask from "@shapeshiftoss/hdwallet-metamask-multichain";
-import * as portis from "@shapeshiftoss/hdwallet-portis";
import * as trezor from "@shapeshiftoss/hdwallet-trezor";
const MNEMONIC12_NOPIN_NOPASSPHRASE = "alcohol woman abuse must during monitor noble actual mixed trade anger aisle";
@@ -259,7 +258,6 @@ export function ethereumTests(get: () => { wallet: core.HDWallet; info: core.HDW
if (ledger.isLedger(wallet)) return; // FIXME: just test kk and native for now
if (trezor.isTrezor(wallet)) return; // FIXME: just test kk and native for now
- if (portis.isPortis(wallet)) return; // FIXME: just test kk and native for now
const txToSign = {
addressNList: core.bip32ToAddressNList("m/44'/60'/0'/0/0"),
@@ -306,7 +304,6 @@ export function ethereumTests(get: () => { wallet: core.HDWallet; info: core.HDW
if (!wallet) return;
if (ledger.isLedger(wallet)) return; // FIXME: just test kk for now
if (trezor.isTrezor(wallet)) return; // FIXME: just test kk for now
- if (portis.isPortis(wallet)) return; // FIXME: just test kk for now
const txToSign = {
addressNList: core.bip32ToAddressNList("m/44'/60'/0'/0/0"),
diff --git a/integration/src/integration.ts b/integration/src/integration.ts
index a2699ccca..ba3db7a9e 100644
--- a/integration/src/integration.ts
+++ b/integration/src/integration.ts
@@ -4,10 +4,8 @@ import * as ledger from "@shapeshiftoss/hdwallet-ledger";
import * as metamask from "@shapeshiftoss/hdwallet-metamask-multichain";
import * as native from "@shapeshiftoss/hdwallet-native";
import * as phantom from "@shapeshiftoss/hdwallet-phantom";
-import * as portis from "@shapeshiftoss/hdwallet-portis";
import * as trezor from "@shapeshiftoss/hdwallet-trezor";
import * as vultisig from "@shapeshiftoss/hdwallet-vultisig";
-import * as walletconnect from "@shapeshiftoss/hdwallet-walletconnect";
import { binanceTests } from "./binance";
import { btcTests } from "./bitcoin";
@@ -53,10 +51,8 @@ export function integration(suite: WalletSuite): void {
(keepkey.isKeepKey(wallet) ? 1 : 0) +
(trezor.isTrezor(wallet) ? 1 : 0) +
(ledger.isLedger(wallet) ? 1 : 0) +
- (portis.isPortis(wallet) ? 1 : 0) +
(native.isNative(wallet) ? 1 : 0) +
(metamask.isMetaMask(wallet) ? 1 : 0) +
- (walletconnect.isWalletConnect(wallet) ? 1 : 0) +
(phantom.isPhantom(wallet) ? 1 : 0) +
(vultisig.isVultisig(wallet) ? 1 : 0)
).toEqual(1);
diff --git a/integration/src/portis.test.ts b/integration/src/portis.test.ts
deleted file mode 100644
index b1c1d20c1..000000000
--- a/integration/src/portis.test.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import { integration } from "./integration";
-import * as Portis from "./wallets/portis";
-integration(Portis);
diff --git a/integration/src/wallets/portis.ts b/integration/src/wallets/portis.ts
deleted file mode 100644
index 1f5edf58b..000000000
--- a/integration/src/wallets/portis.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import * as core from "@shapeshiftoss/hdwallet-core";
-import * as portis from "@shapeshiftoss/hdwallet-portis";
-
-export function name(): string {
- return "Portis";
-}
-
-const mockPortis = {
- loadDevice: () => Promise.resolve(),
- importWallet: () => Promise.resolve(),
- provider: {},
-};
-
-const mockSignEthTxResponse = {
- tx: {
- r: "0x63db3dd3bf3e1fe7dde1969c0fc8850e34116d0b501c0483a0e08c0f77b8ce0a",
- s: "0x28297d012cccf389f6332415e96ee3fc0bbf8474d05f646e029cd281a031464b",
- v: 38,
- },
- raw: "0xf86b018501dcd650008256229412ec06288edd7ae2cc41a843fe089237fc7354f0872c68af0bb140008026a063db3dd3bf3e1fe7dde1969c0fc8850e34116d0b501c0483a0e08c0f77b8ce0aa028297d012cccf389f6332415e96ee3fc0bbf8474d05f646e029cd281a031464b",
-};
-
-const mockSignERC20TxResponse = {
- tx: {
- r: "0x1238fd332545415f09a01470350a5a20abc784dbf875cf58f7460560e66c597f",
- s: "0x10efa4dd6fdb381c317db8f815252c2ac0d2a883bd364901dee3dec5b7d3660a",
- v: 37,
- },
- raw: "0xf8a20114149441e5560054824ea6b0732e656e3ad64e20e94e4580b844a9059cbb0000000000000000000000001d8ce9022f6284c3a5c317f8f34620107214e54500000000000000000000000000000000000000000000000000000002540be40025a01238fd332545415f09a01470350a5a20abc784dbf875cf58f7460560e66c597fa010efa4dd6fdb381c317db8f815252c2ac0d2a883bd364901dee3dec5b7d3660a",
-};
-
-const mockSignAVAXTxResponse = {
- tx: {
- r: "0x6852b5d760ca9f31098c747c6f8a747ee31ba7b1bca413dbe42805df8fbbb7c8",
- s: "0x38f92d9c8e4d9a806d48b6bb2090c8d76808711cd345cb95f19c1843b334ffab",
- v: 86264,
- },
- raw: "0xf8ac018501dcd6500082562294dafea492d9c6733ae3d56b7ed1adb60692c98bc580b844a9059cbb0000000000000000000000001d8ce9022f6284c3a5c317f8f34620107214e54500000000000000000000000000000000000000000000000000000002540be400830150f8a06852b5d760ca9f31098c747c6f8a747ee31ba7b1bca413dbe42805df8fbbb7c8a038f92d9c8e4d9a806d48b6bb2090c8d76808711cd345cb95f19c1843b334ffab",
-};
-
-export async function createWallet(): Promise {
- const wallet = portis.create(mockPortis as any);
-
- if (!wallet) throw new Error("No Portis wallet found");
-
- // mock web3.eth
- // this feels bad man, would be better to test against a debug verision of Portis should it ever exist
- wallet.web3 = Promise.resolve({
- eth: {
- accounts: {
- recover: async () => "0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8",
- },
- getAccounts: async () => ["0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8"],
- sign: async () =>
- "0x29f7212ecc1c76cea81174af267b67506f754ea8c73f144afa900a0d85b24b21319621aeb062903e856352f38305710190869c3ce5a1425d65ef4fa558d0fc251b",
- signTransaction: async ({ to }: any) => {
- switch (to) {
- case "0x12eC06288EDD7Ae2CC41A843fE089237fC7354F0":
- return mockSignEthTxResponse;
- case "0x41e5560054824ea6b0732e656e3ad64e20e94e45":
- return mockSignERC20TxResponse;
- case "0xDAFEA492D9c6733ae3d56b7Ed1ADB60692c98Bc5":
- return mockSignAVAXTxResponse;
- }
- },
- },
- } as any);
- // end mock
-
- return wallet;
-}
-
-export function createInfo(): core.HDWalletInfo {
- return portis.info();
-}
-
-export function selfTest(get: () => core.HDWallet): void {
- let wallet: portis.PortisHDWallet & core.ETHWallet & core.HDWallet;
-
- beforeAll(() => {
- const w = get();
- if (portis.isPortis(w) && core.supportsETH(w)) {
- wallet = w;
- } else {
- throw new Error("Wallet is not Portis");
- }
- });
-
- it("supports Ethereum mainnet", async () => {
- if (!wallet) return;
- expect(await wallet.ethSupportsNetwork(1)).toEqual(true);
- });
-
- it("prepends portis: to the eth address to create the deviceId", async () => {
- if (!wallet) return;
- expect(await wallet.getDeviceID()).toEqual("portis:0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8");
- });
-
- it("does not support more than one account path", async () => {
- if (!wallet) return;
- const paths = core.mustBeDefined(
- await wallet.ethGetAccountPaths({
- coin: "Ethereum",
- accountIdx: 0,
- })
- );
- expect(paths.length).toEqual(1);
- const nextPath = await wallet.ethNextAccountPath(paths[0]);
- expect(nextPath).toBeUndefined();
- });
-
- it("supports bip44 accounts", () => {
- if (!wallet) return;
- expect(wallet.supportsBip44Accounts()).toEqual(false);
- });
-}
diff --git a/integration/src/wallets/walletconnect.ts b/integration/src/wallets/walletconnect.ts
deleted file mode 100644
index f414c10f6..000000000
--- a/integration/src/wallets/walletconnect.ts
+++ /dev/null
@@ -1,222 +0,0 @@
-import * as core from "@shapeshiftoss/hdwallet-core";
-import * as walletconnect from "@shapeshiftoss/hdwallet-walletconnect";
-
-export function name(): string {
- return "WalletConnect";
-}
-
-export function createInfo(): core.HDWalletInfo {
- return new walletconnect.WalletConnectWalletInfo();
-}
-
-export async function createWallet(): Promise {
- const accounts = [
- "0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8",
- "0x8CB8864f185f14e8d7da0000e4a55a09e4156ff6",
- "0x4e8d2E3d5FDe8CB80A917e258548268734973f23",
- ];
- const provider = {
- request: jest.fn(({ method, params }: any) => {
- switch (method) {
- case "eth_accounts":
- return accounts;
- case "personal_sign": {
- const [message] = params;
-
- if (message === "48656c6c6f20576f726c64")
- return "0x29f7212ecc1c76cea81174af267b67506f754ea8c73f144afa900a0d85b24b21319621aeb062903e856352f38305710190869c3ce5a1425d65ef4fa558d0fc251b";
-
- throw new Error("unknown message");
- }
- case "eth_sendTransaction": {
- const [{ to }] = params;
-
- return `txHash-${to}`;
- }
- default:
- throw new Error(`ethereum: Unkown method ${method}`);
- }
- }),
- bridge: "https://bridge.walletconnect.org",
- qrcode: true,
- qrcodeModal: {},
- qrcodeModalOptions: undefined,
- rpc: null,
- infuraId: "",
- http: null,
- wc: {
- sendTransaction: jest.fn((msg) => {
- const { to } = msg;
- return { hash: `txHash-${to}` };
- }),
- signMessage: jest.fn().mockReturnValue({
- address: "0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8",
- signature:
- "0x29f7212ecc1c76cea81174af267b67506f754ea8c73f144afa900a0d85b24b21319621aeb062903e856352f38305710190869c3ce5a1425d65ef4fa558d0fc251b",
- }),
- }, // connector
- isConnecting: false,
- connected: false,
- connectCallbacks: [],
- rpcUrl: "",
- isWalletConnect: true,
- connector: {
- chainId: 1,
- accounts,
- connected: true,
- on: jest.fn(),
- },
- walletMeta: {
- // wc.peerMeta
- },
- enable: async () => Promise.resolve(accounts),
- send: jest.fn(),
- onConnect: jest.fn(),
- triggerConnect: jest.fn(),
- disconnect: jest.fn(), // alias for close
- close: jest.fn(),
- handleRequest: jest.fn(),
- handleOtherRequests: jest.fn(),
- handleReadRequests: jest.fn(),
- formatResponse: jest.fn(),
- getWalletConnector: jest.fn(),
- subscribeWalletConnector: jest.fn(),
- onDisconnect: jest.fn(),
- updateState: jest.fn(),
- updateRpcUrl: jest.fn(),
- updateHttpConnection: jest.fn(),
- sendAsyncPromise: jest.fn(),
- };
- const wallet = new walletconnect.WalletConnectHDWallet(provider as any);
- await wallet.initialize();
- return wallet;
-}
-
-export function selfTest(get: () => core.HDWallet): void {
- let wallet: walletconnect.WalletConnectHDWallet;
-
- beforeAll(async () => {
- const w = get() as walletconnect.WalletConnectHDWallet;
-
- if (walletconnect.isWalletConnect(w) && !core.supportsBTC(w) && core.supportsETH(w)) {
- wallet = w;
- } else {
- throw new Error("Wallet is not a WalletConnect");
- }
- });
-
- it("supports Ethereum mainnet", async () => {
- if (!wallet) return;
- expect(await wallet.ethSupportsNetwork()).toEqual(true);
- });
-
- it("does not support BTC", async () => {
- if (!wallet) return;
- expect(core.supportsBTC(wallet)).toBe(false);
- });
-
- it("does not support Native ShapeShift", async () => {
- if (!wallet) return;
- expect(wallet.ethSupportsNativeShapeShift()).toEqual(false);
- });
-
- it("does not support EIP1559", async () => {
- if (!wallet) return;
- expect(await wallet.ethSupportsEIP1559()).toEqual(false);
- });
-
- it("does not support Secure Transfer", async () => {
- if (!wallet) return;
- expect(await wallet.ethSupportsSecureTransfer()).toEqual(false);
- });
-
- it("uses correct eth bip44 paths", () => {
- if (!wallet) return;
- [0, 1, 3, 27].forEach((account) => {
- const paths = wallet.ethGetAccountPaths({
- coin: "Ethereum",
- accountIdx: account,
- });
- expect(paths).toEqual([
- {
- addressNList: core.bip32ToAddressNList(`m/44'/60'/${account}'/0/0`),
- hardenedPath: core.bip32ToAddressNList(`m/44'/60'/${account}'`),
- relPath: [0, 0],
- description: "WalletConnect",
- },
- ]);
- paths.forEach((path) => {
- expect(
- wallet.describePath({
- coin: "Ethereum",
- path: path.addressNList,
- }).isKnown
- ).toBeTruthy();
- });
- });
- });
-
- it("can describe ETH paths", () => {
- if (!wallet) return;
- expect(
- wallet.describePath({
- path: core.bip32ToAddressNList("m/44'/60'/0'/0/0"),
- coin: "Ethereum",
- })
- ).toEqual({
- verbose: "Ethereum Account #0",
- coin: "Ethereum",
- isKnown: true,
- isPrefork: false,
- accountIdx: 0,
- wholeAccount: true,
- });
-
- expect(
- wallet.describePath({
- path: core.bip32ToAddressNList("m/44'/60'/3'/0/0"),
- coin: "Ethereum",
- })
- ).toEqual({
- verbose: "Ethereum Account #3",
- coin: "Ethereum",
- isKnown: true,
- isPrefork: false,
- accountIdx: 3,
- wholeAccount: true,
- });
-
- expect(
- wallet.describePath({
- path: core.bip32ToAddressNList("m/44'/60'/0'/0/3"),
- coin: "Ethereum",
- })
- ).toEqual({
- verbose: "m/44'/60'/0'/0/3",
- coin: "Ethereum",
- isKnown: false,
- });
- });
-
- it("should return a valid ETH address", async () => {
- if (!wallet) return;
- expect(await wallet.ethGetAddress()).toEqual("0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8");
- });
-
- it("does not support bip44 accounts", async () => {
- if (!wallet) return;
- expect(wallet.supportsBip44Accounts()).toEqual(false);
- });
-
- it("should sign a message", async () => {
- if (!wallet) return;
- const res = await wallet.ethSignMessage({
- addressNList: core.bip32ToAddressNList("m/44'/60'/0'/0/0"),
- message: "Hello World",
- });
- expect(res?.address).toEqual("0x3f2329C9ADFbcCd9A84f52c906E936A42dA18CB8");
- expect(res?.signature).toEqual(
- "0x29f7212ecc1c76cea81174af267b67506f754ea8c73f144afa900a0d85b24b21319621aeb062903e856352f38305710190869c3ce5a1425d65ef4fa558d0fc251b"
- );
- });
-}
diff --git a/packages/hdwallet-keepkey-chromeusb/.npmignore b/packages/hdwallet-keepkey-chromeusb/.npmignore
deleted file mode 100644
index 1de8e7c00..000000000
--- a/packages/hdwallet-keepkey-chromeusb/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*
-!dist/**
-!package.json
-!yarn.lock
\ No newline at end of file
diff --git a/packages/hdwallet-keepkey-chromeusb/package.json b/packages/hdwallet-keepkey-chromeusb/package.json
deleted file mode 100644
index 18545438d..000000000
--- a/packages/hdwallet-keepkey-chromeusb/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "@shapeshiftoss/hdwallet-keepkey-chromeusb",
- "version": "1.62.11",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "main": "dist/index.js",
- "source": "src/index.ts",
- "types": "dist/index.d.ts",
- "scripts": {
- "build": "tsc --build",
- "clean": "rm -rf dist node_modules",
- "prepublishOnly": "rm -rf dist && yarn build"
- },
- "dependencies": {
- "@shapeshiftoss/hdwallet-core": "1.62.11",
- "@shapeshiftoss/hdwallet-keepkey": "1.62.11"
- }
-}
diff --git a/packages/hdwallet-keepkey-chromeusb/src/adapter.ts b/packages/hdwallet-keepkey-chromeusb/src/adapter.ts
deleted file mode 100644
index cbbdaa9e2..000000000
--- a/packages/hdwallet-keepkey-chromeusb/src/adapter.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import * as keepkey from "@shapeshiftoss/hdwallet-keepkey";
-
-import { TransportDelegate } from "./transport";
-import { assertChromeUSB, chromeUSB, HID_PRODUCT_ID, makePromise, VENDOR_ID, WEBUSB_PRODUCT_ID } from "./utils";
-
-type Device = USBDevice & { serialNumber: string };
-
-export const ChromeUSBAdapterDelegate = {
- async getTransportDelegate(device: Device) {
- return await TransportDelegate.create(device);
- },
- async getDevices(): Promise {
- assertChromeUSB(chromeUSB);
- const devices = (await makePromise(chromeUSB.getDevices, {
- filters: [
- {
- vendorId: VENDOR_ID,
- productId: WEBUSB_PRODUCT_ID,
- },
- {
- vendorId: VENDOR_ID,
- productId: HID_PRODUCT_ID,
- },
- ],
- })) as USBDevice[];
- return devices.filter((d) => d.serialNumber !== undefined) as Device[];
- },
- registerCallbacks(handleConnect: (device: Device) => void, handleDisconnect: (device: Device) => void) {
- assertChromeUSB(chromeUSB);
- chromeUSB.onDeviceAdded.addListener(handleConnect);
- chromeUSB.onDeviceRemoved.addListener(handleDisconnect);
- },
-};
-
-export const Adapter = keepkey.Adapter.fromDelegate(ChromeUSBAdapterDelegate);
-export const ChromeUSBAdapter = Adapter;
diff --git a/packages/hdwallet-keepkey-chromeusb/src/index.ts b/packages/hdwallet-keepkey-chromeusb/src/index.ts
deleted file mode 100644
index c6543547d..000000000
--- a/packages/hdwallet-keepkey-chromeusb/src/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from "./adapter";
-export * from "./transport";
-export * from "./utils";
diff --git a/packages/hdwallet-keepkey-chromeusb/src/transport.ts b/packages/hdwallet-keepkey-chromeusb/src/transport.ts
deleted file mode 100644
index 75f7796e1..000000000
--- a/packages/hdwallet-keepkey-chromeusb/src/transport.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import * as core from "@shapeshiftoss/hdwallet-core";
-import * as keepkey from "@shapeshiftoss/hdwallet-keepkey";
-
-import { assertChromeUSB, chromeUSB, makePromise, VENDOR_ID, WEBUSB_PRODUCT_ID } from "./utils";
-
-export class TransportDelegate implements keepkey.TransportDelegate {
- usbDevice: USBDevice & { serialNumber: string };
- private connectionHandle: any;
-
- constructor(usbDevice: USBDevice & { serialNumber: string }) {
- if (usbDevice.vendorId !== VENDOR_ID) throw new core.WebUSBCouldNotPair("KeepKey", "bad vendor id");
- if (usbDevice.productId !== WEBUSB_PRODUCT_ID) throw new core.FirmwareUpdateRequired("KeepKey", "6.1.0");
- this.usbDevice = usbDevice;
- }
-
- static async create(usbDevice: USBDevice & { serialNumber: string }): Promise {
- if (usbDevice.vendorId !== VENDOR_ID) return null;
- return new TransportDelegate(usbDevice);
- }
-
- async isOpened(): Promise {
- return this.connectionHandle.interface > -1;
- }
-
- async getDeviceID(): Promise {
- return this.usbDevice.serialNumber;
- }
-
- async connect(): Promise {
- assertChromeUSB(chromeUSB);
- if (await this.isOpened()) throw new Error("cannot connect an already-connected connection");
- this.connectionHandle = await makePromise(chromeUSB.openDevice, this.usbDevice);
-
- if (this.connectionHandle.configuration === null)
- await makePromise(chromeUSB.setConfiguration, this.connectionHandle, 1);
- await makePromise(chromeUSB.claimInterface, this.connectionHandle, 0);
- }
-
- async disconnect(): Promise {
- assertChromeUSB(chromeUSB);
- try {
- // If the device is disconnected, this will fail and throw, which is fine.
- chromeUSB.closeDevice(this.connectionHandle);
- } catch (e) {
- console.warn("Disconnect Error (Ignored):", e);
- }
- }
-
- async writeChunk(buffer: Uint8Array): Promise {
- assertChromeUSB(chromeUSB);
- await makePromise(chromeUSB.interruptTransfer, this.connectionHandle, {
- direction: "out",
- endpoint: 1,
- data: core.toArrayBuffer(buffer),
- timeout: 0,
- });
- }
-
- async readChunk(): Promise {
- assertChromeUSB(chromeUSB);
- const { resultCode, data } = await makePromise(chromeUSB.interruptTransfer, this.connectionHandle, {
- direction: "in",
- endpoint: 1,
- length: keepkey.SEGMENT_SIZE + 1,
- timeout: 0,
- });
- console.debug(resultCode, data);
- if (resultCode > 0) throw new Error("Error occured reading chunk");
- return data;
- }
-}
diff --git a/packages/hdwallet-keepkey-chromeusb/src/utils.ts b/packages/hdwallet-keepkey-chromeusb/src/utils.ts
deleted file mode 100644
index 254c0480b..000000000
--- a/packages/hdwallet-keepkey-chromeusb/src/utils.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-export const VENDOR_ID = 0x2b24;
-export const WEBUSB_PRODUCT_ID = 0x0002;
-export const HID_PRODUCT_ID = 0x0001;
-
-export function makePromise(func: (...fnArgs: any) => unknown, ...args: any[]): Promise {
- return new Promise((resolve) => {
- func(...args, resolve);
- });
-}
-
-declare const chrome: any;
-export const chromeUSB = chrome?.["usb"] as unknown;
-export type ChromeUSB = {
- openDevice: any;
- // eslint-disable-next-line @typescript-eslint/ban-types
- onDeviceAdded: { addListener: Function };
- // eslint-disable-next-line @typescript-eslint/ban-types
- onDeviceRemoved: { addListener: Function };
- getDevices: any;
- closeDevice: any;
- setConfiguration: any;
- claimInterface: any;
- interruptTransfer: any;
-};
-
-export function assertChromeUSB(c: any): asserts c is ChromeUSB {
- if (!c)
- throw new Error(
- "ChromeUSB is not available in this process. This package is intended for Chrome apps and extensions."
- );
-}
diff --git a/packages/hdwallet-keepkey-chromeusb/tsconfig.json b/packages/hdwallet-keepkey-chromeusb/tsconfig.json
deleted file mode 100644
index 814387015..000000000
--- a/packages/hdwallet-keepkey-chromeusb/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "rootDir": "src",
- "outDir": "dist",
- "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo",
- },
- "include": ["src/**/*"],
- "exclude": ["node_modules", "dist"],
- "references": [{ "path": "../hdwallet-core" }, { "path": "../hdwallet-keepkey" }]
-}
diff --git a/packages/hdwallet-metamask-multichain/src/bitcoin.ts b/packages/hdwallet-metamask-multichain/src/bitcoin.ts
index 75dc788f5..ddef50b42 100644
--- a/packages/hdwallet-metamask-multichain/src/bitcoin.ts
+++ b/packages/hdwallet-metamask-multichain/src/bitcoin.ts
@@ -15,7 +15,6 @@ export function bitcoinGetAccountPaths(msg: core.BTCGetAccountPaths): Array (await import("@portis/web3")).default);
-
-type PortisWallet = any;
-
-const INACTIVITY_LOGOUT_TIME = 10 * 60 * 1000;
-
-export class PortisAdapter {
- keyring: core.Keyring;
- portis: any;
- portisAppId: string;
-
- /// wallet id to remove from the keyring when the active wallet changes
- currentDeviceId?: string;
-
- private constructor(keyring: core.Keyring, args: { portis?: PortisWallet; portisAppId: string }) {
- this.portis = args.portis;
- this.portisAppId = args.portisAppId;
- this.keyring = keyring;
- }
-
- public static useKeyring(keyring: core.Keyring, args: { portis?: PortisWallet; portisAppId: string }) {
- return new PortisAdapter(keyring, args);
- }
-
- public async initialize(): Promise {
- return Object.keys(this.keyring.wallets).length;
- }
-
- public async pairDevice(): Promise {
- try {
- const wallet = await this.pairPortisDevice();
- this.portis.onActiveWalletChanged(async (wallAddr: string) => {
- // check if currentDeviceId has changed
- const walletAddress = "portis:" + wallAddr;
- if (!this.currentDeviceId || walletAddress.toLowerCase() !== this.currentDeviceId.toLowerCase()) {
- const currentDeviceId = this.currentDeviceId;
- if (currentDeviceId) {
- this.keyring.emit(["Portis", currentDeviceId, core.Events.DISCONNECT], currentDeviceId);
- this.keyring.remove(currentDeviceId);
- }
- this.pairPortisDevice();
- }
- });
- this.portis.onLogout(() => {
- const currentDeviceId = this.currentDeviceId;
- if (!currentDeviceId) return;
- this.keyring.emit(["Portis", currentDeviceId, core.Events.DISCONNECT], currentDeviceId);
- this.keyring.remove(currentDeviceId);
- });
- return wallet;
- } catch (e) {
- if (core.isIndexable(e) && String(e.message).includes("User denied login.")) {
- throw new core.ActionCancelled();
- }
- throw e;
- }
- }
-
- private async pairPortisDevice(): Promise {
- this.portis = new (await Portis)(this.portisAppId, "mainnet");
- const wallet = new PortisHDWallet(this.portis);
- await wallet.initialize();
- const deviceId = await wallet.getDeviceID();
- this.keyring.add(wallet, deviceId);
- this.currentDeviceId = deviceId;
- this.keyring.emit(["Portis", deviceId, core.Events.CONNECT], deviceId);
-
- const watchForInactivity = () => {
- let time: ReturnType;
- const resetTimer = () => {
- clearTimeout(time);
- time = setTimeout(() => {
- window.onload = null;
- document.onmousemove = null;
- document.onkeypress = null;
- clearTimeout(time);
- this.portis.logout();
- }, INACTIVITY_LOGOUT_TIME);
- };
- window.onload = resetTimer;
- document.onmousemove = resetTimer;
- document.onkeypress = resetTimer;
- resetTimer();
- };
-
- watchForInactivity();
- return wallet;
- }
-}
diff --git a/packages/hdwallet-portis/src/bitcoin.ts b/packages/hdwallet-portis/src/bitcoin.ts
deleted file mode 100644
index d9f50927d..000000000
--- a/packages/hdwallet-portis/src/bitcoin.ts
+++ /dev/null
@@ -1,251 +0,0 @@
-import * as bitcoin from "@shapeshiftoss/bitcoinjs-lib";
-import * as core from "@shapeshiftoss/hdwallet-core";
-import Base64 from "base64-js";
-import * as bip32 from "bip32";
-import * as bitcoinMsg from "bitcoinjs-message";
-
-export function describeUTXOPath(
- path: core.BIP32Path,
- coin: core.Coin,
- scriptType?: core.BTCInputScriptType
-): core.PathDescription {
- const pathStr = core.addressNListToBIP32(path);
- const unknown: core.PathDescription = {
- verbose: pathStr,
- coin,
- scriptType,
- isKnown: false,
- };
-
- if (path.length !== 3 && path.length !== 5) return unknown;
-
- if ((path[0] & 0x80000000) >>> 0 !== 0x80000000) return unknown;
-
- const purpose = path[0] & 0x7fffffff;
-
- if (![44, 49, 84].includes(purpose)) return unknown;
-
- if (purpose === 44 && scriptType !== core.BTCInputScriptType.SpendAddress) return unknown;
-
- if (purpose === 49 && scriptType !== core.BTCInputScriptType.SpendP2SHWitness) return unknown;
-
- if (purpose === 84 && scriptType !== core.BTCInputScriptType.SpendWitness) return unknown;
-
- const wholeAccount = path.length === 3;
-
- const script = scriptType
- ? (
- {
- [core.BTCInputScriptType.SpendAddress]: ["Legacy"],
- [core.BTCInputScriptType.SpendP2SHWitness]: [],
- [core.BTCInputScriptType.SpendWitness]: ["Segwit Native"],
- } as Partial>
- )[scriptType] ?? ([] as string[])
- : ([] as string[]);
-
- let isPrefork = false;
- const slip44 = core.slip44ByCoin(coin);
- if (slip44 === undefined) return unknown;
- if (path[1] !== 0x80000000 + slip44) {
- switch (coin) {
- case "BitcoinCash":
- case "BitcoinGold": {
- if (path[1] === 0x80000000 + core.slip44ByCoin("Bitcoin")) {
- isPrefork = true;
- break;
- }
- return unknown;
- }
- case "BitcoinSV": {
- if (
- path[1] === 0x80000000 + core.slip44ByCoin("Bitcoin") ||
- path[1] === 0x80000000 + core.slip44ByCoin("BitcoinCash")
- ) {
- isPrefork = true;
- break;
- }
- return unknown;
- }
- default:
- return unknown;
- }
- }
-
- let attributes = isPrefork ? ["Prefork"] : [];
- switch (coin) {
- case "Bitcoin":
- case "Litecoin":
- case "BitcoinGold":
- case "Testnet": {
- attributes = attributes.concat(script);
- break;
- }
- default:
- break;
- }
-
- const attr = attributes.length ? ` (${attributes.join(", ")})` : "";
-
- const accountIdx = path[2] & 0x7fffffff;
-
- if (wholeAccount) {
- return {
- coin,
- verbose: `${coin} Account #${accountIdx}${attr}`,
- accountIdx,
- wholeAccount: true,
- isKnown: true,
- scriptType,
- isPrefork,
- };
- } else {
- const change = path[3] === 1 ? "Change " : "";
- const addressIdx = path[4];
- return {
- coin,
- verbose: `${coin} Account #${accountIdx}, ${change}Address #${addressIdx}${attr}`,
- accountIdx,
- addressIdx,
- wholeAccount: false,
- isKnown: true,
- isChange: path[3] === 1,
- scriptType,
- isPrefork,
- };
- }
-}
-
-export function verifyScriptTypePurpose(scriptType: core.BTCInputScriptType, purpose: number): boolean {
- return (
- (purpose === 0x80000000 + 44 && scriptType === core.BTCInputScriptType.SpendAddress) ||
- (purpose === 0x80000000 + 49 && scriptType === core.BTCInputScriptType.SpendP2SHWitness) ||
- (purpose === 0x80000000 + 84 && scriptType === core.BTCInputScriptType.SpendWitness)
- );
-}
-
-export async function btcGetAddress(msg: core.BTCGetAddress, portis: any): Promise {
- if (!msg.addressNList.length) throw new Error("Empty addressNList");
-
- const scriptType = msg.scriptType;
- const purpose = msg.addressNList[0];
-
- const hardPath = core.hardenedPath(msg.addressNList);
- const hardPathString = core.addressNListToBIP32(hardPath);
-
- const { result: xpub } = await portis.getExtendedPublicKey(hardPathString, "Bitcoin");
-
- const relPath = core.relativePath(msg.addressNList);
- const relPathString = core.addressNListToBIP32(relPath).substr(2);
-
- const args = { pubkey: bip32.fromBase58(xpub).derivePath(relPathString).publicKey };
-
- let result: bitcoin.payments.Payment;
- switch (scriptType) {
- case core.BTCInputScriptType.SpendAddress:
- result = bitcoin.payments.p2pkh(args);
- break;
- case core.BTCInputScriptType.SpendWitness:
- result = bitcoin.payments.p2wpkh(args);
- break;
- case core.BTCInputScriptType.SpendP2SHWitness:
- result = bitcoin.payments.p2sh({
- redeem: bitcoin.payments.p2wpkh(args),
- });
- break;
- default:
- throw new Error(`Unsupported scriptType ${scriptType}`);
- }
-
- if (msg.showDisplay === true) {
- if (!verifyScriptTypePurpose(scriptType, purpose)) {
- throw new Error(`Invalid scriptType ${scriptType} for purpose ${purpose}`);
- }
-
- portis.showBitcoinWallet(core.addressNListToBIP32(msg.addressNList));
- }
-
- return core.mustBeDefined(result.address);
-}
-
-export function legacyAccount(coin: core.Coin, slip44: number, accountIdx: number): core.BTCAccountPath {
- return {
- coin,
- scriptType: core.BTCInputScriptType.SpendAddress,
- addressNList: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + accountIdx],
- };
-}
-
-export function segwitAccount(coin: core.Coin, slip44: number, accountIdx: number): core.BTCAccountPath {
- return {
- coin,
- scriptType: core.BTCInputScriptType.SpendP2SHWitness,
- addressNList: [0x80000000 + 49, 0x80000000 + slip44, 0x80000000 + accountIdx],
- };
-}
-
-export function segwitNativeAccount(coin: core.Coin, slip44: number, accountIdx: number): core.BTCAccountPath {
- return {
- coin,
- scriptType: core.BTCInputScriptType.SpendWitness,
- addressNList: [0x80000000 + 84, 0x80000000 + slip44, 0x80000000 + accountIdx],
- };
-}
-
-// eslint-disable-next-line @typescript-eslint/no-unused-vars
-export function btcNextAccountPath(msg: core.BTCAccountPath): core.BTCAccountPath | undefined {
- return undefined;
-}
-
-export function btcGetAccountPaths(msg: core.BTCGetAccountPaths): Array {
- const slip44 = core.slip44ByCoin(msg.coin);
- if (slip44 == undefined) return [];
- const bip44 = legacyAccount(msg.coin, slip44, msg.accountIdx);
- const bip49 = segwitAccount(msg.coin, slip44, msg.accountIdx);
- const bip84 = segwitNativeAccount(msg.coin, slip44, msg.accountIdx);
-
- let paths: Array =
- (
- {
- Bitcoin: [bip44, bip49, bip84],
- } as Partial>
- )[msg.coin] || [];
-
- if (msg.scriptType !== undefined)
- paths = paths.filter((path) => {
- return path.scriptType === msg.scriptType;
- });
-
- return paths;
-}
-
-export async function btcSupportsScriptType(coin: core.Coin, scriptType?: core.BTCInputScriptType): Promise {
- if (coin !== "Bitcoin") return Promise.resolve(false);
-
- switch (scriptType) {
- case core.BTCInputScriptType.SpendAddress:
- case core.BTCInputScriptType.SpendWitness:
- case core.BTCInputScriptType.SpendP2SHWitness:
- return true;
- default:
- return false;
- }
-}
-
-export async function btcSupportsCoin(coin: core.Coin): Promise {
- if (coin === "Bitcoin") return true;
- else return false;
-}
-
-export async function btcSignTx(msg: core.BTCSignTx, portis: any): Promise {
- const { result } = await portis.signBitcoinTransaction(msg);
- return {
- // TODO: parse signatures out of serializedTx
- signatures: core.untouchable("not implemented"),
- serializedTx: result.serializedTx,
- };
-}
-
-export async function btcVerifyMessage(msg: core.BTCVerifyMessage): Promise {
- const signature = Base64.fromByteArray(core.fromHexString(msg.signature));
- return bitcoinMsg.verify(msg.message, msg.address, signature);
-}
diff --git a/packages/hdwallet-portis/src/ethereum.ts b/packages/hdwallet-portis/src/ethereum.ts
deleted file mode 100644
index 449adbe22..000000000
--- a/packages/hdwallet-portis/src/ethereum.ts
+++ /dev/null
@@ -1,81 +0,0 @@
-import * as core from "@shapeshiftoss/hdwallet-core";
-import { isHexString } from "ethers/lib/utils";
-
-export function describeETHPath(path: core.BIP32Path): core.PathDescription {
- const pathStr = core.addressNListToBIP32(path);
- const unknown: core.PathDescription = {
- verbose: pathStr,
- coin: "Ethereum",
- isKnown: false,
- };
-
- if (path.length !== 5) return unknown;
-
- if (path[0] !== 0x80000000 + 44) return unknown;
-
- if (path[1] !== 0x80000000 + core.slip44ByCoin("Ethereum")) return unknown;
-
- if ((path[2] & 0x80000000) >>> 0 !== 0x80000000) return unknown;
-
- if (path[3] !== 0) return unknown;
-
- if (path[4] !== 0) return unknown;
-
- const index = path[2] & 0x7fffffff;
- return {
- verbose: `Ethereum Account #${index}`,
- accountIdx: index,
- wholeAccount: true,
- coin: "Ethereum",
- isKnown: true,
- };
-}
-
-export async function ethVerifyMessage(msg: core.ETHVerifyMessage, web3: any): Promise {
- const signingAddress = await web3.eth.accounts.recover(msg.message, "0x" + msg.signature, false);
- return signingAddress === msg.address;
-}
-
-export function ethGetAccountPaths(msg: core.ETHGetAccountPath): Array {
- const slip44 = core.slip44ByCoin(msg.coin);
- if (slip44 === undefined) return [];
- return [
- {
- addressNList: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + msg.accountIdx, 0, 0],
- hardenedPath: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + msg.accountIdx],
- relPath: [0, 0],
- description: "Portis",
- },
- ];
-}
-
-export async function ethSignTx(msg: core.ETHSignTx, web3: any, from: string): Promise {
- const result = await web3.eth.signTransaction({
- from,
- to: msg.to,
- value: msg.value,
- gas: msg.gasLimit,
- gasPrice: msg.gasPrice,
- data: msg.data,
- nonce: msg.nonce,
- });
- return {
- v: result.tx.v,
- r: result.tx.r,
- s: result.tx.s,
- serialized: result.raw,
- };
-}
-
-export async function ethSignMessage(
- msg: core.ETHSignMessage,
- web3: any,
- address: string
-): Promise {
- if (!isHexString(msg.message)) throw new Error("data is not an hex string");
- const result = await web3.eth.sign(msg.message, address);
- return {
- address,
- signature: result,
- };
-}
diff --git a/packages/hdwallet-portis/src/index.ts b/packages/hdwallet-portis/src/index.ts
deleted file mode 100644
index 460df96a7..000000000
--- a/packages/hdwallet-portis/src/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from "./adapter";
-export * from "./portis";
diff --git a/packages/hdwallet-portis/src/portis.ts b/packages/hdwallet-portis/src/portis.ts
deleted file mode 100644
index 2b7f9c3aa..000000000
--- a/packages/hdwallet-portis/src/portis.ts
+++ /dev/null
@@ -1,402 +0,0 @@
-import Portis from "@portis/web3";
-import { Address } from "@shapeshiftoss/hdwallet-core";
-import * as core from "@shapeshiftoss/hdwallet-core";
-import isObject from "lodash/isObject";
-import PLazy from "p-lazy";
-import type Web3 from "web3";
-
-import * as btc from "./bitcoin";
-import * as eth from "./ethereum";
-
-const web3 = PLazy.from(async () => (await import("web3")).default);
-
-export function isPortis(wallet: core.HDWallet): wallet is PortisHDWallet {
- return isObject(wallet) && (wallet as any)._isPortis;
-}
-
-type HasNonTrivialConstructor = T extends { new (): any } ? never : T;
-export type Portis = InstanceType>;
-
-export class PortisHDWalletInfo implements core.HDWalletInfo, core.ETHWalletInfo, core.BTCWalletInfo {
- readonly _supportsBTCInfo = true;
- readonly _supportsETHInfo = true;
-
- public getVendor(): string {
- return "Portis";
- }
-
- public hasOnDevicePinEntry(): boolean {
- return true;
- }
-
- public hasOnDevicePassphrase(): boolean {
- return true;
- }
-
- public hasOnDeviceDisplay(): boolean {
- return true;
- }
-
- public hasOnDeviceRecovery(): boolean {
- return true;
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public hasNativeShapeShift(srcCoin: core.Coin, dstCoin: core.Coin): boolean {
- return false;
- }
-
- public supportsBip44Accounts(): boolean {
- return false;
- }
-
- public supportsOfflineSigning(): boolean {
- return true;
- }
-
- public supportsBroadcast(): boolean {
- return false;
- }
-
- public describePath(msg: core.DescribePath): core.PathDescription {
- switch (msg.coin) {
- case "Ethereum":
- return eth.describeETHPath(msg.path);
- case "Bitcoin":
- return btc.describeUTXOPath(msg.path, msg.coin, msg.scriptType);
- default:
- throw new Error("Unsupported path");
- }
- }
-
- public async btcSupportsCoin(coin: core.Coin): Promise {
- return btc.btcSupportsCoin(coin);
- }
-
- public async btcSupportsScriptType(coin: core.Coin, scriptType: core.BTCInputScriptType): Promise {
- return btc.btcSupportsScriptType(coin, scriptType);
- }
-
- public async btcSupportsSecureTransfer(): Promise {
- return false;
- }
-
- public btcSupportsNativeShapeShift(): boolean {
- return false;
- }
-
- public btcGetAccountPaths(msg: core.BTCGetAccountPaths): Array {
- return btc.btcGetAccountPaths(msg);
- }
-
- public btcNextAccountPath(msg: core.BTCAccountPath): core.BTCAccountPath | undefined {
- return btc.btcNextAccountPath(msg);
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public ethNextAccountPath(msg: core.ETHAccountPath): core.ETHAccountPath | undefined {
- // Portis only supports one account for eth
- return undefined;
- }
-
- public async ethSupportsNetwork(chainId = 1): Promise {
- return chainId === 1;
- }
-
- public async ethSupportsSecureTransfer(): Promise {
- return false;
- }
-
- public ethSupportsNativeShapeShift(): boolean {
- return false;
- }
-
- public async ethSupportsEIP1559(): Promise {
- return false;
- }
-
- public ethGetAccountPaths(msg: core.ETHGetAccountPath): Array {
- return eth.ethGetAccountPaths(msg);
- }
-}
-
-export class PortisHDWallet implements core.HDWallet, core.ETHWallet, core.BTCWallet {
- readonly _supportsETH = true;
- readonly _supportsETHInfo = true;
- readonly _supportsEthSwitchChain = false;
- readonly _supportsAvalanche = false;
- readonly _supportsOptimism = false;
- readonly _supportsBSC = false;
- readonly _supportsPolygon = false;
- readonly _supportsGnosis = false;
- readonly _supportsArbitrum = false;
- readonly _supportsArbitrumNova = false;
- readonly _supportsBase = false;
- readonly _supportsBTCInfo = true;
- readonly _supportsBTC = true;
- readonly _isPortis = true;
-
- portis: Portis;
- web3: Promise;
- info: PortisHDWalletInfo & core.HDWalletInfo;
- ethAddress?: Address;
-
- // used as a mutex to ensure calls to portis.getExtendedPublicKey cannot happen before a previous call has resolved
- protected portisCallInProgress: Promise = Promise.resolve();
-
- constructor(portis: Portis) {
- this.portis = portis;
- this.web3 = (async () => {
- return new (await web3)(portis.provider);
- })();
- this.info = new PortisHDWalletInfo();
- }
-
- async getFeatures(): Promise> {
- return {};
- }
-
- public async isLocked(): Promise {
- return false;
- }
-
- public getVendor(): string {
- return "Portis";
- }
-
- public async getModel(): Promise {
- return "portis";
- }
-
- public async getLabel(): Promise {
- return "Portis";
- }
-
- public async initialize(): Promise {
- // no means to reset the state of the Portis widget
- // while it's in the middle of execution
- }
-
- public hasOnDevicePinEntry(): boolean {
- return this.info.hasOnDevicePinEntry();
- }
-
- public hasOnDevicePassphrase(): boolean {
- return this.info.hasOnDevicePassphrase();
- }
-
- public hasOnDeviceDisplay(): boolean {
- return this.info.hasOnDeviceDisplay();
- }
-
- public hasOnDeviceRecovery(): boolean {
- return this.info.hasOnDeviceRecovery();
- }
-
- public hasNativeShapeShift(srcCoin: core.Coin, dstCoin: core.Coin): boolean {
- return this.info.hasNativeShapeShift(srcCoin, dstCoin);
- }
-
- public supportsBip44Accounts(): boolean {
- return this.info.supportsBip44Accounts();
- }
-
- public supportsOfflineSigning(): boolean {
- return true;
- }
-
- public supportsBroadcast(): boolean {
- return false;
- }
-
- public async clearSession(): Promise {
- await this.portis.logout();
- }
-
- public async ping(msg: core.Ping): Promise {
- // no ping function for Portis, so just returning Core.Pong
- return { msg: msg.msg };
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendPin(pin: string): Promise {
- // no concept of pin in Portis
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendPassphrase(passphrase: string): Promise {
- // cannot send passphrase to Portis. Could show the widget?
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendCharacter(charater: string): Promise {
- // no concept of sendCharacter in Portis
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendWord(word: string): Promise {
- // no concept of sendWord in Portis
- }
-
- public async cancel(): Promise {
- // no concept of cancel in Portis
- }
-
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- public async wipe(): Promise {}
-
- // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars
- public async reset(msg: core.ResetDevice): Promise {}
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async recover(msg: core.RecoverDevice): Promise {
- // no concept of recover in Portis
- }
-
- public loadDevice(msg: core.LoadDevice): Promise {
- return this.portis.importWallet(msg.mnemonic);
- }
-
- public describePath(msg: core.DescribePath): core.PathDescription {
- return this.info.describePath(msg);
- }
-
- public async getPublicKeys(msg: Array): Promise> {
- const publicKeys: { xpub: string }[] = [];
- const out = this.portisCallInProgress.then(async () => {
- for (let i = 0; i < msg.length; i++) {
- const { addressNList } = msg[i];
- const bitcoinSlip44 = 0x80000000 + core.slip44ByCoin("Bitcoin");
- // TODO we really shouldnt be every using the "bitcoin" string parameter but is here for now to make it work with their btc address on their portis wallet.
- const portisResult: { error: string; result: string } = await this.portis.getExtendedPublicKey(
- core.addressNListToBIP32(addressNList),
- addressNList[1] === bitcoinSlip44 ? "Bitcoin" : ""
- );
- const { result, error } = portisResult;
- if (error) throw error;
- publicKeys.push({ xpub: result });
- }
- return publicKeys;
- });
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- this.portisCallInProgress = out.then(() => {});
- return out;
- }
-
- public async isInitialized(): Promise {
- return true;
- }
-
- // eslint-disable-next-line @typescript-eslint/no-empty-function
- public async disconnect(): Promise {}
-
- public async btcGetAddress(msg: core.BTCGetAddress): Promise {
- return btc.btcGetAddress(msg, this.portis);
- }
-
- public async btcSignTx(msg: core.BTCSignTx): Promise {
- return btc.btcSignTx(msg, this.portis);
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async btcSignMessage(msg: core.BTCSignMessage): Promise {
- // portis doesnt support this for btc
- throw new Error("not supported");
- }
-
- public async btcVerifyMessage(msg: core.BTCVerifyMessage): Promise {
- return btc.btcVerifyMessage(msg);
- }
-
- public async btcSupportsCoin(coin: core.Coin): Promise {
- return this.info.btcSupportsCoin(coin);
- }
-
- public async btcSupportsScriptType(coin: core.Coin, scriptType: core.BTCInputScriptType): Promise {
- return this.info.btcSupportsScriptType(coin, scriptType);
- }
-
- public async btcSupportsSecureTransfer(): Promise {
- return this.info.btcSupportsSecureTransfer();
- }
-
- public btcSupportsNativeShapeShift(): boolean {
- return this.info.btcSupportsNativeShapeShift();
- }
-
- public btcGetAccountPaths(msg: core.BTCGetAccountPaths): Array {
- return this.info.btcGetAccountPaths(msg);
- }
-
- public btcNextAccountPath(msg: core.BTCAccountPath): core.BTCAccountPath | undefined {
- return this.info.btcNextAccountPath(msg);
- }
-
- public async ethSupportsNetwork(chainId = 1): Promise {
- return this.info.ethSupportsNetwork(chainId);
- }
-
- public async ethSupportsSecureTransfer(): Promise {
- return this.info.ethSupportsSecureTransfer();
- }
-
- public ethSupportsNativeShapeShift(): boolean {
- return this.info.ethSupportsNativeShapeShift();
- }
-
- public async ethSupportsEIP1559(): Promise {
- return await this.info.ethSupportsEIP1559();
- }
-
- public async ethVerifyMessage(msg: core.ETHVerifyMessage): Promise {
- return eth.ethVerifyMessage(msg, await this.web3);
- }
-
- public ethNextAccountPath(msg: core.ETHAccountPath): core.ETHAccountPath | undefined {
- // Portis only supports one account for eth
- return this.info.ethNextAccountPath(msg);
- }
-
- public async ethSignTx(msg: core.ETHSignTx): Promise {
- return eth.ethSignTx(msg, await this.web3, await this._ethGetAddress());
- }
-
- public async ethSignMessage(msg: core.ETHSignMessage): Promise {
- return eth.ethSignMessage(msg, await this.web3, await this._ethGetAddress());
- }
-
- public ethGetAccountPaths(msg: core.ETHGetAccountPath): Array {
- return this.info.ethGetAccountPaths(msg);
- }
-
- public async ethGetAddress(msg: core.ETHGetAddress): Promise {
- if (msg.showDisplay === true) {
- this.portis.showPortis();
- }
- return this._ethGetAddress();
- }
-
- public async getDeviceID(): Promise {
- return "portis:" + (await this._ethGetAddress());
- }
-
- public async getFirmwareVersion(): Promise {
- return "portis";
- }
-
- public async _ethGetAddress(): Promise {
- if (this.ethAddress) return this.ethAddress;
-
- const out = (await (await this.web3).eth.getAccounts())[0] as Address;
- this.ethAddress = out;
- return out;
- }
-}
-
-export function info() {
- return new PortisHDWalletInfo();
-}
-
-export function create(portis: Portis): PortisHDWallet {
- return new PortisHDWallet(portis);
-}
diff --git a/packages/hdwallet-portis/tsconfig.json b/packages/hdwallet-portis/tsconfig.json
deleted file mode 100644
index 1e38099c0..000000000
--- a/packages/hdwallet-portis/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "rootDir": "src",
- "outDir": "dist",
- "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo",
- },
- "include": ["src/**/*"],
- "exclude": ["node_modules", "dist"],
- "references": [{ "path": "../hdwallet-core" }]
-}
diff --git a/packages/hdwallet-walletconnect/package.json b/packages/hdwallet-walletconnect/package.json
deleted file mode 100644
index 5738b4d91..000000000
--- a/packages/hdwallet-walletconnect/package.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
- "name": "@shapeshiftoss/hdwallet-walletconnect",
- "version": "1.62.11",
- "license": "MIT",
- "publishConfig": {
- "access": "public"
- },
- "main": "dist/index.js",
- "source": "src/index.ts",
- "types": "dist/index.d.ts",
- "scripts": {
- "build": "tsc --build",
- "clean": "rm -rf dist node_modules",
- "dev": "yarn tsc --build --watch",
- "prepublishOnly": "rm -rf dist && yarn build"
- },
- "dependencies": {
- "@shapeshiftoss/hdwallet-core": "1.62.11",
- "@walletconnect/qrcode-modal": "^1.7.8",
- "@walletconnect/web3-provider": "^1.7.8",
- "ethers": "^5.6.5"
- }
-}
diff --git a/packages/hdwallet-walletconnect/src/adapter.ts b/packages/hdwallet-walletconnect/src/adapter.ts
deleted file mode 100644
index 797c88585..000000000
--- a/packages/hdwallet-walletconnect/src/adapter.ts
+++ /dev/null
@@ -1,48 +0,0 @@
-import { Events, Keyring } from "@shapeshiftoss/hdwallet-core";
-import WalletConnectProvider from "@walletconnect/web3-provider";
-
-import { WalletConnectHDWallet } from "./walletconnect";
-
-export type WalletConnectProviderConfig =
- | {
- infuraId: string;
- }
- | { rpc: { [key: number]: string } };
-
-export class WalletConnectAdapter {
- keyring: Keyring;
- private providerConfig: WalletConnectProviderConfig;
-
- private constructor(keyring: Keyring, config: WalletConnectProviderConfig) {
- this.keyring = keyring;
- this.providerConfig = config;
- }
-
- public static useKeyring(keyring: Keyring, config: WalletConnectProviderConfig) {
- return new WalletConnectAdapter(keyring, config);
- }
-
- public async initialize(): Promise {
- return Object.keys(this.keyring.wallets).length;
- }
-
- public async pairDevice(): Promise {
- try {
- if (!this.providerConfig) {
- throw new Error("WalletConnect provider configuration not set.");
- }
- const provider = new WalletConnectProvider(this.providerConfig);
- const wallet = new WalletConnectHDWallet(provider);
-
- // Enable session (triggers QR Code modal)
- await wallet.initialize();
- const deviceID = await wallet.getDeviceID();
- this.keyring.add(wallet, deviceID);
- this.keyring.emit(["WalletConnect", deviceID, Events.CONNECT], deviceID);
- return wallet;
- } catch (error) {
- console.error("Could not pair WalletConnect");
- throw error;
- }
- }
-}
diff --git a/packages/hdwallet-walletconnect/src/ethereum.ts b/packages/hdwallet-walletconnect/src/ethereum.ts
deleted file mode 100644
index 74ec9eeb8..000000000
--- a/packages/hdwallet-walletconnect/src/ethereum.ts
+++ /dev/null
@@ -1,76 +0,0 @@
-import * as core from "@shapeshiftoss/hdwallet-core";
-import { Address } from "@shapeshiftoss/hdwallet-core";
-import type { Bytes } from "ethers";
-import { isHexString } from "ethers/lib/utils";
-
-export function describeETHPath(path: core.BIP32Path): core.PathDescription {
- const pathStr = core.addressNListToBIP32(path);
- const unknown: core.PathDescription = {
- verbose: pathStr,
- coin: "Ethereum",
- isKnown: false,
- };
-
- if (path.length !== 5) return unknown;
-
- if (path[0] !== 0x80000000 + 44) return unknown;
-
- if (path[1] !== 0x80000000 + core.slip44ByCoin("Ethereum")) return unknown;
-
- if ((path[2] & 0x80000000) >>> 0 !== 0x80000000) return unknown;
-
- if (path[3] !== 0) return unknown;
-
- if (path[4] !== 0) return unknown;
-
- const index = path[2] & 0x7fffffff;
- return {
- verbose: `Ethereum Account #${index}`,
- accountIdx: index,
- wholeAccount: true,
- coin: "Ethereum",
- isKnown: true,
- };
-}
-
-export async function ethSignTx(
- args: core.ETHSignTx & { from: Address | null },
- provider: any
-): Promise {
- return await provider.wc.signTransaction(args);
-}
-
-export async function ethSendTx(
- args: core.ETHSignTx & { from: Address | null },
- provider: any
-): Promise {
- const txHash: string = await provider.wc.sendTransaction(args);
- return txHash
- ? {
- hash: txHash,
- }
- : null;
-}
-
-export async function ethSignMessage(
- args: { data: string | Bytes; fromAddress: Address | null },
- provider: any
-): Promise {
- if (!isHexString(args.data)) throw new Error("data is not an hex string");
- return await provider.wc.signMessage([args.data, args.fromAddress]);
-}
-
-export async function ethGetAddress(provider: any): Promise {
- try {
- if (!(provider && provider.request && provider.connected)) {
- throw new Error("No WalletConnect provider available.");
- }
- const ethAccounts = await provider.request({
- method: "eth_accounts",
- });
- return ethAccounts[0];
- } catch (error) {
- console.error(error);
- return null;
- }
-}
diff --git a/packages/hdwallet-walletconnect/src/index.ts b/packages/hdwallet-walletconnect/src/index.ts
deleted file mode 100644
index caab58802..000000000
--- a/packages/hdwallet-walletconnect/src/index.ts
+++ /dev/null
@@ -1,2 +0,0 @@
-export * from "./adapter";
-export * from "./walletconnect";
diff --git a/packages/hdwallet-walletconnect/src/walletconnect.ts b/packages/hdwallet-walletconnect/src/walletconnect.ts
deleted file mode 100644
index ea163a80c..000000000
--- a/packages/hdwallet-walletconnect/src/walletconnect.ts
+++ /dev/null
@@ -1,412 +0,0 @@
-import * as core from "@shapeshiftoss/hdwallet-core";
-import { Address } from "@shapeshiftoss/hdwallet-core";
-import WalletConnectProvider from "@walletconnect/web3-provider";
-import isObject from "lodash/isObject";
-
-import * as eth from "./ethereum";
-
-interface WCState {
- connected?: boolean;
- chainId: number;
- accounts: string[];
- address: Address | null;
-}
-
-export function isWalletConnect(wallet: core.HDWallet): wallet is WalletConnectHDWallet {
- return isObject(wallet) && (wallet as any)._isWalletConnect;
-}
-
-/**
- * WalletConnect Wallet Info
- *
- * Supported JSON-RPC API Methods:
- * - personal_sign
- * - eth_sign
- * - eth_signTypedData
- * - eth_sendTransaction
- * - eth_signTransaction
- * 🚧 eth_sendRawTransaction
- * @see https://docs.walletconnect.com/
- */
-export class WalletConnectWalletInfo implements core.HDWalletInfo, core.ETHWalletInfo {
- readonly _supportsETHInfo = true;
- readonly _supportsBTCInfo = false;
- public getVendor(): string {
- return "WalletConnect";
- }
-
- public hasOnDevicePinEntry(): boolean {
- return false;
- }
-
- public hasOnDevicePassphrase(): boolean {
- return false;
- }
-
- public hasOnDeviceDisplay(): boolean {
- return false;
- }
-
- public hasOnDeviceRecovery(): boolean {
- return false;
- }
-
- public hasNativeShapeShift(): boolean {
- return false;
- }
-
- public supportsBip44Accounts(): boolean {
- return false;
- }
-
- public supportsOfflineSigning(): boolean {
- return false;
- }
-
- public supportsBroadcast(): boolean {
- return true;
- }
-
- public describePath(msg: core.DescribePath): core.PathDescription {
- switch (msg.coin) {
- case "Ethereum":
- return eth.describeETHPath(msg.path);
- default:
- throw new Error("Unsupported path");
- }
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public ethNextAccountPath(_msg: core.ETHAccountPath): core.ETHAccountPath | undefined {
- return undefined;
- }
-
- public async ethSupportsNetwork(chainId = 1): Promise {
- return chainId === 1;
- }
-
- public async ethSupportsSecureTransfer(): Promise {
- return false;
- }
-
- public ethSupportsNativeShapeShift(): boolean {
- return false;
- }
-
- public async ethSupportsEIP1559(): Promise {
- return false;
- }
-
- public ethGetAccountPaths(msg: core.ETHGetAccountPath): Array {
- const slip44 = core.slip44ByCoin(msg.coin);
- if (slip44 === undefined) return [];
- return [
- {
- addressNList: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + msg.accountIdx, 0, 0],
- hardenedPath: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + msg.accountIdx],
- relPath: [0, 0],
- description: "WalletConnect",
- },
- ];
- }
-}
-
-export class WalletConnectHDWallet implements core.HDWallet, core.ETHWallet {
- readonly _supportsETH = true;
- readonly _supportsETHInfo = true;
- readonly _supportsBTCInfo = false;
- readonly _supportsBTC = false;
- readonly _isWalletConnect = true;
- readonly _supportsEthSwitchChain = false;
- readonly _supportsAvalanche = false;
- readonly _supportsOptimism = false;
- readonly _supportsBSC = false;
- readonly _supportsPolygon = false;
- readonly _supportsGnosis = false;
- readonly _supportsArbitrum = false;
- readonly _supportsArbitrumNova = false;
- readonly _supportsBase = false;
-
- info: WalletConnectWalletInfo & core.HDWalletInfo;
- provider: WalletConnectProvider;
- connected = false;
- chainId = -1;
- accounts: string[] = [];
- ethAddress: Address | null = null;
-
- constructor(provider: WalletConnectProvider) {
- this.provider = provider;
- this.info = new WalletConnectWalletInfo();
- }
-
- async getFeatures(): Promise> {
- return {};
- }
-
- public async isLocked(): Promise {
- return false;
- }
-
- public getVendor(): string {
- return "WalletConnect";
- }
-
- public async getModel(): Promise {
- return "WalletConnect";
- }
-
- public async getLabel(): Promise {
- return "WalletConnect";
- }
-
- public async initialize(): Promise {
- /** Subscribe to EIP-1193 events */
- this.provider.connector.on("session_update", async (error, payload) => {
- if (error) {
- throw error;
- }
-
- const { chainId, accounts } = payload.params[0];
- this.onSessionUpdate(accounts, chainId);
- });
-
- /** Note that this event does not fire on page reload */
- this.provider.connector.on("connect", (error, payload) => {
- if (error) {
- throw error;
- }
-
- this.onConnect(payload);
- });
-
- this.provider.connector.on("disconnect", (error) => {
- if (error) {
- throw error;
- }
- this.onDisconnect();
- });
-
- /** Display QR modal to connect */
- await this.provider.enable();
- }
-
- public hasOnDevicePinEntry(): boolean {
- return this.info.hasOnDevicePinEntry();
- }
-
- public hasOnDevicePassphrase(): boolean {
- return this.info.hasOnDevicePassphrase();
- }
-
- public hasOnDeviceDisplay(): boolean {
- return this.info.hasOnDeviceDisplay();
- }
-
- public hasOnDeviceRecovery(): boolean {
- return this.info.hasOnDeviceRecovery();
- }
-
- public hasNativeShapeShift(srcCoin: core.Coin, dstCoin: core.Coin): boolean {
- return this.info.hasNativeShapeShift(srcCoin, dstCoin);
- }
-
- public supportsBip44Accounts(): boolean {
- return this.info.supportsBip44Accounts();
- }
-
- /**
- * Supports Offline Signing
- *
- * Offline signing is supported when `signTransaction` does not broadcast
- * the tx message. WalletConnect's core Connector implementation always
- * makes a request, so offline signing is not supported.
- * @see https://github.com/WalletConnect/walletconnect-monorepo/blob/7573fa9e1d91588d4af3409159b4fd2f9448a0e2/packages/clients/core/src/index.ts#L630
- */
- public supportsOfflineSigning(): boolean {
- return false;
- }
-
- public supportsBroadcast(): boolean {
- return true;
- }
-
- public async clearSession(): Promise {
- await this.disconnect();
- }
-
- public async ping(msg: core.Ping): Promise {
- // ping function for Wallet Connect?
- return { msg: msg.msg };
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendPin(_pin: string): Promise {
- // no concept of pin in WalletConnect
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendPassphrase(_passphrase: string): Promise {
- // cannot send passphrase. Could show the widget?
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendCharacter(_character: string): Promise {
- // no concept of sendCharacter
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async sendWord(_word: string): Promise {
- // no concept of sendWord
- }
-
- public async cancel(): Promise {
- // no concept of cancel
- }
-
- public async wipe(): Promise {
- return;
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async reset(_msg: core.ResetDevice): Promise {
- // no concept of reset
- return;
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async recover(_msg: core.RecoverDevice): Promise {
- // no concept of recover
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async loadDevice(_msg: core.LoadDevice): Promise {
- return;
- }
-
- public describePath(msg: core.DescribePath): core.PathDescription {
- return this.info.describePath(msg);
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async getPublicKeys(_msg: Array): Promise> {
- // Ethereum public keys are not exposed by the RPC API
- return [];
- }
-
- public async isInitialized(): Promise {
- return true;
- }
-
- public async disconnect(): Promise {
- await this.provider.disconnect();
- }
-
- public async ethSupportsNetwork(chainId = 1): Promise {
- return chainId === 1;
- }
-
- public async ethSupportsSecureTransfer(): Promise {
- return false;
- }
-
- public ethSupportsNativeShapeShift(): boolean {
- return false;
- }
-
- public async ethSupportsEIP1559(): Promise {
- return false;
- }
-
- public ethGetAccountPaths(msg: core.ETHGetAccountPath): Array {
- return this.info.ethGetAccountPaths(msg);
- }
-
- public ethNextAccountPath(msg: core.ETHAccountPath): core.ETHAccountPath | undefined {
- return this.info.ethNextAccountPath(msg);
- }
-
- public async ethGetAddress(): Promise {
- if (this.ethAddress) {
- return this.ethAddress;
- }
- const address = await eth.ethGetAddress(this.provider);
- if (address) {
- this.ethAddress = address;
- return address;
- } else {
- this.ethAddress = null;
- return null;
- }
- }
-
- /**
- * Ethereum Signed Transaction
- *
- * @see https://docs.walletconnect.com/client-api#sign-transaction-eth_signtransaction
- */
- public async ethSignTx(msg: core.ETHSignTx): Promise {
- return eth.ethSignTx({ ...msg, from: this.ethAddress }, this.provider);
- }
-
- /**
- * Ethereum Send Transaction
- *
- * @see https://docs.walletconnect.com/client-api#send-transaction-eth_sendtransaction
- */
- public async ethSendTx(msg: core.ETHSignTx): Promise {
- return eth.ethSendTx({ ...msg, from: this.ethAddress }, this.provider);
- }
-
- /**
- * Ethereum Sign Message
- *
- * @see https://docs.walletconnect.com/client-api#sign-message-eth_sign
- */
- public async ethSignMessage(msg: core.ETHSignMessage): Promise {
- return eth.ethSignMessage({ data: msg.message, fromAddress: this.ethAddress }, this.provider);
- }
-
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- public async ethVerifyMessage(msg: core.ETHVerifyMessage): Promise {
- console.error("Method ethVerifyMessage unsupported for WalletConnect wallet!");
- return null;
- }
-
- public async getDeviceID(): Promise {
- return "wc:" + (await this.ethGetAddress());
- }
-
- public async getFirmwareVersion(): Promise {
- return "WalletConnect";
- }
-
- private onConnect(payload: any) {
- const { accounts, chainId } = payload.params[0];
- const [address] = accounts;
- this.setState({ connected: true, chainId, accounts, address });
- }
-
- private onSessionUpdate(accounts: Address[], chainId: number) {
- const [address] = accounts;
- this.setState({ accounts, address, chainId });
- }
-
- /**
- * onDisconnect
- *
- * Resets state.
- */
- private onDisconnect() {
- this.setState({ connected: false, chainId: 1, accounts: [], address: null });
- }
-
- private setState(config: WCState) {
- const { connected, chainId, accounts, address } = config;
- if (connected !== undefined) {
- this.connected = connected;
- }
- this.chainId = chainId;
- this.accounts = accounts;
- this.ethAddress = address;
- }
-}
diff --git a/packages/hdwallet-walletconnect/tsconfig.json b/packages/hdwallet-walletconnect/tsconfig.json
deleted file mode 100644
index 892289ced..000000000
--- a/packages/hdwallet-walletconnect/tsconfig.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "extends": "../../tsconfig.json",
- "compilerOptions": {
- "rootDir": "src",
- "outDir": "dist",
- "tsBuildInfoFile": "./dist/tsconfig.tsbuildinfo",
- },
- "include": ["src/**/*"],
- "exclude": ["node_modules", "dist"],
- "references": [{ "path": "../hdwallet-core" }]
-}
\ No newline at end of file
diff --git a/packages/hdwallet-walletconnectV2/package.json b/packages/hdwallet-walletconnectv2/package.json
similarity index 100%
rename from packages/hdwallet-walletconnectV2/package.json
rename to packages/hdwallet-walletconnectv2/package.json
diff --git a/packages/hdwallet-walletconnectV2/src/adapter.ts b/packages/hdwallet-walletconnectv2/src/adapter.ts
similarity index 88%
rename from packages/hdwallet-walletconnectV2/src/adapter.ts
rename to packages/hdwallet-walletconnectv2/src/adapter.ts
index 6f15c5c02..63c381121 100644
--- a/packages/hdwallet-walletconnectV2/src/adapter.ts
+++ b/packages/hdwallet-walletconnectv2/src/adapter.ts
@@ -1,6 +1,5 @@
import { Events, Keyring } from "@shapeshiftoss/hdwallet-core";
-import { EthereumProvider } from "@walletconnect/ethereum-provider";
-import { EthereumProviderOptions } from "@walletconnect/ethereum-provider/dist/types/EthereumProvider";
+import { EthereumProvider, EthereumProviderOptions } from "@walletconnect/ethereum-provider";
import { WalletConnectV2HDWallet } from "./walletconnectV2";
diff --git a/packages/hdwallet-walletconnectV2/src/ethereum.ts b/packages/hdwallet-walletconnectv2/src/ethereum.ts
similarity index 100%
rename from packages/hdwallet-walletconnectV2/src/ethereum.ts
rename to packages/hdwallet-walletconnectv2/src/ethereum.ts
diff --git a/packages/hdwallet-walletconnectV2/src/index.ts b/packages/hdwallet-walletconnectv2/src/index.ts
similarity index 100%
rename from packages/hdwallet-walletconnectV2/src/index.ts
rename to packages/hdwallet-walletconnectv2/src/index.ts
diff --git a/packages/hdwallet-walletconnectV2/src/walletconnectV2.ts b/packages/hdwallet-walletconnectv2/src/walletconnectV2.ts
similarity index 100%
rename from packages/hdwallet-walletconnectV2/src/walletconnectV2.ts
rename to packages/hdwallet-walletconnectv2/src/walletconnectV2.ts
diff --git a/packages/hdwallet-walletconnectV2/tsconfig.json b/packages/hdwallet-walletconnectv2/tsconfig.json
similarity index 100%
rename from packages/hdwallet-walletconnectV2/tsconfig.json
rename to packages/hdwallet-walletconnectv2/tsconfig.json
diff --git a/tsconfig.json b/tsconfig.json
index 7d410cf28..4d1ca5a6d 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -34,7 +34,6 @@
{ "path": "./integration" },
{ "path": "./packages/hdwallet-core" },
{ "path": "./packages/hdwallet-keepkey" },
- { "path": "./packages/hdwallet-keepkey-chromeusb" },
{ "path": "./packages/hdwallet-keepkey-electron" },
{ "path": "./packages/hdwallet-keepkey-nodehid" },
{ "path": "./packages/hdwallet-keepkey-nodewebusb" },
@@ -45,11 +44,8 @@
{ "path": "./packages/hdwallet-ledger-webusb" },
{ "path": "./packages/hdwallet-metamask-multichain" },
{ "path": "./packages/hdwallet-native" },
- { "path": "./packages/hdwallet-portis" },
{ "path": "./packages/hdwallet-trezor" },
- { "path": "./packages/hdwallet-trezor-connect" },
- { "path": "./packages/hdwallet-walletconnect" },
- { "path": "./packages/hdwallet-walletconnectV2" },
+ { "path": "./packages/hdwallet-walletconnectv2" },
{ "path": "./packages/hdwallet-keplr" },
{ "path": "./packages/hdwallet-coinbase" },
{ "path": "./packages/hdwallet-phantom" },
diff --git a/yarn.lock b/yarn.lock
index c4f887b5d..2e005b937 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -28,11 +28,25 @@
"@babel/highlight" "^7.24.7"
picocolors "^1.0.0"
-"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.2":
+"@babel/code-frame@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
+ integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
+ dependencies:
+ "@babel/helper-validator-identifier" "^7.27.1"
+ js-tokens "^4.0.0"
+ picocolors "^1.1.1"
+
+"@babel/compat-data@^7.25.2":
version "7.25.4"
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.4.tgz#7d2a80ce229890edcf4cc259d4d696cb4dae2fcb"
integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==
+"@babel/compat-data@^7.27.2", "@babel/compat-data@^7.27.7":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.5.tgz#a8a4962e1567121ac0b3b487f52107443b455c7f"
+ integrity sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==
+
"@babel/core@^7.1.0", "@babel/core@^7.12.3", "@babel/core@^7.18.6", "@babel/core@^7.7.5":
version "7.25.2"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.2.tgz#ed8eec275118d7613e77a352894cd12ded8eba77"
@@ -64,7 +78,18 @@
"@jridgewell/trace-mapping" "^0.3.25"
jsesc "^2.5.1"
-"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.2":
+"@babel/generator@^7.28.5":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.5.tgz#712722d5e50f44d07bc7ac9fe84438742dd61298"
+ integrity sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==
+ dependencies:
+ "@babel/parser" "^7.28.5"
+ "@babel/types" "^7.28.5"
+ "@jridgewell/gen-mapping" "^0.3.12"
+ "@jridgewell/trace-mapping" "^0.3.28"
+ jsesc "^3.0.2"
+
+"@babel/helper-compilation-targets@^7.25.2":
version "7.25.2"
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c"
integrity sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==
@@ -75,16 +100,32 @@
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-define-polyfill-provider@^0.6.2":
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d"
- integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==
+"@babel/helper-compilation-targets@^7.27.2":
+ version "7.27.2"
+ resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d"
+ integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==
dependencies:
- "@babel/helper-compilation-targets" "^7.22.6"
- "@babel/helper-plugin-utils" "^7.22.5"
- debug "^4.1.1"
+ "@babel/compat-data" "^7.27.2"
+ "@babel/helper-validator-option" "^7.27.1"
+ browserslist "^4.24.0"
+ lru-cache "^5.1.1"
+ semver "^6.3.1"
+
+"@babel/helper-define-polyfill-provider@^0.6.5":
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz#742ccf1cb003c07b48859fc9fa2c1bbe40e5f753"
+ integrity sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==
+ dependencies:
+ "@babel/helper-compilation-targets" "^7.27.2"
+ "@babel/helper-plugin-utils" "^7.27.1"
+ debug "^4.4.1"
lodash.debounce "^4.0.8"
- resolve "^1.14.2"
+ resolve "^1.22.10"
+
+"@babel/helper-globals@^7.28.0":
+ version "7.28.0"
+ resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674"
+ integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==
"@babel/helper-module-imports@^7.24.7":
version "7.24.7"
@@ -94,6 +135,14 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
+"@babel/helper-module-imports@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
+ integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
+ dependencies:
+ "@babel/traverse" "^7.27.1"
+ "@babel/types" "^7.27.1"
+
"@babel/helper-module-transforms@^7.25.2":
version "7.25.2"
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz#ee713c29768100f2776edf04d4eb23b8d27a66e6"
@@ -104,11 +153,16 @@
"@babel/helper-validator-identifier" "^7.24.7"
"@babel/traverse" "^7.25.2"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0":
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0":
version "7.24.8"
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878"
integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==
+"@babel/helper-plugin-utils@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
+ integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
+
"@babel/helper-simple-access@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz#bcade8da3aec8ed16b9c4953b74e506b51b5edb3"
@@ -122,16 +176,31 @@
resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d"
integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==
+"@babel/helper-string-parser@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
+ integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
+
"@babel/helper-validator-identifier@^7.24.7":
version "7.24.7"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db"
integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==
+"@babel/helper-validator-identifier@^7.27.1", "@babel/helper-validator-identifier@^7.28.5":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz#010b6938fab7cb7df74aa2bbc06aa503b8fe5fb4"
+ integrity sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==
+
"@babel/helper-validator-option@^7.24.8":
version "7.24.8"
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d"
integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==
+"@babel/helper-validator-option@^7.27.1":
+ version "7.27.1"
+ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
+ integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
+
"@babel/helpers@^7.25.0":
version "7.25.6"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.6.tgz#57ee60141829ba2e102f30711ffe3afab357cc60"
@@ -157,6 +226,13 @@
dependencies:
"@babel/types" "^7.25.6"
+"@babel/parser@^7.27.2", "@babel/parser@^7.28.5":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.5.tgz#0b0225ee90362f030efd644e8034c99468893b08"
+ integrity sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==
+ dependencies:
+ "@babel/types" "^7.28.5"
+
"@babel/plugin-syntax-async-generators@^7.8.4":
version "7.8.4"
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d"
@@ -263,24 +339,29 @@
"@babel/helper-plugin-utils" "^7.14.5"
"@babel/plugin-transform-runtime@^7.5.5":
- version "7.25.4"
- resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz#96e4ad7bfbbe0b4a7b7e6f2a533ca326cf204963"
- integrity sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==
- dependencies:
- "@babel/helper-module-imports" "^7.24.7"
- "@babel/helper-plugin-utils" "^7.24.8"
- babel-plugin-polyfill-corejs2 "^0.4.10"
- babel-plugin-polyfill-corejs3 "^0.10.6"
- babel-plugin-polyfill-regenerator "^0.6.1"
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.28.5.tgz#ae3e21fbefe2831ebac04dfa6b463691696afe17"
+ integrity sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==
+ dependencies:
+ "@babel/helper-module-imports" "^7.27.1"
+ "@babel/helper-plugin-utils" "^7.27.1"
+ babel-plugin-polyfill-corejs2 "^0.4.14"
+ babel-plugin-polyfill-corejs3 "^0.13.0"
+ babel-plugin-polyfill-regenerator "^0.6.5"
semver "^6.3.1"
-"@babel/runtime@^7.19.0", "@babel/runtime@^7.25.0", "@babel/runtime@^7.5.5":
+"@babel/runtime@^7.19.0", "@babel/runtime@^7.25.0":
version "7.25.6"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.6.tgz#9afc3289f7184d8d7f98b099884c26317b9264d2"
integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==
dependencies:
regenerator-runtime "^0.14.0"
+"@babel/runtime@^7.5.5":
+ version "7.28.4"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.28.4.tgz#a70226016fabe25c5783b2f22d3e1c9bc5ca3326"
+ integrity sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==
+
"@babel/template@^7.25.0", "@babel/template@^7.3.3":
version "7.25.0"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.0.tgz#e733dc3134b4fede528c15bc95e89cb98c52592a"
@@ -290,6 +371,15 @@
"@babel/parser" "^7.25.0"
"@babel/types" "^7.25.0"
+"@babel/template@^7.27.2":
+ version "7.27.2"
+ resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d"
+ integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==
+ dependencies:
+ "@babel/code-frame" "^7.27.1"
+ "@babel/parser" "^7.27.2"
+ "@babel/types" "^7.27.1"
+
"@babel/traverse@^7.1.0", "@babel/traverse@^7.24.7", "@babel/traverse@^7.25.2":
version "7.25.6"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.6.tgz#04fad980e444f182ecf1520504941940a90fea41"
@@ -303,6 +393,19 @@
debug "^4.3.1"
globals "^11.1.0"
+"@babel/traverse@^7.27.1":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.5.tgz#450cab9135d21a7a2ca9d2d35aa05c20e68c360b"
+ integrity sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==
+ dependencies:
+ "@babel/code-frame" "^7.27.1"
+ "@babel/generator" "^7.28.5"
+ "@babel/helper-globals" "^7.28.0"
+ "@babel/parser" "^7.28.5"
+ "@babel/template" "^7.27.2"
+ "@babel/types" "^7.28.5"
+ debug "^4.3.1"
+
"@babel/types@^7.0.0", "@babel/types@^7.18.7", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.6", "@babel/types@^7.3.3":
version "7.25.6"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6"
@@ -312,6 +415,14 @@
"@babel/helper-validator-identifier" "^7.24.7"
to-fast-properties "^2.0.0"
+"@babel/types@^7.27.1", "@babel/types@^7.28.5":
+ version "7.28.5"
+ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.5.tgz#10fc405f60897c35f07e85493c932c7b5ca0592b"
+ integrity sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==
+ dependencies:
+ "@babel/helper-string-parser" "^7.27.1"
+ "@babel/helper-validator-identifier" "^7.28.5"
+
"@bcoe/v8-coverage@^0.2.3":
version "0.2.3"
resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39"
@@ -1601,6 +1712,14 @@
"@types/yargs" "^15.0.0"
chalk "^4.0.0"
+"@jridgewell/gen-mapping@^0.3.12":
+ version "0.3.13"
+ resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f"
+ integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
+ dependencies:
+ "@jridgewell/sourcemap-codec" "^1.5.0"
+ "@jridgewell/trace-mapping" "^0.3.24"
+
"@jridgewell/gen-mapping@^0.3.5":
version "0.3.5"
resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
@@ -1641,6 +1760,14 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@jridgewell/trace-mapping@^0.3.28":
+ version "0.3.31"
+ resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0"
+ integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.1.0"
+ "@jridgewell/sourcemap-codec" "^1.4.14"
+
"@keepkey/device-protocol@7.13.4":
version "7.13.4"
resolved "https://registry.yarnpkg.com/@keepkey/device-protocol/-/device-protocol-7.13.4.tgz#e62259273303d14a8ea4d3e813bbd82e4c5ac7c6"
@@ -3015,6 +3142,11 @@
"@types/set-cookie-parser" "^2.4.0"
set-cookie-parser "^2.4.6"
+"@noble/ciphers@1.2.0":
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.2.0.tgz#a7858e18eb620f6b2a327a7f0e647b6a78fd0727"
+ integrity sha512-YGdEUzYEd+82jeaVbSKKVp1jFZb8LwaNMIIzHFkihGvYdd/KKAr7KaJHdEdSYGredE3ssSravXIa0Jxg28Sv5w==
+
"@noble/ciphers@1.2.1":
version "1.2.1"
resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.2.1.tgz#3812b72c057a28b44ff0ad4aff5ca846e5b9cdc9"
@@ -4013,6 +4145,31 @@
rxjs "^6.4.0"
type-assertions "^1.1.0"
+"@shapeshiftoss/hdwallet-portis@1.62.11":
+ version "1.62.11"
+ resolved "https://registry.yarnpkg.com/@shapeshiftoss/hdwallet-portis/-/hdwallet-portis-1.62.11.tgz#37f159e01186389ade54907cfb7540f5504abccc"
+ integrity sha512-br5rxOIY6bxYH/xXhf0L0rdbrfV0YljFkWjcH190JweOc21/lmGAJYwsJVlcz7GxEOOtzj1xKyTW2azKqtW7QA==
+ dependencies:
+ "@portis/web3" "3.0.10"
+ "@shapeshiftoss/bitcoinjs-lib" "7.0.0-shapeshift.0"
+ "@shapeshiftoss/hdwallet-core" "1.62.11"
+ base64-js "^1.5.1"
+ bip32 "^2.0.4"
+ bitcoinjs-message "^2.1.0"
+ lodash "^4.17.15"
+ p-lazy "^3.1.0"
+ web3 "^1.5.1"
+
+"@shapeshiftoss/hdwallet-walletconnect@1.62.11":
+ version "1.62.11"
+ resolved "https://registry.yarnpkg.com/@shapeshiftoss/hdwallet-walletconnect/-/hdwallet-walletconnect-1.62.11.tgz#9e30897ca00a7f4bff8ea2ce7b964ba1a1914822"
+ integrity sha512-kEgRzPJXZyp+8Lg2uSSqLRpffM0qiTIBTbDXWKYmmuPrECFATaN9gleF3D1JDQUGhp2QjeDI9HYmnHEc3CUN+w==
+ dependencies:
+ "@shapeshiftoss/hdwallet-core" "1.62.11"
+ "@walletconnect/qrcode-modal" "^1.7.8"
+ "@walletconnect/web3-provider" "^1.7.8"
+ ethers "^5.6.5"
+
"@shapeshiftoss/logger@^1.1.2", "@shapeshiftoss/logger@^1.1.3":
version "1.1.3"
resolved "https://registry.yarnpkg.com/@shapeshiftoss/logger/-/logger-1.1.3.tgz#ff05765775351c8adc99cf747f14b5619311e023"
@@ -5715,15 +5872,15 @@
"@walletconnect/utils" "^1.8.0"
"@walletconnect/crypto@^1.0.2":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.0.3.tgz#7b8dd4d7e2884fe3543c7c07aea425eef5ef9dd4"
- integrity sha512-+2jdORD7XQs76I2Odgr3wwrtyuLUXD/kprNVsjWRhhhdO9Mt6WqVzOPu0/t7OHSmgal8k7SoBQzUc5hu/8zL/g==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@walletconnect/crypto/-/crypto-1.1.0.tgz#a05850a128953a549f803fe2ab5a9045a284b9bb"
+ integrity sha512-yZO8BBTQt7BcaemjDgwN56OmSv0OO4QjIpvtfj5OxZfL6IQZQWHOhwC6pJg+BmZPbDlJlWFqFuCZRtiPwRmsoA==
dependencies:
+ "@noble/ciphers" "1.2.0"
+ "@noble/hashes" "1.7.0"
"@walletconnect/encoding" "^1.0.2"
"@walletconnect/environment" "^1.0.1"
"@walletconnect/randombytes" "^1.0.3"
- aes-js "^3.1.2"
- hash.js "^1.1.7"
tslib "1.14.1"
"@walletconnect/encoding@^1.0.1", "@walletconnect/encoding@^1.0.2":
@@ -5901,13 +6058,13 @@
qrcode "1.4.4"
"@walletconnect/randombytes@^1.0.3":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.0.3.tgz#e795e4918367fd1e6a2215e075e64ab93e23985b"
- integrity sha512-35lpzxcHFbTN3ABefC9W+uBpNZl1GC4Wpx0ed30gibfO/y9oLdy1NznbV96HARQKSBV9J9M/rrtIvf6a23jfYw==
+ version "1.1.0"
+ resolved "https://registry.yarnpkg.com/@walletconnect/randombytes/-/randombytes-1.1.0.tgz#a492478d937f9caca28afb330f8130caabfae7dc"
+ integrity sha512-X+LO/9ClnXX2Q/1+u83qMnohVaxC4qsXByM/gMSwGMrUObxEiqEWS+b9Upg9oNl6mTr85dTCRF8W17KVcKKXQw==
dependencies:
+ "@noble/hashes" "1.7.0"
"@walletconnect/encoding" "^1.0.2"
"@walletconnect/environment" "^1.0.1"
- randombytes "^2.1.0"
tslib "1.14.1"
"@walletconnect/relay-api@1.0.11":
@@ -6799,29 +6956,29 @@ babel-plugin-jest-hoist@^26.6.2:
"@types/babel__core" "^7.0.0"
"@types/babel__traverse" "^7.0.6"
-babel-plugin-polyfill-corejs2@^0.4.10:
- version "0.4.11"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33"
- integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==
+babel-plugin-polyfill-corejs2@^0.4.14:
+ version "0.4.14"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz#8101b82b769c568835611542488d463395c2ef8f"
+ integrity sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==
dependencies:
- "@babel/compat-data" "^7.22.6"
- "@babel/helper-define-polyfill-provider" "^0.6.2"
+ "@babel/compat-data" "^7.27.7"
+ "@babel/helper-define-polyfill-provider" "^0.6.5"
semver "^6.3.1"
-babel-plugin-polyfill-corejs3@^0.10.6:
- version "0.10.6"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7"
- integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==
+babel-plugin-polyfill-corejs3@^0.13.0:
+ version "0.13.0"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz#bb7f6aeef7addff17f7602a08a6d19a128c30164"
+ integrity sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.2"
- core-js-compat "^3.38.0"
+ "@babel/helper-define-polyfill-provider" "^0.6.5"
+ core-js-compat "^3.43.0"
-babel-plugin-polyfill-regenerator@^0.6.1:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e"
- integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==
+babel-plugin-polyfill-regenerator@^0.6.5:
+ version "0.6.5"
+ resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz#32752e38ab6f6767b92650347bf26a31b16ae8c5"
+ integrity sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==
dependencies:
- "@babel/helper-define-polyfill-provider" "^0.6.2"
+ "@babel/helper-define-polyfill-provider" "^0.6.5"
babel-preset-current-node-syntax@^1.0.0:
version "1.1.0"
@@ -6937,6 +7094,11 @@ base@^0.11.1:
mixin-deep "^1.2.0"
pascalcase "^0.1.1"
+baseline-browser-mapping@^2.8.25:
+ version "2.8.31"
+ resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.8.31.tgz#16c0f1814638257932e0486dbfdbb3348d0a5710"
+ integrity sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==
+
bchaddrjs@^0.4.4, bchaddrjs@^0.4.9:
version "0.4.9"
resolved "https://registry.yarnpkg.com/bchaddrjs/-/bchaddrjs-0.4.9.tgz#c17036bf5bab31bfbb9f3cec432c7c578f0faf46"
@@ -7391,7 +7553,7 @@ browserify-zlib@^0.2.0:
dependencies:
pako "~1.0.5"
-browserslist@^4.23.1, browserslist@^4.23.3:
+browserslist@^4.23.1:
version "4.23.3"
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800"
integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
@@ -7401,6 +7563,17 @@ browserslist@^4.23.1, browserslist@^4.23.3:
node-releases "^2.0.18"
update-browserslist-db "^1.1.0"
+browserslist@^4.24.0, browserslist@^4.28.0:
+ version "4.28.0"
+ resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.0.tgz#9cefece0a386a17a3cd3d22ebf67b9deca1b5929"
+ integrity sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==
+ dependencies:
+ baseline-browser-mapping "^2.8.25"
+ caniuse-lite "^1.0.30001754"
+ electron-to-chromium "^1.5.249"
+ node-releases "^2.0.27"
+ update-browserslist-db "^1.1.4"
+
bs-logger@0.x:
version "0.2.6"
resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8"
@@ -7722,6 +7895,11 @@ caniuse-lite@^1.0.30001646:
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz#31218de3463fabb44d0b7607b652e56edf2e2355"
integrity sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==
+caniuse-lite@^1.0.30001754:
+ version "1.0.30001757"
+ resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001757.tgz#a46ff91449c69522a462996c6aac4ef95d7ccc5e"
+ integrity sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==
+
capture-exit@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4"
@@ -8387,12 +8565,12 @@ copy-to-clipboard@^3.3.1:
dependencies:
toggle-selection "^1.0.6"
-core-js-compat@^3.38.0:
- version "3.38.1"
- resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09"
- integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==
+core-js-compat@^3.43.0:
+ version "3.47.0"
+ resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.47.0.tgz#698224bbdbb6f2e3f39decdda4147b161e3772a3"
+ integrity sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==
dependencies:
- browserslist "^4.23.3"
+ browserslist "^4.28.0"
core-js@^2.4.0:
version "2.6.12"
@@ -8696,6 +8874,13 @@ debug@=3.1.0:
dependencies:
ms "2.0.0"
+debug@^4.4.1:
+ version "4.4.3"
+ resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
+ integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
+ dependencies:
+ ms "^2.1.3"
+
debuglog@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492"
@@ -9132,6 +9317,11 @@ ejs@^3.1.7:
dependencies:
jake "^10.8.5"
+electron-to-chromium@^1.5.249:
+ version "1.5.260"
+ resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.260.tgz#73f555d3e9b9fd16ff48fc406bbad84efa9b86c7"
+ integrity sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==
+
electron-to-chromium@^1.5.4:
version "1.5.19"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.19.tgz#aeaa0a076f3f0f0e8db2c57fd10158508f00725a"
@@ -9498,7 +9688,7 @@ esbuild@^0.21.3:
"@esbuild/win32-ia32" "0.21.5"
"@esbuild/win32-x64" "0.21.5"
-escalade@^3.1.1, escalade@^3.1.2:
+escalade@^3.1.1, escalade@^3.1.2, escalade@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
@@ -11874,6 +12064,13 @@ is-core-module@^2.13.0, is-core-module@^2.5.0, is-core-module@^2.8.1:
dependencies:
hasown "^2.0.2"
+is-core-module@^2.16.1:
+ version "2.16.1"
+ resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4"
+ integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==
+ dependencies:
+ hasown "^2.0.2"
+
is-data-descriptor@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb"
@@ -12925,6 +13122,11 @@ jsesc@^2.5.1:
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4"
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
+jsesc@^3.0.2:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d"
+ integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
+
json-buffer@3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898"
@@ -12996,11 +13198,12 @@ json-stable-stringify-without-jsonify@^1.0.1:
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
json-stable-stringify@^1.0.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz#52d4361b47d49168bcc4e564189a42e5a7439454"
- integrity sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==
+ version "1.3.0"
+ resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.3.0.tgz#8903cfac42ea1a0f97f35d63a4ce0518f0cc6a70"
+ integrity sha512-qtYiSSFlwot9XHtF9bD9c7rwKjr+RecWT//ZnPvSmEjpV5mmPOCN4j8UjY5hbjNkOwZ/jQv3J6R1/pL7RwgMsg==
dependencies:
- call-bind "^1.0.5"
+ call-bind "^1.0.8"
+ call-bound "^1.0.4"
isarray "^2.0.5"
jsonify "^0.0.1"
object-keys "^1.1.1"
@@ -14187,11 +14390,16 @@ mute-stream@0.0.8, mute-stream@~0.0.4:
resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d"
integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==
-nan@^2.13.2, nan@^2.14.0, nan@^2.2.1:
+nan@^2.13.2, nan@^2.14.0:
version "2.20.0"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.20.0.tgz#08c5ea813dd54ed16e5bd6505bf42af4f7838ca3"
integrity sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==
+nan@^2.2.1:
+ version "2.23.1"
+ resolved "https://registry.yarnpkg.com/nan/-/nan-2.23.1.tgz#6f86a31dd87e3d1eb77512bf4b9e14c8aded3975"
+ integrity sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==
+
nano-json-stream-parser@^0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz#0cc8f6d0e2b622b479c40d499c46d64b755c6f5f"
@@ -14365,6 +14573,11 @@ node-releases@^2.0.18:
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f"
integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==
+node-releases@^2.0.27:
+ version "2.0.27"
+ resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.27.tgz#eedca519205cf20f650f61d56b070db111231e4e"
+ integrity sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==
+
node-request-interceptor@^0.6.3:
version "0.6.3"
resolved "https://registry.yarnpkg.com/node-request-interceptor/-/node-request-interceptor-0.6.3.tgz#f2f0dbec2d421584419dd39ff6782ce1e02b42a7"
@@ -15283,6 +15496,11 @@ picocolors@^1.0.0, picocolors@^1.0.1:
resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59"
integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==
+picocolors@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
+ integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
+
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
@@ -16204,7 +16422,7 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
-resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18.1:
+resolve@^1.1.6, resolve@^1.10.0, resolve@^1.17.0, resolve@^1.18.1:
version "1.22.8"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
@@ -16213,6 +16431,15 @@ resolve@^1.1.6, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.18
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
+resolve@^1.22.10:
+ version "1.22.11"
+ resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.11.tgz#aad857ce1ffb8bfa9b0b1ac29f1156383f68c262"
+ integrity sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==
+ dependencies:
+ is-core-module "^2.16.1"
+ path-parse "^1.0.7"
+ supports-preserve-symlinks-flag "^1.0.0"
+
responselike@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7"
@@ -18261,6 +18488,14 @@ update-browserslist-db@^1.1.0:
escalade "^3.1.2"
picocolors "^1.0.1"
+update-browserslist-db@^1.1.4:
+ version "1.1.4"
+ resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz#7802aa2ae91477f255b86e0e46dbc787a206ad4a"
+ integrity sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==
+ dependencies:
+ escalade "^3.2.0"
+ picocolors "^1.1.1"
+
update-check@1.5.4:
version "1.5.4"
resolved "https://registry.yarnpkg.com/update-check/-/update-check-1.5.4.tgz#5b508e259558f1ad7dbc8b4b0457d4c9d28c8743"