@swapkit/wallet-hardware 6.1.1 → 6.2.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 (101) hide show
  1. package/dist/chunk-035dayv6.js +4 -0
  2. package/dist/chunk-035dayv6.js.map +10 -0
  3. package/dist/{chunk-yrxe491r.js → chunk-2jddegc1.js} +3 -3
  4. package/dist/{chunk-yrxe491r.js.map → chunk-2jddegc1.js.map} +1 -1
  5. package/dist/{chunk-gr3eswf1.js → chunk-42xrtarj.js} +3 -3
  6. package/dist/{chunk-gr3eswf1.js.map → chunk-42xrtarj.js.map} +1 -1
  7. package/dist/{chunk-3t17wpjg.js → chunk-545s1tsc.js} +3 -3
  8. package/dist/{chunk-3t17wpjg.js.map → chunk-545s1tsc.js.map} +1 -1
  9. package/dist/{chunk-1amf58aq.js → chunk-5xg0xc0g.js} +3 -3
  10. package/dist/{chunk-1amf58aq.js.map → chunk-5xg0xc0g.js.map} +1 -1
  11. package/dist/{chunk-xn0fnag5.js → chunk-71kfnwdp.js} +3 -3
  12. package/dist/{chunk-xn0fnag5.js.map → chunk-71kfnwdp.js.map} +1 -1
  13. package/dist/{chunk-xmvg4cds.js → chunk-7kwtpk70.js} +3 -3
  14. package/dist/{chunk-xmvg4cds.js.map → chunk-7kwtpk70.js.map} +1 -1
  15. package/dist/{chunk-0arpsm5f.js → chunk-7rbvcts9.js} +3 -3
  16. package/dist/{chunk-0arpsm5f.js.map → chunk-7rbvcts9.js.map} +1 -1
  17. package/dist/{chunk-k3thje6a.js → chunk-a47dwwv6.js} +3 -3
  18. package/dist/{chunk-k3thje6a.js.map → chunk-a47dwwv6.js.map} +1 -1
  19. package/dist/{chunk-5c7b7z2d.js → chunk-a6vcbcyd.js} +3 -3
  20. package/dist/{chunk-5c7b7z2d.js.map → chunk-a6vcbcyd.js.map} +1 -1
  21. package/dist/{chunk-wfbg89d3.js → chunk-b093ajcq.js} +3 -3
  22. package/dist/{chunk-wfbg89d3.js.map → chunk-b093ajcq.js.map} +1 -1
  23. package/dist/{chunk-ds2m83jp.js → chunk-b7htg03t.js} +3 -3
  24. package/dist/{chunk-ds2m83jp.js.map → chunk-b7htg03t.js.map} +1 -1
  25. package/dist/chunk-g6rrzxcx.js +5 -0
  26. package/dist/chunk-g6rrzxcx.js.map +10 -0
  27. package/dist/{chunk-jewm2ag3.js → chunk-j3n6fbqh.js} +4 -4
  28. package/dist/{chunk-jewm2ag3.js.map → chunk-j3n6fbqh.js.map} +1 -1
  29. package/dist/{chunk-nhva847d.js → chunk-kaw35ae2.js} +3 -3
  30. package/dist/{chunk-nhva847d.js.map → chunk-kaw35ae2.js.map} +1 -1
  31. package/dist/{chunk-dptbnkzm.js → chunk-mzan0m09.js} +4 -4
  32. package/dist/{chunk-dptbnkzm.js.map → chunk-mzan0m09.js.map} +1 -1
  33. package/dist/{chunk-jzrytcrf.js → chunk-rydhx4se.js} +3 -3
  34. package/dist/{chunk-jzrytcrf.js.map → chunk-rydhx4se.js.map} +1 -1
  35. package/dist/{chunk-09e51wma.js → chunk-s2akss77.js} +3 -3
  36. package/dist/{chunk-09e51wma.js.map → chunk-s2akss77.js.map} +1 -1
  37. package/dist/{chunk-tm47brht.js → chunk-s5a5v0m1.js} +3 -3
  38. package/dist/{chunk-tm47brht.js.map → chunk-s5a5v0m1.js.map} +1 -1
  39. package/dist/{chunk-8m2sn76p.js → chunk-sbebfr50.js} +3 -3
  40. package/dist/{chunk-8m2sn76p.js.map → chunk-sbebfr50.js.map} +1 -1
  41. package/dist/{chunk-xx7cwpzq.js → chunk-sp3dq5hr.js} +2 -2
  42. package/dist/{chunk-hg71hp4m.js → chunk-tecse0bj.js} +3 -3
  43. package/dist/{chunk-hg71hp4m.js.map → chunk-tecse0bj.js.map} +1 -1
  44. package/dist/chunk-tm5gk51g.js +4 -0
  45. package/dist/{chunk-eenx3cv6.js → chunk-x28a37pz.js} +3 -3
  46. package/dist/{chunk-eenx3cv6.js.map → chunk-x28a37pz.js.map} +1 -1
  47. package/dist/{chunk-3h1f3hyp.js → chunk-ys51wj1c.js} +3 -3
  48. package/dist/{chunk-3h1f3hyp.js.map → chunk-ys51wj1c.js.map} +1 -1
  49. package/dist/keepkey/index.cjs +2 -2
  50. package/dist/keepkey/index.cjs.map +3 -3
  51. package/dist/keepkey/index.js +2 -2
  52. package/dist/keepkey/index.js.map +3 -3
  53. package/dist/ledger/index.cjs +30 -30
  54. package/dist/ledger/index.cjs.map +11 -7
  55. package/dist/ledger/index.js +2 -2
  56. package/dist/ledger/index.js.map +10 -7
  57. package/dist/trezor/index.cjs +2 -2
  58. package/dist/trezor/index.cjs.map +6 -5
  59. package/dist/trezor/index.js +2 -2
  60. package/dist/trezor/index.js.map +3 -3
  61. package/dist/types/helpers/cardano.d.ts +35 -0
  62. package/dist/types/helpers/cardano.d.ts.map +1 -0
  63. package/dist/types/keepkey/index.d.ts +1 -0
  64. package/dist/types/keepkey/index.d.ts.map +1 -1
  65. package/dist/types/ledger/clients/cardano.d.ts +24 -0
  66. package/dist/types/ledger/clients/cardano.d.ts.map +1 -0
  67. package/dist/types/ledger/clients/evm.d.ts +1 -0
  68. package/dist/types/ledger/clients/evm.d.ts.map +1 -1
  69. package/dist/types/ledger/clients/stellar.d.ts +13 -0
  70. package/dist/types/ledger/clients/stellar.d.ts.map +1 -0
  71. package/dist/types/ledger/clients/ton.d.ts +13 -0
  72. package/dist/types/ledger/clients/ton.d.ts.map +1 -0
  73. package/dist/types/ledger/helpers/getLedgerAddress.d.ts.map +1 -1
  74. package/dist/types/ledger/helpers/getLedgerClient.d.ts +8 -1
  75. package/dist/types/ledger/helpers/getLedgerClient.d.ts.map +1 -1
  76. package/dist/types/ledger/index.d.ts +3 -2
  77. package/dist/types/ledger/index.d.ts.map +1 -1
  78. package/dist/types/ledger/types.d.ts +2 -2
  79. package/dist/types/ledger/types.d.ts.map +1 -1
  80. package/dist/types/trezor/cardanoSigner.d.ts.map +1 -1
  81. package/dist/types/trezor/index.d.ts +1 -0
  82. package/dist/types/trezor/index.d.ts.map +1 -1
  83. package/dist/types/trezor/stellarSigner.d.ts +1 -1
  84. package/package.json +16 -4
  85. package/src/helpers/cardano.ts +112 -0
  86. package/src/keepkey/index.ts +14 -14
  87. package/src/ledger/clients/cardano.ts +204 -0
  88. package/src/ledger/clients/evm.ts +4 -0
  89. package/src/ledger/clients/stellar.ts +83 -0
  90. package/src/ledger/clients/ton.ts +282 -0
  91. package/src/ledger/helpers/getLedgerAddress.ts +16 -0
  92. package/src/ledger/helpers/getLedgerClient.ts +13 -0
  93. package/src/ledger/index.ts +100 -28
  94. package/src/ledger/types.ts +2 -0
  95. package/src/trezor/cardanoSigner.ts +24 -80
  96. package/src/trezor/index.ts +86 -64
  97. package/dist/chunk-5p3ttw6y.js +0 -4
  98. package/dist/chunk-qjq7gvyx.js +0 -4
  99. package/dist/chunk-qjq7gvyx.js.map +0 -10
  100. /package/dist/{chunk-xx7cwpzq.js.map → chunk-sp3dq5hr.js.map} +0 -0
  101. /package/dist/{chunk-5p3ttw6y.js.map → chunk-tm5gk51g.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import{$d as X}from"./chunk-nhva847d.js";import{ed25519 as f}from"@noble/curves/ed25519.js";import{hex as Y}from"@scure/base";import{PublicKey as W}from"@solana/web3.js";import{Chain as F,derivationPathToString as j,SwapKitError as G}from"@swapkit/helpers";function x(q){return new G({errorKey:"wallet_trezor_method_not_supported",info:{chain:F.Solana,reason:q}})}function O(q){if("version"in q){let{header:B,staticAccountKeys:D}=q.message;return{message:q.message.serialize(),signerKeys:D.slice(0,B.numRequiredSignatures)}}return{message:q.serializeMessage(),signerKeys:q.signatures.map(({publicKey:B})=>B)}}function _(q,B){let{message:D,signerKeys:H}=O(q),J=H.find((L)=>L.toBase58()===B);if(!J)throw x("Trezor account is not a required signer of this transaction");return{message:D,signerKey:J}}function A(q,{message:B,signature:D,signerKey:H}){if(D.length!==64)throw new G({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:F.Solana,error:`Invalid signature length: ${D.length}`}});if(!f.verify(D,B,H.toBytes()))throw new G({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:F.Solana,error:"Signature does not match the Trezor account"}});return q.addSignature(H,Buffer.from(D)),q}function E({address:q,derivationPath:B}){let[D,H]=B;if(D!==44||H!==501||B.length>4)throw new G({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:F.Solana,derivationPath:B}});let J=j(B,{allHardened:!0}),L=q?new W(q):null,M=null;async function Q(N){if(M)return M.toBase58();let I=await(await import("@trezor/connect-web")).default.solanaGetAddress({path:J,showOnTrezor:N});if(!I.success)throw new G({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:F.Solana,derivationPath:B,error:I.payload.error}});let U=new W(I.payload.address);if(L&&!U.equals(L))throw new G({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:F.Solana,derivationPath:B,error:"Trezor account does not match the restored address"}});return M=U,I.payload.address}async function Z(N){let{message:R,signerKey:I}=_(N,await Q(!1)),V=await(await import("@trezor/connect-web")).default.solanaSignTransaction({path:J,serializedTx:Y.encode(R)});if(!V.success)throw new G({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:F.Solana,error:V.payload.error}});let $=Y.decode(V.payload.signature.replace(/^0x/,""));return A(N,{message:R,signature:$,signerKey:I})}return{connect:async()=>({publicKey:new W(await Q(!0))}),disconnect:()=>Promise.resolve(),getAddress:()=>Q(!0),get publicKey(){return M??L},signTransaction:Z}}export{E as getSolanaSigner};
1
+ import{ae as X}from"./chunk-kaw35ae2.js";import{ed25519 as f}from"@noble/curves/ed25519.js";import{hex as Y}from"@scure/base";import{PublicKey as W}from"@solana/web3.js";import{Chain as F,derivationPathToString as j,SwapKitError as G}from"@swapkit/helpers";function x(q){return new G({errorKey:"wallet_trezor_method_not_supported",info:{chain:F.Solana,reason:q}})}function O(q){if("version"in q){let{header:B,staticAccountKeys:D}=q.message;return{message:q.message.serialize(),signerKeys:D.slice(0,B.numRequiredSignatures)}}return{message:q.serializeMessage(),signerKeys:q.signatures.map(({publicKey:B})=>B)}}function _(q,B){let{message:D,signerKeys:H}=O(q),J=H.find((L)=>L.toBase58()===B);if(!J)throw x("Trezor account is not a required signer of this transaction");return{message:D,signerKey:J}}function A(q,{message:B,signature:D,signerKey:H}){if(D.length!==64)throw new G({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:F.Solana,error:`Invalid signature length: ${D.length}`}});if(!f.verify(D,B,H.toBytes()))throw new G({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:F.Solana,error:"Signature does not match the Trezor account"}});return q.addSignature(H,Buffer.from(D)),q}function E({address:q,derivationPath:B}){let[D,H]=B;if(D!==44||H!==501||B.length>4)throw new G({errorKey:"wallet_trezor_derivation_path_not_supported",info:{chain:F.Solana,derivationPath:B}});let J=j(B,{allHardened:!0}),L=q?new W(q):null,M=null;async function Q(N){if(M)return M.toBase58();let I=await(await import("@trezor/connect-web")).default.solanaGetAddress({path:J,showOnTrezor:N});if(!I.success)throw new G({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:F.Solana,derivationPath:B,error:I.payload.error}});let U=new W(I.payload.address);if(L&&!U.equals(L))throw new G({errorKey:"wallet_trezor_failed_to_get_address",info:{chain:F.Solana,derivationPath:B,error:"Trezor account does not match the restored address"}});return M=U,I.payload.address}async function Z(N){let{message:R,signerKey:I}=_(N,await Q(!1)),V=await(await import("@trezor/connect-web")).default.solanaSignTransaction({path:J,serializedTx:Y.encode(R)});if(!V.success)throw new G({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:F.Solana,error:V.payload.error}});let $=Y.decode(V.payload.signature.replace(/^0x/,""));return A(N,{message:R,signature:$,signerKey:I})}return{connect:async()=>({publicKey:new W(await Q(!0))}),disconnect:()=>Promise.resolve(),getAddress:()=>Q(!0),get publicKey(){return M??L},signTransaction:Z}}export{E as getSolanaSigner};
2
2
 
3
- //# debugId=043ADF8859998D2364756E2164756E21
4
- //# sourceMappingURL=chunk-xn0fnag5.js.map
3
+ //# debugId=CA08A6F60D2BA9C764756E2164756E21
4
+ //# sourceMappingURL=chunk-71kfnwdp.js.map
@@ -5,6 +5,6 @@
5
5
  "import { ed25519 } from \"@noble/curves/ed25519.js\";\nimport { hex } from \"@scure/base\";\nimport { PublicKey, type Transaction, type VersionedTransaction } from \"@solana/web3.js\";\nimport { Chain, type DerivationPathArray, derivationPathToString, SwapKitError } from \"@swapkit/helpers\";\n\ntype SolanaTransaction = Transaction | VersionedTransaction;\n\nfunction notSupported(reason: string) {\n return new SwapKitError({ errorKey: \"wallet_trezor_method_not_supported\", info: { chain: Chain.Solana, reason } });\n}\n\nfunction getSigners(transaction: SolanaTransaction) {\n if (\"version\" in transaction) {\n const { header, staticAccountKeys } = transaction.message;\n return {\n message: transaction.message.serialize(),\n signerKeys: staticAccountKeys.slice(0, header.numRequiredSignatures),\n };\n }\n\n return {\n message: transaction.serializeMessage(),\n signerKeys: transaction.signatures.map(({ publicKey }) => publicKey),\n };\n}\n\nfunction getSolanaSigningPayload(transaction: SolanaTransaction, address: string) {\n const { message, signerKeys } = getSigners(transaction);\n const signerKey = signerKeys.find((key) => key.toBase58() === address);\n\n if (!signerKey) throw notSupported(\"Trezor account is not a required signer of this transaction\");\n\n return { message, signerKey };\n}\n\nfunction addSolanaSignature<T extends SolanaTransaction>(\n transaction: T,\n { message, signature, signerKey }: { message: Uint8Array; signature: Uint8Array; signerKey: PublicKey },\n) {\n if (signature.length !== 64) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: Chain.Solana, error: `Invalid signature length: ${signature.length}` },\n });\n }\n\n if (!ed25519.verify(signature, message, signerKey.toBytes())) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: Chain.Solana, error: \"Signature does not match the Trezor account\" },\n });\n }\n\n transaction.addSignature(signerKey, Buffer.from(signature));\n return transaction;\n}\n\nexport function getSolanaSigner({\n address,\n derivationPath,\n}: {\n address?: string;\n derivationPath: DerivationPathArray;\n}) {\n // Trezor firmware only accepts m/44'/501' plus up to two more levels.\n const [purpose, coinType] = derivationPath;\n if (purpose !== 44 || coinType !== 501 || derivationPath.length > 4) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_derivation_path_not_supported\",\n info: { chain: Chain.Solana, derivationPath },\n });\n }\n\n const path = derivationPathToString(derivationPath, { allHardened: true });\n const knownKey = address ? new PublicKey(address) : null;\n let publicKey: PublicKey | null = null;\n\n async function loadAddress(showOnTrezor: boolean) {\n if (publicKey) return publicKey.toBase58();\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const result = await TrezorConnect.solanaGetAddress({ path, showOnTrezor });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { chain: Chain.Solana, derivationPath, error: result.payload.error },\n });\n }\n\n const deviceKey = new PublicKey(result.payload.address);\n if (knownKey && !deviceKey.equals(knownKey)) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { chain: Chain.Solana, derivationPath, error: \"Trezor account does not match the restored address\" },\n });\n }\n\n publicKey = deviceKey;\n return result.payload.address;\n }\n\n async function signTransaction<T extends SolanaTransaction>(transaction: T) {\n const { message, signerKey } = getSolanaSigningPayload(transaction, await loadAddress(false));\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.solanaSignTransaction({ path, serializedTx: hex.encode(message) });\n\n if (!result.success) {\n throw new SwapKitError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: Chain.Solana, error: result.payload.error },\n });\n }\n\n const signature = hex.decode(result.payload.signature.replace(/^0x/, \"\"));\n return addSolanaSignature(transaction, { message, signature, signerKey });\n }\n\n return {\n connect: async () => ({ publicKey: new PublicKey(await loadAddress(true)) }),\n disconnect: () => Promise.resolve(),\n getAddress: () => loadAddress(true),\n get publicKey() {\n return publicKey ?? knownKey;\n },\n signTransaction,\n };\n}\n"
6
6
  ],
7
7
  "mappings": "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",
8
- "debugId": "043ADF8859998D2364756E2164756E21",
8
+ "debugId": "CA08A6F60D2BA9C764756E2164756E21",
9
9
  "names": []
10
10
  }