@swapkit/wallets 4.0.0-beta.53 → 4.0.0-beta.55

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 (284) hide show
  1. package/dist/{chunk-e674mh4n.js → chunk-mcrgqfr9.js} +3 -3
  2. package/dist/{chunk-e674mh4n.js.map → chunk-mcrgqfr9.js.map} +1 -1
  3. package/dist/{chunk-mvbb9fwb.js → chunk-sbf0f2p4.js} +2 -2
  4. package/dist/{chunk-p2ca0j1v.js → chunk-yqaz2d25.js} +3 -3
  5. package/dist/{chunk-p2ca0j1v.js.map → chunk-yqaz2d25.js.map} +1 -1
  6. package/dist/src/bitget/index.cjs +2 -2
  7. package/dist/src/bitget/index.cjs.map +3 -3
  8. package/dist/src/bitget/index.js +2 -2
  9. package/dist/src/bitget/index.js.map +3 -3
  10. package/dist/src/coinbase/index.cjs +2 -2
  11. package/dist/src/coinbase/index.cjs.map +3 -3
  12. package/dist/src/coinbase/index.js +2 -2
  13. package/dist/src/coinbase/index.js.map +3 -3
  14. package/dist/src/cosmostation/index.cjs +2 -2
  15. package/dist/src/cosmostation/index.cjs.map +3 -3
  16. package/dist/src/cosmostation/index.js +2 -2
  17. package/dist/src/cosmostation/index.js.map +3 -3
  18. package/dist/src/ctrl/index.cjs +2 -2
  19. package/dist/src/ctrl/index.cjs.map +3 -3
  20. package/dist/src/ctrl/index.js +2 -2
  21. package/dist/src/ctrl/index.js.map +3 -3
  22. package/dist/src/evm-extensions/index.cjs +2 -2
  23. package/dist/src/evm-extensions/index.cjs.map +3 -3
  24. package/dist/src/evm-extensions/index.js +2 -2
  25. package/dist/src/evm-extensions/index.js.map +3 -3
  26. package/dist/src/exodus/index.cjs +2 -2
  27. package/dist/src/exodus/index.cjs.map +3 -3
  28. package/dist/src/exodus/index.js +2 -2
  29. package/dist/src/exodus/index.js.map +3 -3
  30. package/dist/src/index.cjs +2 -2
  31. package/dist/src/index.cjs.map +5 -3
  32. package/dist/src/index.js +2 -2
  33. package/dist/src/index.js.map +5 -3
  34. package/dist/src/keepkey-bex/index.cjs +2 -2
  35. package/dist/src/keepkey-bex/index.cjs.map +3 -3
  36. package/dist/src/keepkey-bex/index.js +2 -2
  37. package/dist/src/keepkey-bex/index.js.map +3 -3
  38. package/dist/src/keepkey.cjs +4 -0
  39. package/dist/src/keepkey.cjs.map +10 -0
  40. package/dist/src/keepkey.js +4 -0
  41. package/dist/src/keepkey.js.map +10 -0
  42. package/dist/src/keplr/index.cjs +2 -2
  43. package/dist/src/keplr/index.cjs.map +3 -3
  44. package/dist/src/keplr/index.js +2 -2
  45. package/dist/src/keplr/index.js.map +3 -3
  46. package/dist/src/keystore.cjs +4 -0
  47. package/dist/src/keystore.cjs.map +10 -0
  48. package/dist/src/keystore.js +4 -0
  49. package/dist/src/keystore.js.map +10 -0
  50. package/dist/src/ledger.cjs +4 -0
  51. package/dist/src/ledger.cjs.map +10 -0
  52. package/dist/src/ledger.js +4 -0
  53. package/dist/src/ledger.js.map +10 -0
  54. package/dist/src/okx/index.cjs +2 -2
  55. package/dist/src/okx/index.cjs.map +4 -4
  56. package/dist/src/okx/index.js +2 -2
  57. package/dist/src/okx/index.js.map +4 -4
  58. package/dist/src/onekey/index.cjs +2 -2
  59. package/dist/src/onekey/index.cjs.map +3 -3
  60. package/dist/src/onekey/index.js +2 -2
  61. package/dist/src/onekey/index.js.map +3 -3
  62. package/dist/src/phantom/index.cjs +2 -2
  63. package/dist/src/phantom/index.cjs.map +3 -3
  64. package/dist/src/phantom/index.js +2 -2
  65. package/dist/src/phantom/index.js.map +3 -3
  66. package/dist/src/polkadotjs/index.cjs +2 -2
  67. package/dist/src/polkadotjs/index.cjs.map +3 -3
  68. package/dist/src/polkadotjs/index.js +2 -2
  69. package/dist/src/polkadotjs/index.js.map +3 -3
  70. package/dist/src/radix/index.cjs +2 -2
  71. package/dist/src/radix/index.cjs.map +3 -3
  72. package/dist/src/radix/index.js +2 -2
  73. package/dist/src/radix/index.js.map +3 -3
  74. package/dist/src/talisman/index.cjs +2 -2
  75. package/dist/src/talisman/index.cjs.map +3 -3
  76. package/dist/src/talisman/index.js +2 -2
  77. package/dist/src/talisman/index.js.map +3 -3
  78. package/dist/src/trezor.cjs +4 -0
  79. package/dist/src/trezor.cjs.map +10 -0
  80. package/dist/src/trezor.js +4 -0
  81. package/dist/src/trezor.js.map +10 -0
  82. package/dist/src/vultisig/index.cjs +2 -2
  83. package/dist/src/vultisig/index.cjs.map +3 -3
  84. package/dist/src/vultisig/index.js +2 -2
  85. package/dist/src/vultisig/index.js.map +3 -3
  86. package/dist/src/walletconnect/index.cjs +2 -2
  87. package/dist/src/walletconnect/index.cjs.map +3 -3
  88. package/dist/src/walletconnect/index.js +2 -2
  89. package/dist/src/walletconnect/index.js.map +3 -3
  90. package/dist/src/xaman/index.cjs +2 -2
  91. package/dist/src/xaman/index.cjs.map +5 -5
  92. package/dist/src/xaman/index.js +2 -2
  93. package/dist/src/xaman/index.js.map +5 -5
  94. package/dist/types/bitget/helpers.d.ts +330 -0
  95. package/dist/types/bitget/helpers.d.ts.map +1 -0
  96. package/dist/types/bitget/index.d.ts +11 -0
  97. package/dist/types/bitget/index.d.ts.map +1 -0
  98. package/dist/types/coinbase/index.d.ts +11 -0
  99. package/dist/types/coinbase/index.d.ts.map +1 -0
  100. package/dist/types/coinbase/signer.d.ts +91 -0
  101. package/dist/types/coinbase/signer.d.ts.map +1 -0
  102. package/dist/types/cosmostation/index.d.ts +21 -0
  103. package/dist/types/cosmostation/index.d.ts.map +1 -0
  104. package/dist/types/ctrl/index.d.ts +11 -0
  105. package/dist/types/ctrl/index.d.ts.map +1 -0
  106. package/dist/types/ctrl/walletHelpers.d.ts +24 -0
  107. package/dist/types/ctrl/walletHelpers.d.ts.map +1 -0
  108. package/dist/types/evm-extensions/index.d.ts +101 -0
  109. package/dist/types/evm-extensions/index.d.ts.map +1 -0
  110. package/{src/evm-extensions/types.ts → dist/types/evm-extensions/types.d.ts} +11 -13
  111. package/dist/types/evm-extensions/types.d.ts.map +1 -0
  112. package/dist/types/exodus/index.d.ts +14 -0
  113. package/dist/types/exodus/index.d.ts.map +1 -0
  114. package/dist/types/helpers/near.d.ts +57 -0
  115. package/dist/types/helpers/near.d.ts.map +1 -0
  116. package/dist/types/index.d.ts +4 -0
  117. package/dist/types/index.d.ts.map +1 -0
  118. package/dist/types/keepkey-bex/index.d.ts +11 -0
  119. package/dist/types/keepkey-bex/index.d.ts.map +1 -0
  120. package/dist/types/keepkey-bex/walletHelpers.d.ts +45 -0
  121. package/dist/types/keepkey-bex/walletHelpers.d.ts.map +1 -0
  122. package/dist/types/keepkey.d.ts +2 -0
  123. package/dist/types/keepkey.d.ts.map +1 -0
  124. package/dist/types/keplr/chainRegistry.d.ts +4 -0
  125. package/dist/types/keplr/chainRegistry.d.ts.map +1 -0
  126. package/dist/types/keplr/index.d.ts +11 -0
  127. package/dist/types/keplr/index.d.ts.map +1 -0
  128. package/dist/types/keystore.d.ts +2 -0
  129. package/dist/types/keystore.d.ts.map +1 -0
  130. package/dist/types/ledger.d.ts +2 -0
  131. package/dist/types/ledger.d.ts.map +1 -0
  132. package/dist/types/okx/helpers.d.ts +227 -0
  133. package/dist/types/okx/helpers.d.ts.map +1 -0
  134. package/dist/types/okx/index.d.ts +11 -0
  135. package/dist/types/okx/index.d.ts.map +1 -0
  136. package/dist/types/okx/types.d.ts +104 -0
  137. package/dist/types/okx/types.d.ts.map +1 -0
  138. package/dist/types/onekey/evmSigner.d.ts +29 -0
  139. package/dist/types/onekey/evmSigner.d.ts.map +1 -0
  140. package/dist/types/onekey/index.d.ts +11 -0
  141. package/dist/types/onekey/index.d.ts.map +1 -0
  142. package/dist/types/phantom/index.d.ts +12 -0
  143. package/dist/types/phantom/index.d.ts.map +1 -0
  144. package/dist/types/polkadotjs/index.d.ts +11 -0
  145. package/dist/types/polkadotjs/index.d.ts.map +1 -0
  146. package/dist/types/radix/index.d.ts +11 -0
  147. package/dist/types/radix/index.d.ts.map +1 -0
  148. package/dist/types/talisman/index.d.ts +11 -0
  149. package/dist/types/talisman/index.d.ts.map +1 -0
  150. package/dist/types/trezor.d.ts +2 -0
  151. package/dist/types/trezor.d.ts.map +1 -0
  152. package/dist/types/types.d.ts +246 -0
  153. package/dist/types/types.d.ts.map +1 -0
  154. package/dist/types/utils.d.ts +4 -0
  155. package/dist/types/utils.d.ts.map +1 -0
  156. package/dist/types/vultisig/index.d.ts +11 -0
  157. package/dist/types/vultisig/index.d.ts.map +1 -0
  158. package/dist/types/vultisig/walletHelpers.d.ts +34 -0
  159. package/dist/types/vultisig/walletHelpers.d.ts.map +1 -0
  160. package/dist/types/walletconnect/constants.d.ts +85 -0
  161. package/dist/types/walletconnect/constants.d.ts.map +1 -0
  162. package/dist/types/walletconnect/evmSigner.d.ts +25 -0
  163. package/dist/types/walletconnect/evmSigner.d.ts.map +1 -0
  164. package/dist/types/walletconnect/helpers.d.ts +4 -0
  165. package/dist/types/walletconnect/helpers.d.ts.map +1 -0
  166. package/dist/types/walletconnect/index.d.ts +22 -0
  167. package/dist/types/walletconnect/index.d.ts.map +1 -0
  168. package/dist/types/walletconnect/namespaces.d.ts +7 -0
  169. package/dist/types/walletconnect/namespaces.d.ts.map +1 -0
  170. package/dist/types/walletconnect/types.d.ts +7 -0
  171. package/dist/types/walletconnect/types.d.ts.map +1 -0
  172. package/dist/types/xaman/helpers.d.ts +54 -0
  173. package/dist/types/xaman/helpers.d.ts.map +1 -0
  174. package/dist/types/xaman/index.d.ts +14 -0
  175. package/dist/types/xaman/index.d.ts.map +1 -0
  176. package/dist/types/xaman/types.d.ts +24 -0
  177. package/dist/types/xaman/types.d.ts.map +1 -0
  178. package/dist/types/xaman/walletMethods.d.ts +16 -0
  179. package/dist/types/xaman/walletMethods.d.ts.map +1 -0
  180. package/package.json +44 -68
  181. package/dist/chunk-2aa1w78q.js +0 -4
  182. package/dist/chunk-2aa1w78q.js.map +0 -10
  183. package/dist/chunk-31bmhjxx.js +0 -4
  184. package/dist/chunk-31bmhjxx.js.map +0 -10
  185. package/dist/chunk-3etn0w20.js +0 -4
  186. package/dist/chunk-3etn0w20.js.map +0 -10
  187. package/dist/chunk-bk58smyr.js +0 -4
  188. package/dist/chunk-bk58smyr.js.map +0 -10
  189. package/dist/chunk-etm8zfkk.js +0 -4
  190. package/dist/chunk-etm8zfkk.js.map +0 -10
  191. package/dist/chunk-h7myvxxm.js +0 -5
  192. package/dist/chunk-h7myvxxm.js.map +0 -10
  193. package/dist/chunk-htvthkj1.js +0 -5
  194. package/dist/chunk-htvthkj1.js.map +0 -10
  195. package/dist/chunk-nfas79hz.js +0 -4
  196. package/dist/chunk-nfas79hz.js.map +0 -10
  197. package/dist/src/keepkey/index.cjs +0 -4
  198. package/dist/src/keepkey/index.cjs.map +0 -15
  199. package/dist/src/keepkey/index.js +0 -4
  200. package/dist/src/keepkey/index.js.map +0 -15
  201. package/dist/src/keystore/index.cjs +0 -4
  202. package/dist/src/keystore/index.cjs.map +0 -11
  203. package/dist/src/keystore/index.js +0 -4
  204. package/dist/src/keystore/index.js.map +0 -11
  205. package/dist/src/ledger/index.cjs +0 -5
  206. package/dist/src/ledger/index.cjs.map +0 -25
  207. package/dist/src/ledger/index.js +0 -5
  208. package/dist/src/ledger/index.js.map +0 -25
  209. package/dist/src/trezor/index.cjs +0 -4
  210. package/dist/src/trezor/index.cjs.map +0 -10
  211. package/dist/src/trezor/index.js +0 -4
  212. package/dist/src/trezor/index.js.map +0 -10
  213. package/src/bitget/helpers.ts +0 -167
  214. package/src/bitget/index.ts +0 -34
  215. package/src/coinbase/index.ts +0 -52
  216. package/src/coinbase/signer.ts +0 -83
  217. package/src/cosmostation/index.ts +0 -142
  218. package/src/ctrl/index.ts +0 -248
  219. package/src/ctrl/walletHelpers.ts +0 -297
  220. package/src/evm-extensions/index.ts +0 -134
  221. package/src/exodus/index.ts +0 -179
  222. package/src/helpers/near-browser-provider.d.ts +0 -286
  223. package/src/helpers/near.ts +0 -206
  224. package/src/index.ts +0 -2
  225. package/src/keepkey/chains/cosmos.ts +0 -78
  226. package/src/keepkey/chains/evm.ts +0 -125
  227. package/src/keepkey/chains/mayachain.ts +0 -123
  228. package/src/keepkey/chains/ripple.ts +0 -118
  229. package/src/keepkey/chains/thorchain.ts +0 -118
  230. package/src/keepkey/chains/utxo.ts +0 -147
  231. package/src/keepkey/coins.ts +0 -71
  232. package/src/keepkey/index.ts +0 -153
  233. package/src/keepkey-bex/index.ts +0 -162
  234. package/src/keepkey-bex/walletHelpers.ts +0 -255
  235. package/src/keplr/chainRegistry.ts +0 -211
  236. package/src/keplr/index.ts +0 -55
  237. package/src/keystore/helpers.ts +0 -102
  238. package/src/keystore/index.ts +0 -73
  239. package/src/ledger/clients/cosmos.ts +0 -102
  240. package/src/ledger/clients/evm.ts +0 -183
  241. package/src/ledger/clients/near.ts +0 -86
  242. package/src/ledger/clients/thorchain/common.ts +0 -117
  243. package/src/ledger/clients/thorchain/helpers.ts +0 -149
  244. package/src/ledger/clients/thorchain/index.ts +0 -94
  245. package/src/ledger/clients/thorchain/lib.ts +0 -300
  246. package/src/ledger/clients/thorchain/utils.ts +0 -76
  247. package/src/ledger/clients/tron.ts +0 -92
  248. package/src/ledger/clients/utxo.ts +0 -148
  249. package/src/ledger/clients/xrp.ts +0 -66
  250. package/src/ledger/cosmosTypes.ts +0 -101
  251. package/src/ledger/helpers/getLedgerAddress.ts +0 -67
  252. package/src/ledger/helpers/getLedgerClient.ts +0 -124
  253. package/src/ledger/helpers/getLedgerTransport.ts +0 -80
  254. package/src/ledger/helpers/index.ts +0 -3
  255. package/src/ledger/index.ts +0 -311
  256. package/src/ledger/interfaces/CosmosLedgerInterface.ts +0 -65
  257. package/src/ledger/types.ts +0 -45
  258. package/src/okx/helpers.ts +0 -181
  259. package/src/okx/index.ts +0 -43
  260. package/src/okx/types.ts +0 -117
  261. package/src/onekey/evmSigner.ts +0 -133
  262. package/src/onekey/index.ts +0 -213
  263. package/src/phantom/index.ts +0 -126
  264. package/src/polkadotjs/index.ts +0 -67
  265. package/src/radix/index.ts +0 -202
  266. package/src/talisman/index.ts +0 -130
  267. package/src/trezor/evmSigner.ts +0 -197
  268. package/src/trezor/index.ts +0 -260
  269. package/src/types.ts +0 -280
  270. package/src/utils.ts +0 -60
  271. package/src/vultisig/index.ts +0 -199
  272. package/src/vultisig/walletHelpers.ts +0 -359
  273. package/src/walletconnect/constants.ts +0 -104
  274. package/src/walletconnect/evmSigner.ts +0 -147
  275. package/src/walletconnect/helpers.ts +0 -77
  276. package/src/walletconnect/index.ts +0 -460
  277. package/src/walletconnect/namespaces.ts +0 -87
  278. package/src/walletconnect/types.ts +0 -6
  279. package/src/xaman/README.md +0 -66
  280. package/src/xaman/helpers.ts +0 -59
  281. package/src/xaman/index.ts +0 -79
  282. package/src/xaman/types.ts +0 -26
  283. package/src/xaman/walletMethods.ts +0 -126
  284. /package/dist/{chunk-mvbb9fwb.js.map → chunk-sbf0f2p4.js.map} +0 -0
@@ -1,15 +0,0 @@
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
- "import {\n Chain,\n type DerivationPathArray,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\n\nimport { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nexport type { PairingInfo } from \"@keepkey/keepkey-sdk\";\n\nimport { getWalletSupportedChains } from \"../utils\";\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 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.Ripple,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n Chain.Maya,\n ],\n walletType: WalletOption.KEEPKEY,\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeepkey(\n chains: Chain[],\n derivationPathMap?: Record<Chain, DerivationPathArray>,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const pairingInfo = SKConfig.get(\"integrations\").keepKey;\n if (!pairingInfo) throw new Error(\"KeepKey config not found\");\n\n const initialApiKey = SKConfig.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 SKConfig after pairing\n if (keepkeyConfig.apiKey && keepkeyConfig.apiKey !== initialApiKey) {\n SKConfig.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});\n\nexport const KEEPKEY_SUPPORTED_CHAINS = getWalletSupportedChains(keepkeyWallet);\n\nasync function getWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: { sdk: KeepKeySdk; chain: Chain; derivationPath?: DerivationPathArray }) {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/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 const provider = await getProvider(chain);\n const signer = new KeepKeySigner({ sdk, chain, derivationPath, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n case Chain.Cosmos: {\n return cosmosWalletMethods({ sdk, derivationPath });\n }\n case Chain.THORChain: {\n return thorchainWalletMethods({ sdk, derivationPath });\n }\n case Chain.Maya: {\n return mayachainWalletMethods({ sdk, derivationPath });\n }\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n return utxoWalletMethods({ sdk, chain, derivationPath });\n }\n case Chain.Ripple: {\n const { rippleWalletMethods } = await import(\"./chains/ripple\");\n return rippleWalletMethods({ sdk, derivationPath });\n }\n default:\n throw new SwapKitError(\"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(\n \"KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started\",\n );\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 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 (_error) {\n return false;\n }\n}\n",
6
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n ChainId,\n DerivationPath,\n type DerivationPathArray,\n SKConfig,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { GenericTransferParams } from \"@swapkit/helpers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport const cosmosWalletMethods = async ({\n sdk,\n derivationPath,\n}: { sdk: KeepKeySdk; derivationPath?: DerivationPathArray }) => {\n const {\n DEFAULT_COSMOS_FEE_MAINNET,\n getCosmosToolbox,\n getFeeRateFromSwapKit,\n createStargateClient,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${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(\n await getFeeRateFromSwapKit(ChainId.Cosmos, 500),\n );\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 signerAddress: fromAddress,\n signDoc: {\n fee: DEFAULT_COSMOS_FEE_MAINNET,\n memo: memo || \"\",\n sequence: accountInfo?.sequence.toString() ?? \"\",\n chain_id: ChainId.Cosmos,\n account_number: accountInfo?.accountNumber.toString() ?? \"\",\n msgs: [\n {\n value: {\n amount: [{ denom: \"uatom\", amount }],\n to_address: recipient,\n from_address: fromAddress,\n },\n type: \"cosmos-sdk/MsgSend\",\n },\n ],\n },\n });\n\n const decodedBytes = atob(keepKeySignedTx.serialized);\n const uint8Array = new Uint8Array(decodedBytes.length).map((_, i) =>\n decodedBytes.charCodeAt(i),\n );\n\n const client = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.Cosmos]);\n const response = await client.broadcastTx(uint8Array);\n\n return response.transactionHash;\n };\n\n return { ...toolbox, transfer, address: fromAddress };\n};\n",
7
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n NetworkDerivationPath,\n SwapKitError,\n derivationPathToString,\n} from \"@swapkit/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 SwapKitError(\"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) =>\n 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 // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\n }: TransactionRequest) => {\n if (!to)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing to address\" });\n if (!gasLimit)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasLimit\" });\n if (!data) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing data\" });\n\n const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);\n if (isEIP1559 && !maxFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxFeePerGas\" });\n if (isEIP1559 && !maxPriorityFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", {\n reason: \"Missing maxPriorityFeePerGas\",\n });\n if (!(isEIP1559 || gasPrice))\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasPrice\" });\n\n const { toHexString } = await import(\"@swapkit/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 gas: toHexString(BigInt(gasLimit)),\n addressNList: [2147483692, 2147483708, 2147483648, 0, 0],\n from: this.address,\n chainId: toHexString(BigInt(ChainToChainId[this.chain])),\n to: to.toString(),\n value: toHexString(BigInt(value || 0)),\n nonce: toHexString(nonceValue),\n data,\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 SwapKitError(\"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({\n sdk: this.sdk,\n chain: this.chain,\n derivationPath: this.derivationPath,\n provider,\n });\n}\n",
8
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n ChainId,\n DerivationPath,\n type DerivationPathArray,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = {\n assetValue: AssetValue;\n recipient?: string;\n sender: string;\n memo: string | undefined;\n};\n\nexport const mayachainWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n const { createStargateClient, getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.Maya);\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${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 ({\n assetValue,\n recipient,\n sender,\n memo,\n }: SignTransactionParams) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { getDenomWithChain } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"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: {\n coins: [{ amount, asset: getDenomWithChain(assetValue) }],\n memo,\n signer: sender,\n },\n };\n\n const signDoc = makeSignDoc(\n [msg],\n { gas: \"500000000\", amount: [] },\n ChainId.Maya,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const sdkMethod = isTransfer\n ? sdk.mayachain.mayachainSignAminoTransfer\n : 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 stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.Maya]);\n const signedTransaction = await signTransaction({\n assetValue,\n recipient,\n memo,\n sender: fromAddress,\n });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.Maya]);\n const signedTransaction = await signTransaction({\n assetValue,\n memo,\n sender: fromAddress,\n });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n return { ...toolbox, transfer, deposit, address: fromAddress };\n};\n",
9
- "import type {\n KeepKeySdk,\n TypesThorchainSignDocDeposit,\n TypesThorchainSignDocTransfer,\n} from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n ChainId,\n DerivationPath,\n type DerivationPathArray,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = {\n assetValue: AssetValue;\n recipient?: string;\n sender: string;\n memo: string | undefined;\n};\n\nexport const thorchainWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } =\n await import(\"@swapkit/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${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 ({\n assetValue,\n recipient,\n sender,\n memo,\n }: SignTransactionParams) => {\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n\n const isTransfer = recipient && recipient !== \"\";\n\n const msg = buildAminoMsg({ sender, recipient, assetValue, memo });\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n [msg],\n getDefaultChainFee(Chain.THORChain),\n 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 stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const signedTransaction = await signTransaction({\n assetValue,\n recipient,\n memo,\n sender: fromAddress,\n });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const signedTransaction = await signTransaction({\n assetValue,\n memo,\n sender: fromAddress,\n });\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, transfer, deposit, address: fromAddress };\n};\n",
10
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n FeeOption,\n type GenericTransferParams,\n SwapKitError,\n type UTXOChain,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { Psbt } from \"bitcoinjs-lib\";\n\nimport type { UTXOToolboxes } from \"@swapkit/toolboxes/utxo\";\nimport { ChainToKeepKeyName, bip32ToAddressNList } 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 const utxoWalletMethods = async ({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}) => {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n address_n: bip32ToAddressNList(derivationPathString),\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 isChange: true,\n addressType: \"change\",\n amount: value,\n scriptType,\n };\n }\n\n if (outputAddress) {\n return { address: outputAddress, amount: value, addressType: \"spend\" };\n }\n\n return null;\n })\n .filter(Boolean);\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter(\n (item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0,\n );\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n opReturnData: memo,\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({\n recipient,\n feeOptionKey,\n feeRate,\n memo,\n ...rest\n }: GenericTransferParams) => {\n if (!walletAddress)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", {\n reason: \"From address must be provided\",\n });\n if (!recipient)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", {\n reason: \"Recipient address must be provided\",\n });\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 memo,\n recipient,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n sender: walletAddress,\n fetchTxHex: true,\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, signTransaction, transfer, address: walletAddress };\n};\n"
11
- ],
12
- "mappings": "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",
13
- "debugId": "1F8D2B2F5A122D9E64756E2164756E21",
14
- "names": []
15
- }
@@ -1,4 +0,0 @@
1
- import{F as P,G as b}from"../../chunk-h7myvxxm.js";import{H as t}from"../../chunk-htvthkj1.js";import{J as V,K as F}from"../../chunk-p2ca0j1v.js";import{Chain as Q,NetworkDerivationPath as Nz,SKConfig as C,SwapKitError as Hz,WalletOption as s,createWallet as Oz,filterSupportedChains as Dz}from"@swapkit/helpers";import{KeepKeySdk as Mz}from"@keepkey/keepkey-sdk";import{Chain as g,ChainId as l,DerivationPath as i,SKConfig as e,derivationPathToString as zz}from"@swapkit/helpers";var p=async({sdk:z,derivationPath:J})=>{let{DEFAULT_COSMOS_FEE_MAINNET:X,getCosmosToolbox:O,getFeeRateFromSwapKit:$,createStargateClient:q}=await import("@swapkit/toolboxes/cosmos"),G=J?zz(J):`${i.GAIA}/0`,{address:Z}=await z.address.cosmosGetAddress({address_n:b(G)}),j=await O(g.Cosmos);if(X.amount[0])X.amount[0].amount=String(await $(l.Cosmos,500));return{...j,transfer:async({assetValue:W,recipient:Y,memo:B})=>{let D=W.getBaseValue("string"),U=await j.getAccount(Z),_=await z.cosmos.cosmosSignAmino({signerAddress:Z,signDoc:{fee:X,memo:B||"",sequence:U?.sequence.toString()??"",chain_id:l.Cosmos,account_number:U?.accountNumber.toString()??"",msgs:[{value:{amount:[{denom:"uatom",amount:D}],to_address:Y,from_address:Z},type:"cosmos-sdk/MsgSend"}]}}),H=atob(_.serialized),N=new Uint8Array(H.length).map((E,I)=>H.charCodeAt(I));return(await(await q(e.get("rpcUrls")[g.Cosmos])).broadcastTx(N)).transactionHash},address:Z}};import{ChainToChainId as Jz,NetworkDerivationPath as Qz,SwapKitError as w,derivationPathToString as Xz}from"@swapkit/helpers";import{AbstractSigner as Yz}from"ethers";class T extends Yz{sdk;chain;derivationPath;address;provider;constructor({sdk:z,chain:J,derivationPath:X,provider:O}){super();this.sdk=z,this.chain=J,this.derivationPath=X||Qz.ETH,this.address="",this.provider=O}signTypedData(){throw new w("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(Xz(this.derivationPath))});return this.address=z,z};signMessage=(z)=>this.sdk.eth.ethSign({address:this.address,message:z});signTransaction=async({to:z,value:J,gasLimit:X,nonce:O,data:$,maxFeePerGas:q,maxPriorityFeePerGas:G,gasPrice:Z})=>{if(!z)throw new w("wallet_keepkey_invalid_params",{reason:"Missing to address"});if(!X)throw new w("wallet_keepkey_invalid_params",{reason:"Missing gasLimit"});if(!$)throw new w("wallet_keepkey_invalid_params",{reason:"Missing data"});let j=!!((q||G)&&!Z);if(j&&!q)throw new w("wallet_keepkey_invalid_params",{reason:"Missing maxFeePerGas"});if(j&&!G)throw new w("wallet_keepkey_invalid_params",{reason:"Missing maxPriorityFeePerGas"});if(!(j||Z))throw new w("wallet_keepkey_invalid_params",{reason:"Missing gasPrice"});let{toHexString:R}=await import("@swapkit/toolboxes/evm"),W=O?BigInt(O):BigInt(await this.provider.getTransactionCount(await this.getAddress(),"pending")),Y={gas:R(BigInt(X)),addressNList:[2147483692,2147483708,2147483648,0,0],from:this.address,chainId:R(BigInt(Jz[this.chain])),to:z.toString(),value:R(BigInt(J||0)),nonce:R(W),data:$,...j&&{maxFeePerGas:R(BigInt(q?.toString()||"0")),maxPriorityFeePerGas:R(BigInt(G?.toString()||"0"))},...!j&&{gasPrice:R(BigInt(Z?.toString()||"0"))}};return(await this.sdk.eth.ethSignTransaction(Y)).serialized};sendTransaction=async(z)=>{if(!this.provider)throw new w("wallet_keepkey_no_provider");let J=await this.signTransaction(z);return await this.provider.broadcastTransaction(J)};connect=(z)=>new T({sdk:this.sdk,chain:this.chain,derivationPath:this.derivationPath,provider:z})}import{Chain as k,ChainId as Zz,DerivationPath as $z,SKConfig as m,SwapKitError as qz,derivationPathToString as jz}from"@swapkit/helpers";var c=async({sdk:z,derivationPath:J})=>{let{createStargateClient:X,getCosmosToolbox:O}=await import("@swapkit/toolboxes/cosmos"),$=await O(k.Maya),q=J?jz(J):`${$z.MAYA}/0`,{address:G}=await z.address.mayachainGetAddress({address_n:b(q)}),Z=async({assetValue:W,recipient:Y,sender:B,memo:D})=>{let U=await import("@cosmjs/amino"),_=U.makeSignDoc??U.default?.makeSignDoc,{getDenomWithChain:H}=await import("@swapkit/toolboxes/cosmos"),N=await $.getAccount(B);if(!N)throw new qz("wallet_keepkey_account_not_found");let{accountNumber:L,sequence:M=0}=N,E=W.getBaseValue("string"),I=Y&&Y!=="",K=I?{type:"mayachain/MsgSend",value:{amount:[{amount:E,denom:W.symbol.toLowerCase()}],from_address:B,to_address:Y}}:{type:"mayachain/MsgDeposit",value:{coins:[{amount:E,asset:H(W)}],memo:D,signer:B}},A=_([K],{gas:"500000000",amount:[]},Zz.Maya,D,L?.toString(),M),v=await(I?z.mayachain.mayachainSignAminoTransfer:z.mayachain.mayachainSignAminoDeposit)({signDoc:A,signerAddress:B}),y=atob(v.serialized);return new Uint8Array(y.length).map((a,u)=>y.charCodeAt(u))};return{...$,transfer:async({assetValue:W,recipient:Y,memo:B})=>{let D=await X(m.get("rpcUrls")[k.Maya]),U=await Z({assetValue:W,recipient:Y,memo:B,sender:G}),{transactionHash:_}=await D.broadcastTx(U);return _},deposit:async({assetValue:W,memo:Y})=>{let B=await X(m.get("rpcUrls")[k.Maya]),D=await Z({assetValue:W,memo:Y,sender:G}),{transactionHash:U}=await B.broadcastTx(D);return U},address:G}};import{Chain as S,ChainId as Uz,DerivationPath as Rz,SKConfig as h,SwapKitError as Bz,derivationPathToString as Gz}from"@swapkit/helpers";var d=async({sdk:z,derivationPath:J})=>{let X=await import("@cosmjs/amino"),O=X.makeSignDoc??X.default?.makeSignDoc,{buildAminoMsg:$,getDefaultChainFee:q,createStargateClient:G,getCosmosToolbox:Z}=await import("@swapkit/toolboxes/cosmos"),j=await Z(S.THORChain),R=J?Gz(J):`${Rz.THOR}/0`,{address:W}=await z.address.thorchainGetAddress({address_n:b(R)}),Y=async({assetValue:U,recipient:_,sender:H,memo:N})=>{let L=await j.getAccount(H);if(!L)throw new Bz("wallet_keepkey_account_not_found");let{accountNumber:M,sequence:E=0}=L,I=_&&_!=="",K=$({sender:H,recipient:_,assetValue:U,memo:N}),A=Uz.THORChain,f=O([K],q(S.THORChain),A,N,M?.toString(),E),v=I?await z.thorchain.thorchainSignAminoTransfer({signDoc:f,signerAddress:H}):await z.thorchain.thorchainSignAminoDeposit({signDoc:f,signerAddress:H}),y=atob(v.serialized);return new Uint8Array(y.length).map((a,u)=>y.charCodeAt(u))};return{...j,transfer:async({assetValue:U,recipient:_,memo:H})=>{let N=await G(h.get("rpcUrls")[S.THORChain]),L=await Y({assetValue:U,recipient:_,memo:H,sender:W}),{transactionHash:M}=await N.broadcastTx(L);return M},deposit:async({assetValue:U,memo:_})=>{let H=await G(h.get("rpcUrls")[S.THORChain]),N=await Y({assetValue:U,memo:_,sender:W}),{transactionHash:L}=await H.broadcastTx(N);return L},address:W}};import{Chain as x,DerivationPath as Wz,FeeOption as Lz,SwapKitError as o,derivationPathToString as _z}from"@swapkit/helpers";var r=async({sdk:z,chain:J,derivationPath:X})=>{let{getUtxoToolbox:O}=await import("@swapkit/toolboxes/utxo"),$=await O(J),q=[x.Bitcoin,x.Litecoin].includes(J)?"p2wpkh":"p2pkh",G=X?_z(X):`${Wz[J]}/0`,Z={coin:P[J],script_type:q,address_n:b(G)},j=(await z.address.utxoGetAddress(Z)).address,R=async(Y,B,D="")=>{let U=Y.txOutputs.map((N)=>{let{value:L,address:M,change:E}=N,I=J===x.BitcoinCash?$.stripToCashAddress(M):M;if(E||M===j)return{addressNList:Z.address_n,isChange:!0,addressType:"change",amount:L,scriptType:q};if(I)return{address:I,amount:L,addressType:"spend"};return null}).filter(Boolean),_=(N)=>{return N.filter((L)=>L!==null&&typeof L==="object"&&Object.keys(L).length>0)};return(await z.utxo.utxoSignTransaction({coin:P[J],inputs:B,outputs:_(U),opReturnData:D})).serializedTx?.toString()};return{...$,signTransaction:R,transfer:async({recipient:Y,feeOptionKey:B,feeRate:D,memo:U,..._})=>{if(!j)throw new o("wallet_keepkey_invalid_params",{reason:"From address must be provided"});if(!Y)throw new o("wallet_keepkey_invalid_params",{reason:"Recipient address must be provided"});let H=J===x.BitcoinCash?$.buildTx:$.createTransaction,{psbt:N,inputs:L}=await H({..._,memo:U,recipient:Y,feeRate:D||(await $.getFeeRates())[B||Lz.Fast],sender:j,fetchTxHex:!0}),M=L.map(({value:I,index:K,hash:A,txHex:f})=>({addressNList:Z.address_n,amount:I.toString(),hex:f||"",scriptType:q,txid:A,vout:K})),E=await R(N,M,U);return $.broadcastTx(E)},address:j}};var Iz=Oz({name:"connectKeepkey",supportedChains:[Q.Arbitrum,Q.Avalanche,Q.Base,Q.BinanceSmartChain,Q.Bitcoin,Q.BitcoinCash,Q.Cosmos,Q.Dogecoin,Q.Dash,Q.Ethereum,Q.Litecoin,Q.Ripple,Q.Optimism,Q.Polygon,Q.THORChain,Q.Maya],walletType:s.KEEPKEY,connect:({addChain:z,supportedChains:J,walletType:X})=>async function O($,q){let G=Dz({chains:$,supportedChains:J,walletType:X}),Z=C.get("integrations").keepKey;if(!Z)throw new Error("KeepKey config not found");let j=C.get("apiKeys").keepKey||"1234";await n();let R={apiKey:j,pairingInfo:Z},W=await Mz.create(R);if(R.apiKey&&R.apiKey!==j)C.setApiKey("keepKey",R.apiKey);return await Promise.all(G.map(async(Y)=>{let B=await Vz({chain:Y,derivationPath:q?.[Y]||Nz[Y],sdk:W}),D=await B.getAddress()||"";z({...B,address:D,chain:Y,walletType:s.KEEPKEY})})),!0}}),sz=t(Iz);async function Vz({sdk:z,chain:J,derivationPath:X}){let{getProvider:O,getEvmToolbox:$}=await import("@swapkit/toolboxes/evm");switch(J){case Q.BinanceSmartChain:case Q.Arbitrum:case Q.Optimism:case Q.Polygon:case Q.Avalanche:case Q.Base:case Q.Ethereum:{let q=await O(J),G=new T({sdk:z,chain:J,derivationPath:X,provider:q});return await $(J,{provider:q,signer:G})}case Q.Cosmos:return p({sdk:z,derivationPath:X});case Q.THORChain:return d({sdk:z,derivationPath:X});case Q.Maya:return c({sdk:z,derivationPath:X});case Q.Bitcoin:case Q.BitcoinCash:case Q.Dash:case Q.Dogecoin:case Q.Litecoin:return r({sdk:z,chain:J,derivationPath:X});case Q.Ripple:{let{rippleWalletMethods:q}=await import("../../chunk-nfas79hz.js");return q({sdk:z,derivationPath:X})}default:throw new Hz("wallet_keepkey_chain_not_supported",{chain:J})}}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)),n(z+1)}async function Fz(z="http://localhost:1646/spec/swagger.json"){try{return(await fetch(z)).status===200}catch(J){return!1}}export{Iz as keepkeyWallet,sz as KEEPKEY_SUPPORTED_CHAINS};
2
-
3
- //# debugId=C288C52A7A2CD5EE64756E2164756E21
4
- //# sourceMappingURL=index.js.map
@@ -1,15 +0,0 @@
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
- "import {\n Chain,\n type DerivationPathArray,\n NetworkDerivationPath,\n SKConfig,\n SwapKitError,\n WalletOption,\n createWallet,\n filterSupportedChains,\n} from \"@swapkit/helpers\";\n\nimport { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nexport type { PairingInfo } from \"@keepkey/keepkey-sdk\";\n\nimport { getWalletSupportedChains } from \"../utils\";\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 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.Ripple,\n Chain.Optimism,\n Chain.Polygon,\n Chain.THORChain,\n Chain.Maya,\n ],\n walletType: WalletOption.KEEPKEY,\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeepkey(\n chains: Chain[],\n derivationPathMap?: Record<Chain, DerivationPathArray>,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n const pairingInfo = SKConfig.get(\"integrations\").keepKey;\n if (!pairingInfo) throw new Error(\"KeepKey config not found\");\n\n const initialApiKey = SKConfig.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 SKConfig after pairing\n if (keepkeyConfig.apiKey && keepkeyConfig.apiKey !== initialApiKey) {\n SKConfig.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});\n\nexport const KEEPKEY_SUPPORTED_CHAINS = getWalletSupportedChains(keepkeyWallet);\n\nasync function getWalletMethods({\n sdk,\n chain,\n derivationPath,\n}: { sdk: KeepKeySdk; chain: Chain; derivationPath?: DerivationPathArray }) {\n const { getProvider, getEvmToolbox } = await import(\"@swapkit/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 const provider = await getProvider(chain);\n const signer = new KeepKeySigner({ sdk, chain, derivationPath, provider });\n const toolbox = await getEvmToolbox(chain, { provider, signer });\n\n return toolbox;\n }\n case Chain.Cosmos: {\n return cosmosWalletMethods({ sdk, derivationPath });\n }\n case Chain.THORChain: {\n return thorchainWalletMethods({ sdk, derivationPath });\n }\n case Chain.Maya: {\n return mayachainWalletMethods({ sdk, derivationPath });\n }\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin: {\n return utxoWalletMethods({ sdk, chain, derivationPath });\n }\n case Chain.Ripple: {\n const { rippleWalletMethods } = await import(\"./chains/ripple\");\n return rippleWalletMethods({ sdk, derivationPath });\n }\n default:\n throw new SwapKitError(\"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(\n \"KeepKey desktop is required for keepkey-sdk, please go to https://keepkey.com/get-started\",\n );\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 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 (_error) {\n return false;\n }\n}\n",
6
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n ChainId,\n DerivationPath,\n type DerivationPathArray,\n SKConfig,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { GenericTransferParams } from \"@swapkit/helpers\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\nexport const cosmosWalletMethods = async ({\n sdk,\n derivationPath,\n}: { sdk: KeepKeySdk; derivationPath?: DerivationPathArray }) => {\n const {\n DEFAULT_COSMOS_FEE_MAINNET,\n getCosmosToolbox,\n getFeeRateFromSwapKit,\n createStargateClient,\n } = await import(\"@swapkit/toolboxes/cosmos\");\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${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(\n await getFeeRateFromSwapKit(ChainId.Cosmos, 500),\n );\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 signerAddress: fromAddress,\n signDoc: {\n fee: DEFAULT_COSMOS_FEE_MAINNET,\n memo: memo || \"\",\n sequence: accountInfo?.sequence.toString() ?? \"\",\n chain_id: ChainId.Cosmos,\n account_number: accountInfo?.accountNumber.toString() ?? \"\",\n msgs: [\n {\n value: {\n amount: [{ denom: \"uatom\", amount }],\n to_address: recipient,\n from_address: fromAddress,\n },\n type: \"cosmos-sdk/MsgSend\",\n },\n ],\n },\n });\n\n const decodedBytes = atob(keepKeySignedTx.serialized);\n const uint8Array = new Uint8Array(decodedBytes.length).map((_, i) =>\n decodedBytes.charCodeAt(i),\n );\n\n const client = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.Cosmos]);\n const response = await client.broadcastTx(uint8Array);\n\n return response.transactionHash;\n };\n\n return { ...toolbox, transfer, address: fromAddress };\n};\n",
7
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type Chain,\n ChainToChainId,\n type DerivationPathArray,\n NetworkDerivationPath,\n SwapKitError,\n derivationPathToString,\n} from \"@swapkit/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 SwapKitError(\"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) =>\n 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 // biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>\n }: TransactionRequest) => {\n if (!to)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing to address\" });\n if (!gasLimit)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasLimit\" });\n if (!data) throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing data\" });\n\n const isEIP1559 = !!((maxFeePerGas || maxPriorityFeePerGas) && !gasPrice);\n if (isEIP1559 && !maxFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing maxFeePerGas\" });\n if (isEIP1559 && !maxPriorityFeePerGas)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", {\n reason: \"Missing maxPriorityFeePerGas\",\n });\n if (!(isEIP1559 || gasPrice))\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", { reason: \"Missing gasPrice\" });\n\n const { toHexString } = await import(\"@swapkit/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 gas: toHexString(BigInt(gasLimit)),\n addressNList: [2147483692, 2147483708, 2147483648, 0, 0],\n from: this.address,\n chainId: toHexString(BigInt(ChainToChainId[this.chain])),\n to: to.toString(),\n value: toHexString(BigInt(value || 0)),\n nonce: toHexString(nonceValue),\n data,\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 SwapKitError(\"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({\n sdk: this.sdk,\n chain: this.chain,\n derivationPath: this.derivationPath,\n provider,\n });\n}\n",
8
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n ChainId,\n DerivationPath,\n type DerivationPathArray,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = {\n assetValue: AssetValue;\n recipient?: string;\n sender: string;\n memo: string | undefined;\n};\n\nexport const mayachainWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n const { createStargateClient, getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.Maya);\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${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 ({\n assetValue,\n recipient,\n sender,\n memo,\n }: SignTransactionParams) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { getDenomWithChain } = await import(\"@swapkit/toolboxes/cosmos\");\n\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"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: {\n coins: [{ amount, asset: getDenomWithChain(assetValue) }],\n memo,\n signer: sender,\n },\n };\n\n const signDoc = makeSignDoc(\n [msg],\n { gas: \"500000000\", amount: [] },\n ChainId.Maya,\n memo,\n accountNumber?.toString(),\n sequence,\n );\n\n const sdkMethod = isTransfer\n ? sdk.mayachain.mayachainSignAminoTransfer\n : 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 stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.Maya]);\n const signedTransaction = await signTransaction({\n assetValue,\n recipient,\n memo,\n sender: fromAddress,\n });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.Maya]);\n const signedTransaction = await signTransaction({\n assetValue,\n memo,\n sender: fromAddress,\n });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n return { ...toolbox, transfer, deposit, address: fromAddress };\n};\n",
9
- "import type {\n KeepKeySdk,\n TypesThorchainSignDocDeposit,\n TypesThorchainSignDocTransfer,\n} from \"@keepkey/keepkey-sdk\";\nimport {\n type AssetValue,\n Chain,\n ChainId,\n DerivationPath,\n type DerivationPathArray,\n type GenericTransferParams,\n SKConfig,\n SwapKitError,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { ThorchainDepositParams } from \"@swapkit/toolboxes/cosmos\";\n\nimport { bip32ToAddressNList } from \"../coins\";\n\ntype SignTransactionParams = {\n assetValue: AssetValue;\n recipient?: string;\n sender: string;\n memo: string | undefined;\n};\n\nexport const thorchainWalletMethods = async ({\n sdk,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n derivationPath?: DerivationPathArray;\n}) => {\n const importedAmino = await import(\"@cosmjs/amino\");\n const makeSignDoc = importedAmino.makeSignDoc ?? importedAmino.default?.makeSignDoc;\n const { buildAminoMsg, getDefaultChainFee, createStargateClient, getCosmosToolbox } =\n await import(\"@swapkit/toolboxes/cosmos\");\n\n const toolbox = await getCosmosToolbox(Chain.THORChain);\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${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 ({\n assetValue,\n recipient,\n sender,\n memo,\n }: SignTransactionParams) => {\n const account = await toolbox.getAccount(sender);\n if (!account) throw new SwapKitError(\"wallet_keepkey_account_not_found\");\n const { accountNumber, sequence = 0 } = account;\n\n const isTransfer = recipient && recipient !== \"\";\n\n const msg = buildAminoMsg({ sender, recipient, assetValue, memo });\n\n const chainId = ChainId.THORChain;\n\n const signDoc = makeSignDoc(\n [msg],\n getDefaultChainFee(Chain.THORChain),\n 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 stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const signedTransaction = await signTransaction({\n assetValue,\n recipient,\n memo,\n sender: fromAddress,\n });\n const { transactionHash } = await stargateClient.broadcastTx(signedTransaction);\n\n return transactionHash;\n };\n\n const deposit = async ({ assetValue, memo }: ThorchainDepositParams) => {\n const stargateClient = await createStargateClient(SKConfig.get(\"rpcUrls\")[Chain.THORChain]);\n const signedTransaction = await signTransaction({\n assetValue,\n memo,\n sender: fromAddress,\n });\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, transfer, deposit, address: fromAddress };\n};\n",
10
- "import type { KeepKeySdk } from \"@keepkey/keepkey-sdk\";\nimport {\n Chain,\n DerivationPath,\n type DerivationPathArray,\n FeeOption,\n type GenericTransferParams,\n SwapKitError,\n type UTXOChain,\n derivationPathToString,\n} from \"@swapkit/helpers\";\nimport type { Psbt } from \"bitcoinjs-lib\";\n\nimport type { UTXOToolboxes } from \"@swapkit/toolboxes/utxo\";\nimport { ChainToKeepKeyName, bip32ToAddressNList } 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 const utxoWalletMethods = async ({\n sdk,\n chain,\n derivationPath,\n}: {\n sdk: KeepKeySdk;\n chain: Exclude<UTXOChain, Chain.Zcash>;\n derivationPath?: DerivationPathArray;\n}) => {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n // This might not work for BCH\n const toolbox = await getUtxoToolbox(chain);\n const scriptType = [Chain.Bitcoin, Chain.Litecoin].includes(chain)\n ? (\"p2wpkh\" as const)\n : (\"p2pkh\" as const);\n\n const derivationPathString = derivationPath\n ? derivationPathToString(derivationPath)\n : `${DerivationPath[chain]}/0`;\n\n const addressInfo = {\n coin: ChainToKeepKeyName[chain],\n script_type: scriptType,\n address_n: bip32ToAddressNList(derivationPathString),\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 isChange: true,\n addressType: \"change\",\n amount: value,\n scriptType,\n };\n }\n\n if (outputAddress) {\n return { address: outputAddress, amount: value, addressType: \"spend\" };\n }\n\n return null;\n })\n .filter(Boolean);\n\n const removeNullAndEmptyObjectsFromArray = (arr: any[]) => {\n return arr.filter(\n (item) => item !== null && typeof item === \"object\" && Object.keys(item).length > 0,\n );\n };\n\n const responseSign = await sdk.utxo.utxoSignTransaction({\n coin: ChainToKeepKeyName[chain],\n inputs,\n outputs: removeNullAndEmptyObjectsFromArray(outputs),\n opReturnData: memo,\n });\n\n return responseSign.serializedTx?.toString();\n };\n\n const transfer = async ({\n recipient,\n feeOptionKey,\n feeRate,\n memo,\n ...rest\n }: GenericTransferParams) => {\n if (!walletAddress)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", {\n reason: \"From address must be provided\",\n });\n if (!recipient)\n throw new SwapKitError(\"wallet_keepkey_invalid_params\", {\n reason: \"Recipient address must be provided\",\n });\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 memo,\n recipient,\n feeRate: feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast],\n sender: walletAddress,\n fetchTxHex: true,\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, signTransaction, transfer, address: walletAddress };\n};\n"
11
- ],
12
- "mappings": "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",
13
- "debugId": "C288C52A7A2CD5EE64756E2164756E21",
14
- "names": []
15
- }
@@ -1,4 +0,0 @@
1
- var _={};E(_,{validatePhrase:()=>K,keystoreWallet:()=>x,generatePhrase:()=>P,encryptToKeyStore:()=>B,decryptFromKeystore:()=>T,KEYSTORE_SUPPORTED_CHAINS:()=>A});module.exports=D(_);var t=require("@swapkit/helpers");var o=require("node:crypto"),h=require("@scure/bip39"),d=require("@scure/bip39/wordlists/english");async function g(r){let{blake2bFinal:c,blake2bInit:p,blake2bUpdate:i}=(await import("blakejs")).default,a=r;if(!(a instanceof Buffer))a=Buffer.from(a,"hex");let n=p(32);return i(n,a),Array.from(c(n)).map((e)=>e<16?`0${e.toString(16)}`:e.toString(16)).join("")}async function B(r,c){let i=o.randomBytes(16),a=o.randomBytes(32),n={c:262144,prf:"hmac-sha256",dklen:32,salt:a.toString("hex")},e=o.pbkdf2Sync(c,a,n.c,n.dklen,"sha256"),f=o.createCipheriv("aes-128-ctr",e.subarray(0,16),i),s=Buffer.concat([f.update(Buffer.from(r,"utf8")),f.final()]),l=Buffer.concat([e.subarray(16,32),Buffer.from(s)]),m=await g(l);return{meta:"xchain-keystore",version:1,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:i.toString("hex")},ciphertext:s.toString("hex"),kdf:"pbkdf2",kdfparams:n,mac:m}}}function P(r=12){return h.generateMnemonic(d.wordlist,r===12?128:256)}function K(r){return h.validateMnemonic(r,d.wordlist)}async function T(r,c){let{SwapKitError:p}=await import("@swapkit/helpers");switch(r.version){case 1:{let i=r.crypto.kdfparams,a=Buffer.from(i.salt,"hex"),n=o.pbkdf2Sync(c,a,i.c,i.dklen,"sha256"),e=Buffer.from(r.crypto.ciphertext,"hex"),f=Buffer.concat([n.subarray(16,32),e]);if(await g(f)!==r.crypto.mac)throw new p("wallet_keystore_invalid_password");let l=o.createDecipheriv(r.crypto.cipher,n.subarray(0,16),Buffer.from(r.crypto.cipherparams.iv,"hex"));return Buffer.concat([l.update(e),l.final()]).toString("utf8")}default:throw new p("wallet_keystore_unsupported_version")}}var x=t.createWallet({name:"connectKeystore",walletType:t.WalletOption.KEYSTORE,supportedChains:[...t.EVMChains,...t.UTXOChains,...t.CosmosChains,t.Chain.Polkadot,t.Chain.Chainflip,t.Chain.Ripple,t.Chain.Solana,t.Chain.Tron,t.Chain.Near],connect:({addChain:r,supportedChains:c,walletType:p})=>async function i(a,n,e){let f=t.filterSupportedChains({chains:a,supportedChains:c,walletType:p});return await Promise.all(f.map(async(s)=>{let l=typeof e==="number"?e:0,m=e&&typeof e==="object"?e[s]:void 0,v=t.NetworkDerivationPath[s].slice(0,s===t.Chain.Solana?4:5),b=m||t.updateDerivationPath(v,{index:l}),{getToolbox:k}=await import("@swapkit/toolboxes"),y=await k(s,{phrase:n,derivationPath:b}),S=await y.getAddress()||"",C={...y,address:S};r({...C,chain:s,walletType:t.WalletOption.KEYSTORE})})),!0}}),A=w(x);
2
-
3
- //# debugId=8B787A2A3639BA0C64756E2164756E21
4
- //# sourceMappingURL=index.cjs.map
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/keystore/index.ts", "../src/keystore/helpers.ts"],
4
- "sourcesContent": [
5
- "import {\n Chain,\n CosmosChains,\n type DerivationPathArray,\n EVMChains,\n NetworkDerivationPath,\n UTXOChains,\n WalletOption,\n createWallet,\n filterSupportedChains,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { getWalletSupportedChains } from \"../utils\";\n\nexport const keystoreWallet = createWallet({\n name: \"connectKeystore\",\n walletType: WalletOption.KEYSTORE,\n supportedChains: [\n ...EVMChains,\n ...UTXOChains,\n ...CosmosChains,\n Chain.Polkadot,\n Chain.Chainflip,\n Chain.Ripple,\n Chain.Solana,\n Chain.Tron,\n Chain.Near,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeystore(\n chains: Chain[],\n phrase: string,\n derivationPathMapOrIndex?: { [chain in Chain]?: DerivationPathArray } | number,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const derivationPathIndex =\n typeof derivationPathMapOrIndex === \"number\" ? derivationPathMapOrIndex : 0;\n\n const derivationPathFromMap =\n derivationPathMapOrIndex && typeof derivationPathMapOrIndex === \"object\"\n ? derivationPathMapOrIndex[chain]\n : undefined;\n\n const derivationArrayToUpdate = NetworkDerivationPath[chain].slice(\n 0,\n chain === Chain.Solana ? 4 : 5,\n ) as DerivationPathArray;\n\n const derivationPath: DerivationPathArray =\n derivationPathFromMap ||\n updateDerivationPath(derivationArrayToUpdate, { index: derivationPathIndex });\n\n const { getToolbox } = await import(\"@swapkit/toolboxes\");\n\n const toolbox = await getToolbox(chain, { phrase, derivationPath });\n const address = (await toolbox.getAddress()) || \"\";\n\n const wallet = { ...toolbox, address };\n\n addChain({ ...wallet, chain, walletType: WalletOption.KEYSTORE });\n }),\n );\n\n return true;\n },\n});\n\nexport const KEYSTORE_SUPPORTED_CHAINS = getWalletSupportedChains(keystoreWallet);\n\nexport * from \"./helpers\";\n",
6
- "import { createCipheriv, createDecipheriv, pbkdf2Sync, randomBytes } from \"node:crypto\";\nimport { generateMnemonic, validateMnemonic } from \"@scure/bip39\";\nimport { wordlist } from \"@scure/bip39/wordlists/english\";\n\nexport type Keystore = {\n version: number;\n meta: string;\n crypto: {\n cipher: string;\n cipherparams: { iv: string };\n ciphertext: string;\n kdf: string;\n kdfparams: { prf: string; dklen: number; salt: string; c: number };\n mac: string;\n };\n};\n\nasync function blake256(initData: Buffer | string) {\n const { blake2bFinal, blake2bInit, blake2bUpdate } = (await import(\"blakejs\")).default;\n let data = initData;\n\n if (!(data instanceof Buffer)) {\n // @ts-ignore\n data = Buffer.from(data, \"hex\");\n }\n\n const context = blake2bInit(32);\n blake2bUpdate(context, data);\n\n return Array.from(blake2bFinal(context))\n .map((byte) => (byte < 0x10 ? `0${byte.toString(16)}` : byte.toString(16)))\n .join(\"\");\n}\n\nexport async function encryptToKeyStore(phrase: string, password: string) {\n const cipher = \"aes-128-ctr\";\n const iv = randomBytes(16);\n const salt = randomBytes(32);\n const kdfParams = { c: 262144, prf: \"hmac-sha256\", dklen: 32, salt: salt.toString(\"hex\") };\n\n const derivedKey = pbkdf2Sync(password, salt, kdfParams.c, kdfParams.dklen, \"sha256\");\n const cipherIV = createCipheriv(cipher, derivedKey.subarray(0, 16), iv);\n const ciphertext = Buffer.concat([\n cipherIV.update(Buffer.from(phrase, \"utf8\")),\n cipherIV.final(),\n ]);\n const initData = Buffer.concat([derivedKey.subarray(16, 32), Buffer.from(ciphertext)]);\n const mac = await blake256(initData);\n\n return {\n meta: \"xchain-keystore\",\n version: 1,\n crypto: {\n cipher,\n cipherparams: { iv: iv.toString(\"hex\") },\n ciphertext: ciphertext.toString(\"hex\"),\n kdf: \"pbkdf2\",\n kdfparams: kdfParams,\n mac,\n },\n };\n}\n\nexport function generatePhrase(size: 12 | 24 = 12) {\n return generateMnemonic(wordlist, size === 12 ? 128 : 256);\n}\n\nexport function validatePhrase(phrase: string) {\n return validateMnemonic(phrase, wordlist);\n}\n\nexport async function decryptFromKeystore(keystore: Keystore, password: string) {\n const { SwapKitError } = await import(\"@swapkit/helpers\");\n\n switch (keystore.version) {\n case 1: {\n const kdfParams = keystore.crypto.kdfparams;\n const salt = Buffer.from(kdfParams.salt, \"hex\");\n const derivedKey = pbkdf2Sync(password, salt, kdfParams.c, kdfParams.dklen, \"sha256\");\n\n const ciphertext = Buffer.from(keystore.crypto.ciphertext, \"hex\");\n const initData = Buffer.concat([derivedKey.subarray(16, 32), ciphertext]);\n const mac = await blake256(initData);\n\n if (mac !== keystore.crypto.mac) {\n throw new SwapKitError(\"wallet_keystore_invalid_password\");\n }\n\n const decipher = createDecipheriv(\n keystore.crypto.cipher,\n derivedKey.subarray(0, 16),\n Buffer.from(keystore.crypto.cipherparams.iv, \"hex\"),\n );\n\n const phrase = Buffer.concat([decipher.update(ciphertext), decipher.final()]);\n return phrase.toString(\"utf8\");\n }\n\n default:\n throw new SwapKitError(\"wallet_keystore_unsupported_version\");\n }\n}\n"
7
- ],
8
- "mappings": "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",
9
- "debugId": "8B787A2A3639BA0C64756E2164756E21",
10
- "names": []
11
- }
@@ -1,4 +0,0 @@
1
- import{H as v}from"../../chunk-htvthkj1.js";import{J as m,K as h}from"../../chunk-p2ca0j1v.js";import{Chain as c,CosmosChains as E,EVMChains as A,NetworkDerivationPath as _,UTXOChains as R,WalletOption as w,createWallet as U,filterSupportedChains as W,updateDerivationPath as F}from"@swapkit/helpers";import{createCipheriv as P,createDecipheriv as K,pbkdf2Sync as y,randomBytes as d}from"node:crypto";import{generateMnemonic as T,validateMnemonic as D}from"@scure/bip39";import{wordlist as g}from"@scure/bip39/wordlists/english";async function x(t){let{blake2bFinal:i,blake2bInit:s,blake2bUpdate:n}=(await import("blakejs")).default,e=t;if(!(e instanceof Buffer))e=Buffer.from(e,"hex");let a=s(32);return n(a,e),Array.from(i(a)).map((r)=>r<16?`0${r.toString(16)}`:r.toString(16)).join("")}async function V(t,i){let n=d(16),e=d(32),a={c:262144,prf:"hmac-sha256",dklen:32,salt:e.toString("hex")},r=y(i,e,a.c,a.dklen,"sha256"),p=P("aes-128-ctr",r.subarray(0,16),n),o=Buffer.concat([p.update(Buffer.from(t,"utf8")),p.final()]),f=Buffer.concat([r.subarray(16,32),Buffer.from(o)]),l=await x(f);return{meta:"xchain-keystore",version:1,crypto:{cipher:"aes-128-ctr",cipherparams:{iv:n.toString("hex")},ciphertext:o.toString("hex"),kdf:"pbkdf2",kdfparams:a,mac:l}}}function H(t=12){return T(g,t===12?128:256)}function X(t){return D(t,g)}async function $(t,i){let{SwapKitError:s}=await import("@swapkit/helpers");switch(t.version){case 1:{let n=t.crypto.kdfparams,e=Buffer.from(n.salt,"hex"),a=y(i,e,n.c,n.dklen,"sha256"),r=Buffer.from(t.crypto.ciphertext,"hex"),p=Buffer.concat([a.subarray(16,32),r]);if(await x(p)!==t.crypto.mac)throw new s("wallet_keystore_invalid_password");let f=K(t.crypto.cipher,a.subarray(0,16),Buffer.from(t.crypto.cipherparams.iv,"hex"));return Buffer.concat([f.update(r),f.final()]).toString("utf8")}default:throw new s("wallet_keystore_unsupported_version")}}var N=U({name:"connectKeystore",walletType:w.KEYSTORE,supportedChains:[...A,...R,...E,c.Polkadot,c.Chainflip,c.Ripple,c.Solana,c.Tron,c.Near],connect:({addChain:t,supportedChains:i,walletType:s})=>async function n(e,a,r){let p=W({chains:e,supportedChains:i,walletType:s});return await Promise.all(p.map(async(o)=>{let f=typeof r==="number"?r:0,l=r&&typeof r==="object"?r[o]:void 0,b=_[o].slice(0,o===c.Solana?4:5),k=l||F(b,{index:f}),{getToolbox:S}=await import("@swapkit/toolboxes"),u=await S(o,{phrase:a,derivationPath:k}),C=await u.getAddress()||"",B={...u,address:C};t({...B,chain:o,walletType:w.KEYSTORE})})),!0}}),I=v(N);export{X as validatePhrase,N as keystoreWallet,H as generatePhrase,V as encryptToKeyStore,$ as decryptFromKeystore,I as KEYSTORE_SUPPORTED_CHAINS};
2
-
3
- //# debugId=C8A4B3B29F31B5F164756E2164756E21
4
- //# sourceMappingURL=index.js.map
@@ -1,11 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/keystore/index.ts", "../src/keystore/helpers.ts"],
4
- "sourcesContent": [
5
- "import {\n Chain,\n CosmosChains,\n type DerivationPathArray,\n EVMChains,\n NetworkDerivationPath,\n UTXOChains,\n WalletOption,\n createWallet,\n filterSupportedChains,\n updateDerivationPath,\n} from \"@swapkit/helpers\";\nimport { getWalletSupportedChains } from \"../utils\";\n\nexport const keystoreWallet = createWallet({\n name: \"connectKeystore\",\n walletType: WalletOption.KEYSTORE,\n supportedChains: [\n ...EVMChains,\n ...UTXOChains,\n ...CosmosChains,\n Chain.Polkadot,\n Chain.Chainflip,\n Chain.Ripple,\n Chain.Solana,\n Chain.Tron,\n Chain.Near,\n ],\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectKeystore(\n chains: Chain[],\n phrase: string,\n derivationPathMapOrIndex?: { [chain in Chain]?: DerivationPathArray } | number,\n ) {\n const filteredChains = filterSupportedChains({ chains, supportedChains, walletType });\n\n await Promise.all(\n filteredChains.map(async (chain) => {\n const derivationPathIndex =\n typeof derivationPathMapOrIndex === \"number\" ? derivationPathMapOrIndex : 0;\n\n const derivationPathFromMap =\n derivationPathMapOrIndex && typeof derivationPathMapOrIndex === \"object\"\n ? derivationPathMapOrIndex[chain]\n : undefined;\n\n const derivationArrayToUpdate = NetworkDerivationPath[chain].slice(\n 0,\n chain === Chain.Solana ? 4 : 5,\n ) as DerivationPathArray;\n\n const derivationPath: DerivationPathArray =\n derivationPathFromMap ||\n updateDerivationPath(derivationArrayToUpdate, { index: derivationPathIndex });\n\n const { getToolbox } = await import(\"@swapkit/toolboxes\");\n\n const toolbox = await getToolbox(chain, { phrase, derivationPath });\n const address = (await toolbox.getAddress()) || \"\";\n\n const wallet = { ...toolbox, address };\n\n addChain({ ...wallet, chain, walletType: WalletOption.KEYSTORE });\n }),\n );\n\n return true;\n },\n});\n\nexport const KEYSTORE_SUPPORTED_CHAINS = getWalletSupportedChains(keystoreWallet);\n\nexport * from \"./helpers\";\n",
6
- "import { createCipheriv, createDecipheriv, pbkdf2Sync, randomBytes } from \"node:crypto\";\nimport { generateMnemonic, validateMnemonic } from \"@scure/bip39\";\nimport { wordlist } from \"@scure/bip39/wordlists/english\";\n\nexport type Keystore = {\n version: number;\n meta: string;\n crypto: {\n cipher: string;\n cipherparams: { iv: string };\n ciphertext: string;\n kdf: string;\n kdfparams: { prf: string; dklen: number; salt: string; c: number };\n mac: string;\n };\n};\n\nasync function blake256(initData: Buffer | string) {\n const { blake2bFinal, blake2bInit, blake2bUpdate } = (await import(\"blakejs\")).default;\n let data = initData;\n\n if (!(data instanceof Buffer)) {\n // @ts-ignore\n data = Buffer.from(data, \"hex\");\n }\n\n const context = blake2bInit(32);\n blake2bUpdate(context, data);\n\n return Array.from(blake2bFinal(context))\n .map((byte) => (byte < 0x10 ? `0${byte.toString(16)}` : byte.toString(16)))\n .join(\"\");\n}\n\nexport async function encryptToKeyStore(phrase: string, password: string) {\n const cipher = \"aes-128-ctr\";\n const iv = randomBytes(16);\n const salt = randomBytes(32);\n const kdfParams = { c: 262144, prf: \"hmac-sha256\", dklen: 32, salt: salt.toString(\"hex\") };\n\n const derivedKey = pbkdf2Sync(password, salt, kdfParams.c, kdfParams.dklen, \"sha256\");\n const cipherIV = createCipheriv(cipher, derivedKey.subarray(0, 16), iv);\n const ciphertext = Buffer.concat([\n cipherIV.update(Buffer.from(phrase, \"utf8\")),\n cipherIV.final(),\n ]);\n const initData = Buffer.concat([derivedKey.subarray(16, 32), Buffer.from(ciphertext)]);\n const mac = await blake256(initData);\n\n return {\n meta: \"xchain-keystore\",\n version: 1,\n crypto: {\n cipher,\n cipherparams: { iv: iv.toString(\"hex\") },\n ciphertext: ciphertext.toString(\"hex\"),\n kdf: \"pbkdf2\",\n kdfparams: kdfParams,\n mac,\n },\n };\n}\n\nexport function generatePhrase(size: 12 | 24 = 12) {\n return generateMnemonic(wordlist, size === 12 ? 128 : 256);\n}\n\nexport function validatePhrase(phrase: string) {\n return validateMnemonic(phrase, wordlist);\n}\n\nexport async function decryptFromKeystore(keystore: Keystore, password: string) {\n const { SwapKitError } = await import(\"@swapkit/helpers\");\n\n switch (keystore.version) {\n case 1: {\n const kdfParams = keystore.crypto.kdfparams;\n const salt = Buffer.from(kdfParams.salt, \"hex\");\n const derivedKey = pbkdf2Sync(password, salt, kdfParams.c, kdfParams.dklen, \"sha256\");\n\n const ciphertext = Buffer.from(keystore.crypto.ciphertext, \"hex\");\n const initData = Buffer.concat([derivedKey.subarray(16, 32), ciphertext]);\n const mac = await blake256(initData);\n\n if (mac !== keystore.crypto.mac) {\n throw new SwapKitError(\"wallet_keystore_invalid_password\");\n }\n\n const decipher = createDecipheriv(\n keystore.crypto.cipher,\n derivedKey.subarray(0, 16),\n Buffer.from(keystore.crypto.cipherparams.iv, \"hex\"),\n );\n\n const phrase = Buffer.concat([decipher.update(ciphertext), decipher.final()]);\n return phrase.toString(\"utf8\");\n }\n\n default:\n throw new SwapKitError(\"wallet_keystore_unsupported_version\");\n }\n}\n"
7
- ],
8
- "mappings": "iGAAA,cACE,kBACA,eAEA,2BACA,gBACA,kBACA,kBACA,2BACA,0BACA,yBCVF,yBAAS,sBAAgB,gBAAkB,iBAAY,oBACvD,2BAAS,sBAAkB,qBAC3B,mBAAS,uCAeT,eAAe,CAAQ,CAAC,EAA2B,CACjD,IAAQ,eAAc,cAAa,kBAAmB,KAAa,oBAAY,QAC3E,EAAO,EAEX,KAAM,aAAgB,QAEpB,EAAO,OAAO,KAAK,EAAM,KAAK,EAGhC,IAAM,EAAU,EAAY,EAAE,EAG9B,OAFA,EAAc,EAAS,CAAI,EAEpB,MAAM,KAAK,EAAa,CAAO,CAAC,EACpC,IAAI,CAAC,IAAU,EAAO,GAAO,IAAI,EAAK,SAAS,EAAE,IAAM,EAAK,SAAS,EAAE,CAAE,EACzE,KAAK,EAAE,EAGZ,eAAsB,CAAiB,CAAC,EAAgB,EAAkB,CAExE,IAAM,EAAK,EAAY,EAAE,EACnB,EAAO,EAAY,EAAE,EACrB,EAAY,CAAE,EAAG,OAAQ,IAAK,cAAe,MAAO,GAAI,KAAM,EAAK,SAAS,KAAK,CAAE,EAEnF,EAAa,EAAW,EAAU,EAAM,EAAU,EAAG,EAAU,MAAO,QAAQ,EAC9E,EAAW,EANF,cAMyB,EAAW,SAAS,EAAG,EAAE,EAAG,CAAE,EAChE,EAAa,OAAO,OAAO,CAC/B,EAAS,OAAO,OAAO,KAAK,EAAQ,MAAM,CAAC,EAC3C,EAAS,MAAM,CACjB,CAAC,EACK,EAAW,OAAO,OAAO,CAAC,EAAW,SAAS,GAAI,EAAE,EAAG,OAAO,KAAK,CAAU,CAAC,CAAC,EAC/E,EAAM,MAAM,EAAS,CAAQ,EAEnC,MAAO,CACL,KAAM,kBACN,QAAS,EACT,OAAQ,CACN,OAlBW,cAmBX,aAAc,CAAE,GAAI,EAAG,SAAS,KAAK,CAAE,EACvC,WAAY,EAAW,SAAS,KAAK,EACrC,IAAK,SACL,UAAW,EACX,KACF,CACF,EAGK,SAAS,CAAc,CAAC,EAAgB,GAAI,CACjD,OAAO,EAAiB,EAAU,IAAS,GAAK,IAAM,GAAG,EAGpD,SAAS,CAAc,CAAC,EAAgB,CAC7C,OAAO,EAAiB,EAAQ,CAAQ,EAG1C,eAAsB,CAAmB,CAAC,EAAoB,EAAkB,CAC9E,IAAQ,gBAAiB,KAAa,4BAEtC,OAAQ,EAAS,aACV,GAAG,CACN,IAAM,EAAY,EAAS,OAAO,UAC5B,EAAO,OAAO,KAAK,EAAU,KAAM,KAAK,EACxC,EAAa,EAAW,EAAU,EAAM,EAAU,EAAG,EAAU,MAAO,QAAQ,EAE9E,EAAa,OAAO,KAAK,EAAS,OAAO,WAAY,KAAK,EAC1D,EAAW,OAAO,OAAO,CAAC,EAAW,SAAS,GAAI,EAAE,EAAG,CAAU,CAAC,EAGxE,GAFY,MAAM,EAAS,CAAQ,IAEvB,EAAS,OAAO,IAC1B,MAAM,IAAI,EAAa,kCAAkC,EAG3D,IAAM,EAAW,EACf,EAAS,OAAO,OAChB,EAAW,SAAS,EAAG,EAAE,EACzB,OAAO,KAAK,EAAS,OAAO,aAAa,GAAI,KAAK,CACpD,EAGA,OADe,OAAO,OAAO,CAAC,EAAS,OAAO,CAAU,EAAG,EAAS,MAAM,CAAC,CAAC,EAC9D,SAAS,MAAM,CAC/B,SAGE,MAAM,IAAI,EAAa,qCAAqC,GDrF3D,IAAM,EAAiB,EAAa,CACzC,KAAM,kBACN,WAAY,EAAa,SACzB,gBAAiB,CACf,GAAG,EACH,GAAG,EACH,GAAG,EACH,EAAM,SACN,EAAM,UACN,EAAM,OACN,EAAM,OACN,EAAM,KACN,EAAM,IACR,EACA,QAAS,EAAG,WAAU,kBAAiB,gBACrC,eAAe,CAAe,CAC5B,EACA,EACA,EACA,CACA,IAAM,EAAiB,EAAsB,CAAE,SAAQ,kBAAiB,YAAW,CAAC,EAgCpF,OA9BA,MAAM,QAAQ,IACZ,EAAe,IAAI,MAAO,IAAU,CAClC,IAAM,EACJ,OAAO,IAA6B,SAAW,EAA2B,EAEtE,EACJ,GAA4B,OAAO,IAA6B,SAC5D,EAAyB,GACzB,OAEA,EAA0B,EAAsB,GAAO,MAC3D,EACA,IAAU,EAAM,OAAS,EAAI,CAC/B,EAEM,EACJ,GACA,EAAqB,EAAyB,CAAE,MAAO,CAAoB,CAAC,GAEtE,cAAe,KAAa,8BAE9B,EAAU,MAAM,EAAW,EAAO,CAAE,SAAQ,gBAAe,CAAC,EAC5D,EAAW,MAAM,EAAQ,WAAW,GAAM,GAE1C,EAAS,IAAK,EAAS,SAAQ,EAErC,EAAS,IAAK,EAAQ,QAAO,WAAY,EAAa,QAAS,CAAC,EACjE,CACH,EAEO,GAEb,CAAC,EAEY,EAA4B,EAAyB,CAAc",
9
- "debugId": "C8A4B3B29F31B5F164756E2164756E21",
10
- "names": []
11
- }
@@ -1,5 +0,0 @@
1
- var ZL={};JL(ZL,{ledgerWallet:()=>g0,LEDGER_SUPPORTED_CHAINS:()=>$L});module.exports=WL(ZL);var O=require("@swapkit/helpers");var j=require("@swapkit/helpers"),S=async({chain:L,ledgerClient:m})=>{if(!m)return"";switch(L){case j.Chain.Cosmos:case j.Chain.THORChain:return m.connect();case j.Chain.Ethereum:case j.Chain.BinanceSmartChain:case j.Chain.Avalanche:case j.Chain.Polygon:case j.Chain.Arbitrum:case j.Chain.Optimism:case j.Chain.Base:case j.Chain.Aurora:case j.Chain.Gnosis:return m.getAddress();case j.Chain.Bitcoin:case j.Chain.BitcoinCash:case j.Chain.Dash:case j.Chain.Dogecoin:case j.Chain.Litecoin:{let y=m;await y.connect();let _=await y.getAddress();return L===j.Chain.BitcoinCash?_.replace("bitcoincash:",""):_}case j.Chain.Near:return await m.getAddress();case j.Chain.Ripple:return m.address;case j.Chain.Tron:return m.getAddress();default:throw new j.SwapKitError("wallet_chain_not_supported",{wallet:j.WalletOption.LEDGER,chain:L})}};var $=require("@swapkit/helpers");var I=require("@swapkit/helpers");var D=require("@swapkit/helpers");var L0=require("@swapkit/helpers");var b=85,a=250;var K={GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2,GET_ADDR_SECP256K1:4},o={INIT:0,ADD:1,LAST:2},s={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},k={JSON:0},l={NoError:36864},W0={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",36864:"No errors",36865:"Device is busy",26626:"Error deriving keys",25600:"Execution Error",26368:"Wrong Length",27010:"Empty Buffer",27011:"Output buffer too small",27012:"Data is invalid",27013:"Conditions not satisfied",27014:"Transaction rejected",27264:"Bad key handle",27392:"Invalid P1/P2",27904:"Instruction not supported",28160:"App does not seem to be open",28416:"Unknown error",28417:"Sign/verify error"};function C(L){if(L in W0)return W0[L];return`Unknown Status Code: ${L}`}function TL(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function N(L){if(L){if(TL(L)){if(Object.prototype.hasOwnProperty.call(L,"statusCode"))return{return_code:L.statusCode,error_message:C(L.statusCode)};if(Object.prototype.hasOwnProperty.call(L,"return_code")&&Object.prototype.hasOwnProperty.call(L,"error_message"))return L}return{return_code:65535,error_message:L.toString()}}return{return_code:65535,error_message:L.toString()}}async function e(L){return L.send(85,K.GET_VERSION,0,0).then((m)=>{let y=m.slice(-2),_=y[0]*256+y[1],T=0;if(m.length>=9)T=(m[5]<<24)+(m[6]<<16)+(m[7]<<8)+(m[8]<<0);return{return_code:_,error_message:C(_),test_mode:m[0]!==0,major:m[1],minor:m[2],patch:m[3],device_locked:m[4]===1,target_id:T.toString(16)}},N)}var c=require("@swapkit/helpers");function J0(L){if(L==null||L.length<3)throw new c.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new c.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too long"});let m=Buffer.alloc(1+4*L.length);m.writeUInt8(L.length,0);for(let y=0;y<L.length;y+=1){let _=L[y]||0;if(y<3)_|=2147483648;m.writeInt32LE(_,1+y*4)}return m}async function r(L,m,y,_,T=k.JSON){return L.transport.send(b,K.SIGN_SECP256K1,m,T,_,[l.NoError,27012,27264]).then((G)=>{let B=G.slice(-2),X=B[0]*256+B[1],R=C(X);if(X===27264||X===27012)R=`${R} : ${G.slice(0,G.length-2).toString("ascii")}`;let F=null;if(G.length>2)F=G.slice(0,G.length-2);return{signature:F,return_code:X,error_message:R}},N)}function _L(L){if(L.length!==65)throw new c.SwapKitError("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let m=L.slice(33,65),y=Buffer.from([2+(m[m.length-1]&1)]);return Buffer.concat([y,L.slice(1,33)])}async function $0(L,m){return L.transport.send(b,K.INS_PUBLIC_KEY_SECP256K1,0,0,m,[l.NoError]).then((y)=>{let _=y.slice(-2),T=_[0]*256+_[1],G=Buffer.from(y.slice(0,65));return{pk:G,compressed_pk:_L(G),return_code:T,error_message:C(T)}},N)}function j0(L){if(!L||L.length!==5)throw new c.SwapKitError("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let m=Buffer.alloc(20);return m.writeUInt32LE(2147483648+L[0],0),m.writeUInt32LE(2147483648+L[1],4),m.writeUInt32LE(2147483648+L[2],8),m.writeUInt32LE(L[3],12),m.writeUInt32LE(L[4],16),m}function Q0(L,m,y,_,T=k.JSON){let G=o.ADD;if(m===1)G=o.INIT;if(m===y)G=o.LAST;return r(L,G,0,_,T)}async function Y0(L,m){return L.transport.send(b,K.GET_ADDR_SECP256K1,0,0,m,[l.NoError]).then((y)=>{let _=y.slice(-2),T=_[0]*256+_[1];return{pk:"OBSOLETE PROPERTY",compressed_pk:Buffer.from(y.slice(0,33)),return_code:T,error_message:C(T)}},N)}class v{transport;versionResponse;constructor(L){if(!L)throw new L0.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new L0.SwapKitError("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let m=Buffer.alloc(1+L.length);return m.writeUInt8(L.length,0),m.write(L,1),m}async serializePath(L){if(this.versionResponse=await e(this.transport),this.versionResponse.return_code!==l.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return J0(L);case 2:return j0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,m){let y=await this.serializePath(L),_=[];_.push(y);for(let T=0;T<m.length;T+=a){let G=T+a;if(T>m.length)G=m.length;_.push(m.slice(T,G))}return _}async getVersion(){try{return this.versionResponse=await e(this.transport),this.versionResponse}catch(L){return N(L)}}async appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let m=L.slice(-2),y=m[0]*256+m[1],_="",T="",G=0,B=0;if(L[0]!==1)return{return_code:36865,error_message:"response format ID not recognized"};let X=L[1];_=L.slice(2,2+X).toString("ascii");let R=2+X,F=L[R];R+=1,T=L.slice(R,R+F).toString("ascii"),R+=F;let J=L[R];return R+=1,G=J,B=L[R],{return_code:y,error_message:C(y),appName:_,appVersion:T,flagLen:G,flagsValue:B,flag_recovery:(B&1)!==0,flag_signed_mcu_code:(B&2)!==0,flag_onboarded:(B&4)!==0,flag_pin_validated:(B&128)!==0}},N)}async deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[l.NoError,28160]).then((L)=>{let m=L.slice(-2),y=m[0]*256+m[1];if(y===28160)return{return_code:y,error_message:"This command is only available in the Dashboard"};let _=L.slice(0,4).toString("hex"),T=4,G=L[T];T+=1;let B=L.slice(T,T+G).toString();T+=G;let X=L[T];T+=1;let R=L.slice(T,T+X).toString("hex");T+=X;let F=L[T];T+=1;let J=L.slice(T,T+F);if(J[F-1]===0)J=L.slice(T,T+F-1);let Z=J.toString();return{return_code:y,error_message:C(y),targetId:_,seVersion:B,flag:R,mcuVersion:Z}},N)}async publicKey(L){try{let m=await this.serializePath(L);switch(this.versionResponse.major){case 1:return $0(this,m);case 2:{let y=Buffer.concat([v.serializeHRP("thor"),m]);return Y0(this,y)}default:return{return_code:25600,error_message:"App Version is not supported"}}}catch(m){return N(m)}}async getAddressAndPubKey(L,m,y=!1){return this.serializePath(L).then((_)=>{let T=Buffer.concat([v.serializeHRP(m),_]);return this.transport.send(b,K.GET_ADDR_SECP256K1,y?s.SHOW_ADDRESS_IN_DEVICE:s.ONLY_RETRIEVE,0,T,[l.NoError]).then((G)=>{let B=G.slice(-2),X=B[0]*256+B[1],R=Buffer.from(G.slice(0,33));return{bech32_address:Buffer.from(G.slice(33,-2)).toString(),compressed_pk:R,return_code:X,error_message:C(X)}},N)}).catch((_)=>N(_))}showAddressAndPubKey(L,m){return this.getAddressAndPubKey(L,m,!0)}signSendChunk(L,m,y,_=k.JSON){switch(this.versionResponse.major){case 1:return r(this,L,m,y,_);case 2:return Q0(this,L,m,y,_);default:return{return_code:25600,error_message:"App Version is not supported"}}}async sign(L,m,y=k.JSON){let _=Buffer.from(m),T=[],G;try{T=await this.signGetChunks(L,_),G=await this.signSendChunk(1,T.length,T[0],y)}catch(X){N(X)}let B={return_code:G.return_code,error_message:G.error_message,signature:null};for(let X=1;X<T.length;X+=1)if(B=await this.signSendChunk(1+X,T.length,T[X],y),B.return_code!==l.NoError)break;return{return_code:B.return_code,error_message:B.error_message,signature:B.signature}}}var u=require("@swapkit/helpers"),m0=()=>navigator?.usb,OL=async()=>{let L=m0();if(typeof L?.getDevices!=="function")return[];let{ledgerUSBVendorId:m}=await import("@ledgerhq/devices"),_=(await L?.getDevices()).filter((T)=>T.vendorId===m);if(_.length>0)return _[0];return L?.requestDevice({filters:[{vendorId:m}]})},M=async()=>{let L=await OL();if(!L)throw new u.SwapKitError("wallet_ledger_device_not_found");if(await L.open(),L.configuration===null)await L.selectConfiguration(1);try{await L.reset()}catch{}let m=L.configurations[0].interfaces.find(({alternates:X})=>X.some(({interfaceClass:R})=>R===255));if(!m)throw await L.close(),new u.SwapKitError("wallet_ledger_connection_error");try{await L.claimInterface(m.interfaceNumber)}catch(X){throw await L.close(),new u.SwapKitError("wallet_ledger_connection_claimed",X)}let y=(await import("@ledgerhq/hw-transport-webusb")).default;if(!await y.isSupported())throw new u.SwapKitError("wallet_ledger_webusb_not_supported");let{DisconnectedDevice:T}=await import("@ledgerhq/errors"),G=new y(L,m.interfaceNumber),B=(X)=>{if(L===X.device)m0()?.removeEventListener("disconnect",B),G._emitDisconnect(new T)};return m0()?.addEventListener("disconnect",B),G};class h{ledgerTimeout=50000;derivationPath=D.NetworkDerivationPath.GAIA;transport;ledgerApp;chain="thor";checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{switch(this.transport=L||!this.transport?await M():this.transport,this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new v(this.transport):this.ledgerApp;break}case"cosmos":{let m=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new m(this.transport):this.ledgerApp}}return this.ledgerApp}catch(m){throw new D.SwapKitError("wallet_ledger_connection_error",m)}};validateResponse=(L,m)=>{switch(L){case D.LedgerErrorCode.NoError:return;case D.LedgerErrorCode.LockedDevice:throw new D.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${m}`});case D.LedgerErrorCode.TC_NotFound:throw new D.SwapKitError("wallet_ledger_device_not_found");default:break}}}class y0 extends h{pubKey=null;derivationPath;constructor(L=I.NetworkDerivationPath.GAIA){super();this.chain="cosmos",this.derivationPath=I.derivationPathToString(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:m}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),m};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,m="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:_,signature:T}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new I.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,_),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:T}]};signAmino=async(L,m)=>{await this.checkOrCreateTransportAndLedger(!0);let y=await this.getAccounts();if(y.findIndex((Y)=>Y.address===L)===-1)throw new I.SwapKitError("wallet_ledger_address_not_found",{address:L});let T=await import("@cosmjs/amino"),G=T.encodeSecp256k1Signature??T.default?.encodeSecp256k1Signature,B=T.serializeSignDoc??T.default?.serializeSignDoc,X=await import("@cosmjs/crypto"),R=X.Secp256k1Signature??X.default?.Secp256k1Signature,F=B(m),J=await this.ledgerApp.sign(this.derivationPath,F);this.validateResponse(J.return_code,J.error_message);let Z=R.fromDer(J.signature).toFixedLength();return{signed:m,signature:G(y[0].pubkey,Z)}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}var Q=require("@swapkit/helpers"),Z0=require("ethers");class U extends Z0.AbstractSigner{chainId=Q.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;constructor({provider:L,derivationPath:m=Q.NetworkDerivationPath.OP,chainId:y=Q.ChainId.Optimism}){super(L);this.chainId=y||Q.ChainId.Ethereum,this.derivationPath=typeof m==="string"?m:Q.derivationPathToString(m),Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new U({provider:L,derivationPath:this.derivationPath,chainId:this.chainId});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await M(),m=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new m(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new Q.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath)};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signMessage=async(L)=>{let{Signature:m}=await import("ethers");await this.createTransportAndLedger();let y=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!y)throw new Q.SwapKitError("wallet_ledger_signing_error");return y.r=`0x${y.r}`,y.s=`0x${y.s}`,m.from(y).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new Q.SwapKitError("wallet_ledger_no_provider");let m=await this.signTransaction(L);return await this.provider.broadcastTransaction(m)};signTypedData(){throw new Q.SwapKitError("wallet_ledger_method_not_supported",{method:"signTypedData"})}signTransaction=async(L)=>{let{Transaction:m}=await import("ethers");await this.createTransportAndLedger();let y=await this.provider?.getTransactionCount(L.from||await this.getAddress()),_={chainId:L.chainId||this.chainId,data:L.data,gasLimit:L.gasLimit,...L.gasPrice&&{gasPrice:L.gasPrice},...!L.gasPrice&&L.maxFeePerGas&&{maxFeePerGas:L.maxFeePerGas,maxPriorityFeePerGas:L.maxPriorityFeePerGas},nonce:L.nonce!==void 0?Number((L.nonce||y||0).toString()):y,to:L.to?.toString(),value:L.value,type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0},T=m.from(_).unsignedSerialized.slice(2),{ledgerService:G}=await import("@ledgerhq/hw-app-eth"),B=await G.resolveTransaction(T,{},{externalPlugins:!0,erc20:!0}),X=await this.ledgerApp?.signTransaction(this.derivationPath,T,B);if(!X)throw new Q.SwapKitError("wallet_ledger_signing_error");let{r:R,s:F,v:J}=X;return m.from({..._,signature:{v:Number(BigInt(J)),r:`0x${R}`,s:`0x${F}`}}).serialized}}var M0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Ethereum,provider:L,derivationPath:m}),N0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Avalanche,provider:L,derivationPath:m}),U0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.BinanceSmartChain,provider:L,derivationPath:m}),H0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Arbitrum,provider:L,derivationPath:m}),C0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Polygon,provider:L,derivationPath:m}),D0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Optimism,provider:L,derivationPath:m}),w0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Base,provider:L,derivationPath:m}),f0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Aurora,provider:L,derivationPath:m}),z0=({provider:L,derivationPath:m})=>new U({chainId:Q.ChainId.Gnosis,provider:L,derivationPath:m});async function q0(L,m){let y=await import("@ledgerhq/hw-app-near"),{Chain:_,DerivationPath:T,derivationPathToString:G,SwapKitError:B}=await import("@swapkit/helpers"),X=new y.default(L),R=m?G(m):T[_.Near],{address:F,publicKey:J}=await X.getAddress(R);return{async getPublicKey(){let{utils:Y}=await import("near-api-js");return Y.PublicKey.fromString(`ed25519:${J}`)},signNep413Message(Y,H,z,q,E){return Promise.reject(new B("wallet_ledger_method_not_supported",{wallet:"Ledger",method:"signNep413Message"}))},getAddress(){return Promise.resolve(F)},async signTransaction(Y){let{Signature:H,SignedTransaction:z}=await import("near-api-js/lib/transaction");try{let q=await X.signTransaction(Y.encode(),R);if(!q)throw new Error("Signature undefined");let E=new H({keyType:0,data:q}),g=new z({transaction:Y,signature:E});return[q,g]}catch(q){throw new B("wallet_ledger_signing_error",{error:q})}},signDelegateAction(Y){return Promise.reject(new B("wallet_ledger_method_not_supported",{wallet:"Ledger",method:"signDelegateAction"}))}}}var A0=require("@scure/base"),d=require("@swapkit/helpers");var l0=require("@scure/base"),w=require("@swapkit/helpers"),T0=(L)=>{if(L.length<64)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let m=L[3],y=L.slice(4,m+4);if(y.length===33&&y[0]===0)y=y.slice(1,33);else if(y.length===33)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"r too long"});while(y.length<32)y.unshift(0);if(L[m+4]!==2)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let _=L[m+5];if(4+m+2+_!==L.length)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let T=L.slice(m+6,L.length);if(T.length===33&&T[0]===0)T=T.slice(1,33);else if(T.length===33)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"s too long"});while(T.length<32)T.unshift(0);if(y.length!==32||T.length!==32)throw new w.SwapKitError("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return l0.base64.encode(Buffer.concat([y,T]))};class _0 extends h{pubKey=null;derivationPath;constructor(L=d.NetworkDerivationPath.THOR){super();this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:m}=await this.getAddressAndPubKey();return this.pubKey=A0.base64.encode(L),m};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};signTransaction=async(L,m="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:_,signature:T}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new d.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(y,_),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:T0(T)}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:m,error_message:y,signature:_}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new d.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(m,y),T0(_)}}var f=require("@swapkit/helpers");class P0{derivationPath;ledgerApp=null;ledgerTimeout=50000;constructor(L){this.derivationPath=typeof L==="string"?L:f.derivationPathToString(L||f.NetworkDerivationPath.TRX)}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await M(),m=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new m(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new f.SwapKitError("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let L=await this.ledgerApp?.getAddress(this.derivationPath);if(!L)throw new f.SwapKitError("wallet_ledger_failed_to_get_address");return{address:L.address,publicKey:L.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(L)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new f.SwapKitError("wallet_ledger_transport_error");let m=JSON.stringify(L);try{let y=await this.ledgerApp.signTransaction(this.derivationPath,m,[]);if(!y)throw new f.SwapKitError("wallet_ledger_signing_error");return{...L,signature:[y]}}catch(y){throw new f.SwapKitError("wallet_ledger_signing_error",{error:y})}}}var S0=(L)=>new P0(L);var V=require("@swapkit/helpers"),K0=require("bitcoinjs-lib");var GL=async({psbt:L,inputUtxos:m,btcApp:y,derivationPath:_},T)=>{let G=m.map((J)=>{let Z=K0.Transaction.fromHex(J.txHex||"");return[y.splitTransaction(Z.toHex(),Z.hasWitnesses()),J.index,void 0,void 0]}),B=L.data.globalMap.unsignedTx.toBuffer().toString("hex"),X=y.splitTransaction(B,!0),R=y.serializeTransactionOutputs(X).toString("hex"),F={additionals:["bech32"],associatedKeysets:G.map(()=>_),inputs:G,outputScriptHex:R,segwit:!0,useTrustedInputForSegwit:!0};return y.createPaymentTransaction({...F,...T})},i=({chain:L,additionalSignParams:m})=>{let y,_=null;async function T(B=!0){if(B&&!y)new V.SwapKitError("wallet_ledger_connection_error",{message:`Ledger connection failed:
2
- ${JSON.stringify({checkBtcApp:B,btcApp:y})}`});_||=await M()}async function G(){_=await M(),y=new(await import("@ledgerhq/hw-app-btc")).default({transport:_,currency:L})}return(B)=>{let X=typeof B==="string"?B:V.derivationPathToString(B),R=V.getWalletFormatFor(X);return{connect:async()=>{await T(!1),y=new(await import("@ledgerhq/hw-app-btc")).default({transport:_,currency:L})},getExtendedPublicKey:async(F="84'/0'/0'",J=76067358)=>{return await T(!1),y.getWalletXpub({path:F,xpubVersion:J})},signTransaction:async(F,J)=>{return await G(),GL({psbt:F,derivationPath:X,btcApp:y,inputUtxos:J},m)},getAddress:async()=>{let{toCashAddress:F}=await import("@swapkit/toolboxes/utxo");await T(!1);let{bitcoinAddress:J}=await y.getWalletPublicKey(X,{format:R});if(!J)throw new V.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${X}`});return L==="bitcoin-cash"&&R==="legacy"?F(J).replace(/(bchtest:|bitcoincash:)/,""):J}}}},I0=i({chain:"bitcoin"}),V0=i({chain:"litecoin"}),E0=i({chain:"bitcoin-cash",additionalSignParams:{segwit:!1,additionals:["abc"],sigHashType:65}}),b0=i({chain:"dogecoin",additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1}}),k0=i({chain:"dash",additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1}});var x=require("@swapkit/helpers"),O0=require("ripple-binary-codec");var XL=2147483648;function BL(L){let m={};for(let y in L)if(L[y]!==null&&L[y]!==void 0)m[y]=L[y];return m}async function RL(L){let{default:m}=await import("@ledgerhq/hw-app-xrp");return new m(L)}function FL({instance:L,derivationPath:m}){return L.getAddress(m)}var x0=async(L)=>{let m=x.derivationPathToString(L||x.NetworkDerivationPath[x.Chain.Ripple]),y=await M(),_=await RL(y),{address:T,publicKey:G}=await FL({instance:_,derivationPath:m});async function B(X){let{hashes:R}=await import("@swapkit/toolboxes/ripple"),J={...BL(X),Flags:X.Flags||XL,SigningPubKey:G.toUpperCase()},Z=O0.encode(J),Y=await _.signTransaction(m,Z),H=O0.encode({...J,TxnSignature:Y}),z=R.hashSignedTx(H);return{tx_blob:H,hash:z}}return{address:T,sign:B}};var A=async({chain:L,derivationPath:m})=>{let{match:y}=await import("ts-pattern");return y(L).returnType().with($.Chain.THORChain,()=>Promise.resolve(new _0(m))).with($.Chain.Cosmos,()=>Promise.resolve(new y0(m))).with($.Chain.Bitcoin,()=>Promise.resolve(I0(m))).with($.Chain.BitcoinCash,()=>Promise.resolve(E0(m))).with($.Chain.Dash,()=>Promise.resolve(k0(m))).with($.Chain.Dogecoin,()=>Promise.resolve(b0(m))).with($.Chain.Litecoin,()=>Promise.resolve(V0(m))).with($.Chain.Ripple,()=>Promise.resolve(x0(m))).with($.Chain.Tron,()=>Promise.resolve(S0(m))).with($.Chain.Near,async()=>{let _=await M();return q0(_,m)}).with($.Chain.Arbitrum,$.Chain.Aurora,$.Chain.Avalanche,$.Chain.BinanceSmartChain,$.Chain.Ethereum,$.Chain.Gnosis,$.Chain.Optimism,$.Chain.Polygon,$.Chain.Base,async()=>{let{getProvider:_}=await import("@swapkit/toolboxes/evm"),T={provider:await _(L),derivationPath:m};return y(L).with($.Chain.BinanceSmartChain,()=>U0(T)).with($.Chain.Avalanche,()=>N0(T)).with($.Chain.Arbitrum,()=>H0(T)).with($.Chain.Optimism,()=>D0(T)).with($.Chain.Polygon,()=>C0(T)).with($.Chain.Base,()=>w0(T)).with($.Chain.Aurora,()=>f0(T)).with($.Chain.Gnosis,()=>z0(T)).otherwise(()=>M0(T))}).otherwise(()=>{throw new $.SwapKitError("wallet_chain_not_supported",{wallet:$.WalletOption.LEDGER,chain:L})})};var g0=O.createWallet({name:"connectLedger",supportedChains:[O.Chain.Arbitrum,O.Chain.Aurora,O.Chain.Avalanche,O.Chain.Base,O.Chain.BinanceSmartChain,O.Chain.Bitcoin,O.Chain.BitcoinCash,O.Chain.Cosmos,O.Chain.Dash,O.Chain.Dogecoin,O.Chain.Ethereum,O.Chain.Gnosis,O.Chain.Litecoin,O.Chain.Near,O.Chain.Optimism,O.Chain.Polygon,O.Chain.Ripple,O.Chain.THORChain,O.Chain.Tron],walletType:O.WalletOption.LEDGER,connect:({addChain:L,supportedChains:m,walletType:y})=>async function _(T,G){let[B]=O.filterSupportedChains({chains:T,supportedChains:m,walletType:y});if(!B)return!1;let X=await YL({chain:B,derivationPath:G});return L({...X,chain:B,walletType:O.WalletOption.LEDGER}),!0}}),$L=c0(g0);function jL(L,m="t"){if(!L?.includes("=:"))return L;let y=L.includes(`:${m}:`)?L.split(`:${m}:`)[0]:L;return y?.substring(0,y.lastIndexOf(":"))}function n(L){if(Array.isArray(L))return L.forEach((_,T)=>{L[T]=n(_)}),L;if(typeof L!=="object")return L;let m={},y=Object.keys(L).sort();for(let _ of y)m[_]=n(L[_]);return m}function QL(L){return JSON.stringify(n(L))}async function YL({chain:L,derivationPath:m}){switch(L){case O.Chain.BitcoinCash:case O.Chain.Bitcoin:case O.Chain.Dash:case O.Chain.Dogecoin:case O.Chain.Litecoin:{let{getUtxoToolbox:y}=await import("@swapkit/toolboxes/utxo"),_=await y(L),T=await A({chain:L,derivationPath:m}),G=await S({chain:L,ledgerClient:T});return{..._,address:G,transfer:async(X)=>{let R=X.feeRate||(await _.getFeeRates())[O.FeeOption.Average],F=[O.Chain.Bitcoin].includes(L)?X.memo:jL(X.memo),{psbt:J,inputs:Z}=await _.createTransaction({...X,feeRate:R,memo:F,sender:G,fetchTxHex:!0}),Y=await T.signTransaction(J,Z);return await _.broadcastTx(Y)}}}case O.Chain.Ethereum:case O.Chain.Avalanche:case O.Chain.Arbitrum:case O.Chain.Optimism:case O.Chain.Polygon:case O.Chain.BinanceSmartChain:case O.Chain.Base:case O.Chain.Aurora:case O.Chain.Gnosis:{let{getEvmToolbox:y}=await import("@swapkit/toolboxes/evm"),_=await A({chain:L,derivationPath:m}),T=await S({chain:L,ledgerClient:_});return{...await y(L,{signer:_}),address:T}}case O.Chain.Cosmos:{let{createSigningStargateClient:y,getMsgSendDenom:_,getCosmosToolbox:T}=await import("@swapkit/toolboxes/cosmos"),G=await T(O.Chain.Cosmos),B=await A({chain:L,derivationPath:m}),X=await S({chain:L,ledgerClient:B});return{...G,address:X,transfer:async({assetValue:F,recipient:J,memo:Z})=>{if(!F)throw new O.SwapKitError("wallet_ledger_invalid_asset");let Y={amount:[{amount:F.getBaseValue("string"),denom:_(`u${F.symbol}`).toLowerCase()}],fromAddress:X,toAddress:J},H=await y(O.SKConfig.get("rpcUrls")[L],B,"0.007uatom"),{transactionHash:z}=await H.signAndBroadcast(X,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:Y}],2,Z);return z}}}case O.Chain.THORChain:{let{SignMode:y}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:_}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),T=await import("@cosmjs/proto-signing"),G=T.encodePubkey??T.default?.encodePubkey,B=T.makeAuthInfoBytes??T.default?.makeAuthInfoBytes,{createStargateClient:X,buildEncodedTxBody:R,getCosmosToolbox:F,buildAminoMsg:J,getDefaultChainFee:Z,fromBase64:Y,parseAminoMessageForDirectSigning:H}=await import("@swapkit/toolboxes/cosmos"),z=await F(L),q=await A({chain:L,derivationPath:m}),E=await S({chain:L,ledgerClient:q}),g=Z(L),{pubkey:G0,signTransaction:v0,sign:u0}=q,X0=async({memo:P="",assetValue:B0,...h0})=>{let R0=await z.getAccount(E);if(!R0)throw new O.SwapKitError("wallet_ledger_invalid_account");if(!B0)throw new O.SwapKitError("wallet_ledger_invalid_asset");if(!G0)throw new O.SwapKitError("wallet_ledger_pubkey_not_found");let{accountNumber:d0,sequence:i0}=R0,p=(i0||0).toString(),F0=n([J({sender:E,assetValue:B0,memo:P,...h0})]),o0=QL({account_number:d0?.toString(),chain_id:O.ChainId.THORChain,fee:g,memo:P,msgs:F0,sequence:p}),t=await v0(o0,p);if(!t)throw new O.SwapKitError("wallet_ledger_signing_error");let n0=G({type:"tendermint/PubKeySecp256k1",value:G0}),p0=F0.map(H),t0=await R({msgs:p0,chain:L,memo:P}),a0=B([{pubkey:n0,sequence:Number(p)}],g.amount,Number.parseInt(g.gas),void 0,void 0,y.SIGN_MODE_LEGACY_AMINO_JSON),s0=t?.[0]?.signature?Y(t[0].signature):Uint8Array.from([]),e0=_.fromPartial({bodyBytes:t0,authInfoBytes:a0,signatures:[s0]}),r0=_.encode(e0).finish(),{isStagenet:LL}=O.SKConfig.get("envs"),mL=await X(O.SKConfig.get("rpcUrls")[LL?O.StagenetChain.THORChain:O.Chain.THORChain]),{transactionHash:yL}=await mL.broadcastTx(r0);return yL};return{...z,address:E,deposit:(P)=>X0(P),transfer:(P)=>X0(P),signMessage:u0}}case O.Chain.Near:{let{getNearToolbox:y}=await import("@swapkit/toolboxes/near"),_=await A({chain:L,derivationPath:m}),T=await _.getAddress();return{...await y({signer:_}),address:T}}case O.Chain.Ripple:{let{getRippleToolbox:y}=await import("@swapkit/toolboxes/ripple"),_=await A({chain:L,derivationPath:m}),T=_.address;return{...await y({signer:_}),address:T}}case O.Chain.Tron:{let{createTronToolbox:y}=await import("@swapkit/toolboxes/tron"),_=await A({chain:L,derivationPath:m}),T=await S({chain:L,ledgerClient:_});return{...await y({signer:_}),address:T}}default:throw new O.SwapKitError("wallet_ledger_chain_not_supported",{chain:L})}}
3
-
4
- //# debugId=6F55F54433D22CAE64756E2164756E21
5
- //# sourceMappingURL=index.cjs.map