@swapkit/wallets 3.0.0-beta.2 → 3.0.0-beta.21
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.
- package/dist/chunk-2aa1w78q.js +3 -0
- package/dist/chunk-2aa1w78q.js.map +10 -0
- package/dist/{chunk-p1kdg37m.js → chunk-38ztynv0.js} +1 -1
- package/dist/{chunk-p1kdg37m.js.map → chunk-38ztynv0.js.map} +1 -1
- package/dist/chunk-ebfkk1jn.js +4 -0
- package/dist/{chunk-czhtd6cy.js.map → chunk-ebfkk1jn.js.map} +3 -3
- package/dist/chunk-k9q04afa.js +3 -0
- package/dist/{chunk-qadd75nn.js.map → chunk-k9q04afa.js.map} +3 -3
- package/dist/chunk-x5hgx9x9.js +3 -0
- package/dist/chunk-x5hgx9x9.js.map +10 -0
- package/dist/src/bitget/index.cjs +2 -2
- package/dist/src/bitget/index.cjs.map +3 -3
- package/dist/src/bitget/index.js +2 -2
- package/dist/src/bitget/index.js.map +3 -3
- package/dist/src/coinbase/index.cjs +2 -2
- package/dist/src/coinbase/index.cjs.map +3 -3
- package/dist/src/coinbase/index.js +2 -2
- package/dist/src/coinbase/index.js.map +3 -3
- package/dist/src/cosmostation/index.cjs +3 -0
- package/dist/src/cosmostation/index.cjs.map +10 -0
- package/dist/src/cosmostation/index.js +3 -0
- package/dist/src/cosmostation/index.js.map +10 -0
- package/dist/src/ctrl/index.cjs +2 -2
- package/dist/src/ctrl/index.cjs.map +3 -3
- package/dist/src/ctrl/index.js +2 -2
- package/dist/src/ctrl/index.js.map +3 -3
- package/dist/src/evm-extensions/index.cjs +2 -2
- package/dist/src/evm-extensions/index.cjs.map +3 -3
- package/dist/src/evm-extensions/index.js +2 -2
- package/dist/src/evm-extensions/index.js.map +3 -3
- package/dist/src/exodus/index.cjs +2 -2
- package/dist/src/exodus/index.cjs.map +3 -3
- package/dist/src/exodus/index.js +2 -2
- package/dist/src/exodus/index.js.map +3 -3
- package/dist/src/index.js +1 -1
- package/dist/src/keepkey/index.cjs +2 -2
- package/dist/src/keepkey/index.cjs.map +9 -9
- package/dist/src/keepkey/index.js +2 -2
- package/dist/src/keepkey/index.js.map +9 -9
- package/dist/src/keepkey-bex/index.cjs +2 -2
- package/dist/src/keepkey-bex/index.cjs.map +4 -4
- package/dist/src/keepkey-bex/index.js +2 -2
- package/dist/src/keepkey-bex/index.js.map +4 -4
- package/dist/src/keplr/index.cjs +2 -2
- package/dist/src/keplr/index.cjs.map +3 -3
- package/dist/src/keplr/index.js +2 -2
- package/dist/src/keplr/index.js.map +3 -3
- package/dist/src/keystore/index.cjs +2 -2
- package/dist/src/keystore/index.cjs.map +4 -4
- package/dist/src/keystore/index.js +2 -2
- package/dist/src/keystore/index.js.map +4 -4
- package/dist/src/ledger/index.cjs +3 -3
- package/dist/src/ledger/index.cjs.map +16 -15
- package/dist/src/ledger/index.js +3 -3
- package/dist/src/ledger/index.js.map +16 -15
- package/dist/src/okx/index.cjs +2 -2
- package/dist/src/okx/index.cjs.map +3 -3
- package/dist/src/okx/index.js +2 -2
- package/dist/src/okx/index.js.map +3 -3
- package/dist/src/onekey/index.cjs +2 -2
- package/dist/src/onekey/index.cjs.map +3 -3
- package/dist/src/onekey/index.js +2 -2
- package/dist/src/onekey/index.js.map +3 -3
- package/dist/src/phantom/index.js +1 -1
- package/dist/src/polkadotjs/index.js +1 -1
- package/dist/src/radix/index.cjs +2 -2
- package/dist/src/radix/index.cjs.map +3 -3
- package/dist/src/radix/index.js +2 -2
- package/dist/src/radix/index.js.map +3 -3
- package/dist/src/talisman/index.js +1 -1
- package/dist/src/trezor/index.cjs +2 -2
- package/dist/src/trezor/index.cjs.map +3 -3
- package/dist/src/trezor/index.js +2 -2
- package/dist/src/trezor/index.js.map +3 -3
- package/dist/src/walletconnect/index.cjs +2 -2
- package/dist/src/walletconnect/index.cjs.map +4 -4
- package/dist/src/walletconnect/index.js +2 -2
- package/dist/src/walletconnect/index.js.map +4 -4
- package/package.json +32 -27
- package/src/bitget/helpers.ts +4 -4
- package/src/coinbase/signer.ts +4 -4
- package/src/cosmostation/index.ts +142 -0
- package/src/ctrl/walletHelpers.ts +82 -70
- package/src/evm-extensions/index.ts +4 -3
- package/src/exodus/index.ts +8 -9
- package/src/keepkey/chains/cosmos.ts +44 -50
- package/src/keepkey/chains/evm.ts +16 -8
- package/src/keepkey/chains/mayachain.ts +3 -2
- package/src/keepkey/chains/thorchain.ts +3 -2
- package/src/keepkey/chains/utxo.ts +9 -2
- package/src/keepkey/coins.ts +10 -4
- package/src/keepkey/index.ts +15 -7
- package/src/keepkey-bex/index.ts +9 -14
- package/src/keepkey-bex/walletHelpers.ts +1 -1
- package/src/keplr/index.ts +4 -3
- package/src/keystore/helpers.ts +2 -4
- package/src/keystore/index.ts +1 -0
- package/src/ledger/clients/cosmos.ts +5 -4
- package/src/ledger/clients/evm.ts +7 -6
- package/src/ledger/clients/thorchain/helpers.ts +9 -4
- package/src/ledger/clients/thorchain/index.ts +3 -3
- package/src/ledger/clients/thorchain/lib.ts +3 -2
- package/src/ledger/clients/thorchain/utils.ts +20 -9
- package/src/ledger/clients/utxo.ts +3 -5
- package/src/ledger/clients/xrp.ts +66 -0
- package/src/ledger/cosmosTypes.ts +14 -10
- package/src/ledger/helpers/getLedgerAddress.ts +12 -3
- package/src/ledger/helpers/getLedgerClient.ts +56 -45
- package/src/ledger/helpers/getLedgerTransport.ts +5 -3
- package/src/ledger/index.ts +18 -7
- package/src/ledger/interfaces/CosmosLedgerInterface.ts +1 -2
- package/src/okx/helpers.ts +11 -9
- package/src/onekey/index.ts +3 -7
- package/src/radix/index.ts +4 -4
- package/src/trezor/evmSigner.ts +4 -4
- package/src/trezor/index.ts +14 -4
- package/src/types.ts +3 -0
- package/src/utils.ts +4 -0
- package/src/walletconnect/evmSigner.ts +6 -2
- package/src/walletconnect/index.ts +4 -4
- package/dist/chunk-bhfpfqc3.js +0 -3
- package/dist/chunk-bhfpfqc3.js.map +0 -10
- package/dist/chunk-czhtd6cy.js +0 -4
- package/dist/chunk-q81hzyra.js +0 -3
- package/dist/chunk-q81hzyra.js.map +0 -10
- package/dist/chunk-qadd75nn.js +0 -3
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/keystore/index.ts", "../src/keystore/helpers.ts"],
|
|
4
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 ],\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 { 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\");\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
|
|
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 ],\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
7
|
],
|
|
8
|
-
"mappings": "iGAAA,cACE,kBACA,eAEA,2BACA,gBACA,kBACA,kBACA,2BACA,0BACA,yBCVF,2BAAS,sBAAkB,qBAC3B,mBAAS,uCAeT,eAAe,CAAQ,CAAC,EAA2B,CACjD,IAAQ,eAAc,cAAa,
|
|
9
|
-
"debugId": "
|
|
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,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": "4EFBC8E2E4753BB764756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var e0={};t0(e0,{ledgerWallet:()=>K0,LEDGER_SUPPORTED_CHAINS:()=>n0});module.exports=o0(e0);var J=require("@swapkit/helpers");var H=require("@swapkit/helpers"),E=async({chain:L,ledgerClient:_})=>{if(!_)return"";switch(L){case H.Chain.Cosmos:case H.Chain.THORChain:return _.connect();case H.Chain.Ethereum:case H.Chain.BinanceSmartChain:case H.Chain.Avalanche:case H.Chain.Polygon:case H.Chain.Arbitrum:case H.Chain.Optimism:case H.Chain.Base:return _.getAddress();case H.Chain.Bitcoin:case H.Chain.BitcoinCash:case H.Chain.Dash:case H.Chain.Dogecoin:case H.Chain.Litecoin:{let O=_;await O.connect();let B=await O.getAddress();return L===H.Chain.BitcoinCash?B.replace("bitcoincash:",""):B}default:throw new H.SwapKitError("wallet_chain_not_supported",{wallet:H.WalletOption.LEDGER,chain:L})}};var Y=require("@swapkit/helpers");var x=require("@swapkit/helpers");var w=require("@swapkit/helpers");var C=85,d=250;var K={GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2,GET_ADDR_SECP256K1:4},k={INIT:0,ADD:1,LAST:2},i={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},f={JSON:0},R={NoError:36864},G0={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 U(L){if(L in G0)return G0[L];return`Unknown Status Code: ${L}`}function h0(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function M(L){if(L){if(h0(L)){if(Object.prototype.hasOwnProperty.call(L,"statusCode"))return{return_code:L.statusCode,error_message:U(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 p(L){return L.send(85,K.GET_VERSION,0,0).then((_)=>{let O=_.slice(-2),B=O[0]*256+O[1],G=0;if(_.length>=9)G=(_[5]<<24)+(_[6]<<16)+(_[7]<<8)+(_[8]<<0);return{return_code:B,error_message:U(B),test_mode:_[0]!==0,major:_[1],minor:_[2],patch:_[3],device_locked:_[4]===1,target_id:G.toString(16)}},M)}function B0(L){if(L==null||L.length<3)throw new Error("Invalid path.");if(L.length>10)throw new Error("Invalid path. Length should be <= 10");let _=Buffer.alloc(1+4*L.length);_.writeUInt8(L.length,0);for(let O=0;O<L.length;O+=1){let B=L[O]||0;if(O<3)B|=2147483648;_.writeInt32LE(B,1+O*4)}return _}async function o(L,_,O,B,G=f.JSON){return L.transport.send(C,K.SIGN_SECP256K1,_,G,B,[R.NoError,27012,27264]).then((j)=>{let X=j.slice(-2),F=X[0]*256+X[1],W=U(F);if(F===27264||F===27012)W=`${W} : ${j.slice(0,j.length-2).toString("ascii")}`;let $=null;if(j.length>2)$=j.slice(0,j.length-2);return{signature:$,return_code:F,error_message:W}},M)}function d0(L){if(L.length!==65)throw new Error("decompressed public key length should be 65 bytes");let _=L.slice(33,65),O=Buffer.from([2+(_[_.length-1]&1)]);return Buffer.concat([O,L.slice(1,33)])}async function j0(L,_){return L.transport.send(C,K.INS_PUBLIC_KEY_SECP256K1,0,0,_,[R.NoError]).then((O)=>{let B=O.slice(-2),G=B[0]*256+B[1],j=Buffer.from(O.slice(0,65));return{pk:j,compressed_pk:d0(j),return_code:G,error_message:U(G)}},M)}function F0(L){if(!L||L.length!==5)throw new Error("Invalid path.");let _=Buffer.alloc(20);return _.writeUInt32LE(2147483648+L[0],0),_.writeUInt32LE(2147483648+L[1],4),_.writeUInt32LE(2147483648+L[2],8),_.writeUInt32LE(L[3],12),_.writeUInt32LE(L[4],16),_}function X0(L,_,O,B,G=f.JSON){let j=k.ADD;if(_===1)j=k.INIT;if(_===O)j=k.LAST;return o(L,j,0,B,G)}async function J0(L,_){return L.transport.send(C,K.GET_ADDR_SECP256K1,0,0,_,[R.NoError]).then((O)=>{let B=O.slice(-2),G=B[0]*256+B[1];return{pk:"OBSOLETE PROPERTY",compressed_pk:Buffer.from(O.slice(0,33)),return_code:G,error_message:U(G)}},M)}class l{transport;versionResponse;constructor(L){if(!L)throw new Error("Transport has not been defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new Error("Invalid HRP");let _=Buffer.alloc(1+L.length);return _.writeUInt8(L.length,0),_.write(L,1),_}async serializePath(L){if(this.versionResponse=await p(this.transport),this.versionResponse.return_code!==R.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return B0(L);case 2:return F0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,_){let O=await this.serializePath(L),B=[];B.push(O);for(let G=0;G<_.length;G+=d){let j=G+d;if(G>_.length)j=_.length;B.push(_.slice(G,j))}return B}async getVersion(){try{return this.versionResponse=await p(this.transport),this.versionResponse}catch(L){return M(L)}}async appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let _=L.slice(-2),O=_[0]*256+_[1],B="",G="",j=0,X=0;if(L[0]!==1)return{return_code:36865,error_message:"response format ID not recognized"};let F=L[1];B=L.slice(2,2+F).toString("ascii");let W=2+F,$=L[W];W+=1,G=L.slice(W,W+$).toString("ascii"),W+=$;let Q=L[W];return W+=1,j=Q,X=L[W],{return_code:O,error_message:U(O),appName:B,appVersion:G,flagLen:j,flagsValue:X,flag_recovery:(X&1)!==0,flag_signed_mcu_code:(X&2)!==0,flag_onboarded:(X&4)!==0,flag_pin_validated:(X&128)!==0}},M)}async deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[R.NoError,28160]).then((L)=>{let _=L.slice(-2),O=_[0]*256+_[1];if(O===28160)return{return_code:O,error_message:"This command is only available in the Dashboard"};let B=L.slice(0,4).toString("hex"),G=4,j=L[G];G+=1;let X=L.slice(G,G+j).toString();G+=j;let F=L[G];G+=1;let W=L.slice(G,G+F).toString("hex");G+=F;let $=L[G];G+=1;let Q=L.slice(G,G+$);if(Q[$-1]===0)Q=L.slice(G,G+$-1);let T=Q.toString();return{return_code:O,error_message:U(O),targetId:B,seVersion:X,flag:W,mcuVersion:T}},M)}async publicKey(L){try{let _=await this.serializePath(L);switch(this.versionResponse.major){case 1:return j0(this,_);case 2:{let O=Buffer.concat([l.serializeHRP("thor"),_]);return J0(this,O)}default:return{return_code:25600,error_message:"App Version is not supported"}}}catch(_){return M(_)}}async getAddressAndPubKey(L,_,O=!1){return this.serializePath(L).then((B)=>{let G=Buffer.concat([l.serializeHRP(_),B]);return this.transport.send(C,K.GET_ADDR_SECP256K1,O?i.SHOW_ADDRESS_IN_DEVICE:i.ONLY_RETRIEVE,0,G,[R.NoError]).then((j)=>{let X=j.slice(-2),F=X[0]*256+X[1],W=Buffer.from(j.slice(0,33));return{bech32_address:Buffer.from(j.slice(33,-2)).toString(),compressed_pk:W,return_code:F,error_message:U(F)}},M)}).catch((B)=>M(B))}showAddressAndPubKey(L,_){return this.getAddressAndPubKey(L,_,!0)}signSendChunk(L,_,O,B=f.JSON){switch(this.versionResponse.major){case 1:return o(this,L,_,O,B);case 2:return X0(this,L,_,O,B);default:return{return_code:25600,error_message:"App Version is not supported"}}}async sign(L,_,O=f.JSON){let B=Buffer.from(_),G=[],j;try{G=await this.signGetChunks(L,B),j=await this.signSendChunk(1,G.length,G[0],O)}catch(F){M(F)}let X={return_code:j.return_code,error_message:j.error_message,signature:null};for(let F=1;F<G.length;F+=1)if(X=await this.signSendChunk(1+F,G.length,G[F],O),X.return_code!==R.NoError)break;return{return_code:X.return_code,error_message:X.error_message,signature:X.signature}}}var b=require("@swapkit/helpers"),t=()=>navigator?.usb,i0=async()=>{let L=t();if(typeof L?.getDevices!=="function")return[];let{ledgerUSBVendorId:_}=await import("@ledgerhq/devices"),B=(await L?.getDevices()).filter((G)=>G.vendorId===_);if(B.length>0)return B[0];return L?.requestDevice({filters:[{vendorId:_}]})},N=async()=>{let L=await i0();if(!L)throw new b.SwapKitError("wallet_ledger_device_not_found");if(await L.open(),L.configuration===null)await L.selectConfiguration(1);try{await L.reset()}catch{}let _=L.configurations[0].interfaces.find(({alternates:F})=>F.some(({interfaceClass:W})=>W===255));if(!_)throw await L.close(),new b.SwapKitError("wallet_ledger_connection_error");try{await L.claimInterface(_.interfaceNumber)}catch(F){throw await L.close(),new b.SwapKitError("wallet_ledger_connection_claimed",F)}let{default:O}=await import("@ledgerhq/hw-transport-webusb");if(!await O.isSupported())throw new Error("WebUSB not supported");let{DisconnectedDevice:G}=await import("@ledgerhq/errors"),j=new O(L,_.interfaceNumber),X=(F)=>{if(L===F.device)t()?.removeEventListener("disconnect",X),j._emitDisconnect(new G)};return t()?.addEventListener("disconnect",X),j};class V{ledgerTimeout=50000;derivationPath=w.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 N():this.transport,this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new l(this.transport):this.ledgerApp;break}case"cosmos":{let{default:_}=await import("@ledgerhq/hw-app-cosmos");this.ledgerApp=L||!this.ledgerApp?new _(this.transport):this.ledgerApp}}return this.ledgerApp}catch(_){throw new w.SwapKitError("wallet_ledger_connection_error",_)}};validateResponse=(L,_)=>{switch(L){case w.LedgerErrorCode.NoError:return;case w.LedgerErrorCode.LockedDevice:throw new w.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${_}`});case w.LedgerErrorCode.TC_NotFound:throw new w.SwapKitError("wallet_ledger_device_not_found");default:{console.error(`Ledger error: ${L} ${_}`);break}}}}class n extends V{pubKey=null;derivationPath;constructor(L=x.NetworkDerivationPath.GAIA){super();this.chain="cosmos",this.derivationPath=x.derivationPathToString(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:_}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),_};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:O,error_message:B,signature:G}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new Error("Public Key not found");return this.validateResponse(O,B),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:G}]};signAmino=async(L,_)=>{await this.checkOrCreateTransportAndLedger(!0);let O=await this.getAccounts();if(O.findIndex((Q)=>Q.address===L)===-1)throw new Error(`Address ${L} not found in wallet`);let{encodeSecp256k1Signature:G,serializeSignDoc:j}=await import("@cosmjs/amino"),{Secp256k1Signature:X}=await import("@cosmjs/crypto"),F=j(_),W=await this.ledgerApp.sign(this.derivationPath,F);this.validateResponse(W.return_code,W.error_message);let $=X.fromDer(W.signature).toFixedLength();return{signed:_,signature:G(O[0].pubkey,$)}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}var m=require("@swapkit/helpers"),W0=require("ethers");class y extends W0.AbstractSigner{chainId=m.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;constructor({provider:L,derivationPath:_=m.NetworkDerivationPath.OP,chainId:O=m.ChainId.Optimism}){super(L);this.chainId=O||m.ChainId.Ethereum,this.derivationPath=typeof _==="string"?_:m.derivationPathToString(_),Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new y({provider:L,derivationPath:this.derivationPath,chainId:this.chainId});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await N(),{default:_}=await import("@ledgerhq/hw-app-eth");this.ledgerApp=new _(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new Error("Could not 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:_}=await import("ethers");await this.createTransportAndLedger();let O=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!O)throw new Error("Signing failed");return O.r=`0x${O.r}`,O.s=`0x${O.s}`,_.from(O).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new Error("No provider set");let _=await this.signTransaction(L);return await this.provider.broadcastTransaction(_)};signTypedData(){throw new Error("Method not implemented.")}signTransaction=async(L)=>{let{Transaction:_}=await import("ethers");await this.createTransportAndLedger();let O=await this.provider?.getTransactionCount(L.from||await this.getAddress()),B={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||O||0).toString()):O,to:L.to?.toString(),value:L.value,type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0},G=_.from(B).unsignedSerialized.slice(2),{ledgerService:j}=await import("@ledgerhq/hw-app-eth"),X=await j.resolveTransaction(G,{},{externalPlugins:!0,erc20:!0}),F=await this.ledgerApp?.signTransaction(this.derivationPath,G,X);if(!F)throw new Error("Could not sign transaction");let{r:W,s:$,v:Q}=F;return _.from({...B,signature:{v:Number(BigInt(Q)),r:`0x${W}`,s:`0x${$}`}}).serialized}}var $0=({provider:L,derivationPath:_})=>new y({chainId:m.ChainId.Ethereum,provider:L,derivationPath:_}),Q0=({provider:L,derivationPath:_})=>new y({chainId:m.ChainId.Avalanche,provider:L,derivationPath:_}),Y0=({provider:L,derivationPath:_})=>new y({chainId:m.ChainId.BinanceSmartChain,provider:L,derivationPath:_}),Z0=({provider:L,derivationPath:_})=>new y({chainId:m.ChainId.Arbitrum,provider:L,derivationPath:_}),H0=({provider:L,derivationPath:_})=>new y({chainId:m.ChainId.Polygon,provider:L,derivationPath:_}),m0=({provider:L,derivationPath:_})=>new y({chainId:m.ChainId.Optimism,provider:L,derivationPath:_}),M0=({provider:L,derivationPath:_})=>new y({chainId:m.ChainId.Base,provider:L,derivationPath:_});var U0=require("@scure/base"),w0=require("@swapkit/helpers");var T0=require("@scure/base"),a=(L)=>{if(L.length<64)throw new Error("Invalid Signature: Too short");if(L[0]!==48)throw new Error("Invalid Ledger Signature TLV encoding: expected first byte 0x30");if(L[1]+2!==L.length)throw new Error("Invalid Signature: signature length does not match TLV");if(L[2]!==2)throw new Error("Invalid Ledger Signature TLV encoding: expected length type 0x02");let _=L[3],O=L.slice(4,_+4);if(O.length===33&&O[0]===0)O=O.slice(1,33);else if(O.length===33)throw new Error('Invalid signature: "r" too long');while(O.length<32)O.unshift(0);if(L[_+4]!==2)throw new Error("Invalid Ledger Signature TLV encoding: expected length type 0x02");let B=L[_+5];if(4+_+2+B!==L.length)throw new Error("Invalid Ledger Signature: TLV byte lengths do not match message length");let G=L.slice(_+6,L.length);if(G.length===33&&G[0]===0)G=G.slice(1,33);else if(G.length===33)throw new Error('Invalid signature: "s" too long');while(G.length<32)G.unshift(0);if(O.length!==32||G.length!==32)throw new Error("Invalid signatures: must be 32 bytes each");return T0.base64.encode(Buffer.concat([O,G]))};class s extends V{pubKey=null;derivationPath;constructor(L=w0.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:_}=await this.getAddressAndPubKey();return this.pubKey=U0.base64.encode(L),_};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,_="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:O,error_message:B,signature:G}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new Error("Public Key not found");return this.validateResponse(O,B),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:_,signature:a(G)}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:O,signature:B}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new Error("Public Key not found");return this.validateResponse(_,O),a(B)}}var q=require("@swapkit/helpers");var p0=async({psbt:L,inputUtxos:_,btcApp:O,derivationPath:B},G)=>{let{Transaction:j}=await import("bitcoinjs-lib"),X=_.map((T)=>{let D=j.fromHex(T.txHex||"");return[O.splitTransaction(D.toHex(),D.hasWitnesses()),T.index,void 0,void 0]}),F=L.data.globalMap.unsignedTx.toBuffer().toString("hex"),W=O.splitTransaction(F,!0),$=O.serializeTransactionOutputs(W).toString("hex"),Q={additionals:["bech32"],associatedKeysets:X.map(()=>B),inputs:X,outputScriptHex:$,segwit:!0,useTrustedInputForSegwit:!0};return O.createPaymentTransaction({...Q,...G})},A=({chain:L,additionalSignParams:_})=>{let O,B=null;async function G(X=!0){if(X&&!O)new q.SwapKitError("wallet_ledger_connection_error",{message:`Ledger connection failed:
|
|
2
|
-
${JSON.stringify({checkBtcApp:
|
|
1
|
+
var RL={};TL(RL,{ledgerWallet:()=>K0,LEDGER_SUPPORTED_CHAINS:()=>XL});module.exports=OL(RL);var T=require("@swapkit/helpers");var $=require("@swapkit/helpers"),K=async({chain:L,ledgerClient:m})=>{if(!m)return"";switch(L){case $.Chain.Cosmos:case $.Chain.THORChain:return m.connect();case $.Chain.Ethereum:case $.Chain.BinanceSmartChain:case $.Chain.Avalanche:case $.Chain.Polygon:case $.Chain.Arbitrum:case $.Chain.Optimism:case $.Chain.Base:return m.getAddress();case $.Chain.Bitcoin:case $.Chain.BitcoinCash:case $.Chain.Dash:case $.Chain.Dogecoin:case $.Chain.Litecoin:{let _=m;await _.connect();let O=await _.getAddress();return L===$.Chain.BitcoinCash?O.replace("bitcoincash:",""):O}case $.Chain.Ripple:return m.address;default:throw new $.SwapKitError("wallet_chain_not_supported",{wallet:$.WalletOption.LEDGER,chain:L})}};var J=require("@swapkit/helpers");var P=require("@swapkit/helpers");var U=require("@swapkit/helpers");var r=require("@swapkit/helpers");var I=85,o=250;var f={GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2,GET_ADDR_SECP256K1:4},h={INIT:0,ADD:1,LAST:2},p={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},E={JSON:0},N={NoError:36864},F0={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 Z(L){if(L in F0)return F0[L];return`Unknown Status Code: ${L}`}function a0(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function Y(L){if(L){if(a0(L)){if(Object.prototype.hasOwnProperty.call(L,"statusCode"))return{return_code:L.statusCode,error_message:Z(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 a(L){return L.send(85,f.GET_VERSION,0,0).then((m)=>{let _=m.slice(-2),O=_[0]*256+_[1],y=0;if(m.length>=9)y=(m[5]<<24)+(m[6]<<16)+(m[7]<<8)+(m[8]<<0);return{return_code:O,error_message:Z(O),test_mode:m[0]!==0,major:m[1],minor:m[2],patch:m[3],device_locked:m[4]===1,target_id:y.toString(16)}},Y)}var b=require("@swapkit/helpers");function R0(L){if(L==null||L.length<3)throw new b.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new b.SwapKitError("wallet_ledger_invalid_params",{reason:"Path too long"});let m=Buffer.alloc(1+4*L.length);m.writeUInt8(L.length,0);for(let _=0;_<L.length;_+=1){let O=L[_]||0;if(_<3)O|=2147483648;m.writeInt32LE(O,1+_*4)}return m}async function s(L,m,_,O,y=E.JSON){return L.transport.send(I,f.SIGN_SECP256K1,m,y,O,[N.NoError,27012,27264]).then((X)=>{let G=X.slice(-2),B=G[0]*256+G[1],F=Z(B);if(B===27264||B===27012)F=`${F} : ${X.slice(0,X.length-2).toString("ascii")}`;let R=null;if(X.length>2)R=X.slice(0,X.length-2);return{signature:R,return_code:B,error_message:F}},Y)}function s0(L){if(L.length!==65)throw new b.SwapKitError("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let m=L.slice(33,65),_=Buffer.from([2+(m[m.length-1]&1)]);return Buffer.concat([_,L.slice(1,33)])}async function W0(L,m){return L.transport.send(I,f.INS_PUBLIC_KEY_SECP256K1,0,0,m,[N.NoError]).then((_)=>{let O=_.slice(-2),y=O[0]*256+O[1],X=Buffer.from(_.slice(0,65));return{pk:X,compressed_pk:s0(X),return_code:y,error_message:Z(y)}},Y)}function j0(L){if(!L||L.length!==5)throw new b.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 J0(L,m,_,O,y=E.JSON){let X=h.ADD;if(m===1)X=h.INIT;if(m===_)X=h.LAST;return s(L,X,0,O,y)}async function $0(L,m){return L.transport.send(I,f.GET_ADDR_SECP256K1,0,0,m,[N.NoError]).then((_)=>{let O=_.slice(-2),y=O[0]*256+O[1];return{pk:"OBSOLETE PROPERTY",compressed_pk:Buffer.from(_.slice(0,33)),return_code:y,error_message:Z(y)}},Y)}class k{transport;versionResponse;constructor(L){if(!L)throw new r.SwapKitError("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new r.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 a(this.transport),this.versionResponse.return_code!==N.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return R0(L);case 2:return j0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,m){let _=await this.serializePath(L),O=[];O.push(_);for(let y=0;y<m.length;y+=o){let X=y+o;if(y>m.length)X=m.length;O.push(m.slice(y,X))}return O}async getVersion(){try{return this.versionResponse=await a(this.transport),this.versionResponse}catch(L){return Y(L)}}async appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let m=L.slice(-2),_=m[0]*256+m[1],O="",y="",X=0,G=0;if(L[0]!==1)return{return_code:36865,error_message:"response format ID not recognized"};let B=L[1];O=L.slice(2,2+B).toString("ascii");let F=2+B,R=L[F];F+=1,y=L.slice(F,F+R).toString("ascii"),F+=R;let W=L[F];return F+=1,X=W,G=L[F],{return_code:_,error_message:Z(_),appName:O,appVersion:y,flagLen:X,flagsValue:G,flag_recovery:(G&1)!==0,flag_signed_mcu_code:(G&2)!==0,flag_onboarded:(G&4)!==0,flag_pin_validated:(G&128)!==0}},Y)}async deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[N.NoError,28160]).then((L)=>{let m=L.slice(-2),_=m[0]*256+m[1];if(_===28160)return{return_code:_,error_message:"This command is only available in the Dashboard"};let O=L.slice(0,4).toString("hex"),y=4,X=L[y];y+=1;let G=L.slice(y,y+X).toString();y+=X;let B=L[y];y+=1;let F=L.slice(y,y+B).toString("hex");y+=B;let R=L[y];y+=1;let W=L.slice(y,y+R);if(W[R-1]===0)W=L.slice(y,y+R-1);let M=W.toString();return{return_code:_,error_message:Z(_),targetId:O,seVersion:G,flag:F,mcuVersion:M}},Y)}async publicKey(L){try{let m=await this.serializePath(L);switch(this.versionResponse.major){case 1:return W0(this,m);case 2:{let _=Buffer.concat([k.serializeHRP("thor"),m]);return $0(this,_)}default:return{return_code:25600,error_message:"App Version is not supported"}}}catch(m){return Y(m)}}async getAddressAndPubKey(L,m,_=!1){return this.serializePath(L).then((O)=>{let y=Buffer.concat([k.serializeHRP(m),O]);return this.transport.send(I,f.GET_ADDR_SECP256K1,_?p.SHOW_ADDRESS_IN_DEVICE:p.ONLY_RETRIEVE,0,y,[N.NoError]).then((X)=>{let G=X.slice(-2),B=G[0]*256+G[1],F=Buffer.from(X.slice(0,33));return{bech32_address:Buffer.from(X.slice(33,-2)).toString(),compressed_pk:F,return_code:B,error_message:Z(B)}},Y)}).catch((O)=>Y(O))}showAddressAndPubKey(L,m){return this.getAddressAndPubKey(L,m,!0)}signSendChunk(L,m,_,O=E.JSON){switch(this.versionResponse.major){case 1:return s(this,L,m,_,O);case 2:return J0(this,L,m,_,O);default:return{return_code:25600,error_message:"App Version is not supported"}}}async sign(L,m,_=E.JSON){let O=Buffer.from(m),y=[],X;try{y=await this.signGetChunks(L,O),X=await this.signSendChunk(1,y.length,y[0],_)}catch(B){Y(B)}let G={return_code:X.return_code,error_message:X.error_message,signature:null};for(let B=1;B<y.length;B+=1)if(G=await this.signSendChunk(1+B,y.length,y[B],_),G.return_code!==N.NoError)break;return{return_code:G.return_code,error_message:G.error_message,signature:G.signature}}}var x=require("@swapkit/helpers"),e=()=>navigator?.usb,r0=async()=>{let L=e();if(typeof L?.getDevices!=="function")return[];let{ledgerUSBVendorId:m}=await import("@ledgerhq/devices"),O=(await L?.getDevices()).filter((y)=>y.vendorId===m);if(O.length>0)return O[0];return L?.requestDevice({filters:[{vendorId:m}]})},H=async()=>{let L=await r0();if(!L)throw new x.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:B})=>B.some(({interfaceClass:F})=>F===255));if(!m)throw await L.close(),new x.SwapKitError("wallet_ledger_connection_error");try{await L.claimInterface(m.interfaceNumber)}catch(B){throw await L.close(),new x.SwapKitError("wallet_ledger_connection_claimed",B)}let _=(await import("@ledgerhq/hw-transport-webusb")).default;if(!await _.isSupported())throw new x.SwapKitError("wallet_ledger_webusb_not_supported");let{DisconnectedDevice:y}=await import("@ledgerhq/errors"),X=new _(L,m.interfaceNumber),G=(B)=>{if(L===B.device)e()?.removeEventListener("disconnect",G),X._emitDisconnect(new y)};return e()?.addEventListener("disconnect",G),X};class g{ledgerTimeout=50000;derivationPath=U.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 H():this.transport,this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new k(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 U.SwapKitError("wallet_ledger_connection_error",m)}};validateResponse=(L,m)=>{switch(L){case U.LedgerErrorCode.NoError:return;case U.LedgerErrorCode.LockedDevice:throw new U.SwapKitError("wallet_ledger_device_locked",{message:`Ledger is locked: ${m}`});case U.LedgerErrorCode.TC_NotFound:throw new U.SwapKitError("wallet_ledger_device_not_found");default:break}}}class L0 extends g{pubKey=null;derivationPath;constructor(L=P.NetworkDerivationPath.GAIA){super();this.chain="cosmos",this.derivationPath=P.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:_,error_message:O,signature:y}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new P.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,O),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:y}]};signAmino=async(L,m)=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAccounts();if(_.findIndex((W)=>W.address===L)===-1)throw new P.SwapKitError("wallet_ledger_address_not_found",{address:L});let{encodeSecp256k1Signature:y,serializeSignDoc:X}=(await import("@cosmjs/amino")).default,{Secp256k1Signature:G}=(await import("@cosmjs/crypto")).default,B=X(m),F=await this.ledgerApp.sign(this.derivationPath,B);this.validateResponse(F.return_code,F.error_message);let R=G.fromDer(F.signature).toFixedLength();return{signed:m,signature:y(_[0].pubkey,R)}};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"),Q0=require("ethers");class w extends Q0.AbstractSigner{chainId=Q.ChainId.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;constructor({provider:L,derivationPath:m=Q.NetworkDerivationPath.OP,chainId:_=Q.ChainId.Optimism}){super(L);this.chainId=_||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 w({provider:L,derivationPath:this.derivationPath,chainId:this.chainId});checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=await H(),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 _=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!_)throw new Q.SwapKitError("wallet_ledger_signing_error");return _.r=`0x${_.r}`,_.s=`0x${_.s}`,m.from(_).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 _=await this.provider?.getTransactionCount(L.from||await this.getAddress()),O={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||_||0).toString()):_,to:L.to?.toString(),value:L.value,type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0},y=m.from(O).unsignedSerialized.slice(2),{ledgerService:X}=await import("@ledgerhq/hw-app-eth"),G=await X.resolveTransaction(y,{},{externalPlugins:!0,erc20:!0}),B=await this.ledgerApp?.signTransaction(this.derivationPath,y,G);if(!B)throw new Q.SwapKitError("wallet_ledger_signing_error");let{r:F,s:R,v:W}=B;return m.from({...O,signature:{v:Number(BigInt(W)),r:`0x${F}`,s:`0x${R}`}}).serialized}}var Y0=({provider:L,derivationPath:m})=>new w({chainId:Q.ChainId.Ethereum,provider:L,derivationPath:m}),M0=({provider:L,derivationPath:m})=>new w({chainId:Q.ChainId.Avalanche,provider:L,derivationPath:m}),Z0=({provider:L,derivationPath:m})=>new w({chainId:Q.ChainId.BinanceSmartChain,provider:L,derivationPath:m}),H0=({provider:L,derivationPath:m})=>new w({chainId:Q.ChainId.Arbitrum,provider:L,derivationPath:m}),U0=({provider:L,derivationPath:m})=>new w({chainId:Q.ChainId.Polygon,provider:L,derivationPath:m}),C0=({provider:L,derivationPath:m})=>new w({chainId:Q.ChainId.Optimism,provider:L,derivationPath:m}),N0=({provider:L,derivationPath:m})=>new w({chainId:Q.ChainId.Base,provider:L,derivationPath:m});var D0=require("@scure/base"),c=require("@swapkit/helpers");var w0=require("@scure/base"),C=require("@swapkit/helpers"),m0=(L)=>{if(L.length<64)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let m=L[3],_=L.slice(4,m+4);if(_.length===33&&_[0]===0)_=_.slice(1,33);else if(_.length===33)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"r too long"});while(_.length<32)_.unshift(0);if(L[m+4]!==2)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let O=L[m+5];if(4+m+2+O!==L.length)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let y=L.slice(m+6,L.length);if(y.length===33&&y[0]===0)y=y.slice(1,33);else if(y.length===33)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"s too long"});while(y.length<32)y.unshift(0);if(_.length!==32||y.length!==32)throw new C.SwapKitError("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return w0.base64.encode(Buffer.concat([_,y]))};class _0 extends g{pubKey=null;derivationPath;constructor(L=c.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=D0.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:_,error_message:O,signature:y}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new c.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(_,O),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:m,signature:m0(y)}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:m,error_message:_,signature:O}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new c.SwapKitError("wallet_ledger_pubkey_not_found");return this.validateResponse(m,_),m0(O)}}var l=require("@swapkit/helpers"),q0=require("bitcoinjs-lib");var e0=async({psbt:L,inputUtxos:m,btcApp:_,derivationPath:O},y)=>{let X=m.map((W)=>{let M=q0.Transaction.fromHex(W.txHex||"");return[_.splitTransaction(M.toHex(),M.hasWitnesses()),W.index,void 0,void 0]}),G=L.data.globalMap.unsignedTx.toBuffer().toString("hex"),B=_.splitTransaction(G,!0),F=_.serializeTransactionOutputs(B).toString("hex"),R={additionals:["bech32"],associatedKeysets:X.map(()=>O),inputs:X,outputScriptHex:F,segwit:!0,useTrustedInputForSegwit:!0};return _.createPaymentTransaction({...R,...y})},v=({chain:L,additionalSignParams:m})=>{let _,O=null;async function y(G=!0){if(G&&!_)new l.SwapKitError("wallet_ledger_connection_error",{message:`Ledger connection failed:
|
|
2
|
+
${JSON.stringify({checkBtcApp:G,btcApp:_})}`});O||=await H()}async function X(){O=await H(),_=new(await import("@ledgerhq/hw-app-btc")).default({transport:O,currency:L})}return(G)=>{let B=typeof G==="string"?G:l.derivationPathToString(G),F=l.getWalletFormatFor(B);return{connect:async()=>{await y(!1),_=new(await import("@ledgerhq/hw-app-btc")).default({transport:O,currency:L})},getExtendedPublicKey:async(R="84'/0'/0'",W=76067358)=>{return await y(!1),_.getWalletXpub({path:R,xpubVersion:W})},signTransaction:async(R,W)=>{return await X(),e0({psbt:R,derivationPath:B,btcApp:_,inputUtxos:W},m)},getAddress:async()=>{let{toCashAddress:R}=await import("@swapkit/toolboxes/utxo");await y(!1);let{bitcoinAddress:W}=await _.getWalletPublicKey(B,{format:F});if(!W)throw new l.SwapKitError("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${B}`});return L==="bitcoin-cash"&&F==="legacy"?R(W).replace(/(bchtest:|bitcoincash:)/,""):W}}}},z0=v({chain:"bitcoin"}),f0=v({chain:"litecoin"}),P0=v({chain:"bitcoin-cash",additionalSignParams:{segwit:!1,additionals:["abc"],sigHashType:65}}),l0=v({chain:"dogecoin",additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1}}),S0=v({chain:"dash",additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1}});var V=require("@swapkit/helpers"),y0=require("ripple-binary-codec");var LL=2147483648;function mL(L){let m={};for(let _ in L)if(L[_]!==null&&L[_]!==void 0)m[_]=L[_];return m}async function _L(L){let{default:m}=await import("@ledgerhq/hw-app-xrp");return new m(L)}function yL({instance:L,derivationPath:m}){return L.getAddress(m)}var A0=async(L)=>{let m=V.derivationPathToString(L||V.NetworkDerivationPath[V.Chain.Ripple]),_=await H(),O=await _L(_),{address:y,publicKey:X}=await yL({instance:O,derivationPath:m});async function G(B){let{hashes:F}=await import("@swapkit/toolboxes/ripple"),W={...mL(B),Flags:B.Flags||LL,SigningPubKey:X.toUpperCase()},M=y0.encode(W),D=await O.signTransaction(m,M),q=y0.encode({...W,TxnSignature:D}),A=F.hashSignedTx(q);return{tx_blob:q,hash:A}}return{address:y,sign:G}};var S=async({chain:L,derivationPath:m})=>{let{match:_}=await import("ts-pattern");return _(L).returnType().with(J.Chain.THORChain,()=>Promise.resolve(new _0(m))).with(J.Chain.Cosmos,()=>Promise.resolve(new L0(m))).with(J.Chain.Bitcoin,()=>Promise.resolve(z0(m))).with(J.Chain.BitcoinCash,()=>Promise.resolve(P0(m))).with(J.Chain.Dash,()=>Promise.resolve(S0(m))).with(J.Chain.Dogecoin,()=>Promise.resolve(l0(m))).with(J.Chain.Litecoin,()=>Promise.resolve(f0(m))).with(J.Chain.Ripple,()=>Promise.resolve(A0(m))).with(J.Chain.Arbitrum,J.Chain.Avalanche,J.Chain.BinanceSmartChain,J.Chain.Ethereum,J.Chain.Optimism,J.Chain.Polygon,J.Chain.Base,async()=>{let{getProvider:O}=await import("@swapkit/toolboxes/evm"),y={provider:await O(L),derivationPath:m};return _(L).with(J.Chain.BinanceSmartChain,()=>Z0(y)).with(J.Chain.Avalanche,()=>M0(y)).with(J.Chain.Arbitrum,()=>H0(y)).with(J.Chain.Optimism,()=>C0(y)).with(J.Chain.Polygon,()=>U0(y)).with(J.Chain.Base,()=>N0(y)).otherwise(()=>Y0(y))}).otherwise(()=>{throw new J.SwapKitError("wallet_chain_not_supported",{wallet:J.WalletOption.LEDGER,chain:L})})};var K0=T.createWallet({name:"connectLedger",supportedChains:[T.Chain.Arbitrum,T.Chain.Avalanche,T.Chain.Base,T.Chain.BinanceSmartChain,T.Chain.Bitcoin,T.Chain.BitcoinCash,T.Chain.Cosmos,T.Chain.Dash,T.Chain.Dogecoin,T.Chain.Ethereum,T.Chain.Litecoin,T.Chain.Optimism,T.Chain.Polygon,T.Chain.Ripple,T.Chain.THORChain],walletType:T.WalletOption.LEDGER,connect:({addChain:L,supportedChains:m,walletType:_})=>async function O(y,X){let[G]=T.filterSupportedChains({chains:y,supportedChains:m,walletType:_});if(!G)return!1;let B=await FL({chain:G,derivationPath:X});return L({...B,chain:G,walletType:T.WalletOption.LEDGER}),!0}}),XL=I0(K0);function BL(L,m="t"){if(!L?.includes("=:"))return L;let _=L.includes(`:${m}:`)?L.split(`:${m}:`)[0]:L;return _?.substring(0,_.lastIndexOf(":"))}function u(L){if(Array.isArray(L))return L.forEach((O,y)=>{L[y]=u(O)}),L;if(typeof L!=="object")return L;let m={},_=Object.keys(L).sort();for(let O of _)m[O]=u(L[O]);return m}function GL(L){return JSON.stringify(u(L))}async function FL({chain:L,derivationPath:m}){switch(L){case T.Chain.BitcoinCash:case T.Chain.Bitcoin:case T.Chain.Dash:case T.Chain.Dogecoin:case T.Chain.Litecoin:{let{getUtxoToolbox:_}=await import("@swapkit/toolboxes/utxo"),O=await _(L),y=await S({chain:L,derivationPath:m}),X=await K({chain:L,ledgerClient:y});return{...O,address:X,transfer:async(B)=>{let F=B.feeRate||(await O.getFeeRates())[T.FeeOption.Average],R=[T.Chain.Bitcoin].includes(L)?B.memo:BL(B.memo),{psbt:W,inputs:M}=await O.createTransaction({...B,feeRate:F,memo:R,sender:X,fetchTxHex:!0}),D=await y.signTransaction(W,M);return await O.broadcastTx(D)}}}case T.Chain.Ethereum:case T.Chain.Avalanche:case T.Chain.Arbitrum:case T.Chain.Optimism:case T.Chain.Polygon:case T.Chain.BinanceSmartChain:case T.Chain.Base:{let{getEvmToolbox:_}=await import("@swapkit/toolboxes/evm"),O=await S({chain:L,derivationPath:m}),y=await K({chain:L,ledgerClient:O});return{...await _(L,{signer:O}),address:y}}case T.Chain.Cosmos:{let{createSigningStargateClient:_,getMsgSendDenom:O,getCosmosToolbox:y}=await import("@swapkit/toolboxes/cosmos"),X=await y(T.Chain.Cosmos),G=await S({chain:L,derivationPath:m}),B=await K({chain:L,ledgerClient:G});return{...X,address:B,transfer:async({assetValue:R,recipient:W,memo:M})=>{if(!R)throw new T.SwapKitError("wallet_ledger_invalid_asset");let D={amount:[{amount:R.getBaseValue("string"),denom:O(`u${R.symbol}`).toLowerCase()}],fromAddress:B,toAddress:W},q=await _(T.SKConfig.get("rpcUrls")[L],G,"0.007uatom"),{transactionHash:A}=await q.signAndBroadcast(B,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:D}],2,M);return A}}}case T.Chain.THORChain:{let{SignMode:_}=await import("cosmjs-types/cosmos/tx/signing/v1beta1/signing.js"),{TxRaw:O}=await import("cosmjs-types/cosmos/tx/v1beta1/tx.js"),{encodePubkey:y,makeAuthInfoBytes:X}=(await import("@cosmjs/proto-signing")).default,{createStargateClient:G,buildEncodedTxBody:B,getCosmosToolbox:F,buildAminoMsg:R,getDefaultChainFee:W,fromBase64:M,parseAminoMessageForDirectSigning:D}=await import("@swapkit/toolboxes/cosmos"),q=await F(L),A=await S({chain:L,derivationPath:m}),i=await K({chain:L,ledgerClient:A}),d=W(L),{pubkey:O0,signTransaction:E0,sign:V0}=A,T0=async({memo:z="",assetValue:X0,...b0})=>{let B0=await q.getAccount(i);if(!B0)throw new T.SwapKitError("wallet_ledger_invalid_account");if(!X0)throw new T.SwapKitError("wallet_ledger_invalid_asset");if(!O0)throw new T.SwapKitError("wallet_ledger_pubkey_not_found");let{accountNumber:k0,sequence:x0}=B0,t=(x0||0).toString(),G0=u([R({sender:i,assetValue:X0,memo:z,...b0})]),g0=GL({account_number:k0?.toString(),chain_id:T.ChainId.THORChain,fee:d,memo:z,msgs:G0,sequence:t}),n=await E0(g0,t);if(!n)throw new T.SwapKitError("wallet_ledger_signing_error");let c0=y({type:"tendermint/PubKeySecp256k1",value:O0}),v0=G0.map(D),h0=await B({msgs:v0,chain:L,memo:z}),u0=X([{pubkey:c0,sequence:Number(t)}],d.amount,Number.parseInt(d.gas),void 0,void 0,_.SIGN_MODE_LEGACY_AMINO_JSON),i0=n?.[0]?.signature?M(n[0].signature):Uint8Array.from([]),d0=O.fromPartial({bodyBytes:h0,authInfoBytes:u0,signatures:[i0]}),t0=O.encode(d0).finish(),{isStagenet:n0}=T.SKConfig.get("envs"),o0=await G(T.SKConfig.get("rpcUrls")[n0?T.StagenetChain.THORChain:T.Chain.THORChain]),{transactionHash:p0}=await o0.broadcastTx(t0);return p0};return{...q,address:i,deposit:(z)=>T0(z),transfer:(z)=>T0(z),signMessage:V0}}case T.Chain.Ripple:{let{getRippleToolbox:_}=await import("@swapkit/toolboxes/ripple"),O=await S({chain:L,derivationPath:m}),y=O.address;return{...await _({signer:O}),address:y}}default:throw new T.SwapKitError("wallet_ledger_chain_not_supported",{chain:L})}}
|
|
3
3
|
|
|
4
|
-
//# debugId=
|
|
4
|
+
//# debugId=127621D806F55B9A64756E2164756E21
|