@swapkit/wallet-hardware 6.1.1 → 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 (112) hide show
  1. package/dist/THIRD_PARTY_LICENSES.md +4 -4
  2. package/dist/{chunk-jzrytcrf.js → chunk-0k1b2ddn.js} +3 -3
  3. package/dist/{chunk-jzrytcrf.js.map → chunk-0k1b2ddn.js.map} +2 -2
  4. package/dist/{chunk-jewm2ag3.js → chunk-2tzsz8f3.js} +4 -4
  5. package/dist/{chunk-jewm2ag3.js.map → chunk-2tzsz8f3.js.map} +1 -1
  6. package/dist/{chunk-yrxe491r.js → chunk-410fpx61.js} +4 -4
  7. package/dist/{chunk-yrxe491r.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-xmvg4cds.js → chunk-96p7njae.js} +3 -3
  11. package/dist/{chunk-xmvg4cds.js.map → chunk-96p7njae.js.map} +2 -2
  12. package/dist/chunk-97nsp4z6.js +5 -0
  13. package/dist/chunk-97nsp4z6.js.map +10 -0
  14. package/dist/{chunk-nhva847d.js → chunk-9a9gn4pb.js} +3 -3
  15. package/dist/{chunk-5p3ttw6y.js.map → chunk-9a9gn4pb.js.map} +1 -1
  16. package/dist/chunk-a39rm9nv.js +4 -0
  17. package/dist/{chunk-gr3eswf1.js.map → chunk-a39rm9nv.js.map} +5 -5
  18. package/dist/chunk-c8mwf9cn.js +4 -0
  19. package/dist/{chunk-k3thje6a.js.map → chunk-c8mwf9cn.js.map} +1 -1
  20. package/dist/{chunk-ds2m83jp.js → chunk-dhhmywmb.js} +4 -4
  21. package/dist/{chunk-ds2m83jp.js.map → chunk-dhhmywmb.js.map} +1 -1
  22. package/dist/{chunk-eenx3cv6.js → chunk-dsa641rq.js} +3 -3
  23. package/dist/{chunk-eenx3cv6.js.map → chunk-dsa641rq.js.map} +2 -2
  24. package/dist/{chunk-0arpsm5f.js → chunk-grj9nvte.js} +3 -3
  25. package/dist/{chunk-0arpsm5f.js.map → chunk-grj9nvte.js.map} +1 -1
  26. package/dist/{chunk-hg71hp4m.js → chunk-napm4102.js} +3 -3
  27. package/dist/{chunk-hg71hp4m.js.map → chunk-napm4102.js.map} +1 -1
  28. package/dist/{chunk-k3thje6a.js → chunk-nb08g045.js} +3 -3
  29. package/dist/{chunk-nhva847d.js.map → chunk-nb08g045.js.map} +1 -1
  30. package/dist/chunk-npe2r2ge.js +4 -0
  31. package/dist/{chunk-xx7cwpzq.js.map → chunk-npe2r2ge.js.map} +1 -1
  32. package/dist/chunk-p9mwkgye.js +4 -0
  33. package/dist/{chunk-09e51wma.js.map → chunk-p9mwkgye.js.map} +14 -12
  34. package/dist/{chunk-wfbg89d3.js → chunk-qjp8j8e5.js} +3 -3
  35. package/dist/{chunk-wfbg89d3.js.map → chunk-qjp8j8e5.js.map} +1 -1
  36. package/dist/{chunk-xn0fnag5.js → chunk-r1fk1sx9.js} +3 -3
  37. package/dist/{chunk-xn0fnag5.js.map → chunk-r1fk1sx9.js.map} +1 -1
  38. package/dist/{chunk-1amf58aq.js → chunk-ta7bqmy3.js} +3 -3
  39. package/dist/{chunk-1amf58aq.js.map → chunk-ta7bqmy3.js.map} +1 -1
  40. package/dist/{chunk-3t17wpjg.js → chunk-tgvgr630.js} +3 -3
  41. package/dist/{chunk-3t17wpjg.js.map → chunk-tgvgr630.js.map} +2 -2
  42. package/dist/chunk-v8x9ptxs.js +4 -0
  43. package/dist/chunk-v8x9ptxs.js.map +10 -0
  44. package/dist/{chunk-dptbnkzm.js → chunk-wm89desc.js} +20 -20
  45. package/dist/{chunk-dptbnkzm.js.map → chunk-wm89desc.js.map} +12 -10
  46. package/dist/{chunk-5c7b7z2d.js → chunk-wtyhjt5e.js} +3 -3
  47. package/dist/{chunk-5c7b7z2d.js.map → chunk-wtyhjt5e.js.map} +1 -1
  48. package/dist/{chunk-tm47brht.js → chunk-xskdbz15.js} +3 -3
  49. package/dist/{chunk-tm47brht.js.map → chunk-xskdbz15.js.map} +2 -2
  50. package/dist/{chunk-8m2sn76p.js → chunk-ytjqb1sd.js} +3 -3
  51. package/dist/{chunk-8m2sn76p.js.map → chunk-ytjqb1sd.js.map} +1 -1
  52. package/dist/{chunk-3h1f3hyp.js → chunk-zbesf7sy.js} +3 -3
  53. package/dist/{chunk-3h1f3hyp.js.map → chunk-zbesf7sy.js.map} +1 -1
  54. package/dist/keepkey/index.cjs +2 -2
  55. package/dist/keepkey/index.cjs.map +3 -3
  56. package/dist/keepkey/index.js +2 -2
  57. package/dist/keepkey/index.js.map +3 -3
  58. package/dist/ledger/index.cjs +30 -30
  59. package/dist/ledger/index.cjs.map +35 -27
  60. package/dist/ledger/index.js +2 -2
  61. package/dist/ledger/index.js.map +11 -8
  62. package/dist/trezor/index.cjs +2 -2
  63. package/dist/trezor/index.cjs.map +7 -5
  64. package/dist/trezor/index.js +2 -2
  65. package/dist/trezor/index.js.map +3 -3
  66. package/dist/types/helpers/cardano.d.ts +35 -0
  67. package/dist/types/helpers/cardano.d.ts.map +1 -0
  68. package/dist/types/keepkey/index.d.ts +1 -0
  69. package/dist/types/keepkey/index.d.ts.map +1 -1
  70. package/dist/types/ledger/clients/cardano.d.ts +24 -0
  71. package/dist/types/ledger/clients/cardano.d.ts.map +1 -0
  72. package/dist/types/ledger/clients/evm.d.ts +1 -0
  73. package/dist/types/ledger/clients/evm.d.ts.map +1 -1
  74. package/dist/types/ledger/clients/stellar.d.ts +13 -0
  75. package/dist/types/ledger/clients/stellar.d.ts.map +1 -0
  76. package/dist/types/ledger/clients/ton.d.ts +13 -0
  77. package/dist/types/ledger/clients/ton.d.ts.map +1 -0
  78. package/dist/types/ledger/clients/zcash.d.ts.map +1 -1
  79. package/dist/types/ledger/helpers/getLedgerAddress.d.ts.map +1 -1
  80. package/dist/types/ledger/helpers/getLedgerClient.d.ts +8 -1
  81. package/dist/types/ledger/helpers/getLedgerClient.d.ts.map +1 -1
  82. package/dist/types/ledger/index.d.ts +3 -2
  83. package/dist/types/ledger/index.d.ts.map +1 -1
  84. package/dist/types/ledger/types.d.ts +2 -2
  85. package/dist/types/ledger/types.d.ts.map +1 -1
  86. package/dist/types/trezor/cardanoSigner.d.ts.map +1 -1
  87. package/dist/types/trezor/hypercoreSigner.d.ts +22 -0
  88. package/dist/types/trezor/hypercoreSigner.d.ts.map +1 -0
  89. package/dist/types/trezor/index.d.ts +3 -2
  90. package/dist/types/trezor/index.d.ts.map +1 -1
  91. package/dist/types/trezor/stellarSigner.d.ts +1 -1
  92. package/package.json +25 -13
  93. package/src/helpers/cardano.ts +112 -0
  94. package/src/keepkey/index.ts +14 -14
  95. package/src/ledger/clients/cardano.ts +204 -0
  96. package/src/ledger/clients/evm.ts +4 -0
  97. package/src/ledger/clients/stellar.ts +83 -0
  98. package/src/ledger/clients/ton.ts +282 -0
  99. package/src/ledger/clients/zcash.ts +16 -6
  100. package/src/ledger/helpers/getLedgerAddress.ts +16 -0
  101. package/src/ledger/helpers/getLedgerClient.ts +13 -0
  102. package/src/ledger/index.ts +102 -30
  103. package/src/ledger/types.ts +2 -0
  104. package/src/trezor/cardanoSigner.ts +24 -80
  105. package/src/trezor/hypercoreSigner.ts +96 -0
  106. package/src/trezor/index.ts +153 -75
  107. package/dist/chunk-09e51wma.js +0 -4
  108. package/dist/chunk-5p3ttw6y.js +0 -4
  109. package/dist/chunk-gr3eswf1.js +0 -4
  110. package/dist/chunk-qjq7gvyx.js +0 -4
  111. package/dist/chunk-qjq7gvyx.js.map +0 -10
  112. package/dist/chunk-xx7cwpzq.js +0 -4
@@ -409,14 +409,25 @@ async function decodeOutputAddress(script: Uint8Array): Promise<string | undefin
409
409
  return undefined;
410
410
  }
411
411
 
412
+ // The signed PCZT takes the v5 header Trezor signed, so the extracted transaction matches the signatures
412
413
  async function extractSignaturesFromSignedTx(signedTxHex: string, pczt: PCZT): Promise<PCZT> {
413
- const { ZcashTransaction: ZcashTx, Script } = await import("@swapkit/utxo-signer");
414
+ const { ZcashTransaction: ZcashTx, Script, createPCZT } = await import("@swapkit/utxo-signer");
414
415
  const signedTx = ZcashTx.fromHex(signedTxHex, { allowUnknownOutputs: true });
415
- const signedPczt = pczt.clone();
416
+ const signedPczt = createPCZT({
417
+ coinType: pczt.getGlobal().coinType,
418
+ consensusBranchId: signedTx.consensusBranchId,
419
+ expiryHeight: signedTx.expiryHeight,
420
+ lockTime: signedTx.lockTime,
421
+ version: signedTx.version,
422
+ versionGroupId: signedTx.versionGroupId,
423
+ });
424
+ for (let i = 0; i < pczt.inputsLength; i++) signedPczt.addInput(pczt.getInput(i));
425
+ for (let i = 0; i < pczt.outputsLength; i++) signedPczt.addOutput(pczt.getOutput(i));
416
426
 
417
427
  for (let i = 0; i < signedTx.inputsLength; i++) {
418
428
  const signedInput = signedTx.getInput(i);
419
- const script = signedInput.script;
429
+ // utxo-signer 3.2 parses the signature script into scriptSig; 3.1 put it in script.
430
+ const script = signedInput.scriptSig ?? signedInput.script;
420
431
  if (script && script.length > 0) {
421
432
  const scriptParts = Script.decode(script);
422
433
  if (scriptParts.length >= 2) {
@@ -427,6 +438,33 @@ async function extractSignaturesFromSignedTx(signedTxHex: string, pczt: PCZT): P
427
438
  return signedPczt;
428
439
  }
429
440
 
441
+ // A transaction parsed from raw bytes carries no input amounts, and v5 signing commits to them
442
+ async function resolveZcashInputAmounts(tx: ZcashTransaction): Promise<UTXOType[]> {
443
+ const { hex: hexEncode } = await import("@scure/base");
444
+ const zcashApi = getUtxoApi(Chain.Zcash);
445
+ const previousTransactions = new Map<string, ReturnType<typeof zcashApi.getTransactionDetails>>();
446
+
447
+ return Promise.all(
448
+ Array.from({ length: tx.inputsLength }, async (_, inputIndex) => {
449
+ const input = tx.getInput(inputIndex);
450
+ const hash = hexEncode.encode(input.txid);
451
+ if (input.value > 0n) return { hash, index: input.index, value: Number(input.value) };
452
+
453
+ const previous = previousTransactions.get(hash) ?? zcashApi.getTransactionDetails(hash);
454
+ previousTransactions.set(hash, previous);
455
+ const output = (await previous).outputs.find(({ index }) => index === input.index);
456
+ if (!output || !(output.value > 0)) {
457
+ throw new SwapKitError({
458
+ errorKey: "wallet_missing_params",
459
+ info: { chain: Chain.Zcash, inputIndex, reason: "Unable to resolve the Zcash input amount", txid: hash },
460
+ });
461
+ }
462
+
463
+ return { hash, index: input.index, value: output.value };
464
+ }),
465
+ );
466
+ }
467
+
430
468
  function buildZcashTxInputsForTrezor(
431
469
  tx: ZcashTransaction,
432
470
  utxoInputs: UTXOType[],
@@ -486,6 +524,35 @@ async function buildZcashTxOutputsForTrezor({
486
524
  return outputs;
487
525
  }
488
526
 
527
+ type ZcashTrezorSignRequest = {
528
+ branchId: number;
529
+ expiry: number;
530
+ inputs: { amount: string; prev_hash: string; prev_index: number }[];
531
+ locktime: number;
532
+ outputs: { address?: string; amount: string; script_type: string }[];
533
+ };
534
+
535
+ type ZcashTrezorHeader = { version: number; versionGroupId: number };
536
+
537
+ function describeZcashSignRequest({ inputs, outputs, ...header }: ZcashTrezorSignRequest & ZcashTrezorHeader) {
538
+ const sum = (amounts: { amount: string }[]) => amounts.reduce((total, { amount }) => total + BigInt(amount), 0n);
539
+ const inputTotal = sum(inputs);
540
+ const outputTotal = sum(outputs);
541
+
542
+ return {
543
+ ...header,
544
+ fee: (inputTotal - outputTotal).toString(),
545
+ inputAmounts: inputs.map(({ amount }) => amount),
546
+ inputs: inputs.map(({ prev_hash, prev_index }) => `${prev_hash}:${prev_index}`),
547
+ inputTotal: inputTotal.toString(),
548
+ outputs: outputs.map(({ address, amount, script_type }) => ({
549
+ amount,
550
+ kind: script_type === "PAYTOOPRETURN" ? "op_return" : address ? "external" : "change",
551
+ })),
552
+ outputTotal: outputTotal.toString(),
553
+ };
554
+ }
555
+
489
556
  async function buildUtxoOutputsForTrezor(
490
557
  tx: Transaction,
491
558
  network: BTCNetwork,
@@ -610,6 +677,17 @@ async function getTrezorWallet<T extends Chain>({
610
677
  return { ...toolbox, address };
611
678
  }
612
679
 
680
+ case Chain.Hype: {
681
+ const { getHyperCoreToolbox } = await import("@swapkit/toolboxes/hypercore");
682
+ const { getHyperCoreSigner } = await import("./hypercoreSigner");
683
+
684
+ const signer = getHyperCoreSigner({ address: providedAddress, derivationPath });
685
+ const address = await signer.getAddress();
686
+ const toolbox = getHyperCoreToolbox({ signer });
687
+
688
+ return { ...toolbox, address };
689
+ }
690
+
613
691
  case Chain.Ripple: {
614
692
  const { getRippleToolbox } = await import("@swapkit/toolboxes/ripple");
615
693
  const { getRippleSigner } = await import("./rippleSigner");
@@ -657,11 +735,12 @@ async function getTrezorWallet<T extends Chain>({
657
735
  case Chain.Zcash: {
658
736
  const { getUtxoToolbox } = await import("@swapkit/toolboxes/utxo");
659
737
 
738
+ const coin = chain.toLowerCase();
660
739
  const derivationPathStr = derivationPathToString(derivationPath);
661
740
 
662
741
  const getAddress = async () => {
663
742
  const TrezorConnect = (await import("@trezor/connect-web")).default;
664
- const { success, payload } = await TrezorConnect.getAddress({ coin: "zcash", path: derivationPathStr });
743
+ const { success, payload } = await TrezorConnect.getAddress({ coin, path: derivationPathStr });
665
744
 
666
745
  if (!success) {
667
746
  throw new SwapKitError({
@@ -675,37 +754,48 @@ async function getTrezorWallet<T extends Chain>({
675
754
 
676
755
  const address = providedAddress ?? (await getAddress());
677
756
 
678
- const signPCZTWithSerializedTx = async (pczt: PCZT) => {
757
+ // Always v5: v4 signing makes Connect fetch previous transactions, and it cannot parse v6 ones
758
+ const signWithTrezor = async (request: ZcashTrezorSignRequest, signingPath: "pczt" | "transaction") => {
679
759
  const TrezorConnect = (await import("@trezor/connect-web")).default;
760
+ const { ZcashVersion, ZcashVersionGroupId } = await import("@swapkit/utxo-signer");
761
+ const signRequest = { ...request, version: ZcashVersion.NU5, versionGroupId: ZcashVersionGroupId.NU5 };
762
+ const result = await TrezorConnect.signTransaction({ ...signRequest, coin, overwintered: true } as Parameters<
763
+ typeof TrezorConnect.signTransaction
764
+ >[0]);
765
+
766
+ if (!result.success) {
767
+ throw new SwapKitError({
768
+ errorKey: "wallet_trezor_failed_to_sign_transaction",
769
+ info: {
770
+ ...result.payload,
771
+ chain,
772
+ derivationPath,
773
+ request: describeZcashSignRequest(signRequest),
774
+ signingPath,
775
+ },
776
+ });
777
+ }
778
+
779
+ return result.payload.serializedTx;
780
+ };
781
+
782
+ const signPCZTWithSerializedTx = async (pczt: PCZT) => {
680
783
  const { hex: hexEncode } = await import("@scure/base");
681
784
  const address_n = hardenDerivationPath(derivationPath);
682
785
  const global = pczt.getGlobal();
683
786
 
684
787
  const inputs = buildPCZTInputsForTrezor(pczt, address_n, hexEncode);
685
788
  const outputs = await buildPCZTOutputsForTrezor(pczt, address_n, address, chain);
686
- const result = await TrezorConnect.signTransaction({
789
+ const request = {
687
790
  branchId: global.consensusBranchId,
688
- coin: "zcash",
689
791
  expiry: global.expiryHeight,
690
792
  inputs,
691
793
  locktime: global.lockTime,
692
- outputs: outputs as any,
693
- overwintered: true,
694
- version: global.txVersion,
695
- versionGroupId: global.versionGroupId,
696
- });
697
-
698
- if (!result.success) {
699
- throw new SwapKitError({
700
- errorKey: "wallet_trezor_failed_to_sign_transaction",
701
- info: { chain, error: (result.payload as { error: string; code?: string }).error },
702
- });
703
- }
704
-
705
- return {
706
- serializedTx: result.payload.serializedTx,
707
- signedPczt: await extractSignaturesFromSignedTx(result.payload.serializedTx, pczt),
794
+ outputs,
708
795
  };
796
+ const serializedTx = await signWithTrezor(request, "pczt");
797
+
798
+ return { serializedTx, signedPczt: await extractSignaturesFromSignedTx(serializedTx, pczt) };
709
799
  };
710
800
 
711
801
  const parseSignedZcashTransaction = async (signedTxHex: string) => {
@@ -714,12 +804,11 @@ async function getTrezorWallet<T extends Chain>({
714
804
  };
715
805
 
716
806
  const signZcashTransactionWithSerializedTx = async (tx: ZcashTransaction) => {
717
- const TrezorConnect = (await import("@trezor/connect-web")).default;
718
807
  const { hex: hexEncode } = await import("@scure/base");
719
- const { NETWORKS, ZcashVersionGroupId } = await import("@swapkit/utxo-signer");
808
+ const { NETWORKS } = await import("@swapkit/utxo-signer");
720
809
  const address_n = hardenDerivationPath(derivationPath);
721
810
 
722
- const inputs = buildZcashTxInputsForTrezor(tx, [], address_n, hexEncode);
811
+ const inputs = buildZcashTxInputsForTrezor(tx, await resolveZcashInputAmounts(tx), address_n, hexEncode);
723
812
  const outputs = await buildZcashTxOutputsForTrezor({
724
813
  addressN: address_n,
725
814
  chain,
@@ -728,29 +817,16 @@ async function getTrezorWallet<T extends Chain>({
728
817
  tx,
729
818
  });
730
819
 
731
- const result = await TrezorConnect.signTransaction({
820
+ const request = {
732
821
  branchId: tx.consensusBranchId,
733
- coin: "zcash",
734
- expiry: 0,
822
+ expiry: tx.expiryHeight,
735
823
  inputs,
736
- locktime: 0,
737
- outputs: outputs as any,
738
- overwintered: true,
739
- version: 4,
740
- versionGroupId: ZcashVersionGroupId.SAPLING,
741
- });
742
-
743
- if (result.success) {
744
- return {
745
- serializedTx: result.payload.serializedTx,
746
- signedTx: await parseSignedZcashTransaction(result.payload.serializedTx),
747
- };
748
- }
824
+ locktime: tx.lockTime,
825
+ outputs,
826
+ };
827
+ const serializedTx = await signWithTrezor(request, "transaction");
749
828
 
750
- throw new SwapKitError({
751
- errorKey: "wallet_trezor_failed_to_sign_transaction",
752
- info: { chain, error: (result.payload as { error: string; code?: string }).error },
753
- });
829
+ return { serializedTx, signedTx: await parseSignedZcashTransaction(serializedTx) };
754
830
  };
755
831
 
756
832
  const signer = {
@@ -1427,7 +1503,7 @@ export async function getTrezorExtendedPublicKey(
1427
1503
  const { TrezorConnect } = await initTrezorConnect();
1428
1504
  const utxoChain = chain as UTXOChain;
1429
1505
  const resolvedDerivationPath = derivationPath ?? (NetworkDerivationPath[chain] as DerivationPathArray);
1430
- const coin = chain === Chain.Zcash ? "zcash" : chain.toLowerCase();
1506
+ const coin = chain.toLowerCase();
1431
1507
 
1432
1508
  const resolvedAccountPath = getUTXOAccountPath({
1433
1509
  accountIndex,
@@ -1531,36 +1607,37 @@ export const trezorWallet = createWallet({
1531
1607
 
1532
1608
  return true;
1533
1609
  },
1534
- directSigningSupport: {
1535
- [Chain.Arbitrum]: true,
1536
- [Chain.Arc]: true,
1537
- [Chain.Aurora]: true,
1538
- [Chain.Avalanche]: true,
1539
- [Chain.Base]: true,
1540
- [Chain.Berachain]: true,
1541
- [Chain.BinanceSmartChain]: true,
1542
- [Chain.Bitcoin]: true,
1543
- [Chain.BitcoinCash]: true,
1544
- [Chain.Cardano]: true,
1545
- [Chain.Dash]: true,
1546
- [Chain.Ethereum]: true,
1547
- [Chain.Gnosis]: true,
1548
- [Chain.Dogecoin]: true,
1549
- [Chain.Hyperevm]: true,
1550
- [Chain.Litecoin]: true,
1551
- [Chain.Monad]: true,
1552
- [Chain.Optimism]: true,
1553
- [Chain.Polygon]: true,
1554
- [Chain.Ripple]: true,
1555
- [Chain.Robinhood]: true,
1556
- [Chain.Solana]: true,
1557
- [Chain.Stellar]: true,
1558
- [Chain.Tron]: true,
1559
- [Chain.XLayer]: true,
1560
- [Chain.Zcash]: true,
1561
- },
1562
1610
  getExtendedPublicKey: getTrezorExtendedPublicKey,
1563
1611
  name: "connectTrezor",
1612
+ signingSupport: {
1613
+ [Chain.Arbitrum]: { direct: true, typedData: true },
1614
+ [Chain.Arc]: { direct: true, typedData: true },
1615
+ [Chain.Aurora]: { direct: true, typedData: true },
1616
+ [Chain.Avalanche]: { direct: true, typedData: true },
1617
+ [Chain.Base]: { direct: true, typedData: true },
1618
+ [Chain.Berachain]: { direct: true, typedData: true },
1619
+ [Chain.BinanceSmartChain]: { direct: true, typedData: true },
1620
+ [Chain.Bitcoin]: { direct: true },
1621
+ [Chain.BitcoinCash]: { direct: true },
1622
+ [Chain.Cardano]: { direct: true },
1623
+ [Chain.Dash]: { direct: true },
1624
+ [Chain.Ethereum]: { direct: true, typedData: true },
1625
+ [Chain.Gnosis]: { direct: true, typedData: true },
1626
+ [Chain.Dogecoin]: { direct: true },
1627
+ [Chain.Hype]: { direct: true },
1628
+ [Chain.Hyperevm]: { direct: true, typedData: true },
1629
+ [Chain.Litecoin]: { direct: true },
1630
+ [Chain.Monad]: { direct: true, typedData: true },
1631
+ [Chain.Optimism]: { direct: true, typedData: true },
1632
+ [Chain.Polygon]: { direct: true, typedData: true },
1633
+ [Chain.Ripple]: { direct: true },
1634
+ [Chain.Robinhood]: { direct: true, typedData: true },
1635
+ [Chain.Solana]: { direct: true },
1636
+ [Chain.Stellar]: { direct: true },
1637
+ [Chain.Tron]: { direct: true },
1638
+ [Chain.XLayer]: { direct: true, typedData: true },
1639
+ [Chain.Zcash]: { direct: true },
1640
+ },
1564
1641
  supportedChains: [
1565
1642
  Chain.Arbitrum,
1566
1643
  Chain.Arc,
@@ -1576,6 +1653,7 @@ export const trezorWallet = createWallet({
1576
1653
  Chain.Dogecoin,
1577
1654
  Chain.Ethereum,
1578
1655
  Chain.Gnosis,
1656
+ Chain.Hype,
1579
1657
  Chain.Hyperevm,
1580
1658
  Chain.Litecoin,
1581
1659
  Chain.Monad,