@swapkit/wallet-hardware 6.2.0 → 6.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/THIRD_PARTY_LICENSES.md +4 -4
  2. package/dist/{chunk-rydhx4se.js → chunk-0k1b2ddn.js} +3 -3
  3. package/dist/{chunk-rydhx4se.js.map → chunk-0k1b2ddn.js.map} +2 -2
  4. package/dist/{chunk-j3n6fbqh.js → chunk-2tzsz8f3.js} +4 -4
  5. package/dist/{chunk-j3n6fbqh.js.map → chunk-2tzsz8f3.js.map} +1 -1
  6. package/dist/{chunk-2jddegc1.js → chunk-410fpx61.js} +4 -4
  7. package/dist/{chunk-2jddegc1.js.map → chunk-410fpx61.js.map} +1 -1
  8. package/dist/chunk-8mkdjmw2.js +4 -0
  9. package/dist/chunk-8mkdjmw2.js.map +10 -0
  10. package/dist/{chunk-7kwtpk70.js → chunk-96p7njae.js} +3 -3
  11. package/dist/{chunk-7kwtpk70.js.map → chunk-96p7njae.js.map} +2 -2
  12. package/dist/{chunk-g6rrzxcx.js → chunk-97nsp4z6.js} +3 -3
  13. package/dist/{chunk-g6rrzxcx.js.map → chunk-97nsp4z6.js.map} +1 -1
  14. package/dist/{chunk-kaw35ae2.js → chunk-9a9gn4pb.js} +3 -3
  15. package/dist/{chunk-a47dwwv6.js.map → chunk-9a9gn4pb.js.map} +1 -1
  16. package/dist/chunk-a39rm9nv.js +4 -0
  17. package/dist/{chunk-42xrtarj.js.map → chunk-a39rm9nv.js.map} +5 -5
  18. package/dist/chunk-c8mwf9cn.js +4 -0
  19. package/dist/{chunk-kaw35ae2.js.map → chunk-c8mwf9cn.js.map} +1 -1
  20. package/dist/{chunk-b7htg03t.js → chunk-dhhmywmb.js} +4 -4
  21. package/dist/{chunk-b7htg03t.js.map → chunk-dhhmywmb.js.map} +1 -1
  22. package/dist/{chunk-x28a37pz.js → chunk-dsa641rq.js} +3 -3
  23. package/dist/{chunk-x28a37pz.js.map → chunk-dsa641rq.js.map} +2 -2
  24. package/dist/{chunk-7rbvcts9.js → chunk-grj9nvte.js} +3 -3
  25. package/dist/{chunk-7rbvcts9.js.map → chunk-grj9nvte.js.map} +1 -1
  26. package/dist/{chunk-tecse0bj.js → chunk-napm4102.js} +3 -3
  27. package/dist/{chunk-tecse0bj.js.map → chunk-napm4102.js.map} +1 -1
  28. package/dist/{chunk-a47dwwv6.js → chunk-nb08g045.js} +3 -3
  29. package/dist/{chunk-sp3dq5hr.js.map → chunk-nb08g045.js.map} +1 -1
  30. package/dist/chunk-npe2r2ge.js +4 -0
  31. package/dist/{chunk-tm5gk51g.js.map → chunk-npe2r2ge.js.map} +1 -1
  32. package/dist/chunk-p9mwkgye.js +4 -0
  33. package/dist/{chunk-s2akss77.js.map → chunk-p9mwkgye.js.map} +14 -12
  34. package/dist/{chunk-b093ajcq.js → chunk-qjp8j8e5.js} +3 -3
  35. package/dist/{chunk-b093ajcq.js.map → chunk-qjp8j8e5.js.map} +1 -1
  36. package/dist/{chunk-71kfnwdp.js → chunk-r1fk1sx9.js} +3 -3
  37. package/dist/{chunk-71kfnwdp.js.map → chunk-r1fk1sx9.js.map} +1 -1
  38. package/dist/{chunk-5xg0xc0g.js → chunk-ta7bqmy3.js} +3 -3
  39. package/dist/{chunk-5xg0xc0g.js.map → chunk-ta7bqmy3.js.map} +1 -1
  40. package/dist/{chunk-545s1tsc.js → chunk-tgvgr630.js} +3 -3
  41. package/dist/{chunk-545s1tsc.js.map → chunk-tgvgr630.js.map} +2 -2
  42. package/dist/{chunk-035dayv6.js → chunk-v8x9ptxs.js} +3 -3
  43. package/dist/{chunk-035dayv6.js.map → chunk-v8x9ptxs.js.map} +1 -1
  44. package/dist/{chunk-mzan0m09.js → chunk-wm89desc.js} +20 -20
  45. package/dist/{chunk-mzan0m09.js.map → chunk-wm89desc.js.map} +12 -10
  46. package/dist/{chunk-a6vcbcyd.js → chunk-wtyhjt5e.js} +3 -3
  47. package/dist/{chunk-a6vcbcyd.js.map → chunk-wtyhjt5e.js.map} +1 -1
  48. package/dist/{chunk-s5a5v0m1.js → chunk-xskdbz15.js} +3 -3
  49. package/dist/{chunk-s5a5v0m1.js.map → chunk-xskdbz15.js.map} +2 -2
  50. package/dist/{chunk-sbebfr50.js → chunk-ytjqb1sd.js} +3 -3
  51. package/dist/{chunk-sbebfr50.js.map → chunk-ytjqb1sd.js.map} +1 -1
  52. package/dist/{chunk-ys51wj1c.js → chunk-zbesf7sy.js} +3 -3
  53. package/dist/{chunk-ys51wj1c.js.map → chunk-zbesf7sy.js.map} +1 -1
  54. package/dist/keepkey/index.js +2 -2
  55. package/dist/keepkey/index.js.map +1 -1
  56. package/dist/ledger/index.cjs +28 -28
  57. package/dist/ledger/index.cjs.map +28 -24
  58. package/dist/ledger/index.js +2 -2
  59. package/dist/ledger/index.js.map +4 -4
  60. package/dist/trezor/index.cjs +2 -2
  61. package/dist/trezor/index.cjs.map +5 -4
  62. package/dist/trezor/index.js +2 -2
  63. package/dist/trezor/index.js.map +3 -3
  64. package/dist/types/ledger/clients/zcash.d.ts.map +1 -1
  65. package/dist/types/trezor/hypercoreSigner.d.ts +22 -0
  66. package/dist/types/trezor/hypercoreSigner.d.ts.map +1 -0
  67. package/dist/types/trezor/index.d.ts +2 -2
  68. package/dist/types/trezor/index.d.ts.map +1 -1
  69. package/package.json +12 -12
  70. package/src/ledger/clients/zcash.ts +16 -6
  71. package/src/ledger/index.ts +2 -2
  72. package/src/trezor/hypercoreSigner.ts +96 -0
  73. package/src/trezor/index.ts +72 -16
  74. package/dist/chunk-42xrtarj.js +0 -4
  75. package/dist/chunk-s2akss77.js +0 -4
  76. package/dist/chunk-sp3dq5hr.js +0 -4
  77. package/dist/chunk-tm5gk51g.js +0 -4
@@ -2,7 +2,7 @@
2
2
  "version": 3,
3
3
  "sources": ["../src/ledger/index.ts", "../src/ledger/helpers/dmk.ts", "../src/ledger/helpers/executeDeviceAction.ts", "../src/ledger/helpers/getLedgerAddress.ts", "../src/ledger/helpers/getLedgerClient.ts", "../src/ledger/clients/bitcoin.ts", "../src/ledger/clients/utxo.ts", "../src/ledger/helpers/ledgerJsDmkBridge.ts", "../src/ledger/clients/utxo-legacy-outputs.ts", "../src/ledger/clients/cardano.ts", "../src/ledger/clients/cosmos.ts", "../src/ledger/helpers/lowS.ts", "../src/ledger/clients/evm.ts", "../src/ledger/clients/near.ts", "../src/ledger/clients/stellar.ts", "../src/ledger/clients/sui.ts", "../src/ledger/clients/thorchain/index.ts", "../src/ledger/clients/thorchain/protocol.ts", "../src/ledger/clients/ton.ts", "../src/ledger/clients/tron.ts", "../src/ledger/clients/xrp.ts", "../src/ledger/clients/zcash.ts"],
4
4
  "sourcesContent": [
5
- "import type Transport from \"@ledgerhq/hw-transport\";\nimport { hex } from \"@scure/base\";\nimport {\n AssetValue,\n Chain,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n filterSupportedChains,\n type GenericTransferParams,\n getUTXOScriptTypeForPath,\n NetworkDerivationPath,\n SwapKitError,\n type UTXOChain,\n UTXOScriptType,\n WalletOption,\n} from \"@swapkit/helpers\";\nimport type { TONTransactionInput } from \"@swapkit/toolboxes/ton\";\nimport {\n addInputsAndOutputs,\n assertDerivationIndex,\n compileMemo,\n createHDWalletHelpers,\n getNetworkForChain,\n getScriptTypeForAddress,\n getUTXOAccountIndexFromPath,\n getUTXOAccountPath,\n getUTXOAddressPath,\n getUtxoApi,\n type UTXOBuildTxParams,\n type UTXOForMultiAddressTransfer,\n type UTXOTransferParams,\n type UTXOType,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction, ZcashTransaction } from \"@swapkit/utxo-signer\";\nimport { createWallet, getWalletSupportedChains, type HardwareExtendedPublicKeyInfo } from \"@swapkit/wallet-core\";\nimport { match, P } from \"ts-pattern\";\nimport {\n getLedgerAddress,\n getLedgerClient,\n type LedgerDeviceActionStateHandler,\n type LedgerDMKSession,\n} from \"./helpers\";\nimport { createCachedRawTxResolver } from \"./helpers/rawTx\";\n\ntype BitcoinLedgerClient = ReturnType<typeof import(\"./clients/bitcoin\")[\"BitcoinLedger\"]>;\ntype LegacyUTXOLedgerClient = ReturnType<typeof import(\"./clients/utxo\")[\"BitcoinCashLedger\"]>;\ntype ZcashLedgerClient = ReturnType<typeof import(\"./clients/zcash\")[\"ZcashLedger\"]>;\ntype UTXOLedgerClient = BitcoinLedgerClient | LegacyUTXOLedgerClient | ZcashLedgerClient;\n\n/**\n * Options passed to `connectLedger` at call time.\n *\n * When `dmkSession` is omitted, the default browser WebHID flow discovers a\n * device and reuses one session across chains. Lazy-loaded apps can call\n * `preloadLedgerDMK` before the user gesture that starts connection.\n */\nexport interface ConnectLedgerOptions {\n address?: string;\n /** Caller-owned DMK session used by every supported chain. */\n dmkSession?: LedgerDMKSession;\n /** Receives DMK progress and device-interaction states. */\n onDeviceActionState?: LedgerDeviceActionStateHandler;\n /** Ledger-provided token required for Transaction Checks. */\n originToken?: string;\n /** @deprecated Temporary non-EVM fallback. Cannot be combined with `dmkSession`. */\n transport?: Transport;\n}\n\ninterface WalletMethodsParams<C extends Chain = Chain> extends ConnectLedgerOptions {\n chain: C;\n derivationPath?: DerivationPathArray;\n}\n\ninterface LedgerAccountXpubParams {\n chain: UTXOChain;\n path: string;\n signer: UTXOLedgerClient;\n xpubVersion: number;\n}\n\ninterface SignLedgerTransactionParams {\n inputUtxos?: UTXOType[];\n transaction: Transaction | ZcashTransaction;\n}\n\nconst LEDGER_SUPPORTED_CHAINS_CONFIG = [\n Chain.Arbitrum,\n Chain.Arc,\n Chain.Aurora,\n Chain.Avalanche,\n Chain.Base,\n Chain.Berachain,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cardano,\n Chain.Cosmos,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Gnosis,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.Ripple,\n Chain.Robinhood,\n Chain.Stellar,\n Chain.Sui,\n Chain.THORChain,\n Chain.Ton,\n Chain.XLayer,\n Chain.Tron,\n Chain.Zcash,\n] as const;\n\ntype LedgerSupportedChain = (typeof LEDGER_SUPPORTED_CHAINS_CONFIG)[number];\n\nconst LEDGER_UTXO_CHAINS = [\n Chain.BitcoinCash,\n Chain.Bitcoin,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Litecoin,\n Chain.Zcash,\n] as const satisfies readonly UTXOChain[];\n\nconst LEDGER_EVM_CHAINS = [\n Chain.Ethereum,\n Chain.Avalanche,\n Chain.Arbitrum,\n Chain.Arc,\n Chain.Berachain,\n Chain.Optimism,\n Chain.Polygon,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Aurora,\n Chain.Gnosis,\n Chain.Monad,\n Chain.Robinhood,\n Chain.XLayer,\n] as const satisfies readonly LedgerSupportedChain[];\n\ntype LedgerEVMChain = (typeof LEDGER_EVM_CHAINS)[number];\n\nfunction isLedgerSupportedChain(chain: Chain): chain is LedgerSupportedChain {\n return LEDGER_SUPPORTED_CHAINS_CONFIG.includes(chain as LedgerSupportedChain);\n}\n\nexport const ledgerWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectLedger(\n chains: Chain[],\n derivationPath?: DerivationPathArray,\n { address, dmkSession, onDeviceActionState, originToken, transport }: ConnectLedgerOptions = {},\n ) {\n const [chain] = filterSupportedChains({ chains, supportedChains, walletType });\n\n if (!chain) return false;\n\n const resolvedPath = derivationPath ?? (NetworkDerivationPath[chain] as DerivationPathArray | undefined);\n const walletMethods = await getWalletMethods({\n address,\n chain,\n derivationPath: resolvedPath,\n dmkSession,\n onDeviceActionState,\n originToken,\n transport,\n });\n\n addChain({ ...walletMethods, chain, walletType: WalletOption.LEDGER });\n\n return true;\n },\n getExtendedPublicKey: getLedgerExtendedPublicKey,\n name: \"connectLedger\",\n signingSupport: {\n ...Object.fromEntries(LEDGER_EVM_CHAINS.map((chain) => [chain, { direct: true, typedData: true }])),\n [Chain.Bitcoin]: { direct: true },\n [Chain.BitcoinCash]: { direct: true },\n [Chain.Cardano]: { direct: true },\n [Chain.Cosmos]: { direct: true },\n [Chain.Dash]: { direct: true },\n [Chain.Dogecoin]: { direct: true },\n [Chain.Litecoin]: { direct: true },\n [Chain.Near]: { direct: true },\n [Chain.Ripple]: { direct: true },\n [Chain.Stellar]: { direct: true },\n [Chain.Sui]: { direct: true },\n [Chain.THORChain]: { direct: true },\n [Chain.Ton]: { direct: true },\n [Chain.Tron]: { direct: true },\n // ZEC transparent transfers use DSK, but route-level PCZT signing remains unsupported.\n },\n supportedChains: [...LEDGER_SUPPORTED_CHAINS_CONFIG],\n walletType: WalletOption.LEDGER,\n});\n\nexport const LEDGER_SUPPORTED_CHAINS = getWalletSupportedChains(ledgerWallet);\n\nfunction getLedgerAccountXpub({ chain, path, signer, xpubVersion }: LedgerAccountXpubParams) {\n const ledgerPath = match(chain)\n .with(Chain.Bitcoin, Chain.Litecoin, () => path)\n .with(Chain.BitcoinCash, Chain.Dash, Chain.Dogecoin, Chain.Zcash, () => path.replace(/^m\\//, \"\"))\n .exhaustive();\n\n return match(chain)\n .with(Chain.Bitcoin, () => (signer as BitcoinLedgerClient).getExtendedPublicKey({ path: ledgerPath }))\n .with(Chain.Zcash, () => (signer as ZcashLedgerClient).getExtendedPublicKey({ path: ledgerPath, xpubVersion }))\n .with(Chain.BitcoinCash, Chain.Dash, Chain.Dogecoin, Chain.Litecoin, () =>\n (signer as LegacyUTXOLedgerClient).getExtendedPublicKey(ledgerPath, xpubVersion),\n )\n .exhaustive();\n}\n\n// Toolbox-built transactions keep input txids in display order, the order the UTXO API looks transactions up by,\n// while ZcashTransaction.fromBytes (raw API route transactions) keeps them in wire order, so try both. A txid and its\n// byte reversal cannot both name real transactions, so the fallback cannot fetch an unrelated one.\nfunction resolveZcashInputUtxos(transaction: ZcashTransaction): Promise<UTXOType[]> {\n const zcashApi = getUtxoApi(Chain.Zcash);\n const getRawTx = createCachedRawTxResolver((txid) => zcashApi.getRawTx(txid));\n\n return Promise.all(\n Array.from({ length: transaction.inputsLength }, async (_, inputIndex) => {\n const input = transaction.getInput(inputIndex);\n const txid = hex.encode(input.txid);\n const reversedTxid = hex.encode(input.txid.slice().reverse());\n const directTxHex = await getRawTx(txid);\n const [hash, txHex] = directTxHex ? [txid, directTxHex] : [reversedTxid, await getRawTx(reversedTxid)];\n if (!txHex) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n inputIndex,\n outputIndex: input.index,\n reason: \"Unable to resolve previous transaction hex for Ledger signing in either txid byte order\",\n reversedTxid,\n txid,\n });\n }\n\n // The Zcash client takes amounts from the device's trusted inputs; fromBytes leaves input values at zero.\n return { hash, index: input.index, txHex, value: Number(input.value) };\n }),\n );\n}\n\nexport async function getLedgerExtendedPublicKey(\n chain: Chain,\n derivationPath?: DerivationPathArray,\n {\n accountIndex,\n dmkSession,\n onDeviceActionState,\n transport,\n }: {\n accountIndex?: number;\n dmkSession?: LedgerDMKSession;\n onDeviceActionState?: LedgerDeviceActionStateHandler;\n transport?: Transport;\n } = {},\n): Promise<HardwareExtendedPublicKeyInfo | undefined> {\n if (![Chain.BitcoinCash, Chain.Bitcoin, Chain.Dash, Chain.Dogecoin, Chain.Litecoin, Chain.Zcash].includes(chain)) {\n throw new SwapKitError(\"wallet_chain_not_supported\", { chain, wallet: WalletOption.LEDGER });\n }\n\n const utxoChain = chain as UTXOChain;\n const signer = await getLedgerClient({\n chain: utxoChain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n });\n if (!signer.getExtendedPublicKey) return undefined;\n\n const accountPath = getUTXOAccountPath({ accountIndex, chain: utxoChain, derivationPath });\n const path = derivationPathToString(accountPath);\n const xpubVersion = getNetworkForChain(utxoChain).bip32.public;\n try {\n const xpub = await getLedgerAccountXpub({ chain: utxoChain, path, signer, xpubVersion });\n return { accountIndex: getUTXOAccountIndexFromPath(accountPath), path, xpub };\n } finally {\n await (signer as { disconnect?: () => Promise<void> }).disconnect?.();\n }\n}\n\nasync function getUTXOWalletMethods({\n address: providedAddress,\n chain,\n dmkSession,\n derivationPath,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<UTXOChain>) {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const utxoChain = chain;\n\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n\n const address = providedAddress ?? (await getLedgerAddress({ chain, ledgerClient: signer }));\n // On Bitcoin the account's path states its encoding (BIP44/49/84/86). The other apps sign for the address format\n // the client derives (an 86' Litecoin account is ltc1q), so they, like a custom purpose, follow the address form.\n const scriptType =\n (chain === Chain.Bitcoin ? getUTXOScriptTypeForPath(derivationPath) : undefined) ??\n getScriptTypeForAddress(address, utxoChain);\n\n const { publicKey, signLedgerTransaction, toolboxSigner } = await match(chain)\n .with(Chain.Bitcoin, async () => {\n const bitcoinSigner = signer as BitcoinLedgerClient;\n // Nested SegWit and taproot inputs need the key behind them (redeemScript, tapInternalKey).\n const needsPublicKey = scriptType === UTXOScriptType.P2SH_P2WPKH || scriptType === UTXOScriptType.P2TR;\n const publicKey = needsPublicKey ? await bitcoinSigner.getPublicKey() : undefined;\n return {\n publicKey,\n signLedgerTransaction: ({ inputUtxos, transaction }: SignLedgerTransactionParams) =>\n bitcoinSigner.signTransactionHex({ inputUtxos, tx: transaction as Transaction }),\n toolboxSigner: {\n getAddress: bitcoinSigner.getAddress,\n publicKey,\n signTransaction: bitcoinSigner.signTransaction,\n },\n };\n })\n .with(Chain.BitcoinCash, Chain.Dogecoin, Chain.Dash, Chain.Litecoin, async () => {\n const { createLegacyPsbtSigner, signLegacyPsbtTransaction } = await import(\"./clients/utxo-legacy-adapter\");\n const legacySigner = signer as LegacyUTXOLedgerClient;\n return {\n publicKey: undefined,\n signLedgerTransaction: ({ inputUtxos, transaction }: SignLedgerTransactionParams) =>\n signLegacyPsbtTransaction({\n chain: utxoChain,\n inputUtxos,\n legacyClient: legacySigner,\n tx: transaction as Transaction,\n }),\n toolboxSigner: createLegacyPsbtSigner({ address, chain: utxoChain, legacyClient: legacySigner }),\n };\n })\n .with(Chain.Zcash, () => {\n const zcashSigner = signer as ZcashLedgerClient;\n return {\n publicKey: undefined,\n signLedgerTransaction: async ({ inputUtxos, transaction }: SignLedgerTransactionParams) => {\n if (!(\"consensusBranchId\" in transaction)) {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", {\n method: \"signPCZT\",\n wallet: WalletOption.LEDGER,\n });\n }\n\n const resolvedInputUtxos = inputUtxos ?? (await resolveZcashInputUtxos(transaction));\n return zcashSigner.signTransaction({ inputUtxos: resolvedInputUtxos, tx: transaction });\n },\n toolboxSigner: undefined,\n };\n })\n .exhaustive();\n\n const toolbox = toolboxSigner\n ? await getUtxoToolbox(utxoChain, { scriptType, signer: toolboxSigner })\n : getUtxoToolbox(utxoChain, { scriptType });\n const signAndBroadcastTransaction = async (transaction: Transaction | ZcashTransaction) =>\n toolbox.broadcastTx(await signLedgerTransaction({ transaction }));\n\n // The toolbox's transfer parameters plus a public key override; the sender is always the Ledger account.\n const transfer = async (params: UTXOTransferParams & Pick<UTXOBuildTxParams, \"enableRBF\" | \"publicKey\">) => {\n const feeRate = params.feeRate || (await toolbox.getFeeRates())[params.feeOptionKey || FeeOption.Fast];\n\n const { tx, inputs } = await toolbox.createTransaction({\n ...params,\n feeRate,\n fetchTxHex: true,\n publicKey: params.publicKey ?? publicKey,\n sender: address,\n });\n\n const txHex = await signLedgerTransaction({ inputUtxos: inputs, transaction: tx });\n const txHash = await toolbox.broadcastTx(txHex);\n\n return txHash;\n };\n\n async function getExtendedPublicKeyInfo({ accountIndex }: { accountIndex?: number } = {}) {\n if (!signer.getExtendedPublicKey) return undefined;\n\n const accountPath = getUTXOAccountPath({ accountIndex, chain: utxoChain, derivationPath });\n const path = derivationPathToString(accountPath);\n const xpubVersion = getNetworkForChain(utxoChain).bip32.public;\n const xpub = await getLedgerAccountXpub({ chain, path, signer, xpubVersion });\n\n return { accountIndex: getUTXOAccountIndexFromPath(accountPath), path, xpub };\n }\n\n function getExtendedPublicKey(params: { accountIndex?: number } = {}) {\n return getExtendedPublicKeyInfo(params);\n }\n\n async function deriveAddressAtIndex({\n accountIndex,\n index,\n change = false,\n }: {\n accountIndex?: number;\n index: number;\n change?: boolean;\n }) {\n try {\n const fullPath = getUTXOAddressPath({ accountIndex, chain: utxoChain, change, derivationPath, index });\n\n const indexedSigner = await getLedgerClient({\n chain: utxoChain,\n derivationPath: fullPath,\n dmkSession,\n onDeviceActionState,\n transport,\n });\n const derivedAddress = await getLedgerAddress({ chain: utxoChain, ledgerClient: indexedSigner });\n\n return {\n accountIndex: getUTXOAccountIndexFromPath(fullPath),\n address: derivedAddress,\n change,\n index,\n path: derivationPathToString(fullPath),\n pubkey: \"\",\n };\n } catch {\n return undefined;\n }\n }\n\n async function deriveAddresses({\n accountIndex,\n count,\n startIndex = 0,\n change = false,\n }: {\n accountIndex?: number;\n count: number;\n startIndex?: number;\n change?: boolean;\n }) {\n assertDerivationIndex(\"count\", count);\n assertDerivationIndex(\"startIndex\", startIndex);\n\n const addresses = await Promise.all(\n Array.from({ length: count }, (_, i) => deriveAddressAtIndex({ accountIndex, change, index: startIndex + i })),\n );\n\n return addresses.filter((address) => !!address);\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain: utxoChain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (addr: string) => getUtxoApi(utxoChain).getUtxos({ address: addr, fetchTxHex: true }),\n });\n\n async function transferFromMultipleAddresses({\n utxos,\n recipient,\n assetValue,\n memo,\n feeRate,\n feeOptionKey,\n changeAddress,\n }: {\n utxos: UTXOForMultiAddressTransfer[];\n recipient: string;\n assetValue: AssetValue;\n memo?: string;\n feeRate?: number;\n feeOptionKey?: FeeOption;\n changeAddress?: string;\n }) {\n if (chain === Chain.Zcash) {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", {\n method: \"transferFromMultipleAddresses\",\n wallet: WalletOption.LEDGER,\n });\n }\n\n if (!utxos.length) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n message: \"No UTXOs provided for multi-address transfer\",\n });\n }\n\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n const memoScript = memo ? compileMemo(memo) : null;\n\n const targetOutputs: Array<{ address: string; value: number } | { script: Uint8Array; value: number }> = [\n { address: recipient, value: assetValue.getBaseValue(\"number\") },\n ];\n if (memoScript) {\n targetOutputs.push({ script: memoScript, value: 0 });\n }\n\n const basicUtxos = utxos.map(({ hash, index, value, txHex, witnessUtxo }) => ({\n hash,\n index,\n txHex,\n value,\n witnessUtxo,\n }));\n\n const { inputs: selectedInputs, outputs } = toolbox.accumulative({\n chain: utxoChain,\n feeRate: txFeeRate,\n inputs: basicUtxos,\n outputs: targetOutputs,\n });\n\n if (!(selectedInputs && outputs)) {\n throw new SwapKitError(\"wallet_ledger_connection_error\", {\n message: \"Insufficient balance for multi-address transfer\",\n });\n }\n\n const { Transaction } = await import(\"@swapkit/utxo-signer\");\n const tx = new Transaction({ allowLegacyWitnessUtxo: true, allowUnknownOutputs: !!memoScript, version: 1 });\n const senderAddress = changeAddress || utxos[0]?.address || recipient;\n\n addInputsAndOutputs({\n chain: utxoChain,\n compiledMemo: memoScript,\n inputs: selectedInputs,\n outputs,\n sender: senderAddress,\n tx,\n });\n\n const inputDerivationPaths = selectedInputs.map((input: { hash: string; index: number }) => {\n const utxoInfo = utxos.find((u) => u.hash === input.hash && u.index === input.index);\n const fullPath = getUTXOAddressPath({\n chain: utxoChain,\n change: utxoInfo?.isChange ?? false,\n derivationPath,\n index: utxoInfo?.derivationIndex ?? 0,\n });\n return derivationPathToString(fullPath);\n });\n\n if (!signer.signTransactionWithMultiplePaths) {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", { method: \"signTransactionWithMultiplePaths\" });\n }\n\n const txHex = await match(chain)\n .with(Chain.Bitcoin, () =>\n (signer as BitcoinLedgerClient).signTransactionWithMultiplePaths({\n derivationPaths: inputDerivationPaths,\n inputUtxos: selectedInputs,\n tx,\n }),\n )\n .with(Chain.BitcoinCash, Chain.Dash, Chain.Dogecoin, Chain.Litecoin, () =>\n (signer as LegacyUTXOLedgerClient).signTransactionWithMultiplePaths(tx, selectedInputs, inputDerivationPaths),\n )\n .exhaustive();\n return toolbox.broadcastTx(txHex);\n }\n\n return {\n ...toolbox,\n ...hdHelpers,\n address,\n deriveAddressAtIndex,\n deriveAddresses,\n getExtendedPublicKey,\n getExtendedPublicKeyInfo,\n signAndBroadcastTransaction,\n transfer,\n transferFromMultipleAddresses,\n };\n}\n\nasync function getEVMWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n originToken,\n transport,\n}: WalletMethodsParams<LedgerEVMChain>) {\n const signer = await getLedgerClient({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n originToken,\n transport,\n });\n const { getEvmToolboxAsync } = await import(\"@swapkit/toolboxes/evm\");\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = await getEvmToolboxAsync(chain, { signer });\n\n return { ...toolbox, address };\n}\n\nasync function getCosmosWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Cosmos>) {\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = getCosmosToolbox(chain, { signer });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n\n return { ...toolbox, address };\n}\n\nasync function getTHORChainWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.THORChain>) {\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = getCosmosToolbox(chain, { signer });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const { sign: signMessage } = signer;\n\n return { ...toolbox, address, signMessage };\n}\n\nasync function getNearWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Near>) {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const accountId = await signer.getAddress();\n const toolbox = getNearToolbox({ signer });\n\n return { ...toolbox, address: accountId };\n}\n\nasync function getCardanoWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Cardano>) {\n const { getCardanoToolbox } = await import(\"@swapkit/toolboxes/cardano\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = signer.getAddress();\n const toolbox = getCardanoToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getRippleWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Ripple>) {\n const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = signer.getAddress();\n const toolbox = getRippleToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getStellarWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Stellar>) {\n const { getStellarToolbox } = await import(\"@swapkit/toolboxes/stellar\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getStellarToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getTronWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Tron>) {\n const { getTronToolbox } = await import(\"@swapkit/toolboxes/tron\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getTronToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getSuiWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Sui>) {\n const { getSuiToolbox } = await import(\"@swapkit/toolboxes/sui\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getSuiToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getTONWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Ton>) {\n const { getTONToolbox } = await import(\"@swapkit/toolboxes/ton\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n // Signerless toolbox: it builds messages and reads balances, the device signs the external message.\n const toolbox = getTONToolbox();\n\n const signAndBroadcastTransaction = async (transaction: TONTransactionInput) =>\n toolbox.broadcastTransaction(await signer.signTransaction(transaction));\n\n const transfer = async ({ assetValue, memo, recipient, sweep }: GenericTransferParams) =>\n signAndBroadcastTransaction(\n await toolbox.createTransaction({ assetValue, memo, recipient, sender: address, sweep }),\n );\n\n // Same budget as TON Connect: the signerless toolbox underestimates jetton fees\n const estimateTransactionFee = ({ assetValue }: GenericTransferParams) =>\n Promise.resolve(AssetValue.from({ chain: Chain.Ton, value: assetValue.isGasAsset ? \"0.01\" : \"0.06\" }));\n\n const sign = () => {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", { method: \"sign\", wallet: WalletOption.LEDGER });\n };\n\n return {\n ...toolbox,\n address,\n estimateTransactionFee,\n getAddress: () => address,\n getBalance: () => toolbox.getBalance(address),\n sign,\n signAndBroadcastTransaction,\n transfer,\n };\n}\n\nfunction getWalletMethods(params: WalletMethodsParams) {\n if (!isLedgerSupportedChain(params.chain)) {\n throw new SwapKitError(\"wallet_ledger_chain_not_supported\", { chain: params.chain });\n }\n\n return match(params.chain)\n .with(P.union(...LEDGER_UTXO_CHAINS), (chain) => getUTXOWalletMethods({ ...params, chain }))\n .with(P.union(...LEDGER_EVM_CHAINS), (chain) => getEVMWalletMethods({ ...params, chain }))\n .with(Chain.Cosmos, (chain) => getCosmosWalletMethods({ ...params, chain }))\n .with(Chain.THORChain, (chain) => getTHORChainWalletMethods({ ...params, chain }))\n .with(Chain.Near, (chain) => getNearWalletMethods({ ...params, chain }))\n .with(Chain.Ripple, (chain) => getRippleWalletMethods({ ...params, chain }))\n .with(Chain.Stellar, (chain) => getStellarWalletMethods({ ...params, chain }))\n .with(Chain.Cardano, (chain) => getCardanoWalletMethods({ ...params, chain }))\n .with(Chain.Tron, (chain) => getTronWalletMethods({ ...params, chain }))\n .with(Chain.Sui, (chain) => getSuiWalletMethods({ ...params, chain }))\n .with(Chain.Ton, (chain) => getTONWalletMethods({ ...params, chain }))\n .exhaustive();\n}\n\nexport type { LedgerDeviceActionState, LedgerDeviceActionStateHandler, LedgerDMKSession } from \"./helpers\";\nexport { disconnectLedgerDMKSession, getLedgerDMKSession, preloadLedgerDMK } from \"./helpers\";\n",
5
+ "import type Transport from \"@ledgerhq/hw-transport\";\nimport { hex } from \"@scure/base\";\nimport {\n AssetValue,\n Chain,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n filterSupportedChains,\n type GenericTransferParams,\n getUTXOScriptTypeForPath,\n NetworkDerivationPath,\n SwapKitError,\n type UTXOChain,\n UTXOScriptType,\n WalletOption,\n} from \"@swapkit/helpers\";\nimport type { TONTransactionInput } from \"@swapkit/toolboxes/ton\";\nimport {\n addInputsAndOutputs,\n assertDerivationIndex,\n compileMemo,\n createHDWalletHelpers,\n getNetworkForChain,\n getScriptTypeForAddress,\n getUTXOAccountIndexFromPath,\n getUTXOAccountPath,\n getUTXOAddressPath,\n getUtxoApi,\n type UTXOBuildTxParams,\n type UTXOForMultiAddressTransfer,\n type UTXOTransferParams,\n type UTXOType,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction, ZcashTransaction } from \"@swapkit/utxo-signer\";\nimport { createWallet, getWalletSupportedChains, type HardwareExtendedPublicKeyInfo } from \"@swapkit/wallet-core\";\nimport { match, P } from \"ts-pattern\";\nimport {\n getLedgerAddress,\n getLedgerClient,\n type LedgerDeviceActionStateHandler,\n type LedgerDMKSession,\n} from \"./helpers\";\nimport { createCachedRawTxResolver } from \"./helpers/rawTx\";\n\ntype BitcoinLedgerClient = ReturnType<typeof import(\"./clients/bitcoin\")[\"BitcoinLedger\"]>;\ntype LegacyUTXOLedgerClient = ReturnType<typeof import(\"./clients/utxo\")[\"BitcoinCashLedger\"]>;\ntype ZcashLedgerClient = ReturnType<typeof import(\"./clients/zcash\")[\"ZcashLedger\"]>;\ntype UTXOLedgerClient = BitcoinLedgerClient | LegacyUTXOLedgerClient | ZcashLedgerClient;\n\n/**\n * Options passed to `connectLedger` at call time.\n *\n * When `dmkSession` is omitted, the default browser WebHID flow discovers a\n * device and reuses one session across chains. Lazy-loaded apps can call\n * `preloadLedgerDMK` before the user gesture that starts connection.\n */\nexport interface ConnectLedgerOptions {\n address?: string;\n /** Caller-owned DMK session used by every supported chain. */\n dmkSession?: LedgerDMKSession;\n /** Receives DMK progress and device-interaction states. */\n onDeviceActionState?: LedgerDeviceActionStateHandler;\n /** Ledger-provided token required for Transaction Checks. */\n originToken?: string;\n /** @deprecated Temporary non-EVM fallback. Cannot be combined with `dmkSession`. */\n transport?: Transport;\n}\n\ninterface WalletMethodsParams<C extends Chain = Chain> extends ConnectLedgerOptions {\n chain: C;\n derivationPath?: DerivationPathArray;\n}\n\ninterface LedgerAccountXpubParams {\n chain: UTXOChain;\n path: string;\n signer: UTXOLedgerClient;\n xpubVersion: number;\n}\n\ninterface SignLedgerTransactionParams {\n inputUtxos?: UTXOType[];\n transaction: Transaction | ZcashTransaction;\n}\n\nconst LEDGER_SUPPORTED_CHAINS_CONFIG = [\n Chain.Arbitrum,\n Chain.Arc,\n Chain.Aurora,\n Chain.Avalanche,\n Chain.Base,\n Chain.Berachain,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cardano,\n Chain.Cosmos,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Gnosis,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.Ripple,\n Chain.Robinhood,\n Chain.Stellar,\n Chain.Sui,\n Chain.THORChain,\n Chain.Ton,\n Chain.XLayer,\n Chain.Tron,\n Chain.Zcash,\n] as const;\n\ntype LedgerSupportedChain = (typeof LEDGER_SUPPORTED_CHAINS_CONFIG)[number];\n\nconst LEDGER_UTXO_CHAINS = [\n Chain.BitcoinCash,\n Chain.Bitcoin,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Litecoin,\n Chain.Zcash,\n] as const satisfies readonly UTXOChain[];\n\nconst LEDGER_EVM_CHAINS = [\n Chain.Ethereum,\n Chain.Avalanche,\n Chain.Arbitrum,\n Chain.Arc,\n Chain.Berachain,\n Chain.Optimism,\n Chain.Polygon,\n Chain.BinanceSmartChain,\n Chain.Base,\n Chain.Aurora,\n Chain.Gnosis,\n Chain.Monad,\n Chain.Robinhood,\n Chain.XLayer,\n] as const satisfies readonly LedgerSupportedChain[];\n\ntype LedgerEVMChain = (typeof LEDGER_EVM_CHAINS)[number];\n\nfunction isLedgerSupportedChain(chain: Chain): chain is LedgerSupportedChain {\n return LEDGER_SUPPORTED_CHAINS_CONFIG.includes(chain as LedgerSupportedChain);\n}\n\nexport const ledgerWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectLedger(\n chains: Chain[],\n derivationPath?: DerivationPathArray,\n { address, dmkSession, onDeviceActionState, originToken, transport }: ConnectLedgerOptions = {},\n ) {\n const [chain] = filterSupportedChains({ chains, supportedChains, walletType });\n\n if (!chain) return false;\n\n const resolvedPath = derivationPath ?? (NetworkDerivationPath[chain] as DerivationPathArray | undefined);\n const walletMethods = await getWalletMethods({\n address,\n chain,\n derivationPath: resolvedPath,\n dmkSession,\n onDeviceActionState,\n originToken,\n transport,\n });\n\n addChain({ ...walletMethods, chain, walletType: WalletOption.LEDGER });\n\n return true;\n },\n getExtendedPublicKey: getLedgerExtendedPublicKey,\n name: \"connectLedger\",\n signingSupport: {\n ...Object.fromEntries(LEDGER_EVM_CHAINS.map((chain) => [chain, { direct: true, typedData: true }])),\n [Chain.Bitcoin]: { direct: true },\n [Chain.BitcoinCash]: { direct: true },\n [Chain.Cardano]: { direct: true },\n [Chain.Cosmos]: { direct: true },\n [Chain.Dash]: { direct: true },\n [Chain.Dogecoin]: { direct: true },\n [Chain.Litecoin]: { direct: true },\n [Chain.Near]: { direct: true },\n [Chain.Ripple]: { direct: true },\n [Chain.Stellar]: { direct: true },\n [Chain.Sui]: { direct: true },\n [Chain.THORChain]: { direct: true },\n [Chain.Ton]: { direct: true },\n [Chain.Tron]: { direct: true },\n // ZEC transparent transfers use DSK, but route-level PCZT signing remains unsupported.\n },\n supportedChains: [...LEDGER_SUPPORTED_CHAINS_CONFIG],\n walletType: WalletOption.LEDGER,\n});\n\nexport const LEDGER_SUPPORTED_CHAINS = getWalletSupportedChains(ledgerWallet);\n\nfunction getLedgerAccountXpub({ chain, path, signer, xpubVersion }: LedgerAccountXpubParams) {\n const ledgerPath = match(chain)\n .with(Chain.Bitcoin, Chain.Litecoin, () => path)\n .with(Chain.BitcoinCash, Chain.Dash, Chain.Dogecoin, Chain.Zcash, () => path.replace(/^m\\//, \"\"))\n .exhaustive();\n\n return match(chain)\n .with(Chain.Bitcoin, () => (signer as BitcoinLedgerClient).getExtendedPublicKey({ path: ledgerPath }))\n .with(Chain.Zcash, () => (signer as ZcashLedgerClient).getExtendedPublicKey({ path: ledgerPath, xpubVersion }))\n .with(Chain.BitcoinCash, Chain.Dash, Chain.Dogecoin, Chain.Litecoin, () =>\n (signer as LegacyUTXOLedgerClient).getExtendedPublicKey(ledgerPath, xpubVersion),\n )\n .exhaustive();\n}\n\n// Txids are looked up in display order, the order the UTXO API names transactions by. utxo-signer below 3.2\n// parsed raw transactions with wire-order txids, so the reversed order is tried as a fallback. A txid and its\n// byte reversal cannot both name real transactions, so the fallback cannot fetch an unrelated one.\nfunction resolveZcashInputUtxos(transaction: ZcashTransaction): Promise<UTXOType[]> {\n const zcashApi = getUtxoApi(Chain.Zcash);\n const getRawTx = createCachedRawTxResolver((txid) => zcashApi.getRawTx(txid));\n\n return Promise.all(\n Array.from({ length: transaction.inputsLength }, async (_, inputIndex) => {\n const input = transaction.getInput(inputIndex);\n const txid = hex.encode(input.txid);\n const reversedTxid = hex.encode(input.txid.slice().reverse());\n const directTxHex = await getRawTx(txid);\n const [hash, txHex] = directTxHex ? [txid, directTxHex] : [reversedTxid, await getRawTx(reversedTxid)];\n if (!txHex) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n inputIndex,\n outputIndex: input.index,\n reason: \"Unable to resolve previous transaction hex for Ledger signing in either txid byte order\",\n reversedTxid,\n txid,\n });\n }\n\n // The Zcash client takes amounts from the device's trusted inputs; fromBytes leaves input values at zero.\n return { hash, index: input.index, txHex, value: Number(input.value) };\n }),\n );\n}\n\nexport async function getLedgerExtendedPublicKey(\n chain: Chain,\n derivationPath?: DerivationPathArray,\n {\n accountIndex,\n dmkSession,\n onDeviceActionState,\n transport,\n }: {\n accountIndex?: number;\n dmkSession?: LedgerDMKSession;\n onDeviceActionState?: LedgerDeviceActionStateHandler;\n transport?: Transport;\n } = {},\n): Promise<HardwareExtendedPublicKeyInfo | undefined> {\n if (![Chain.BitcoinCash, Chain.Bitcoin, Chain.Dash, Chain.Dogecoin, Chain.Litecoin, Chain.Zcash].includes(chain)) {\n throw new SwapKitError(\"wallet_chain_not_supported\", { chain, wallet: WalletOption.LEDGER });\n }\n\n const utxoChain = chain as UTXOChain;\n const signer = await getLedgerClient({\n chain: utxoChain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n });\n if (!signer.getExtendedPublicKey) return undefined;\n\n const accountPath = getUTXOAccountPath({ accountIndex, chain: utxoChain, derivationPath });\n const path = derivationPathToString(accountPath);\n const xpubVersion = getNetworkForChain(utxoChain).bip32.public;\n try {\n const xpub = await getLedgerAccountXpub({ chain: utxoChain, path, signer, xpubVersion });\n return { accountIndex: getUTXOAccountIndexFromPath(accountPath), path, xpub };\n } finally {\n await (signer as { disconnect?: () => Promise<void> }).disconnect?.();\n }\n}\n\nasync function getUTXOWalletMethods({\n address: providedAddress,\n chain,\n dmkSession,\n derivationPath,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<UTXOChain>) {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const utxoChain = chain;\n\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n\n const address = providedAddress ?? (await getLedgerAddress({ chain, ledgerClient: signer }));\n // On Bitcoin the account's path states its encoding (BIP44/49/84/86). The other apps sign for the address format\n // the client derives (an 86' Litecoin account is ltc1q), so they, like a custom purpose, follow the address form.\n const scriptType =\n (chain === Chain.Bitcoin ? getUTXOScriptTypeForPath(derivationPath) : undefined) ??\n getScriptTypeForAddress(address, utxoChain);\n\n const { publicKey, signLedgerTransaction, toolboxSigner } = await match(chain)\n .with(Chain.Bitcoin, async () => {\n const bitcoinSigner = signer as BitcoinLedgerClient;\n // Nested SegWit and taproot inputs need the key behind them (redeemScript, tapInternalKey).\n const needsPublicKey = scriptType === UTXOScriptType.P2SH_P2WPKH || scriptType === UTXOScriptType.P2TR;\n const publicKey = needsPublicKey ? await bitcoinSigner.getPublicKey() : undefined;\n return {\n publicKey,\n signLedgerTransaction: ({ inputUtxos, transaction }: SignLedgerTransactionParams) =>\n bitcoinSigner.signTransactionHex({ inputUtxos, tx: transaction as Transaction }),\n toolboxSigner: {\n getAddress: bitcoinSigner.getAddress,\n publicKey,\n signTransaction: bitcoinSigner.signTransaction,\n },\n };\n })\n .with(Chain.BitcoinCash, Chain.Dogecoin, Chain.Dash, Chain.Litecoin, async () => {\n const { createLegacyPsbtSigner, signLegacyPsbtTransaction } = await import(\"./clients/utxo-legacy-adapter\");\n const legacySigner = signer as LegacyUTXOLedgerClient;\n return {\n publicKey: undefined,\n signLedgerTransaction: ({ inputUtxos, transaction }: SignLedgerTransactionParams) =>\n signLegacyPsbtTransaction({\n chain: utxoChain,\n inputUtxos,\n legacyClient: legacySigner,\n tx: transaction as Transaction,\n }),\n toolboxSigner: createLegacyPsbtSigner({ address, chain: utxoChain, legacyClient: legacySigner }),\n };\n })\n .with(Chain.Zcash, () => {\n const zcashSigner = signer as ZcashLedgerClient;\n return {\n publicKey: undefined,\n signLedgerTransaction: async ({ inputUtxos, transaction }: SignLedgerTransactionParams) => {\n if (!(\"consensusBranchId\" in transaction)) {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", {\n method: \"signPCZT\",\n wallet: WalletOption.LEDGER,\n });\n }\n\n const resolvedInputUtxos = inputUtxos ?? (await resolveZcashInputUtxos(transaction));\n return zcashSigner.signTransaction({ inputUtxos: resolvedInputUtxos, tx: transaction });\n },\n toolboxSigner: undefined,\n };\n })\n .exhaustive();\n\n const toolbox = toolboxSigner\n ? await getUtxoToolbox(utxoChain, { scriptType, signer: toolboxSigner })\n : getUtxoToolbox(utxoChain, { scriptType });\n const signAndBroadcastTransaction = async (transaction: Transaction | ZcashTransaction) =>\n toolbox.broadcastTx(await signLedgerTransaction({ transaction }));\n\n // The toolbox's transfer parameters plus a public key override; the sender is always the Ledger account.\n const transfer = async (params: UTXOTransferParams & Pick<UTXOBuildTxParams, \"enableRBF\" | \"publicKey\">) => {\n const feeRate = params.feeRate || (await toolbox.getFeeRates())[params.feeOptionKey || FeeOption.Fast];\n\n const { tx, inputs } = await toolbox.createTransaction({\n ...params,\n feeRate,\n fetchTxHex: true,\n publicKey: params.publicKey ?? publicKey,\n sender: address,\n });\n\n const txHex = await signLedgerTransaction({ inputUtxos: inputs, transaction: tx });\n const txHash = await toolbox.broadcastTx(txHex);\n\n return txHash;\n };\n\n async function getExtendedPublicKeyInfo({ accountIndex }: { accountIndex?: number } = {}) {\n if (!signer.getExtendedPublicKey) return undefined;\n\n const accountPath = getUTXOAccountPath({ accountIndex, chain: utxoChain, derivationPath });\n const path = derivationPathToString(accountPath);\n const xpubVersion = getNetworkForChain(utxoChain).bip32.public;\n const xpub = await getLedgerAccountXpub({ chain, path, signer, xpubVersion });\n\n return { accountIndex: getUTXOAccountIndexFromPath(accountPath), path, xpub };\n }\n\n function getExtendedPublicKey(params: { accountIndex?: number } = {}) {\n return getExtendedPublicKeyInfo(params);\n }\n\n async function deriveAddressAtIndex({\n accountIndex,\n index,\n change = false,\n }: {\n accountIndex?: number;\n index: number;\n change?: boolean;\n }) {\n try {\n const fullPath = getUTXOAddressPath({ accountIndex, chain: utxoChain, change, derivationPath, index });\n\n const indexedSigner = await getLedgerClient({\n chain: utxoChain,\n derivationPath: fullPath,\n dmkSession,\n onDeviceActionState,\n transport,\n });\n const derivedAddress = await getLedgerAddress({ chain: utxoChain, ledgerClient: indexedSigner });\n\n return {\n accountIndex: getUTXOAccountIndexFromPath(fullPath),\n address: derivedAddress,\n change,\n index,\n path: derivationPathToString(fullPath),\n pubkey: \"\",\n };\n } catch {\n return undefined;\n }\n }\n\n async function deriveAddresses({\n accountIndex,\n count,\n startIndex = 0,\n change = false,\n }: {\n accountIndex?: number;\n count: number;\n startIndex?: number;\n change?: boolean;\n }) {\n assertDerivationIndex(\"count\", count);\n assertDerivationIndex(\"startIndex\", startIndex);\n\n const addresses = await Promise.all(\n Array.from({ length: count }, (_, i) => deriveAddressAtIndex({ accountIndex, change, index: startIndex + i })),\n );\n\n return addresses.filter((address) => !!address);\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain: utxoChain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (addr: string) => getUtxoApi(utxoChain).getUtxos({ address: addr, fetchTxHex: true }),\n });\n\n async function transferFromMultipleAddresses({\n utxos,\n recipient,\n assetValue,\n memo,\n feeRate,\n feeOptionKey,\n changeAddress,\n }: {\n utxos: UTXOForMultiAddressTransfer[];\n recipient: string;\n assetValue: AssetValue;\n memo?: string;\n feeRate?: number;\n feeOptionKey?: FeeOption;\n changeAddress?: string;\n }) {\n if (chain === Chain.Zcash) {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", {\n method: \"transferFromMultipleAddresses\",\n wallet: WalletOption.LEDGER,\n });\n }\n\n if (!utxos.length) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n message: \"No UTXOs provided for multi-address transfer\",\n });\n }\n\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n const memoScript = memo ? compileMemo(memo) : null;\n\n const targetOutputs: Array<{ address: string; value: number } | { script: Uint8Array; value: number }> = [\n { address: recipient, value: assetValue.getBaseValue(\"number\") },\n ];\n if (memoScript) {\n targetOutputs.push({ script: memoScript, value: 0 });\n }\n\n const basicUtxos = utxos.map(({ hash, index, value, txHex, witnessUtxo }) => ({\n hash,\n index,\n txHex,\n value,\n witnessUtxo,\n }));\n\n const { inputs: selectedInputs, outputs } = toolbox.accumulative({\n chain: utxoChain,\n feeRate: txFeeRate,\n inputs: basicUtxos,\n outputs: targetOutputs,\n });\n\n if (!(selectedInputs && outputs)) {\n throw new SwapKitError(\"wallet_ledger_connection_error\", {\n message: \"Insufficient balance for multi-address transfer\",\n });\n }\n\n const { Transaction } = await import(\"@swapkit/utxo-signer\");\n const tx = new Transaction({ allowLegacyWitnessUtxo: true, allowUnknownOutputs: !!memoScript, version: 1 });\n const senderAddress = changeAddress || utxos[0]?.address || recipient;\n\n addInputsAndOutputs({\n chain: utxoChain,\n compiledMemo: memoScript,\n inputs: selectedInputs,\n outputs,\n sender: senderAddress,\n tx,\n });\n\n const inputDerivationPaths = selectedInputs.map((input: { hash: string; index: number }) => {\n const utxoInfo = utxos.find((u) => u.hash === input.hash && u.index === input.index);\n const fullPath = getUTXOAddressPath({\n chain: utxoChain,\n change: utxoInfo?.isChange ?? false,\n derivationPath,\n index: utxoInfo?.derivationIndex ?? 0,\n });\n return derivationPathToString(fullPath);\n });\n\n if (!signer.signTransactionWithMultiplePaths) {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", { method: \"signTransactionWithMultiplePaths\" });\n }\n\n const txHex = await match(chain)\n .with(Chain.Bitcoin, () =>\n (signer as BitcoinLedgerClient).signTransactionWithMultiplePaths({\n derivationPaths: inputDerivationPaths,\n inputUtxos: selectedInputs,\n tx,\n }),\n )\n .with(Chain.BitcoinCash, Chain.Dash, Chain.Dogecoin, Chain.Litecoin, () =>\n (signer as LegacyUTXOLedgerClient).signTransactionWithMultiplePaths(tx, selectedInputs, inputDerivationPaths),\n )\n .exhaustive();\n return toolbox.broadcastTx(txHex);\n }\n\n return {\n ...toolbox,\n ...hdHelpers,\n address,\n deriveAddressAtIndex,\n deriveAddresses,\n getExtendedPublicKey,\n getExtendedPublicKeyInfo,\n signAndBroadcastTransaction,\n transfer,\n transferFromMultipleAddresses,\n };\n}\n\nasync function getEVMWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n originToken,\n transport,\n}: WalletMethodsParams<LedgerEVMChain>) {\n const signer = await getLedgerClient({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n originToken,\n transport,\n });\n const { getEvmToolboxAsync } = await import(\"@swapkit/toolboxes/evm\");\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = await getEvmToolboxAsync(chain, { signer });\n\n return { ...toolbox, address };\n}\n\nasync function getCosmosWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Cosmos>) {\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = getCosmosToolbox(chain, { signer });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n\n return { ...toolbox, address };\n}\n\nasync function getTHORChainWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.THORChain>) {\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = getCosmosToolbox(chain, { signer });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const { sign: signMessage } = signer;\n\n return { ...toolbox, address, signMessage };\n}\n\nasync function getNearWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Near>) {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const accountId = await signer.getAddress();\n const toolbox = getNearToolbox({ signer });\n\n return { ...toolbox, address: accountId };\n}\n\nasync function getCardanoWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Cardano>) {\n const { getCardanoToolbox } = await import(\"@swapkit/toolboxes/cardano\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = signer.getAddress();\n const toolbox = getCardanoToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getRippleWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Ripple>) {\n const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = signer.getAddress();\n const toolbox = getRippleToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getStellarWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Stellar>) {\n const { getStellarToolbox } = await import(\"@swapkit/toolboxes/stellar\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getStellarToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getTronWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Tron>) {\n const { getTronToolbox } = await import(\"@swapkit/toolboxes/tron\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getTronToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getSuiWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Sui>) {\n const { getSuiToolbox } = await import(\"@swapkit/toolboxes/sui\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getSuiToolbox({ signer });\n\n return { ...toolbox, address };\n}\n\nasync function getTONWalletMethods({\n chain,\n derivationPath,\n dmkSession,\n onDeviceActionState,\n transport,\n}: WalletMethodsParams<Chain.Ton>) {\n const { getTONToolbox } = await import(\"@swapkit/toolboxes/ton\");\n const signer = await getLedgerClient({ chain, derivationPath, dmkSession, onDeviceActionState, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n // Signerless toolbox: it builds messages and reads balances, the device signs the external message.\n const toolbox = getTONToolbox();\n\n const signAndBroadcastTransaction = async (transaction: TONTransactionInput) =>\n toolbox.broadcastTransaction(await signer.signTransaction(transaction));\n\n const transfer = async ({ assetValue, memo, recipient, sweep }: GenericTransferParams) =>\n signAndBroadcastTransaction(\n await toolbox.createTransaction({ assetValue, memo, recipient, sender: address, sweep }),\n );\n\n // Same budget as TON Connect: the signerless toolbox underestimates jetton fees\n const estimateTransactionFee = ({ assetValue }: GenericTransferParams) =>\n Promise.resolve(AssetValue.from({ chain: Chain.Ton, value: assetValue.isGasAsset ? \"0.01\" : \"0.06\" }));\n\n const sign = () => {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", { method: \"sign\", wallet: WalletOption.LEDGER });\n };\n\n return {\n ...toolbox,\n address,\n estimateTransactionFee,\n getAddress: () => address,\n getBalance: () => toolbox.getBalance(address),\n sign,\n signAndBroadcastTransaction,\n transfer,\n };\n}\n\nfunction getWalletMethods(params: WalletMethodsParams) {\n if (!isLedgerSupportedChain(params.chain)) {\n throw new SwapKitError(\"wallet_ledger_chain_not_supported\", { chain: params.chain });\n }\n\n return match(params.chain)\n .with(P.union(...LEDGER_UTXO_CHAINS), (chain) => getUTXOWalletMethods({ ...params, chain }))\n .with(P.union(...LEDGER_EVM_CHAINS), (chain) => getEVMWalletMethods({ ...params, chain }))\n .with(Chain.Cosmos, (chain) => getCosmosWalletMethods({ ...params, chain }))\n .with(Chain.THORChain, (chain) => getTHORChainWalletMethods({ ...params, chain }))\n .with(Chain.Near, (chain) => getNearWalletMethods({ ...params, chain }))\n .with(Chain.Ripple, (chain) => getRippleWalletMethods({ ...params, chain }))\n .with(Chain.Stellar, (chain) => getStellarWalletMethods({ ...params, chain }))\n .with(Chain.Cardano, (chain) => getCardanoWalletMethods({ ...params, chain }))\n .with(Chain.Tron, (chain) => getTronWalletMethods({ ...params, chain }))\n .with(Chain.Sui, (chain) => getSuiWalletMethods({ ...params, chain }))\n .with(Chain.Ton, (chain) => getTONWalletMethods({ ...params, chain }))\n .exhaustive();\n}\n\nexport type { LedgerDeviceActionState, LedgerDeviceActionStateHandler, LedgerDMKSession } from \"./helpers\";\nexport { disconnectLedgerDMKSession, getLedgerDMKSession, preloadLedgerDMK } from \"./helpers\";\n",
6
6
  "import type { DeviceManagementKit, DeviceSessionId, DiscoveredDevice } from \"@ledgerhq/device-management-kit\";\nimport { SwapKitError } from \"@swapkit/helpers\";\nimport { filter, firstValueFrom, map, timeout } from \"rxjs\";\n\nimport { toLedgerDeviceError } from \"./executeDeviceAction\";\n\n// Bounds the wait for a granted device that DMK never lists (an unrecognised model); the picker opens instead.\nconst AUTHORISED_DEVICE_TIMEOUT_MS = 1_000;\n\ntype WebHidNavigator = Navigator & { hid?: { getDevices?: () => Promise<Array<{ vendorId: number }>> } };\n\nexport interface LedgerDMKSession {\n dmk: DeviceManagementKit;\n sessionId: DeviceSessionId;\n}\n\nlet defaultDMKPromise: Promise<DeviceManagementKit> | undefined;\nlet defaultSessionPromise: Promise<LedgerDMKSession> | undefined;\n\nfunction createDefaultDMKPromise() {\n if (typeof navigator === \"undefined\" || !(\"hid\" in navigator)) {\n return Promise.reject(new SwapKitError(\"wallet_ledger_webhid_not_supported\"));\n }\n\n return Promise.all([import(\"@ledgerhq/device-management-kit\"), import(\"@ledgerhq/device-transport-kit-web-hid\")])\n .then(([{ DeviceManagementKitBuilder }, { webHidTransportFactory }]) =>\n new DeviceManagementKitBuilder().addTransport(webHidTransportFactory).build(),\n )\n .catch((error) => {\n defaultDMKPromise = undefined;\n if (error instanceof SwapKitError) throw error;\n throw new SwapKitError(\"wallet_ledger_connection_error\", error);\n });\n}\n\nfunction getDefaultDMK() {\n defaultDMKPromise ??= createDefaultDMKPromise();\n return defaultDMKPromise;\n}\n\nfunction createDefaultSessionPromise() {\n return getDefaultDMK().then((dmk) => connectLedgerDMK({ dmk }));\n}\n\nfunction isSessionNotFound(error: unknown) {\n return typeof error === \"object\" && error !== null && \"_tag\" in error && error._tag === \"DeviceSessionNotFound\";\n}\n\nfunction isSessionConnected({ dmk, sessionId }: LedgerDMKSession) {\n try {\n dmk.getConnectedDevice({ sessionId });\n return true;\n } catch (error) {\n void error;\n return false;\n }\n}\n\nasync function getValidDefaultSession({ sessionPromise }: { sessionPromise: Promise<LedgerDMKSession> }) {\n let activeSessionPromise = sessionPromise;\n\n try {\n const session = await activeSessionPromise;\n if (isSessionConnected(session)) return session;\n\n if (defaultSessionPromise === activeSessionPromise) {\n defaultSessionPromise = createDefaultSessionPromise();\n }\n\n defaultSessionPromise ??= createDefaultSessionPromise();\n activeSessionPromise = defaultSessionPromise;\n\n return await activeSessionPromise;\n } catch (error) {\n if (defaultSessionPromise === activeSessionPromise) defaultSessionPromise = undefined;\n if (error instanceof SwapKitError) throw error;\n throw new SwapKitError(\"wallet_ledger_connection_error\", error);\n }\n}\n\nasync function hasAuthorisedLedger() {\n const hid = typeof navigator === \"undefined\" ? undefined : (navigator as WebHidNavigator).hid;\n if (typeof hid?.getDevices !== \"function\") return false;\n\n try {\n const [devices, { LEDGER_VENDOR_ID }] = await Promise.all([\n hid.getDevices(),\n import(\"@ledgerhq/device-management-kit\"),\n ]);\n return devices.some(({ vendorId }) => vendorId === LEDGER_VENDOR_ID);\n } catch (error) {\n void error;\n return false;\n }\n}\n\n/**\n * `startDiscovering` always opens the WebHID picker, which needs a fresh user gesture. A plugged-in Ledger the user\n * already granted (page reload, replug after DMK's reconnect window) is listed without one.\n */\nasync function findAuthorisedDevice({ dmk }: { dmk: DeviceManagementKit }) {\n // Nothing granted: go straight to the picker while the caller's user gesture is still fresh.\n if (!(await hasAuthorisedLedger())) return undefined;\n\n try {\n return await firstValueFrom(\n dmk.listenToAvailableDevices({}).pipe(\n // The WebHID list replays its last value (initially empty) before it re-reads the granted devices.\n map(([device]) => device),\n filter((device): device is DiscoveredDevice => device !== undefined),\n timeout({ first: AUTHORISED_DEVICE_TIMEOUT_MS }),\n ),\n );\n } catch (error) {\n void error;\n return undefined;\n }\n}\n\nasync function connectLedgerDMK({ dmk }: { dmk: DeviceManagementKit }) {\n let discoveryStarted = false;\n\n try {\n const authorisedDevice = await findAuthorisedDevice({ dmk });\n if (authorisedDevice) return { dmk, sessionId: await dmk.connect({ device: authorisedDevice }) };\n\n const discoveredDevices = dmk.startDiscovering({});\n discoveryStarted = true;\n const device = await firstValueFrom(discoveredDevices);\n const sessionId = await dmk.connect({ device });\n\n return { dmk, sessionId };\n } catch (error) {\n if (error instanceof SwapKitError) throw error;\n throw new SwapKitError(\"wallet_ledger_connection_error\", error);\n } finally {\n if (discoveryStarted) {\n try {\n await dmk.stopDiscovering();\n } catch (error) {\n void error;\n }\n }\n }\n}\n\nexport function getLedgerDMKSession({ dmk }: { dmk?: DeviceManagementKit } = {}) {\n if (dmk) return connectLedgerDMK({ dmk });\n\n defaultSessionPromise ??= createDefaultSessionPromise();\n const cachedSessionPromise = defaultSessionPromise;\n\n return getValidDefaultSession({ sessionPromise: cachedSessionPromise });\n}\n\n/**\n * Builds a signer kit instance for the session an operation runs on. A caller-owned session is used\n * as given; the default session is re-validated on every call and the signer is rebuilt when it was\n * replaced. DMK keeps a session through a brief unplug; once it drops one, the next operation connects\n * again, silently to a Ledger the user already granted, otherwise through the WebHID picker, which\n * needs a user gesture.\n */\nexport function createLedgerSessionSigner<Signer>({\n build,\n dmkSession,\n}: {\n build: (session: LedgerDMKSession) => Signer | Promise<Signer>;\n dmkSession?: LedgerDMKSession;\n}) {\n let cached: { session: LedgerDMKSession; signer: Promise<Signer> } | undefined;\n\n return async function getSessionSigner() {\n const session = dmkSession ?? (await getLedgerDMKSession());\n if (cached?.session.dmk !== session.dmk || cached.session.sessionId !== session.sessionId) {\n const signer = Promise.resolve().then(() => build(session));\n cached = { session, signer };\n const pending = cached;\n void signer.catch(() => {\n if (cached === pending) cached = undefined;\n });\n }\n return cached.signer;\n };\n}\n\nexport function preloadLedgerDMK() {\n const dmkPromise = getDefaultDMK();\n // Preloading is usually fire-and-forget; the connection that follows reports the same failure.\n void dmkPromise.catch(() => undefined);\n return dmkPromise;\n}\n\nexport async function disconnectLedgerDMKSession({ dmkSession }: { dmkSession?: LedgerDMKSession } = {}) {\n const cachedSessionPromise = defaultSessionPromise;\n let sessionToDisconnect = dmkSession;\n\n if (!sessionToDisconnect) {\n if (!cachedSessionPromise) return;\n if (defaultSessionPromise === cachedSessionPromise) defaultSessionPromise = undefined;\n\n try {\n sessionToDisconnect = await cachedSessionPromise;\n } catch {\n return;\n }\n }\n\n if (cachedSessionPromise) {\n try {\n const cachedSession = await cachedSessionPromise;\n if (\n defaultSessionPromise === cachedSessionPromise &&\n cachedSession.dmk === sessionToDisconnect.dmk &&\n cachedSession.sessionId === sessionToDisconnect.sessionId\n ) {\n defaultSessionPromise = undefined;\n }\n } catch (error) {\n void error;\n if (defaultSessionPromise === cachedSessionPromise) defaultSessionPromise = undefined;\n }\n }\n\n try {\n await sessionToDisconnect.dmk.disconnect({ sessionId: sessionToDisconnect.sessionId });\n } catch (error) {\n // DMK already dropped the session (device unplugged past its reconnect window): nothing left to release.\n if (isSessionNotFound(error)) return;\n throw toLedgerDeviceError(error);\n }\n}\n",
7
7
  "import type {\n DeviceActionIntermediateValue,\n DeviceActionState,\n DeviceActionStatus,\n ExecuteDeviceActionReturnType,\n UserInteractionRequired,\n} from \"@ledgerhq/device-management-kit\";\nimport { SwapKitError } from \"@swapkit/helpers\";\nimport { match } from \"ts-pattern\";\n\nconst DEVICE_ACTION_STATUS = {\n Completed: \"completed\" as DeviceActionStatus.Completed,\n Error: \"error\" as DeviceActionStatus.Error,\n Stopped: \"stopped\" as DeviceActionStatus.Stopped,\n} as const;\n\nexport const LEDGER_USER_INTERACTION_REQUIRED = {\n None: \"none\" as UserInteractionRequired.None,\n SignTransaction: \"sign-transaction\" as UserInteractionRequired.SignTransaction,\n VerifyAddress: \"verify-address\" as UserInteractionRequired.VerifyAddress,\n} as const;\n\nexport type LedgerDeviceActionState = DeviceActionState<unknown, unknown, DeviceActionIntermediateValue>;\nexport type LedgerDeviceActionStateHandler = (state: LedgerDeviceActionState) => void;\n\nconst USER_REFUSED_STATUS_WORDS = new Set([\"6985\", \"5501\"]);\n/**\n * Zondax-built apps (Cosmos, THORChain) reject a request on the device with COMMAND_NOT_ALLOWED. The Zcash app uses\n * the same word to refuse a request, so only the clients for the Zondax apps treat it as a user rejection.\n */\nexport const ZONDAX_USER_REFUSED_STATUS_WORDS: readonly string[] = [\"6986\"];\nconst LOCKED_STATUS_WORDS = new Set([\"5515\"]);\nconst WRONG_APP_STATUS_WORDS = new Set([\"6511\", \"6807\", \"6d00\", \"6e00\"]);\nconst DISCONNECTED_ERROR_TAGS = new Set([\n \"DeviceDisconnectedBeforeSendingApdu\",\n \"DeviceDisconnectedWhileSendingError\",\n \"DeviceNotRecognizedError\",\n \"DeviceSessionNotFound\",\n \"NoAccessibleDeviceError\",\n \"ReconnectionFailedError\",\n]);\n// LedgerJS transports (hw-transport-webhid, -webusb) reject an exchange cut off by an unplug with these errors. The\n// @ledgerhq packages advise matching on `name`, which also holds across duplicate copies of @ledgerhq/errors.\nconst DISCONNECTED_ERROR_NAMES = new Set([\"DisconnectedDevice\", \"DisconnectedDeviceDuringOperation\"]);\n// hw-app-cosmos turns the app's final 0x6986 on a signature into this @ledgerhq/errors class, which carries no word.\nconst USER_REFUSED_ERROR_NAMES = new Set([\"UserRefusedOnDevice\"]);\n// DMK nests causes in `originalError` and the LedgerJS bridge wraps once more, so real chains are two or three\n// levels deep; the bound stops a malformed or cyclic chain.\nconst MAX_NESTED_ERROR_DEPTH = 4;\nconst STATUS_WORD_PATTERN = /^(?:0x)?([0-9a-f]{4})$/i;\n\ntype DeviceErrorLike = {\n _tag?: unknown;\n errorCode?: unknown;\n message?: unknown;\n name?: unknown;\n originalError?: unknown;\n statusCode?: unknown;\n};\n\nexport interface LedgerDeviceErrorOptions {\n /** App-specific status words that also mean the user rejected the request on the device. */\n userRefusedStatusWords?: readonly string[];\n}\n\nfunction errorChainOf(error: unknown) {\n const errors: DeviceErrorLike[] = [];\n let current = error;\n\n while (errors.length < MAX_NESTED_ERROR_DEPTH && typeof current === \"object\" && current !== null) {\n const deviceError: DeviceErrorLike = current;\n errors.push(deviceError);\n current = deviceError.originalError;\n }\n\n return errors;\n}\n\n// DMK command errors carry the word as an `errorCode` string (the Cosmos signer kit keys its own table \"0x6986\");\n// hw-transport status errors carry it as a numeric `statusCode`.\nfunction statusWordOf({ errorCode, statusCode }: DeviceErrorLike) {\n const fromErrorCode = typeof errorCode === \"string\" ? STATUS_WORD_PATTERN.exec(errorCode)?.[1] : undefined;\n if (fromErrorCode) return fromErrorCode.toLowerCase();\n return typeof statusCode === \"number\" ? statusCode.toString(16).padStart(4, \"0\") : undefined;\n}\n\n/**\n * DMK rejects with plain tagged objects (and the LedgerJS bridge nests hw-app status errors inside\n * them), so callers could not tell a user rejection from a wrong app or a disconnected device.\n */\nexport function toLedgerDeviceError(error: unknown, { userRefusedStatusWords = [] }: LedgerDeviceErrorOptions = {}) {\n const errorChain = errorChainOf(error);\n // A SwapKitError thrown inside a bridged LedgerJS operation (input validation) already says what failed.\n const swapKitError = errorChain.find((nested): nested is SwapKitError => nested instanceof SwapKitError);\n if (swapKitError) return swapKitError;\n\n const errorTags = errorChain.flatMap(({ _tag }) => (typeof _tag === \"string\" ? [_tag] : []));\n const errorNames = errorChain.flatMap(({ name }) => (typeof name === \"string\" ? [name] : []));\n const statusWord = errorChain.map(statusWordOf).find((word) => word !== undefined);\n // The innermost cause says what failed; DMK and the bridge wrap it in generic \"device exchange\" messages.\n const message = errorChain\n .map((nested) => nested.message)\n .filter((value): value is string => typeof value === \"string\" && value.length > 0)\n .at(-1);\n const refusedStatusWords = new Set([...USER_REFUSED_STATUS_WORDS, ...userRefusedStatusWords]);\n\n const errorKey = match({ errorNames, errorTags, statusWord })\n .when(\n ({ errorNames, errorTags, statusWord }) =>\n errorTags.includes(\"RefusedByUserDAError\") ||\n errorNames.some((name) => USER_REFUSED_ERROR_NAMES.has(name)) ||\n (!!statusWord && refusedStatusWords.has(statusWord)),\n () => \"wallet_connection_rejected_by_user\" as const,\n )\n .when(\n ({ errorTags, statusWord }) =>\n errorTags.includes(\"DeviceLockedError\") || (!!statusWord && LOCKED_STATUS_WORDS.has(statusWord)),\n () => \"wallet_ledger_device_locked\" as const,\n )\n .when(\n ({ errorTags, statusWord }) =>\n errorTags.includes(\"UnsupportedApplicationDAError\") || (!!statusWord && WRONG_APP_STATUS_WORDS.has(statusWord)),\n () => \"wallet_ledger_app_not_open\" as const,\n )\n .when(\n ({ errorNames, errorTags }) =>\n errorTags.some((errorTag) => DISCONNECTED_ERROR_TAGS.has(errorTag)) ||\n errorNames.some((name) => DISCONNECTED_ERROR_NAMES.has(name)),\n () => \"wallet_ledger_connection_error\" as const,\n )\n .otherwise(() => \"wallet_ledger_transport_error\" as const);\n\n return new SwapKitError({ errorKey, info: { errorTag: errorTags[0], message, statusWord } }, error);\n}\n\n/**\n * `action` is a thunk because DMK throws, instead of returning an action, when it cannot start one (e.g.\n * DeviceSessionNotFound for a session it has dropped), and the signer kits call DMK synchronously. Calling it here\n * maps that throw like any other device error. Put only the device call inside it, or a plain error from building\n * the request is reported as a transport error.\n */\nexport function executeLedgerDeviceAction<\n Output,\n ActionError,\n IntermediateValue extends DeviceActionIntermediateValue,\n>({\n action,\n onDeviceActionState,\n userRefusedStatusWords,\n}: {\n action: () => ExecuteDeviceActionReturnType<Output, ActionError, IntermediateValue>;\n onDeviceActionState?: LedgerDeviceActionStateHandler;\n} & LedgerDeviceErrorOptions) {\n return new Promise<Output>((resolve, reject) => {\n let observable: ExecuteDeviceActionReturnType<Output, ActionError, IntermediateValue>[\"observable\"];\n try {\n observable = action().observable;\n } catch (error) {\n reject(toLedgerDeviceError(error, { userRefusedStatusWords }));\n return;\n }\n\n let settled = false;\n let subscription: { unsubscribe: () => void } | undefined;\n\n function settle(callback: () => void) {\n if (settled) return;\n settled = true;\n subscription?.unsubscribe();\n callback();\n }\n\n subscription = observable.subscribe({\n complete: () => {\n settle(() => reject(new SwapKitError(\"wallet_ledger_invalid_response\")));\n },\n error: (error) => {\n settle(() => reject(toLedgerDeviceError(error, { userRefusedStatusWords })));\n },\n next: (state) => {\n try {\n onDeviceActionState?.(state);\n } catch (error) {\n void error;\n }\n\n match(state)\n .with({ status: DEVICE_ACTION_STATUS.Completed }, ({ output }) => settle(() => resolve(output)))\n .with({ status: DEVICE_ACTION_STATUS.Error }, ({ error }) =>\n settle(() => reject(toLedgerDeviceError(error, { userRefusedStatusWords }))),\n )\n .with({ status: DEVICE_ACTION_STATUS.Stopped }, () =>\n settle(() => reject(new SwapKitError(\"wallet_ledger_connection_error\"))),\n )\n .otherwise(() => undefined);\n },\n });\n\n if (settled) subscription.unsubscribe();\n });\n}\n",
8
8
  "import { Chain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\n\nimport type { CardanoLedger } from \"../clients/cardano\";\nimport type { getNearLedgerClient } from \"../clients/near\";\nimport type { StellarLedger } from \"../clients/stellar\";\nimport type { SuiLedger } from \"../clients/sui\";\nimport type { TONLedger } from \"../clients/ton\";\nimport type { TronLedger } from \"../clients/tron\";\nimport type { XRPLedger } from \"../clients/xrp\";\nimport type { LEDGER_SUPPORTED_CHAINS } from \"../index\";\nimport type { CosmosLedgerClients, EVMLedgerClients, UTXOLedgerClients } from \"../types\";\nimport type { getLedgerClient } from \"./getLedgerClient\";\n\nexport const getLedgerAddress = async <\n T extends (typeof LEDGER_SUPPORTED_CHAINS)[number],\n L extends Awaited<ReturnType<typeof getLedgerClient<T>>>,\n>({\n chain,\n ledgerClient,\n}: {\n chain: T;\n ledgerClient: L;\n}) => {\n if (!ledgerClient) return \"\";\n\n switch (chain) {\n case Chain.Cosmos:\n case Chain.THORChain: {\n return (ledgerClient as CosmosLedgerClients).connect();\n }\n\n case Chain.Ethereum:\n case Chain.BinanceSmartChain:\n case Chain.Avalanche:\n case Chain.Polygon:\n case Chain.Arbitrum:\n case Chain.Arc:\n case Chain.Berachain:\n case Chain.Optimism:\n case Chain.Base:\n case Chain.Aurora:\n case Chain.Gnosis:\n case Chain.Monad:\n case Chain.Robinhood:\n case Chain.XLayer: {\n return (ledgerClient as EVMLedgerClients).getAddress();\n }\n\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n case Chain.Zcash: {\n const ledger = ledgerClient as UTXOLedgerClients;\n await ledger.connect();\n const address = await ledger.getAddress();\n\n return chain === Chain.BitcoinCash ? address.replace(\"bitcoincash:\", \"\") : address;\n }\n\n case Chain.Near: {\n return await (ledgerClient as Awaited<ReturnType<typeof getNearLedgerClient>>).getAddress();\n }\n\n case Chain.Ripple: {\n return (ledgerClient as Awaited<ReturnType<typeof XRPLedger>>).getAddress();\n }\n\n case Chain.Stellar: {\n return (ledgerClient as Awaited<ReturnType<typeof StellarLedger>>).getAddress();\n }\n\n case Chain.Cardano: {\n return (ledgerClient as Awaited<ReturnType<typeof CardanoLedger>>).getAddress();\n }\n\n case Chain.Tron: {\n return (ledgerClient as Awaited<ReturnType<typeof TronLedger>>).getAddress();\n }\n\n case Chain.Sui: {\n return (ledgerClient as Awaited<ReturnType<typeof SuiLedger>>).connect();\n }\n\n case Chain.Ton: {\n return (ledgerClient as Awaited<ReturnType<typeof TONLedger>>).getAddress();\n }\n\n default:\n throw new SwapKitError(\"wallet_chain_not_supported\", { chain, wallet: WalletOption.LEDGER });\n }\n};\n",
@@ -23,9 +23,9 @@
23
23
  "import type { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport {\n Chain,\n type DerivationPathArray,\n getRPCUrl,\n NetworkDerivationPath,\n SwapKitError,\n WalletOption,\n} from \"@swapkit/helpers\";\nimport type { TONTransactionInput, TONTransactionMessage } from \"@swapkit/toolboxes/ton\";\nimport type { Address, Cell, MessageRelaxed, StateInit } from \"@ton/core\";\nimport type { TonClient } from \"@ton/ton\";\nimport type { TonPayloadFormat, TonTransport } from \"@ton-community/ton-ledger\";\n\nimport {\n LEDGER_USER_INTERACTION_REQUIRED,\n type LedgerJsClientParams,\n normalizeLedgerJsClientParams,\n runLedgerJsOperation,\n} from \"../helpers/ledgerJsDmkBridge\";\n\n// SendMode.PAY_GAS_SEPARATELY + SendMode.IGNORE_ERRORS, the TON toolbox default.\nconst DEFAULT_SEND_MODE = 3;\nconst TRANSACTION_VALID_SECONDS = 300;\nconst TON_WORKCHAIN = 0;\n\ntype TONLedgerParams = LedgerJsClientParams<DerivationPathArray>;\n\ninterface TONLedgerOrder {\n amount: bigint;\n bounce: boolean;\n payload?: Cell;\n payloadFormat?: TonPayloadFormat;\n stateInit?: StateInit;\n to: Address;\n}\n\ninterface SignedTransferExpectation extends TONLedgerOrder {\n sendMode: number;\n seqno: number;\n timeout: number;\n walletId: number;\n}\n\nfunction toLedgerPath(derivationPath: DerivationPathArray) {\n const [purpose, coinType, network, workchain, account, ...rest] = derivationPath;\n const isTonPath =\n purpose === 44 &&\n coinType === 607 &&\n network === 0 &&\n workchain === 0 &&\n typeof account === \"number\" &&\n Number.isInteger(account) &&\n account >= 0 &&\n rest.length === 0;\n\n if (!isTonPath) {\n throw new SwapKitError({\n errorKey: \"wallet_ledger_derivation_path_error\",\n info: { derivationPath, reason: \"Ledger TON accounts derive from m/44'/607'/0'/0'/{account}'\" },\n });\n }\n\n return [44, 607, 0, 0, account, 0];\n}\n\nfunction invalidParams(reason: string, info: Record<string, unknown> = {}) {\n return new SwapKitError({\n errorKey: \"wallet_ledger_invalid_params\",\n info: { ...info, reason, wallet: WalletOption.LEDGER },\n });\n}\n\nfunction resolveSingleMessage(input: TONTransactionInput) {\n const messages = Array.isArray(input) ? input : input.messages;\n const [message] = messages;\n\n if (!message) throw invalidParams(\"A TON transaction needs one message\");\n if (messages.length > 1) {\n throw new SwapKitError({\n errorKey: \"wallet_ledger_method_not_supported\",\n info: {\n messageCount: messages.length,\n method: \"signTransaction\",\n reason: \"Ledger signs one TON message per transaction\",\n wallet: WalletOption.LEDGER,\n },\n });\n }\n\n const sendMode =\n (Array.isArray(input) ? message.sendMode : (input.sendMode ?? message.sendMode)) ?? DEFAULT_SEND_MODE;\n if (!Array.isArray(input) && message.sendMode !== undefined && message.sendMode !== sendMode) {\n throw invalidParams(\"The message send mode differs from the transaction send mode\", {\n messageSendMode: message.sendMode,\n sendMode,\n });\n }\n\n if (!Number.isInteger(sendMode) || sendMode < 0 || sendMode > 255) {\n throw invalidParams(\"The TON send mode must be an integer between 0 and 255\", { sendMode });\n }\n\n return { message, sendMode };\n}\n\nasync function toLedgerOrder(message: TONTransactionMessage): Promise<TONLedgerOrder> {\n const [{ Address, Cell, loadStateInit }, { parseMessage }] = await Promise.all([\n import(\"@ton/core\"),\n import(\"@ton-community/ton-ledger\"),\n ]);\n\n if (!/^\\d+$/.test(message.amount)) {\n throw invalidParams(\"The TON amount must be an integer number of nanotons\", { amount: message.amount });\n }\n const amount = BigInt(message.amount);\n\n let to: Address;\n try {\n to = Address.parse(message.address);\n } catch {\n throw invalidParams(\"Invalid TON destination address\", { address: message.address });\n }\n // Raw `0:<hex>` destinations default to bounceable, the toolbox convention; friendly ones carry their own flag.\n const bounce = Address.isFriendly(message.address) ? Address.parseFriendly(message.address).isBounceable : true;\n\n let stateInit: StateInit | undefined;\n if (message.stateInit !== undefined) {\n try {\n stateInit = loadStateInit(Cell.fromBase64(message.stateInit).beginParse());\n } catch {\n throw invalidParams(\"The TON state init is not a valid BOC\", { stateInit: message.stateInit });\n }\n }\n\n let payload: Cell | undefined;\n if (message.payload !== undefined) {\n try {\n payload = Cell.fromBase64(message.payload);\n } catch {\n throw invalidParams(\"The TON payload is not a valid BOC\", { payload: message.payload });\n }\n }\n\n // A payload the app cannot display is kept as the untouched `unsafe` cell, which the device signs blind or refuses.\n const payloadFormat = payload ? parseMessage(payload, { disallowModification: true }) : undefined;\n\n return { amount, bounce, payload, payloadFormat, stateInit, to };\n}\n\nfunction sameCell(a: Cell | null | undefined, b: Cell | null | undefined) {\n return a && b ? a.hash().equals(b.hash()) : a == null && b == null;\n}\n\nfunction sameStateInit(signed: StateInit | null | undefined, requested: StateInit | undefined) {\n if (!(signed && requested)) return signed == null && requested == null;\n return sameCell(signed.code, requested.code) && sameCell(signed.data, requested.data);\n}\n\n// The library re-encodes structured payloads before the device signs them, so the body it returns is only\n// broadcast when the signed order is the requested one.\nasync function assertSignedTransfer(body: Cell, expected: SignedTransferExpectation) {\n const { Cell, loadMessageRelaxed } = await import(\"@ton/core\");\n\n let signed: { walletId: number; timeout: number; seqno: number; sendMode: number; order: MessageRelaxed };\n try {\n const transfer = body.beginParse().skip(512);\n const walletId = transfer.loadUint(32);\n const timeout = transfer.loadUint(32);\n const seqno = transfer.loadUint(32);\n transfer.skip(8);\n const sendMode = transfer.loadUint(8);\n const order = loadMessageRelaxed(transfer.loadRef().beginParse());\n transfer.endParse();\n signed = { order, sendMode, seqno, timeout, walletId };\n } catch (error) {\n throw new SwapKitError(\n { errorKey: \"wallet_ledger_signing_error\", info: { reason: \"Unreadable signed TON transfer\" } },\n error,\n );\n }\n\n const { order } = signed;\n const matches =\n signed.walletId === expected.walletId &&\n signed.timeout === expected.timeout &&\n signed.seqno === expected.seqno &&\n signed.sendMode === expected.sendMode &&\n order.info.type === \"internal\" &&\n order.info.dest.equals(expected.to) &&\n order.info.value.coins === expected.amount &&\n order.info.bounce === expected.bounce &&\n order.body.hash().equals((expected.payload ?? Cell.EMPTY).hash()) &&\n sameStateInit(order.init, expected.stateInit);\n if (!matches) {\n throw new SwapKitError({\n errorKey: \"wallet_ledger_signing_error\",\n info: { reason: \"The signed TON transfer does not match the requested message\" },\n });\n }\n}\n\nexport async function TONLedger(paramsOrPath?: TONLedgerParams | DerivationPathArray, transport?: Transport) {\n const { derivationPath, ...connection } = normalizeLedgerJsClientParams({ paramsOrPath, transport });\n const path = toLedgerPath(derivationPath || NetworkDerivationPath[Chain.Ton]);\n\n async function runTonOperation<Output>({\n operation,\n requiredUserInteraction,\n }: {\n operation: (app: TonTransport) => Promise<Output>;\n requiredUserInteraction?: UserInteractionRequired;\n }) {\n const { TonTransport } = await import(\"@ton-community/ton-ledger\");\n return runLedgerJsOperation({\n appName: \"TON\",\n connection,\n createApp: (ledgerTransport) => new TonTransport(ledgerTransport),\n operation,\n requiredUserInteraction,\n });\n }\n\n const [{ Address }, { WalletContractV4 }] = await Promise.all([import(\"@ton/core\"), import(\"@ton/ton\")]);\n const { address: deviceAddress, publicKey } = await runTonOperation({\n operation: (app) =>\n app.getAddress(path, { bounceable: false, chain: TON_WORKCHAIN, testOnly: false, walletVersion: \"v4\" }),\n });\n\n const wallet = WalletContractV4.create({ publicKey, workchain: TON_WORKCHAIN });\n if (!wallet.address.equals(Address.parse(deviceAddress))) {\n throw new SwapKitError({\n errorKey: \"wallet_ledger_failed_to_get_address\",\n info: { deviceAddress, reason: \"The Ledger TON address is not the wallet v4 address of its public key\" },\n });\n }\n const address = wallet.address.toString({ bounceable: false, urlSafe: true });\n\n let client: TonClient | undefined;\n async function getWalletState() {\n if (!client) {\n const { TonClient } = await import(\"@ton/ton\");\n client = new TonClient({ endpoint: await getRPCUrl(Chain.Ton) });\n }\n const { state } = await client.getContractState(wallet.address);\n const deployed = state === \"active\";\n const seqno = deployed ? await client.open(wallet).getSeqno() : 0;\n\n return { deployed, seqno };\n }\n\n async function signTransaction(input: TONTransactionInput): Promise<Cell> {\n const { message, sendMode } = resolveSingleMessage(input);\n const order = await toLedgerOrder(message);\n const { deployed, seqno } = await getWalletState();\n const timeout = Math.floor(Date.now() / 1000) + TRANSACTION_VALID_SECONDS;\n\n const body = await runTonOperation({\n operation: (app) =>\n app.signTransaction(path, {\n amount: order.amount,\n bounce: order.bounce,\n payload: order.payloadFormat,\n sendMode,\n seqno,\n stateInit: order.stateInit,\n timeout,\n to: order.to,\n }),\n requiredUserInteraction: LEDGER_USER_INTERACTION_REQUIRED.SignTransaction,\n });\n await assertSignedTransfer(body, { ...order, sendMode, seqno, timeout, walletId: wallet.walletId });\n\n const { beginCell, external, storeMessage } = await import(\"@ton/core\");\n return beginCell()\n .store(storeMessage(external({ body, init: deployed ? undefined : wallet.init, to: wallet.address })))\n .endCell();\n }\n\n return { getAddress: () => address, publicKey, signTransaction };\n}\n",
24
24
  "import type { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport type TronApp from \"@ledgerhq/hw-app-trx\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport {\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { TronSignedTransaction, TronSigner, TronTransaction } from \"@swapkit/toolboxes/tron\";\n\nimport {\n LEDGER_USER_INTERACTION_REQUIRED,\n type LedgerJsClientParams,\n normalizeLedgerJsClientParams,\n runLedgerJsOperation,\n} from \"../helpers/ledgerJsDmkBridge\";\n\ntype TronLedgerParams = LedgerJsClientParams<DerivationPathArray | string>;\n\nexport class TronLedgerInterface implements TronSigner {\n readonly derivationPath: string;\n readonly ledgerTimeout = 50000;\n private readonly connection: Omit<TronLedgerParams, \"derivationPath\">;\n\n constructor(paramsOrPath?: TronLedgerParams | DerivationPathArray | string, transport?: Transport) {\n const { derivationPath, ...connection } = normalizeLedgerJsClientParams({ paramsOrPath, transport });\n this.derivationPath =\n typeof derivationPath === \"string\"\n ? derivationPath\n : derivationPathToString(derivationPath || NetworkDerivationPath.TRON);\n this.connection = connection;\n }\n\n private async runTronOperation<Output>({\n operation,\n requiredUserInteraction,\n }: {\n operation: (app: InstanceType<typeof TronApp>) => Promise<Output>;\n requiredUserInteraction?: UserInteractionRequired;\n }) {\n const TronApp = (await import(\"@ledgerhq/hw-app-trx\")).default;\n return runLedgerJsOperation({\n appName: \"Tron\",\n connection: this.connection,\n createApp: (ledgerTransport) => new TronApp(ledgerTransport),\n operation,\n requiredUserInteraction,\n });\n }\n\n checkOrCreateTransportAndLedger = async () => {\n await this.runTronOperation({ operation: async () => true });\n };\n\n createTransportAndLedger = async () => {\n await this.runTronOperation({ operation: async () => true });\n };\n\n getAddress = async () => {\n const response = await this.getAddressAndPubKey();\n if (!response) throw new SwapKitError(\"wallet_ledger_failed_to_get_address\");\n return response.address;\n };\n\n getAddressAndPubKey = async () => {\n const result = await this.runTronOperation({ operation: (app) => app.getAddress(this.derivationPath) });\n if (!result) throw new SwapKitError(\"wallet_ledger_failed_to_get_address\");\n\n return { address: result.address, publicKey: result.publicKey };\n };\n\n showAddressAndPubKey = async () => {\n return await this.runTronOperation({\n operation: (app) => app.getAddress(this.derivationPath, true),\n requiredUserInteraction: LEDGER_USER_INTERACTION_REQUIRED.VerifyAddress,\n });\n };\n\n signTransaction = async (transaction: TronTransaction): Promise<TronSignedTransaction> => {\n try {\n const signature = await this.runTronOperation({\n operation: (app) => app.signTransaction(this.derivationPath, transaction.raw_data_hex, []),\n requiredUserInteraction: LEDGER_USER_INTERACTION_REQUIRED.SignTransaction,\n });\n\n if (!signature) throw new SwapKitError(\"wallet_ledger_signing_error\");\n return { ...transaction, signature: [signature] };\n } catch (error) {\n if (error instanceof SwapKitError) throw error;\n throw new SwapKitError(\"wallet_ledger_signing_error\", { error });\n }\n };\n}\n\nexport function TronLedger(paramsOrPath?: TronLedgerParams | DerivationPathArray, transport?: Transport) {\n return new TronLedgerInterface(paramsOrPath, transport);\n}\n",
25
25
  "import type { UserInteractionRequired } from \"@ledgerhq/device-management-kit\";\nimport type Xrp from \"@ledgerhq/hw-app-xrp\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport { Chain, type DerivationPathArray, derivationPathToString, NetworkDerivationPath } from \"@swapkit/helpers\";\nimport type { RippleTransaction } from \"@swapkit/toolboxes/ripple\";\nimport type { Payment } from \"xrpl\";\n\nimport {\n LEDGER_USER_INTERACTION_REQUIRED,\n type LedgerJsClientParams,\n normalizeLedgerJsClientParams,\n runLedgerJsOperation,\n} from \"../helpers/ledgerJsDmkBridge\";\n\nconst TF_FULLY_CANONICAL_SIG = 2147483648;\n\ntype XRPLedgerParams = LedgerJsClientParams<DerivationPathArray>;\n\nfunction cleanTransactionObject(transaction: object): Record<string, unknown> {\n return Object.fromEntries(Object.entries(transaction).filter(([, value]) => value !== null && value !== undefined));\n}\n\nexport async function XRPLedger(paramsOrPath?: XRPLedgerParams | DerivationPathArray, transport?: Transport) {\n const { derivationPath, ...connection } = normalizeLedgerJsClientParams({ paramsOrPath, transport });\n const path = derivationPathToString(derivationPath || NetworkDerivationPath[Chain.Ripple]);\n\n async function runXrpOperation<Output>({\n operation,\n requiredUserInteraction,\n }: {\n operation: (app: Xrp) => Promise<Output>;\n requiredUserInteraction?: UserInteractionRequired;\n }) {\n const XrpApp = (await import(\"@ledgerhq/hw-app-xrp\")).default;\n return runLedgerJsOperation({\n appName: \"XRP\",\n connection,\n createApp: (ledgerTransport) => new XrpApp(ledgerTransport),\n operation,\n requiredUserInteraction,\n });\n }\n\n const { address, publicKey } = await runXrpOperation({ operation: (app) => app.getAddress(path) });\n\n async function signTransaction(transaction: Payment | RippleTransaction) {\n const [{ encode }, { hashes }] = await Promise.all([import(\"ripple-binary-codec\"), import(\"xrpl\")]);\n const transactionJSON = {\n ...cleanTransactionObject(transaction),\n Flags: transaction.Flags || TF_FULLY_CANONICAL_SIG,\n SigningPubKey: publicKey.toUpperCase(),\n };\n\n const transactionToSignOnLedger = encode(transactionJSON);\n const txnSignature = await runXrpOperation({\n operation: (app) => app.signTransaction(path, transactionToSignOnLedger),\n requiredUserInteraction: LEDGER_USER_INTERACTION_REQUIRED.SignTransaction,\n });\n const tx_blob = encode({ ...transactionJSON, TxnSignature: txnSignature });\n const hash = hashes.hashSignedTx(tx_blob);\n\n return { hash, tx_blob };\n }\n\n return { getAddress: () => address, signTransaction };\n}\n",
26
- "import type {\n LegacyCreateTransactionArg,\n LegacyTransaction,\n LegacyTransactionInput,\n LegacyTransactionOutput,\n SignerZcash,\n} from \"@ledgerhq/device-signer-kit-zcash\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport { hex } from \"@scure/base\";\nimport {\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { UTXOType } from \"@swapkit/toolboxes/utxo\";\nimport type { ZcashTransaction } from \"@swapkit/utxo-signer\";\n\nimport type { LedgerDMKSession } from \"../helpers/dmk\";\nimport { createLedgerSessionSigner, getLedgerDMKSession } from \"../helpers/dmk\";\nimport { executeLedgerDeviceAction, type LedgerDeviceActionStateHandler } from \"../helpers/executeDeviceAction\";\nimport { runLedgerJsOperation } from \"../helpers/ledgerJsDmkBridge\";\nimport { ZcashLedger as LegacyZcashLedger } from \"./utxo\";\n\n// @swapkit/utxo-signer 3.1.0 exports only the Ironwood activation height.\nconst NU6_2_ACTIVATION_HEIGHT = 3_364_600;\n\ninterface ZcashLedgerParams {\n derivationPath?: DerivationPathArray | string;\n dmkSession?: LedgerDMKSession;\n onDeviceActionState?: LedgerDeviceActionStateHandler;\n transport?: Transport;\n}\n\ninterface GetExtendedPublicKeyParams {\n path?: string;\n xpubVersion?: number;\n}\n\ninterface SignZcashTransactionParams {\n changePath?: string;\n derivationPaths?: string[];\n inputUtxos: UTXOType[];\n tx: ZcashTransaction;\n}\n\ninterface SignZcashTransactionWithMultiplePathsParams extends Omit<SignZcashTransactionParams, \"derivationPaths\"> {\n derivationPaths: string[];\n}\n\ninterface ParsedZcashPath {\n account: number;\n accountPath: string;\n fullPath: string;\n}\n\nfunction normalizePath(path: DerivationPathArray | string) {\n return (typeof path === \"string\" ? path : derivationPathToString(path)).replace(/^m\\//, \"\").replace(/^\\/+/, \"\");\n}\n\nfunction parseZcashPath(path: DerivationPathArray | string): ParsedZcashPath {\n const normalized = normalizePath(path);\n const match = /^44'\\/133'\\/(\\d+)'(?:\\/(0|1)\\/(\\d+))?$/.exec(normalized);\n\n if (!match) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n path: normalized,\n reason: \"Expected a Zcash BIP44 path with coin type 133\",\n });\n }\n\n const account = Number(match[1]);\n const accountPath = `44'/133'/${account}'`;\n return { account, accountPath, fullPath: `${accountPath}/${match[2] ?? 0}/${match[3] ?? 0}` };\n}\n\nfunction uint32LE(value: number) {\n const bytes = new Uint8Array(4);\n new DataView(bytes.buffer).setUint32(0, value >>> 0, true);\n return bytes;\n}\n\nfunction uint64LE(value: bigint) {\n const bytes = new Uint8Array(8);\n new DataView(bytes.buffer).setBigUint64(0, value, true);\n return bytes;\n}\n\n// Keeps the failure context in the error info, and so in its message, rather than only in its cause.\nfunction invalidParams(info: Record<string, unknown>, cause?: unknown) {\n return new SwapKitError({ errorKey: \"wallet_ledger_invalid_params\", info }, cause);\n}\n\nfunction readUint32LE({ bytes, offset }: { bytes: Uint8Array; offset: number }) {\n if (offset + 4 > bytes.length) throw new Error(\"Unexpected end of previous transaction\");\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getUint32(0, true);\n}\n\n// @swapkit/utxo-signer 3.1.0 has no bounds-checked, v5-aware decoder (ZcashTransaction.fromBytes reads only the\n// v4 layout and its Reader is not exported), so previous transactions are read here.\nfunction createPreviousTransactionReader(bytes: Uint8Array) {\n let offset = 0;\n\n function take(length: number) {\n if (offset + length > bytes.length) throw new Error(`Previous transaction ends before byte ${offset + length}`);\n offset += length;\n return bytes.slice(offset - length, offset);\n }\n\n function compactSize() {\n const prefix = take(1)[0] ?? 0;\n if (prefix < 0xfd) return prefix;\n\n const view = new DataView(take(prefix === 0xfd ? 2 : prefix === 0xfe ? 4 : 8).buffer);\n const value =\n view.byteLength === 2\n ? view.getUint16(0, true)\n : view.byteLength === 4\n ? view.getUint32(0, true)\n : Number(view.getBigUint64(0, true));\n if (!Number.isSafeInteger(value)) throw new Error(\"Previous transaction compact-size value exceeds safe range\");\n return value;\n }\n\n return { compactSize, rest: () => take(bytes.length - offset), take, varBytes: () => take(compactSize()) };\n}\n\n// Fields are read into locals in wire order: object keys are kept sorted, which is not the order on the wire.\nfunction parsePreviousTransaction({ bytes, version }: { bytes: Uint8Array; version: number }) {\n const reader = createPreviousTransactionReader(bytes);\n const header = reader.take(version === 4 ? 8 : 20);\n\n const inputs: LegacyTransactionInput[] = [];\n for (let count = reader.compactSize(); inputs.length < count; ) {\n const prevout = reader.take(36);\n const script = reader.varBytes();\n const sequence = reader.take(4);\n inputs.push({ prevout, script, sequence });\n }\n\n const outputs: LegacyTransactionOutput[] = [];\n for (let count = reader.compactSize(); outputs.length < count; ) {\n const amount = reader.take(8);\n const script = reader.varBytes();\n outputs.push({ amount, script });\n }\n\n const transparentFields = { inputs, nVersionGroupId: header.slice(4, 8), outputs, version: header.slice(0, 4) };\n if (version >= 5) {\n return {\n ...transparentFields,\n consensusBranchId: header.slice(8, 12),\n locktime: header.slice(12, 16),\n nExpiryHeight: header.slice(16, 20),\n };\n }\n\n const locktime = reader.take(4);\n const nExpiryHeight = reader.take(4);\n // Value balance, Sapling spends and outputs, JoinSplits and the binding signature follow nExpiryHeight.\n return { ...transparentFields, extraData: reader.rest(), locktime, nExpiryHeight };\n}\n\n// Either byte order binds a txid equally: toolbox-built transactions keep display-order txids, while\n// ZcashTransaction.fromBytes keeps them in wire order.\nfunction matchesTxid({ hash, txid }: { hash: string; txid: Uint8Array }) {\n const normalized = hash.toLowerCase();\n return normalized === hex.encode(txid) || normalized === hex.encode(txid.slice().reverse());\n}\n\nasync function serializeOutputs(tx: ZcashTransaction) {\n const { CompactSize, utils } = await import(\"@swapkit/utxo-signer\");\n const outputs = Array.from({ length: tx.outputsLength }, (_, index) => tx.getOutput(index));\n return utils.concatBytes(\n CompactSize.encode(BigInt(outputs.length)),\n ...outputs.flatMap(({ amount, script }) => [uint64LE(amount), CompactSize.encode(BigInt(script.length)), script]),\n );\n}\n\nasync function activationHeight(consensusBranchId: number) {\n const { ZCASH_IRONWOOD_ACTIVATION_HEIGHT, ZcashConsensusBranchId } = await import(\"@swapkit/utxo-signer\");\n\n switch (consensusBranchId) {\n case ZcashConsensusBranchId.NU6_2:\n return NU6_2_ACTIVATION_HEIGHT;\n case ZcashConsensusBranchId.IRONWOOD:\n return ZCASH_IRONWOOD_ACTIVATION_HEIGHT;\n default:\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n consensusBranchId,\n reason: \"Ledger Zcash DSK signing supports NU6.2 and Ironwood target branches\",\n });\n }\n}\n\nasync function previousTransaction({\n inputIndex,\n utxo,\n}: {\n inputIndex: number;\n utxo: UTXOType;\n}): Promise<LegacyTransaction> {\n const { hash: txid, index: outputIndex, txHex } = utxo;\n const context = { inputIndex, outputIndex, txid };\n if (!txHex) {\n throw invalidParams({\n ...context,\n reason: \"Zcash Ledger signing requires the full previous transaction txHex for every input\",\n });\n }\n\n function readPrevious<T>(read: () => T) {\n try {\n return read();\n } catch (error) {\n throw invalidParams({ ...context, reason: error instanceof Error ? error.message : String(error) }, error);\n }\n }\n\n const raw = readPrevious(() => hex.decode(txHex.replace(/^0x/i, \"\")));\n const header = readPrevious(() => readUint32LE({ bytes: raw, offset: 0 }));\n const version = header & 0x7fffffff;\n // The Zcash DSK can stream only v4 (Sapling) and v5/v6 previous transactions into a trusted input.\n if ((header & 0x80000000) === 0 || version < 4 || version > 6) {\n throw invalidParams({\n ...context,\n reason: \"Ledger Zcash signing supports only overwintered v4, v5 and v6 previous transactions\",\n version,\n });\n }\n\n const parsed = readPrevious(() => parsePreviousTransaction({ bytes: raw, version }));\n if (outputIndex < 0 || outputIndex >= parsed.outputs.length) {\n throw invalidParams({\n ...context,\n outputCount: parsed.outputs.length,\n reason: \"Zcash input references an output outside its previous transaction\",\n });\n }\n\n // The DSK streams a v5/v6 previous transaction from its wire bytes and the device computes its ZIP-244 txid.\n // Override bytes must use that layout, so the DSK frames a v4 itself from the parsed fields instead.\n if (version >= 5) return { ...parsed, serializedPreviousTransactionOverride: raw };\n\n // A v4 txid is the double SHA-256 of its bytes, so bind the transaction to the planned input before the\n // device trusts its amounts.\n const { utils } = await import(\"@swapkit/utxo-signer\");\n const previousTxid = utils.sha256x2(raw);\n if (!matchesTxid({ hash: txid, txid: previousTxid })) {\n throw invalidParams({\n ...context,\n previousTxid: hex.encode(previousTxid.reverse()),\n reason: \"Previous transaction does not hash to the input txid\",\n });\n }\n\n return parsed;\n}\n\nfunction validateSigningParams({\n accountPath,\n derivationPaths,\n inputUtxos,\n tx,\n}: {\n accountPath: string;\n derivationPaths: string[];\n inputUtxos: UTXOType[];\n tx: ZcashTransaction;\n}) {\n if (inputUtxos.length !== tx.inputsLength || derivationPaths.length !== tx.inputsLength) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n derivationPathCount: derivationPaths.length,\n inputCount: tx.inputsLength,\n inputUtxoCount: inputUtxos.length,\n reason: \"Zcash input UTXOs and derivation paths must match the transaction input count\",\n });\n }\n\n inputUtxos.forEach((utxo, inputIndex) => {\n const input = tx.getInput(inputIndex);\n if (!matchesTxid({ hash: utxo.hash, txid: input.txid }) || utxo.index !== input.index) {\n throw invalidParams({\n inputIndex,\n reason: \"Zcash input UTXO does not match the transaction input\",\n transactionInput: { index: input.index, txid: hex.encode(input.txid) },\n utxo: { hash: utxo.hash, index: utxo.index },\n });\n }\n });\n\n return derivationPaths.map((path) => {\n const parsedPath = parseZcashPath(path);\n if (parsedPath.accountPath !== accountPath) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n accountPath,\n path: parsedPath.fullPath,\n reason: \"All Zcash input derivation paths must belong to the configured account\",\n });\n }\n return parsedPath.fullPath;\n });\n}\n\nfunction assertRawV5(rawTransaction: string) {\n const normalized = rawTransaction.replace(/^0x/i, \"\");\n const bytes = hex.decode(normalized);\n if (bytes.length < 4 || (new DataView(bytes.buffer, bytes.byteOffset, 4).getUint32(0, true) & 0x7fffffff) !== 5) {\n throw new SwapKitError(\"wallet_ledger_invalid_response\", {\n reason: \"Ledger Zcash signer did not return a version 5 transaction\",\n });\n }\n return normalized;\n}\n\nexport function ZcashLedger({\n derivationPath = NetworkDerivationPath.ZEC,\n dmkSession,\n onDeviceActionState,\n transport,\n}: ZcashLedgerParams = {}) {\n const configuredPath = parseZcashPath(derivationPath);\n const legacyClient = transport ? LegacyZcashLedger(derivationPath, transport) : undefined;\n const getSessionSigner = createLedgerSessionSigner<SignerZcash>({\n build: async (session) => {\n const { SignerZcashBuilder } = await import(\"@ledgerhq/device-signer-kit-zcash\");\n return new SignerZcashBuilder(session).build();\n },\n dmkSession,\n });\n\n function getSigner() {\n if (legacyClient) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n reason: \"A Device Signer Kit operation is unavailable when a legacy transport is supplied\",\n });\n }\n\n return getSessionSigner();\n }\n\n async function getDskAddress({ checkOnDevice = false, path = configuredPath.fullPath } = {}) {\n const signer = await getSigner();\n return executeLedgerDeviceAction({ action: () => signer.getAddress(path, { checkOnDevice }), onDeviceActionState });\n }\n\n async function getExtendedPublicKey({\n path = configuredPath.accountPath,\n xpubVersion = 0x0488b21e,\n }: GetExtendedPublicKeyParams = {}) {\n const parsedAccount = parseZcashPath(path);\n if (parsedAccount.fullPath !== `${parsedAccount.accountPath}/0/0` || normalizePath(path).split(\"/\").length !== 3) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n path,\n reason: \"Zcash extended public keys are exported at account level\",\n });\n }\n\n const connection = {\n dmkSession: transport ? undefined : (dmkSession ?? (await getLedgerDMKSession())),\n onDeviceActionState,\n transport,\n };\n const { default: BitcoinApp } = await import(\"@ledgerhq/hw-app-btc\");\n return runLedgerJsOperation({\n appName: \"Zcash\",\n connection,\n createApp: (operationTransport) => new BitcoinApp({ currency: \"zcash\", transport: operationTransport }),\n operation: (app) => app.getWalletXpub({ path: parsedAccount.accountPath, xpubVersion }),\n });\n }\n\n async function signTransaction({ changePath, derivationPaths, inputUtxos, tx }: SignZcashTransactionParams) {\n const paths = validateSigningParams({\n accountPath: configuredPath.accountPath,\n derivationPaths: derivationPaths ?? Array.from({ length: tx.inputsLength }, () => configuredPath.fullPath),\n inputUtxos,\n tx,\n });\n\n // hw-app-btc picks a pre-Ironwood branch id without a block height and misparses v5 previous\n // transactions, so the legacy transport cannot produce a transaction the network accepts.\n if (legacyClient) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n reason: \"Zcash signing requires a Ledger DMK session instead of a legacy transport\",\n });\n }\n\n const blockHeight = await activationHeight(tx.consensusBranchId);\n const inputs = await Promise.all(\n inputUtxos.map(\n async (utxo, inputIndex): Promise<LegacyCreateTransactionArg[\"inputs\"][number]> => [\n await previousTransaction({ inputIndex, utxo }),\n utxo.index,\n null,\n tx.getInput(inputIndex).sequence ?? 0xffffffff,\n ],\n ),\n );\n const args: LegacyCreateTransactionArg = {\n additionals: [\"zcash\", \"sapling\"],\n associatedKeysets: paths,\n blockHeight,\n changePath: changePath ? parseZcashPath(changePath).fullPath : configuredPath.fullPath,\n expiryHeight: uint32LE(tx.expiryHeight),\n inputs,\n lockTime: tx.lockTime,\n outputScriptHex: hex.encode(await serializeOutputs(tx)),\n };\n const signer = await getSigner();\n const signed = await executeLedgerDeviceAction({ action: () => signer.signTransaction(args), onDeviceActionState });\n return assertRawV5(signed);\n }\n\n return {\n connect: async () => {\n if (legacyClient) return legacyClient.connect();\n await getSigner();\n },\n disconnect: async () => legacyClient?.disconnect(),\n getAddress: async () => {\n if (legacyClient) return legacyClient.getAddress();\n return (await getDskAddress()).address;\n },\n getAddressAndPubKey: async () => {\n if (legacyClient) return { address: await legacyClient.getAddress() };\n const { address, chainCode, publicKey } = await getDskAddress();\n return { address, chainCode: hex.encode(chainCode), publicKey: hex.encode(publicKey) };\n },\n getExtendedPublicKey,\n showAddressAndPubKey: async () => {\n if (legacyClient) return { address: await legacyClient.getAddress() };\n const { address, chainCode, publicKey } = await getDskAddress({ checkOnDevice: true });\n return { address, chainCode: hex.encode(chainCode), publicKey: hex.encode(publicKey) };\n },\n signTransaction,\n signTransactionWithMultiplePaths: async (params: SignZcashTransactionWithMultiplePathsParams) =>\n signTransaction(params),\n };\n}\n"
26
+ "import type {\n LegacyCreateTransactionArg,\n LegacyTransaction,\n LegacyTransactionInput,\n LegacyTransactionOutput,\n SignerZcash,\n} from \"@ledgerhq/device-signer-kit-zcash\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport { hex } from \"@scure/base\";\nimport {\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport type { UTXOType } from \"@swapkit/toolboxes/utxo\";\nimport type { ZcashTransaction } from \"@swapkit/utxo-signer\";\n\nimport type { LedgerDMKSession } from \"../helpers/dmk\";\nimport { createLedgerSessionSigner, getLedgerDMKSession } from \"../helpers/dmk\";\nimport { executeLedgerDeviceAction, type LedgerDeviceActionStateHandler } from \"../helpers/executeDeviceAction\";\nimport { runLedgerJsOperation } from \"../helpers/ledgerJsDmkBridge\";\nimport { ZcashLedger as LegacyZcashLedger } from \"./utxo\";\n\n// @swapkit/utxo-signer exports no NU6.2 activation height.\nconst NU6_2_ACTIVATION_HEIGHT = 3_364_600;\n\ninterface ZcashLedgerParams {\n derivationPath?: DerivationPathArray | string;\n dmkSession?: LedgerDMKSession;\n onDeviceActionState?: LedgerDeviceActionStateHandler;\n transport?: Transport;\n}\n\ninterface GetExtendedPublicKeyParams {\n path?: string;\n xpubVersion?: number;\n}\n\ninterface SignZcashTransactionParams {\n changePath?: string;\n derivationPaths?: string[];\n inputUtxos: UTXOType[];\n tx: ZcashTransaction;\n}\n\ninterface SignZcashTransactionWithMultiplePathsParams extends Omit<SignZcashTransactionParams, \"derivationPaths\"> {\n derivationPaths: string[];\n}\n\ninterface ParsedZcashPath {\n account: number;\n accountPath: string;\n fullPath: string;\n}\n\nfunction normalizePath(path: DerivationPathArray | string) {\n return (typeof path === \"string\" ? path : derivationPathToString(path)).replace(/^m\\//, \"\").replace(/^\\/+/, \"\");\n}\n\nfunction parseZcashPath(path: DerivationPathArray | string): ParsedZcashPath {\n const normalized = normalizePath(path);\n const match = /^44'\\/133'\\/(\\d+)'(?:\\/(0|1)\\/(\\d+))?$/.exec(normalized);\n\n if (!match) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n path: normalized,\n reason: \"Expected a Zcash BIP44 path with coin type 133\",\n });\n }\n\n const account = Number(match[1]);\n const accountPath = `44'/133'/${account}'`;\n return { account, accountPath, fullPath: `${accountPath}/${match[2] ?? 0}/${match[3] ?? 0}` };\n}\n\nfunction deviceChangePath(path: DerivationPathArray | string) {\n const { fullPath } = parseZcashPath(path);\n return fullPath.split(\"/\")[3] === \"1\" ? fullPath : undefined;\n}\n\nfunction uint32LE(value: number) {\n const bytes = new Uint8Array(4);\n new DataView(bytes.buffer).setUint32(0, value >>> 0, true);\n return bytes;\n}\n\nfunction uint64LE(value: bigint) {\n const bytes = new Uint8Array(8);\n new DataView(bytes.buffer).setBigUint64(0, value, true);\n return bytes;\n}\n\n// Keeps the failure context in the error info, and so in its message, rather than only in its cause.\nfunction invalidParams(info: Record<string, unknown>, cause?: unknown) {\n return new SwapKitError({ errorKey: \"wallet_ledger_invalid_params\", info }, cause);\n}\n\nfunction readUint32LE({ bytes, offset }: { bytes: Uint8Array; offset: number }) {\n if (offset + 4 > bytes.length) throw new Error(\"Unexpected end of previous transaction\");\n return new DataView(bytes.buffer, bytes.byteOffset + offset, 4).getUint32(0, true);\n}\n\n// @swapkit/utxo-signer 3.1.0 has no bounds-checked, v5-aware decoder (ZcashTransaction.fromBytes reads only the\n// v4 layout and its Reader is not exported), so previous transactions are read here.\nfunction createPreviousTransactionReader(bytes: Uint8Array) {\n let offset = 0;\n\n function take(length: number) {\n if (offset + length > bytes.length) throw new Error(`Previous transaction ends before byte ${offset + length}`);\n offset += length;\n return bytes.slice(offset - length, offset);\n }\n\n function compactSize() {\n const prefix = take(1)[0] ?? 0;\n if (prefix < 0xfd) return prefix;\n\n const view = new DataView(take(prefix === 0xfd ? 2 : prefix === 0xfe ? 4 : 8).buffer);\n const value =\n view.byteLength === 2\n ? view.getUint16(0, true)\n : view.byteLength === 4\n ? view.getUint32(0, true)\n : Number(view.getBigUint64(0, true));\n if (!Number.isSafeInteger(value)) throw new Error(\"Previous transaction compact-size value exceeds safe range\");\n return value;\n }\n\n return { compactSize, rest: () => take(bytes.length - offset), take, varBytes: () => take(compactSize()) };\n}\n\n// Fields are read into locals in wire order: object keys are kept sorted, which is not the order on the wire.\nfunction parsePreviousTransaction({ bytes, version }: { bytes: Uint8Array; version: number }) {\n const reader = createPreviousTransactionReader(bytes);\n const header = reader.take(version === 4 ? 8 : 20);\n\n const inputs: LegacyTransactionInput[] = [];\n for (let count = reader.compactSize(); inputs.length < count; ) {\n const prevout = reader.take(36);\n const script = reader.varBytes();\n const sequence = reader.take(4);\n inputs.push({ prevout, script, sequence });\n }\n\n const outputs: LegacyTransactionOutput[] = [];\n for (let count = reader.compactSize(); outputs.length < count; ) {\n const amount = reader.take(8);\n const script = reader.varBytes();\n outputs.push({ amount, script });\n }\n\n const transparentFields = { inputs, nVersionGroupId: header.slice(4, 8), outputs, version: header.slice(0, 4) };\n if (version >= 5) {\n return {\n ...transparentFields,\n consensusBranchId: header.slice(8, 12),\n locktime: header.slice(12, 16),\n nExpiryHeight: header.slice(16, 20),\n };\n }\n\n const locktime = reader.take(4);\n const nExpiryHeight = reader.take(4);\n // Value balance, Sapling spends and outputs, JoinSplits and the binding signature follow nExpiryHeight.\n return { ...transparentFields, extraData: reader.rest(), locktime, nExpiryHeight };\n}\n\n// Either byte order binds a txid equally: utxo-signer below 3.2 parsed raw transactions with wire-order txids.\nfunction matchesTxid({ hash, txid }: { hash: string; txid: Uint8Array }) {\n const normalized = hash.toLowerCase();\n return normalized === hex.encode(txid) || normalized === hex.encode(txid.slice().reverse());\n}\n\nasync function serializeOutputs(tx: ZcashTransaction) {\n const { CompactSize, utils } = await import(\"@swapkit/utxo-signer\");\n const outputs = Array.from({ length: tx.outputsLength }, (_, index) => tx.getOutput(index));\n return utils.concatBytes(\n CompactSize.encode(BigInt(outputs.length)),\n ...outputs.flatMap(({ amount, script }) => [uint64LE(amount), CompactSize.encode(BigInt(script.length)), script]),\n );\n}\n\nasync function activationHeight(consensusBranchId: number) {\n const { ZCASH_IRONWOOD_ACTIVATION_HEIGHT, ZCASH_NU7_ACTIVATION_HEIGHT, ZcashConsensusBranchId } = await import(\n \"@swapkit/utxo-signer\"\n );\n\n switch (consensusBranchId) {\n case ZcashConsensusBranchId.NU6_2:\n return NU6_2_ACTIVATION_HEIGHT;\n case ZcashConsensusBranchId.IRONWOOD:\n return ZCASH_IRONWOOD_ACTIVATION_HEIGHT;\n case ZcashConsensusBranchId.NU7:\n return ZCASH_NU7_ACTIVATION_HEIGHT;\n default:\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n consensusBranchId,\n reason: \"Ledger Zcash DSK signing supports NU6.2, Ironwood and NU7 target branches\",\n });\n }\n}\n\nasync function previousTransaction({\n inputIndex,\n utxo,\n}: {\n inputIndex: number;\n utxo: UTXOType;\n}): Promise<LegacyTransaction> {\n const { hash: txid, index: outputIndex, txHex } = utxo;\n const context = { inputIndex, outputIndex, txid };\n if (!txHex) {\n throw invalidParams({\n ...context,\n reason: \"Zcash Ledger signing requires the full previous transaction txHex for every input\",\n });\n }\n\n function readPrevious<T>(read: () => T) {\n try {\n return read();\n } catch (error) {\n throw invalidParams({ ...context, reason: error instanceof Error ? error.message : String(error) }, error);\n }\n }\n\n const raw = readPrevious(() => hex.decode(txHex.replace(/^0x/i, \"\")));\n const header = readPrevious(() => readUint32LE({ bytes: raw, offset: 0 }));\n const version = header & 0x7fffffff;\n // The Zcash DSK can stream only v4 (Sapling) and v5/v6 previous transactions into a trusted input.\n if ((header & 0x80000000) === 0 || version < 4 || version > 6) {\n throw invalidParams({\n ...context,\n reason: \"Ledger Zcash signing supports only overwintered v4, v5 and v6 previous transactions\",\n version,\n });\n }\n\n const parsed = readPrevious(() => parsePreviousTransaction({ bytes: raw, version }));\n if (outputIndex < 0 || outputIndex >= parsed.outputs.length) {\n throw invalidParams({\n ...context,\n outputCount: parsed.outputs.length,\n reason: \"Zcash input references an output outside its previous transaction\",\n });\n }\n\n // The DSK streams a v5/v6 previous transaction from its wire bytes and the device computes its ZIP-244 txid.\n // Override bytes must use that layout, so the DSK frames a v4 itself from the parsed fields instead.\n if (version >= 5) return { ...parsed, serializedPreviousTransactionOverride: raw };\n\n // A v4 txid is the double SHA-256 of its bytes, so bind the transaction to the planned input before the\n // device trusts its amounts.\n const { utils } = await import(\"@swapkit/utxo-signer\");\n const previousTxid = utils.sha256x2(raw);\n if (!matchesTxid({ hash: txid, txid: previousTxid })) {\n throw invalidParams({\n ...context,\n previousTxid: hex.encode(previousTxid.reverse()),\n reason: \"Previous transaction does not hash to the input txid\",\n });\n }\n\n return parsed;\n}\n\nfunction validateSigningParams({\n accountPath,\n derivationPaths,\n inputUtxos,\n tx,\n}: {\n accountPath: string;\n derivationPaths: string[];\n inputUtxos: UTXOType[];\n tx: ZcashTransaction;\n}) {\n if (inputUtxos.length !== tx.inputsLength || derivationPaths.length !== tx.inputsLength) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n derivationPathCount: derivationPaths.length,\n inputCount: tx.inputsLength,\n inputUtxoCount: inputUtxos.length,\n reason: \"Zcash input UTXOs and derivation paths must match the transaction input count\",\n });\n }\n\n inputUtxos.forEach((utxo, inputIndex) => {\n const input = tx.getInput(inputIndex);\n if (!matchesTxid({ hash: utxo.hash, txid: input.txid }) || utxo.index !== input.index) {\n throw invalidParams({\n inputIndex,\n reason: \"Zcash input UTXO does not match the transaction input\",\n transactionInput: { index: input.index, txid: hex.encode(input.txid) },\n utxo: { hash: utxo.hash, index: utxo.index },\n });\n }\n });\n\n return derivationPaths.map((path) => {\n const parsedPath = parseZcashPath(path);\n if (parsedPath.accountPath !== accountPath) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n accountPath,\n path: parsedPath.fullPath,\n reason: \"All Zcash input derivation paths must belong to the configured account\",\n });\n }\n return parsedPath.fullPath;\n });\n}\n\nfunction assertRawV5(rawTransaction: string) {\n const normalized = rawTransaction.replace(/^0x/i, \"\");\n const bytes = hex.decode(normalized);\n if (bytes.length < 4 || (new DataView(bytes.buffer, bytes.byteOffset, 4).getUint32(0, true) & 0x7fffffff) !== 5) {\n throw new SwapKitError(\"wallet_ledger_invalid_response\", {\n reason: \"Ledger Zcash signer did not return a version 5 transaction\",\n });\n }\n return normalized;\n}\n\nexport function ZcashLedger({\n derivationPath = NetworkDerivationPath.ZEC,\n dmkSession,\n onDeviceActionState,\n transport,\n}: ZcashLedgerParams = {}) {\n const configuredPath = parseZcashPath(derivationPath);\n const legacyClient = transport ? LegacyZcashLedger(derivationPath, transport) : undefined;\n const getSessionSigner = createLedgerSessionSigner<SignerZcash>({\n build: async (session) => {\n const { SignerZcashBuilder } = await import(\"@ledgerhq/device-signer-kit-zcash\");\n return new SignerZcashBuilder(session).build();\n },\n dmkSession,\n });\n\n function getSigner() {\n if (legacyClient) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n reason: \"A Device Signer Kit operation is unavailable when a legacy transport is supplied\",\n });\n }\n\n return getSessionSigner();\n }\n\n async function getDskAddress({ checkOnDevice = false, path = configuredPath.fullPath } = {}) {\n const signer = await getSigner();\n return executeLedgerDeviceAction({ action: () => signer.getAddress(path, { checkOnDevice }), onDeviceActionState });\n }\n\n async function getExtendedPublicKey({\n path = configuredPath.accountPath,\n xpubVersion = 0x0488b21e,\n }: GetExtendedPublicKeyParams = {}) {\n const parsedAccount = parseZcashPath(path);\n if (parsedAccount.fullPath !== `${parsedAccount.accountPath}/0/0` || normalizePath(path).split(\"/\").length !== 3) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n path,\n reason: \"Zcash extended public keys are exported at account level\",\n });\n }\n\n const connection = {\n dmkSession: transport ? undefined : (dmkSession ?? (await getLedgerDMKSession())),\n onDeviceActionState,\n transport,\n };\n const { default: BitcoinApp } = await import(\"@ledgerhq/hw-app-btc\");\n return runLedgerJsOperation({\n appName: \"Zcash\",\n connection,\n createApp: (operationTransport) => new BitcoinApp({ currency: \"zcash\", transport: operationTransport }),\n operation: (app) => app.getWalletXpub({ path: parsedAccount.accountPath, xpubVersion }),\n });\n }\n\n async function signTransaction({ changePath, derivationPaths, inputUtxos, tx }: SignZcashTransactionParams) {\n const paths = validateSigningParams({\n accountPath: configuredPath.accountPath,\n derivationPaths: derivationPaths ?? Array.from({ length: tx.inputsLength }, () => configuredPath.fullPath),\n inputUtxos,\n tx,\n });\n\n // hw-app-btc picks a pre-Ironwood branch id without a block height and misparses v5 previous\n // transactions, so the legacy transport cannot produce a transaction the network accepts.\n if (legacyClient) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n reason: \"Zcash signing requires a Ledger DMK session instead of a legacy transport\",\n });\n }\n\n const blockHeight = await activationHeight(tx.consensusBranchId);\n const inputs = await Promise.all(\n inputUtxos.map(\n async (utxo, inputIndex): Promise<LegacyCreateTransactionArg[\"inputs\"][number]> => [\n await previousTransaction({ inputIndex, utxo }),\n utxo.index,\n null,\n tx.getInput(inputIndex).sequence ?? 0xffffffff,\n // Frames a v4 previous transaction with this branch id; unset, the kit assumes the latest upgrade\n blockHeight,\n ],\n ),\n );\n const args: LegacyCreateTransactionArg = {\n additionals: [\"zcash\", \"sapling\"],\n associatedKeysets: paths,\n blockHeight,\n changePath: deviceChangePath(changePath ?? configuredPath.fullPath),\n expiryHeight: uint32LE(tx.expiryHeight),\n inputs,\n lockTime: tx.lockTime,\n outputScriptHex: hex.encode(await serializeOutputs(tx)),\n };\n const signer = await getSigner();\n const signed = await executeLedgerDeviceAction({ action: () => signer.signTransaction(args), onDeviceActionState });\n return assertRawV5(signed);\n }\n\n return {\n connect: async () => {\n if (legacyClient) return legacyClient.connect();\n await getSigner();\n },\n disconnect: async () => legacyClient?.disconnect(),\n getAddress: async () => {\n if (legacyClient) return legacyClient.getAddress();\n return (await getDskAddress()).address;\n },\n getAddressAndPubKey: async () => {\n if (legacyClient) return { address: await legacyClient.getAddress() };\n const { address, chainCode, publicKey } = await getDskAddress();\n return { address, chainCode: hex.encode(chainCode), publicKey: hex.encode(publicKey) };\n },\n getExtendedPublicKey,\n showAddressAndPubKey: async () => {\n if (legacyClient) return { address: await legacyClient.getAddress() };\n const { address, chainCode, publicKey } = await getDskAddress({ checkOnDevice: true });\n return { address, chainCode: hex.encode(chainCode), publicKey: hex.encode(publicKey) };\n },\n signTransaction,\n signTransactionWithMultiplePaths: async (params: SignZcashTransactionWithMultiplePathsParams) =>\n signTransaction(params),\n };\n}\n"
27
27
  ],
28
- "mappings": "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",
29
- "debugId": "7C6193C95BBAA7BE64756E2164756E21",
28
+ "mappings": "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",
29
+ "debugId": "66F3CDFC7C1E009764756E2164756E21",
30
30
  "names": []
31
31
  }