diff --git a/examples/sandbox/package.json b/examples/sandbox/package.json index b6816d0a6..50d29d18e 100644 --- a/examples/sandbox/package.json +++ b/examples/sandbox/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-sandbox", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "private": true, "browserslist": "> 0.5%, last 2 versions, not dead", @@ -12,24 +12,24 @@ "dependencies": { "@esm2cjs/p-queue": "^7.3.0", "@metamask/eth-sig-util": "^7.0.0", - "@shapeshiftoss/hdwallet-coinbase": "1.62.18", - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey-webusb": "1.62.18", - "@shapeshiftoss/hdwallet-keplr": "1.62.18", - "@shapeshiftoss/hdwallet-ledger": "1.62.18", - "@shapeshiftoss/hdwallet-ledger-webhid": "1.62.18", - "@shapeshiftoss/hdwallet-ledger-webusb": "1.62.18", - "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.18", - "@shapeshiftoss/hdwallet-native": "1.62.18", - "@shapeshiftoss/hdwallet-phantom": "1.62.18", - "@shapeshiftoss/hdwallet-portis": "1.62.18", - "@shapeshiftoss/hdwallet-trezor": "1.62.18", - "@shapeshiftoss/hdwallet-trezor-connect": "1.62.18", - "@shapeshiftoss/hdwallet-vultisig": "1.62.18", - "@shapeshiftoss/hdwallet-walletconnect": "1.62.18", - "@shapeshiftoss/hdwallet-walletconnectv2": "1.62.18", + "@shapeshiftoss/hdwallet-coinbase": "^1.62.19", + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey-tcp": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey-webusb": "^1.62.19", + "@shapeshiftoss/hdwallet-keplr": "^1.62.19", + "@shapeshiftoss/hdwallet-ledger": "^1.62.19", + "@shapeshiftoss/hdwallet-ledger-webhid": "^1.62.19", + "@shapeshiftoss/hdwallet-ledger-webusb": "^1.62.19", + "@shapeshiftoss/hdwallet-metamask-multichain": "^1.62.19", + "@shapeshiftoss/hdwallet-native": "^1.62.19", + "@shapeshiftoss/hdwallet-phantom": "^1.62.19", + "@shapeshiftoss/hdwallet-portis": "^1.62.19", + "@shapeshiftoss/hdwallet-trezor": "^1.62.19", + "@shapeshiftoss/hdwallet-trezor-connect": "^1.62.19", + "@shapeshiftoss/hdwallet-vultisig": "^1.62.19", + "@shapeshiftoss/hdwallet-walletconnect": "^1.62.19", + "@shapeshiftoss/hdwallet-walletconnectv2": "^1.62.19", "bip32": "^2.0.4", "eip-712": "^1.0.0", "jquery": "^3.7.1", diff --git a/integration/package.json b/integration/package.json index e1424e505..42ba9b771 100644 --- a/integration/package.json +++ b/integration/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/integration", - "version": "1.62.18", + "version": "1.62.19", "main": "index.js", "license": "MIT", "private": true, @@ -11,16 +11,16 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.1.1", - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey-nodewebusb": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey-tcp": "1.62.18", - "@shapeshiftoss/hdwallet-ledger": "1.62.18", - "@shapeshiftoss/hdwallet-metamask-multichain": "1.62.18", - "@shapeshiftoss/hdwallet-native": "1.62.18", - "@shapeshiftoss/hdwallet-portis": "1.62.18", - "@shapeshiftoss/hdwallet-trezor": "1.62.18", - "@shapeshiftoss/hdwallet-vultisig": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey-nodewebusb": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey-tcp": "^1.62.19", + "@shapeshiftoss/hdwallet-ledger": "^1.62.19", + "@shapeshiftoss/hdwallet-metamask-multichain": "^1.62.19", + "@shapeshiftoss/hdwallet-native": "^1.62.19", + "@shapeshiftoss/hdwallet-portis": "^1.62.19", + "@shapeshiftoss/hdwallet-trezor": "^1.62.19", + "@shapeshiftoss/hdwallet-vultisig": "^1.62.19", "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 0bc836388..17e0b5c77 100644 --- a/lerna.json +++ b/lerna.json @@ -1,6 +1,6 @@ { "lerna": "5.2.0", - "version": "1.62.18", + "version": "1.62.19", "npmClient": "yarn", "useWorkspaces": true, "command": { @@ -8,5 +8,10 @@ "message": "chore(release): publish %v" } }, - "ignoreChanges": ["**/__fixtures__/**", "**/__tests__/**", "**/*.md", "**/.env"] + "ignoreChanges": [ + "**/__fixtures__/**", + "**/__tests__/**", + "**/*.md", + "**/.env" + ] } diff --git a/packages/hdwallet-coinbase/package.json b/packages/hdwallet-coinbase/package.json index 748fe0e5d..2c6005986 100644 --- a/packages/hdwallet-coinbase/package.json +++ b/packages/hdwallet-coinbase/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-coinbase", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@coinbase/wallet-sdk": "^3.6.6", - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "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 2e278b5ca..d489dd9fe 100644 --- a/packages/hdwallet-core/package.json +++ b/packages/hdwallet-core/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-core", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" diff --git a/packages/hdwallet-gridplus/package.json b/packages/hdwallet-gridplus/package.json index 96b189787..9da80ad9a 100644 --- a/packages/hdwallet-gridplus/package.json +++ b/packages/hdwallet-gridplus/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-gridplus", - "version": "1.62.18", + "version": "1.62.19", "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.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "bech32": "^1.1.4", "bs58": "^5.0.0", "crypto-js": "^4.2.0", diff --git a/packages/hdwallet-keepkey-chromeusb/package.json b/packages/hdwallet-keepkey-chromeusb/package.json index 8c17efd01..accd1a722 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey": "1.62.18" + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19" } } diff --git a/packages/hdwallet-keepkey-electron/package.json b/packages/hdwallet-keepkey-electron/package.json index 686334400..61b688faf 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-keepkey": "1.62.18", + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19", "uuid": "^8.3.2" }, "peerDependencies": { diff --git a/packages/hdwallet-keepkey-nodehid/package.json b/packages/hdwallet-keepkey-nodehid/package.json index 2de0969a8..df861abc5 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -14,7 +14,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-keepkey": "1.62.18" + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19" }, "peerDependencies": { "node-hid": "^2.1.1" diff --git a/packages/hdwallet-keepkey-nodewebusb/package.json b/packages/hdwallet-keepkey-nodewebusb/package.json index 3c627c90c..22b3c61ec 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey": "1.62.18" + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19" }, "peerDependencies": { "usb": "^2.3.1" diff --git a/packages/hdwallet-keepkey-tcp/package.json b/packages/hdwallet-keepkey-tcp/package.json index 4cbafd00e..24841b9ef 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19", "axios": "^0.21.1" } } diff --git a/packages/hdwallet-keepkey-webusb/package.json b/packages/hdwallet-keepkey-webusb/package.json index 1c4b43b4a..05b531dd2 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-keepkey": "1.62.18" + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-keepkey": "^1.62.19" }, "devDependencies": { "@types/w3c-web-usb": "^1.0.4" diff --git a/packages/hdwallet-keepkey/package.json b/packages/hdwallet-keepkey/package.json index a826dda37..41329c9c8 100644 --- a/packages/hdwallet-keepkey/package.json +++ b/packages/hdwallet-keepkey/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keepkey", - "version": "1.62.18", + "version": "1.62.19", "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.0", - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@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 014691874..4a6e6b310 100644 --- a/packages/hdwallet-keplr/package.json +++ b/packages/hdwallet-keplr/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-keplr", - "version": "1.62.18", + "version": "1.62.19", "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.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@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 c2fbf2832..a27d07820 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -18,8 +18,8 @@ "@ledgerhq/hw-app-eth": "^6.45.13", "@ledgerhq/hw-transport": "6.31.8", "@ledgerhq/hw-transport-webhid": "^6.30.4", - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-ledger": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-ledger": "^1.62.19", "@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 2b93ded1e..fcb9ba87b 100644 --- a/packages/hdwallet-ledger-webhid/src/transport.ts +++ b/packages/hdwallet-ledger-webhid/src/transport.ts @@ -1,5 +1,8 @@ import Btc from "@ledgerhq/hw-app-btc"; +import Cosmos from "@ledgerhq/hw-app-cosmos"; import Eth from "@ledgerhq/hw-app-eth"; +import Solana from "@ledgerhq/hw-app-solana"; +import Trx from "@ledgerhq/hw-app-trx"; import Transport from "@ledgerhq/hw-transport"; import TransportWebHID from "@ledgerhq/hw-transport-webhid"; import * as core from "@shapeshiftoss/hdwallet-core"; @@ -67,6 +70,26 @@ export function translateCoinAndMethod].bind(eth); return methodInstance as LedgerTransportMethod; } + case "Thorchain": { + const thorchain = new ledger.Thorchain(transport as Transport); + const methodInstance = thorchain[method as LedgerTransportMethodName<"Thorchain">].bind(thorchain); + return methodInstance as LedgerTransportMethod; + } + case "Cosmos": { + const cosmos = new Cosmos(transport as Transport); + const methodInstance = cosmos[method as LedgerTransportMethodName<"Cosmos">].bind(cosmos); + return methodInstance as LedgerTransportMethod; + } + case "Solana": { + const solana = new Solana(transport as Transport); + const methodInstance = solana[method as LedgerTransportMethodName<"Solana">].bind(solana); + return methodInstance as LedgerTransportMethod; + } + case "Tron": { + const trx = new Trx(transport as Transport); + const methodInstance = trx[method as LedgerTransportMethodName<"Tron">].bind(trx); + 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 f9cde4db3..4e123f4b9 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -20,8 +20,8 @@ "@ledgerhq/hw-app-solana": "^7.5.1", "@ledgerhq/hw-transport": "6.31.8", "@ledgerhq/hw-transport-webusb": "6.29.8", - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-ledger": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-ledger": "^1.62.19", "@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 a38b12a62..b2a5be554 100644 --- a/packages/hdwallet-ledger-webusb/src/transport.ts +++ b/packages/hdwallet-ledger-webusb/src/transport.ts @@ -2,6 +2,7 @@ import Btc from "@ledgerhq/hw-app-btc"; import Cosmos from "@ledgerhq/hw-app-cosmos"; import Eth from "@ledgerhq/hw-app-eth"; import Solana from "@ledgerhq/hw-app-solana"; +import Trx from "@ledgerhq/hw-app-trx"; import Transport from "@ledgerhq/hw-transport"; import TransportWebUSB from "@ledgerhq/hw-transport-webusb"; import * as core from "@shapeshiftoss/hdwallet-core"; @@ -104,6 +105,11 @@ export async function translateCoinAndMethod].bind(solana); return methodInstance as LedgerTransportMethod; } + case "Tron": { + const trx = new Trx(transport as Transport); + const methodInstance = trx[method as LedgerTransportMethodName<"Tron">].bind(trx); + 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 291c9b60c..9ad9c7683 100644 --- a/packages/hdwallet-ledger/package.json +++ b/packages/hdwallet-ledger/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-ledger", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -22,10 +22,11 @@ "@ledgerhq/hw-app-cosmos": "^6.32.4", "@ledgerhq/hw-app-eth": "^6.45.13", "@ledgerhq/hw-app-solana": "^7.5.1", + "@ledgerhq/hw-app-trx": "^6.31.9", "@ledgerhq/hw-transport": "6.31.8", "@ledgerhq/logs": "6.13.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.0", - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@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 77a26d456..5078ee5ea 100644 --- a/packages/hdwallet-ledger/src/ledger.ts +++ b/packages/hdwallet-ledger/src/ledger.ts @@ -8,6 +8,7 @@ import * as mayachain from "./mayachain"; import * as solana from "./solana"; import * as thorchain from "./thorchain"; import { LedgerTransport } from "./transport"; +import * as tron from "./tron"; import { coinToLedgerAppName, handleError } from "./utils"; export function isLedger(wallet: core.HDWallet): wallet is LedgerHDWallet { @@ -146,7 +147,8 @@ export class LedgerHDWalletInfo core.ThorchainWalletInfo, core.MayachainWalletInfo, core.CosmosWalletInfo, - core.SolanaWalletInfo + core.SolanaWalletInfo, + core.TronWalletInfo { readonly _supportsBTCInfo = true; readonly _supportsETHInfo = true; @@ -154,6 +156,7 @@ export class LedgerHDWalletInfo readonly _supportsMayachainInfo = true; readonly _supportsCosmosInfo = true; readonly _supportsSolanaInfo = true; + readonly _supportsTronInfo = true; public getVendor(): string { return "Ledger"; @@ -238,6 +241,14 @@ export class LedgerHDWalletInfo throw new Error("Method not implemented"); } + public tronGetAccountPaths(msg: core.TronGetAccountPaths): Array { + return tron.tronGetAccountPaths(msg); + } + + public tronNextAccountPath(msg: core.TronAccountPath): core.TronAccountPath | undefined { + return tron.tronNextAccountPath(msg); + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars public hasNativeShapeShift(srcCoin: core.Coin, dstCoin: core.Coin): boolean { return false; @@ -283,6 +294,8 @@ export class LedgerHDWalletInfo return core.mayachainDescribePath(msg.path); case "Solana": return core.solanaDescribePath(msg.path); + case "Tron": + return core.tronDescribePath(msg.path); default: return describeUTXOPath(msg.path, msg.coin, msg.scriptType); } @@ -359,7 +372,8 @@ export class LedgerHDWallet core.ThorchainWallet, core.MayachainWallet, core.CosmosWallet, - core.SolanaWallet + core.SolanaWallet, + core.TronWallet { readonly _supportsBTC = true; readonly _supportsETH = true; @@ -377,6 +391,7 @@ export class LedgerHDWallet readonly _supportsMayachain = true; readonly _supportsCosmos = true; readonly _supportsSolana = true; + readonly _supportsTron = true; _isLedger = true; @@ -619,6 +634,16 @@ export class LedgerHDWallet return solana.solanaSignTx(this.transport, msg); } + public async tronGetAddress(msg: core.TronGetAddress): Promise { + await this.validateCurrentApp("Tron"); + return tron.tronGetAddress(this.transport, msg); + } + + public async tronSignTx(msg: core.TronSignTx): Promise { + await this.validateCurrentApp("Tron"); + return tron.tronSignTx(this.transport, msg); + } + public disconnect(): Promise { return this.transport.disconnect(); } diff --git a/packages/hdwallet-ledger/src/transport.ts b/packages/hdwallet-ledger/src/transport.ts index 34d628ce4..536dd87c1 100644 --- a/packages/hdwallet-ledger/src/transport.ts +++ b/packages/hdwallet-ledger/src/transport.ts @@ -2,6 +2,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 Solana from "@ledgerhq/hw-app-solana"; +import type Trx from "@ledgerhq/hw-app-trx"; import type Transport from "@ledgerhq/hw-transport"; import * as core from "@shapeshiftoss/hdwallet-core"; @@ -16,7 +17,7 @@ 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"; +export type LedgerTransportCoinType = null | "Btc" | "Eth" | "Thorchain" | "Cosmos" | "Solana" | "Tron"; type CurriedWithTransport any> = T extends ( transport: Transport, ...args: infer R @@ -43,6 +44,8 @@ type LedgerTransportMethodMap = T extends nul ? MethodsOnly : T extends "Solana" ? MethodsOnly + : T extends "Tron" + ? MethodsOnly : never; export type LedgerTransportMethodName = LedgerTransportMethodMap extends never ? never diff --git a/packages/hdwallet-ledger/src/tron.ts b/packages/hdwallet-ledger/src/tron.ts new file mode 100644 index 000000000..6e14346c9 --- /dev/null +++ b/packages/hdwallet-ledger/src/tron.ts @@ -0,0 +1,51 @@ +import * as core from "@shapeshiftoss/hdwallet-core"; + +import { LedgerTransport } from "./transport"; +import { handleError } from "./utils"; + +export async function tronGetAddress(transport: LedgerTransport, msg: core.TronGetAddress): Promise { + const bip32path = core.addressNListToBIP32(msg.addressNList); + + const res = await transport.call("Tron", "getAddress", bip32path, !!msg.showDisplay); + handleError(res, transport, "Unable to obtain Tron address from device."); + + return res.payload.address; +} + +export async function tronSignTx(transport: LedgerTransport, msg: core.TronSignTx): Promise { + const bip32path = core.addressNListToBIP32(msg.addressNList); + + const res = await transport.call("Tron", "signTransaction", bip32path, msg.rawDataHex, []); + handleError(res, transport, "Unable to sign Tron transaction."); + + const signature = res.payload; + + return { + signature, + serialized: msg.rawDataHex + signature, + }; +} + +export function tronGetAccountPaths(msg: core.TronGetAccountPaths): Array { + const slip44 = core.slip44ByCoin("Tron"); + return [ + { + addressNList: [0x80000000 + 44, 0x80000000 + slip44, 0x80000000 + msg.accountIdx, 0, 0], + }, + ]; +} + +export function tronNextAccountPath(msg: core.TronAccountPath): core.TronAccountPath | undefined { + const addressNList = msg.addressNList; + if ( + addressNList[0] === 0x80000000 + 44 && + addressNList[1] === 0x80000000 + core.slip44ByCoin("Tron") && + addressNList[3] === 0 && + addressNList[4] === 0 + ) { + return { + addressNList: [0x80000000 + 44, 0x80000000 + core.slip44ByCoin("Tron"), addressNList[2] + 1, 0, 0], + }; + } + return undefined; +} diff --git a/packages/hdwallet-ledger/src/utils.ts b/packages/hdwallet-ledger/src/utils.ts index 0e1550fba..cdb7eed0d 100644 --- a/packages/hdwallet-ledger/src/utils.ts +++ b/packages/hdwallet-ledger/src/utils.ts @@ -599,6 +599,7 @@ const appNameBySlip44: Record = { 60: "Ethereum", 118: "Cosmos", 145: "Bitcoin Cash", + 195: "Tron", 501: "Solana", 931: "THORChain", }; diff --git a/packages/hdwallet-metamask-multichain/package.json b/packages/hdwallet-metamask-multichain/package.json index eeb2692e4..d05b0cf8f 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.18", + "version": "1.62.19", "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.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@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 834133357..c046ed115 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.1.1", - "@shapeshiftoss/hdwallet-native": "1.62.18", + "@shapeshiftoss/hdwallet-native": "^1.62.19", "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 c1b91a609..8918798e8 100644 --- a/packages/hdwallet-native/package.json +++ b/packages/hdwallet-native/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-native", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -17,7 +17,7 @@ "@bitcoinerlab/secp256k1": "^1.1.1", "@noble/curves": "^1.4.0", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.0", - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@shapeshiftoss/proto-tx-builder": "0.10.0", "@zxing/text-encoding": "^0.9.0", "bchaddrjs": "^0.4.9", diff --git a/packages/hdwallet-phantom/package.json b/packages/hdwallet-phantom/package.json index e05d7f4f6..65b934b07 100644 --- a/packages/hdwallet-phantom/package.json +++ b/packages/hdwallet-phantom/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-phantom", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ }, "dependencies": { "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.0", - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@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 c2ac436e3..3fff29fc2 100644 --- a/packages/hdwallet-portis/package.json +++ b/packages/hdwallet-portis/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-portis", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -16,7 +16,7 @@ "dependencies": { "@portis/web3": "3.0.10", "@shapeshiftoss/bitcoinjs-lib": "7.0.0-shapeshift.0", - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "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 501b3a33c..849deeae6 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.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -14,8 +14,8 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.18", - "@shapeshiftoss/hdwallet-trezor": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", + "@shapeshiftoss/hdwallet-trezor": "^1.62.19", "@trezor/connect-web": "^9.6.4" } } diff --git a/packages/hdwallet-trezor/package.json b/packages/hdwallet-trezor/package.json index 84ab40ba7..75edd3b57 100644 --- a/packages/hdwallet-trezor/package.json +++ b/packages/hdwallet-trezor/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-trezor", - "version": "1.62.18", + "version": "1.62.19", "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.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "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 6dfe97d5c..effd22072 100644 --- a/packages/hdwallet-vultisig/package.json +++ b/packages/hdwallet-vultisig/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-vultisig", - "version": "1.62.18", + "version": "1.62.19", "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.0", - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@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 97e2d59fc..e198e63b1 100644 --- a/packages/hdwallet-walletconnect/package.json +++ b/packages/hdwallet-walletconnect/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-walletconnect", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@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 628095789..4d573305c 100644 --- a/packages/hdwallet-walletconnectV2/package.json +++ b/packages/hdwallet-walletconnectV2/package.json @@ -1,6 +1,6 @@ { "name": "@shapeshiftoss/hdwallet-walletconnectv2", - "version": "1.62.18", + "version": "1.62.19", "license": "MIT", "publishConfig": { "access": "public" @@ -15,7 +15,7 @@ "prepublishOnly": "yarn clean && yarn build" }, "dependencies": { - "@shapeshiftoss/hdwallet-core": "1.62.18", + "@shapeshiftoss/hdwallet-core": "^1.62.19", "@walletconnect/ethereum-provider": "^2.20.2", "@walletconnect/modal": "^2.6.2", "ethers": "^5.6.5" diff --git a/yarn.lock b/yarn.lock index c4f887b5d..10afdf977 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1688,6 +1688,16 @@ rxjs "^7.8.1" semver "^7.3.5" +"@ledgerhq/devices@8.7.0": + version "8.7.0" + resolved "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.7.0.tgz#39e011c484c4251c92769f92cf8c23b8a0b4ce39" + integrity sha512-3pSOULPUhClk2oOxa6UnoyXW8+05FK7r6cpq2WiTey4kyIUjmIraO7AX9lhz9IU73dGVtBMdU+NCPPO2RYJaTQ== + dependencies: + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/logs" "^6.13.0" + rxjs "^7.8.1" + semver "^7.3.5" + "@ledgerhq/domain-service@^1.2.38": version "1.2.38" resolved "https://registry.yarnpkg.com/@ledgerhq/domain-service/-/domain-service-1.2.38.tgz#b21ce81a907e6995262bd388e0d394c8cd309f9c" @@ -1706,6 +1716,11 @@ resolved "https://registry.yarnpkg.com/@ledgerhq/errors/-/errors-6.23.0.tgz#fae7b61095ce4c033394d16085b5f14ca9f9d738" integrity sha512-bM7tPYShPThtBy1Y+9D28iquOeP5W5s4p7KKD/cUQoaVaPibrtC7Mm4u+IeSlH4WGvFJkTmv0vmZJajuZtM79A== +"@ledgerhq/errors@^6.27.0": + version "6.27.0" + resolved "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.27.0.tgz#3acc978ed1dbbdd8049dcedccccf4a96968f583a" + integrity sha512-EE2hATONHdNP3YWFe3rZwwpSEzI5oN+q/xTjOulnjHZo84TLjungegEJ54A/Pzld0woulkkeVA27FbW5SAO1aA== + "@ledgerhq/evm-tools@^1.7.1": version "1.7.1" resolved "https://registry.yarnpkg.com/@ledgerhq/evm-tools/-/evm-tools-1.7.1.tgz#58e3144eb56da542f0ff858b7d60a6ae8908947b" @@ -1774,6 +1789,13 @@ "@ledgerhq/hw-transport" "^6.31.8" bip32-path "^0.4.2" +"@ledgerhq/hw-app-trx@^6.31.9": + version "6.31.9" + resolved "https://registry.npmjs.org/@ledgerhq/hw-app-trx/-/hw-app-trx-6.31.9.tgz#8d73d1baa9b28a1f1d30f1a330c53f49204d362d" + integrity sha512-lqtmOFm7f9XwbdHiA7qBiuhCppfKTHWu+8w06IS5seMxcLSCMvHvxsog91rWAijlD4qP1AzJTQFGnrE+bRvAjw== + dependencies: + "@ledgerhq/hw-transport" "6.31.13" + "@ledgerhq/hw-transport-mocker@^6.29.8": version "6.29.8" resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport-mocker/-/hw-transport-mocker-6.29.8.tgz#7188e0fe8dfa5df5451ce3b55c192c89007ccdea" @@ -1803,6 +1825,16 @@ "@ledgerhq/hw-transport" "^6.31.8" "@ledgerhq/logs" "^6.13.0" +"@ledgerhq/hw-transport@6.31.13": + version "6.31.13" + resolved "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.31.13.tgz#87e4a53bdcca257eeea6cbcc7a662c449a0cfa92" + integrity sha512-MrJRDk74wY980ofiFPRpTHQBbRw1wDuKbdag1zqlO1xtJglymwwY03K2kvBNvkm1RTSCPUp/nAoNG+WThZuuew== + dependencies: + "@ledgerhq/devices" "8.7.0" + "@ledgerhq/errors" "^6.27.0" + "@ledgerhq/logs" "^6.13.0" + events "^3.3.0" + "@ledgerhq/hw-transport@6.31.8", "@ledgerhq/hw-transport@^6.31.8": version "6.31.8" resolved "https://registry.yarnpkg.com/@ledgerhq/hw-transport/-/hw-transport-6.31.8.tgz#1127ad66ec68c2ec82f968e3764078b5bbbfbc1a"