@swapkit/wallet-hardware 5.0.0 → 5.0.1
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-n05bv2n5.js → chunk-1jpcb30j.js} +3 -3
- package/dist/{chunk-n05bv2n5.js.map → chunk-1jpcb30j.js.map} +1 -1
- package/dist/{chunk-9gy0xve4.js → chunk-20wx60bn.js} +3 -3
- package/dist/{chunk-9gy0xve4.js.map → chunk-20wx60bn.js.map} +1 -1
- package/dist/chunk-4tbtxdxa.js +5 -0
- package/dist/chunk-4tbtxdxa.js.map +10 -0
- package/dist/chunk-7v7cgm69.js +4 -0
- package/dist/chunk-7v7cgm69.js.map +10 -0
- package/dist/{chunk-3yr76n9s.js → chunk-83g13ck6.js} +3 -3
- package/dist/{chunk-3yr76n9s.js.map → chunk-83g13ck6.js.map} +1 -1
- package/dist/{chunk-bwf31zxr.js → chunk-h2r568rz.js} +3 -3
- package/dist/{chunk-bwf31zxr.js.map → chunk-h2r568rz.js.map} +1 -1
- package/dist/{chunk-vwv6z2mk.js → chunk-xkh15edk.js} +2 -2
- package/dist/keepkey/index.js +2 -2
- package/dist/keepkey/index.js.map +1 -1
- package/dist/ledger/index.cjs +2 -2
- package/dist/ledger/index.cjs.map +5 -4
- package/dist/ledger/index.js +2 -2
- package/dist/ledger/index.js.map +1 -1
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +5 -4
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/helpers/psbt.d.ts +9 -0
- package/dist/types/helpers/psbt.d.ts.map +1 -0
- package/dist/types/ledger/clients/utxo-psbt.d.ts.map +1 -1
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/helpers/psbt.ts +26 -0
- package/src/ledger/clients/utxo-psbt.ts +33 -1
- package/src/trezor/index.ts +4 -0
- package/dist/chunk-egtwbe6q.js +0 -4
- package/dist/chunk-egtwbe6q.js.map +0 -10
- /package/dist/{chunk-vwv6z2mk.js.map → chunk-xkh15edk.js.map} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/ledger/helpers/getLedgerTransport.ts", "../src/ledger/clients/utxo-psbt.ts", "../src/ledger/clients/utxo-legacy-adapter.ts", "../src/ledger/index.ts", "../src/ledger/helpers/getLedgerAddress.ts", "../src/ledger/helpers/getLedgerClient.ts", "../src/ledger/clients/cosmos.ts", "../src/ledger/interfaces/CosmosLedgerInterface.ts", "../src/ledger/clients/thorchain/lib.ts", "../src/ledger/clients/thorchain/common.ts", "../src/ledger/clients/thorchain/helpers.ts", "../src/ledger/clients/evm.ts", "../src/ledger/helpers/ledgerNetworkInfo.ts", "../src/ledger/clients/near.ts", "../src/ledger/clients/sui.ts", "../src/ledger/clients/thorchain/index.ts", "../src/ledger/clients/thorchain/utils.ts", "../src/ledger/clients/tron.ts", "../src/ledger/clients/utxo.ts", "../src/ledger/clients/xrp.ts", "../src/ledger/helpers/index.ts"],
|
|
3
|
+
"sources": ["../src/ledger/helpers/getLedgerTransport.ts", "../src/helpers/psbt.ts", "../src/ledger/clients/utxo-psbt.ts", "../src/ledger/clients/utxo-legacy-adapter.ts", "../src/ledger/index.ts", "../src/ledger/helpers/getLedgerAddress.ts", "../src/ledger/helpers/getLedgerClient.ts", "../src/ledger/clients/cosmos.ts", "../src/ledger/interfaces/CosmosLedgerInterface.ts", "../src/ledger/clients/thorchain/lib.ts", "../src/ledger/clients/thorchain/common.ts", "../src/ledger/clients/thorchain/helpers.ts", "../src/ledger/clients/evm.ts", "../src/ledger/helpers/ledgerNetworkInfo.ts", "../src/ledger/clients/near.ts", "../src/ledger/clients/sui.ts", "../src/ledger/clients/thorchain/index.ts", "../src/ledger/clients/thorchain/utils.ts", "../src/ledger/clients/tron.ts", "../src/ledger/clients/utxo.ts", "../src/ledger/clients/xrp.ts", "../src/ledger/helpers/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"import type Transport from \"@ledgerhq/hw-transport\";\nimport { SwapKitError } from \"@swapkit/helpers\";\n\nconst getNavigatorUsb = () =>\n navigator?.usb as unknown as {\n getDevices: () => Promise<any[]>;\n requestDevice: (requestObject: any) => Promise<any>;\n removeEventListener: (event: string, callback: (e: any) => void) => void;\n addEventListener: (event: string, callback: (e: any) => void) => void;\n };\n\nconst getLedgerDevices = async (): Promise<USBDevice> => {\n const navigatorUsb = getNavigatorUsb();\n\n if (typeof navigatorUsb?.getDevices !== \"function\") return {} as USBDevice;\n const { ledgerUSBVendorId } = await import(\"@ledgerhq/devices\");\n\n const devices = await navigatorUsb?.getDevices();\n const existingDevices = devices.filter((d) => d.vendorId === ledgerUSBVendorId);\n if (existingDevices.length > 0) return existingDevices[0];\n\n return navigatorUsb?.requestDevice({ filters: [{ vendorId: ledgerUSBVendorId }] });\n};\n\nexport const getLedgerTransport = async (): Promise<Transport> => {\n const device = await getLedgerDevices();\n\n if (!device) {\n throw new SwapKitError(\"wallet_ledger_device_not_found\");\n }\n\n device.opened || (await device.open());\n if (device.configuration === null) await device.selectConfiguration(1);\n\n try {\n await device.reset();\n } catch {\n // reset fails on devices that are already open\n }\n\n const configuration = device.configuration ?? device.configurations?.[0];\n\n const iface =\n configuration?.interfaces.find(({ alternates }: { alternates: { interfaceClass: number }[] }) =>\n alternates.some(({ interfaceClass }) => interfaceClass === 0xff),\n ) ||\n configuration?.interfaces.find(({ alternates }: { alternates: { interfaceClass: number }[] }) =>\n alternates.some(({ interfaceClass }) => interfaceClass === 0x03),\n );\n\n if (!iface) {\n await device.close();\n throw new SwapKitError(\"wallet_ledger_connection_error\");\n }\n\n const klass0x03 = (iface.alternates as any[])?.find(\n ({ interfaceClass }: { interfaceClass: number }) => interfaceClass === 0x03,\n )?.interfaceClass as number;\n\n const klass0xff = (iface.alternates as any[])?.find(\n ({ interfaceClass }: { interfaceClass: number }) => interfaceClass === 0xff,\n )?.interfaceClass as number;\n\n if (klass0x03 && !klass0xff) {\n // -------- HID class (NEAR, ETH, SOL, etc.) -> WebHID transport --------\n const TransportWebHID = (await import(\"@ledgerhq/hw-transport-webhid\")).default;\n const supported = await TransportWebHID.isSupported();\n if (!supported) {\n await device.close();\n throw new SwapKitError(\"wallet_ledger_webhid_not_supported\");\n }\n const transport = await TransportWebHID.create();\n return transport;\n }\n\n try {\n await device.claimInterface(iface.interfaceNumber);\n } catch (error: unknown) {\n await device.close();\n\n throw new SwapKitError(\"wallet_ledger_connection_claimed\", error);\n }\n\n const Transport = (await import(\"@ledgerhq/hw-transport-webusb\")).default;\n const isSupported = await Transport.isSupported();\n if (!isSupported) throw new SwapKitError(\"wallet_ledger_webusb_not_supported\");\n\n const { DisconnectedDevice } = await import(\"@ledgerhq/errors\");\n\n const transport = new Transport(device, iface.interfaceNumber);\n\n const onDisconnect = (e: any) => {\n if (device === e.device) {\n getNavigatorUsb()?.removeEventListener(\"disconnect\", onDisconnect);\n\n transport._emitDisconnect(new DisconnectedDevice());\n }\n };\n getNavigatorUsb()?.addEventListener(\"disconnect\", onDisconnect);\n\n return transport as Transport;\n};\n",
|
|
6
|
-
"import type
|
|
6
|
+
"import type { UTXOChain } from \"@swapkit/helpers\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\n\nexport async function applyMissingSpendingMetadata({\n chain,\n indexes,\n publicKey,\n tx,\n}: {\n chain: UTXOChain;\n indexes?: number[];\n publicKey: Uint8Array;\n tx: Transaction;\n}) {\n const { getMissingSpendingMetadata, getNetworkForChain } = await import(\"@swapkit/toolboxes/utxo\");\n\n for (const { index, ...metadata } of getMissingSpendingMetadata({\n chain,\n indexes,\n network: getNetworkForChain(chain),\n publicKey,\n tx,\n })) {\n tx.updateInput(index, metadata);\n }\n}\n",
|
|
7
|
+
"import type Transport from \"@ledgerhq/hw-transport\";\nimport { base64 } from \"@scure/base\";\nimport { HDKey } from \"@scure/bip32\";\nimport {\n Chain,\n type DerivationPathArray,\n derivationPathToString,\n getWalletFormatFor,\n SwapKitError,\n type UTXOChain,\n} from \"@swapkit/helpers\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\n\nimport { applyMissingSpendingMetadata } from \"../../helpers/psbt\";\nimport { getLedgerTransport } from \"../helpers/getLedgerTransport\";\n\ntype SupportedCoin = \"bitcoin\" | \"litecoin\";\n\nconst UTXO_CHAIN_FOR_COIN: Record<SupportedCoin, UTXOChain> = { bitcoin: Chain.Bitcoin, litecoin: Chain.Litecoin };\n\ntype DefaultDescriptorTemplate = \"wpkh(@0/**)\" | \"tr(@0/**)\" | \"sh(wpkh(@0/**))\" | \"pkh(@0/**)\";\n\nfunction templateForFormat(format: ReturnType<typeof getWalletFormatFor>): DefaultDescriptorTemplate {\n switch (format) {\n case \"bech32\":\n return \"wpkh(@0/**)\";\n case \"p2sh\":\n return \"sh(wpkh(@0/**))\";\n case \"legacy\":\n return \"pkh(@0/**)\";\n default:\n return \"wpkh(@0/**)\";\n }\n}\n\nfunction pathToString(path: DerivationPathArray | string): string {\n return typeof path === \"string\" ? path : derivationPathToString(path);\n}\n\nfunction normalizeLedgerPath(path: string): string {\n return path.replace(/^m\\//, \"\").replace(/^\\/+/, \"\");\n}\n\nfunction pathToNumberArray(path: string): number[] {\n return path\n .replace(/^m\\//, \"\")\n .split(\"/\")\n .filter(Boolean)\n .map((p) => {\n const hardened = p.endsWith(\"'\");\n const num = Number.parseInt(hardened ? p.slice(0, -1) : p, 10);\n return hardened ? (num | 0x80000000) >>> 0 : num;\n });\n}\n\nfunction dropWitnessUtxoFromLegacyInputs(tx: Transaction) {\n for (let inputIndex = 0; inputIndex < tx.inputsLength; inputIndex++) {\n const input = tx.getInput(inputIndex);\n\n if (input.nonWitnessUtxo && input.witnessUtxo) {\n tx.updateInput(inputIndex, { witnessUtxo: undefined });\n }\n }\n}\n\nfunction hasBip32Derivation(tx: Transaction, inputIndex: number) {\n const input = tx.getInput(inputIndex) as { bip32Derivation?: Array<unknown> };\n\n return Boolean(input.bip32Derivation?.length);\n}\n\nconst BaseLedgerPsbtUTXO = ({ chain }: { chain: SupportedCoin }) => {\n return (derivationPathArray?: DerivationPathArray | string, injectedTransport?: Transport) => {\n // Per-call state — each BitcoinPsbtLedger/LitecoinPsbtLedger invocation has its own\n // AppClient and master fingerprint so different consumers (e.g. concurrent MCP\n // sessions on different devices) cannot inherit each other's ledger bindings or xpub.\n let appClient: import(\"ledger-bitcoin\").AppClient | undefined;\n let masterFingerprint: string | undefined;\n\n async function getAppClient() {\n if (!appClient) {\n const transport = injectedTransport ?? (await getLedgerTransport());\n const { AppClient } = await import(\"ledger-bitcoin\");\n appClient = new AppClient(transport);\n }\n return appClient;\n }\n\n async function getFingerprint() {\n if (!masterFingerprint) {\n const app = await getAppClient();\n masterFingerprint = await app.getMasterFingerprint();\n }\n return masterFingerprint;\n }\n\n // Single-address account: change == index == 0 by default.\n const derivationPath = normalizeLedgerPath(\n derivationPathArray ? pathToString(derivationPathArray) : \"84'/0'/0'/0/0\",\n );\n const pathSegments = derivationPath.split(\"/\").filter(Boolean);\n const accountPath = pathSegments.slice(0, 3).join(\"/\");\n const leafSegments = pathSegments.slice(3);\n const change = Number(leafSegments[0] ?? 0);\n const addressIndex = Number(leafSegments[1] ?? 0);\n // getWalletFormatFor expects an m/-prefixed path (it reads the purpose\n // from the second segment); derivationPath is normalized without it.\n const format = getWalletFormatFor(`m/${derivationPath}`);\n const template = templateForFormat(format);\n\n let cachedAccountXpub: string | undefined;\n let cachedLeafPubkey: Uint8Array | undefined;\n\n async function buildPolicy() {\n const app = await getAppClient();\n const fpr = await getFingerprint();\n if (!cachedAccountXpub) {\n cachedAccountXpub = await app.getExtendedPubkey(`m/${accountPath}`);\n }\n const { DefaultWalletPolicy } = await import(\"ledger-bitcoin\");\n const policy = new DefaultWalletPolicy(template, `[${fpr}/${accountPath}]${cachedAccountXpub}`);\n return { app, fpr, policy, xpub: cachedAccountXpub };\n }\n\n async function getLeafPubkey() {\n if (!cachedLeafPubkey) {\n const { xpub } = await buildPolicy();\n const accountKey = HDKey.fromExtendedKey(xpub);\n const leaf = accountKey.derive(`m/${change}/${addressIndex}`);\n if (!leaf.publicKey) {\n throw new SwapKitError(\"wallet_ledger_get_address_error\", {\n message: `Cannot derive leaf pubkey for ${chain}`,\n });\n }\n cachedLeafPubkey = leaf.publicKey;\n }\n return cachedLeafPubkey;\n }\n\n return {\n connect: async () => {\n await getAppClient();\n },\n getAddress: async () => {\n const { app, policy } = await buildPolicy();\n const address = await app.getWalletAddress(policy, null, change, addressIndex, false);\n if (!address) {\n throw new SwapKitError(\"wallet_ledger_get_address_error\", {\n message: `Cannot get ${chain} address from ledger derivation path: ${derivationPath}`,\n });\n }\n return address;\n },\n getExtendedPublicKey: async (path = `m/${accountPath}`) => {\n const app = await getAppClient();\n return app.getExtendedPubkey(`m/${normalizeLedgerPath(path)}`);\n },\n getPublicKey: getLeafPubkey,\n signTransaction: async (tx: Transaction): Promise<Transaction> => {\n const { app, policy, fpr } = await buildPolicy();\n const fingerprintBE = Number.parseInt(fpr, 16) >>> 0;\n const pathNumbers = pathToNumberArray(derivationPath);\n const missingDerivationIndexes = Array.from({ length: tx.inputsLength }, (_, inputIndex) => inputIndex).filter(\n (inputIndex) => !hasBip32Derivation(tx, inputIndex),\n );\n\n if (missingDerivationIndexes.length > 0) {\n const leafPubkey = await getLeafPubkey();\n\n // Fallback for PSBTs that do not include per-input HD key origins.\n for (const inputIndex of missingDerivationIndexes) {\n tx.updateInput(inputIndex, {\n bip32Derivation: [[leafPubkey, { fingerprint: fingerprintBE, path: pathNumbers }]],\n });\n }\n }\n\n if (format === \"legacy\") {\n dropWitnessUtxoFromLegacyInputs(tx);\n }\n\n if (format === \"p2sh\") {\n await applyMissingSpendingMetadata({\n chain: UTXO_CHAIN_FOR_COIN[chain],\n publicKey: await getLeafPubkey(),\n tx,\n });\n }\n\n const psbtB64 = base64.encode(tx.toPSBT(0));\n const sigs = await app.signPsbt(psbtB64, policy, null);\n\n for (const [idx, partial] of sigs) {\n tx.updateInput(idx, { partialSig: [[new Uint8Array(partial.pubkey), new Uint8Array(partial.signature)]] });\n }\n\n return tx;\n },\n };\n };\n};\n\nexport const BitcoinPsbtLedger = BaseLedgerPsbtUTXO({ chain: \"bitcoin\" });\nexport const LitecoinPsbtLedger = BaseLedgerPsbtUTXO({ chain: \"litecoin\" });\n",
|
|
7
8
|
"import { hex } from \"@scure/base\";\nimport { SwapKitError, type UTXOChain } from \"@swapkit/helpers\";\nimport type { UTXOType } from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\n\n/**\n * Extract per-input metadata from a V3 PSBT in the shape the legacy\n * `@ledgerhq/hw-app-btc.createPaymentTransaction` adapter expects.\n *\n * The legacy Ledger signer still needs the full previous tx hex for\n * `btcApp.splitTransaction(hex)`. Some V3 PSBTs only include `witnessUtxo`,\n * so we fetch the previous raw tx when `nonWitnessUtxo` is absent.\n *\n * Single-address account assumption: all inputs share our derivation path.\n */\nexport async function extractInputsFromPsbt(tx: Transaction, chain: UTXOChain): Promise<UTXOType[]> {\n const { RawTx } = await import(\"@swapkit/utxo-signer\");\n const { getUtxoApi } = await import(\"@swapkit/toolboxes/utxo\");\n const inputs: UTXOType[] = [];\n\n for (let i = 0; i < tx.inputsLength; i++) {\n const input = tx.getInput(i);\n\n if (!input.txid || input.index === undefined) {\n throw new Error(`PSBT input ${i} is missing txid/index`);\n }\n\n const txid = hex.encode(input.txid);\n const txHex = input.nonWitnessUtxo\n ? hex.encode(RawTx.encode(input.nonWitnessUtxo))\n : await getUtxoApi(chain).getRawTx(txid);\n if (!txHex) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n chain,\n inputIndex: i,\n reason: \"Unable to resolve previous transaction hex for Ledger signing\",\n txid,\n });\n }\n const witnessUtxo = input.witnessUtxo\n ? { script: input.witnessUtxo.script, value: Number(input.witnessUtxo.amount) }\n : undefined;\n const nonWitnessPrevout = input.index !== undefined ? input.nonWitnessUtxo?.outputs?.[input.index] : undefined;\n const value = witnessUtxo?.value ?? (nonWitnessPrevout ? Number(nonWitnessPrevout.amount) : 0);\n\n inputs.push({ hash: txid, index: input.index, txHex, value, witnessUtxo } as UTXOType);\n }\n\n return inputs;\n}\n\nexport async function signLegacyPsbtTransaction({\n legacyClient,\n chain,\n tx,\n}: {\n legacyClient: { signTransaction: (tx: Transaction, inputUtxos: UTXOType[]) => Promise<string> };\n chain: UTXOChain;\n tx: Transaction;\n}): Promise<string> {\n const inputUtxos = await extractInputsFromPsbt(tx, chain);\n return legacyClient.signTransaction(tx, inputUtxos);\n}\n\n/**\n * Build a toolbox-compatible signer from the existing legacy Ledger UTXO\n * client. Callers that need sign-and-broadcast should broadcast the raw hex\n * from `signLegacyPsbtTransaction` directly; the legacy Ledger app returns an\n * already-finalized transaction that should not be passed back to toolbox\n * finalization.\n */\nexport function createLegacyPsbtSigner({\n legacyClient,\n chain,\n address,\n}: {\n legacyClient: { signTransaction: (tx: Transaction, inputUtxos: UTXOType[]) => Promise<string> };\n chain: UTXOChain;\n address: string;\n}) {\n return {\n getAddress: async () => address,\n signTransaction: async (tx: Transaction): Promise<Transaction> => {\n const signedTxHex = await signLegacyPsbtTransaction({ chain, legacyClient, tx });\n\n const { Transaction: TxClass } = await import(\"@swapkit/utxo-signer\");\n // `Transaction.fromRaw` parses a serialised tx (no PSBT envelope) — exactly\n // what `createPaymentTransaction` returns.\n return TxClass.fromRaw(hex.decode(signedTxHex));\n },\n };\n}\n",
|
|
8
9
|
"import type Transport from \"@ledgerhq/hw-transport\";\nimport {\n type AssetValue,\n Chain,\n type DerivationPathArray,\n derivationPathToString,\n FeeOption,\n filterSupportedChains,\n type GenericTransferParams,\n getRPCUrl,\n NetworkDerivationPath,\n SwapKitError,\n type UTXOChain,\n UTXOScriptType,\n WalletOption,\n} from \"@swapkit/helpers\";\nimport {\n addInputsAndOutputs,\n assertDerivationIndex,\n compileMemo,\n createHDWalletHelpers,\n getNetworkForChain,\n getScriptTypeForAddress,\n getUTXOAccountIndexFromPath,\n getUTXOAccountPath,\n getUTXOAddressPath,\n getUtxoApi,\n type UTXOBuildTxParams,\n type UTXOForMultiAddressTransfer,\n} from \"@swapkit/toolboxes/utxo\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\nimport { createWallet, getWalletSupportedChains, type HardwareExtendedPublicKeyInfo } from \"@swapkit/wallet-core\";\nimport { getLedgerAddress, getLedgerClient } from \"./helpers\";\n\n/**\n * Options passed to `connectLedger` at call time.\n *\n * When `transport` is supplied, the consumer opens and owns its lifecycle —\n * wallet-hardware will use that exact instance for every per-chain Ledger\n * client and will NOT recreate it on `forceReconnect`. When omitted, the\n * default browser flow (WebHID / WebUSB via `navigator.usb`) is used.\n */\nexport type ConnectLedgerOptions = { address?: string; transport?: Transport };\n\nexport const ledgerWallet = createWallet({\n connect: ({ addChain, supportedChains, walletType }) =>\n async function connectLedger(\n chains: Chain[],\n derivationPath?: DerivationPathArray,\n { address, transport }: ConnectLedgerOptions = {},\n ) {\n const [chain] = filterSupportedChains({ chains, supportedChains, walletType });\n\n if (!chain) return false;\n\n const resolvedPath = derivationPath ?? (NetworkDerivationPath[chain] as DerivationPathArray | undefined);\n const walletMethods = await getWalletMethods({ address, chain, derivationPath: resolvedPath, transport });\n\n addChain({ ...walletMethods, chain, walletType: WalletOption.LEDGER });\n\n return true;\n },\n directSigningSupport: {\n [Chain.Arbitrum]: true,\n [Chain.Arc]: true,\n [Chain.Aurora]: true,\n [Chain.Avalanche]: true,\n [Chain.Base]: true,\n [Chain.Berachain]: true,\n [Chain.BinanceSmartChain]: true,\n [Chain.Ethereum]: true,\n [Chain.Gnosis]: true,\n [Chain.Monad]: true,\n [Chain.Bitcoin]: true,\n [Chain.BitcoinCash]: true,\n [Chain.Cosmos]: true,\n [Chain.Dash]: true,\n [Chain.Dogecoin]: true,\n [Chain.Litecoin]: true,\n [Chain.Near]: true,\n [Chain.Optimism]: true,\n [Chain.Polygon]: true,\n [Chain.Ripple]: true,\n [Chain.Sui]: true,\n [Chain.THORChain]: true,\n [Chain.Tron]: true,\n [Chain.XLayer]: true,\n // ZEC: still on bespoke signPCZT path\n },\n getExtendedPublicKey: getLedgerExtendedPublicKey,\n name: \"connectLedger\",\n supportedChains: [\n Chain.Arbitrum,\n Chain.Arc,\n Chain.Aurora,\n Chain.Avalanche,\n Chain.Base,\n Chain.Berachain,\n Chain.BinanceSmartChain,\n Chain.Bitcoin,\n Chain.BitcoinCash,\n Chain.Cosmos,\n Chain.Dash,\n Chain.Dogecoin,\n Chain.Ethereum,\n Chain.Gnosis,\n Chain.Litecoin,\n Chain.Monad,\n Chain.Near,\n Chain.Optimism,\n Chain.Polygon,\n Chain.Ripple,\n Chain.Sui,\n Chain.THORChain,\n Chain.XLayer,\n Chain.Tron,\n Chain.Zcash,\n ],\n walletType: WalletOption.LEDGER,\n});\n\nexport const LEDGER_SUPPORTED_CHAINS = getWalletSupportedChains(ledgerWallet);\n\n// reduce memo length by removing trade limit\nfunction reduceMemo(memo?: string, affiliateAddress = \"t\") {\n if (!memo?.includes(\"=:\")) return memo;\n\n const removedAffiliate = memo.includes(`:${affiliateAddress}:`) ? memo.split(`:${affiliateAddress}:`)[0] : memo;\n\n return removedAffiliate?.substring(0, removedAffiliate.lastIndexOf(\":\"));\n}\n\nexport async function getLedgerExtendedPublicKey(\n chain: Chain,\n derivationPath?: DerivationPathArray,\n { accountIndex }: { accountIndex?: number } = {},\n): Promise<HardwareExtendedPublicKeyInfo | undefined> {\n if (![Chain.BitcoinCash, Chain.Bitcoin, Chain.Dash, Chain.Dogecoin, Chain.Litecoin, Chain.Zcash].includes(chain)) {\n throw new SwapKitError(\"wallet_chain_not_supported\", { chain, wallet: WalletOption.LEDGER });\n }\n\n const utxoChain = chain as UTXOChain;\n const signer = await getLedgerClient({ chain: utxoChain, derivationPath });\n if (!signer.getExtendedPublicKey) return undefined;\n\n const accountPath = getUTXOAccountPath({ accountIndex, chain: utxoChain, derivationPath });\n const path = derivationPathToString(accountPath);\n const ledgerPath = chain === Chain.Bitcoin || chain === Chain.Litecoin ? path : path.replace(/^m\\//, \"\");\n const xpubVersion = getNetworkForChain(utxoChain).bip32.public;\n try {\n const xpub = await signer.getExtendedPublicKey(ledgerPath, xpubVersion);\n return { accountIndex: getUTXOAccountIndexFromPath(accountPath), path, xpub };\n } finally {\n await (signer as { disconnect?: () => Promise<void> }).disconnect?.();\n }\n}\n\nasync function getWalletMethods({\n address: providedAddress,\n chain,\n derivationPath,\n transport,\n}: ConnectLedgerOptions & { chain: Chain; derivationPath?: DerivationPathArray }) {\n switch (chain) {\n case Chain.BitcoinCash:\n case Chain.Bitcoin:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n case Chain.Zcash: {\n const { getUtxoToolbox } = await import(\"@swapkit/toolboxes/utxo\");\n const utxoChain = chain as UTXOChain;\n\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n\n const address = providedAddress ?? (await getLedgerAddress({ chain, ledgerClient: signer }));\n const scriptType = getScriptTypeForAddress(address, utxoChain);\n\n // V3 toolbox signer:\n // - BTC uses the modern `ledger-bitcoin` AppClient with native PSBT signing.\n // - LTC/BCH/DOGE/DASH use the legacy `hw-app-btc` adapter that pulls\n // `nonWitnessUtxo` (full prev-tx hex) out of the API PSBT.\n // The Litecoin Ledger app does not support the `ledger-bitcoin`\n // policy APDUs and returns CLA_NOT_SUPPORTED.\n // - ZEC stays on the bespoke `signPCZT` flow for now.\n let toolboxSigner:\n | {\n getAddress: () => Promise<string>;\n publicKey?: Uint8Array;\n signTransaction: (tx: Transaction) => Promise<Transaction>;\n }\n | undefined;\n let publicKey: Uint8Array | undefined;\n let signAndBroadcastLegacyPsbtTransaction: ((tx: Transaction) => Promise<string>) | undefined;\n if (chain === Chain.Bitcoin) {\n const { BitcoinPsbtLedger } = await import(\"./clients/utxo-psbt\");\n const psbtClient = BitcoinPsbtLedger(derivationPath, transport);\n publicKey = scriptType === UTXOScriptType.P2SH_P2WPKH ? await psbtClient.getPublicKey() : undefined;\n toolboxSigner = { getAddress: psbtClient.getAddress, publicKey, signTransaction: psbtClient.signTransaction };\n } else if (\n chain === Chain.BitcoinCash ||\n chain === Chain.Dogecoin ||\n chain === Chain.Dash ||\n chain === Chain.Litecoin\n ) {\n const { createLegacyPsbtSigner, signLegacyPsbtTransaction } = await import(\"./clients/utxo-legacy-adapter\");\n toolboxSigner = createLegacyPsbtSigner({ address, chain: utxoChain, legacyClient: signer });\n signAndBroadcastLegacyPsbtTransaction = async (tx) => {\n const signedTxHex = await signLegacyPsbtTransaction({ chain: utxoChain, legacyClient: signer, tx });\n return toolbox.broadcastTx(signedTxHex);\n };\n }\n\n const toolbox = toolboxSigner\n ? await getUtxoToolbox(utxoChain, { scriptType, signer: toolboxSigner })\n : getUtxoToolbox(utxoChain, { scriptType });\n const signAndBroadcastTransaction = signAndBroadcastLegacyPsbtTransaction ?? toolbox.signAndBroadcastTransaction;\n\n const transfer = async (params: UTXOBuildTxParams) => {\n const feeRate = params.feeRate || (await toolbox.getFeeRates())[FeeOption.Average];\n const memo = [Chain.Bitcoin].includes(chain as typeof Chain.Bitcoin) ? params.memo : reduceMemo(params.memo);\n\n const { tx, inputs } = await toolbox.createTransaction({\n ...params,\n feeRate,\n fetchTxHex: true,\n memo,\n publicKey: params.publicKey ?? publicKey,\n sender: address,\n });\n\n // Legacy Ledger UTXO signing returns finalized raw tx hex, so transfer\n // broadcasts directly instead of routing through toolbox finalization.\n const txHex = await signer.signTransaction(tx as Transaction, inputs);\n const txHash = await toolbox.broadcastTx(txHex);\n\n return txHash;\n };\n\n async function getExtendedPublicKeyInfo({ accountIndex }: { accountIndex?: number } = {}) {\n if (!signer.getExtendedPublicKey) return undefined;\n\n const accountPath = getUTXOAccountPath({ accountIndex, chain: utxoChain, derivationPath });\n const path = derivationPathToString(accountPath);\n const ledgerPath = chain === Chain.Bitcoin || chain === Chain.Litecoin ? path : path.replace(/^m\\//, \"\");\n const xpubVersion = getNetworkForChain(utxoChain).bip32.public;\n const xpub = await signer.getExtendedPublicKey(ledgerPath, xpubVersion);\n\n return { accountIndex: getUTXOAccountIndexFromPath(accountPath), path, xpub };\n }\n\n function getExtendedPublicKey(params: { accountIndex?: number } = {}) {\n return getExtendedPublicKeyInfo(params);\n }\n\n async function deriveAddressAtIndex({\n accountIndex,\n index,\n change = false,\n }: {\n accountIndex?: number;\n index: number;\n change?: boolean;\n }) {\n try {\n const fullPath = getUTXOAddressPath({ accountIndex, chain: utxoChain, change, derivationPath, index });\n\n const indexedSigner = await getLedgerClient({ chain: utxoChain, derivationPath: fullPath, transport });\n const derivedAddress = await getLedgerAddress({ chain: utxoChain, ledgerClient: indexedSigner });\n\n return {\n accountIndex: getUTXOAccountIndexFromPath(fullPath),\n address: derivedAddress,\n change,\n index,\n path: derivationPathToString(fullPath),\n pubkey: \"\",\n };\n } catch {\n return undefined;\n }\n }\n\n async function deriveAddresses({\n accountIndex,\n count,\n startIndex = 0,\n change = false,\n }: {\n accountIndex?: number;\n count: number;\n startIndex?: number;\n change?: boolean;\n }) {\n assertDerivationIndex(\"count\", count);\n assertDerivationIndex(\"startIndex\", startIndex);\n\n const addresses = await Promise.all(\n Array.from({ length: count }, (_, i) =>\n deriveAddressAtIndex({ accountIndex, change, index: startIndex + i }),\n ),\n );\n\n return addresses.filter((address) => !!address);\n }\n\n const hdHelpers = createHDWalletHelpers({\n chain: utxoChain,\n deriveAddress: deriveAddressAtIndex,\n getBalance: toolbox.getBalance,\n getUtxos: (addr: string) => getUtxoApi(utxoChain).getUtxos({ address: addr, fetchTxHex: true }),\n });\n\n async function transferFromMultipleAddresses({\n utxos,\n recipient,\n assetValue,\n memo,\n feeRate,\n feeOptionKey,\n changeAddress,\n }: {\n utxos: UTXOForMultiAddressTransfer[];\n recipient: string;\n assetValue: AssetValue;\n memo?: string;\n feeRate?: number;\n feeOptionKey?: FeeOption;\n changeAddress?: string;\n }) {\n if (!utxos.length) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n message: \"No UTXOs provided for multi-address transfer\",\n });\n }\n\n const txFeeRate = feeRate || (await toolbox.getFeeRates())[feeOptionKey || FeeOption.Fast];\n const memoScript = memo ? compileMemo(memo) : null;\n\n const targetOutputs: Array<{ address: string; value: number } | { script: Uint8Array; value: number }> = [\n { address: recipient, value: assetValue.getBaseValue(\"number\") },\n ];\n if (memoScript) {\n targetOutputs.push({ script: memoScript, value: 0 });\n }\n\n const basicUtxos = utxos.map(({ hash, index, value, txHex, witnessUtxo }) => ({\n hash,\n index,\n txHex,\n value,\n witnessUtxo,\n }));\n\n const { inputs: selectedInputs, outputs } = toolbox.accumulative({\n chain: utxoChain,\n feeRate: txFeeRate,\n inputs: basicUtxos,\n outputs: targetOutputs,\n });\n\n if (!(selectedInputs && outputs)) {\n throw new SwapKitError(\"wallet_ledger_connection_error\", {\n message: \"Insufficient balance for multi-address transfer\",\n });\n }\n\n const { Transaction } = await import(\"@swapkit/utxo-signer\");\n const tx = new Transaction({ allowLegacyWitnessUtxo: true, version: 1 });\n const senderAddress = changeAddress || utxos[0]?.address || recipient;\n\n addInputsAndOutputs({\n chain: utxoChain,\n compiledMemo: memoScript,\n inputs: selectedInputs,\n outputs,\n sender: senderAddress,\n tx,\n });\n\n const basePath = getUTXOAccountPath({ chain: utxoChain, derivationPath });\n const inputDerivationPaths = selectedInputs.map((input: { hash: string; index: number }) => {\n const utxoInfo = utxos.find((u) => u.hash === input.hash && u.index === input.index);\n const derivationIndex = utxoInfo?.derivationIndex ?? 0;\n const isChange = utxoInfo?.isChange ?? false;\n const fullPath = [...basePath, Number(isChange), derivationIndex] as unknown as DerivationPathArray;\n return derivationPathToString(fullPath);\n });\n\n if (!signer.signTransactionWithMultiplePaths) {\n throw new SwapKitError(\"wallet_ledger_method_not_supported\", { method: \"signTransactionWithMultiplePaths\" });\n }\n\n const txHex = await signer.signTransactionWithMultiplePaths(tx, selectedInputs, inputDerivationPaths);\n return toolbox.broadcastTx(txHex);\n }\n\n return {\n ...toolbox,\n ...hdHelpers,\n address,\n deriveAddressAtIndex,\n deriveAddresses,\n getExtendedPublicKey,\n getExtendedPublicKeyInfo,\n signAndBroadcastTransaction,\n transfer,\n transferFromMultipleAddresses,\n };\n }\n\n case Chain.Ethereum:\n case Chain.Avalanche:\n case Chain.Arbitrum:\n case Chain.Arc:\n case Chain.Berachain:\n case Chain.Optimism:\n case Chain.Polygon:\n case Chain.BinanceSmartChain:\n case Chain.Base:\n case Chain.Aurora:\n case Chain.Gnosis:\n case Chain.Monad:\n case Chain.XLayer: {\n const { getEvmToolboxAsync } = await import(\"@swapkit/toolboxes/evm\");\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = await getEvmToolboxAsync(chain, { signer });\n\n return { ...toolbox, address };\n }\n\n case Chain.Cosmos: {\n const { createSigningStargateClient, getDefaultChainFee, getMsgSendDenom, getCosmosToolbox } = await import(\n \"@swapkit/toolboxes/cosmos\"\n );\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = await getCosmosToolbox(Chain.Cosmos, { signer });\n\n const transfer = async ({ assetValue, recipient, memo }: GenericTransferParams) => {\n if (!assetValue) throw new SwapKitError(\"wallet_ledger_invalid_asset\");\n\n const sendCoinsMessage = {\n amount: [\n {\n amount: assetValue.getBaseValue(\"string\"),\n denom: getMsgSendDenom(`u${assetValue.symbol}`).toLowerCase(),\n },\n ],\n fromAddress: address,\n toAddress: recipient,\n };\n\n const rpcUrl = await getRPCUrl(chain);\n const signingClient = await createSigningStargateClient(rpcUrl, signer, \"0.007uatom\");\n\n const { transactionHash } = await signingClient.signAndBroadcast(\n address,\n [{ typeUrl: \"/cosmos.bank.v1beta1.MsgSend\", value: sendCoinsMessage }],\n getDefaultChainFee(Chain.Cosmos),\n memo,\n );\n\n return transactionHash;\n };\n\n return { ...toolbox, address, transfer };\n }\n\n case Chain.THORChain: {\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n const { getCosmosToolbox } = await import(\"@swapkit/toolboxes/cosmos\");\n const toolbox = getCosmosToolbox(chain, { signer });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const { sign: signMessage } = signer;\n\n return { ...toolbox, address, signMessage };\n }\n\n case Chain.Near: {\n const { getNearToolbox } = await import(\"@swapkit/toolboxes/near\");\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n const accountId = await signer.getAddress();\n const toolbox = getNearToolbox({ signer });\n\n return { ...toolbox, address: accountId };\n }\n\n case Chain.Ripple: {\n const { getRippleToolbox } = await import(\"@swapkit/toolboxes/ripple\");\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n const address = signer.getAddress();\n const toolbox = getRippleToolbox({ signer });\n\n return { ...toolbox, address };\n }\n\n case Chain.Tron: {\n const { getTronToolbox } = await import(\"@swapkit/toolboxes/tron\");\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getTronToolbox({ signer });\n\n return { ...toolbox, address };\n }\n\n case Chain.Sui: {\n const { getSuiToolbox } = await import(\"@swapkit/toolboxes/sui\");\n const signer = await getLedgerClient({ chain, derivationPath, transport });\n const address = await getLedgerAddress({ chain, ledgerClient: signer });\n const toolbox = getSuiToolbox({ signer });\n\n return { ...toolbox, address };\n }\n\n default:\n throw new SwapKitError(\"wallet_ledger_chain_not_supported\", { chain });\n }\n}\n",
|
|
9
10
|
"import { Chain, SwapKitError, WalletOption } from \"@swapkit/helpers\";\n\nimport type { getNearLedgerClient } from \"../clients/near\";\nimport type { SuiLedger } from \"../clients/sui\";\nimport type { TronLedger } from \"../clients/tron\";\nimport type { XRPLedger } from \"../clients/xrp\";\nimport type { LEDGER_SUPPORTED_CHAINS } from \"../index\";\nimport type { CosmosLedgerClients, EVMLedgerClients, UTXOLedgerClients } from \"../types\";\nimport type { getLedgerClient } from \"./getLedgerClient\";\n\nexport const getLedgerAddress = async <\n T extends (typeof LEDGER_SUPPORTED_CHAINS)[number],\n L extends Awaited<ReturnType<typeof getLedgerClient<T>>>,\n>({\n chain,\n ledgerClient,\n}: {\n chain: T;\n ledgerClient: L;\n}) => {\n if (!ledgerClient) return \"\";\n\n switch (chain) {\n case Chain.Cosmos:\n case Chain.THORChain: {\n return (ledgerClient as CosmosLedgerClients).connect();\n }\n\n case Chain.Ethereum:\n case Chain.BinanceSmartChain:\n case Chain.Avalanche:\n case Chain.Polygon:\n case Chain.Arbitrum:\n case Chain.Arc:\n case Chain.Berachain:\n case Chain.Optimism:\n case Chain.Base:\n case Chain.Aurora:\n case Chain.Gnosis:\n case Chain.Monad:\n case Chain.XLayer: {\n return (ledgerClient as EVMLedgerClients).getAddress();\n }\n\n case Chain.Bitcoin:\n case Chain.BitcoinCash:\n case Chain.Dash:\n case Chain.Dogecoin:\n case Chain.Litecoin:\n case Chain.Zcash: {\n const ledger = ledgerClient as UTXOLedgerClients;\n await ledger.connect();\n const address = await ledger.getAddress();\n\n return chain === Chain.BitcoinCash ? address.replace(\"bitcoincash:\", \"\") : address;\n }\n\n case Chain.Near: {\n return await (ledgerClient as Awaited<ReturnType<typeof getNearLedgerClient>>).getAddress();\n }\n\n case Chain.Ripple: {\n return (ledgerClient as Awaited<ReturnType<typeof XRPLedger>>).getAddress();\n }\n\n case Chain.Tron: {\n return (ledgerClient as Awaited<ReturnType<typeof TronLedger>>).getAddress();\n }\n\n case Chain.Sui: {\n return (ledgerClient as Awaited<ReturnType<typeof SuiLedger>>).connect();\n }\n\n default:\n throw new SwapKitError(\"wallet_chain_not_supported\", { chain, wallet: WalletOption.LEDGER });\n }\n};\n",
|
|
@@ -24,7 +25,7 @@
|
|
|
24
25
|
"import Xrp from \"@ledgerhq/hw-app-xrp\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport { Chain, type DerivationPathArray, derivationPathToString, NetworkDerivationPath } from \"@swapkit/helpers\";\nimport type { RippleTransaction } from \"@swapkit/toolboxes/ripple\";\nimport { encode } from \"ripple-binary-codec\";\nimport type { Payment } from \"xrpl\";\nimport { getLedgerTransport } from \"../helpers/getLedgerTransport\";\n\nconst TF_FULLY_CANONICAL_SIG = 2147483648;\n\nfunction cleanTransactionObject(obj: Record<string, any>) {\n const cleaned: Record<string, any> = {};\n for (const key in obj) {\n if (obj[key] !== null && obj[key] !== undefined) {\n cleaned[key] = obj[key];\n }\n }\n return cleaned;\n}\n\nfunction establishConnection(transport: Transport) {\n return new Xrp(transport);\n}\n\nexport const XRPLedger = async (derivationPath?: DerivationPathArray, injectedTransport?: Transport) => {\n const path = derivationPathToString(derivationPath || NetworkDerivationPath[Chain.Ripple]);\n const transport = injectedTransport ?? (await getLedgerTransport());\n const xrpInstance = establishConnection(transport);\n\n const { address, publicKey } = await xrpInstance.getAddress(path);\n\n async function signTransaction(transaction: Payment | RippleTransaction) {\n const { hashes } = await import(\"xrpl\");\n const cleanedTxWithPubKey = cleanTransactionObject(transaction);\n const transactionJSON = {\n ...cleanedTxWithPubKey,\n Flags: transaction.Flags || TF_FULLY_CANONICAL_SIG,\n SigningPubKey: publicKey.toUpperCase(),\n };\n\n const transactionToSignOnLedger = encode(transactionJSON);\n const txnSignature = await xrpInstance.signTransaction(path, transactionToSignOnLedger);\n const tx_blob = encode({ ...transactionJSON, TxnSignature: txnSignature });\n const hash = hashes.hashSignedTx(tx_blob);\n\n return { hash, tx_blob };\n }\n\n return { getAddress: () => address, signTransaction };\n};\n",
|
|
25
26
|
"export { getLedgerAddress } from \"./getLedgerAddress\";\nexport { getLedgerClient } from \"./getLedgerClient\";\nexport { getLedgerTransport } from \"./getLedgerTransport\";\n"
|
|
26
27
|
],
|
|
27
|
-
"mappings": "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",
|
|
28
|
-
"debugId": "
|
|
28
|
+
"mappings": "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",
|
|
29
|
+
"debugId": "72D9CFBCBCF54A5F64756E2164756E21",
|
|
29
30
|
"names": []
|
|
30
31
|
}
|
package/dist/ledger/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as q}from"../chunk-3yr76n9s.js";import{d as C}from"../chunk-n05bv2n5.js";import{Chain as G,derivationPathToString as y_,FeeOption as Z0,filterSupportedChains as DL,getRPCUrl as UL,NetworkDerivationPath as WL,SwapKitError as h,UTXOScriptType as XL,WalletOption as Y_}from"@swapkit/helpers";import{addInputsAndOutputs as FL,assertDerivationIndex as M0,compileMemo as $L,createHDWalletHelpers as CL,getNetworkForChain as j0,getScriptTypeForAddress as ZL,getUTXOAccountIndexFromPath as Q_,getUTXOAccountPath as q_,getUTXOAddressPath as ML,getUtxoApi as jL}from"@swapkit/toolboxes/utxo";import{createWallet as JL,getWalletSupportedChains as YL}from"@swapkit/wallet-core";import{Chain as M,SwapKitError as S0,WalletOption as k0}from"@swapkit/helpers";var m=async({chain:_,ledgerClient:L})=>{if(!L)return"";switch(_){case M.Cosmos:case M.THORChain:return L.connect();case M.Ethereum:case M.BinanceSmartChain:case M.Avalanche:case M.Polygon:case M.Arbitrum:case M.Arc:case M.Berachain:case M.Optimism:case M.Base:case M.Aurora:case M.Gnosis:case M.Monad:case M.XLayer:return L.getAddress();case M.Bitcoin:case M.BitcoinCash:case M.Dash:case M.Dogecoin:case M.Litecoin:case M.Zcash:{let R=L;await R.connect();let f=await R.getAddress();return _===M.BitcoinCash?f.replace("bitcoincash:",""):f}case M.Near:return await L.getAddress();case M.Ripple:return L.getAddress();case M.Tron:return L.getAddress();case M.Sui:return L.connect();default:throw new S0("wallet_chain_not_supported",{chain:_,wallet:k0.LEDGER})}};import{Chain as $,SwapKitError as TL,WalletOption as BL}from"@swapkit/helpers";import{derivationPathToString as m0,NetworkDerivationPath as V0,SwapKitError as c_}from"@swapkit/helpers";import{LedgerErrorCode as W_,NetworkDerivationPath as P0,SwapKitError as X_}from"@swapkit/helpers";import{SwapKitError as I_}from"@swapkit/helpers";var b=85,T_=250;var l={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},__={ADD:1,INIT:0,LAST:2},B_={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},g={JSON:0},V={NoError:36864},k_={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",25600:"Execution Error",26368:"Wrong Length",26626:"Error deriving keys",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",36864:"No errors",36865:"Device is busy"};function P(_){if(_ in k_)return k_[_];return`Unknown Status Code: ${_}`}function z0(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)&&!(_ instanceof Date)}function E(_){if(_){if(z0(_)){if(Object.hasOwn(_,"statusCode"))return{error_message:P(_.statusCode),return_code:_.statusCode};if(Object.hasOwn(_,"return_code")&&Object.hasOwn(_,"error_message"))return _}return{error_message:_.toString(),return_code:65535}}return{error_message:_.toString(),return_code:65535}}function D_(_){return _.send(85,l.GET_VERSION,0,0).then((L)=>{let R=L.slice(-2),f=R[0]*256+R[1],N=0;if(L.length>=9)N=(L[5]<<24)+(L[6]<<16)+(L[7]<<8)+(L[8]<<0);return{device_locked:L[4]===1,error_message:P(f),major:L[1],minor:L[2],patch:L[3],return_code:f,target_id:N.toString(16),test_mode:L[0]!==0}},E)}import{SwapKitError as L_}from"@swapkit/helpers";function z_(_){if(_==null||_.length<3)throw new L_("wallet_ledger_invalid_params",{reason:"Path too short"});if(_.length>10)throw new L_("wallet_ledger_invalid_params",{reason:"Path too long"});let L=Buffer.alloc(1+4*_.length);L.writeUInt8(_.length,0);for(let R=0;R<_.length;R+=1){let f=_[R]||0;if(R<3)f|=2147483648;L.writeInt32LE(f,1+R*4)}return L}function U_(_,L,R,f,N=g.JSON){return _.transport.send(b,l.SIGN_SECP256K1,L,N,f,[V.NoError,27012,27264]).then((y)=>{let w=y.slice(-2),O=w[0]*256+w[1],T=P(O);if(O===27264||O===27012)T=`${T} : ${y.slice(0,y.length-2).toString("ascii")}`;let B=null;if(y.length>2)B=y.slice(0,y.length-2);return{error_message:T,return_code:O,signature:B}},E)}function K0(_){if(_.length!==65)throw new L_("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let L=_.slice(33,65),R=Buffer.from([2+(L[L.length-1]&1)]);return Buffer.concat([R,_.slice(1,33)])}function K_(_,L){return _.transport.send(b,l.INS_PUBLIC_KEY_SECP256K1,0,0,L,[V.NoError]).then((R)=>{let f=R.slice(-2),N=f[0]*256+f[1],y=Buffer.from(R.slice(0,65));return{compressed_pk:K0(y),error_message:P(N),pk:y,return_code:N}},E)}function P_(_){if(!_||_.length!==5)throw new L_("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let L=Buffer.alloc(20);return L.writeUInt32LE(2147483648+_[0],0),L.writeUInt32LE(2147483648+_[1],4),L.writeUInt32LE(2147483648+_[2],8),L.writeUInt32LE(_[3],12),L.writeUInt32LE(_[4],16),L}function m_(_,L,R,f,N=g.JSON){let y=__.ADD;if(L===1)y=__.INIT;if(L===R)y=__.LAST;return U_(_,y,0,f,N)}function V_(_,L){return _.transport.send(b,l.GET_ADDR_SECP256K1,0,0,L,[V.NoError]).then((R)=>{let f=R.slice(-2),N=f[0]*256+f[1];return{compressed_pk:Buffer.from(R.slice(0,33)),error_message:P(N),pk:"OBSOLETE PROPERTY",return_code:N}},E)}class d{transport;versionResponse;constructor(_){if(!_)throw new I_("wallet_ledger_transport_not_defined");this.transport=_}static serializeHRP(_){if(_==null||_.length<3||_.length>83)throw new I_("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let L=Buffer.alloc(1+_.length);return L.writeUInt8(_.length,0),L.write(_,1),L}async serializePath(_){if(this.versionResponse=await D_(this.transport),this.versionResponse.return_code!==V.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return z_(_);case 2:return P_(_);default:return Buffer.alloc(0)}}async signGetChunks(_,L){let R=await this.serializePath(_),f=[];f.push(R);for(let N=0;N<L.length;N+=T_){let y=N+T_;if(N>L.length)y=L.length;f.push(L.slice(N,y))}return f}async getVersion(){try{return this.versionResponse=await D_(this.transport),this.versionResponse}catch(_){return E(_)}}appInfo(){return this.transport.send(176,1,0,0).then((_)=>{let L=_.readUInt16BE(_.length-2),R="",f="",N=0,y=0;if(_[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let w=_[1];R=_.slice(2,2+w).toString("ascii");let O=2+w,T=_[O];O+=1,f=_.slice(O,O+T).toString("ascii"),O+=T;let B=_[O];return O+=1,N=B,y=_[O],{appName:R,appVersion:f,error_message:P(L),flag_onboarded:(y&4)!==0,flag_pin_validated:(y&128)!==0,flag_recovery:(y&1)!==0,flag_signed_mcu_code:(y&2)!==0,flagLen:N,flagsValue:y,return_code:L}},E)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[V.NoError,28160]).then((_)=>{let L=_.slice(-2),R=L[0]*256+L[1];if(R===28160)return{error_message:"This command is only available in the Dashboard",return_code:R};let f=_.slice(0,4).toString("hex"),N=4,y=_[N];N+=1;let w=_.slice(N,N+y).toString();N+=y;let O=_[N];N+=1;let T=_.slice(N,N+O).toString("hex");N+=O;let B=_[N];N+=1;let U=_.slice(N,N+B);if(U[B-1]===0)U=_.slice(N,N+B-1);let W=U.toString();return{error_message:P(R),flag:T,mcuVersion:W,return_code:R,seVersion:w,targetId:f}},E)}async publicKey(_){try{let L=await this.serializePath(_);switch(this.versionResponse.major){case 1:return K_(this,L);case 2:{let R=Buffer.concat([d.serializeHRP("thor"),L]);return V_(this,R)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(L){return E(L)}}async getAddressAndPubKey(_,L,R=!1){try{let f=await this.serializePath(_),N=Buffer.concat([d.serializeHRP(L),f]),y=await this.transport.send(b,l.GET_ADDR_SECP256K1,R?B_.SHOW_ADDRESS_IN_DEVICE:B_.ONLY_RETRIEVE,0,N,[V.NoError]),w=Buffer.from(y.slice(0,33)),O=Buffer.from(y.slice(33,-2)).toString(),T=y.readUInt16BE(y.length-2);return{bech32_address:O,compressed_pk:w,error_message:P(T),return_code:T}}catch(f){return E(f)}}showAddressAndPubKey(_,L){return this.getAddressAndPubKey(_,L,!0)}signSendChunk(_,L,R,f=g.JSON){switch(this.versionResponse.major){case 1:return U_(this,_,L,R,f);case 2:return m_(this,_,L,R,f);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(_,L,R=g.JSON){let f=Buffer.from(L),N=[],y;try{N=await this.signGetChunks(_,f),y=await this.signSendChunk(1,N.length,N[0],R)}catch(O){E(O)}let w={error_message:y.error_message,return_code:y.return_code,signature:null};for(let O=1;O<N.length;O+=1)if(w=await this.signSendChunk(1+O,N.length,N[O],R),w.return_code!==V.NoError)break;return{error_message:w.error_message,return_code:w.return_code,signature:w.signature}}}class n{ledgerTimeout=50000;derivationPath=P0.GAIA;transport;ledgerApp;chain="thor";injectedTransport;constructor(_){if(this.injectedTransport=_,_)this.transport=_}checkOrCreateTransportAndLedger=async(_=!1)=>{if(!_&&this.transport&&this.ledgerApp)return;try{if(!this.transport||_&&!this.injectedTransport)this.transport=this.injectedTransport??await q();switch(this.chain){case"thor":{this.ledgerApp=_||!this.ledgerApp?new d(this.transport):this.ledgerApp;break}case"cosmos":{let R=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=_||!this.ledgerApp?new R(this.transport):this.ledgerApp}}return this.ledgerApp}catch(L){throw new X_("wallet_ledger_connection_error",L)}};validateResponse=(_,L)=>{switch(_){case W_.NoError:return;case W_.LockedDevice:throw new X_("wallet_ledger_device_locked",{message:`Ledger is locked: ${L}`});case W_.TC_NotFound:throw new X_("wallet_ledger_device_not_found");default:break}}}class F_ extends n{pubKey=null;derivationPath;constructor(_=V0.GAIA,L){super(L);this.chain="cosmos",this.derivationPath=m0(_)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:_,address:L}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(_,"hex").toString("base64"),L};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:R,error_message:f,signature:N}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new c_("wallet_ledger_pubkey_not_found");return this.validateResponse(R,f),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:L,signature:N}]};signAmino=async(_,L)=>{await this.checkOrCreateTransportAndLedger(!0);let R=await this.getAccounts();if(R.findIndex((D)=>D.address===_)===-1)throw new c_("wallet_ledger_address_not_found",{address:_});let N=await import("@cosmjs/amino"),y=N.encodeSecp256k1Signature??N.default?.encodeSecp256k1Signature,w=N.serializeSignDoc??N.default?.serializeSignDoc,O=await import("@cosmjs/crypto"),T=O.Secp256k1Signature??O.default?.Secp256k1Signature,B=w(L),U=await this.ledgerApp.sign(this.derivationPath,B);this.validateResponse(U.return_code,U.error_message);let W=T.fromDer(U.signature).toFixedLength();return{signature:y(R[0].pubkey,W),signed:L}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAddressAndPubKey();return[{address:_.address,algo:"secp256k1",pubkey:Buffer.from(_.publicKey,"hex")}]}}import{ChainId as Q,derivationPathToString as v0,NetworkDerivationPath as l0,SwapKitError as o}from"@swapkit/helpers";import{AbstractSigner as b0}from"ethers";var v_={apex:"apexp",europa:"flex",nanoS:"nanos",nanoSP:"nanosp",nanoX:"nanox",stax:"stax"};async function l_(_,L=fetch){let R=v_[_];if(!R)return null;let f=`https://crypto-assets-service.api.ledger.com/v1/certificates?output=descriptor&public_key_usage=network&target_device=${R}`,N=await L(f);if(!N.ok)return null;let w=(await N.json())[0]?.descriptor,O=w?.signatures?.prod;if(!(w?.data&&O))return null;return`${w.data}${I0(O)}`}async function b_(_,L){await _.send(176,6,12,0,Buffer.from(L,"hex"))}async function g_(_,L,R=fetch){let f=v_[L];if(!f)return null;let N=`https://crypto-assets-service.api.ledger.com/v1/networks?chain_id=${_}&output=chain_id,descriptors,icons`,y=await R(N);if(!y.ok)return null;let O=(await y.json()).find((U)=>U.chain_id===_),T=O?.descriptors?.[f],B=T?.signatures?.prod;if(!(T?.data&&B))return null;return{data:T.data,icon:O?.icons?.[f],signature:B}}function I0(_){return x_(21,Buffer.from(_,"hex")).toString("hex")}function x_(_,L){return Buffer.concat([Buffer.from([_,L.length]),L])}function c0({data:_,signature:L}){let R=Buffer.concat([Buffer.from(_,"hex"),x_(21,Buffer.from(L,"hex"))]),f=Buffer.alloc(2);return f.writeUInt16BE(R.length,0),Buffer.concat([f,R])}async function $_(_,L,R){for(let f=0;f<R.length;f+=255){let N=f===0?1:0,y=R.subarray(f,f+255);await _.send(224,48,N,L,y)}}async function h_(_,L){let R=c0(L);if(await $_(_,0,R),!L.icon)return{iconAccepted:!1};try{return await $_(_,1,Buffer.from(L.icon,"hex")),{iconAccepted:!0}}catch{return await $_(_,0,R),{iconAccepted:!1}}}var g0=27264,u_=Number(Q.Arc);function x0(_){return _ instanceof Error&&"statusCode"in _&&_.statusCode===g0}function h0(_){return Object.values(_??{}).some((L)=>Array.isArray(L)&&L.length)}function u0(_){if(typeof _==="number")return _;let L=_.startsWith("0x")?_.slice(2):_;return Number.parseInt(L||"0",16)}class A extends b0{chainId=Q.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;transport;injectedTransport;arcNetworkRegistered=!1;constructor({provider:_,derivationPath:L=l0.OP,chainId:R=Q.Optimism,transport:f}){super(_);this.chainId=R||Q.Ethereum,this.derivationPath=typeof L==="string"?L:v0(L),this.injectedTransport=f,Object.defineProperty(this,"provider",{enumerable:!0,value:_||null,writable:!1})}connect=(_)=>new A({chainId:this.chainId,derivationPath:this.derivationPath,provider:_,transport:this.transport??this.injectedTransport});checkOrCreateTransportAndLedger=async()=>{await this.createTransportAndLedger()};createTransportAndLedger=async()=>{if(this.ledgerApp)return;this.transport||=this.injectedTransport??await q();let _=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new _(this.transport)};getAddress=async()=>{let _=await this.getAddressAndPubKey();if(!_)throw new o("wallet_ledger_failed_to_get_address");return _.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(_)=>{let{Signature:L}=await import("ethers");await this.createTransportAndLedger();let R=await this.ledgerApp?.signPersonalMessage(this.derivationPath,_);if(!R)throw new o("wallet_ledger_signing_error");return R.r=`0x${R.r}`,R.s=`0x${R.s}`,L.from(R).serialized};sendTransaction=async(_)=>{if(!this.provider)throw new o("wallet_ledger_no_provider");let L=await this.signTransaction(_);return await this.provider.broadcastTransaction(L)};signTypedData=async(_,L,R,f)=>{let{buildEIP712DomainType:N}=await import("@swapkit/toolboxes/evm"),{Signature:y,TypedDataEncoder:w}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:O,...T}=L,B=f??w.from(T).primaryType,U;try{U=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:_,message:R,primaryType:B,types:{EIP712Domain:N(_),...T}})}catch(W){let D=W instanceof Error&&"statusCode"in W;if(!D||D&&W.statusCode===27013)throw W;let Z=w.hashDomain(_).slice(2),J=w.from(T).hash(R).slice(2);U=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,Z,J)}if(!U)throw new o("wallet_ledger_signing_error");return U.r=`0x${U.r}`,U.s=`0x${U.s}`,y.from(U).serialized};signTransaction=async(_)=>{let{Transaction:L}=await import("ethers");await this.createTransportAndLedger();let R=_.nonce??void 0,f=R===void 0?await this.provider?.getTransactionCount(_.from||await this.getAddress()):void 0,N={chainId:_.chainId||this.chainId,data:_.data,gasLimit:_.gasLimit,..._.gasPrice&&{gasPrice:_.gasPrice},...!_.gasPrice&&_.maxFeePerGas&&{maxFeePerGas:_.maxFeePerGas,maxPriorityFeePerGas:_.maxPriorityFeePerGas},nonce:R!==void 0?Number(R.toString()):f,to:_.to?.toString(),type:_.type&&!Number.isNaN(_.type)?_.type:_.maxFeePerGas?2:0,value:_.value},y=L.from(N).unsignedSerialized.slice(2),{ledgerService:w}=await import("@ledgerhq/hw-app-eth"),O=Number(N.chainId),T=O===u_,B=await w.resolveTransaction(y,{},{erc20:!0,externalPlugins:!0}).catch((J)=>{if(!T)throw J;return console.warn("Ledger: could not fetch clear-signing metadata for Arc, signing blind"),null});if(T&&!this.arcNetworkRegistered)await this.registerNetworkOnDevice(O);let U=await this.signWithLedgerApp(y,B,O);if(!U)throw new o("wallet_ledger_signing_error");let{r:W,s:D,v:Z}=U;return L.from({...N,signature:{r:`0x${W}`,s:`0x${D}`,v:u0(Z)}}).serialized};signWithLedgerApp=async(_,L,R)=>{try{return await this.ledgerApp?.signTransaction(this.derivationPath,_,L)}catch(f){if(!(R===u_&&x0(f)&&h0(L)))throw f;return console.warn("Ledger: the app rejected the Arc metadata, signing blind"),await this.ledgerApp?.signTransaction(this.derivationPath,_,null)}};registerNetworkOnDevice=async(_)=>{let L=this.transport?.deviceModel?.id;if(!(this.transport&&L))return;try{let[R,f]=await Promise.all([g_(_,L),l_(L)]);if(!R)return;if(f)await b_(this.transport,f);await h_(this.transport,R),this.arcNetworkRegistered=!0}catch{}}}var d_=(_)=>new A({..._,chainId:Q.Arbitrum}),n_=(_)=>new A({..._,chainId:Q.Arc}),o_=(_)=>new A({..._,chainId:Q.Aurora}),i_=(_)=>new A({..._,chainId:Q.Avalanche}),p_=(_)=>new A({..._,chainId:Q.Base}),t_=(_)=>new A({..._,chainId:Q.Ethereum}),a_=(_)=>new A({..._,chainId:Q.Gnosis}),e_=(_)=>new A({..._,chainId:Q.Optimism}),r_=(_)=>new A({..._,chainId:Q.Polygon}),s_=(_)=>new A({..._,chainId:Q.BinanceSmartChain}),_0=(_)=>new A({..._,chainId:Q.Monad}),L0=(_)=>new A({..._,chainId:Q.XLayer}),R0=(_)=>new A({..._,chainId:Q.Berachain});async function N0(_,L){let R=(await import("@ledgerhq/hw-app-near")).default,{Chain:f,NetworkDerivationPath:N,SwapKitError:y}=await import("@swapkit/helpers"),w=L??await q(),O=new R(w),T=(_||N[f.Near]).join("'/").concat("'"),{address:B,publicKey:U}=await O.getAddress(T);return{getAddress(){return Promise.resolve(B)},async getPublicKey(){let{PublicKey:D}=await import("@near-js/crypto");return D.fromString(`ed25519:${U}`)},signDelegateAction(D){return Promise.reject(new y("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(D,Z,J,j,k){return Promise.reject(new y("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(D){let{Signature:Z,SignedTransaction:J}=await import("@near-js/transactions");try{let j=await O.signTransaction(D.encode(),T);if(!j)throw Error("Signature undefined");let k=new Z({data:j,keyType:0}),z=new J({signature:k,transaction:D});return[j,z]}catch(j){throw new y("wallet_ledger_signing_error",{error:j})}}}}import{Chain as d0,derivationPathToString as n0,NetworkDerivationPath as o0,SwapKitError as v}from"@swapkit/helpers";class y0{derivationPath;ledgerApp=null;address=null;publicKey=null;injectedTransport;constructor(_,L){this.derivationPath=typeof _==="string"?_:n0(_||o0[d0.Sui]),this.injectedTransport=L}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async createTransportAndLedger(){if(this.ledgerApp)return;let _=this.injectedTransport??await q(),L=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new L(_)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new v("wallet_ledger_transport_error");let _=this.getLedgerPath(),L=await this.ledgerApp.getPublicKey(_);if(!L?.publicKey)throw new v("wallet_ledger_failed_to_get_address");return this.publicKey=L.publicKey,this.address=`0x${Buffer.from(L.address).toString("hex")}`,this.address}toSuiAddress(){if(!this.address)throw new v("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction(_){let L=_ instanceof Uint8Array?_:_.transaction;if(await this.createTransportAndLedger(),!this.ledgerApp)throw new v("wallet_ledger_transport_error");if(!this.publicKey)throw new v("wallet_ledger_failed_to_get_address");try{let R=this.getLedgerPath(),f=new Uint8Array(3+L.length);f[0]=0,f[1]=0,f[2]=0,f.set(L,3);let N=await this.ledgerApp.signTransaction(R,f);if(!N?.signature)throw new v("wallet_ledger_signing_error");let y=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(y.length!==32)throw new v("wallet_ledger_signing_error",{error:"Invalid public key length"});let w=new Uint8Array(97);w[0]=0,w.set(N.signature,1),w.set(y,65);let O=Buffer.from(w).toString("base64");return{bytes:Buffer.from(L).toString("base64"),signature:O}}catch(R){throw new v("wallet_ledger_signing_error",{error:R})}}}var f0=(_,L)=>new y0(_,L);import{base64 as C_}from"@scure/base";import{NetworkDerivationPath as p0,SwapKitError as Z_}from"@swapkit/helpers";import{base64 as i0}from"@scure/base";import{SwapKitError as I}from"@swapkit/helpers";var R_=(_)=>{if(_.length<64)throw new I("wallet_ledger_invalid_signature",{reason:"Too short"});if(_[0]!==48)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(_[1]+2!==_.length)throw new I("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(_[2]!==2)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let L=_[3],R=_.slice(4,L+4);if(R.length===33&&R[0]===0)R=R.slice(1,33);else if(R.length===33)throw new I("wallet_ledger_invalid_signature",{reason:"r too long"});while(R.length<32)R.unshift(0);if(_[L+4]!==2)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let f=_[L+5];if(4+L+2+f!==_.length)throw new I("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let N=_.slice(L+6,_.length);if(N.length===33&&N[0]===0)N=N.slice(1,33);else if(N.length===33)throw new I("wallet_ledger_invalid_signature",{reason:"s too long"});while(N.length<32)N.unshift(0);if(R.length!==32||N.length!==32)throw new I("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return i0.encode(Buffer.concat([R,N]))};function t0(_){if(typeof _==="string")return _;let L=_.chain?.toUpperCase(),R=(_.symbol||_.ticker||"").toUpperCase();if(!(L&&R))return R||L||"";if(_.synth)return`${L}/${R}`;return`${L}.${R}`}function a0(_){return{..._,msgs:_.msgs.map((L)=>{if(!L.type.includes("MsgDeposit"))return L;let R=L.value.coins;if(!Array.isArray(R))return L;return{...L,value:{...L.value,coins:R.map((f)=>({...f,asset:t0(f.asset)}))}}})}}class M_ extends n{pubKey=null;derivationPath;constructor(_=p0.THOR,L){super(L);this.chain="thor",this.derivationPath=_}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:_,bech32_address:L}=await this.getAddressAndPubKey();return this.pubKey=C_.encode(_),L};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(_.return_code,_.error_message),_};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(_.return_code,_.error_message),_};signTransaction=async(_,L="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:R,error_message:f,signature:N}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new Z_("wallet_ledger_pubkey_not_found");return this.validateResponse(R,f),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:L,signature:R_(N)}]};signAmino=async(_,L)=>{await this.checkOrCreateTransportAndLedger(!0);let R=(await this.getAccounts()).find((U)=>U.address===_);if(!R)throw new Z_("wallet_ledger_address_not_found",{address:_});let f=await import("@cosmjs/amino"),N=f.encodeSecp256k1Signature??f.default?.encodeSecp256k1Signature,y=f.serializeSignDoc??f.default?.serializeSignDoc,w=a0(L),{return_code:O,error_message:T,signature:B}=await this.ledgerApp.sign(this.derivationPath,y(w));return this.validateResponse(O,T),{signature:N(R.pubkey,C_.decode(R_(B))),signed:L}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{bech32_address:_,compressed_pk:L}=await this.getAddressAndPubKey();return this.pubKey=C_.encode(L),[{address:_,algo:"secp256k1",pubkey:L}]};sign=async(_)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:L,error_message:R,signature:f}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new Z_("wallet_ledger_pubkey_not_found");return this.validateResponse(L,R),R_(f)}}import{derivationPathToString as e0,NetworkDerivationPath as r0,SwapKitError as i}from"@swapkit/helpers";class G0{derivationPath;ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor(_,L){this.derivationPath=typeof _==="string"?_:e0(_||r0.TRON),this.injectedTransport=L}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let _=this.injectedTransport??await q(),L=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new L(_)};getAddress=async()=>{let _=await this.getAddressAndPubKey();if(!_)throw new i("wallet_ledger_failed_to_get_address");return _.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let _=await this.ledgerApp?.getAddress(this.derivationPath);if(!_)throw new i("wallet_ledger_failed_to_get_address");return{address:_.address,publicKey:_.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(_)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new i("wallet_ledger_transport_error");try{let L=await this.ledgerApp.signTransaction(this.derivationPath,_.raw_data_hex,[]);if(!L)throw new i("wallet_ledger_signing_error");return{..._,signature:[L]}}catch(L){throw new i("wallet_ledger_signing_error",{error:L})}}}var w0=(_,L)=>new G0(_,L);import{hex as N_}from"@scure/base";import{derivationPathToString as s0,getWalletFormatFor as J_,SwapKitError as j_}from"@swapkit/helpers";var T0=["bitcoin-cash","dash","dogecoin","zcash"],O0=({tx:_,inputUtxos:L,btcApp:R,derivationPath:f,chain:N},y)=>{let w=L.map((Z)=>{return[R.splitTransaction(Z.txHex||"",!T0.includes(N),N==="zcash"),Z.index,void 0,void 0]}),O=N_.encode(_.unsignedTx),T=R.splitTransaction(O,!0),B=R.serializeTransactionOutputs(T).toString("hex"),U=J_(f),W=U!=="legacy",D={additionals:U==="bech32"?["bech32"]:[],associatedKeysets:w.map(()=>f),inputs:w,outputScriptHex:B,segwit:W,useTrustedInputForSegwit:W};return R.createPaymentTransaction({...D,...y})},_L=({tx:_,inputUtxos:L,btcApp:R,derivationPaths:f,chain:N},y)=>{if(f.length!==L.length)throw new j_("wallet_ledger_invalid_params",{message:`Derivation paths count (${f.length}) must match inputs count (${L.length})`});let w=L.map((Z)=>{return[R.splitTransaction(Z.txHex||"",!T0.includes(N),N==="zcash"),Z.index,void 0,void 0]}),O=N_.encode(_.unsignedTx),T=R.splitTransaction(O,!0),B=R.serializeTransactionOutputs(T).toString("hex"),U=J_(f[0]??""),W=U!=="legacy",D={additionals:U==="bech32"?["bech32"]:[],associatedKeysets:f,inputs:w,outputScriptHex:B,segwit:W,useTrustedInputForSegwit:W};return R.createPaymentTransaction({...D,...y})},x=({chain:_,additionalSignParams:L})=>{return(R,f)=>{let N,y=null;async function w(){y||=f??await q();let W=(await import("@ledgerhq/hw-app-btc")).default;return N||=new W({currency:_,transport:y}),N}async function O(){return N||await w()}async function T(){if(!f)await y?.close?.();N=void 0,y=null}let B=typeof R==="string"?R:s0(R),U=J_(B);return{connect:async()=>{await O()},disconnect:T,getAddress:async()=>{let{toCashAddress:W}=await import("@swapkit/toolboxes/utxo"),D=await O(),{bitcoinAddress:Z}=await D.getWalletPublicKey(B,{format:U});if(!Z)throw new j_("wallet_ledger_get_address_error",{message:`Cannot get ${_} address from ledger derivation path: ${B}`});return _==="bitcoin-cash"&&U==="legacy"?W(Z).replace(/(bchtest:|bitcoincash:)/,""):Z},getExtendedPublicKey:async(W="84'/0'/0'",D=76067358)=>{return(await O()).getWalletXpub({path:W,xpubVersion:D})},signPCZT:async(W)=>{if(_!=="zcash")throw new j_("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});let D=await O(),{ZcashTransaction:Z,Script:J}=await import("@swapkit/utxo-signer"),j=W.getGlobal(),k=new Z({consensusBranchId:j.consensusBranchId,expiryHeight:j.expiryHeight,lockTime:j.lockTime,version:j.txVersion,versionGroupId:j.versionGroupId}),z=[];for(let X=0;X<W.inputsLength;X++){let F=W.getInput(X);k.addInput({index:F.index,script:new Uint8Array,sequence:F.sequence??4294967295,txid:F.txid,value:F.value}),z.push({hash:N_.encode(new Uint8Array([...F.txid].reverse())),index:F.index,txHex:LL(F,j),value:Number(F.value),witnessUtxo:{script:F.scriptPubkey,value:Number(F.value)}})}for(let X=0;X<W.outputsLength;X++){let F=W.getOutput(X);k.addOutput({amount:F.value,script:F.scriptPubkey})}let u=await O0({btcApp:D,chain:_,derivationPath:B,inputUtxos:z,tx:k},{...L,expiryHeight:(()=>{let X=Buffer.alloc(4);return X.writeUInt32LE(j.expiryHeight),X})(),lockTime:j.lockTime}),p=Z.fromHex(u,{allowUnknownOutputs:!0}),t=W.clone();for(let X=0;X<p.inputsLength;X++){let F=p.getInput(X);if(F.script&&F.script.length>0){let Y=J.decode(F.script);if(Y.length>=2)t.addSignature(X,Y[1],Y[0])}}return t},signTransaction:async(W,D)=>{let Z=await O();return O0({btcApp:Z,chain:_,derivationPath:B,inputUtxos:D,tx:W},L)},signTransactionWithMultiplePaths:async(W,D,Z)=>{let J=await O();return _L({btcApp:J,chain:_,derivationPaths:Z,inputUtxos:D,tx:W},L)}}}};function LL(_,L){let R=[],f=(L.txVersion|2147483648)>>>0;R.push(f&255,f>>8&255,f>>16&255,f>>24&255);let N=L.versionGroupId;R.push(N&255,N>>8&255,N>>16&255,N>>24&255),R.push(0);let y=_.index+1;if(y<253)R.push(y);else R.push(253,y&255,y>>8&255);for(let T=0;T<_.index;T++)R.push(0,0,0,0,0,0,0,0),R.push(0);let w=_.value;R.push(Number(w&0xffn),Number(w>>8n&0xffn),Number(w>>16n&0xffn),Number(w>>24n&0xffn),Number(w>>32n&0xffn),Number(w>>40n&0xffn),Number(w>>48n&0xffn),Number(w>>56n&0xffn));let O=_.scriptPubkey;if(O.length<253)R.push(O.length);else R.push(253,O.length&255,O.length>>8&255);for(let T of O)R.push(T);return R.push(L.lockTime&255,L.lockTime>>8&255,L.lockTime>>16&255,L.lockTime>>24&255),R.push(L.expiryHeight&255,L.expiryHeight>>8&255,L.expiryHeight>>16&255,L.expiryHeight>>24&255),R.push(0,0,0,0,0,0,0,0),R.push(0),R.push(0),R.push(0),N_.encode(new Uint8Array(R))}var B0=x({chain:"bitcoin"}),D0=x({chain:"litecoin"}),U0=x({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),W0=x({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),X0=x({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),F0=x({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let _=Buffer.alloc(4);return _.writeUInt32LE(0),_})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});import RL from"@ledgerhq/hw-app-xrp";import{Chain as NL,derivationPathToString as yL,NetworkDerivationPath as fL}from"@swapkit/helpers";import{encode as $0}from"ripple-binary-codec";var GL=2147483648;function wL(_){let L={};for(let R in _)if(_[R]!==null&&_[R]!==void 0)L[R]=_[R];return L}function OL(_){return new RL(_)}var C0=async(_,L)=>{let R=yL(_||fL[NL.Ripple]),f=L??await q(),N=OL(f),{address:y,publicKey:w}=await N.getAddress(R);async function O(T){let{hashes:B}=await import("xrpl"),W={...wL(T),Flags:T.Flags||GL,SigningPubKey:w.toUpperCase()},D=$0(W),Z=await N.signTransaction(R,D),J=$0({...W,TxnSignature:Z});return{hash:B.hashSignedTx(J),tx_blob:J}}return{getAddress:()=>y,signTransaction:O}};var S=async({chain:_,derivationPath:L,transport:R})=>{let{match:f}=await import("ts-pattern");return f(_).returnType().with($.THORChain,()=>Promise.resolve(new M_(L,R))).with($.Cosmos,()=>Promise.resolve(new F_(L,R))).with($.Bitcoin,()=>Promise.resolve(B0(L,R))).with($.BitcoinCash,()=>Promise.resolve(U0(L,R))).with($.Dash,()=>Promise.resolve(X0(L,R))).with($.Dogecoin,()=>Promise.resolve(W0(L,R))).with($.Litecoin,()=>Promise.resolve(D0(L,R))).with($.Zcash,()=>Promise.resolve(F0(L,R))).with($.Ripple,()=>Promise.resolve(C0(L,R))).with($.Tron,()=>Promise.resolve(w0(L,R))).with($.Sui,()=>Promise.resolve(f0(L,R))).with($.Near,()=>{return Promise.resolve(N0(L,R))}).with($.Arbitrum,$.Arc,$.Aurora,$.Avalanche,$.Berachain,$.BinanceSmartChain,$.Ethereum,$.Gnosis,$.Monad,$.Optimism,$.Polygon,$.Base,$.XLayer,async()=>{let{getProvider:N}=await import("@swapkit/toolboxes/evm"),y={derivationPath:L,provider:await N(_),transport:R};return f(_).with($.BinanceSmartChain,()=>s_(y)).with($.Avalanche,()=>i_(y)).with($.Arbitrum,()=>d_(y)).with($.Arc,()=>n_(y)).with($.Berachain,()=>R0(y)).with($.Optimism,()=>e_(y)).with($.Polygon,()=>r_(y)).with($.Base,()=>p_(y)).with($.Aurora,()=>o_(y)).with($.Gnosis,()=>a_(y)).with($.Monad,()=>_0(y)).with($.XLayer,()=>L0(y)).otherwise(()=>t_(y))}).otherwise(()=>{throw new TL("wallet_chain_not_supported",{chain:_,wallet:BL.LEDGER})})};var QL=JL({connect:({addChain:_,supportedChains:L,walletType:R})=>async function(N,y,{address:w,transport:O}={}){let[T]=DL({chains:N,supportedChains:L,walletType:R});if(!T)return!1;let B=y??WL[T],U=await HL({address:w,chain:T,derivationPath:B,transport:O});return _({...U,chain:T,walletType:Y_.LEDGER}),!0},directSigningSupport:{[G.Arbitrum]:!0,[G.Arc]:!0,[G.Aurora]:!0,[G.Avalanche]:!0,[G.Base]:!0,[G.Berachain]:!0,[G.BinanceSmartChain]:!0,[G.Ethereum]:!0,[G.Gnosis]:!0,[G.Monad]:!0,[G.Bitcoin]:!0,[G.BitcoinCash]:!0,[G.Cosmos]:!0,[G.Dash]:!0,[G.Dogecoin]:!0,[G.Litecoin]:!0,[G.Near]:!0,[G.Optimism]:!0,[G.Polygon]:!0,[G.Ripple]:!0,[G.Sui]:!0,[G.THORChain]:!0,[G.Tron]:!0,[G.XLayer]:!0},getExtendedPublicKey:AL,name:"connectLedger",supportedChains:[G.Arbitrum,G.Arc,G.Aurora,G.Avalanche,G.Base,G.Berachain,G.BinanceSmartChain,G.Bitcoin,G.BitcoinCash,G.Cosmos,G.Dash,G.Dogecoin,G.Ethereum,G.Gnosis,G.Litecoin,G.Monad,G.Near,G.Optimism,G.Polygon,G.Ripple,G.Sui,G.THORChain,G.XLayer,G.Tron,G.Zcash],walletType:Y_.LEDGER}),bR=YL(QL);function qL(_,L="t"){if(!_?.includes("=:"))return _;let R=_.includes(`:${L}:`)?_.split(`:${L}:`)[0]:_;return R?.substring(0,R.lastIndexOf(":"))}async function AL(_,L,{accountIndex:R}={}){if(![G.BitcoinCash,G.Bitcoin,G.Dash,G.Dogecoin,G.Litecoin,G.Zcash].includes(_))throw new h("wallet_chain_not_supported",{chain:_,wallet:Y_.LEDGER});let f=_,N=await S({chain:f,derivationPath:L});if(!N.getExtendedPublicKey)return;let y=q_({accountIndex:R,chain:f,derivationPath:L}),w=y_(y),O=_===G.Bitcoin||_===G.Litecoin?w:w.replace(/^m\//,""),T=j0(f).bip32.public;try{let B=await N.getExtendedPublicKey(O,T);return{accountIndex:Q_(y),path:w,xpub:B}}finally{await N.disconnect?.()}}async function HL({address:_,chain:L,derivationPath:R,transport:f}){switch(L){case G.BitcoinCash:case G.Bitcoin:case G.Dash:case G.Dogecoin:case G.Litecoin:case G.Zcash:{let k=function(X={}){return j(X)},{getUtxoToolbox:N}=await import("@swapkit/toolboxes/utxo"),y=L,w=await S({chain:L,derivationPath:R,transport:f}),O=_??await m({chain:L,ledgerClient:w}),T=ZL(O,y),B,U,W;if(L===G.Bitcoin){let{BitcoinPsbtLedger:X}=await import("../chunk-egtwbe6q.js"),F=X(R,f);U=T===XL.P2SH_P2WPKH?await F.getPublicKey():void 0,B={getAddress:F.getAddress,publicKey:U,signTransaction:F.signTransaction}}else if(L===G.BitcoinCash||L===G.Dogecoin||L===G.Dash||L===G.Litecoin){let{createLegacyPsbtSigner:X,signLegacyPsbtTransaction:F}=await import("../chunk-bwf31zxr.js");B=X({address:O,chain:y,legacyClient:w}),W=async(Y)=>{let H=await F({chain:y,legacyClient:w,tx:Y});return D.broadcastTx(H)}}let D=B?await N(y,{scriptType:T,signer:B}):N(y,{scriptType:T}),Z=W??D.signAndBroadcastTransaction,J=async(X)=>{let F=X.feeRate||(await D.getFeeRates())[Z0.Average],Y=[G.Bitcoin].includes(L)?X.memo:qL(X.memo),{tx:H,inputs:c}=await D.createTransaction({...X,feeRate:F,fetchTxHex:!0,memo:Y,publicKey:X.publicKey??U,sender:O}),K=await w.signTransaction(H,c);return await D.broadcastTx(K)};async function j({accountIndex:X}={}){if(!w.getExtendedPublicKey)return;let F=q_({accountIndex:X,chain:y,derivationPath:R}),Y=y_(F),H=L===G.Bitcoin||L===G.Litecoin?Y:Y.replace(/^m\//,""),c=j0(y).bip32.public,K=await w.getExtendedPublicKey(H,c);return{accountIndex:Q_(F),path:Y,xpub:K}}async function z({accountIndex:X,index:F,change:Y=!1}){try{let H=ML({accountIndex:X,chain:y,change:Y,derivationPath:R,index:F}),c=await S({chain:y,derivationPath:H,transport:f}),K=await m({chain:y,ledgerClient:c});return{accountIndex:Q_(H),address:K,change:Y,index:F,path:y_(H),pubkey:""}}catch{return}}async function u({accountIndex:X,count:F,startIndex:Y=0,change:H=!1}){return M0("count",F),M0("startIndex",Y),(await Promise.all(Array.from({length:F},(K,a)=>z({accountIndex:X,change:H,index:Y+a})))).filter((K)=>!!K)}let p=CL({chain:y,deriveAddress:z,getBalance:D.getBalance,getUtxos:(X)=>jL(y).getUtxos({address:X,fetchTxHex:!0})});async function t({utxos:X,recipient:F,assetValue:Y,memo:H,feeRate:c,feeOptionKey:K,changeAddress:a}){if(!X.length)throw new h("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let J0=c||(await D.getFeeRates())[K||Z0.Fast],f_=H?$L(H):null,A_=[{address:F,value:Y.getBaseValue("number")}];if(f_)A_.push({script:f_,value:0});let Y0=X.map(({hash:r,index:s,value:G_,txHex:w_,witnessUtxo:O_})=>({hash:r,index:s,txHex:w_,value:G_,witnessUtxo:O_})),{inputs:e,outputs:H_}=D.accumulative({chain:y,feeRate:J0,inputs:Y0,outputs:A_});if(!(e&&H_))throw new h("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:Q0}=await import("@swapkit/utxo-signer"),E_=new Q0({allowLegacyWitnessUtxo:!0,version:1}),q0=a||X[0]?.address||F;FL({chain:y,compiledMemo:f_,inputs:e,outputs:H_,sender:q0,tx:E_});let A0=q_({chain:y,derivationPath:R}),H0=e.map((r)=>{let s=X.find((S_)=>S_.hash===r.hash&&S_.index===r.index),G_=s?.derivationIndex??0,w_=s?.isChange??!1,O_=[...A0,Number(w_),G_];return y_(O_)});if(!w.signTransactionWithMultiplePaths)throw new h("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let E0=await w.signTransactionWithMultiplePaths(E_,e,H0);return D.broadcastTx(E0)}return{...D,...p,address:O,deriveAddressAtIndex:z,deriveAddresses:u,getExtendedPublicKey:k,getExtendedPublicKeyInfo:j,signAndBroadcastTransaction:Z,transfer:J,transferFromMultipleAddresses:t}}case G.Ethereum:case G.Avalanche:case G.Arbitrum:case G.Arc:case G.Berachain:case G.Optimism:case G.Polygon:case G.BinanceSmartChain:case G.Base:case G.Aurora:case G.Gnosis:case G.Monad:case G.XLayer:{let{getEvmToolboxAsync:N}=await import("@swapkit/toolboxes/evm"),y=await S({chain:L,derivationPath:R,transport:f}),w=await m({chain:L,ledgerClient:y});return{...await N(L,{signer:y}),address:w}}case G.Cosmos:{let{createSigningStargateClient:N,getDefaultChainFee:y,getMsgSendDenom:w,getCosmosToolbox:O}=await import("@swapkit/toolboxes/cosmos"),T=await S({chain:L,derivationPath:R,transport:f}),B=await m({chain:L,ledgerClient:T});return{...await O(G.Cosmos,{signer:T}),address:B,transfer:async({assetValue:D,recipient:Z,memo:J})=>{if(!D)throw new h("wallet_ledger_invalid_asset");let j={amount:[{amount:D.getBaseValue("string"),denom:w(`u${D.symbol}`).toLowerCase()}],fromAddress:B,toAddress:Z},k=await UL(L),z=await N(k,T,"0.007uatom"),{transactionHash:u}=await z.signAndBroadcast(B,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:j}],y(G.Cosmos),J);return u}}}case G.THORChain:{let N=await S({chain:L,derivationPath:R,transport:f}),{getCosmosToolbox:y}=await import("@swapkit/toolboxes/cosmos"),w=y(L,{signer:N}),O=await m({chain:L,ledgerClient:N}),{sign:T}=N;return{...w,address:O,signMessage:T}}case G.Near:{let{getNearToolbox:N}=await import("@swapkit/toolboxes/near"),y=await S({chain:L,derivationPath:R,transport:f}),w=await y.getAddress();return{...N({signer:y}),address:w}}case G.Ripple:{let{getRippleToolbox:N}=await import("@swapkit/toolboxes/ripple"),y=await S({chain:L,derivationPath:R,transport:f}),w=y.getAddress();return{...N({signer:y}),address:w}}case G.Tron:{let{getTronToolbox:N}=await import("@swapkit/toolboxes/tron"),y=await S({chain:L,derivationPath:R,transport:f}),w=await m({chain:L,ledgerClient:y});return{...N({signer:y}),address:w}}case G.Sui:{let{getSuiToolbox:N}=await import("@swapkit/toolboxes/sui"),y=await S({chain:L,derivationPath:R,transport:f}),w=await m({chain:L,ledgerClient:y});return{...N({signer:y}),address:w}}default:throw new h("wallet_ledger_chain_not_supported",{chain:L})}}export{QL as ledgerWallet,AL as getLedgerExtendedPublicKey,bR as LEDGER_SUPPORTED_CHAINS};
|
|
1
|
+
import{c as q}from"../chunk-83g13ck6.js";import{e as C}from"../chunk-1jpcb30j.js";import{Chain as G,derivationPathToString as y_,FeeOption as Z0,filterSupportedChains as DL,getRPCUrl as UL,NetworkDerivationPath as WL,SwapKitError as h,UTXOScriptType as XL,WalletOption as Y_}from"@swapkit/helpers";import{addInputsAndOutputs as FL,assertDerivationIndex as M0,compileMemo as $L,createHDWalletHelpers as CL,getNetworkForChain as j0,getScriptTypeForAddress as ZL,getUTXOAccountIndexFromPath as Q_,getUTXOAccountPath as q_,getUTXOAddressPath as ML,getUtxoApi as jL}from"@swapkit/toolboxes/utxo";import{createWallet as JL,getWalletSupportedChains as YL}from"@swapkit/wallet-core";import{Chain as M,SwapKitError as S0,WalletOption as k0}from"@swapkit/helpers";var m=async({chain:_,ledgerClient:L})=>{if(!L)return"";switch(_){case M.Cosmos:case M.THORChain:return L.connect();case M.Ethereum:case M.BinanceSmartChain:case M.Avalanche:case M.Polygon:case M.Arbitrum:case M.Arc:case M.Berachain:case M.Optimism:case M.Base:case M.Aurora:case M.Gnosis:case M.Monad:case M.XLayer:return L.getAddress();case M.Bitcoin:case M.BitcoinCash:case M.Dash:case M.Dogecoin:case M.Litecoin:case M.Zcash:{let R=L;await R.connect();let f=await R.getAddress();return _===M.BitcoinCash?f.replace("bitcoincash:",""):f}case M.Near:return await L.getAddress();case M.Ripple:return L.getAddress();case M.Tron:return L.getAddress();case M.Sui:return L.connect();default:throw new S0("wallet_chain_not_supported",{chain:_,wallet:k0.LEDGER})}};import{Chain as $,SwapKitError as TL,WalletOption as BL}from"@swapkit/helpers";import{derivationPathToString as m0,NetworkDerivationPath as V0,SwapKitError as c_}from"@swapkit/helpers";import{LedgerErrorCode as W_,NetworkDerivationPath as P0,SwapKitError as X_}from"@swapkit/helpers";import{SwapKitError as I_}from"@swapkit/helpers";var b=85,T_=250;var l={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},__={ADD:1,INIT:0,LAST:2},B_={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},g={JSON:0},V={NoError:36864},k_={1:"U2F: Unknown",2:"U2F: Bad request",3:"U2F: Configuration unsupported",4:"U2F: Device Ineligible",5:"U2F: Timeout",14:"Timeout",25600:"Execution Error",26368:"Wrong Length",26626:"Error deriving keys",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",36864:"No errors",36865:"Device is busy"};function P(_){if(_ in k_)return k_[_];return`Unknown Status Code: ${_}`}function z0(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)&&!(_ instanceof Date)}function E(_){if(_){if(z0(_)){if(Object.hasOwn(_,"statusCode"))return{error_message:P(_.statusCode),return_code:_.statusCode};if(Object.hasOwn(_,"return_code")&&Object.hasOwn(_,"error_message"))return _}return{error_message:_.toString(),return_code:65535}}return{error_message:_.toString(),return_code:65535}}function D_(_){return _.send(85,l.GET_VERSION,0,0).then((L)=>{let R=L.slice(-2),f=R[0]*256+R[1],N=0;if(L.length>=9)N=(L[5]<<24)+(L[6]<<16)+(L[7]<<8)+(L[8]<<0);return{device_locked:L[4]===1,error_message:P(f),major:L[1],minor:L[2],patch:L[3],return_code:f,target_id:N.toString(16),test_mode:L[0]!==0}},E)}import{SwapKitError as L_}from"@swapkit/helpers";function z_(_){if(_==null||_.length<3)throw new L_("wallet_ledger_invalid_params",{reason:"Path too short"});if(_.length>10)throw new L_("wallet_ledger_invalid_params",{reason:"Path too long"});let L=Buffer.alloc(1+4*_.length);L.writeUInt8(_.length,0);for(let R=0;R<_.length;R+=1){let f=_[R]||0;if(R<3)f|=2147483648;L.writeInt32LE(f,1+R*4)}return L}function U_(_,L,R,f,N=g.JSON){return _.transport.send(b,l.SIGN_SECP256K1,L,N,f,[V.NoError,27012,27264]).then((y)=>{let w=y.slice(-2),O=w[0]*256+w[1],T=P(O);if(O===27264||O===27012)T=`${T} : ${y.slice(0,y.length-2).toString("ascii")}`;let B=null;if(y.length>2)B=y.slice(0,y.length-2);return{error_message:T,return_code:O,signature:B}},E)}function K0(_){if(_.length!==65)throw new L_("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let L=_.slice(33,65),R=Buffer.from([2+(L[L.length-1]&1)]);return Buffer.concat([R,_.slice(1,33)])}function K_(_,L){return _.transport.send(b,l.INS_PUBLIC_KEY_SECP256K1,0,0,L,[V.NoError]).then((R)=>{let f=R.slice(-2),N=f[0]*256+f[1],y=Buffer.from(R.slice(0,65));return{compressed_pk:K0(y),error_message:P(N),pk:y,return_code:N}},E)}function P_(_){if(!_||_.length!==5)throw new L_("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let L=Buffer.alloc(20);return L.writeUInt32LE(2147483648+_[0],0),L.writeUInt32LE(2147483648+_[1],4),L.writeUInt32LE(2147483648+_[2],8),L.writeUInt32LE(_[3],12),L.writeUInt32LE(_[4],16),L}function m_(_,L,R,f,N=g.JSON){let y=__.ADD;if(L===1)y=__.INIT;if(L===R)y=__.LAST;return U_(_,y,0,f,N)}function V_(_,L){return _.transport.send(b,l.GET_ADDR_SECP256K1,0,0,L,[V.NoError]).then((R)=>{let f=R.slice(-2),N=f[0]*256+f[1];return{compressed_pk:Buffer.from(R.slice(0,33)),error_message:P(N),pk:"OBSOLETE PROPERTY",return_code:N}},E)}class d{transport;versionResponse;constructor(_){if(!_)throw new I_("wallet_ledger_transport_not_defined");this.transport=_}static serializeHRP(_){if(_==null||_.length<3||_.length>83)throw new I_("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let L=Buffer.alloc(1+_.length);return L.writeUInt8(_.length,0),L.write(_,1),L}async serializePath(_){if(this.versionResponse=await D_(this.transport),this.versionResponse.return_code!==V.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return z_(_);case 2:return P_(_);default:return Buffer.alloc(0)}}async signGetChunks(_,L){let R=await this.serializePath(_),f=[];f.push(R);for(let N=0;N<L.length;N+=T_){let y=N+T_;if(N>L.length)y=L.length;f.push(L.slice(N,y))}return f}async getVersion(){try{return this.versionResponse=await D_(this.transport),this.versionResponse}catch(_){return E(_)}}appInfo(){return this.transport.send(176,1,0,0).then((_)=>{let L=_.readUInt16BE(_.length-2),R="",f="",N=0,y=0;if(_[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let w=_[1];R=_.slice(2,2+w).toString("ascii");let O=2+w,T=_[O];O+=1,f=_.slice(O,O+T).toString("ascii"),O+=T;let B=_[O];return O+=1,N=B,y=_[O],{appName:R,appVersion:f,error_message:P(L),flag_onboarded:(y&4)!==0,flag_pin_validated:(y&128)!==0,flag_recovery:(y&1)!==0,flag_signed_mcu_code:(y&2)!==0,flagLen:N,flagsValue:y,return_code:L}},E)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[V.NoError,28160]).then((_)=>{let L=_.slice(-2),R=L[0]*256+L[1];if(R===28160)return{error_message:"This command is only available in the Dashboard",return_code:R};let f=_.slice(0,4).toString("hex"),N=4,y=_[N];N+=1;let w=_.slice(N,N+y).toString();N+=y;let O=_[N];N+=1;let T=_.slice(N,N+O).toString("hex");N+=O;let B=_[N];N+=1;let U=_.slice(N,N+B);if(U[B-1]===0)U=_.slice(N,N+B-1);let W=U.toString();return{error_message:P(R),flag:T,mcuVersion:W,return_code:R,seVersion:w,targetId:f}},E)}async publicKey(_){try{let L=await this.serializePath(_);switch(this.versionResponse.major){case 1:return K_(this,L);case 2:{let R=Buffer.concat([d.serializeHRP("thor"),L]);return V_(this,R)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(L){return E(L)}}async getAddressAndPubKey(_,L,R=!1){try{let f=await this.serializePath(_),N=Buffer.concat([d.serializeHRP(L),f]),y=await this.transport.send(b,l.GET_ADDR_SECP256K1,R?B_.SHOW_ADDRESS_IN_DEVICE:B_.ONLY_RETRIEVE,0,N,[V.NoError]),w=Buffer.from(y.slice(0,33)),O=Buffer.from(y.slice(33,-2)).toString(),T=y.readUInt16BE(y.length-2);return{bech32_address:O,compressed_pk:w,error_message:P(T),return_code:T}}catch(f){return E(f)}}showAddressAndPubKey(_,L){return this.getAddressAndPubKey(_,L,!0)}signSendChunk(_,L,R,f=g.JSON){switch(this.versionResponse.major){case 1:return U_(this,_,L,R,f);case 2:return m_(this,_,L,R,f);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(_,L,R=g.JSON){let f=Buffer.from(L),N=[],y;try{N=await this.signGetChunks(_,f),y=await this.signSendChunk(1,N.length,N[0],R)}catch(O){E(O)}let w={error_message:y.error_message,return_code:y.return_code,signature:null};for(let O=1;O<N.length;O+=1)if(w=await this.signSendChunk(1+O,N.length,N[O],R),w.return_code!==V.NoError)break;return{error_message:w.error_message,return_code:w.return_code,signature:w.signature}}}class n{ledgerTimeout=50000;derivationPath=P0.GAIA;transport;ledgerApp;chain="thor";injectedTransport;constructor(_){if(this.injectedTransport=_,_)this.transport=_}checkOrCreateTransportAndLedger=async(_=!1)=>{if(!_&&this.transport&&this.ledgerApp)return;try{if(!this.transport||_&&!this.injectedTransport)this.transport=this.injectedTransport??await q();switch(this.chain){case"thor":{this.ledgerApp=_||!this.ledgerApp?new d(this.transport):this.ledgerApp;break}case"cosmos":{let R=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=_||!this.ledgerApp?new R(this.transport):this.ledgerApp}}return this.ledgerApp}catch(L){throw new X_("wallet_ledger_connection_error",L)}};validateResponse=(_,L)=>{switch(_){case W_.NoError:return;case W_.LockedDevice:throw new X_("wallet_ledger_device_locked",{message:`Ledger is locked: ${L}`});case W_.TC_NotFound:throw new X_("wallet_ledger_device_not_found");default:break}}}class F_ extends n{pubKey=null;derivationPath;constructor(_=V0.GAIA,L){super(L);this.chain="cosmos",this.derivationPath=m0(_)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:_,address:L}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(_,"hex").toString("base64"),L};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:R,error_message:f,signature:N}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new c_("wallet_ledger_pubkey_not_found");return this.validateResponse(R,f),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:L,signature:N}]};signAmino=async(_,L)=>{await this.checkOrCreateTransportAndLedger(!0);let R=await this.getAccounts();if(R.findIndex((D)=>D.address===_)===-1)throw new c_("wallet_ledger_address_not_found",{address:_});let N=await import("@cosmjs/amino"),y=N.encodeSecp256k1Signature??N.default?.encodeSecp256k1Signature,w=N.serializeSignDoc??N.default?.serializeSignDoc,O=await import("@cosmjs/crypto"),T=O.Secp256k1Signature??O.default?.Secp256k1Signature,B=w(L),U=await this.ledgerApp.sign(this.derivationPath,B);this.validateResponse(U.return_code,U.error_message);let W=T.fromDer(U.signature).toFixedLength();return{signature:y(R[0].pubkey,W),signed:L}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAddressAndPubKey();return[{address:_.address,algo:"secp256k1",pubkey:Buffer.from(_.publicKey,"hex")}]}}import{ChainId as Q,derivationPathToString as v0,NetworkDerivationPath as l0,SwapKitError as o}from"@swapkit/helpers";import{AbstractSigner as b0}from"ethers";var v_={apex:"apexp",europa:"flex",nanoS:"nanos",nanoSP:"nanosp",nanoX:"nanox",stax:"stax"};async function l_(_,L=fetch){let R=v_[_];if(!R)return null;let f=`https://crypto-assets-service.api.ledger.com/v1/certificates?output=descriptor&public_key_usage=network&target_device=${R}`,N=await L(f);if(!N.ok)return null;let w=(await N.json())[0]?.descriptor,O=w?.signatures?.prod;if(!(w?.data&&O))return null;return`${w.data}${I0(O)}`}async function b_(_,L){await _.send(176,6,12,0,Buffer.from(L,"hex"))}async function g_(_,L,R=fetch){let f=v_[L];if(!f)return null;let N=`https://crypto-assets-service.api.ledger.com/v1/networks?chain_id=${_}&output=chain_id,descriptors,icons`,y=await R(N);if(!y.ok)return null;let O=(await y.json()).find((U)=>U.chain_id===_),T=O?.descriptors?.[f],B=T?.signatures?.prod;if(!(T?.data&&B))return null;return{data:T.data,icon:O?.icons?.[f],signature:B}}function I0(_){return x_(21,Buffer.from(_,"hex")).toString("hex")}function x_(_,L){return Buffer.concat([Buffer.from([_,L.length]),L])}function c0({data:_,signature:L}){let R=Buffer.concat([Buffer.from(_,"hex"),x_(21,Buffer.from(L,"hex"))]),f=Buffer.alloc(2);return f.writeUInt16BE(R.length,0),Buffer.concat([f,R])}async function $_(_,L,R){for(let f=0;f<R.length;f+=255){let N=f===0?1:0,y=R.subarray(f,f+255);await _.send(224,48,N,L,y)}}async function h_(_,L){let R=c0(L);if(await $_(_,0,R),!L.icon)return{iconAccepted:!1};try{return await $_(_,1,Buffer.from(L.icon,"hex")),{iconAccepted:!0}}catch{return await $_(_,0,R),{iconAccepted:!1}}}var g0=27264,u_=Number(Q.Arc);function x0(_){return _ instanceof Error&&"statusCode"in _&&_.statusCode===g0}function h0(_){return Object.values(_??{}).some((L)=>Array.isArray(L)&&L.length)}function u0(_){if(typeof _==="number")return _;let L=_.startsWith("0x")?_.slice(2):_;return Number.parseInt(L||"0",16)}class A extends b0{chainId=Q.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;transport;injectedTransport;arcNetworkRegistered=!1;constructor({provider:_,derivationPath:L=l0.OP,chainId:R=Q.Optimism,transport:f}){super(_);this.chainId=R||Q.Ethereum,this.derivationPath=typeof L==="string"?L:v0(L),this.injectedTransport=f,Object.defineProperty(this,"provider",{enumerable:!0,value:_||null,writable:!1})}connect=(_)=>new A({chainId:this.chainId,derivationPath:this.derivationPath,provider:_,transport:this.transport??this.injectedTransport});checkOrCreateTransportAndLedger=async()=>{await this.createTransportAndLedger()};createTransportAndLedger=async()=>{if(this.ledgerApp)return;this.transport||=this.injectedTransport??await q();let _=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new _(this.transport)};getAddress=async()=>{let _=await this.getAddressAndPubKey();if(!_)throw new o("wallet_ledger_failed_to_get_address");return _.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(_)=>{let{Signature:L}=await import("ethers");await this.createTransportAndLedger();let R=await this.ledgerApp?.signPersonalMessage(this.derivationPath,_);if(!R)throw new o("wallet_ledger_signing_error");return R.r=`0x${R.r}`,R.s=`0x${R.s}`,L.from(R).serialized};sendTransaction=async(_)=>{if(!this.provider)throw new o("wallet_ledger_no_provider");let L=await this.signTransaction(_);return await this.provider.broadcastTransaction(L)};signTypedData=async(_,L,R,f)=>{let{buildEIP712DomainType:N}=await import("@swapkit/toolboxes/evm"),{Signature:y,TypedDataEncoder:w}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:O,...T}=L,B=f??w.from(T).primaryType,U;try{U=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:_,message:R,primaryType:B,types:{EIP712Domain:N(_),...T}})}catch(W){let D=W instanceof Error&&"statusCode"in W;if(!D||D&&W.statusCode===27013)throw W;let Z=w.hashDomain(_).slice(2),J=w.from(T).hash(R).slice(2);U=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,Z,J)}if(!U)throw new o("wallet_ledger_signing_error");return U.r=`0x${U.r}`,U.s=`0x${U.s}`,y.from(U).serialized};signTransaction=async(_)=>{let{Transaction:L}=await import("ethers");await this.createTransportAndLedger();let R=_.nonce??void 0,f=R===void 0?await this.provider?.getTransactionCount(_.from||await this.getAddress()):void 0,N={chainId:_.chainId||this.chainId,data:_.data,gasLimit:_.gasLimit,..._.gasPrice&&{gasPrice:_.gasPrice},...!_.gasPrice&&_.maxFeePerGas&&{maxFeePerGas:_.maxFeePerGas,maxPriorityFeePerGas:_.maxPriorityFeePerGas},nonce:R!==void 0?Number(R.toString()):f,to:_.to?.toString(),type:_.type&&!Number.isNaN(_.type)?_.type:_.maxFeePerGas?2:0,value:_.value},y=L.from(N).unsignedSerialized.slice(2),{ledgerService:w}=await import("@ledgerhq/hw-app-eth"),O=Number(N.chainId),T=O===u_,B=await w.resolveTransaction(y,{},{erc20:!0,externalPlugins:!0}).catch((J)=>{if(!T)throw J;return console.warn("Ledger: could not fetch clear-signing metadata for Arc, signing blind"),null});if(T&&!this.arcNetworkRegistered)await this.registerNetworkOnDevice(O);let U=await this.signWithLedgerApp(y,B,O);if(!U)throw new o("wallet_ledger_signing_error");let{r:W,s:D,v:Z}=U;return L.from({...N,signature:{r:`0x${W}`,s:`0x${D}`,v:u0(Z)}}).serialized};signWithLedgerApp=async(_,L,R)=>{try{return await this.ledgerApp?.signTransaction(this.derivationPath,_,L)}catch(f){if(!(R===u_&&x0(f)&&h0(L)))throw f;return console.warn("Ledger: the app rejected the Arc metadata, signing blind"),await this.ledgerApp?.signTransaction(this.derivationPath,_,null)}};registerNetworkOnDevice=async(_)=>{let L=this.transport?.deviceModel?.id;if(!(this.transport&&L))return;try{let[R,f]=await Promise.all([g_(_,L),l_(L)]);if(!R)return;if(f)await b_(this.transport,f);await h_(this.transport,R),this.arcNetworkRegistered=!0}catch{}}}var d_=(_)=>new A({..._,chainId:Q.Arbitrum}),n_=(_)=>new A({..._,chainId:Q.Arc}),o_=(_)=>new A({..._,chainId:Q.Aurora}),i_=(_)=>new A({..._,chainId:Q.Avalanche}),p_=(_)=>new A({..._,chainId:Q.Base}),t_=(_)=>new A({..._,chainId:Q.Ethereum}),a_=(_)=>new A({..._,chainId:Q.Gnosis}),e_=(_)=>new A({..._,chainId:Q.Optimism}),r_=(_)=>new A({..._,chainId:Q.Polygon}),s_=(_)=>new A({..._,chainId:Q.BinanceSmartChain}),_0=(_)=>new A({..._,chainId:Q.Monad}),L0=(_)=>new A({..._,chainId:Q.XLayer}),R0=(_)=>new A({..._,chainId:Q.Berachain});async function N0(_,L){let R=(await import("@ledgerhq/hw-app-near")).default,{Chain:f,NetworkDerivationPath:N,SwapKitError:y}=await import("@swapkit/helpers"),w=L??await q(),O=new R(w),T=(_||N[f.Near]).join("'/").concat("'"),{address:B,publicKey:U}=await O.getAddress(T);return{getAddress(){return Promise.resolve(B)},async getPublicKey(){let{PublicKey:D}=await import("@near-js/crypto");return D.fromString(`ed25519:${U}`)},signDelegateAction(D){return Promise.reject(new y("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(D,Z,J,j,k){return Promise.reject(new y("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(D){let{Signature:Z,SignedTransaction:J}=await import("@near-js/transactions");try{let j=await O.signTransaction(D.encode(),T);if(!j)throw Error("Signature undefined");let k=new Z({data:j,keyType:0}),z=new J({signature:k,transaction:D});return[j,z]}catch(j){throw new y("wallet_ledger_signing_error",{error:j})}}}}import{Chain as d0,derivationPathToString as n0,NetworkDerivationPath as o0,SwapKitError as v}from"@swapkit/helpers";class y0{derivationPath;ledgerApp=null;address=null;publicKey=null;injectedTransport;constructor(_,L){this.derivationPath=typeof _==="string"?_:n0(_||o0[d0.Sui]),this.injectedTransport=L}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async createTransportAndLedger(){if(this.ledgerApp)return;let _=this.injectedTransport??await q(),L=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new L(_)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new v("wallet_ledger_transport_error");let _=this.getLedgerPath(),L=await this.ledgerApp.getPublicKey(_);if(!L?.publicKey)throw new v("wallet_ledger_failed_to_get_address");return this.publicKey=L.publicKey,this.address=`0x${Buffer.from(L.address).toString("hex")}`,this.address}toSuiAddress(){if(!this.address)throw new v("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction(_){let L=_ instanceof Uint8Array?_:_.transaction;if(await this.createTransportAndLedger(),!this.ledgerApp)throw new v("wallet_ledger_transport_error");if(!this.publicKey)throw new v("wallet_ledger_failed_to_get_address");try{let R=this.getLedgerPath(),f=new Uint8Array(3+L.length);f[0]=0,f[1]=0,f[2]=0,f.set(L,3);let N=await this.ledgerApp.signTransaction(R,f);if(!N?.signature)throw new v("wallet_ledger_signing_error");let y=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(y.length!==32)throw new v("wallet_ledger_signing_error",{error:"Invalid public key length"});let w=new Uint8Array(97);w[0]=0,w.set(N.signature,1),w.set(y,65);let O=Buffer.from(w).toString("base64");return{bytes:Buffer.from(L).toString("base64"),signature:O}}catch(R){throw new v("wallet_ledger_signing_error",{error:R})}}}var f0=(_,L)=>new y0(_,L);import{base64 as C_}from"@scure/base";import{NetworkDerivationPath as p0,SwapKitError as Z_}from"@swapkit/helpers";import{base64 as i0}from"@scure/base";import{SwapKitError as I}from"@swapkit/helpers";var R_=(_)=>{if(_.length<64)throw new I("wallet_ledger_invalid_signature",{reason:"Too short"});if(_[0]!==48)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(_[1]+2!==_.length)throw new I("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(_[2]!==2)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let L=_[3],R=_.slice(4,L+4);if(R.length===33&&R[0]===0)R=R.slice(1,33);else if(R.length===33)throw new I("wallet_ledger_invalid_signature",{reason:"r too long"});while(R.length<32)R.unshift(0);if(_[L+4]!==2)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let f=_[L+5];if(4+L+2+f!==_.length)throw new I("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let N=_.slice(L+6,_.length);if(N.length===33&&N[0]===0)N=N.slice(1,33);else if(N.length===33)throw new I("wallet_ledger_invalid_signature",{reason:"s too long"});while(N.length<32)N.unshift(0);if(R.length!==32||N.length!==32)throw new I("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return i0.encode(Buffer.concat([R,N]))};function t0(_){if(typeof _==="string")return _;let L=_.chain?.toUpperCase(),R=(_.symbol||_.ticker||"").toUpperCase();if(!(L&&R))return R||L||"";if(_.synth)return`${L}/${R}`;return`${L}.${R}`}function a0(_){return{..._,msgs:_.msgs.map((L)=>{if(!L.type.includes("MsgDeposit"))return L;let R=L.value.coins;if(!Array.isArray(R))return L;return{...L,value:{...L.value,coins:R.map((f)=>({...f,asset:t0(f.asset)}))}}})}}class M_ extends n{pubKey=null;derivationPath;constructor(_=p0.THOR,L){super(L);this.chain="thor",this.derivationPath=_}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:_,bech32_address:L}=await this.getAddressAndPubKey();return this.pubKey=C_.encode(_),L};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(_.return_code,_.error_message),_};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(_.return_code,_.error_message),_};signTransaction=async(_,L="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:R,error_message:f,signature:N}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new Z_("wallet_ledger_pubkey_not_found");return this.validateResponse(R,f),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:L,signature:R_(N)}]};signAmino=async(_,L)=>{await this.checkOrCreateTransportAndLedger(!0);let R=(await this.getAccounts()).find((U)=>U.address===_);if(!R)throw new Z_("wallet_ledger_address_not_found",{address:_});let f=await import("@cosmjs/amino"),N=f.encodeSecp256k1Signature??f.default?.encodeSecp256k1Signature,y=f.serializeSignDoc??f.default?.serializeSignDoc,w=a0(L),{return_code:O,error_message:T,signature:B}=await this.ledgerApp.sign(this.derivationPath,y(w));return this.validateResponse(O,T),{signature:N(R.pubkey,C_.decode(R_(B))),signed:L}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{bech32_address:_,compressed_pk:L}=await this.getAddressAndPubKey();return this.pubKey=C_.encode(L),[{address:_,algo:"secp256k1",pubkey:L}]};sign=async(_)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:L,error_message:R,signature:f}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new Z_("wallet_ledger_pubkey_not_found");return this.validateResponse(L,R),R_(f)}}import{derivationPathToString as e0,NetworkDerivationPath as r0,SwapKitError as i}from"@swapkit/helpers";class G0{derivationPath;ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor(_,L){this.derivationPath=typeof _==="string"?_:e0(_||r0.TRON),this.injectedTransport=L}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let _=this.injectedTransport??await q(),L=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new L(_)};getAddress=async()=>{let _=await this.getAddressAndPubKey();if(!_)throw new i("wallet_ledger_failed_to_get_address");return _.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let _=await this.ledgerApp?.getAddress(this.derivationPath);if(!_)throw new i("wallet_ledger_failed_to_get_address");return{address:_.address,publicKey:_.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(_)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new i("wallet_ledger_transport_error");try{let L=await this.ledgerApp.signTransaction(this.derivationPath,_.raw_data_hex,[]);if(!L)throw new i("wallet_ledger_signing_error");return{..._,signature:[L]}}catch(L){throw new i("wallet_ledger_signing_error",{error:L})}}}var w0=(_,L)=>new G0(_,L);import{hex as N_}from"@scure/base";import{derivationPathToString as s0,getWalletFormatFor as J_,SwapKitError as j_}from"@swapkit/helpers";var T0=["bitcoin-cash","dash","dogecoin","zcash"],O0=({tx:_,inputUtxos:L,btcApp:R,derivationPath:f,chain:N},y)=>{let w=L.map((Z)=>{return[R.splitTransaction(Z.txHex||"",!T0.includes(N),N==="zcash"),Z.index,void 0,void 0]}),O=N_.encode(_.unsignedTx),T=R.splitTransaction(O,!0),B=R.serializeTransactionOutputs(T).toString("hex"),U=J_(f),W=U!=="legacy",D={additionals:U==="bech32"?["bech32"]:[],associatedKeysets:w.map(()=>f),inputs:w,outputScriptHex:B,segwit:W,useTrustedInputForSegwit:W};return R.createPaymentTransaction({...D,...y})},_L=({tx:_,inputUtxos:L,btcApp:R,derivationPaths:f,chain:N},y)=>{if(f.length!==L.length)throw new j_("wallet_ledger_invalid_params",{message:`Derivation paths count (${f.length}) must match inputs count (${L.length})`});let w=L.map((Z)=>{return[R.splitTransaction(Z.txHex||"",!T0.includes(N),N==="zcash"),Z.index,void 0,void 0]}),O=N_.encode(_.unsignedTx),T=R.splitTransaction(O,!0),B=R.serializeTransactionOutputs(T).toString("hex"),U=J_(f[0]??""),W=U!=="legacy",D={additionals:U==="bech32"?["bech32"]:[],associatedKeysets:f,inputs:w,outputScriptHex:B,segwit:W,useTrustedInputForSegwit:W};return R.createPaymentTransaction({...D,...y})},x=({chain:_,additionalSignParams:L})=>{return(R,f)=>{let N,y=null;async function w(){y||=f??await q();let W=(await import("@ledgerhq/hw-app-btc")).default;return N||=new W({currency:_,transport:y}),N}async function O(){return N||await w()}async function T(){if(!f)await y?.close?.();N=void 0,y=null}let B=typeof R==="string"?R:s0(R),U=J_(B);return{connect:async()=>{await O()},disconnect:T,getAddress:async()=>{let{toCashAddress:W}=await import("@swapkit/toolboxes/utxo"),D=await O(),{bitcoinAddress:Z}=await D.getWalletPublicKey(B,{format:U});if(!Z)throw new j_("wallet_ledger_get_address_error",{message:`Cannot get ${_} address from ledger derivation path: ${B}`});return _==="bitcoin-cash"&&U==="legacy"?W(Z).replace(/(bchtest:|bitcoincash:)/,""):Z},getExtendedPublicKey:async(W="84'/0'/0'",D=76067358)=>{return(await O()).getWalletXpub({path:W,xpubVersion:D})},signPCZT:async(W)=>{if(_!=="zcash")throw new j_("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});let D=await O(),{ZcashTransaction:Z,Script:J}=await import("@swapkit/utxo-signer"),j=W.getGlobal(),k=new Z({consensusBranchId:j.consensusBranchId,expiryHeight:j.expiryHeight,lockTime:j.lockTime,version:j.txVersion,versionGroupId:j.versionGroupId}),z=[];for(let X=0;X<W.inputsLength;X++){let F=W.getInput(X);k.addInput({index:F.index,script:new Uint8Array,sequence:F.sequence??4294967295,txid:F.txid,value:F.value}),z.push({hash:N_.encode(new Uint8Array([...F.txid].reverse())),index:F.index,txHex:LL(F,j),value:Number(F.value),witnessUtxo:{script:F.scriptPubkey,value:Number(F.value)}})}for(let X=0;X<W.outputsLength;X++){let F=W.getOutput(X);k.addOutput({amount:F.value,script:F.scriptPubkey})}let u=await O0({btcApp:D,chain:_,derivationPath:B,inputUtxos:z,tx:k},{...L,expiryHeight:(()=>{let X=Buffer.alloc(4);return X.writeUInt32LE(j.expiryHeight),X})(),lockTime:j.lockTime}),p=Z.fromHex(u,{allowUnknownOutputs:!0}),t=W.clone();for(let X=0;X<p.inputsLength;X++){let F=p.getInput(X);if(F.script&&F.script.length>0){let Y=J.decode(F.script);if(Y.length>=2)t.addSignature(X,Y[1],Y[0])}}return t},signTransaction:async(W,D)=>{let Z=await O();return O0({btcApp:Z,chain:_,derivationPath:B,inputUtxos:D,tx:W},L)},signTransactionWithMultiplePaths:async(W,D,Z)=>{let J=await O();return _L({btcApp:J,chain:_,derivationPaths:Z,inputUtxos:D,tx:W},L)}}}};function LL(_,L){let R=[],f=(L.txVersion|2147483648)>>>0;R.push(f&255,f>>8&255,f>>16&255,f>>24&255);let N=L.versionGroupId;R.push(N&255,N>>8&255,N>>16&255,N>>24&255),R.push(0);let y=_.index+1;if(y<253)R.push(y);else R.push(253,y&255,y>>8&255);for(let T=0;T<_.index;T++)R.push(0,0,0,0,0,0,0,0),R.push(0);let w=_.value;R.push(Number(w&0xffn),Number(w>>8n&0xffn),Number(w>>16n&0xffn),Number(w>>24n&0xffn),Number(w>>32n&0xffn),Number(w>>40n&0xffn),Number(w>>48n&0xffn),Number(w>>56n&0xffn));let O=_.scriptPubkey;if(O.length<253)R.push(O.length);else R.push(253,O.length&255,O.length>>8&255);for(let T of O)R.push(T);return R.push(L.lockTime&255,L.lockTime>>8&255,L.lockTime>>16&255,L.lockTime>>24&255),R.push(L.expiryHeight&255,L.expiryHeight>>8&255,L.expiryHeight>>16&255,L.expiryHeight>>24&255),R.push(0,0,0,0,0,0,0,0),R.push(0),R.push(0),R.push(0),N_.encode(new Uint8Array(R))}var B0=x({chain:"bitcoin"}),D0=x({chain:"litecoin"}),U0=x({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),W0=x({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),X0=x({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),F0=x({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let _=Buffer.alloc(4);return _.writeUInt32LE(0),_})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});import RL from"@ledgerhq/hw-app-xrp";import{Chain as NL,derivationPathToString as yL,NetworkDerivationPath as fL}from"@swapkit/helpers";import{encode as $0}from"ripple-binary-codec";var GL=2147483648;function wL(_){let L={};for(let R in _)if(_[R]!==null&&_[R]!==void 0)L[R]=_[R];return L}function OL(_){return new RL(_)}var C0=async(_,L)=>{let R=yL(_||fL[NL.Ripple]),f=L??await q(),N=OL(f),{address:y,publicKey:w}=await N.getAddress(R);async function O(T){let{hashes:B}=await import("xrpl"),W={...wL(T),Flags:T.Flags||GL,SigningPubKey:w.toUpperCase()},D=$0(W),Z=await N.signTransaction(R,D),J=$0({...W,TxnSignature:Z});return{hash:B.hashSignedTx(J),tx_blob:J}}return{getAddress:()=>y,signTransaction:O}};var S=async({chain:_,derivationPath:L,transport:R})=>{let{match:f}=await import("ts-pattern");return f(_).returnType().with($.THORChain,()=>Promise.resolve(new M_(L,R))).with($.Cosmos,()=>Promise.resolve(new F_(L,R))).with($.Bitcoin,()=>Promise.resolve(B0(L,R))).with($.BitcoinCash,()=>Promise.resolve(U0(L,R))).with($.Dash,()=>Promise.resolve(X0(L,R))).with($.Dogecoin,()=>Promise.resolve(W0(L,R))).with($.Litecoin,()=>Promise.resolve(D0(L,R))).with($.Zcash,()=>Promise.resolve(F0(L,R))).with($.Ripple,()=>Promise.resolve(C0(L,R))).with($.Tron,()=>Promise.resolve(w0(L,R))).with($.Sui,()=>Promise.resolve(f0(L,R))).with($.Near,()=>{return Promise.resolve(N0(L,R))}).with($.Arbitrum,$.Arc,$.Aurora,$.Avalanche,$.Berachain,$.BinanceSmartChain,$.Ethereum,$.Gnosis,$.Monad,$.Optimism,$.Polygon,$.Base,$.XLayer,async()=>{let{getProvider:N}=await import("@swapkit/toolboxes/evm"),y={derivationPath:L,provider:await N(_),transport:R};return f(_).with($.BinanceSmartChain,()=>s_(y)).with($.Avalanche,()=>i_(y)).with($.Arbitrum,()=>d_(y)).with($.Arc,()=>n_(y)).with($.Berachain,()=>R0(y)).with($.Optimism,()=>e_(y)).with($.Polygon,()=>r_(y)).with($.Base,()=>p_(y)).with($.Aurora,()=>o_(y)).with($.Gnosis,()=>a_(y)).with($.Monad,()=>_0(y)).with($.XLayer,()=>L0(y)).otherwise(()=>t_(y))}).otherwise(()=>{throw new TL("wallet_chain_not_supported",{chain:_,wallet:BL.LEDGER})})};var QL=JL({connect:({addChain:_,supportedChains:L,walletType:R})=>async function(N,y,{address:w,transport:O}={}){let[T]=DL({chains:N,supportedChains:L,walletType:R});if(!T)return!1;let B=y??WL[T],U=await HL({address:w,chain:T,derivationPath:B,transport:O});return _({...U,chain:T,walletType:Y_.LEDGER}),!0},directSigningSupport:{[G.Arbitrum]:!0,[G.Arc]:!0,[G.Aurora]:!0,[G.Avalanche]:!0,[G.Base]:!0,[G.Berachain]:!0,[G.BinanceSmartChain]:!0,[G.Ethereum]:!0,[G.Gnosis]:!0,[G.Monad]:!0,[G.Bitcoin]:!0,[G.BitcoinCash]:!0,[G.Cosmos]:!0,[G.Dash]:!0,[G.Dogecoin]:!0,[G.Litecoin]:!0,[G.Near]:!0,[G.Optimism]:!0,[G.Polygon]:!0,[G.Ripple]:!0,[G.Sui]:!0,[G.THORChain]:!0,[G.Tron]:!0,[G.XLayer]:!0},getExtendedPublicKey:AL,name:"connectLedger",supportedChains:[G.Arbitrum,G.Arc,G.Aurora,G.Avalanche,G.Base,G.Berachain,G.BinanceSmartChain,G.Bitcoin,G.BitcoinCash,G.Cosmos,G.Dash,G.Dogecoin,G.Ethereum,G.Gnosis,G.Litecoin,G.Monad,G.Near,G.Optimism,G.Polygon,G.Ripple,G.Sui,G.THORChain,G.XLayer,G.Tron,G.Zcash],walletType:Y_.LEDGER}),bR=YL(QL);function qL(_,L="t"){if(!_?.includes("=:"))return _;let R=_.includes(`:${L}:`)?_.split(`:${L}:`)[0]:_;return R?.substring(0,R.lastIndexOf(":"))}async function AL(_,L,{accountIndex:R}={}){if(![G.BitcoinCash,G.Bitcoin,G.Dash,G.Dogecoin,G.Litecoin,G.Zcash].includes(_))throw new h("wallet_chain_not_supported",{chain:_,wallet:Y_.LEDGER});let f=_,N=await S({chain:f,derivationPath:L});if(!N.getExtendedPublicKey)return;let y=q_({accountIndex:R,chain:f,derivationPath:L}),w=y_(y),O=_===G.Bitcoin||_===G.Litecoin?w:w.replace(/^m\//,""),T=j0(f).bip32.public;try{let B=await N.getExtendedPublicKey(O,T);return{accountIndex:Q_(y),path:w,xpub:B}}finally{await N.disconnect?.()}}async function HL({address:_,chain:L,derivationPath:R,transport:f}){switch(L){case G.BitcoinCash:case G.Bitcoin:case G.Dash:case G.Dogecoin:case G.Litecoin:case G.Zcash:{let k=function(X={}){return j(X)},{getUtxoToolbox:N}=await import("@swapkit/toolboxes/utxo"),y=L,w=await S({chain:L,derivationPath:R,transport:f}),O=_??await m({chain:L,ledgerClient:w}),T=ZL(O,y),B,U,W;if(L===G.Bitcoin){let{BitcoinPsbtLedger:X}=await import("../chunk-7v7cgm69.js"),F=X(R,f);U=T===XL.P2SH_P2WPKH?await F.getPublicKey():void 0,B={getAddress:F.getAddress,publicKey:U,signTransaction:F.signTransaction}}else if(L===G.BitcoinCash||L===G.Dogecoin||L===G.Dash||L===G.Litecoin){let{createLegacyPsbtSigner:X,signLegacyPsbtTransaction:F}=await import("../chunk-h2r568rz.js");B=X({address:O,chain:y,legacyClient:w}),W=async(Y)=>{let H=await F({chain:y,legacyClient:w,tx:Y});return D.broadcastTx(H)}}let D=B?await N(y,{scriptType:T,signer:B}):N(y,{scriptType:T}),Z=W??D.signAndBroadcastTransaction,J=async(X)=>{let F=X.feeRate||(await D.getFeeRates())[Z0.Average],Y=[G.Bitcoin].includes(L)?X.memo:qL(X.memo),{tx:H,inputs:c}=await D.createTransaction({...X,feeRate:F,fetchTxHex:!0,memo:Y,publicKey:X.publicKey??U,sender:O}),K=await w.signTransaction(H,c);return await D.broadcastTx(K)};async function j({accountIndex:X}={}){if(!w.getExtendedPublicKey)return;let F=q_({accountIndex:X,chain:y,derivationPath:R}),Y=y_(F),H=L===G.Bitcoin||L===G.Litecoin?Y:Y.replace(/^m\//,""),c=j0(y).bip32.public,K=await w.getExtendedPublicKey(H,c);return{accountIndex:Q_(F),path:Y,xpub:K}}async function z({accountIndex:X,index:F,change:Y=!1}){try{let H=ML({accountIndex:X,chain:y,change:Y,derivationPath:R,index:F}),c=await S({chain:y,derivationPath:H,transport:f}),K=await m({chain:y,ledgerClient:c});return{accountIndex:Q_(H),address:K,change:Y,index:F,path:y_(H),pubkey:""}}catch{return}}async function u({accountIndex:X,count:F,startIndex:Y=0,change:H=!1}){return M0("count",F),M0("startIndex",Y),(await Promise.all(Array.from({length:F},(K,a)=>z({accountIndex:X,change:H,index:Y+a})))).filter((K)=>!!K)}let p=CL({chain:y,deriveAddress:z,getBalance:D.getBalance,getUtxos:(X)=>jL(y).getUtxos({address:X,fetchTxHex:!0})});async function t({utxos:X,recipient:F,assetValue:Y,memo:H,feeRate:c,feeOptionKey:K,changeAddress:a}){if(!X.length)throw new h("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let J0=c||(await D.getFeeRates())[K||Z0.Fast],f_=H?$L(H):null,A_=[{address:F,value:Y.getBaseValue("number")}];if(f_)A_.push({script:f_,value:0});let Y0=X.map(({hash:r,index:s,value:G_,txHex:w_,witnessUtxo:O_})=>({hash:r,index:s,txHex:w_,value:G_,witnessUtxo:O_})),{inputs:e,outputs:H_}=D.accumulative({chain:y,feeRate:J0,inputs:Y0,outputs:A_});if(!(e&&H_))throw new h("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:Q0}=await import("@swapkit/utxo-signer"),E_=new Q0({allowLegacyWitnessUtxo:!0,version:1}),q0=a||X[0]?.address||F;FL({chain:y,compiledMemo:f_,inputs:e,outputs:H_,sender:q0,tx:E_});let A0=q_({chain:y,derivationPath:R}),H0=e.map((r)=>{let s=X.find((S_)=>S_.hash===r.hash&&S_.index===r.index),G_=s?.derivationIndex??0,w_=s?.isChange??!1,O_=[...A0,Number(w_),G_];return y_(O_)});if(!w.signTransactionWithMultiplePaths)throw new h("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let E0=await w.signTransactionWithMultiplePaths(E_,e,H0);return D.broadcastTx(E0)}return{...D,...p,address:O,deriveAddressAtIndex:z,deriveAddresses:u,getExtendedPublicKey:k,getExtendedPublicKeyInfo:j,signAndBroadcastTransaction:Z,transfer:J,transferFromMultipleAddresses:t}}case G.Ethereum:case G.Avalanche:case G.Arbitrum:case G.Arc:case G.Berachain:case G.Optimism:case G.Polygon:case G.BinanceSmartChain:case G.Base:case G.Aurora:case G.Gnosis:case G.Monad:case G.XLayer:{let{getEvmToolboxAsync:N}=await import("@swapkit/toolboxes/evm"),y=await S({chain:L,derivationPath:R,transport:f}),w=await m({chain:L,ledgerClient:y});return{...await N(L,{signer:y}),address:w}}case G.Cosmos:{let{createSigningStargateClient:N,getDefaultChainFee:y,getMsgSendDenom:w,getCosmosToolbox:O}=await import("@swapkit/toolboxes/cosmos"),T=await S({chain:L,derivationPath:R,transport:f}),B=await m({chain:L,ledgerClient:T});return{...await O(G.Cosmos,{signer:T}),address:B,transfer:async({assetValue:D,recipient:Z,memo:J})=>{if(!D)throw new h("wallet_ledger_invalid_asset");let j={amount:[{amount:D.getBaseValue("string"),denom:w(`u${D.symbol}`).toLowerCase()}],fromAddress:B,toAddress:Z},k=await UL(L),z=await N(k,T,"0.007uatom"),{transactionHash:u}=await z.signAndBroadcast(B,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:j}],y(G.Cosmos),J);return u}}}case G.THORChain:{let N=await S({chain:L,derivationPath:R,transport:f}),{getCosmosToolbox:y}=await import("@swapkit/toolboxes/cosmos"),w=y(L,{signer:N}),O=await m({chain:L,ledgerClient:N}),{sign:T}=N;return{...w,address:O,signMessage:T}}case G.Near:{let{getNearToolbox:N}=await import("@swapkit/toolboxes/near"),y=await S({chain:L,derivationPath:R,transport:f}),w=await y.getAddress();return{...N({signer:y}),address:w}}case G.Ripple:{let{getRippleToolbox:N}=await import("@swapkit/toolboxes/ripple"),y=await S({chain:L,derivationPath:R,transport:f}),w=y.getAddress();return{...N({signer:y}),address:w}}case G.Tron:{let{getTronToolbox:N}=await import("@swapkit/toolboxes/tron"),y=await S({chain:L,derivationPath:R,transport:f}),w=await m({chain:L,ledgerClient:y});return{...N({signer:y}),address:w}}case G.Sui:{let{getSuiToolbox:N}=await import("@swapkit/toolboxes/sui"),y=await S({chain:L,derivationPath:R,transport:f}),w=await m({chain:L,ledgerClient:y});return{...N({signer:y}),address:w}}default:throw new h("wallet_ledger_chain_not_supported",{chain:L})}}export{QL as ledgerWallet,AL as getLedgerExtendedPublicKey,bR as LEDGER_SUPPORTED_CHAINS};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=E0C6440FC62DB24464756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|