@tcswap/wallet-hardware 4.2.16

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 (123) hide show
  1. package/dist/chunk-1w9rn6fj.js +5 -0
  2. package/dist/chunk-1w9rn6fj.js.map +10 -0
  3. package/dist/chunk-1z3vq8v6.js +4 -0
  4. package/dist/chunk-1z3vq8v6.js.map +10 -0
  5. package/dist/chunk-3jd7804n.js +4 -0
  6. package/dist/chunk-3jd7804n.js.map +10 -0
  7. package/dist/chunk-4pybhxzx.js +4 -0
  8. package/dist/chunk-4pybhxzx.js.map +10 -0
  9. package/dist/chunk-9kbkdt6e.js +4 -0
  10. package/dist/chunk-9kbkdt6e.js.map +10 -0
  11. package/dist/chunk-eng8tyvd.js +4 -0
  12. package/dist/chunk-eng8tyvd.js.map +10 -0
  13. package/dist/chunk-fazw0jvt.js +4 -0
  14. package/dist/chunk-fazw0jvt.js.map +9 -0
  15. package/dist/chunk-zzfbcc7e.js +5 -0
  16. package/dist/chunk-zzfbcc7e.js.map +9 -0
  17. package/dist/index.cjs +4 -0
  18. package/dist/index.cjs.map +9 -0
  19. package/dist/index.js +3 -0
  20. package/dist/index.js.map +9 -0
  21. package/dist/keepkey/index.cjs +4 -0
  22. package/dist/keepkey/index.cjs.map +15 -0
  23. package/dist/keepkey/index.js +4 -0
  24. package/dist/keepkey/index.js.map +15 -0
  25. package/dist/ledger/index.cjs +5 -0
  26. package/dist/ledger/index.cjs.map +25 -0
  27. package/dist/ledger/index.js +5 -0
  28. package/dist/ledger/index.js.map +25 -0
  29. package/dist/trezor/index.cjs +4 -0
  30. package/dist/trezor/index.cjs.map +10 -0
  31. package/dist/trezor/index.js +4 -0
  32. package/dist/trezor/index.js.map +10 -0
  33. package/dist/types/index.d.ts +2 -0
  34. package/dist/types/index.d.ts.map +1 -0
  35. package/dist/types/keepkey/chains/cosmos.d.ts +7 -0
  36. package/dist/types/keepkey/chains/cosmos.d.ts.map +1 -0
  37. package/dist/types/keepkey/chains/evm.d.ts +29 -0
  38. package/dist/types/keepkey/chains/evm.d.ts.map +1 -0
  39. package/dist/types/keepkey/chains/mayachain.d.ts +10 -0
  40. package/dist/types/keepkey/chains/mayachain.d.ts.map +1 -0
  41. package/dist/types/keepkey/chains/ripple.d.ts +37 -0
  42. package/dist/types/keepkey/chains/ripple.d.ts.map +1 -0
  43. package/dist/types/keepkey/chains/thorchain.d.ts +10 -0
  44. package/dist/types/keepkey/chains/thorchain.d.ts.map +1 -0
  45. package/dist/types/keepkey/chains/utxo.d.ts +25 -0
  46. package/dist/types/keepkey/chains/utxo.d.ts.map +1 -0
  47. package/dist/types/keepkey/coins.d.ts +15 -0
  48. package/dist/types/keepkey/coins.d.ts.map +1 -0
  49. package/dist/types/keepkey/index.d.ts +15 -0
  50. package/dist/types/keepkey/index.d.ts.map +1 -0
  51. package/dist/types/ledger/clients/cosmos.d.ts +23 -0
  52. package/dist/types/ledger/clients/cosmos.d.ts.map +1 -0
  53. package/dist/types/ledger/clients/evm.d.ts +52 -0
  54. package/dist/types/ledger/clients/evm.d.ts.map +1 -0
  55. package/dist/types/ledger/clients/near.d.ts +7 -0
  56. package/dist/types/ledger/clients/near.d.ts.map +1 -0
  57. package/dist/types/ledger/clients/thorchain/common.d.ts +28 -0
  58. package/dist/types/ledger/clients/thorchain/common.d.ts.map +1 -0
  59. package/dist/types/ledger/clients/thorchain/helpers.d.ts +10 -0
  60. package/dist/types/ledger/clients/thorchain/helpers.d.ts.map +1 -0
  61. package/dist/types/ledger/clients/thorchain/index.d.ts +25 -0
  62. package/dist/types/ledger/clients/thorchain/index.d.ts.map +1 -0
  63. package/dist/types/ledger/clients/thorchain/lib.d.ts +25 -0
  64. package/dist/types/ledger/clients/thorchain/lib.d.ts.map +1 -0
  65. package/dist/types/ledger/clients/thorchain/utils.d.ts +5 -0
  66. package/dist/types/ledger/clients/thorchain/utils.d.ts.map +1 -0
  67. package/dist/types/ledger/clients/tron.d.ts +26 -0
  68. package/dist/types/ledger/clients/tron.d.ts.map +1 -0
  69. package/dist/types/ledger/clients/utxo.d.ts +43 -0
  70. package/dist/types/ledger/clients/utxo.d.ts.map +1 -0
  71. package/dist/types/ledger/clients/xrp.d.ts +11 -0
  72. package/dist/types/ledger/clients/xrp.d.ts.map +1 -0
  73. package/dist/types/ledger/cosmosTypes.d.ts +43 -0
  74. package/dist/types/ledger/cosmosTypes.d.ts.map +1 -0
  75. package/dist/types/ledger/helpers/getLedgerAddress.d.ts +10 -0
  76. package/dist/types/ledger/helpers/getLedgerAddress.d.ts.map +1 -0
  77. package/dist/types/ledger/helpers/getLedgerClient.d.ts +42 -0
  78. package/dist/types/ledger/helpers/getLedgerClient.d.ts.map +1 -0
  79. package/dist/types/ledger/helpers/getLedgerTransport.d.ts +6 -0
  80. package/dist/types/ledger/helpers/getLedgerTransport.d.ts.map +1 -0
  81. package/dist/types/ledger/helpers/index.d.ts +4 -0
  82. package/dist/types/ledger/helpers/index.d.ts.map +1 -0
  83. package/dist/types/ledger/index.d.ts +14 -0
  84. package/dist/types/ledger/index.d.ts.map +1 -0
  85. package/dist/types/ledger/interfaces/CosmosLedgerInterface.d.ts +14 -0
  86. package/dist/types/ledger/interfaces/CosmosLedgerInterface.d.ts.map +1 -0
  87. package/dist/types/ledger/types.d.ts +16 -0
  88. package/dist/types/ledger/types.d.ts.map +1 -0
  89. package/dist/types/trezor/evmSigner.d.ts +32 -0
  90. package/dist/types/trezor/evmSigner.d.ts.map +1 -0
  91. package/dist/types/trezor/index.d.ts +14 -0
  92. package/dist/types/trezor/index.d.ts.map +1 -0
  93. package/package.json +101 -0
  94. package/src/index.ts +1 -0
  95. package/src/keepkey/chains/cosmos.ts +69 -0
  96. package/src/keepkey/chains/evm.ts +117 -0
  97. package/src/keepkey/chains/mayachain.ts +102 -0
  98. package/src/keepkey/chains/ripple.ts +88 -0
  99. package/src/keepkey/chains/thorchain.ts +97 -0
  100. package/src/keepkey/chains/utxo.ts +141 -0
  101. package/src/keepkey/coins.ts +70 -0
  102. package/src/keepkey/index.ts +159 -0
  103. package/src/ledger/clients/cosmos.ts +83 -0
  104. package/src/ledger/clients/evm.ts +145 -0
  105. package/src/ledger/clients/near.ts +67 -0
  106. package/src/ledger/clients/thorchain/common.ts +93 -0
  107. package/src/ledger/clients/thorchain/helpers.ts +124 -0
  108. package/src/ledger/clients/thorchain/index.ts +91 -0
  109. package/src/ledger/clients/thorchain/lib.ts +282 -0
  110. package/src/ledger/clients/thorchain/utils.ts +71 -0
  111. package/src/ledger/clients/tron.ts +84 -0
  112. package/src/ledger/clients/utxo.ts +158 -0
  113. package/src/ledger/clients/xrp.ts +50 -0
  114. package/src/ledger/cosmosTypes.ts +102 -0
  115. package/src/ledger/helpers/getLedgerAddress.ts +73 -0
  116. package/src/ledger/helpers/getLedgerClient.ts +121 -0
  117. package/src/ledger/helpers/getLedgerTransport.ts +106 -0
  118. package/src/ledger/helpers/index.ts +3 -0
  119. package/src/ledger/index.ts +303 -0
  120. package/src/ledger/interfaces/CosmosLedgerInterface.ts +58 -0
  121. package/src/ledger/types.ts +40 -0
  122. package/src/trezor/evmSigner.ts +181 -0
  123. package/src/trezor/index.ts +350 -0
@@ -0,0 +1,5 @@
1
+ import{USwapError as I}from"@tcswap/helpers";var M=2147483648,V;((j)=>{j.BTC="Bitcoin";j.BCH="BitcoinCash";j.DOGE="Dogecoin";j.LTC="Litecoin";j.DASH="Dash";j.XRP="Ripple"})(V||={});function W(B){if(B==="m/")return!0;return/^m(((\/[0-9]+h)+|(\/[0-9]+H)+|(\/[0-9]+')*)((\/[0-9]+)*))$/.test(B)}function Y(B){let q=B;if(!W(q))throw new I("wallet_keepkey_invalid_params",{reason:`Not a bip32 path: '${q}'`});if(/^m\//i.test(q))q=q.slice(2);let z=q.split("/");if(z.length===1&&z[0]==="")return[];let F=Array(z.length);for(let v=0;v<z.length;v++){let J=z[v];if(J){let j=/(\d+)([hH']?)/.exec(J);if(j===null)throw new I("wallet_keepkey_invalid_params",{reason:"Invalid input"});let[,Q="",G=""]=j;if(F[v]=Number.parseInt(Q,10),F[v]>=M)throw new I("wallet_keepkey_invalid_params",{reason:"Invalid child index"});if(G==="h"||G==="H"||G==="'")F[v]+=M;else if(G.length>0)throw new I("wallet_keepkey_invalid_params",{reason:"Invalid modifier"})}}return F}
2
+ export{V as a,Y as b};
3
+
4
+ //# debugId=2D8ED9D8DE78965464756E2164756E21
5
+ //# sourceMappingURL=chunk-1w9rn6fj.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/keepkey/coins.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\n/*\n KeepKey Specific bip32 path conventions\n*/\n\nimport { USwapError } from \"@tcswap/helpers\";\n\nconst HARDENED = 0x80000000;\n\nexport enum ChainToKeepKeyName {\n BTC = \"Bitcoin\",\n BCH = \"BitcoinCash\",\n DOGE = \"Dogecoin\",\n LTC = \"Litecoin\",\n DASH = \"Dash\",\n XRP = \"Ripple\",\n}\n\nexport function addressNListToBIP32(address: number[]) {\n return `m/${address.map((num) => (num >= HARDENED ? `${num - HARDENED}'` : num)).join(\"/\")}`;\n}\n\nexport function bip32Like(path: string) {\n if (path === \"m/\") return true;\n\n return /^m(((\\/[0-9]+h)+|(\\/[0-9]+H)+|(\\/[0-9]+')*)((\\/[0-9]+)*))$/.test(path);\n}\n\nexport function bip32ToAddressNList(initPath: string): number[] {\n let path = initPath;\n\n if (!bip32Like(path)) {\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: `Not a bip32 path: '${path}'` });\n }\n\n if (/^m\\//i.test(path)) {\n path = path.slice(2);\n }\n const segments = path.split(\"/\");\n\n if (segments.length === 1 && segments[0] === \"\") return [];\n\n const ret = new Array(segments.length);\n\n for (let i = 0; i < segments.length; i++) {\n // TODO: Check for better way instead of exec\n const segment = segments[i];\n if (segment) {\n const tmp = /(\\d+)([hH']?)/.exec(segment);\n if (tmp === null) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid input\" });\n\n const [, num = \"\", modifier = \"\"] = tmp;\n\n ret[i] = Number.parseInt(num, 10);\n\n if (ret[i] >= HARDENED) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid child index\" });\n\n if (modifier === \"h\" || modifier === \"H\" || modifier === \"'\") {\n ret[i] += HARDENED;\n } else if (modifier.length > 0) {\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid modifier\" });\n }\n }\n }\n\n return ret;\n}\n"
6
+ ],
7
+ "mappings": "AAQA,qBAAS,wBAET,IAAM,EAAW,WAEL,GAAL,CAAK,IAAL,CACL,MAAM,UACN,MAAM,cACN,OAAO,WACP,MAAM,WACN,OAAO,OACP,MAAM,WANI,QAaL,SAAS,CAAS,CAAC,EAAc,CACtC,GAAI,IAAS,KAAM,MAAO,GAE1B,MAAO,6DAA6D,KAAK,CAAI,EAGxE,SAAS,CAAmB,CAAC,EAA4B,CAC9D,IAAI,EAAO,EAEX,GAAI,CAAC,EAAU,CAAI,EACjB,MAAM,IAAI,EAAW,gCAAiC,CAAE,OAAQ,sBAAsB,IAAQ,CAAC,EAGjG,GAAI,QAAQ,KAAK,CAAI,EACnB,EAAO,EAAK,MAAM,CAAC,EAErB,IAAM,EAAW,EAAK,MAAM,GAAG,EAE/B,GAAI,EAAS,SAAW,GAAK,EAAS,KAAO,GAAI,MAAO,CAAC,EAEzD,IAAM,EAAU,MAAM,EAAS,MAAM,EAErC,QAAS,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CAExC,IAAM,EAAU,EAAS,GACzB,GAAI,EAAS,CACX,IAAM,EAAM,gBAAgB,KAAK,CAAO,EACxC,GAAI,IAAQ,KAAM,MAAM,IAAI,EAAW,gCAAiC,CAAE,OAAQ,eAAgB,CAAC,EAEnG,KAAS,EAAM,GAAI,EAAW,IAAM,EAIpC,GAFA,EAAI,GAAK,OAAO,SAAS,EAAK,EAAE,EAE5B,EAAI,IAAM,EAAU,MAAM,IAAI,EAAW,gCAAiC,CAAE,OAAQ,qBAAsB,CAAC,EAE/G,GAAI,IAAa,KAAO,IAAa,KAAO,IAAa,IACvD,EAAI,IAAM,EACL,QAAI,EAAS,OAAS,EAC3B,MAAM,IAAI,EAAW,gCAAiC,CAAE,OAAQ,kBAAmB,CAAC,GAK1F,OAAO",
8
+ "debugId": "2D8ED9D8DE78965464756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ import{c as J,d as K}from"./chunk-zzfbcc7e.js";import{ChainToChainId as h,derivationPathToString as Z,USwapError as k,USwapNumber as w,WalletOption as E}from"@tcswap/helpers";async function l({chain:O,derivationPath:W,provider:N}){let{AbstractSigner:f,Signature:C}=await import("ethers");class X extends f{address;chain;derivationPath;provider;constructor({chain:j,derivationPath:q,provider:B}){super(B);this.address="",this.chain=j,this.derivationPath=q,this.provider=B}getAddress=async()=>{if(!this.address){let q=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:Z(this.derivationPath),showOnTrezor:!0});if(!q.success)throw new k({errorKey:"wallet_trezor_failed_to_get_address",info:{...q,chain:this.chain,derivationPath:this.derivationPath}});this.address=q.payload.address}return this.address};signMessage=async(j)=>{let B=await(await import("@trezor/connect-web")).default.ethereumSignMessage({message:j,path:Z(this.derivationPath)});if(!B.success)throw new k({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...B,chain:this.chain,derivationPath:this.derivationPath,message:j}});return B.payload.signature};signTypedData(){throw new k("wallet_trezor_method_not_supported",{method:"signTypedData"})}signTransaction=async({to:j,gasLimit:q,value:B,data:_,nonce:H,maxFeePerGas:Q,maxPriorityFeePerGas:R,gasPrice:V})=>{if(!j)throw new k({errorKey:"wallet_missing_params",info:{to:j}});if(!q)throw new k({errorKey:"wallet_missing_params",info:{gasLimit:q}});let M=Q&&R;if(M&&!Q)throw new k({errorKey:"wallet_missing_params",info:{maxFeePerGas:Q}});if(M&&!R)throw new k({errorKey:"wallet_missing_params",info:{maxPriorityFeePerGas:R}});if(!(M||V))throw new k({errorKey:"wallet_missing_params",info:{gasPrice:V}});let I=(await import("@trezor/connect-web")).default,{toHexString:D}=await import("@tcswap/toolboxes/evm"),{Transaction:L}=await import("ethers"),b=M?{maxFeePerGas:D(BigInt(Q?.toString()||0)),maxPriorityFeePerGas:D(BigInt(R?.toString()||0))}:V&&{gasPrice:D(BigInt(V?.toString()||0))}||{gasPrice:"0x0"},z=D(BigInt(H||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),Y={chainId:Number.parseInt(h[this.chain],10),data:_?.toString()||"0x",gasLimit:D(BigInt(q?.toString()||0)),nonce:z,to:j.toString(),value:D(BigInt(B?.toString()||0)),...b},{success:u,payload:$}=await I.ethereumSignTransaction({path:Z(this.derivationPath),transaction:Y});if(!u)throw new k({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...$,chain:this.chain,derivationPath:this.derivationPath}});let{r:U,s:y,v:T}=$,G=C.from({r:U,s:y,v:new w(BigInt(T)).getBaseValue("number")}),A=L.from({...Y,nonce:Number.parseInt(Y.nonce,16),signature:G,type:M?2:0}).serialized;if(!A)throw new k({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return A};connect=(j)=>{if(!j)throw new k({errorKey:"wallet_provider_not_found",info:{chain:this.chain,derivationPath:this.derivationPath,wallet:E.TREZOR}});return new X({chain:this.chain,derivationPath:this.derivationPath,provider:j})}}return new X({chain:O,derivationPath:W,provider:N})}export{l as getEVMSigner};
2
+
3
+ //# debugId=0919C60B795A0DCA64756E2164756E21
4
+ //# sourceMappingURL=chunk-1z3vq8v6.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/trezor/evmSigner.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n USwapError,\n USwapNumber,\n WalletOption,\n} from \"@tcswap/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\n\ntype TrezorEVMSignerParams = {\n chain: Chain;\n derivationPath: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n};\n\nexport async function getEVMSigner({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n const { AbstractSigner, Signature } = await import(\"ethers\");\n\n class TrezorSigner extends AbstractSigner {\n address: string;\n chain: Chain;\n derivationPath: DerivationPathArray;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n super(provider);\n\n this.address = \"\";\n this.chain = chain;\n this.derivationPath = derivationPath;\n this.provider = provider;\n }\n\n getAddress = async () => {\n if (!this.address) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumGetAddress({\n path: derivationPathToString(this.derivationPath),\n showOnTrezor: true,\n });\n\n if (!result.success) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n this.address = result.payload.address;\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumSignMessage({\n message,\n path: derivationPathToString(this.derivationPath),\n });\n\n if (!result.success) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath, message },\n });\n }\n\n return result.payload.signature;\n };\n\n signTypedData(): Promise<string> {\n throw new USwapError(\"wallet_trezor_method_not_supported\", { method: \"signTypedData\" });\n }\n\n signTransaction = async ({\n to,\n gasLimit,\n value,\n data,\n nonce,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor\n }: TransactionRequest) => {\n if (!to) throw new USwapError({ errorKey: \"wallet_missing_params\", info: { to } });\n if (!gasLimit) throw new USwapError({ errorKey: \"wallet_missing_params\", info: { gasLimit } });\n\n const isEIP1559 = maxFeePerGas && maxPriorityFeePerGas;\n\n if (isEIP1559 && !maxFeePerGas) {\n throw new USwapError({ errorKey: \"wallet_missing_params\", info: { maxFeePerGas } });\n }\n if (isEIP1559 && !maxPriorityFeePerGas) {\n throw new USwapError({ errorKey: \"wallet_missing_params\", info: { maxPriorityFeePerGas } });\n }\n if (!(isEIP1559 || gasPrice)) {\n throw new USwapError({ errorKey: \"wallet_missing_params\", info: { gasPrice } });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { toHexString } = await import(\"@tcswap/toolboxes/evm\");\n const { Transaction } = await import(\"ethers\");\n\n const additionalFields = isEIP1559\n ? {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || 0)),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || 0)),\n }\n : (gasPrice && { gasPrice: toHexString(BigInt(gasPrice?.toString() || 0)) }) || { gasPrice: \"0x0\" };\n\n const hexifiedNonce = toHexString(\n BigInt(nonce || (await this.provider.getTransactionCount(await this.getAddress(), \"pending\"))),\n );\n\n const formattedTx = {\n chainId: Number.parseInt(ChainToChainId[this.chain], 10),\n data: data?.toString() || \"0x\",\n gasLimit: toHexString(BigInt(gasLimit?.toString() || 0)),\n nonce: hexifiedNonce,\n to: to.toString(),\n value: toHexString(BigInt(value?.toString() || 0)),\n ...additionalFields,\n };\n\n const { success, payload } = await TrezorConnect.ethereumSignTransaction({\n path: derivationPathToString(this.derivationPath),\n transaction: formattedTx,\n });\n\n if (!success) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...payload, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n const { r, s, v } = payload;\n\n const signature = Signature.from({ r, s, v: new USwapNumber(BigInt(v)).getBaseValue(\"number\") });\n\n const serializedTx = Transaction.from({\n ...formattedTx,\n nonce: Number.parseInt(formattedTx.nonce, 16),\n signature,\n type: isEIP1559 ? 2 : 0,\n }).serialized;\n\n if (!serializedTx) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return serializedTx;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new USwapError({\n errorKey: \"wallet_provider_not_found\",\n info: { chain: this.chain, derivationPath: this.derivationPath, wallet: WalletOption.TREZOR },\n });\n }\n\n return new TrezorSigner({ chain: this.chain, derivationPath: this.derivationPath, provider });\n };\n }\n\n return new TrezorSigner({ chain, derivationPath, provider });\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "0919C60B795A0DCA64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ var j=require("@tcswap/helpers");async function T({chain:$,derivationPath:A,provider:O}){let{AbstractSigner:W,Signature:N}=await import("ethers");class V extends W{address;chain;derivationPath;provider;constructor({chain:k,derivationPath:q,provider:B}){super(B);this.address="",this.chain=k,this.derivationPath=q,this.provider=B}getAddress=async()=>{if(!this.address){let q=await(await import("@trezor/connect-web")).default.ethereumGetAddress({path:j.derivationPathToString(this.derivationPath),showOnTrezor:!0});if(!q.success)throw new j.USwapError({errorKey:"wallet_trezor_failed_to_get_address",info:{...q,chain:this.chain,derivationPath:this.derivationPath}});this.address=q.payload.address}return this.address};signMessage=async(k)=>{let B=await(await import("@trezor/connect-web")).default.ethereumSignMessage({message:k,path:j.derivationPathToString(this.derivationPath)});if(!B.success)throw new j.USwapError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...B,chain:this.chain,derivationPath:this.derivationPath,message:k}});return B.payload.signature};signTypedData(){throw new j.USwapError("wallet_trezor_method_not_supported",{method:"signTypedData"})}signTransaction=async({to:k,gasLimit:q,value:B,data:f,nonce:C,maxFeePerGas:M,maxPriorityFeePerGas:Q,gasPrice:R})=>{if(!k)throw new j.USwapError({errorKey:"wallet_missing_params",info:{to:k}});if(!q)throw new j.USwapError({errorKey:"wallet_missing_params",info:{gasLimit:q}});let K=M&&Q;if(K&&!M)throw new j.USwapError({errorKey:"wallet_missing_params",info:{maxFeePerGas:M}});if(K&&!Q)throw new j.USwapError({errorKey:"wallet_missing_params",info:{maxPriorityFeePerGas:Q}});if(!(K||R))throw new j.USwapError({errorKey:"wallet_missing_params",info:{gasPrice:R}});let _=(await import("@trezor/connect-web")).default,{toHexString:D}=await import("@tcswap/toolboxes/evm"),{Transaction:H}=await import("ethers"),I=K?{maxFeePerGas:D(BigInt(M?.toString()||0)),maxPriorityFeePerGas:D(BigInt(Q?.toString()||0))}:R&&{gasPrice:D(BigInt(R?.toString()||0))}||{gasPrice:"0x0"},L=D(BigInt(C||await this.provider.getTransactionCount(await this.getAddress(),"pending"))),X={chainId:Number.parseInt(j.ChainToChainId[this.chain],10),data:f?.toString()||"0x",gasLimit:D(BigInt(q?.toString()||0)),nonce:L,to:k.toString(),value:D(BigInt(B?.toString()||0)),...I},{success:b,payload:Y}=await _.ethereumSignTransaction({path:j.derivationPathToString(this.derivationPath),transaction:X});if(!b)throw new j.USwapError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{...Y,chain:this.chain,derivationPath:this.derivationPath}});let{r:z,s:u,v:U}=Y,y=N.from({r:z,s:u,v:new j.USwapNumber(BigInt(U)).getBaseValue("number")}),Z=H.from({...X,nonce:Number.parseInt(X.nonce,16),signature:y,type:K?2:0}).serialized;if(!Z)throw new j.USwapError({errorKey:"wallet_trezor_failed_to_sign_transaction",info:{chain:this.chain,derivationPath:this.derivationPath}});return Z};connect=(k)=>{if(!k)throw new j.USwapError({errorKey:"wallet_provider_not_found",info:{chain:this.chain,derivationPath:this.derivationPath,wallet:j.WalletOption.TREZOR}});return new V({chain:this.chain,derivationPath:this.derivationPath,provider:k})}}return new V({chain:$,derivationPath:A,provider:O})}
2
+
3
+ //# debugId=D7285285B0513C5C64756E2164756E21
4
+ //# sourceMappingURL=chunk-3jd7804n.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/trezor/evmSigner.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n USwapError,\n USwapNumber,\n WalletOption,\n} from \"@tcswap/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\n\ntype TrezorEVMSignerParams = {\n chain: Chain;\n derivationPath: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n};\n\nexport async function getEVMSigner({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n const { AbstractSigner, Signature } = await import(\"ethers\");\n\n class TrezorSigner extends AbstractSigner {\n address: string;\n chain: Chain;\n derivationPath: DerivationPathArray;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ chain, derivationPath, provider }: TrezorEVMSignerParams) {\n super(provider);\n\n this.address = \"\";\n this.chain = chain;\n this.derivationPath = derivationPath;\n this.provider = provider;\n }\n\n getAddress = async () => {\n if (!this.address) {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumGetAddress({\n path: derivationPathToString(this.derivationPath),\n showOnTrezor: true,\n });\n\n if (!result.success) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_get_address\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n this.address = result.payload.address;\n }\n\n return this.address;\n };\n\n signMessage = async (message: string) => {\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n\n const result = await TrezorConnect.ethereumSignMessage({\n message,\n path: derivationPathToString(this.derivationPath),\n });\n\n if (!result.success) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...result, chain: this.chain, derivationPath: this.derivationPath, message },\n });\n }\n\n return result.payload.signature;\n };\n\n signTypedData(): Promise<string> {\n throw new USwapError(\"wallet_trezor_method_not_supported\", { method: \"signTypedData\" });\n }\n\n signTransaction = async ({\n to,\n gasLimit,\n value,\n data,\n nonce,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: any: refactor\n }: TransactionRequest) => {\n if (!to) throw new USwapError({ errorKey: \"wallet_missing_params\", info: { to } });\n if (!gasLimit) throw new USwapError({ errorKey: \"wallet_missing_params\", info: { gasLimit } });\n\n const isEIP1559 = maxFeePerGas && maxPriorityFeePerGas;\n\n if (isEIP1559 && !maxFeePerGas) {\n throw new USwapError({ errorKey: \"wallet_missing_params\", info: { maxFeePerGas } });\n }\n if (isEIP1559 && !maxPriorityFeePerGas) {\n throw new USwapError({ errorKey: \"wallet_missing_params\", info: { maxPriorityFeePerGas } });\n }\n if (!(isEIP1559 || gasPrice)) {\n throw new USwapError({ errorKey: \"wallet_missing_params\", info: { gasPrice } });\n }\n\n const TrezorConnect = (await import(\"@trezor/connect-web\")).default;\n const { toHexString } = await import(\"@tcswap/toolboxes/evm\");\n const { Transaction } = await import(\"ethers\");\n\n const additionalFields = isEIP1559\n ? {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || 0)),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || 0)),\n }\n : (gasPrice && { gasPrice: toHexString(BigInt(gasPrice?.toString() || 0)) }) || { gasPrice: \"0x0\" };\n\n const hexifiedNonce = toHexString(\n BigInt(nonce || (await this.provider.getTransactionCount(await this.getAddress(), \"pending\"))),\n );\n\n const formattedTx = {\n chainId: Number.parseInt(ChainToChainId[this.chain], 10),\n data: data?.toString() || \"0x\",\n gasLimit: toHexString(BigInt(gasLimit?.toString() || 0)),\n nonce: hexifiedNonce,\n to: to.toString(),\n value: toHexString(BigInt(value?.toString() || 0)),\n ...additionalFields,\n };\n\n const { success, payload } = await TrezorConnect.ethereumSignTransaction({\n path: derivationPathToString(this.derivationPath),\n transaction: formattedTx,\n });\n\n if (!success) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { ...payload, chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n const { r, s, v } = payload;\n\n const signature = Signature.from({ r, s, v: new USwapNumber(BigInt(v)).getBaseValue(\"number\") });\n\n const serializedTx = Transaction.from({\n ...formattedTx,\n nonce: Number.parseInt(formattedTx.nonce, 16),\n signature,\n type: isEIP1559 ? 2 : 0,\n }).serialized;\n\n if (!serializedTx) {\n throw new USwapError({\n errorKey: \"wallet_trezor_failed_to_sign_transaction\",\n info: { chain: this.chain, derivationPath: this.derivationPath },\n });\n }\n\n return serializedTx;\n };\n\n connect = (provider: Provider | null) => {\n if (!provider) {\n throw new USwapError({\n errorKey: \"wallet_provider_not_found\",\n info: { chain: this.chain, derivationPath: this.derivationPath, wallet: WalletOption.TREZOR },\n });\n }\n\n return new TrezorSigner({ chain: this.chain, derivationPath: this.derivationPath, provider });\n };\n }\n\n return new TrezorSigner({ chain, derivationPath, provider });\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "D7285285B0513C5C64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ var B=require("@tcswap/helpers"),M=2147483648,V;((j)=>{j.BTC="Bitcoin";j.BCH="BitcoinCash";j.DOGE="Dogecoin";j.LTC="Litecoin";j.DASH="Dash";j.XRP="Ripple"})(V||={});function W(F){if(F==="m/")return!0;return/^m(((\/[0-9]+h)+|(\/[0-9]+H)+|(\/[0-9]+')*)((\/[0-9]+)*))$/.test(F)}function X(F){let q=F;if(!W(q))throw new B.USwapError("wallet_keepkey_invalid_params",{reason:`Not a bip32 path: '${q}'`});if(/^m\//i.test(q))q=q.slice(2);let z=q.split("/");if(z.length===1&&z[0]==="")return[];let G=Array(z.length);for(let v=0;v<z.length;v++){let J=z[v];if(J){let j=/(\d+)([hH']?)/.exec(J);if(j===null)throw new B.USwapError("wallet_keepkey_invalid_params",{reason:"Invalid input"});let[,Q="",I=""]=j;if(G[v]=Number.parseInt(Q,10),G[v]>=M)throw new B.USwapError("wallet_keepkey_invalid_params",{reason:"Invalid child index"});if(I==="h"||I==="H"||I==="'")G[v]+=M;else if(I.length>0)throw new B.USwapError("wallet_keepkey_invalid_params",{reason:"Invalid modifier"})}}return G}
2
+
3
+ //# debugId=F51BFC5315A60A0B64756E2164756E21
4
+ //# sourceMappingURL=chunk-4pybhxzx.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/keepkey/coins.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\n/*\n KeepKey Specific bip32 path conventions\n*/\n\nimport { USwapError } from \"@tcswap/helpers\";\n\nconst HARDENED = 0x80000000;\n\nexport enum ChainToKeepKeyName {\n BTC = \"Bitcoin\",\n BCH = \"BitcoinCash\",\n DOGE = \"Dogecoin\",\n LTC = \"Litecoin\",\n DASH = \"Dash\",\n XRP = \"Ripple\",\n}\n\nexport function addressNListToBIP32(address: number[]) {\n return `m/${address.map((num) => (num >= HARDENED ? `${num - HARDENED}'` : num)).join(\"/\")}`;\n}\n\nexport function bip32Like(path: string) {\n if (path === \"m/\") return true;\n\n return /^m(((\\/[0-9]+h)+|(\\/[0-9]+H)+|(\\/[0-9]+')*)((\\/[0-9]+)*))$/.test(path);\n}\n\nexport function bip32ToAddressNList(initPath: string): number[] {\n let path = initPath;\n\n if (!bip32Like(path)) {\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: `Not a bip32 path: '${path}'` });\n }\n\n if (/^m\\//i.test(path)) {\n path = path.slice(2);\n }\n const segments = path.split(\"/\");\n\n if (segments.length === 1 && segments[0] === \"\") return [];\n\n const ret = new Array(segments.length);\n\n for (let i = 0; i < segments.length; i++) {\n // TODO: Check for better way instead of exec\n const segment = segments[i];\n if (segment) {\n const tmp = /(\\d+)([hH']?)/.exec(segment);\n if (tmp === null) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid input\" });\n\n const [, num = \"\", modifier = \"\"] = tmp;\n\n ret[i] = Number.parseInt(num, 10);\n\n if (ret[i] >= HARDENED) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid child index\" });\n\n if (modifier === \"h\" || modifier === \"H\" || modifier === \"'\") {\n ret[i] += HARDENED;\n } else if (modifier.length > 0) {\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Invalid modifier\" });\n }\n }\n }\n\n return ret;\n}\n"
6
+ ],
7
+ "mappings": "AAQ2B,IAA3B,6BAEM,EAAW,WAEL,GAAL,CAAK,IAAL,CACL,MAAM,UACN,MAAM,cACN,OAAO,WACP,MAAM,WACN,OAAO,OACP,MAAM,WANI,QAaL,SAAS,CAAS,CAAC,EAAc,CACtC,GAAI,IAAS,KAAM,MAAO,GAE1B,MAAO,6DAA6D,KAAK,CAAI,EAGxE,SAAS,CAAmB,CAAC,EAA4B,CAC9D,IAAI,EAAO,EAEX,GAAI,CAAC,EAAU,CAAI,EACjB,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,sBAAsB,IAAQ,CAAC,EAGjG,GAAI,QAAQ,KAAK,CAAI,EACnB,EAAO,EAAK,MAAM,CAAC,EAErB,IAAM,EAAW,EAAK,MAAM,GAAG,EAE/B,GAAI,EAAS,SAAW,GAAK,EAAS,KAAO,GAAI,MAAO,CAAC,EAEzD,IAAM,EAAU,MAAM,EAAS,MAAM,EAErC,QAAS,EAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CAExC,IAAM,EAAU,EAAS,GACzB,GAAI,EAAS,CACX,IAAM,EAAM,gBAAgB,KAAK,CAAO,EACxC,GAAI,IAAQ,KAAM,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,eAAgB,CAAC,EAEnG,KAAS,EAAM,GAAI,EAAW,IAAM,EAIpC,GAFA,EAAI,GAAK,OAAO,SAAS,EAAK,EAAE,EAE5B,EAAI,IAAM,EAAU,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,qBAAsB,CAAC,EAE/G,GAAI,IAAa,KAAO,IAAa,KAAO,IAAa,IACvD,EAAI,IAAM,EACL,QAAI,EAAS,OAAS,EAC3B,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,kBAAmB,CAAC,GAK1F,OAAO",
8
+ "debugId": "F51BFC5315A60A0B64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ var j=require("@tcswap/helpers"),O=require("@tcswap/toolboxes/ripple");var C=async({sdk:F,derivationPath:G})=>{let I=G?j.derivationPathToString(G):`${j.DerivationPath[j.Chain.Ripple]}/0`,{address:q}=await F.address.xrpGetAddress({address_n:E(I)}),z=await O.getRippleToolbox({signer:{getAddress:()=>Promise.resolve(q),signTransaction:()=>{throw Error("signTransaction not supported via toolbox")}}});return{...z,address:q,getAddress:()=>q,transfer:async({recipient:J,assetValue:Q,memo:y})=>{let f=await z.createTransaction({assetValue:Q,memo:y,recipient:J,sender:q}),U={type:"auth/StdTx",value:{fee:{amount:[{amount:"1000",denom:"drop"}],gas:"28000"},memo:y&&y.length>0?y:"",msg:[{type:"ripple-sdk/MsgSend",value:{amount:[{amount:f.Amount,denom:"drop"}],from_address:q,to_address:J}}],signatures:null}},W={addressNList:E(I),flags:f.Flags===0?void 0:f.Flags,lastLedgerSequence:f.LastLedgerSequence?.toString(),payment:{amount:f.Amount,destination:f.Destination,destinationTag:(f.DestinationTag??"0").toString()},sequence:(f.Sequence??0).toString(),tx:U},K=JSON.parse(await F.xrp.xrpSignTransaction(W)),M=K.tx_blob??K.value?.signatures?.[0]?.serializedTx;if(!M)throw Error("KeepKey XRP sign failed");let X=Buffer.from(M,"base64").toString("hex");return z.broadcastTransaction(X)}}};
2
+
3
+ //# debugId=D9B78CF0C7C0700F64756E2164756E21
4
+ //# sourceMappingURL=chunk-9kbkdt6e.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/keepkey/chains/ripple.ts"],
4
+ "sourcesContent": [
5
+ "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n} from \"@tcswap/helpers\";\nimport { getRippleToolbox } from \"@tcswap/toolboxes/ripple\";\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport const rippleWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n // Derivation path handling (default to standard XRP 44'/144'/0'/0/0)\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${DerivationPath[Chain.Ripple]}/0`;\n\n // Fetch address from KeepKey\n const { address } = await (sdk as any).address.xrpGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n });\n\n // Inject minimal signer so toolbox's address helpers work\n const signer = {\n getAddress: () => Promise.resolve(address),\n signTransaction: () => {\n throw new Error(\"signTransaction not supported via toolbox\");\n },\n };\n\n const toolbox = await getRippleToolbox({ signer });\n\n const transfer = async ({ recipient, assetValue, memo }: GenericTransferParams) => {\n // Build XRPL Payment tx using toolbox helper\n const tx = await toolbox.createTransaction({ assetValue, memo, recipient, sender: address });\n\n // Convert toolbox Payment tx into KeepKey StdTx wrapper (KeepKey-specific format)\n const stdTx = {\n type: \"auth/StdTx\",\n value: {\n fee: { amount: [{ amount: \"1000\", denom: \"drop\" }], gas: \"28000\" },\n memo: memo && memo.length > 0 ? memo : \"\",\n msg: [\n {\n type: \"ripple-sdk/MsgSend\",\n value: { amount: [{ amount: tx.Amount, denom: \"drop\" }], from_address: address, to_address: recipient },\n },\n ],\n signatures: null,\n },\n };\n\n const unsignedTx = {\n addressNList: bip32ToAddressNList(derivationPathString),\n flags: tx.Flags === 0 ? undefined : tx.Flags,\n lastLedgerSequence: tx.LastLedgerSequence?.toString(),\n payment: {\n amount: tx.Amount,\n destination: tx.Destination,\n destinationTag: (tx.DestinationTag ?? \"0\").toString(),\n },\n sequence: (tx.Sequence ?? 0).toString(),\n tx: stdTx,\n } as any;\n\n // Sign with KeepKey\n const responseSign = JSON.parse(await (sdk as any).xrp.xrpSignTransaction(unsignedTx));\n\n // keepkey-sdk may return either { tx_blob } or StdTx with Base64 serializedTx\n const txBlob: string | undefined =\n (responseSign as any).tx_blob ?? (responseSign as any).value?.signatures?.[0]?.serializedTx;\n if (!txBlob) throw new Error(\"KeepKey XRP sign failed\");\n\n const buffer = Buffer.from(txBlob, \"base64\");\n const txBlobHex = buffer.toString(\"hex\");\n\n // Broadcast signed tx via toolbox\n return toolbox.broadcastTransaction(txBlobHex);\n };\n\n return { ...toolbox, address, getAddress: () => address, transfer };\n};\n"
6
+ ],
7
+ "mappings": "AAOO,IANP,6BAOA,sCAGO,IAAM,EAAsB,OACjC,MACA,oBAII,CAEJ,IAAM,EAAuB,EACzB,yBAAuB,CAAc,EACrC,GAAG,iBAAe,QAAM,aAGpB,WAAY,MAAO,EAAY,QAAQ,cAAc,CAC3D,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAUK,EAAU,MAAM,mBAAiB,CAAE,OAP1B,CACb,WAAY,IAAM,QAAQ,QAAQ,CAAO,EACzC,gBAAiB,IAAM,CACrB,MAAU,MAAM,2CAA2C,EAE/D,CAEgD,CAAC,EAkDjD,MAAO,IAAK,EAAS,UAAS,WAAY,IAAM,EAAS,SAhDxC,OAAS,YAAW,aAAY,UAAkC,CAEjF,IAAM,EAAK,MAAM,EAAQ,kBAAkB,CAAE,aAAY,OAAM,YAAW,OAAQ,CAAQ,CAAC,EAGrF,EAAQ,CACZ,KAAM,aACN,MAAO,CACL,IAAK,CAAE,OAAQ,CAAC,CAAE,OAAQ,OAAQ,MAAO,MAAO,CAAC,EAAG,IAAK,OAAQ,EACjE,KAAM,GAAQ,EAAK,OAAS,EAAI,EAAO,GACvC,IAAK,CACH,CACE,KAAM,qBACN,MAAO,CAAE,OAAQ,CAAC,CAAE,OAAQ,EAAG,OAAQ,MAAO,MAAO,CAAC,EAAG,aAAc,EAAS,WAAY,CAAU,CACxG,CACF,EACA,WAAY,IACd,CACF,EAEM,EAAa,CACjB,aAAc,EAAoB,CAAoB,EACtD,MAAO,EAAG,QAAU,EAAI,OAAY,EAAG,MACvC,mBAAoB,EAAG,oBAAoB,SAAS,EACpD,QAAS,CACP,OAAQ,EAAG,OACX,YAAa,EAAG,YAChB,gBAAiB,EAAG,gBAAkB,KAAK,SAAS,CACtD,EACA,UAAW,EAAG,UAAY,GAAG,SAAS,EACtC,GAAI,CACN,EAGM,EAAe,KAAK,MAAM,MAAO,EAAY,IAAI,mBAAmB,CAAU,CAAC,EAG/E,EACH,EAAqB,SAAY,EAAqB,OAAO,aAAa,IAAI,aACjF,GAAI,CAAC,EAAQ,MAAU,MAAM,yBAAyB,EAGtD,IAAM,EADS,OAAO,KAAK,EAAQ,QAAQ,EAClB,SAAS,KAAK,EAGvC,OAAO,EAAQ,qBAAqB,CAAS,EAGmB",
8
+ "debugId": "D9B78CF0C7C0700F64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ import{b as z}from"./chunk-1w9rn6fj.js";import"./chunk-zzfbcc7e.js";import{Chain as W,DerivationPath as X,derivationPathToString as Y}from"@tcswap/helpers";import{getRippleToolbox as Z}from"@tcswap/toolboxes/ripple";var w=async({sdk:E,derivationPath:F})=>{let G=F?Y(F):`${X[W.Ripple]}/0`,{address:j}=await E.address.xrpGetAddress({address_n:z(G)}),y=await Z({signer:{getAddress:()=>Promise.resolve(j),signTransaction:()=>{throw Error("signTransaction not supported via toolbox")}}});return{...y,address:j,getAddress:()=>j,transfer:async({recipient:I,assetValue:M,memo:q})=>{let f=await y.createTransaction({assetValue:M,memo:q,recipient:I,sender:j}),O={type:"auth/StdTx",value:{fee:{amount:[{amount:"1000",denom:"drop"}],gas:"28000"},memo:q&&q.length>0?q:"",msg:[{type:"ripple-sdk/MsgSend",value:{amount:[{amount:f.Amount,denom:"drop"}],from_address:j,to_address:I}}],signatures:null}},Q={addressNList:z(G),flags:f.Flags===0?void 0:f.Flags,lastLedgerSequence:f.LastLedgerSequence?.toString(),payment:{amount:f.Amount,destination:f.Destination,destinationTag:(f.DestinationTag??"0").toString()},sequence:(f.Sequence??0).toString(),tx:O},J=JSON.parse(await E.xrp.xrpSignTransaction(Q)),K=J.tx_blob??J.value?.signatures?.[0]?.serializedTx;if(!K)throw Error("KeepKey XRP sign failed");let U=Buffer.from(K,"base64").toString("hex");return y.broadcastTransaction(U)}}};export{w as rippleWalletMethods};
2
+
3
+ //# debugId=4EEEC896E459ADCE64756E2164756E21
4
+ //# sourceMappingURL=chunk-eng8tyvd.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/keepkey/chains/ripple.ts"],
4
+ "sourcesContent": [
5
+ "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n} from \"@tcswap/helpers\";\nimport { getRippleToolbox } from \"@tcswap/toolboxes/ripple\";\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport const rippleWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n // Derivation path handling (default to standard XRP 44'/144'/0'/0/0)\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${DerivationPath[Chain.Ripple]}/0`;\n\n // Fetch address from KeepKey\n const { address } = await (sdk as any).address.xrpGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n });\n\n // Inject minimal signer so toolbox's address helpers work\n const signer = {\n getAddress: () => Promise.resolve(address),\n signTransaction: () => {\n throw new Error(\"signTransaction not supported via toolbox\");\n },\n };\n\n const toolbox = await getRippleToolbox({ signer });\n\n const transfer = async ({ recipient, assetValue, memo }: GenericTransferParams) => {\n // Build XRPL Payment tx using toolbox helper\n const tx = await toolbox.createTransaction({ assetValue, memo, recipient, sender: address });\n\n // Convert toolbox Payment tx into KeepKey StdTx wrapper (KeepKey-specific format)\n const stdTx = {\n type: \"auth/StdTx\",\n value: {\n fee: { amount: [{ amount: \"1000\", denom: \"drop\" }], gas: \"28000\" },\n memo: memo && memo.length > 0 ? memo : \"\",\n msg: [\n {\n type: \"ripple-sdk/MsgSend\",\n value: { amount: [{ amount: tx.Amount, denom: \"drop\" }], from_address: address, to_address: recipient },\n },\n ],\n signatures: null,\n },\n };\n\n const unsignedTx = {\n addressNList: bip32ToAddressNList(derivationPathString),\n flags: tx.Flags === 0 ? undefined : tx.Flags,\n lastLedgerSequence: tx.LastLedgerSequence?.toString(),\n payment: {\n amount: tx.Amount,\n destination: tx.Destination,\n destinationTag: (tx.DestinationTag ?? \"0\").toString(),\n },\n sequence: (tx.Sequence ?? 0).toString(),\n tx: stdTx,\n } as any;\n\n // Sign with KeepKey\n const responseSign = JSON.parse(await (sdk as any).xrp.xrpSignTransaction(unsignedTx));\n\n // keepkey-sdk may return either { tx_blob } or StdTx with Base64 serializedTx\n const txBlob: string | undefined =\n (responseSign as any).tx_blob ?? (responseSign as any).value?.signatures?.[0]?.serializedTx;\n if (!txBlob) throw new Error(\"KeepKey XRP sign failed\");\n\n const buffer = Buffer.from(txBlob, \"base64\");\n const txBlobHex = buffer.toString(\"hex\");\n\n // Broadcast signed tx via toolbox\n return toolbox.broadcastTransaction(txBlobHex);\n };\n\n return { ...toolbox, address, getAddress: () => address, transfer };\n};\n"
6
+ ],
7
+ "mappings": "0EACA,UACE,oBACA,4BAEA,wBAGF,2BAAS,iCAGF,IAAM,EAAsB,OACjC,MACA,oBAII,CAEJ,IAAM,EAAuB,EACzB,EAAuB,CAAc,EACrC,GAAG,EAAe,EAAM,aAGpB,WAAY,MAAO,EAAY,QAAQ,cAAc,CAC3D,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAUK,EAAU,MAAM,EAAiB,CAAE,OAP1B,CACb,WAAY,IAAM,QAAQ,QAAQ,CAAO,EACzC,gBAAiB,IAAM,CACrB,MAAU,MAAM,2CAA2C,EAE/D,CAEgD,CAAC,EAkDjD,MAAO,IAAK,EAAS,UAAS,WAAY,IAAM,EAAS,SAhDxC,OAAS,YAAW,aAAY,UAAkC,CAEjF,IAAM,EAAK,MAAM,EAAQ,kBAAkB,CAAE,aAAY,OAAM,YAAW,OAAQ,CAAQ,CAAC,EAGrF,EAAQ,CACZ,KAAM,aACN,MAAO,CACL,IAAK,CAAE,OAAQ,CAAC,CAAE,OAAQ,OAAQ,MAAO,MAAO,CAAC,EAAG,IAAK,OAAQ,EACjE,KAAM,GAAQ,EAAK,OAAS,EAAI,EAAO,GACvC,IAAK,CACH,CACE,KAAM,qBACN,MAAO,CAAE,OAAQ,CAAC,CAAE,OAAQ,EAAG,OAAQ,MAAO,MAAO,CAAC,EAAG,aAAc,EAAS,WAAY,CAAU,CACxG,CACF,EACA,WAAY,IACd,CACF,EAEM,EAAa,CACjB,aAAc,EAAoB,CAAoB,EACtD,MAAO,EAAG,QAAU,EAAI,OAAY,EAAG,MACvC,mBAAoB,EAAG,oBAAoB,SAAS,EACpD,QAAS,CACP,OAAQ,EAAG,OACX,YAAa,EAAG,YAChB,gBAAiB,EAAG,gBAAkB,KAAK,SAAS,CACtD,EACA,UAAW,EAAG,UAAY,GAAG,SAAS,EACtC,GAAI,CACN,EAGM,EAAe,KAAK,MAAM,MAAO,EAAY,IAAI,mBAAmB,CAAU,CAAC,EAG/E,EACH,EAAqB,SAAY,EAAqB,OAAO,aAAa,IAAI,aACjF,GAAI,CAAC,EAAQ,MAAU,MAAM,yBAAyB,EAGtD,IAAM,EADS,OAAO,KAAK,EAAQ,QAAQ,EAClB,SAAS,KAAK,EAGvC,OAAO,EAAQ,qBAAqB,CAAS,EAGmB",
8
+ "debugId": "4EEEC896E459ADCE64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,4 @@
1
+ var j=Object.create;var{getPrototypeOf:k,defineProperty:e,getOwnPropertyNames:h,getOwnPropertyDescriptor:l}=Object,i=Object.prototype.hasOwnProperty;var m=(a,b,c)=>{c=a!=null?j(k(a)):{};let d=b||!a||!a.__esModule?e(c,"default",{value:a,enumerable:!0}):c;for(let f of h(a))if(!i.call(d,f))e(d,f,{get:()=>a[f],enumerable:!0});return d},g=new WeakMap,n=(a)=>{var b=g.get(a),c;if(b)return b;if(b=e({},"__esModule",{value:!0}),a&&typeof a==="object"||typeof a==="function")h(a).map((d)=>!i.call(b,d)&&e(b,d,{get:()=>a[d],enumerable:!(c=l(a,d))||c.enumerable}));return g.set(a,b),b};var o=(a,b)=>{for(var c in b)e(a,c,{get:b[c],enumerable:!0,configurable:!0,set:(d)=>b[c]=()=>d})};
2
+
3
+ //# debugId=9E860276D712218864756E2164756E21
4
+ //# sourceMappingURL=chunk-fazw0jvt.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "9E860276D712218864756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,5 @@
1
+ var g=Object.create;var{getPrototypeOf:h,defineProperty:f,getOwnPropertyNames:i}=Object;var j=Object.prototype.hasOwnProperty;var k=(a,c,b)=>{b=a!=null?g(h(a)):{};let d=c||!a||!a.__esModule?f(b,"default",{value:a,enumerable:!0}):b;for(let e of i(a))if(!j.call(d,e))f(d,e,{get:()=>a[e],enumerable:!0});return d};var l=((a)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(c,b)=>(typeof require<"u"?require:c)[b]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});
2
+ export{k as c,l as d};
3
+
4
+ //# debugId=B199D22A6B72ED5764756E2164756E21
5
+ //# sourceMappingURL=chunk-zzfbcc7e.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "B199D22A6B72ED5764756E2164756E21",
8
+ "names": []
9
+ }
package/dist/index.cjs ADDED
@@ -0,0 +1,4 @@
1
+ var o={};module.exports=e(o);
2
+
3
+ //# debugId=111FF28E4452890B64756E2164756E21
4
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "111FF28E4452890B64756E2164756E21",
8
+ "names": []
9
+ }
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+
2
+ //# debugId=1B152D275122871864756E2164756E21
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,9 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [
5
+ ],
6
+ "mappings": "",
7
+ "debugId": "1B152D275122871864756E2164756E21",
8
+ "names": []
9
+ }
@@ -0,0 +1,4 @@
1
+ var e={};n(e,{keepkeyWallet:()=>d,KEEPKEY_SUPPORTED_CHAINS:()=>t});module.exports=s(e);var c=require("@keepkey/keepkey-sdk"),z=require("@tcswap/helpers"),v=require("@tcswap/wallet-core");var b=require("@tcswap/helpers");async function g({sdk:J,derivationPath:Q}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:H,getFeeRateFromSwapKit:Y,createStargateClient:q}=await import("@tcswap/toolboxes/cosmos"),_=Q?b.derivationPathToString(Q):`${b.DerivationPath.GAIA}/0`,{address:$}=await J.address.cosmosGetAddress({address_n:y(_)}),j=await H(b.Chain.Cosmos);if(X.amount[0])X.amount[0].amount=String(await Y(b.GAIAConfig.chainId,500));return{...j,address:$,transfer:async({assetValue:N,recipient:Z,memo:W})=>{let O=N.getBaseValue("string"),B=await j.getAccount($),L=await J.cosmos.cosmosSignAmino({signDoc:{account_number:B?.accountNumber.toString()??"",chain_id:b.GAIAConfig.chainId,fee:X,memo:W||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:O,denom:"uatom"}],from_address:$,to_address:Z}}],sequence:B?.sequence.toString()??""},signerAddress:$}),I=atob(L.serialized),K=new Uint8Array(I.length).map((w,A)=>I.charCodeAt(A)),G=await b.getRPCUrl(b.Chain.Cosmos);return(await(await q(G)).broadcastTx(K)).transactionHash}}}var M=require("@tcswap/helpers"),l=require("ethers");class k extends l.AbstractSigner{sdk;chain;derivationPath;address;provider;constructor({sdk:J,chain:Q,derivationPath:X,provider:H}){super();this.sdk=J,this.chain=Q,this.derivationPath=X||M.NetworkDerivationPath.ETH,this.address="",this.provider=H}signTypedData(){throw new M.USwapError("wallet_keepkey_method_not_supported",{method:"signTypedData"})}getAddress=async()=>{if(this.address)return this.address;let{address:J}=await this.sdk.address.ethereumGetAddress({address_n:y(M.derivationPathToString(this.derivationPath))});return this.address=J,J};signMessage=(J)=>this.sdk.eth.ethSign({address:this.address,message:J});signTransaction=async({to:J,value:Q,gasLimit:X,nonce:H,data:Y,maxFeePerGas:q,maxPriorityFeePerGas:_,gasPrice:$})=>{if(!J)throw new M.USwapError("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new M.USwapError("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!Y)throw new M.USwapError("wallet_keepkey_invalid_params",{reason:"Missing data"});let j=!!((q||_)&&!$);if(j&&!q)throw new M.USwapError("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(j&&!_)throw new M.USwapError("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(j||$))throw new M.USwapError("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:R}=await import("@tcswap/toolboxes/evm"),N=H?BigInt(H):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),Z={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:R(BigInt(M.ChainToChainId[this.chain])),data:Y,from:this.address,gas:R(BigInt(X)),nonce:R(N),to:J.toString(),value:R(BigInt(Q||0)),...j&&{maxFeePerGas:R(BigInt(q?.toString()||"0")),maxPriorityFeePerGas:R(BigInt(_?.toString()||"0"))},...!j&&{gasPrice:R(BigInt($?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(Z)).serialized};sendTransaction=async(J)=>{if(!this.provider)throw new M.USwapError("wallet_keepkey_no_provider");let Q=await this.signTransaction(J);return await this.provider.broadcastTransaction(Q)};connect=(J)=>new k({chain:this.chain,derivationPath:this.derivationPath,provider:J,sdk:this.sdk})}var V=require("@tcswap/helpers");async function m({sdk:J,derivationPath:Q}){let{createStargateClient:X,getCosmosToolbox:H}=await import("@tcswap/toolboxes/cosmos"),Y=await H(V.Chain.Maya),q=Q?V.derivationPathToString(Q):`${V.DerivationPath.MAYA}/0`,{address:_}=await J.address.mayachainGetAddress({address_n:y(q)}),$=async({assetValue:N,recipient:Z,sender:W,memo:O})=>{let B=await import("@cosmjs/amino"),L=B.makeSignDoc??B.default?.makeSignDoc,{getDenomWithChain:I}=await import("@tcswap/toolboxes/cosmos"),K=await Y.getAccount(W);if(!K)throw new V.USwapError("wallet_keepkey_account_not_found");let{accountNumber:G,sequence:F=0}=K,E=N.getBaseValue("string"),w=Z&&Z!=="",A=w?{type:"mayachain/MsgSend",value:{amount:[{amount:E,denom:N.symbol.toLowerCase()}],from_address:W,to_address:Z}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:E,asset:I(N)}],memo:O,signer:W}},T=L([A],{amount:[],gas:"500000000"},V.MAYAConfig.chainId,O,G?.toString(),F),x=await(w?J.mayachain.mayachainSignAminoTransfer:J.mayachain.mayachainSignAminoDeposit)({signDoc:T,signerAddress:W}),u=atob(x.serialized);return new Uint8Array(u.length).map((C,r)=>u.charCodeAt(r))};return{...Y,address:_,deposit:async({assetValue:N,memo:Z})=>{let W=await V.getRPCUrl(V.Chain.Maya),O=await X(W),B=await $({assetValue:N,memo:Z,sender:_}),{transactionHash:L}=await O.broadcastTx(B);return L},transfer:async({assetValue:N,recipient:Z,memo:W})=>{let O=await V.getRPCUrl(V.Chain.Maya),B=await X(O),L=await $({assetValue:N,memo:W,recipient:Z,sender:_}),{transactionHash:I}=await B.broadcastTx(L);return I}}}var D=require("@tcswap/helpers");async function p({sdk:J,derivationPath:Q}){let X=await import("@cosmjs/amino"),H=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:Y,getDefaultChainFee:q,createStargateClient:_,getCosmosToolbox:$}=await import("@tcswap/toolboxes/cosmos"),j=await $(D.Chain.THORChain),R=Q?D.derivationPathToString(Q):`${D.DerivationPath.THOR}/0`,{address:N}=await J.address.thorchainGetAddress({address_n:y(R)}),Z=async({assetValue:B,recipient:L,sender:I,memo:K})=>{let G=await j.getAccount(I);if(!G)throw new D.USwapError("wallet_keepkey_account_not_found");let{accountNumber:F,sequence:E=0}=G,w=L&&L!=="",A=Y({assetValue:B,memo:K,recipient:L,sender:I}),T=H([A],q(D.Chain.THORChain),D.THORConfig.chainId,K,F?.toString(),E),S=w?await J.thorchain.thorchainSignAminoTransfer({signDoc:T,signerAddress:I}):await J.thorchain.thorchainSignAminoDeposit({signDoc:T,signerAddress:I}),x=atob(S.serialized);return new Uint8Array(x.length).map((u,C)=>x.charCodeAt(C))};return{...j,address:N,deposit:async({assetValue:B,memo:L})=>{let I=await D.getRPCUrl(D.Chain.THORChain),K=await _(I),G=await Z({assetValue:B,memo:L,sender:N}),{transactionHash:F}=await K.broadcastTx(G);return F},transfer:async({assetValue:B,recipient:L,memo:I})=>{let K=await D.getRPCUrl(D.Chain.THORChain),G=await _(K),F=await Z({assetValue:B,memo:I,recipient:L,sender:N}),{transactionHash:E}=await G.broadcastTx(F);return E}}}var U=require("@tcswap/helpers");async function h({sdk:J,chain:Q,derivationPath:X}){let{getUtxoToolbox:H}=await import("@tcswap/toolboxes/utxo"),Y=await H(Q),q=[U.Chain.Bitcoin,U.Chain.Litecoin].includes(Q)?"p2wpkh":"p2pkh",_=X?U.derivationPathToString(X):`${U.DerivationPath[Q]}/0`,$={address_n:y(_),coin:P[Q],script_type:q},j=(await J.address.utxoGetAddress($)).address,R=async(Z,W,O="")=>{let B=Z.txOutputs.map((K)=>{let{value:G,address:F,change:E}=K,w=Q===U.Chain.BitcoinCash?Y.stripToCashAddress(F):F;if(E||F===j)return{addressNList:$.address_n,addressType:"change",amount:G,isChange:!0,scriptType:q};if(w)return{address:w,addressType:"spend",amount:G};return null}).filter(Boolean),L=(K)=>{return K.filter((G)=>G!==null&&typeof G==="object"&&Object.keys(G).length>0)};return(await J.utxo.utxoSignTransaction({coin:P[Q],inputs:W,opReturnData:O,outputs:L(B)})).serializedTx?.toString()};return{...Y,address:j,signTransaction:R,transfer:async({recipient:Z,feeOptionKey:W,feeRate:O,memo:B,...L})=>{if(!j)throw new U.USwapError("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new U.USwapError("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let I=Q===U.Chain.BitcoinCash?Y.buildTx:Y.createTransaction,{psbt:K,inputs:G}=await I({...L,feeRate:O||(await Y.getFeeRates())[W||U.FeeOption.Fast],fetchTxHex:!0,memo:B,recipient:Z,sender:j}),F=G.map(({value:w,index:A,hash:T,txHex:S})=>({addressNList:$.address_n,amount:w.toString(),hex:S||"",scriptType:q,txid:T,vout:A})),E=await R(K,F,B);return Y.broadcastTx(E)}}}var d=v.createWallet({connect:({addChain:J,supportedChains:Q,walletType:X})=>async function(Y,q){let _=z.filterSupportedChains({chains:Y,supportedChains:Q,walletType:X}),$=z.USwapConfig.get("integrations").keepKey;if(!$)throw Error("KeepKey config not found");let j=z.USwapConfig.get("apiKeys").keepKey||"1234";await o();let R={apiKey:j,pairingInfo:$},N=await c.KeepKeySdk.create(R);if(R.apiKey&&R.apiKey!==j)z.USwapConfig.setApiKey("keepKey",R.apiKey);return await Promise.all(_.map(async(Z)=>{let W=await i({chain:Z,derivationPath:q?.[Z]||z.NetworkDerivationPath[Z],sdk:N}),O=await W.getAddress()||"";J({...W,address:O,chain:Z,walletType:z.WalletOption.KEEPKEY})})),!0},name:"connectKeepkey",supportedChains:[z.Chain.Arbitrum,z.Chain.Avalanche,z.Chain.Base,z.Chain.BinanceSmartChain,z.Chain.Bitcoin,z.Chain.BitcoinCash,z.Chain.Cosmos,z.Chain.Dogecoin,z.Chain.Dash,z.Chain.Ethereum,z.Chain.Litecoin,z.Chain.Monad,z.Chain.Ripple,z.Chain.Optimism,z.Chain.Polygon,z.Chain.THORChain,z.Chain.Maya,z.Chain.XLayer],walletType:z.WalletOption.KEEPKEY}),t=v.getWalletSupportedChains(d);async function i({sdk:J,chain:Q,derivationPath:X}){let{getProvider:H,getEvmToolbox:Y}=await import("@tcswap/toolboxes/evm");switch(Q){case z.Chain.BinanceSmartChain:case z.Chain.Arbitrum:case z.Chain.Optimism:case z.Chain.Polygon:case z.Chain.Avalanche:case z.Chain.Base:case z.Chain.Ethereum:case z.Chain.Monad:case z.Chain.XLayer:{let q=await H(Q),_=new k({chain:Q,derivationPath:X,provider:q,sdk:J});return await Y(Q,{provider:q,signer:_})}case z.Chain.Cosmos:return g({derivationPath:X,sdk:J});case z.Chain.THORChain:return p({derivationPath:X,sdk:J});case z.Chain.Maya:return m({derivationPath:X,sdk:J});case z.Chain.Bitcoin:case z.Chain.BitcoinCash:case z.Chain.Dash:case z.Chain.Dogecoin:case z.Chain.Litecoin:return h({chain:Q,derivationPath:X,sdk:J});case z.Chain.Ripple:{let{rippleWalletMethods:q}=await import("../chunk-9kbkdt6e.js");return q({derivationPath:X,sdk:J})}default:throw new z.USwapError("wallet_keepkey_chain_not_supported",{chain:Q})}}async function o(J=0){if(J>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await a())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await o(J+1)}async function a(J="http://localhost:1646/spec/swagger.json"){try{return(await fetch(J)).status===200}catch{return!1}}
2
+
3
+ //# debugId=AD24B048AA0F1BA964756E2164756E21
4
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/keepkey/index.ts", "../src/keepkey/chains/cosmos.ts", "../src/keepkey/chains/evm.ts", "../src/keepkey/chains/mayachain.ts", "../src/keepkey/chains/thorchain.ts", "../src/keepkey/chains/utxo.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n type DerivationPathArray,\n filterSupportedChains,\n NetworkDerivationPath,\n USwapConfig,\n USwapError,\n WalletOption,\n} from \"@tcswap/helpers\";\n\nexport type { PairingInfo } from \"@keepkey/keepkey-sdk\";\n\nimport { createWallet, getWalletSupportedChains } from \"@tcswap/wallet-core\";\nimport { cosmosWalletMethods } from \"./chains/cosmos\";\nimport { KeepKeySigner } from \"./chains/evm\";\nimport { mayachainWalletMethods } from \"./chains/mayachain\";\nimport { thorchainWalletMethods } from \"./chains/thorchain\";\nimport { utxoWalletMethods } from \"./chains/utxo\";\n\nexport const keepkeyWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeepkey(chains: Chain[], derivationPathMap?: Record<Chain, DerivationPathArray>) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const pairingInfo = USwapConfig.get(\"integrations\").keepKey;\n if (!pairingInfo) throw new Error(\"KeepKey config not found\");\n\n const initialApiKey = USwapConfig.get(\"apiKeys\").keepKey || \"1234\";\n\n await checkAndLaunch();\n\n // Conform to the expected { apiKey, pairingInfo } structure\n const keepkeyConfig = { apiKey: initialApiKey, pairingInfo };\n const keepKeySdk = await KeepKeySdk.create(keepkeyConfig);\n\n // Persist the new API key via USwapConfig after pairing\n if (keepkeyConfig.apiKey && keepkeyConfig.apiKey !== initialApiKey) {\n USwapConfig.setApiKey(\"keepKey\", keepkeyConfig.apiKey);\n }\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const walletMethods = await getWalletMethods({\n chain,\n derivationPath: derivationPathMap?.[chain] || NetworkDerivationPath[chain],\n sdk: keepKeySdk,\n });\n const address = (await walletMethods.getAddress()) || \"\";\n\n addChain({ ...walletMethods, address, chain, walletType: WalletOption.KEEPKEY });\n }),\n );\n return true;\n },\n name: \"connectKeepkey\",\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Ripple,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n Chain.Maya,\n Chain.XLayer,\n ],\n walletType: WalletOption.KEEPKEY,\n});\n\nexport const KEEPKEY_SUPPORTED_CHAINS = getWalletSupportedChains(keepkeyWallet);\n\nasync function getWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n}) {\n const { getProvider, getEvmToolbox } = await import(\"@tcswap/toolboxes/evm\");\n\n switch (chain) {\n case Chain.BinanceSmartChain:\n case Chain.Arbitrum:\n case Chain.Optimism:\n case Chain.Polygon:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.Ethereum:\n case Chain.Monad:\n case Chain.XLayer: {\n const provider = await getProvider(chain);\n const signer = new KeepKeySigner({ chain, derivationPath, provider, sdk });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n case Chain.Cosmos: {\n return cosmosWalletMethods({ derivationPath, sdk });\n }\n case Chain.THORChain: {\n return thorchainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Maya: {\n return mayachainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n return utxoWalletMethods({ chain, derivationPath, sdk });\n }\n case Chain.Ripple: {\n const { rippleWalletMethods } = await import(\"./chains/ripple\");\n return rippleWalletMethods({ derivationPath, sdk });\n }\n default:\n throw new USwapError(\"wallet_keepkey_chain_not_supported\", { chain });\n }\n}\n\n// kk-sdk docs: https://keepkey.com/blog/building_on_the_keepkey_sdk\n// test spec: if offline, launch keepkey-bridge\nasync function checkAndLaunch(attempts = 0) {\n if (attempts >= 3) {\n alert(\"KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started\");\n }\n const isAvailable = await checkKeepkeyAvailability();\n\n if (!isAvailable) {\n window.location.assign(\"keepkey://launch\");\n await new Promise((resolve) => setTimeout(resolve, 30000));\n await checkAndLaunch(attempts + 1);\n }\n}\n\nasync function checkKeepkeyAvailability(spec = \"http://localhost:1646/spec/swagger.json\") {\n try {\n const response = await fetch(spec);\n return response.status === 200;\n } catch {\n return false;\n }\n}\n",
6
+ "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport type { GenericTransferParams } from \"@tcswap/helpers\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n GAIAConfig,\n getRPCUrl,\n} from \"@tcswap/helpers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport async function cosmosWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { DEFAULT_COSMOS_FEE_MAINNET, getCosmosToolbox, getFeeRateFromSwapKit, createStargateClient } = await import(\n \"@tcswap/toolboxes/cosmos\"\n );\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.GAIA}/0`;\n\n const { address: fromAddress } = (await sdk.address.cosmosGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const toolbox = await getCosmosToolbox(Chain.Cosmos);\n\n if (DEFAULT_COSMOS_FEE_MAINNET.amount[0]) {\n DEFAULT_COSMOS_FEE_MAINNET.amount[0].amount = String(await getFeeRateFromSwapKit(GAIAConfig.chainId, 500));\n }\n\n // TODO support other cosmos assets\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const amount = assetValue.getBaseValue(\"string\");\n const accountInfo = await toolbox.getAccount(fromAddress);\n\n const keepKeySignedTx = await sdk.cosmos.cosmosSignAmino({\n signDoc: {\n account_number: accountInfo?.accountNumber.toString() ?? \"\",\n chain_id: GAIAConfig.chainId,\n fee: DEFAULT_COSMOS_FEE_MAINNET,\n memo: memo || \"\",\n msgs: [\n {\n type: \"cosmos-sdk/MsgSend\",\n value: { amount: [{ amount, denom: \"uatom\" }], from_address: fromAddress, to_address: recipient },\n },\n ],\n sequence: accountInfo?.sequence.toString() ?? \"\",\n },\n signerAddress: fromAddress,\n });\n\n const decodedBytes = atob(keepKeySignedTx.serialized);\n const uint8Array = new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n\n const rpcUrl = await getRPCUrl(Chain.Cosmos);\n const client = await createStargateClient(rpcUrl);\n const response = await client.broadcastTx(uint8Array);\n\n return response.transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, transfer };\n}\n",
7
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n USwapError,\n} from \"@tcswap/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ninterface KeepKeyEVMSignerParams {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n}\n\nexport class KeepKeySigner extends AbstractSigner {\n private sdk: KeepKeySdk;\n private chain: Chain;\n private derivationPath: DerivationPathArray;\n private address: string;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ sdk, chain, derivationPath, provider }: KeepKeyEVMSignerParams) {\n super();\n this.sdk = sdk;\n this.chain = chain;\n this.derivationPath = derivationPath || NetworkDerivationPath.ETH;\n this.address = \"\";\n this.provider = provider;\n }\n\n signTypedData(): Promise<string> {\n throw new USwapError(\"wallet_keepkey_method_not_supported\", { method: \"signTypedData\" });\n }\n\n getAddress = async () => {\n if (this.address) return this.address;\n const { address } = await this.sdk.address.ethereumGetAddress({\n address_n: bip32ToAddressNList(derivationPathToString(this.derivationPath)),\n });\n\n this.address = address;\n return address;\n };\n\n signMessage = (message: string) => this.sdk.eth.ethSign({ address: this.address, message }) as Promise<string>;\n\n signTransaction = async ({\n to,\n value,\n gasLimit,\n nonce,\n data,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n }: TransactionRequest) => {\n if (!to) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing to address\" });\n if (!gasLimit) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasLimit\" });\n if (!data) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing data\" });\n\n const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);\n if (isEIP1559 && !maxFeePerGas)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxFeePerGas\" });\n if (isEIP1559 && !maxPriorityFeePerGas)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxPriorityFeePerGas\" });\n if (!(isEIP1559 || gasPrice)) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasPrice\" });\n\n const { toHexString } = await import(\"@tcswap/toolboxes/evm\");\n\n const nonceValue = nonce\n ? BigInt(nonce)\n : BigInt(await this.provider.getTransactionCount(await this.getAddress(), \"pending\"));\n\n const input = {\n addressNList: [2147483692, 2147483708, 2147483648, 0, 0],\n chainId: toHexString(BigInt(ChainToChainId[this.chain])),\n data,\n from: this.address,\n gas: toHexString(BigInt(gasLimit)),\n nonce: toHexString(nonceValue),\n to: to.toString(),\n value: toHexString(BigInt(value || 0)),\n ...(isEIP1559 && {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || \"0\")),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || \"0\")),\n }),\n ...(!isEIP1559 && {\n // Fixed syntax error and structure here\n gasPrice: toHexString(BigInt(gasPrice?.toString() || \"0\")),\n }),\n };\n const responseSign = await this.sdk.eth.ethSignTransaction(input);\n return responseSign.serialized;\n };\n\n sendTransaction = async (tx: TransactionRequest): Promise<any> => {\n if (!this.provider) throw new USwapError(\"wallet_keepkey_no_provider\");\n\n const signedTxHex = await this.signTransaction(tx);\n\n return await this.provider.broadcastTransaction(signedTxHex);\n };\n\n connect = (provider: Provider) =>\n new KeepKeySigner({ chain: this.chain, derivationPath: this.derivationPath, provider, sdk: this.sdk });\n}\n",
8
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n MAYAConfig,\n USwapError,\n} from \"@tcswap/helpers\";\nimport type { ThorchainDepositParams } from \"@tcswap/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function mayachainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { createStargateClient, getCosmosToolbox } = await import(\"@tcswap/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.Maya);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.MAYA}/0`;\n\n const { address: fromAddress } = (await sdk.address.mayachainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { getDenomWithChain } = await import(\"@tcswap/toolboxes/cosmos\");\n\n const account = await toolbox.getAccount(sender);\n if (!account) throw new USwapError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n const amount = assetValue.getBaseValue(\"string\");\n\n const isTransfer = recipient && recipient !== \"\";\n\n // TODO check if we can move to toolbox created msg\n const msg = isTransfer\n ? {\n type: \"mayachain/MsgSend\",\n value: {\n amount: [{ amount, denom: assetValue.symbol.toLowerCase() }],\n from_address: sender,\n to_address: recipient,\n },\n }\n : {\n type: \"mayachain/MsgDeposit\",\n value: { coins: [{ amount, asset: getDenomWithChain(assetValue) }], memo, signer: sender },\n };\n\n const signDoc = makeSignDoc(\n [msg],\n { amount: [], gas: \"500000000\" },\n MAYAConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const sdkMethod = isTransfer ? sdk.mayachain.mayachainSignAminoTransfer : sdk.mayachain.mayachainSignAminoDeposit;\n\n // @ts-expect-error TC\n const signedTx = await sdkMethod({ signDoc, signerAddress: sender });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
9
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk, TypesThorchainSignDocDeposit, TypesThorchainSignDocTransfer } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n THORConfig,\n USwapError,\n} from \"@tcswap/helpers\";\nimport type { ThorchainDepositParams } from \"@tcswap/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function thorchainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } = await import(\n \"@tcswap/toolboxes/cosmos\"\n );\n\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.THOR}/0`;\n\n const { address: fromAddress } = (await sdk.address.thorchainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const account = await toolbox.getAccount(sender);\n if (!account) throw new USwapError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n\n const isTransfer = recipient && recipient !== \"\";\n const msg = buildAminoMsg({ assetValue, memo, recipient, sender });\n\n const signDoc = makeSignDoc(\n [msg],\n getDefaultChainFee(Chain.THORChain),\n THORConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const signedTx = isTransfer\n ? await sdk.thorchain.thorchainSignAminoTransfer({\n signDoc: signDoc as TypesThorchainSignDocTransfer,\n signerAddress: sender,\n })\n : await sdk.thorchain.thorchainSignAminoDeposit({\n signDoc: signDoc as TypesThorchainSignDocDeposit,\n signerAddress: sender,\n });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n // const signMessage = async (message: string) => {\n // const stargateClient = await createStargateClient(RPCUrl.THORChain);\n // // return signedTx;\n // };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
10
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n USwapError,\n type UTXOChain,\n} from \"@tcswap/helpers\";\nimport type { UTXOToolboxes } from \"@tcswap/toolboxes/utxo\";\nimport type { Psbt } from \"bitcoinjs-lib\";\nimport { bip32ToAddressNList, ChainToKeepKeyName } from \"../coins\";\n\ninterface KeepKeyInputObject {\n addressNList: number[];\n scriptType: string;\n amount: string;\n vout: number;\n txid: string;\n hex: string;\n}\n\nexport async function utxoWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, typeof Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}): Promise<\n UTXOToolboxes[UTXOChain] & {\n address: string;\n signTransaction: (psbt: Psbt, inputs: KeepKeyInputObject[], memo?: string) => Promise<string>;\n }\n> {\n const { getUtxoToolbox } = await import(\"@tcswap/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain as typeof Chain.Bitcoin)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n address_n: bip32ToAddressNList(derivationPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n };\n\n const walletAddress: string = (await sdk.address.utxoGetAddress(addressInfo)).address;\n\n const signTransaction = async (psbt: Psbt, inputs: KeepKeyInputObject[], memo = \"\") => {\n const outputs = psbt.txOutputs\n .map((output) => {\n const { value, address, change } = output as {\n address: string;\n script: Buffer;\n value: number;\n change?: boolean;\n };\n\n const outputAddress =\n // @ts-expect-error - stripToCashAddress is not defined in the UTXO toolbox just only on BCH\n chain === Chain.BitcoinCash ? toolbox.stripToCashAddress(address) : address;\n\n if (change || address === walletAddress) {\n return {\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n };\n }\n\n if (outputAddress) {\n return { address: outputAddress, addressType: \"spend\", amount: value };\n }\n\n return null;\n })\n .filter(Boolean);\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0);\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n opReturnData: memo,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => {\n if (!walletAddress)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"From address must be provided\" });\n if (!recipient)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Recipient address must be provided\" });\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { psbt, inputs: rawInputs } = await createTxMethod({\n ...rest,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputs = rawInputs.map(({ value, index, hash, txHex }) => ({\n //@TODO don't hardcode master, lookup on blockbook what input this is for and what path that address is!\n addressNList: addressInfo.address_n,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: index,\n }));\n\n const txHex = await signTransaction(psbt, inputs, memo);\n return toolbox.broadcastTx(txHex);\n };\n\n return { ...toolbox, address: walletAddress, signTransaction, transfer };\n}\n"
11
+ ],
12
+ "mappings": "uFAI2B,IAA3B,kCACA,6BAYA,iCCRO,IAPP,6BAWA,eAAsB,CAAmB,EACvC,MACA,kBAIe,CACf,IAAQ,6BAA4B,mBAAkB,wBAAuB,wBAAyB,KACpG,oCAEI,EAAuB,EAAiB,yBAAuB,CAAc,EAAI,GAAG,iBAAe,UAEjG,QAAS,GAAiB,MAAM,EAAI,QAAQ,iBAAiB,CACnE,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAEK,EAAU,MAAM,EAAiB,QAAM,MAAM,EAEnD,GAAI,EAA2B,OAAO,GACpC,EAA2B,OAAO,GAAG,OAAS,OAAO,MAAM,EAAsB,aAAW,QAAS,GAAG,CAAC,EAmC3G,MAAO,IAAK,EAAS,QAAS,EAAa,SA/B1B,OAAS,aAAY,YAAW,UAAkC,CACjF,IAAM,EAAS,EAAW,aAAa,QAAQ,EACzC,EAAc,MAAM,EAAQ,WAAW,CAAW,EAElD,EAAkB,MAAM,EAAI,OAAO,gBAAgB,CACvD,QAAS,CACP,eAAgB,GAAa,cAAc,SAAS,GAAK,GACzD,SAAU,aAAW,QACrB,IAAK,EACL,KAAM,GAAQ,GACd,KAAM,CACJ,CACE,KAAM,qBACN,MAAO,CAAE,OAAQ,CAAC,CAAE,SAAQ,MAAO,OAAQ,CAAC,EAAG,aAAc,EAAa,WAAY,CAAU,CAClG,CACF,EACA,SAAU,GAAa,SAAS,SAAS,GAAK,EAChD,EACA,cAAe,CACjB,CAAC,EAEK,EAAe,KAAK,EAAgB,UAAU,EAC9C,EAAa,IAAI,WAAW,EAAa,MAAM,EAAE,IAAI,CAAC,EAAG,IAAM,EAAa,WAAW,CAAC,CAAC,EAEzF,EAAS,MAAM,YAAU,QAAM,MAAM,EAI3C,OAFiB,MADF,MAAM,EAAqB,CAAM,GAClB,YAAY,CAAU,GAEpC,gBAGkC,ECvD/C,IAPP,6BASA,oBAWO,MAAM,UAAsB,gBAAe,CACxC,IACA,MACA,eACA,QACC,SAET,WAAW,EAAG,MAAK,QAAO,iBAAgB,YAAoC,CAC5E,MAAM,EACN,KAAK,IAAM,EACX,KAAK,MAAQ,EACb,KAAK,eAAiB,GAAkB,wBAAsB,IAC9D,KAAK,QAAU,GACf,KAAK,SAAW,EAGlB,aAAa,EAAoB,CAC/B,MAAM,IAAI,aAAW,sCAAuC,CAAE,OAAQ,eAAgB,CAAC,EAGzF,WAAa,SAAY,CACvB,GAAI,KAAK,QAAS,OAAO,KAAK,QAC9B,IAAQ,WAAY,MAAM,KAAK,IAAI,QAAQ,mBAAmB,CAC5D,UAAW,EAAoB,yBAAuB,KAAK,cAAc,CAAC,CAC5E,CAAC,EAGD,OADA,KAAK,QAAU,EACR,GAGT,YAAc,CAAC,IAAoB,KAAK,IAAI,IAAI,QAAQ,CAAE,QAAS,KAAK,QAAS,SAAQ,CAAC,EAE1F,gBAAkB,OAChB,KACA,QACA,WACA,QACA,OACA,eACA,uBACA,cACwB,CACxB,GAAI,CAAC,EAAI,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,oBAAqB,CAAC,EAC/F,GAAI,CAAC,EAAU,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,kBAAmB,CAAC,EACnG,GAAI,CAAC,EAAM,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,cAAe,CAAC,EAE3F,IAAM,EAAY,CAAC,GAAG,GAAgB,IAAyB,CAAC,GAChE,GAAI,GAAa,CAAC,EAChB,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,sBAAuB,CAAC,EAC1F,GAAI,GAAa,CAAC,EAChB,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,8BAA+B,CAAC,EAClG,GAAI,EAAE,GAAa,GAAW,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,kBAAmB,CAAC,EAElH,IAAQ,eAAgB,KAAa,iCAE/B,EAAa,EACf,OAAO,CAAK,EACZ,OAAO,MAAM,KAAK,SAAS,oBAAoB,MAAM,KAAK,WAAW,EAAG,SAAS,CAAC,EAEhF,EAAQ,CACZ,aAAc,CAAC,WAAY,WAAY,WAAY,EAAG,CAAC,EACvD,QAAS,EAAY,OAAO,iBAAe,KAAK,MAAM,CAAC,EACvD,OACA,KAAM,KAAK,QACX,IAAK,EAAY,OAAO,CAAQ,CAAC,EACjC,MAAO,EAAY,CAAU,EAC7B,GAAI,EAAG,SAAS,EAChB,MAAO,EAAY,OAAO,GAAS,CAAC,CAAC,KACjC,GAAa,CACf,aAAc,EAAY,OAAO,GAAc,SAAS,GAAK,GAAG,CAAC,EACjE,qBAAsB,EAAY,OAAO,GAAsB,SAAS,GAAK,GAAG,CAAC,CACnF,KACI,CAAC,GAAa,CAEhB,SAAU,EAAY,OAAO,GAAU,SAAS,GAAK,GAAG,CAAC,CAC3D,CACF,EAEA,OADqB,MAAM,KAAK,IAAI,IAAI,mBAAmB,CAAK,GAC5C,YAGtB,gBAAkB,MAAO,IAAyC,CAChE,GAAI,CAAC,KAAK,SAAU,MAAM,IAAI,aAAW,4BAA4B,EAErE,IAAM,EAAc,MAAM,KAAK,gBAAgB,CAAE,EAEjD,OAAO,MAAM,KAAK,SAAS,qBAAqB,CAAW,GAG7D,QAAU,CAAC,IACT,IAAI,EAAc,CAAE,MAAO,KAAK,MAAO,eAAgB,KAAK,eAAgB,WAAU,IAAK,KAAK,GAAI,CAAC,CACzG,CCrGO,IAVP,6BAiBA,eAAsB,CAAsB,EAC1C,MACA,kBAIe,CACf,IAAQ,uBAAsB,oBAAqB,KAAa,oCAE1D,EAAU,MAAM,EAAiB,QAAM,IAAI,EAC3C,EAAuB,EAAiB,yBAAuB,CAAc,EAAI,GAAG,iBAAe,UAEjG,QAAS,GAAiB,MAAM,EAAI,QAAQ,oBAAoB,CACtE,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAEK,EAAkB,OAAS,aAAY,YAAW,SAAQ,UAAkC,CAChG,IAAM,EAAgB,KAAa,yBAC7B,EAAc,EAAc,aAAe,EAAc,SAAS,aAChE,qBAAsB,KAAa,oCAErC,EAAU,MAAM,EAAQ,WAAW,CAAM,EAC/C,GAAI,CAAC,EAAS,MAAM,IAAI,aAAW,kCAAkC,EACrE,IAAQ,gBAAe,WAAW,GAAM,EAClC,EAAS,EAAW,aAAa,QAAQ,EAEzC,EAAa,GAAa,IAAc,GAGxC,EAAM,EACR,CACE,KAAM,oBACN,MAAO,CACL,OAAQ,CAAC,CAAE,SAAQ,MAAO,EAAW,OAAO,YAAY,CAAE,CAAC,EAC3D,aAAc,EACd,WAAY,CACd,CACF,EACA,CACE,KAAM,uBACN,MAAO,CAAE,MAAO,CAAC,CAAE,SAAQ,MAAO,EAAkB,CAAU,CAAE,CAAC,EAAG,OAAM,OAAQ,CAAO,CAC3F,EAEE,EAAU,EACd,CAAC,CAAG,EACJ,CAAE,OAAQ,CAAC,EAAG,IAAK,WAAY,EAC/B,aAAW,QACX,EACA,GAAe,SAAS,EACxB,CACF,EAKM,EAAW,MAHC,EAAa,EAAI,UAAU,2BAA6B,EAAI,UAAU,2BAGvD,CAAE,UAAS,cAAe,CAAO,CAAC,EAC7D,EAAe,KAAK,EAAS,UAAU,EAC7C,OAAO,IAAI,WAAW,EAAa,MAAM,EAAE,IAAI,CAAC,EAAG,IAAM,EAAa,WAAW,CAAC,CAAC,GAqBrF,MAAO,IAAK,EAAS,QAAS,EAAa,QAT3B,OAAS,aAAY,UAAmC,CACtE,IAAM,EAAS,MAAM,YAAU,QAAM,IAAI,EACnC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,OAAQ,CAAY,CAAC,GACjF,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,GAG2C,SAlBnC,OAAS,aAAY,YAAW,UAAkC,CACjF,IAAM,EAAS,MAAM,YAAU,QAAM,IAAI,EACnC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,YAAW,OAAQ,CAAY,CAAC,GAC5F,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,EAYoD,ECrFxD,IAVP,6BAiBA,eAAsB,CAAsB,EAC1C,MACA,kBAIe,CACf,IAAM,EAAgB,KAAa,yBAC7B,EAAc,EAAc,aAAe,EAAc,SAAS,aAChE,gBAAe,qBAAoB,uBAAsB,oBAAqB,KACpF,oCAGI,EAAU,MAAM,EAAiB,QAAM,SAAS,EAChD,EAAuB,EAAiB,yBAAuB,CAAc,EAAI,GAAG,iBAAe,UAEjG,QAAS,GAAiB,MAAM,EAAI,QAAQ,oBAAoB,CACtE,UAAW,EAAoB,CAAoB,CACrD,CAAC,EAEK,EAAkB,OAAS,aAAY,YAAW,SAAQ,UAAkC,CAChG,IAAM,EAAU,MAAM,EAAQ,WAAW,CAAM,EAC/C,GAAI,CAAC,EAAS,MAAM,IAAI,aAAW,kCAAkC,EACrE,IAAQ,gBAAe,WAAW,GAAM,EAElC,EAAa,GAAa,IAAc,GACxC,EAAM,EAAc,CAAE,aAAY,OAAM,YAAW,QAAO,CAAC,EAE3D,EAAU,EACd,CAAC,CAAG,EACJ,EAAmB,QAAM,SAAS,EAClC,aAAW,QACX,EACA,GAAe,SAAS,EACxB,CACF,EAEM,EAAW,EACb,MAAM,EAAI,UAAU,2BAA2B,CAC7C,QAAS,EACT,cAAe,CACjB,CAAC,EACD,MAAM,EAAI,UAAU,0BAA0B,CAC5C,QAAS,EACT,cAAe,CACjB,CAAC,EACC,EAAe,KAAK,EAAS,UAAU,EAC7C,OAAO,IAAI,WAAW,EAAa,MAAM,EAAE,IAAI,CAAC,EAAG,IAAM,EAAa,WAAW,CAAC,CAAC,GA0BrF,MAAO,IAAK,EAAS,QAAS,EAAa,QAd3B,OAAS,aAAY,UAAmC,CACtE,IAAM,EAAS,MAAM,YAAU,QAAM,SAAS,EACxC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,OAAQ,CAAY,CAAC,GACjF,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,GAQ2C,SAvBnC,OAAS,aAAY,YAAW,UAAkC,CACjF,IAAM,EAAS,MAAM,YAAU,QAAM,SAAS,EACxC,EAAiB,MAAM,EAAqB,CAAM,EAClD,EAAoB,MAAM,EAAgB,CAAE,aAAY,OAAM,YAAW,OAAQ,CAAY,CAAC,GAC5F,mBAAoB,MAAM,EAAe,YAAY,CAAiB,EAE9E,OAAO,EAiBoD,ECjFxD,IATP,6BAuBA,eAAsB,CAAiB,EACrC,MACA,QACA,kBAUA,CACA,IAAQ,kBAAmB,KAAa,kCAElC,EAAU,MAAM,EAAe,CAAK,EACpC,EAAa,CAAC,QAAM,QAAS,QAAM,QAAQ,EAAE,SAAS,CAA6B,EACpF,SACA,QAEC,EAAuB,EAAiB,yBAAuB,CAAc,EAAI,GAAG,iBAAe,OAEnG,EAAc,CAClB,UAAW,EAAoB,CAAoB,EACnD,KAAM,EAAmB,GACzB,YAAa,CACf,EAEM,GAAyB,MAAM,EAAI,QAAQ,eAAe,CAAW,GAAG,QAExE,EAAkB,MAAO,EAAY,EAA8B,EAAO,KAAO,CACrF,IAAM,EAAU,EAAK,UAClB,IAAI,CAAC,IAAW,CACf,IAAQ,QAAO,UAAS,UAAW,EAO7B,EAEJ,IAAU,QAAM,YAAc,EAAQ,mBAAmB,CAAO,EAAI,EAEtE,GAAI,GAAU,IAAY,EACxB,MAAO,CACL,aAAc,EAAY,UAC1B,YAAa,SACb,OAAQ,EACR,SAAU,GACV,YACF,EAGF,GAAI,EACF,MAAO,CAAE,QAAS,EAAe,YAAa,QAAS,OAAQ,CAAM,EAGvE,OAAO,KACR,EACA,OAAO,OAAO,EAEX,EAAqC,CAAC,IAAe,CACzD,OAAO,EAAI,OAAO,CAAC,IAAS,IAAS,MAAQ,OAAO,IAAS,UAAY,OAAO,KAAK,CAAI,EAAE,OAAS,CAAC,GAUvG,OAPqB,MAAM,EAAI,KAAK,oBAAoB,CACtD,KAAM,EAAmB,GACzB,SACA,aAAc,EACd,QAAS,EAAmC,CAAO,CACrD,CAAC,GAEmB,cAAc,SAAS,GAqC7C,MAAO,IAAK,EAAS,QAAS,EAAe,kBAAiB,SAlC7C,OAAS,YAAW,eAAc,UAAS,UAAS,KAAkC,CACrG,GAAI,CAAC,EACH,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,+BAAgC,CAAC,EACnG,GAAI,CAAC,EACH,MAAM,IAAI,aAAW,gCAAiC,CAAE,OAAQ,oCAAqC,CAAC,EAExG,IAAM,EACJ,IAAU,QAAM,YACX,EAAiC,QACjC,EAAiC,mBAEhC,OAAM,OAAQ,GAAc,MAAM,EAAe,IACpD,EACH,QAAS,IAAY,MAAM,EAAQ,YAAY,GAAG,GAAgB,YAAU,MAC5E,WAAY,GACZ,OACA,YACA,OAAQ,CACV,CAAC,EAEK,EAAS,EAAU,IAAI,EAAG,QAAO,QAAO,OAAM,YAAa,CAE/D,aAAc,EAAY,UAC1B,OAAQ,EAAM,SAAS,EACvB,IAAK,GAAS,GACd,aACA,KAAM,EACN,KAAM,CACR,EAAE,EAEI,EAAQ,MAAM,EAAgB,EAAM,EAAQ,CAAI,EACtD,OAAO,EAAQ,YAAY,CAAK,EAGqC,ELnHlE,IAAM,EAAgB,eAAa,CACxC,QAAS,EAAG,WAAU,kBAAiB,gBACrC,cAA6B,CAAC,EAAiB,EAAwD,CACrG,IAAM,EAAiB,wBAAsB,CAAE,SAAQ,kBAAiB,YAAW,CAAC,EAC9E,EAAc,cAAY,IAAI,cAAc,EAAE,QACpD,GAAI,CAAC,EAAa,MAAU,MAAM,0BAA0B,EAE5D,IAAM,EAAgB,cAAY,IAAI,SAAS,EAAE,SAAW,OAE5D,MAAM,EAAe,EAGrB,IAAM,EAAgB,CAAE,OAAQ,EAAe,aAAY,EACrD,EAAa,MAAM,aAAW,OAAO,CAAa,EAGxD,GAAI,EAAc,QAAU,EAAc,SAAW,EACnD,cAAY,UAAU,UAAW,EAAc,MAAM,EAevD,OAZA,MAAM,QAAQ,IACZ,EAAe,IAAI,MAAO,IAAU,CAClC,IAAM,EAAgB,MAAM,EAAiB,CAC3C,QACA,eAAgB,IAAoB,IAAU,wBAAsB,GACpE,IAAK,CACP,CAAC,EACK,EAAW,MAAM,EAAc,WAAW,GAAM,GAEtD,EAAS,IAAK,EAAe,UAAS,QAAO,WAAY,eAAa,OAAQ,CAAC,EAChF,CACH,EACO,IAEX,KAAM,iBACN,gBAAiB,CACf,QAAM,SACN,QAAM,UACN,QAAM,KACN,QAAM,kBACN,QAAM,QACN,QAAM,YACN,QAAM,OACN,QAAM,SACN,QAAM,KACN,QAAM,SACN,QAAM,SACN,QAAM,MACN,QAAM,OACN,QAAM,SACN,QAAM,QACN,QAAM,UACN,QAAM,KACN,QAAM,MACR,EACA,WAAY,eAAa,OAC3B,CAAC,EAEY,EAA2B,2BAAyB,CAAa,EAE9E,eAAe,CAAgB,EAC7B,MACA,QACA,kBAKC,CACD,IAAQ,cAAa,iBAAkB,KAAa,iCAEpD,OAAQ,QACD,QAAM,uBACN,QAAM,cACN,QAAM,cACN,QAAM,aACN,QAAM,eACN,QAAM,UACN,QAAM,cACN,QAAM,WACN,QAAM,OAAQ,CACjB,IAAM,EAAW,MAAM,EAAY,CAAK,EAClC,EAAS,IAAI,EAAc,CAAE,QAAO,iBAAgB,WAAU,KAAI,CAAC,EAGzE,OAFgB,MAAM,EAAc,EAAO,CAAE,WAAU,QAAO,CAAC,CAGjE,MACK,QAAM,OACT,OAAO,EAAoB,CAAE,iBAAgB,KAAI,CAAC,OAE/C,QAAM,UACT,OAAO,EAAuB,CAAE,iBAAgB,KAAI,CAAC,OAElD,QAAM,KACT,OAAO,EAAuB,CAAE,iBAAgB,KAAI,CAAC,OAElD,QAAM,aACN,QAAM,iBACN,QAAM,UACN,QAAM,cACN,QAAM,SACT,OAAO,EAAkB,CAAE,QAAO,iBAAgB,KAAI,CAAC,OAEpD,QAAM,OAAQ,CACjB,IAAQ,uBAAwB,KAAa,gCAC7C,OAAO,EAAoB,CAAE,iBAAgB,KAAI,CAAC,CACpD,SAEE,MAAM,IAAI,aAAW,qCAAsC,CAAE,OAAM,CAAC,GAM1E,eAAe,CAAc,CAAC,EAAW,EAAG,CAC1C,GAAI,GAAY,EACd,MAAM,2FAA2F,EAInG,GAAI,CAFgB,MAAM,EAAyB,EAGjD,OAAO,SAAS,OAAO,kBAAkB,EACzC,MAAM,IAAI,QAAQ,CAAC,IAAY,WAAW,EAAS,KAAK,CAAC,EACzD,MAAM,EAAe,EAAW,CAAC,EAIrC,eAAe,CAAwB,CAAC,EAAO,0CAA2C,CACxF,GAAI,CAEF,OADiB,MAAM,MAAM,CAAI,GACjB,SAAW,IAC3B,KAAM,CACN,MAAO",
13
+ "debugId": "AD24B048AA0F1BA964756E2164756E21",
14
+ "names": []
15
+ }
@@ -0,0 +1,4 @@
1
+ import{a as u,b}from"../chunk-1w9rn6fj.js";import{c as F,d as U}from"../chunk-zzfbcc7e.js";import{KeepKeySdk as Nz}from"@keepkey/keepkey-sdk";import{Chain as J,filterSupportedChains as Iz,NetworkDerivationPath as Kz,USwapConfig as P,USwapError as Dz,WalletOption as s}from"@tcswap/helpers";import{createWallet as Hz,getWalletSupportedChains as Oz}from"@tcswap/wallet-core";import{Chain as g,DerivationPath as i,derivationPathToString as a,GAIAConfig as l,getRPCUrl as e}from"@tcswap/helpers";async function m({sdk:z,derivationPath:Q}){let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:D,getFeeRateFromSwapKit:Y,createStargateClient:q}=await import("@tcswap/toolboxes/cosmos"),_=Q?a(Q):`${i.GAIA}/0`,{address:$}=await z.address.cosmosGetAddress({address_n:b(_)}),j=await D(g.Cosmos);if(X.amount[0])X.amount[0].amount=String(await Y(l.chainId,500));return{...j,address:$,transfer:async({assetValue:N,recipient:Z,memo:W})=>{let H=N.getBaseValue("string"),B=await j.getAccount($),L=await z.cosmos.cosmosSignAmino({signDoc:{account_number:B?.accountNumber.toString()??"",chain_id:l.chainId,fee:X,memo:W||"",msgs:[{type:"cosmos-sdk/MsgSend",value:{amount:[{amount:H,denom:"uatom"}],from_address:$,to_address:Z}}],sequence:B?.sequence.toString()??""},signerAddress:$}),I=atob(L.serialized),K=new Uint8Array(I.length).map((V,w)=>I.charCodeAt(w)),G=await e(g.Cosmos);return(await(await q(G)).broadcastTx(K)).transactionHash}}}import{ChainToChainId as zz,derivationPathToString as Jz,NetworkDerivationPath as Qz,USwapError as E}from"@tcswap/helpers";import{AbstractSigner as Xz}from"ethers";class T extends Xz{sdk;chain;derivationPath;address;provider;constructor({sdk:z,chain:Q,derivationPath:X,provider:D}){super();this.sdk=z,this.chain=Q,this.derivationPath=X||Qz.ETH,this.address="",this.provider=D}signTypedData(){throw new E("wallet_keepkey_method_not_supported",{method:"signTypedData"})}getAddress=async()=>{if(this.address)return this.address;let{address:z}=await this.sdk.address.ethereumGetAddress({address_n:b(Jz(this.derivationPath))});return this.address=z,z};signMessage=(z)=>this.sdk.eth.ethSign({address:this.address,message:z});signTransaction=async({to:z,value:Q,gasLimit:X,nonce:D,data:Y,maxFeePerGas:q,maxPriorityFeePerGas:_,gasPrice:$})=>{if(!z)throw new E("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new E("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!Y)throw new E("wallet_keepkey_invalid_params",{reason:"Missing data"});let j=!!((q||_)&&!$);if(j&&!q)throw new E("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(j&&!_)throw new E("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(j||$))throw new E("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:R}=await import("@tcswap/toolboxes/evm"),N=D?BigInt(D):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),Z={addressNList:[2147483692,2147483708,2147483648,0,0],chainId:R(BigInt(zz[this.chain])),data:Y,from:this.address,gas:R(BigInt(X)),nonce:R(N),to:z.toString(),value:R(BigInt(Q||0)),...j&&{maxFeePerGas:R(BigInt(q?.toString()||"0")),maxPriorityFeePerGas:R(BigInt(_?.toString()||"0"))},...!j&&{gasPrice:R(BigInt($?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(Z)).serialized};sendTransaction=async(z)=>{if(!this.provider)throw new E("wallet_keepkey_no_provider");let Q=await this.signTransaction(z);return await this.provider.broadcastTransaction(Q)};connect=(z)=>new T({chain:this.chain,derivationPath:this.derivationPath,provider:z,sdk:this.sdk})}import{Chain as v,DerivationPath as Zz,derivationPathToString as $z,getRPCUrl as p,MAYAConfig as Yz,USwapError as qz}from"@tcswap/helpers";async function h({sdk:z,derivationPath:Q}){let{createStargateClient:X,getCosmosToolbox:D}=await import("@tcswap/toolboxes/cosmos"),Y=await D(v.Maya),q=Q?$z(Q):`${Zz.MAYA}/0`,{address:_}=await z.address.mayachainGetAddress({address_n:b(q)}),$=async({assetValue:N,recipient:Z,sender:W,memo:H})=>{let B=await import("@cosmjs/amino"),L=B.makeSignDoc??B.default?.makeSignDoc,{getDenomWithChain:I}=await import("@tcswap/toolboxes/cosmos"),K=await Y.getAccount(W);if(!K)throw new qz("wallet_keepkey_account_not_found");let{accountNumber:G,sequence:O=0}=K,M=N.getBaseValue("string"),V=Z&&Z!=="",w=V?{type:"mayachain/MsgSend",value:{amount:[{amount:M,denom:N.symbol.toLowerCase()}],from_address:W,to_address:Z}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:M,asset:I(N)}],memo:H,signer:W}},f=L([w],{amount:[],gas:"500000000"},Yz.chainId,H,G?.toString(),O),A=await(V?z.mayachain.mayachainSignAminoTransfer:z.mayachain.mayachainSignAminoDeposit)({signDoc:f,signerAddress:W}),k=atob(A.serialized);return new Uint8Array(k.length).map((C,t)=>k.charCodeAt(t))};return{...Y,address:_,deposit:async({assetValue:N,memo:Z})=>{let W=await p(v.Maya),H=await X(W),B=await $({assetValue:N,memo:Z,sender:_}),{transactionHash:L}=await H.broadcastTx(B);return L},transfer:async({assetValue:N,recipient:Z,memo:W})=>{let H=await p(v.Maya),B=await X(H),L=await $({assetValue:N,memo:W,recipient:Z,sender:_}),{transactionHash:I}=await B.broadcastTx(L);return I}}}import{Chain as S,DerivationPath as jz,derivationPathToString as Bz,getRPCUrl as c,THORConfig as Rz,USwapError as Wz}from"@tcswap/helpers";async function d({sdk:z,derivationPath:Q}){let X=await import("@cosmjs/amino"),D=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:Y,getDefaultChainFee:q,createStargateClient:_,getCosmosToolbox:$}=await import("@tcswap/toolboxes/cosmos"),j=await $(S.THORChain),R=Q?Bz(Q):`${jz.THOR}/0`,{address:N}=await z.address.thorchainGetAddress({address_n:b(R)}),Z=async({assetValue:B,recipient:L,sender:I,memo:K})=>{let G=await j.getAccount(I);if(!G)throw new Wz("wallet_keepkey_account_not_found");let{accountNumber:O,sequence:M=0}=G,V=L&&L!=="",w=Y({assetValue:B,memo:K,recipient:L,sender:I}),f=D([w],q(S.THORChain),Rz.chainId,K,O?.toString(),M),y=V?await z.thorchain.thorchainSignAminoTransfer({signDoc:f,signerAddress:I}):await z.thorchain.thorchainSignAminoDeposit({signDoc:f,signerAddress:I}),A=atob(y.serialized);return new Uint8Array(A.length).map((k,C)=>A.charCodeAt(C))};return{...j,address:N,deposit:async({assetValue:B,memo:L})=>{let I=await c(S.THORChain),K=await _(I),G=await Z({assetValue:B,memo:L,sender:N}),{transactionHash:O}=await K.broadcastTx(G);return O},transfer:async({assetValue:B,recipient:L,memo:I})=>{let K=await c(S.THORChain),G=await _(K),O=await Z({assetValue:B,memo:I,recipient:L,sender:N}),{transactionHash:M}=await G.broadcastTx(O);return M}}}import{Chain as x,DerivationPath as Lz,derivationPathToString as Gz,FeeOption as _z,USwapError as o}from"@tcswap/helpers";async function r({sdk:z,chain:Q,derivationPath:X}){let{getUtxoToolbox:D}=await import("@tcswap/toolboxes/utxo"),Y=await D(Q),q=[x.Bitcoin,x.Litecoin].includes(Q)?"p2wpkh":"p2pkh",_=X?Gz(X):`${Lz[Q]}/0`,$={address_n:b(_),coin:u[Q],script_type:q},j=(await z.address.utxoGetAddress($)).address,R=async(Z,W,H="")=>{let B=Z.txOutputs.map((K)=>{let{value:G,address:O,change:M}=K,V=Q===x.BitcoinCash?Y.stripToCashAddress(O):O;if(M||O===j)return{addressNList:$.address_n,addressType:"change",amount:G,isChange:!0,scriptType:q};if(V)return{address:V,addressType:"spend",amount:G};return null}).filter(Boolean),L=(K)=>{return K.filter((G)=>G!==null&&typeof G==="object"&&Object.keys(G).length>0)};return(await z.utxo.utxoSignTransaction({coin:u[Q],inputs:W,opReturnData:H,outputs:L(B)})).serializedTx?.toString()};return{...Y,address:j,signTransaction:R,transfer:async({recipient:Z,feeOptionKey:W,feeRate:H,memo:B,...L})=>{if(!j)throw new o("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Z)throw new o("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let I=Q===x.BitcoinCash?Y.buildTx:Y.createTransaction,{psbt:K,inputs:G}=await I({...L,feeRate:H||(await Y.getFeeRates())[W||_z.Fast],fetchTxHex:!0,memo:B,recipient:Z,sender:j}),O=G.map(({value:V,index:w,hash:f,txHex:y})=>({addressNList:$.address_n,amount:V.toString(),hex:y||"",scriptType:q,txid:f,vout:w})),M=await R(K,O,B);return Y.broadcastTx(M)}}}var Mz=Hz({connect:({addChain:z,supportedChains:Q,walletType:X})=>async function(Y,q){let _=Iz({chains:Y,supportedChains:Q,walletType:X}),$=P.get("integrations").keepKey;if(!$)throw Error("KeepKey config not found");let j=P.get("apiKeys").keepKey||"1234";await n();let R={apiKey:j,pairingInfo:$},N=await Nz.create(R);if(R.apiKey&&R.apiKey!==j)P.setApiKey("keepKey",R.apiKey);return await Promise.all(_.map(async(Z)=>{let W=await Vz({chain:Z,derivationPath:q?.[Z]||Kz[Z],sdk:N}),H=await W.getAddress()||"";z({...W,address:H,chain:Z,walletType:s.KEEPKEY})})),!0},name:"connectKeepkey",supportedChains:[J.Arbitrum,J.Avalanche,J.Base,J.BinanceSmartChain,J.Bitcoin,J.BitcoinCash,J.Cosmos,J.Dogecoin,J.Dash,J.Ethereum,J.Litecoin,J.Monad,J.Ripple,J.Optimism,J.Polygon,J.THORChain,J.Maya,J.XLayer],walletType:s.KEEPKEY}),sz=Oz(Mz);async function Vz({sdk:z,chain:Q,derivationPath:X}){let{getProvider:D,getEvmToolbox:Y}=await import("@tcswap/toolboxes/evm");switch(Q){case J.BinanceSmartChain:case J.Arbitrum:case J.Optimism:case J.Polygon:case J.Avalanche:case J.Base:case J.Ethereum:case J.Monad:case J.XLayer:{let q=await D(Q),_=new T({chain:Q,derivationPath:X,provider:q,sdk:z});return await Y(Q,{provider:q,signer:_})}case J.Cosmos:return m({derivationPath:X,sdk:z});case J.THORChain:return d({derivationPath:X,sdk:z});case J.Maya:return h({derivationPath:X,sdk:z});case J.Bitcoin:case J.BitcoinCash:case J.Dash:case J.Dogecoin:case J.Litecoin:return r({chain:Q,derivationPath:X,sdk:z});case J.Ripple:{let{rippleWalletMethods:q}=await import("../chunk-eng8tyvd.js");return q({derivationPath:X,sdk:z})}default:throw new Dz("wallet_keepkey_chain_not_supported",{chain:Q})}}async function n(z=0){if(z>=3)alert("KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started");if(!await Fz())window.location.assign("keepkey://launch"),await new Promise((X)=>setTimeout(X,30000)),await n(z+1)}async function Fz(z="http://localhost:1646/spec/swagger.json"){try{return(await fetch(z)).status===200}catch{return!1}}export{Mz as keepkeyWallet,sz as KEEPKEY_SUPPORTED_CHAINS};
2
+
3
+ //# debugId=3DDA3940447F089164756E2164756E21
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,15 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/keepkey/index.ts", "../src/keepkey/chains/cosmos.ts", "../src/keepkey/chains/evm.ts", "../src/keepkey/chains/mayachain.ts", "../src/keepkey/chains/thorchain.ts", "../src/keepkey/chains/utxo.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n type DerivationPathArray,\n filterSupportedChains,\n NetworkDerivationPath,\n USwapConfig,\n USwapError,\n WalletOption,\n} from \"@tcswap/helpers\";\n\nexport type { PairingInfo } from \"@keepkey/keepkey-sdk\";\n\nimport { createWallet, getWalletSupportedChains } from \"@tcswap/wallet-core\";\nimport { cosmosWalletMethods } from \"./chains/cosmos\";\nimport { KeepKeySigner } from \"./chains/evm\";\nimport { mayachainWalletMethods } from \"./chains/mayachain\";\nimport { thorchainWalletMethods } from \"./chains/thorchain\";\nimport { utxoWalletMethods } from \"./chains/utxo\";\n\nexport const keepkeyWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeepkey(chains: Chain[], derivationPathMap?: Record<Chain, DerivationPathArray>) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const pairingInfo = USwapConfig.get(\"integrations\").keepKey;\n if (!pairingInfo) throw new Error(\"KeepKey config not found\");\n\n const initialApiKey = USwapConfig.get(\"apiKeys\").keepKey || \"1234\";\n\n await checkAndLaunch();\n\n // Conform to the expected { apiKey, pairingInfo } structure\n const keepkeyConfig = { apiKey: initialApiKey, pairingInfo };\n const keepKeySdk = await KeepKeySdk.create(keepkeyConfig);\n\n // Persist the new API key via USwapConfig after pairing\n if (keepkeyConfig.apiKey && keepkeyConfig.apiKey !== initialApiKey) {\n USwapConfig.setApiKey(\"keepKey\", keepkeyConfig.apiKey);\n }\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const walletMethods = await getWalletMethods({\n chain,\n derivationPath: derivationPathMap?.[chain] || NetworkDerivationPath[chain],\n sdk: keepKeySdk,\n });\n const address = (await walletMethods.getAddress()) || \"\";\n\n addChain({ ...walletMethods, address, chain, walletType: WalletOption.KEEPKEY });\n }),\n );\n return true;\n },\n name: \"connectKeepkey\",\n supportedChains: [\n Chain.Arbitrum,\n Chain.Avalanche,\n Chain.Base,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dogecoin,\n Chain.Dash,\n Chain.Ethereum,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Ripple,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n Chain.Maya,\n Chain.XLayer,\n ],\n walletType: WalletOption.KEEPKEY,\n});\n\nexport const KEEPKEY_SUPPORTED_CHAINS = getWalletSupportedChains(keepkeyWallet);\n\nasync function getWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n}) {\n const { getProvider, getEvmToolbox } = await import(\"@tcswap/toolboxes/evm\");\n\n switch (chain) {\n case Chain.BinanceSmartChain:\n case Chain.Arbitrum:\n case Chain.Optimism:\n case Chain.Polygon:\n case Chain.Avalanche:\n case Chain.Base:\n case Chain.Ethereum:\n case Chain.Monad:\n case Chain.XLayer: {\n const provider = await getProvider(chain);\n const signer = new KeepKeySigner({ chain, derivationPath, provider, sdk });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n case Chain.Cosmos: {\n return cosmosWalletMethods({ derivationPath, sdk });\n }\n case Chain.THORChain: {\n return thorchainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Maya: {\n return mayachainWalletMethods({ derivationPath, sdk });\n }\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n return utxoWalletMethods({ chain, derivationPath, sdk });\n }\n case Chain.Ripple: {\n const { rippleWalletMethods } = await import(\"./chains/ripple\");\n return rippleWalletMethods({ derivationPath, sdk });\n }\n default:\n throw new USwapError(\"wallet_keepkey_chain_not_supported\", { chain });\n }\n}\n\n// kk-sdk docs: https://keepkey.com/blog/building_on_the_keepkey_sdk\n// test spec: if offline, launch keepkey-bridge\nasync function checkAndLaunch(attempts = 0) {\n if (attempts >= 3) {\n alert(\"KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started\");\n }\n const isAvailable = await checkKeepkeyAvailability();\n\n if (!isAvailable) {\n window.location.assign(\"keepkey://launch\");\n await new Promise((resolve) => setTimeout(resolve, 30000));\n await checkAndLaunch(attempts + 1);\n }\n}\n\nasync function checkKeepkeyAvailability(spec = \"http://localhost:1646/spec/swagger.json\") {\n try {\n const response = await fetch(spec);\n return response.status === 200;\n } catch {\n return false;\n }\n}\n",
6
+ "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport type { GenericTransferParams } from \"@tcswap/helpers\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n GAIAConfig,\n getRPCUrl,\n} from \"@tcswap/helpers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport async function cosmosWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { DEFAULT_COSMOS_FEE_MAINNET, getCosmosToolbox, getFeeRateFromSwapKit, createStargateClient } = await import(\n \"@tcswap/toolboxes/cosmos\"\n );\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.GAIA}/0`;\n\n const { address: fromAddress } = (await sdk.address.cosmosGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const toolbox = await getCosmosToolbox(Chain.Cosmos);\n\n if (DEFAULT_COSMOS_FEE_MAINNET.amount[0]) {\n DEFAULT_COSMOS_FEE_MAINNET.amount[0].amount = String(await getFeeRateFromSwapKit(GAIAConfig.chainId, 500));\n }\n\n // TODO support other cosmos assets\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const amount = assetValue.getBaseValue(\"string\");\n const accountInfo = await toolbox.getAccount(fromAddress);\n\n const keepKeySignedTx = await sdk.cosmos.cosmosSignAmino({\n signDoc: {\n account_number: accountInfo?.accountNumber.toString() ?? \"\",\n chain_id: GAIAConfig.chainId,\n fee: DEFAULT_COSMOS_FEE_MAINNET,\n memo: memo || \"\",\n msgs: [\n {\n type: \"cosmos-sdk/MsgSend\",\n value: { amount: [{ amount, denom: \"uatom\" }], from_address: fromAddress, to_address: recipient },\n },\n ],\n sequence: accountInfo?.sequence.toString() ?? \"\",\n },\n signerAddress: fromAddress,\n });\n\n const decodedBytes = atob(keepKeySignedTx.serialized);\n const uint8Array = new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n\n const rpcUrl = await getRPCUrl(Chain.Cosmos);\n const client = await createStargateClient(rpcUrl);\n const response = await client.broadcastTx(uint8Array);\n\n return response.transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, transfer };\n}\n",
7
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n USwapError,\n} from \"@tcswap/helpers\";\nimport type { JsonRpcProvider, Provider, TransactionRequest } from \"ethers\";\nimport { AbstractSigner } from \"ethers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ninterface KeepKeyEVMSignerParams {\n sdk: KeepKeySdk;\n chain: Chain;\n derivationPath?: DerivationPathArray;\n provider: Provider | JsonRpcProvider;\n}\n\nexport class KeepKeySigner extends AbstractSigner {\n private sdk: KeepKeySdk;\n private chain: Chain;\n private derivationPath: DerivationPathArray;\n private address: string;\n readonly provider: Provider | JsonRpcProvider;\n\n constructor({ sdk, chain, derivationPath, provider }: KeepKeyEVMSignerParams) {\n super();\n this.sdk = sdk;\n this.chain = chain;\n this.derivationPath = derivationPath || NetworkDerivationPath.ETH;\n this.address = \"\";\n this.provider = provider;\n }\n\n signTypedData(): Promise<string> {\n throw new USwapError(\"wallet_keepkey_method_not_supported\", { method: \"signTypedData\" });\n }\n\n getAddress = async () => {\n if (this.address) return this.address;\n const { address } = await this.sdk.address.ethereumGetAddress({\n address_n: bip32ToAddressNList(derivationPathToString(this.derivationPath)),\n });\n\n this.address = address;\n return address;\n };\n\n signMessage = (message: string) => this.sdk.eth.ethSign({ address: this.address, message }) as Promise<string>;\n\n signTransaction = async ({\n to,\n value,\n gasLimit,\n nonce,\n data,\n maxFeePerGas,\n maxPriorityFeePerGas,\n gasPrice,\n }: TransactionRequest) => {\n if (!to) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing to address\" });\n if (!gasLimit) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasLimit\" });\n if (!data) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing data\" });\n\n const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);\n if (isEIP1559 && !maxFeePerGas)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxFeePerGas\" });\n if (isEIP1559 && !maxPriorityFeePerGas)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxPriorityFeePerGas\" });\n if (!(isEIP1559 || gasPrice)) throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasPrice\" });\n\n const { toHexString } = await import(\"@tcswap/toolboxes/evm\");\n\n const nonceValue = nonce\n ? BigInt(nonce)\n : BigInt(await this.provider.getTransactionCount(await this.getAddress(), \"pending\"));\n\n const input = {\n addressNList: [2147483692, 2147483708, 2147483648, 0, 0],\n chainId: toHexString(BigInt(ChainToChainId[this.chain])),\n data,\n from: this.address,\n gas: toHexString(BigInt(gasLimit)),\n nonce: toHexString(nonceValue),\n to: to.toString(),\n value: toHexString(BigInt(value || 0)),\n ...(isEIP1559 && {\n maxFeePerGas: toHexString(BigInt(maxFeePerGas?.toString() || \"0\")),\n maxPriorityFeePerGas: toHexString(BigInt(maxPriorityFeePerGas?.toString() || \"0\")),\n }),\n ...(!isEIP1559 && {\n // Fixed syntax error and structure here\n gasPrice: toHexString(BigInt(gasPrice?.toString() || \"0\")),\n }),\n };\n const responseSign = await this.sdk.eth.ethSignTransaction(input);\n return responseSign.serialized;\n };\n\n sendTransaction = async (tx: TransactionRequest): Promise<any> => {\n if (!this.provider) throw new USwapError(\"wallet_keepkey_no_provider\");\n\n const signedTxHex = await this.signTransaction(tx);\n\n return await this.provider.broadcastTransaction(signedTxHex);\n };\n\n connect = (provider: Provider) =>\n new KeepKeySigner({ chain: this.chain, derivationPath: this.derivationPath, provider, sdk: this.sdk });\n}\n",
8
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n MAYAConfig,\n USwapError,\n} from \"@tcswap/helpers\";\nimport type { ThorchainDepositParams } from \"@tcswap/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function mayachainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const { createStargateClient, getCosmosToolbox } = await import(\"@tcswap/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.Maya);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.MAYA}/0`;\n\n const { address: fromAddress } = (await sdk.address.mayachainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { getDenomWithChain } = await import(\"@tcswap/toolboxes/cosmos\");\n\n const account = await toolbox.getAccount(sender);\n if (!account) throw new USwapError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n const amount = assetValue.getBaseValue(\"string\");\n\n const isTransfer = recipient && recipient !== \"\";\n\n // TODO check if we can move to toolbox created msg\n const msg = isTransfer\n ? {\n type: \"mayachain/MsgSend\",\n value: {\n amount: [{ amount, denom: assetValue.symbol.toLowerCase() }],\n from_address: sender,\n to_address: recipient,\n },\n }\n : {\n type: \"mayachain/MsgDeposit\",\n value: { coins: [{ amount, asset: getDenomWithChain(assetValue) }], memo, signer: sender },\n };\n\n const signDoc = makeSignDoc(\n [msg],\n { amount: [], gas: \"500000000\" },\n MAYAConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const sdkMethod = isTransfer ? sdk.mayachain.mayachainSignAminoTransfer : sdk.mayachain.mayachainSignAminoDeposit;\n\n // @ts-expect-error TC\n const signedTx = await sdkMethod({ signDoc, signerAddress: sender });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.Maya);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
9
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk, TypesThorchainSignDocDeposit, TypesThorchainSignDocTransfer } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n type GenericTransferParams,\n getRPCUrl,\n THORConfig,\n USwapError,\n} from \"@tcswap/helpers\";\nimport type { ThorchainDepositParams } from \"@tcswap/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = { assetValue: AssetValue; recipient?: string; sender: string; memo: string | undefined };\n\nexport async function thorchainWalletMethods({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}): Promise<any> {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } = await import(\n \"@tcswap/toolboxes/cosmos\"\n );\n\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath.THOR}/0`;\n\n const { address: fromAddress } = (await sdk.address.thorchainGetAddress({\n address_n: bip32ToAddressNList(derivationPathString),\n })) as { address: string };\n\n const signTransaction = async ({ assetValue, recipient, sender, memo }: SignTransactionParams) => {\n const account = await toolbox.getAccount(sender);\n if (!account) throw new USwapError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n\n const isTransfer = recipient && recipient !== \"\";\n const msg = buildAminoMsg({ assetValue, memo, recipient, sender });\n\n const signDoc = makeSignDoc(\n [msg],\n getDefaultChainFee(Chain.THORChain),\n THORConfig.chainId,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const signedTx = isTransfer\n ? await sdk.thorchain.thorchainSignAminoTransfer({\n signDoc: signDoc as TypesThorchainSignDocTransfer,\n signerAddress: sender,\n })\n : await sdk.thorchain.thorchainSignAminoDeposit({\n signDoc: signDoc as TypesThorchainSignDocDeposit,\n signerAddress: sender,\n });\n const decodedBytes = atob(signedTx.serialized);\n return new Uint8Array(decodedBytes.length).map((_, i) => decodedBytes.charCodeAt(i));\n };\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, recipient, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const rpcUrl = await getRPCUrl(Chain.THORChain);\n const stargateClient = await createStargateClient(rpcUrl);\n const signedTransaction = await signTransaction({ assetValue, memo, sender: fromAddress });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n // const signMessage = async (message: string) => {\n // const stargateClient = await createStargateClient(RPCUrl.THORChain);\n // // return signedTx;\n // };\n\n return { ...toolbox, address: fromAddress, deposit, transfer };\n}\n",
10
+ "/**\n * Modifications © 2025 Horizontal Systems.\n */\n\nimport type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n type GenericTransferParams,\n USwapError,\n type UTXOChain,\n} from \"@tcswap/helpers\";\nimport type { UTXOToolboxes } from \"@tcswap/toolboxes/utxo\";\nimport type { Psbt } from \"bitcoinjs-lib\";\nimport { bip32ToAddressNList, ChainToKeepKeyName } from \"../coins\";\n\ninterface KeepKeyInputObject {\n addressNList: number[];\n scriptType: string;\n amount: string;\n vout: number;\n txid: string;\n hex: string;\n}\n\nexport async function utxoWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, typeof Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}): Promise<\n UTXOToolboxes[UTXOChain] & {\n address: string;\n signTransaction: (psbt: Psbt, inputs: KeepKeyInputObject[], memo?: string) => Promise<string>;\n }\n> {\n const { getUtxoToolbox } = await import(\"@tcswap/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain as typeof Chain.Bitcoin)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath ? derivationPathToString(derivationPath) : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n address_n: bip32ToAddressNList(derivationPathString),\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n };\n\n const walletAddress: string = (await sdk.address.utxoGetAddress(addressInfo)).address;\n\n const signTransaction = async (psbt: Psbt, inputs: KeepKeyInputObject[], memo = \"\") => {\n const outputs = psbt.txOutputs\n .map((output) => {\n const { value, address, change } = output as {\n address: string;\n script: Buffer;\n value: number;\n change?: boolean;\n };\n\n const outputAddress =\n // @ts-expect-error - stripToCashAddress is not defined in the UTXO toolbox just only on BCH\n chain === Chain.BitcoinCash ? toolbox.stripToCashAddress(address) : address;\n\n if (change || address === walletAddress) {\n return {\n addressNList: addressInfo.address_n,\n addressType: \"change\",\n amount: value,\n isChange: true,\n scriptType,\n };\n }\n\n if (outputAddress) {\n return { address: outputAddress, addressType: \"spend\", amount: value };\n }\n\n return null;\n })\n .filter(Boolean);\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter((item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0);\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n opReturnData: memo,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({ recipient, feeOptionKey, feeRate, memo, ...rest }: GenericTransferParams) => {\n if (!walletAddress)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"From address must be provided\" });\n if (!recipient)\n throw new USwapError(\"wallet_keepkey_invalid_params\", { reason: \"Recipient address must be provided\" });\n\n const createTxMethod =\n chain === Chain.BitcoinCash\n ? (toolbox as UTXOToolboxes[\"BCH\"]).buildTx\n : (toolbox as UTXOToolboxes[\"BTC\"]).createTransaction;\n\n const { psbt, inputs: rawInputs } = await createTxMethod({\n ...rest,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n fetchTxHex: true,\n memo,\n recipient,\n sender: walletAddress,\n });\n\n const inputs = rawInputs.map(({ value, index, hash, txHex }) => ({\n //@TODO don't hardcode master, lookup on blockbook what input this is for and what path that address is!\n addressNList: addressInfo.address_n,\n amount: value.toString(),\n hex: txHex || \"\",\n scriptType,\n txid: hash,\n vout: index,\n }));\n\n const txHex = await signTransaction(psbt, inputs, memo);\n return toolbox.broadcastTx(txHex);\n };\n\n return { ...toolbox, address: walletAddress, signTransaction, transfer };\n}\n"
11
+ ],
12
+ "mappings": "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",
13
+ "debugId": "3DDA3940447F089164756E2164756E21",
14
+ "names": []
15
+ }