diff --git a/examples/sandbox/package.json b/examples/sandbox/package.json index d1d23411a..349cd31d0 100644 --- a/examples/sandbox/package.json +++ b/examples/sandbox/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-sandbox", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "private": true, "browserslist": "> 0.5%, last 2 versions, not dead", @@ -12,25 +12,25 @@ "dependencies": { "@esm2cjs/p-queue": "^7.3.0", "@metamask/eth-sig-util": "^7.0.0", - "@shapeshiftoss/hdwallet-coinbase": "1.62.35", - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-gridplus": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey-webusb": "1.62.35", - "@shapeshiftoss/hdwallet-keplr": "1.62.35", - "@shapeshiftoss/hdwallet-ledger": "1.62.35", - "@shapeshiftoss/hdwallet-ledger-webhid": "1.62.35", - "@shapeshiftoss/hdwallet-ledger-webusb": "1.62.35", - "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.35", - "@shapeshiftoss/hdwallet-native": "1.62.35", - "@shapeshiftoss/hdwallet-phantom": "1.62.35", - "@shapeshiftoss/hdwallet-portis": "1.62.35", - "@shapeshiftoss/hdwallet-trezor": "1.62.35", - "@shapeshiftoss/hdwallet-trezor-connect": "1.62.35", - "@shapeshiftoss/hdwallet-vultisig": "1.62.35", - "@shapeshiftoss/hdwallet-walletconnect": "1.62.35", - "@shapeshiftoss/hdwallet-walletconnectv2": "1.62.35", + "@shapeshiftoss/hdwallet-coinbase": "1.62.36", + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-gridplus": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey-webusb": "1.62.36", + "@shapeshiftoss/hdwallet-keplr": "1.62.36", + "@shapeshiftoss/hdwallet-ledger": "1.62.36", + "@shapeshiftoss/hdwallet-ledger-webhid": "1.62.36", + "@shapeshiftoss/hdwallet-ledger-webusb": "1.62.36", + "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.36", + "@shapeshiftoss/hdwallet-native": "1.62.36", + "@shapeshiftoss/hdwallet-phantom": "1.62.36", + "@shapeshiftoss/hdwallet-portis": "1.62.36", + "@shapeshiftoss/hdwallet-trezor": "1.62.36", + "@shapeshiftoss/hdwallet-trezor-connect": "1.62.36", + "@shapeshiftoss/hdwallet-vultisig": "1.62.36", + "@shapeshiftoss/hdwallet-walletconnect": "1.62.36", + "@shapeshiftoss/hdwallet-walletconnectv2": "1.62.36", "bip32": "^2.0.4", "eip-712": "^1.0.0", "jquery": "^3.7.1", diff --git a/integration/package.json b/integration/package.json index b959cc619..0a4cc14d9 100644 --- a/integration/package.json +++ b/integration/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/integration", - "version": "1.62.35", + "version": "1.62.36", "main": "index.js", "license": "MIT", "private": true, @@ -11,16 +11,16 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.1.1", - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey-nodewebusb": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.35", - "@shapeshiftoss/hdwallet-ledger": "1.62.35", - "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.35", - "@shapeshiftoss/hdwallet-native": "1.62.35", - "@shapeshiftoss/hdwallet-portis": "1.62.35", - "@shapeshiftoss/hdwallet-trezor": "1.62.35", - "@shapeshiftoss/hdwallet-vultisig": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey-nodewebusb": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.36", + "@shapeshiftoss/hdwallet-ledger": "1.62.36", + "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.36", + "@shapeshiftoss/hdwallet-native": "1.62.36", + "@shapeshiftoss/hdwallet-portis": "1.62.36", + "@shapeshiftoss/hdwallet-trezor": "1.62.36", + "@shapeshiftoss/hdwallet-vultisig": "1.62.36", "fast-json-stable-stringify": "^2.1.0", "msw": "^0.27.1", "whatwg-fetch": "^3.6.2" diff --git a/lerna.json b/lerna.json index deebefbe3..cd11e2b05 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "lerna": "5.2.0", - "version": "1.62.35", + "version": "1.62.36", "npmClient": "yarn", "useWorkspaces": true, "command": { diff --git a/packages/hdwallet-coinbase/package.json b/packages/hdwallet-coinbase/package.json index 05764ff76..a70a8c2b3 100644 --- a/packages/hdwallet-coinbase/package.json +++ b/packages/hdwallet-coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-coinbase", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@coinbase/wallet-sdk": "^3.6.6", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "eth-rpc-errors": "^4.0.3", "lodash": "^4.17.21" }, diff --git a/packages/hdwallet-core/package.json b/packages/hdwallet-core/package.json index d2774bfe0..5da30d748 100644 --- a/packages/hdwallet-core/package.json +++ b/packages/hdwallet-core/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-core", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" diff --git a/packages/hdwallet-core/src/index.ts b/packages/hdwallet-core/src/index.ts index b87836bc2..3a08dddfc 100644 --- a/packages/hdwallet-core/src/index.ts +++ b/packages/hdwallet-core/src/index.ts @@ -19,6 +19,7 @@ export * from "./thorchain"; export * from "./solana"; export * from "./starknet"; export * from "./sui"; +export * from "./near"; export * from "./transport"; export * from "./tron"; export * from "./utils"; diff --git a/packages/hdwallet-core/src/near.ts b/packages/hdwallet-core/src/near.ts new file mode 100644 index 000000000..5b4d46764 --- /dev/null +++ b/packages/hdwallet-core/src/near.ts @@ -0,0 +1,91 @@ +import { addressNListToBIP32, ed25519Path, slip44ByCoin } from "./utils"; +import { BIP32Path, HDWallet, HDWalletInfo, PathDescription } from "./wallet"; + +export interface NearGetAddress { + addressNList: BIP32Path; + showDisplay?: boolean; +} + +export interface NearSignTx { + addressNList: BIP32Path; + /** Borsh-serialized transaction bytes to sign */ + txBytes: Uint8Array; +} + +export interface NearSignedTx { + signature: string; + publicKey: string; +} + +export interface NearGetAccountPaths { + accountIdx: number; +} + +export interface NearAccountPath { + addressNList: BIP32Path; +} + +export interface NearWalletInfo extends HDWalletInfo { + readonly _supportsNearInfo: boolean; + + /** + * Returns a list of bip32 paths for a given account index in preferred order + * from most to least preferred. + */ + nearGetAccountPaths(msg: NearGetAccountPaths): Array; + + /** + * Returns the "next" account path, if any. + */ + nearNextAccountPath(msg: NearAccountPath): NearAccountPath | undefined; +} + +export interface NearWallet extends NearWalletInfo, HDWallet { + readonly _supportsNear: boolean; + + nearGetAddress(msg: NearGetAddress): Promise; + nearGetAddresses?(msgs: NearGetAddress[]): Promise; + nearSignTx(msg: NearSignTx): Promise; +} + +export function nearDescribePath(path: BIP32Path): PathDescription { + const pathStr = addressNListToBIP32(path); + const unknown: PathDescription = { + verbose: pathStr, + coin: "Near", + isKnown: false, + }; + + if (path.length != 3) return unknown; + if (path[0] != 0x80000000 + 44) return unknown; + if (path[1] != 0x80000000 + slip44ByCoin("Near")) return unknown; + if ((path[2] & 0x80000000) >>> 0 !== 0x80000000) return unknown; + + const index = path[2] & 0x7fffffff; + return { + verbose: `Near Account #${index}`, + accountIdx: index, + wholeAccount: true, + coin: "Near", + isKnown: true, + }; +} + +// The standard derivation path for NEAR is: m/44'/397'/' +// This 3-level path matches Trust Wallet and other standard NEAR wallets +// NEAR uses SLIP-0010 which requires all derivation to be hardened for Ed25519 +// https://docs.near.org/integrations/implicit-accounts +// https://github.com/trustwallet/wallet-core/blob/master/registry.json +export function nearGetAccountPaths(msg: NearGetAccountPaths): Array { + const slip44 = slip44ByCoin("Near"); + return [ + { + addressNList: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + msg.accountIdx], + }, + ]; +} + +// NEAR uses the Ed25519 elliptic curve for cryptographic operations, which requires all levels of the derivation path to be hardened. +export function nearAddressNListToBIP32(addressNList: BIP32Path): string { + return addressNListToBIP32(ed25519Path(addressNList)); +} diff --git a/packages/hdwallet-core/src/utils.ts b/packages/hdwallet-core/src/utils.ts index 6d4516507..a12ee3a95 100644 --- a/packages/hdwallet-core/src/utils.ts +++ b/packages/hdwallet-core/src/utils.ts @@ -160,6 +160,7 @@ export const slip44Table = Object.freeze({ Starknet: 9004, Tron: 195, Sui: 784, + Near: 397, // EVM chains all use the same SLIP44 Ethereum: 60, Avalanche: 60, diff --git a/packages/hdwallet-gridplus/package.json b/packages/hdwallet-gridplus/package.json index 32a30ba9e..06234dd85 100644 --- a/packages/hdwallet-gridplus/package.json +++ b/packages/hdwallet-gridplus/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-gridplus", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -20,7 +20,7 @@ "@ethereumjs/rlp": "5.0.2", "@ethereumjs/tx": "5.4.0", "@metamask/eth-sig-util": "^7.0.0", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "bech32": "^1.1.4", "bs58": "^5.0.0", "bs58check": "^4.0.0", diff --git a/packages/hdwallet-keepkey-chromeusb/package.json b/packages/hdwallet-keepkey-chromeusb/package.json index ce3a5f2c3..054f9622b 100644 --- a/packages/hdwallet-keepkey-chromeusb/package.json +++ b/packages/hdwallet-keepkey-chromeusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-chromeusb", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey": "1.62.35" + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey": "1.62.36" } } diff --git a/packages/hdwallet-keepkey-electron/package.json b/packages/hdwallet-keepkey-electron/package.json index 0b90bed68..8e7f34f53 100644 --- a/packages/hdwallet-keepkey-electron/package.json +++ b/packages/hdwallet-keepkey-electron/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-electron", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-keepkey": "1.62.35", + "@shapeshiftoss/hdwallet-keepkey": "1.62.36", "uuid": "^8.3.2" }, "peerDependencies": { diff --git a/packages/hdwallet-keepkey-nodehid/package.json b/packages/hdwallet-keepkey-nodehid/package.json index 496992a25..d8d0f909c 100644 --- a/packages/hdwallet-keepkey-nodehid/package.json +++ b/packages/hdwallet-keepkey-nodehid/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-nodehid", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-keepkey": "1.62.35" + "@shapeshiftoss/hdwallet-keepkey": "1.62.36" }, "peerDependencies": { "node-hid": "^2.1.1" diff --git a/packages/hdwallet-keepkey-nodewebusb/package.json b/packages/hdwallet-keepkey-nodewebusb/package.json index 16925c457..dadfff50f 100644 --- a/packages/hdwallet-keepkey-nodewebusb/package.json +++ b/packages/hdwallet-keepkey-nodewebusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-nodewebusb", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey": "1.62.35" + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey": "1.62.36" }, "peerDependencies": { "usb": "^2.3.1" diff --git a/packages/hdwallet-keepkey-tcp/package.json b/packages/hdwallet-keepkey-tcp/package.json index 829e32319..20570eafb 100644 --- a/packages/hdwallet-keepkey-tcp/package.json +++ b/packages/hdwallet-keepkey-tcp/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-tcp", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey": "1.62.36", "axios": "^0.21.1" } } diff --git a/packages/hdwallet-keepkey-webusb/package.json b/packages/hdwallet-keepkey-webusb/package.json index 4c924994e..cce53a3bf 100644 --- a/packages/hdwallet-keepkey-webusb/package.json +++ b/packages/hdwallet-keepkey-webusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey-webusb", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-keepkey": "1.62.35" + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-keepkey": "1.62.36" }, "devDependencies": { "@types/w3c-web-usb": "^1.0.4" diff --git a/packages/hdwallet-keepkey/package.json b/packages/hdwallet-keepkey/package.json index 17efef4dd..3b880a51c 100644 --- a/packages/hdwallet-keepkey/package.json +++ b/packages/hdwallet-keepkey/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -21,7 +21,7 @@ "@keepkey/device-protocol": "7.13.4", "@metamask/eth-sig-util": "^7.0.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@shapeshiftoss/proto-tx-builder": "0.10.0", "bignumber.js": "^9.0.1", "bnb-javascript-sdk-nobroadcast": "2.16.15", diff --git a/packages/hdwallet-keplr/package.json b/packages/hdwallet-keplr/package.json index 03c4dbc01..24b05366a 100644 --- a/packages/hdwallet-keplr/package.json +++ b/packages/hdwallet-keplr/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keplr", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@cosmjs/amino": "^0.28.13", "@cosmjs/stargate": "^0.28.13", "@shapeshiftoss/caip": "8.15.0", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@shapeshiftoss/proto-tx-builder": "0.10.0", "@shapeshiftoss/types": "3.1.3", "base64-js": "^1.5.1", diff --git a/packages/hdwallet-ledger-webhid/package.json b/packages/hdwallet-ledger-webhid/package.json index 747fcaa5f..4b678058b 100644 --- a/packages/hdwallet-ledger-webhid/package.json +++ b/packages/hdwallet-ledger-webhid/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-ledger-webhid", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -18,8 +18,8 @@ "@ledgerhq/hw-app-eth": "7.0.0", "@ledgerhq/hw-transport": "6.31.13", "@ledgerhq/hw-transport-webhid": "6.30.6", - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-ledger": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-ledger": "1.62.36", "@types/w3c-web-hid": "^1.0.2" } } diff --git a/packages/hdwallet-ledger-webhid/src/transport.ts b/packages/hdwallet-ledger-webhid/src/transport.ts index 35fda62b4..b93841543 100644 --- a/packages/hdwallet-ledger-webhid/src/transport.ts +++ b/packages/hdwallet-ledger-webhid/src/transport.ts @@ -1,6 +1,7 @@ import Btc from "@ledgerhq/hw-app-btc"; import Cosmos from "@ledgerhq/hw-app-cosmos"; import Eth from "@ledgerhq/hw-app-eth"; +import Near from "@ledgerhq/hw-app-near"; import Solana from "@ledgerhq/hw-app-solana"; import Trx from "@ledgerhq/hw-app-trx"; import Transport from "@ledgerhq/hw-transport"; @@ -96,6 +97,11 @@ export function translateCoinAndMethod].bind(trx); return methodInstance as LedgerTransportMethod; } + case "Near": { + const near = new Near(transport as Transport); + const methodInstance = near[method as LedgerTransportMethodName<"Near">].bind(near); + return methodInstance as LedgerTransportMethod; + } case null: { switch (method) { case "decorateAppAPIMethods": { diff --git a/packages/hdwallet-ledger-webusb/package.json b/packages/hdwallet-ledger-webusb/package.json index c9ba8cf53..532dde30f 100644 --- a/packages/hdwallet-ledger-webusb/package.json +++ b/packages/hdwallet-ledger-webusb/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-ledger-webusb", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -20,8 +20,8 @@ "@ledgerhq/hw-app-solana": "7.6.0", "@ledgerhq/hw-transport": "6.31.13", "@ledgerhq/hw-transport-webusb": "6.29.13", - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-ledger": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-ledger": "1.62.36", "@types/w3c-web-usb": "^1.0.4", "p-queue": "^7.4.1" }, diff --git a/packages/hdwallet-ledger-webusb/src/transport.ts b/packages/hdwallet-ledger-webusb/src/transport.ts index 00b3d5f9c..500c7dfd4 100644 --- a/packages/hdwallet-ledger-webusb/src/transport.ts +++ b/packages/hdwallet-ledger-webusb/src/transport.ts @@ -1,6 +1,7 @@ import Btc from "@ledgerhq/hw-app-btc"; import Cosmos from "@ledgerhq/hw-app-cosmos"; import Eth from "@ledgerhq/hw-app-eth"; +import Near from "@ledgerhq/hw-app-near"; import Solana from "@ledgerhq/hw-app-solana"; import Trx from "@ledgerhq/hw-app-trx"; import Transport from "@ledgerhq/hw-transport"; @@ -116,6 +117,11 @@ export async function translateCoinAndMethod].bind(trx); return methodInstance as LedgerTransportMethod; } + case "Near": { + const near = new Near(transport as Transport); + const methodInstance = near[method as LedgerTransportMethodName<"Near">].bind(near); + return methodInstance as LedgerTransportMethod; + } case null: { switch (method) { case "decorateAppAPIMethods": { diff --git a/packages/hdwallet-ledger/package.json b/packages/hdwallet-ledger/package.json index 8484b0514..1431ac7df 100644 --- a/packages/hdwallet-ledger/package.json +++ b/packages/hdwallet-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-ledger", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -21,13 +21,14 @@ "@ledgerhq/hw-app-btc": "10.13.0", "@ledgerhq/hw-app-cosmos": "6.32.9", "@ledgerhq/hw-app-eth": "7.0.0", + "@ledgerhq/hw-app-near": "6.31.10", "@ledgerhq/hw-app-solana": "7.6.0", "@ledgerhq/hw-app-trx": "6.31.9", "@ledgerhq/hw-transport": "6.31.13", "@ledgerhq/logs": "6.13.0", "@mysten/ledgerjs-hw-app-sui": "^0.7.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@solana/web3.js": "1.95.8", "base64-js": "^1.5.1", "bchaddrjs": "^0.4.4", diff --git a/packages/hdwallet-ledger/src/ledger.ts b/packages/hdwallet-ledger/src/ledger.ts index 7fbefe2c2..95b5a47f7 100644 --- a/packages/hdwallet-ledger/src/ledger.ts +++ b/packages/hdwallet-ledger/src/ledger.ts @@ -5,6 +5,7 @@ import * as btc from "./bitcoin"; import * as cosmos from "./cosmos"; import * as eth from "./ethereum"; import * as mayachain from "./mayachain"; +import * as near from "./near"; import * as solana from "./solana"; import * as sui from "./sui"; import * as thorchain from "./thorchain"; @@ -150,7 +151,8 @@ export class LedgerHDWalletInfo core.CosmosWalletInfo, core.SolanaWalletInfo, core.SuiWalletInfo, - core.TronWalletInfo + core.TronWalletInfo, + core.NearWalletInfo { readonly _supportsBTCInfo = true; readonly _supportsETHInfo = true; @@ -160,6 +162,7 @@ export class LedgerHDWalletInfo readonly _supportsSolanaInfo = true; readonly _supportsSuiInfo = true; readonly _supportsTronInfo = true; + readonly _supportsNearInfo = true; public getVendor(): string { return "Ledger"; @@ -260,6 +263,14 @@ export class LedgerHDWalletInfo return tron.tronNextAccountPath(msg); } + public nearGetAccountPaths(msg: core.NearGetAccountPaths): Array { + return near.nearGetAccountPaths(msg); + } + + public nearNextAccountPath(msg: core.NearAccountPath): core.NearAccountPath | undefined { + return near.nearNextAccountPath(msg); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars public hasNativeShapeShift(srcCoin: core.Coin, dstCoin: core.Coin): boolean { return false; @@ -309,6 +320,8 @@ export class LedgerHDWalletInfo return core.suiDescribePath(msg.path); case "Tron": return core.tronDescribePath(msg.path); + case "Near": + return core.nearDescribePath(msg.path); default: return describeUTXOPath(msg.path, msg.coin, msg.scriptType); } @@ -387,7 +400,8 @@ export class LedgerHDWallet core.CosmosWallet, core.SolanaWallet, core.SuiWallet, - core.TronWallet + core.TronWallet, + core.NearWallet { readonly _supportsBTC = true; readonly _supportsETH = true; @@ -409,6 +423,7 @@ export class LedgerHDWallet readonly _supportsSolana = true; readonly _supportsSui = true; readonly _supportsTron = true; + readonly _supportsNear = true; _isLedger = true; @@ -671,6 +686,16 @@ export class LedgerHDWallet return tron.tronSignTx(this.transport, msg); } + public async nearGetAddress(msg: core.NearGetAddress): Promise { + await this.validateCurrentApp("Near"); + return near.nearGetAddress(this.transport, msg); + } + + public async nearSignTx(msg: core.NearSignTx): Promise { + await this.validateCurrentApp("Near"); + return near.nearSignTx(this.transport, msg); + } + public disconnect(): Promise { return this.transport.disconnect(); } diff --git a/packages/hdwallet-ledger/src/near.ts b/packages/hdwallet-ledger/src/near.ts new file mode 100644 index 000000000..8476326b9 --- /dev/null +++ b/packages/hdwallet-ledger/src/near.ts @@ -0,0 +1,61 @@ +import * as core from "@shapeshiftoss/hdwallet-core"; + +import { LedgerTransport } from "./transport"; +import { handleError } from "./utils"; + +function addressNListToBIP32Path(addressNList: core.BIP32Path): string { + return core.addressNListToHardenedBIP32(addressNList).slice(2); +} + +export async function nearGetAddress(transport: LedgerTransport, msg: core.NearGetAddress): Promise { + const bip32Path = addressNListToBIP32Path(msg.addressNList); + + const res = await transport.call("Near", "getAddress", bip32Path, !!msg.showDisplay); + handleError(res, transport, "Unable to obtain NEAR address from device."); + + // @ledgerhq/hw-app-near returns { address: "64-char-hex", publicKey: "ed25519:base58..." } + // NEAR implicit accounts use the 64-char hex format (same as native hdwallet) + return res.payload.address; +} + +export async function nearSignTx(transport: LedgerTransport, msg: core.NearSignTx): Promise { + const bip32Path = addressNListToBIP32Path(msg.addressNList); + + const publicKey = await nearGetAddress(transport, { addressNList: msg.addressNList }); + + const txBuffer = msg.txBytes instanceof Uint8Array ? msg.txBytes : new Uint8Array(msg.txBytes); + + const res = await transport.call("Near", "signTransaction", txBuffer, bip32Path); + handleError(res, transport, "Unable to sign NEAR transaction."); + + if (!res.payload) { + throw new Error("NEAR transaction signing failed: no signature returned"); + } + + // Convert signature Buffer to hex string (same format as native hdwallet) + const signatureHex = Buffer.from(res.payload).toString("hex"); + + return { + signature: signatureHex, + publicKey, + }; +} + +export function nearGetAccountPaths(msg: core.NearGetAccountPaths): Array { + return core.nearGetAccountPaths(msg); +} + +export function nearNextAccountPath(msg: core.NearAccountPath): core.NearAccountPath | undefined { + const addressNList = msg.addressNList; + if ( + addressNList.length === 3 && + addressNList[0] === 0x80000000 + 44 && + addressNList[1] === 0x80000000 + core.slip44ByCoin("Near") && + (addressNList[2] & 0x80000000) >>> 0 === 0x80000000 + ) { + return { + addressNList: [0x80000000 + 44, 0x80000000 + core.slip44ByCoin("Near"), addressNList[2] + 1], + }; + } + return undefined; +} diff --git a/packages/hdwallet-ledger/src/transport.ts b/packages/hdwallet-ledger/src/transport.ts index 602c52411..9d8399e2a 100644 --- a/packages/hdwallet-ledger/src/transport.ts +++ b/packages/hdwallet-ledger/src/transport.ts @@ -1,6 +1,7 @@ import type Btc from "@ledgerhq/hw-app-btc"; import type Cosmos from "@ledgerhq/hw-app-cosmos"; import type Eth from "@ledgerhq/hw-app-eth"; +import type Near from "@ledgerhq/hw-app-near"; import Solana from "@ledgerhq/hw-app-solana"; import type Trx from "@ledgerhq/hw-app-trx"; import type Transport from "@ledgerhq/hw-transport"; @@ -18,7 +19,16 @@ type MethodsOnly = { type UnwrapPromise = T extends Promise ? R : T; type DefinitelyCallable = T extends (...args: any) => any ? T : never; -export type LedgerTransportCoinType = null | "Btc" | "Eth" | "Thorchain" | "Cosmos" | "Solana" | "Sui" | "Tron"; +export type LedgerTransportCoinType = + | null + | "Btc" + | "Eth" + | "Thorchain" + | "Cosmos" + | "Solana" + | "Sui" + | "Tron" + | "Near"; type CurriedWithTransport any> = T extends ( transport: Transport, ...args: infer R @@ -49,6 +59,8 @@ type LedgerTransportMethodMap = T extends nul ? MethodsOnly : T extends "Tron" ? MethodsOnly + : T extends "Near" + ? MethodsOnly : never; export type LedgerTransportMethodName = LedgerTransportMethodMap extends never ? never diff --git a/packages/hdwallet-ledger/src/utils.ts b/packages/hdwallet-ledger/src/utils.ts index 5f2fd47d3..348d2b749 100644 --- a/packages/hdwallet-ledger/src/utils.ts +++ b/packages/hdwallet-ledger/src/utils.ts @@ -602,6 +602,7 @@ const appNameBySlip44: Record = { 133: "Zcash", 145: "Bitcoin Cash", 195: "Tron", + 397: "NEAR", 501: "Solana", 784: "Sui", 931: "THORChain", diff --git a/packages/hdwallet-metamask-multichain/package.json b/packages/hdwallet-metamask-multichain/package.json index 3f8625f30..5a7394b39 100644 --- a/packages/hdwallet-metamask-multichain/package.json +++ b/packages/hdwallet-metamask-multichain/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-metamask-multichain", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@metamask/detect-provider": "^1.2.0", "@metamask/onboarding": "^1.0.1", "@shapeshiftoss/common-api": "^9.3.0", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@shapeshiftoss/metamask-snaps-adapter": "^1.0.12", "@shapeshiftoss/metamask-snaps-types": "^1.0.12", "eth-rpc-errors": "^4.0.3", diff --git a/packages/hdwallet-native-vault/package.json b/packages/hdwallet-native-vault/package.json index c698ffe40..0291cce45 100644 --- a/packages/hdwallet-native-vault/package.json +++ b/packages/hdwallet-native-vault/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-native-vault", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.1.1", - "@shapeshiftoss/hdwallet-native": "1.62.35", + "@shapeshiftoss/hdwallet-native": "1.62.36", "bip39": "^3.0.4", "hash-wasm": "^4.11.0", "idb-keyval": "^6.0.3", diff --git a/packages/hdwallet-native/package.json b/packages/hdwallet-native/package.json index 2b973d0d0..6168ddc5f 100644 --- a/packages/hdwallet-native/package.json +++ b/packages/hdwallet-native/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-native", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -18,7 +18,7 @@ "@noble/curves": "^1.4.0", "@scure/starknet": "^1.0.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@shapeshiftoss/proto-tx-builder": "0.10.0", "@zxing/text-encoding": "^0.9.0", "bchaddrjs": "^0.4.9", diff --git a/packages/hdwallet-native/src/crypto/isolation/adapters/index.ts b/packages/hdwallet-native/src/crypto/isolation/adapters/index.ts index 3ad44c0ed..4e77f6c43 100644 --- a/packages/hdwallet-native/src/crypto/isolation/adapters/index.ts +++ b/packages/hdwallet-native/src/crypto/isolation/adapters/index.ts @@ -9,4 +9,5 @@ export { default as CosmosDirect } from "./cosmosDirect"; export { default as Solana } from "./solana"; export { default as Starknet } from "./starknet"; export { default as Sui } from "./sui"; +export { default as Near } from "./near"; export { default as Tron } from "./tron"; diff --git a/packages/hdwallet-native/src/crypto/isolation/adapters/near.ts b/packages/hdwallet-native/src/crypto/isolation/adapters/near.ts new file mode 100644 index 000000000..2a8753993 --- /dev/null +++ b/packages/hdwallet-native/src/crypto/isolation/adapters/near.ts @@ -0,0 +1,86 @@ +import * as core from "@shapeshiftoss/hdwallet-core"; + +import { Isolation } from "../.."; + +const ED25519_PUBLIC_KEY_SIZE = 32; + +export class NearAdapter { + protected readonly nodeAdapter: Isolation.Adapters.Ed25519; + + constructor(nodeAdapter: Isolation.Adapters.Ed25519) { + this.nodeAdapter = nodeAdapter; + } + + /** + * Get NEAR implicit account address from BIP32 path + * + * NEAR implicit accounts are derived directly from Ed25519 public keys: + * - Account ID = lowercase hex encoding of the 32-byte Ed25519 public key + * - Result is a 64 character hex string + * + * @see https://docs.near.org/integrations/implicit-accounts + */ + async getAddress(addressNList: core.BIP32Path): Promise { + const nodeAdapter = await this.nodeAdapter.derivePath(core.addressNListToHardenedBIP32(addressNList)); + const publicKey = await nodeAdapter.getPublicKey(); + + if (publicKey.length !== ED25519_PUBLIC_KEY_SIZE) { + throw new Error(`Invalid Ed25519 public key size: ${publicKey.length}`); + } + + // NEAR implicit account = lowercase hex of the 32-byte Ed25519 public key + const addressHex = Array.from(publicKey) + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); + + return addressHex; + } + + /** + * Sign NEAR transaction + * + * NEAR transaction signing process: + * 1. Receive Borsh-serialized transaction bytes + * 2. Hash with SHA-256 + * 3. Sign hash with Ed25519 private key + * 4. Return signature as hex string + * + * Note: The caller is responsible for Borsh serialization of the transaction + */ + async signTransaction(txBytes: Uint8Array, addressNList: core.BIP32Path): Promise { + const nodeAdapter = await this.nodeAdapter.derivePath(core.addressNListToHardenedBIP32(addressNList)); + + // NEAR signs the SHA-256 hash of the Borsh-serialized transaction + // The Ed25519 implementation will handle the actual signing + // Note: Ed25519 in NEAR signs the raw SHA-256 hash (32 bytes) + const crypto = await import("crypto"); + const messageHash = crypto.createHash("sha256").update(txBytes).digest(); + + // Sign the hash with Ed25519 + const signature = await nodeAdapter.node.sign(messageHash); + + // Convert signature to hex string + const signatureHex = Array.from(signature) + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); + + return signatureHex; + } + + /** + * Get public key as hex string. Caller converts to ed25519:base58 format if needed. + */ + async getPublicKey(addressNList: core.BIP32Path): Promise { + const nodeAdapter = await this.nodeAdapter.derivePath(core.addressNListToHardenedBIP32(addressNList)); + const publicKey = await nodeAdapter.getPublicKey(); + + // Convert to hex string (we'll convert to base58 in the caller if needed) + const publicKeyHex = Array.from(publicKey) + .map((b) => b.toString(16).padStart(2, "0")) + .join(""); + + return publicKeyHex; + } +} + +export default NearAdapter; diff --git a/packages/hdwallet-native/src/native.ts b/packages/hdwallet-native/src/native.ts index cda43e08d..8b2965ae9 100644 --- a/packages/hdwallet-native/src/native.ts +++ b/packages/hdwallet-native/src/native.ts @@ -13,6 +13,7 @@ import * as Isolation from "./crypto/isolation"; import { MixinNativeETHWallet, MixinNativeETHWalletInfo } from "./ethereum"; import { MixinNativeKavaWallet, MixinNativeKavaWalletInfo } from "./kava"; import { MixinNativeMayachainWallet, MixinNativeMayachainWalletInfo } from "./mayachain"; +import { MixinNativeNearWallet, MixinNativeNearWalletInfo } from "./near"; import { MixinNativeOsmosisWallet, MixinNativeOsmosisWalletInfo } from "./osmosis"; import { MixinNativeSecretWallet, MixinNativeSecretWalletInfo } from "./secret"; import { MixinNativeSolanaWallet, MixinNativeSolanaWalletInfo } from "./solana"; @@ -134,12 +135,14 @@ class NativeHDWalletInfo MixinNativeStarknetWalletInfo( MixinNativeTronWalletInfo( MixinNativeSuiWalletInfo( - MixinNativeThorchainWalletInfo( - MixinNativeMayachainWalletInfo( - MixinNativeSecretWalletInfo( - MixinNativeTerraWalletInfo( - MixinNativeKavaWalletInfo( - MixinNativeArkeoWalletInfo(MixinNativeOsmosisWalletInfo(NativeHDWalletBase)) + MixinNativeNearWalletInfo( + MixinNativeThorchainWalletInfo( + MixinNativeMayachainWalletInfo( + MixinNativeSecretWalletInfo( + MixinNativeTerraWalletInfo( + MixinNativeKavaWalletInfo( + MixinNativeArkeoWalletInfo(MixinNativeOsmosisWalletInfo(NativeHDWalletBase)) + ) ) ) ) @@ -163,6 +166,7 @@ class NativeHDWalletInfo core.StarknetWalletInfo, core.TronWalletInfo, core.SuiWalletInfo, + core.NearWalletInfo, core.ThorchainWalletInfo, core.MayachainWalletInfo, core.SecretWalletInfo, @@ -201,6 +205,8 @@ class NativeHDWalletInfo return core.solanaDescribePath(msg.path); case "sui": return core.suiDescribePath(msg.path); + case "near": + return core.nearDescribePath(msg.path); case "secret": case "scrt": case "tscrt": @@ -240,11 +246,13 @@ export class NativeHDWallet MixinNativeStarknetWallet( MixinNativeTronWallet( MixinNativeSuiWallet( - MixinNativeThorchainWallet( - MixinNativeMayachainWallet( - MixinNativeSecretWallet( - MixinNativeTerraWallet( - MixinNativeKavaWallet(MixinNativeOsmosisWallet(MixinNativeArkeoWallet(NativeHDWalletInfo))) + MixinNativeNearWallet( + MixinNativeThorchainWallet( + MixinNativeMayachainWallet( + MixinNativeSecretWallet( + MixinNativeTerraWallet( + MixinNativeKavaWallet(MixinNativeOsmosisWallet(MixinNativeArkeoWallet(NativeHDWalletInfo))) + ) ) ) ) @@ -267,6 +275,7 @@ export class NativeHDWallet core.StarknetWallet, core.TronWallet, core.SuiWallet, + core.NearWallet, core.ThorchainWallet, core.MayachainWallet, core.SecretWallet, @@ -412,6 +421,7 @@ export class NativeHDWallet super.arkeoInitializeWallet(secp256k1MasterKey), super.solanaInitializeWallet(ed25519MasterKey), super.suiInitializeWallet(ed25519MasterKey), + super.nearInitializeWallet(ed25519MasterKey), ]); this.#initialized = true; @@ -455,6 +465,7 @@ export class NativeHDWallet super.solanaWipe(); super.suiWipe(); + super.nearWipe(); super.btcWipe(); super.ethWipe(); super.cosmosWipe(); diff --git a/packages/hdwallet-native/src/near.ts b/packages/hdwallet-native/src/near.ts new file mode 100644 index 000000000..3b9e6b8f9 --- /dev/null +++ b/packages/hdwallet-native/src/near.ts @@ -0,0 +1,57 @@ +import * as core from "@shapeshiftoss/hdwallet-core"; + +import { Isolation } from "./crypto"; +import { NearAdapter } from "./crypto/isolation/adapters/near"; +import { NativeHDWalletBase } from "./native"; + +export function MixinNativeNearWalletInfo>(Base: TBase) { + // eslint-disable-next-line @typescript-eslint/no-shadow + return class MixinNativeNearWalletInfo extends Base implements core.NearWalletInfo { + readonly _supportsNearInfo = true; + + nearGetAccountPaths(msg: core.NearGetAccountPaths): Array { + return core.nearGetAccountPaths(msg); + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + nearNextAccountPath(_msg: core.NearAccountPath): core.NearAccountPath | undefined { + throw new Error("Method not implemented"); + } + }; +} + +export function MixinNativeNearWallet>(Base: TBase) { + // eslint-disable-next-line @typescript-eslint/no-shadow + return class MixinNativeNearWallet extends Base { + readonly _supportsNear = true; + + nearAdapter: NearAdapter | undefined; + + async nearInitializeWallet(ed25519MasterKey: Isolation.Core.Ed25519.Node): Promise { + const nodeAdapter = new Isolation.Adapters.Ed25519(ed25519MasterKey); + this.nearAdapter = new NearAdapter(nodeAdapter); + } + + nearWipe() { + this.nearAdapter = undefined; + } + + async nearGetAddress(msg: core.NearGetAddress): Promise { + return this.needsMnemonic(!!this.nearAdapter, () => { + return this.nearAdapter!.getAddress(msg.addressNList); + }); + } + + async nearSignTx(msg: core.NearSignTx): Promise { + return this.needsMnemonic(!!this.nearAdapter, async () => { + const signature = await this.nearAdapter!.signTransaction(msg.txBytes, msg.addressNList); + const publicKey = await this.nearAdapter!.getPublicKey(msg.addressNList); + + return { + signature, + publicKey, + }; + }); + } + }; +} diff --git a/packages/hdwallet-phantom/package.json b/packages/hdwallet-phantom/package.json index 5b593c4ad..ff739307c 100644 --- a/packages/hdwallet-phantom/package.json +++ b/packages/hdwallet-phantom/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-phantom", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@solana/web3.js": "1.95.8", "base64-js": "^1.5.1", "bitcoinjs-message": "^2.0.0", diff --git a/packages/hdwallet-portis/package.json b/packages/hdwallet-portis/package.json index 451adc521..df64b008c 100644 --- a/packages/hdwallet-portis/package.json +++ b/packages/hdwallet-portis/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-portis", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -16,7 +16,7 @@ "dependencies": { "@portis/web3": "3.0.10", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "base64-js": "^1.5.1", "bip32": "^2.0.4", "bitcoinjs-message": "^2.1.0", diff --git a/packages/hdwallet-trezor-connect/package.json b/packages/hdwallet-trezor-connect/package.json index 76847cc09..1b835aa19 100644 --- a/packages/hdwallet-trezor-connect/package.json +++ b/packages/hdwallet-trezor-connect/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-trezor-connect", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.35", - "@shapeshiftoss/hdwallet-trezor": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", + "@shapeshiftoss/hdwallet-trezor": "1.62.36", "@trezor/connect-web": "^9.6.4" } } diff --git a/packages/hdwallet-trezor/package.json b/packages/hdwallet-trezor/package.json index 9d3fe017a..41368bc8b 100644 --- a/packages/hdwallet-trezor/package.json +++ b/packages/hdwallet-trezor/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-trezor", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "dependencies": { "@ethereumjs/common": "3.2.0", "@ethereumjs/tx": "4.2.0", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "base64-js": "^1.5.1", "bchaddrjs": "^0.4.4", "lodash": "^4.17.21" diff --git a/packages/hdwallet-vultisig/package.json b/packages/hdwallet-vultisig/package.json index 5b5b0e8fe..7d7dab3be 100644 --- a/packages/hdwallet-vultisig/package.json +++ b/packages/hdwallet-vultisig/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-vultisig", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@cosmjs/amino": "^0.28.13", "@cosmjs/stargate": "^0.28.13", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.2", - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@solana/web3.js": "1.95.8", "base64-js": "^1.5.1", "bitcoinjs-message": "^2.0.0", diff --git a/packages/hdwallet-walletconnect/package.json b/packages/hdwallet-walletconnect/package.json index 7a3dba7a9..185f76664 100644 --- a/packages/hdwallet-walletconnect/package.json +++ b/packages/hdwallet-walletconnect/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-walletconnect", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@walletconnect/qrcode-modal": "^1.7.8", "@walletconnect/web3-provider": "^1.7.8", "ethers": "^5.6.5" diff --git a/packages/hdwallet-walletconnectV2/package.json b/packages/hdwallet-walletconnectV2/package.json index c634e9cae..d475d2431 100644 --- a/packages/hdwallet-walletconnectV2/package.json +++ b/packages/hdwallet-walletconnectV2/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-walletconnectv2", - "version": "1.62.35", + "version": "1.62.36", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.35", + "@shapeshiftoss/hdwallet-core": "1.62.36", "@walletconnect/ethereum-provider": "^2.20.2", "@walletconnect/modal": "^2.6.2", "ethers": "^5.6.5" diff --git a/yarn.lock b/yarn.lock index 3c9c2ae18..fb800baef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1690,6 +1690,16 @@ rxjs "^7.8.1" semver "^7.3.5" +"@ledgerhq/devices@8.7.1": + version "8.7.1" + resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.7.1.tgz#e676dfca7dfd4f9704ed2e4c003a79d0153d53c5" + integrity sha512-xUtqLp4t7PhVKkMG/mCrSzxGQ25JA06UAIxxq07EwuJKyWaey1gSdvqr0TvbTw/fsJNya4FIBYTrUkjH9XpdBQ== + dependencies: + "@ledgerhq/errors" "^6.27.1" + "@ledgerhq/logs" "^6.13.0" + rxjs "^7.8.1" + semver "^7.3.5" + "@ledgerhq/domain-service@^1.4.2": version "1.4.2" resolved "https://registry.npmjs.org/@ledgerhq/domain-service/-/domain-service-1.4.2.tgz#65afdf21b75d4ebde29e567540ad24706ab6931b" @@ -1708,6 +1718,11 @@ resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.27.0.tgz#3acc978ed1dbbdd8049dcedccccf4a96968f583a" integrity sha512-EE2hATONHdNP3YWFe3rZwwpSEzI5oN+q/xTjOulnjHZo84TLjungegEJ54A/Pzld0woulkkeVA27FbW5SAO1aA== +"@ledgerhq/errors@^6.27.1": + version "6.27.1" + resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.27.1.tgz#66cc609359ddf9368d33f5591008fcb31b1a6315" + integrity sha512-Q6nXkg63kSjxa8DDBtjSGAuiOP/jQVQM/0f+0R/ovilQKuxMIxEMXPfonvhQ2AIP4bqKOzGV1c9Iqnow22w/Zg== + "@ledgerhq/evm-tools@^1.8.2": version "1.8.2" resolved "https://registry.npmjs.org/@ledgerhq/evm-tools/-/evm-tools-1.8.2.tgz#240042e3b2f990acdee908cac7b35fff7c557b55" @@ -1764,6 +1779,14 @@ bignumber.js "^9.1.2" semver "^7.3.5" +"@ledgerhq/hw-app-near@6.31.10": + version "6.31.10" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-near/-/hw-app-near-6.31.10.tgz#b8c291bcb13b057f1eac152b02d9a4d04df29bf2" + integrity sha512-ZNFk3Ho7ISUpqHJaU86qYoqt+vKpzILm4Kd7n/0y4W6Jzdeetj50f2bLBhz84bEv34RAuwVb+g9W55z3vmV5CQ== + dependencies: + "@ledgerhq/hw-transport" "6.31.14" + near-api-js "^3.0.2" + "@ledgerhq/hw-app-solana@7.6.0": version "7.6.0" resolved "https://registry.npmjs.org/@ledgerhq/hw-app-solana/-/hw-app-solana-7.6.0.tgz#37f70cd611ad9f78afcdfc6d2a4828ec65a0c75f" @@ -1826,6 +1849,16 @@ "@ledgerhq/logs" "^6.13.0" events "^3.3.0" +"@ledgerhq/hw-transport@6.31.14": + version "6.31.14" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.31.14.tgz#bae7401b27586d2b560ee349661a57379b1fde6f" + integrity sha512-aTKItTLDCN2aoZv6nX6weMslgzT0mI8Hp2FEt2iTomQ6V5r1/BRDRbz2WB1989dZsgBajPRuUWhTZ/Bt6tiijw== + dependencies: + "@ledgerhq/devices" "8.7.1" + "@ledgerhq/errors" "^6.27.1" + "@ledgerhq/logs" "^6.13.0" + events "^3.3.0" + "@ledgerhq/ledger-cal-service@^1.6.0": version "1.9.0" resolved "https://registry.npmjs.org/@ledgerhq/ledger-cal-service/-/ledger-cal-service-1.9.0.tgz#b9797a71c17b8bf0f0a00ff9f84fa269b328540b" @@ -3098,6 +3131,130 @@ fast-sha256 "^1.3.0" semver "^7" +"@near-js/accounts@1.0.4": + version "1.0.4" + resolved "https://registry.npmjs.org/@near-js/accounts/-/accounts-1.0.4.tgz#b699dc1c63ffccc1598481b4260dfaf2507f0a69" + integrity sha512-6zgSwq/rQ9ggPOIkGUx9RoEurbJiojqA/axeh6o1G+46GqUBI7SUcDooyVvZjeiOvUPObnTQptDYpbV+XZji8g== + dependencies: + "@near-js/crypto" "1.2.1" + "@near-js/providers" "0.1.1" + "@near-js/signers" "0.1.1" + "@near-js/transactions" "1.1.2" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.1.0" + ajv "8.11.2" + ajv-formats "2.1.1" + bn.js "5.2.1" + borsh "1.0.0" + depd "2.0.0" + lru_map "0.4.1" + near-abi "0.1.1" + +"@near-js/crypto@1.2.1": + version "1.2.1" + resolved "https://registry.npmjs.org/@near-js/crypto/-/crypto-1.2.1.tgz#aa18bed171e68653dae9f82114636eba34ece32a" + integrity sha512-iJOHaGKvdudYfR8nEtRhGlgcTEHeVmxMoT0JVXmuP3peG96v/sSnA03CE6MZBeCC8txKAQOffagxE7oU6hJp9g== + dependencies: + "@near-js/types" "0.0.4" + "@near-js/utils" "0.1.0" + "@noble/curves" "1.2.0" + bn.js "5.2.1" + borsh "1.0.0" + randombytes "2.1.0" + +"@near-js/keystores-browser@0.0.9": + version "0.0.9" + resolved "https://registry.npmjs.org/@near-js/keystores-browser/-/keystores-browser-0.0.9.tgz#4d6211ad617613124aeee78ede5771b153e3bcdd" + integrity sha512-JzPj+RHJN2G3CEm/LyfbtZDQy/wxgOlqfh52voqPGijUHg93b27KBqtZShazAgJNkhzRbWcoluWQnd2jL8vF7A== + dependencies: + "@near-js/crypto" "1.2.1" + "@near-js/keystores" "0.0.9" + +"@near-js/keystores-node@0.0.9": + version "0.0.9" + resolved "https://registry.npmjs.org/@near-js/keystores-node/-/keystores-node-0.0.9.tgz#c2fd2f5bfbca1c75699dd7324e300cfd12e790ed" + integrity sha512-2B9MYz6uIhysG1fhQSjvaPYCM7gM+UAeDchX0J8QRauXIeN8TGzpcdgkdkMUnWNTIdt3Iblh0ZuCs+FY02dTXg== + dependencies: + "@near-js/crypto" "1.2.1" + "@near-js/keystores" "0.0.9" + +"@near-js/keystores@0.0.9": + version "0.0.9" + resolved "https://registry.npmjs.org/@near-js/keystores/-/keystores-0.0.9.tgz#768aaaab1beb7f797432513cb1bbf9430e305a85" + integrity sha512-j8ySgVEcm2Gg6zxkSdadNtPlIqhJZdPGfWWM3tPtEoowNS9snhwZn5NRFPrgmX0+MzpF7E091CRcY90MvRVhsg== + dependencies: + "@near-js/crypto" "1.2.1" + "@near-js/types" "0.0.4" + +"@near-js/providers@0.1.1": + version "0.1.1" + resolved "https://registry.npmjs.org/@near-js/providers/-/providers-0.1.1.tgz#7489eb5a4248562fe98fdbc4cb55ea3f6d787e0a" + integrity sha512-0M/Vz2Ac34ShKVoe2ftVJ5Qg4eSbEqNXDbCDOdVj/2qbLWZa7Wpe+me5ei4TMY2ZhGdawhgJUPrYwdJzOCyf8w== + dependencies: + "@near-js/transactions" "1.1.2" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.1.0" + bn.js "5.2.1" + borsh "1.0.0" + http-errors "1.7.2" + optionalDependencies: + node-fetch "2.6.7" + +"@near-js/signers@0.1.1": + version "0.1.1" + resolved "https://registry.npmjs.org/@near-js/signers/-/signers-0.1.1.tgz#6d32b262eac9b03fab5fc1ee93d2c4055c86980f" + integrity sha512-focJgs04dBUfawMnyGg3yIjaMawuVz2OeLRKC4t5IQDmO4PLfdIraEuwgS7tckMq3GdrJ7nqkwkpSNYpdt7I5Q== + dependencies: + "@near-js/crypto" "1.2.1" + "@near-js/keystores" "0.0.9" + "@noble/hashes" "1.3.3" + +"@near-js/transactions@1.1.2": + version "1.1.2" + resolved "https://registry.npmjs.org/@near-js/transactions/-/transactions-1.1.2.tgz#7dec18b463cd336e325ee61b1e1c39a6192d9e81" + integrity sha512-AqYA56ncwgrWjIu+bNaWjTPRZb0O+SfpWIP7U+1FKNKxNYMCtkt6zp7SlQeZn743shKVq9qMzA9+ous/KCb0QQ== + dependencies: + "@near-js/crypto" "1.2.1" + "@near-js/signers" "0.1.1" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.1.0" + "@noble/hashes" "1.3.3" + bn.js "5.2.1" + borsh "1.0.0" + +"@near-js/types@0.0.4": + version "0.0.4" + resolved "https://registry.npmjs.org/@near-js/types/-/types-0.0.4.tgz#d941689df41c850aeeeaeb9d498418acec515404" + integrity sha512-8TTMbLMnmyG06R5YKWuS/qFG1tOA3/9lX4NgBqQPsvaWmDsa+D+QwOkrEHDegped0ZHQwcjAXjKML1S1TyGYKg== + dependencies: + bn.js "5.2.1" + +"@near-js/utils@0.1.0": + version "0.1.0" + resolved "https://registry.npmjs.org/@near-js/utils/-/utils-0.1.0.tgz#1368f59008c39df1e903bd3e0f308eedcdf25c1d" + integrity sha512-kOVAXmJzaC8ElJD3RLEoBuqOK+d5s7jc0JkvhyEtbuEmXYHHAy9Q17/YkDcX9tyr01L85iOt66z0cODqzgtQwA== + dependencies: + "@near-js/types" "0.0.4" + bn.js "5.2.1" + bs58 "4.0.0" + depd "2.0.0" + mustache "4.0.0" + +"@near-js/wallet-account@1.1.1": + version "1.1.1" + resolved "https://registry.npmjs.org/@near-js/wallet-account/-/wallet-account-1.1.1.tgz#e66e8d10fb51f71f7cb722bdff63fb98e2b0d486" + integrity sha512-NnoJKtogBQ7Qz+AP+LdF70BP8Az6UXQori7OjPqJLMo73bn6lh5Ywvegwd1EB7ZEVe4BRt9+f9QkbU5M8ANfAw== + dependencies: + "@near-js/accounts" "1.0.4" + "@near-js/crypto" "1.2.1" + "@near-js/keystores" "0.0.9" + "@near-js/signers" "0.1.1" + "@near-js/transactions" "1.1.2" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.1.0" + bn.js "5.2.1" + borsh "1.0.0" + "@noble/ciphers@1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.2.1.tgz#3812b72c057a28b44ff0ad4aff5ca846e5b9cdc9" @@ -3188,6 +3345,11 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== +"@noble/hashes@1.3.3", "@noble/hashes@~1.3.2": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" + integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== + "@noble/hashes@1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" @@ -3223,11 +3385,6 @@ resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== -"@noble/hashes@~1.3.2": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.3.tgz#39908da56a4adc270147bb07968bf3b16cfe1699" - integrity sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA== - "@noble/hashes@~1.6.0": version "1.6.1" resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz#df6e5943edcea504bac61395926d6fd67869a0d5" @@ -5376,7 +5533,7 @@ resolved "https://registry.yarnpkg.com/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz#a6fd0bdc8255b274e5438e0bfb25f154492d1106" integrity sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ== -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": +"@types/json-schema@^7.0.11", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.9": version "7.0.15" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== @@ -6531,6 +6688,23 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" +ajv-formats@2.1.1: + version "2.1.1" + resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv@8.11.2: + version "8.11.2" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz#aecb20b50607acf2569b6382167b65a96008bb78" + integrity sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + ajv@8.12.0: version "8.12.0" resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" @@ -6551,6 +6725,16 @@ ajv@^6.10.2, ajv@^6.12.3, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.0: + version "8.17.1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + ansi-align@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" @@ -7089,6 +7273,13 @@ bare-semver@^1.0.0: resolved "https://registry.yarnpkg.com/bare-semver/-/bare-semver-1.0.2.tgz#3cfc47ed5d3e809b369daec534ce916b70b83b8c" integrity sha512-ESVaN2nzWhcI5tf3Zzcq9aqCZ676VWzqw07eEZ0qxAcEOAFYBa0pWq8sK34OQeHLY3JsfKXZS9mDyzyxGjeLzA== +base-x@^2.0.1: + version "2.0.6" + resolved "https://registry.npmjs.org/base-x/-/base-x-2.0.6.tgz#4582a91ebcec99ee06f4e4032030b0cf1c2941d8" + integrity sha512-UAmjxz9KbK+YIi66xej+pZVo/vxUOh49ubEvZW5egCbxhur05pBb+hwuireQwKO4nDpsNm64/jEei17LEpsr5g== + dependencies: + safe-buffer "^5.0.1" + base-x@^3.0.2, base-x@^3.0.6, base-x@^3.0.8: version "3.0.10" resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" @@ -7384,16 +7575,16 @@ bn.js@4.11.8: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@5.2.1, bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.0, bn.js@^4.11.6, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== -bn.js@^5.0.0, bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" - integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== - bn.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" @@ -7451,6 +7642,11 @@ boolean@^3.0.1: resolved "https://registry.yarnpkg.com/boolean/-/boolean-3.2.0.tgz#9e5294af4e98314494cbb17979fa54ca159f116b" integrity sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw== +borsh@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/borsh/-/borsh-1.0.0.tgz#b564c8cc8f7a91e3772b9aef9e07f62b84213c1f" + integrity sha512-fSVWzzemnyfF89EPwlUNsrS5swF5CrtiN4e+h0/lLf4dz2he4L3ndM20PS9wj7ICSkXJe/TQUHdaPTq15b1mNQ== + borsh@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/borsh/-/borsh-0.7.0.tgz#6e9560d719d86d90dc589bca60ffc8a6c51fec2a" @@ -7613,6 +7809,13 @@ bs-logger@0.x: dependencies: fast-json-stable-stringify "2.x" +bs58@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.0.tgz#65f5deaf6d74e6135a99f763ca6209ab424b9172" + integrity sha512-/jcGuUuSebyxwLLfKrbKnCJttxRf9PM51EnHTwmFKBxl4z1SGkoAhrfd6uZKE0dcjQTfm6XzTP8DPr1tzE4KIw== + dependencies: + base-x "^2.0.1" + bs58@6.0.0, bs58@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/bs58/-/bs58-6.0.0.tgz#a2cda0130558535dd281a2f8697df79caaf425d8" @@ -9070,6 +9273,11 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + deprecation@^2.0.0: version "2.3.1" resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" @@ -10681,6 +10889,11 @@ fast-text-encoding@^1.0.3: resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.6.tgz#0aa25f7f638222e3396d72bf936afcf1d42d6867" integrity sha512-VhXlQgj9ioXCqGstD37E/HBeqEGV/qOD/kmbVG8h5xKBYvM1L3lR1Zn4555cQ8GkYbJa8aJSipLPndE1k6zK2w== +fast-uri@^3.0.1: + version "3.1.0" + resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz#66eecff6c764c0df9b762e62ca7edcfb53b4edfa" + integrity sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA== + fast-url-parser@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/fast-url-parser/-/fast-url-parser-1.1.3.tgz#f4af3ea9f34d8a271cf58ad2b3759f431f0b318d" @@ -11709,6 +11922,17 @@ http-cache-semantics@^4.0.0, http-cache-semantics@^4.1.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz#abe02fcb2985460bf0323be664436ec3476a6d5a" integrity sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ== +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-errors@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" @@ -11910,6 +12134,11 @@ inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, i resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + ini@^1.3.2, ini@^1.3.4, ini@~1.3.0: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -13787,6 +14016,11 @@ lru-cache@^7.14.1, lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== +lru_map@0.4.1: + version "0.4.1" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.4.1.tgz#f7b4046283c79fb7370c36f8fca6aee4324b0a98" + integrity sha512-I+lBvqMMFfqaV8CJCISjI3wbjmwVu/VyOoU7+qtu9d7ioW5klMgsTTiUOUp+DJvfTTzKXoPbyC6YfgkNcyPSOg== + ltgt@~2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" @@ -14414,6 +14648,11 @@ multimatch@^5.0.0: arrify "^2.0.1" minimatch "^3.0.4" +mustache@4.0.0: + version "4.0.0" + resolved "https://registry.npmjs.org/mustache/-/mustache-4.0.0.tgz#7f02465dbb5b435859d154831c032acdfbbefb31" + integrity sha512-FJgjyX/IVkbXBXYUwH+OYwQKqWpFPLaLVESd70yHjSDunwzV2hZOoTBvPf4KLoxesUzzyfTH6F784Uqd7Wm5yA== + mute-stream@0.0.8, mute-stream@~0.0.4: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" @@ -14471,6 +14710,39 @@ ndjson@^1.5.0: split2 "^2.1.0" through2 "^2.0.3" +near-abi@0.1.1: + version "0.1.1" + resolved "https://registry.npmjs.org/near-abi/-/near-abi-0.1.1.tgz#b7ead408ca4ad11de4fe3e595d30a7a8bc5307e0" + integrity sha512-RVDI8O+KVxRpC3KycJ1bpfVj9Zv+xvq9PlW1yIFl46GhrnLw83/72HqHGjGDjQ8DtltkcpSjY9X3YIGZ+1QyzQ== + dependencies: + "@types/json-schema" "^7.0.11" + +near-api-js@^3.0.2: + version "3.0.4" + resolved "https://registry.npmjs.org/near-api-js/-/near-api-js-3.0.4.tgz#5ee094ce53e30239cc817ca942ec3e9739296dbb" + integrity sha512-qKWjnugoB7kSFhzZ5GXyH/eABspCQYWBmWnM4hpV5ctnQBt89LqgEu9yD1z4sa89MvUu8BuCxwb1m00BE8iofg== + dependencies: + "@near-js/accounts" "1.0.4" + "@near-js/crypto" "1.2.1" + "@near-js/keystores" "0.0.9" + "@near-js/keystores-browser" "0.0.9" + "@near-js/keystores-node" "0.0.9" + "@near-js/providers" "0.1.1" + "@near-js/signers" "0.1.1" + "@near-js/transactions" "1.1.2" + "@near-js/types" "0.0.4" + "@near-js/utils" "0.1.0" + "@near-js/wallet-account" "1.1.1" + "@noble/curves" "1.2.0" + ajv "8.11.2" + ajv-formats "2.1.1" + bn.js "5.2.1" + borsh "1.0.0" + depd "2.0.0" + http-errors "1.7.2" + near-abi "0.1.1" + node-fetch "2.6.7" + negotiator@0.6.3, negotiator@^0.6.3: version "0.6.3" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" @@ -14531,6 +14803,13 @@ node-fetch@2.6.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== +node-fetch@2.6.7: + version "2.6.7" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, node-fetch@^2.6.7, node-fetch@^2.7.0: version "2.7.0" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" @@ -16070,7 +16349,7 @@ radix3@^1.1.2: resolved "https://registry.yarnpkg.com/radix3/-/radix3-1.1.2.tgz#fd27d2af3896c6bf4bcdfab6427c69c2afc69ec0" integrity sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA== -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: +randombytes@2.1.0, randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5, randombytes@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== @@ -17000,6 +17279,11 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== +setprototypeof@1.1.1: + version "1.1.1" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" + integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== + setprototypeof@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" @@ -17425,6 +17709,11 @@ statuses@2.0.1, statuses@^2.0.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== +"statuses@>= 1.5.0 < 2": + version "1.5.0" + resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + std-env@^3.7.0: version "3.7.0" resolved "https://registry.yarnpkg.com/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2" @@ -17961,6 +18250,11 @@ toggle-selection@^1.0.6: resolved "https://registry.yarnpkg.com/toggle-selection/-/toggle-selection-1.0.6.tgz#6e45b1263f2017fa0acc7d89d78b15b8bf77da32" integrity sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ== +toidentifier@1.0.0: + version "1.0.0" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" + integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== + toidentifier@1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"