@swapkit/wallet-hardware 4.10.0 → 4.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-9gy0xve4.js +4 -0
- package/dist/{chunk-qs60k0yv.js.map → chunk-9gy0xve4.js.map} +3 -3
- 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 +5 -4
- package/dist/trezor/index.cjs +2 -2
- package/dist/trezor/index.cjs.map +4 -4
- package/dist/trezor/index.js +2 -2
- package/dist/trezor/index.js.map +3 -3
- package/dist/types/ledger/clients/evm.d.ts +3 -0
- package/dist/types/ledger/clients/evm.d.ts.map +1 -1
- package/dist/types/ledger/helpers/ledgerNetworkInfo.d.ts +14 -0
- package/dist/types/ledger/helpers/ledgerNetworkInfo.d.ts.map +1 -0
- package/dist/types/trezor/evmSigner.d.ts.map +1 -1
- package/dist/types/trezor/index.d.ts +2 -2
- package/dist/types/trezor/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/ledger/clients/evm.ts +84 -2
- package/src/ledger/helpers/ledgerNetworkInfo.ts +127 -0
- package/src/trezor/evmSigner.ts +3 -4
- package/src/trezor/index.ts +3 -0
- package/dist/chunk-qs60k0yv.js +0 -4
|
@@ -1,6 +1,6 @@
|
|
|
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/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/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
6
|
"import type Transport from \"@ledgerhq/hw-transport\";\nimport { base64 } from \"@scure/base\";\nimport { HDKey } from \"@scure/bip32\";\nimport { type DerivationPathArray, derivationPathToString, getWalletFormatFor, SwapKitError } from \"@swapkit/helpers\";\nimport type { Transaction } from \"@swapkit/utxo-signer\";\n\nimport { getLedgerTransport } from \"../helpers/getLedgerTransport\";\n\ntype SupportedCoin = \"bitcoin\" | \"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 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 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 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",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"import type Transport from \"@ledgerhq/hw-transport\";\nimport { SwapKitError } from \"@swapkit/helpers\";\n\nimport {\n CHUNK_SIZE,\n CLA,\n ERROR_CODE,\n errorCodeToString,\n getVersion,\n INS,\n P1_VALUES,\n P2_VALUES,\n processErrorResponse,\n} from \"./common\";\nimport {\n publicKeyv1,\n publicKeyv2,\n serializePathv1,\n serializePathv2,\n signSendChunkv1,\n signSendChunkv2,\n} from \"./helpers\";\n\nexport class THORChainApp {\n transport: Transport;\n versionResponse: any;\n\n constructor(transport: any) {\n if (!transport) {\n throw new SwapKitError(\"wallet_ledger_transport_not_defined\");\n }\n\n this.transport = transport;\n }\n\n static serializeHRP(hrp: string) {\n if (hrp == null || hrp.length < 3 || hrp.length > 83) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", { reason: \"Invalid HRP\" });\n }\n const buf = Buffer.alloc(1 + hrp.length);\n buf.writeUInt8(hrp.length, 0);\n buf.write(hrp, 1);\n return buf;\n }\n\n async serializePath(path: number[]) {\n this.versionResponse = await getVersion(this.transport);\n\n if (this.versionResponse.return_code !== ERROR_CODE.NoError) {\n throw this.versionResponse;\n }\n\n switch (this.versionResponse.major) {\n case 1:\n return serializePathv1(path);\n case 2:\n return serializePathv2(path);\n default:\n return Buffer.alloc(0);\n }\n }\n\n async signGetChunks(path: number[], buffer: Buffer) {\n const serializedPath = await this.serializePath(path);\n\n const chunks = [];\n chunks.push(serializedPath);\n\n for (let i = 0; i < buffer.length; i += CHUNK_SIZE) {\n let end = i + CHUNK_SIZE;\n if (i > buffer.length) {\n end = buffer.length;\n }\n chunks.push(buffer.slice(i, end));\n }\n\n return chunks;\n }\n\n async getVersion() {\n try {\n this.versionResponse = await getVersion(this.transport);\n return this.versionResponse;\n } catch (e) {\n return processErrorResponse(e);\n }\n }\n\n appInfo() {\n return this.transport.send(0xb0, 0x01, 0, 0).then((response: any) => {\n const returnCode = response.readUInt16BE(response.length - 2);\n\n let appName = \"\";\n let appVersion = \"\";\n let flagLen = 0;\n let flagsValue = 0;\n\n if (response[0] !== 1) {\n // Ledger responds with format ID 1. There is no spec for any format != 1\n return { error_message: \"response format ID not recognized\", return_code: 0x9001 };\n }\n\n const appNameLen = response[1];\n appName = response.slice(2, 2 + appNameLen).toString(\"ascii\");\n let idx = 2 + appNameLen;\n const appVersionLen = response[idx];\n idx += 1;\n appVersion = response.slice(idx, idx + appVersionLen).toString(\"ascii\");\n idx += appVersionLen;\n const appFlagsLen = response[idx];\n idx += 1;\n flagLen = appFlagsLen;\n flagsValue = response[idx];\n\n return {\n appName,\n appVersion,\n error_message: errorCodeToString(returnCode),\n flag_onboarded: (flagsValue & 4) !== 0,\n flag_pin_validated: (flagsValue & 128) !== 0,\n flag_recovery: (flagsValue & 1) !== 0,\n flag_signed_mcu_code: (flagsValue & 2) !== 0,\n flagLen,\n flagsValue,\n return_code: returnCode,\n };\n }, processErrorResponse);\n }\n\n deviceInfo() {\n return this.transport\n .send(0xe0, 0x01, 0, 0, Buffer.from([]), [ERROR_CODE.NoError, 0x6e00])\n .then((response: any) => {\n const errorCodeData = response.slice(-2);\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1];\n\n if (returnCode === 0x6e00) {\n return { error_message: \"This command is only available in the Dashboard\", return_code: returnCode };\n }\n\n const targetId = response.slice(0, 4).toString(\"hex\");\n\n let pos = 4;\n const secureElementVersionLen = response[pos];\n pos += 1;\n const seVersion = response.slice(pos, pos + secureElementVersionLen).toString();\n pos += secureElementVersionLen;\n\n const flagsLen = response[pos];\n pos += 1;\n const flag = response.slice(pos, pos + flagsLen).toString(\"hex\");\n pos += flagsLen;\n\n const mcuVersionLen = response[pos];\n pos += 1;\n // Patch issue in mcu version\n let tmp = response.slice(pos, pos + mcuVersionLen);\n if (tmp[mcuVersionLen - 1] === 0) {\n tmp = response.slice(pos, pos + mcuVersionLen - 1);\n }\n const mcuVersion = tmp.toString();\n\n return {\n error_message: errorCodeToString(returnCode),\n flag,\n mcuVersion,\n return_code: returnCode,\n seVersion,\n // //\n targetId,\n };\n }, processErrorResponse);\n }\n\n async publicKey(path: number[]) {\n try {\n const serializedPath = await this.serializePath(path);\n\n switch (this.versionResponse.major) {\n case 1:\n return publicKeyv1(this, serializedPath);\n case 2: {\n const data = Buffer.concat([THORChainApp.serializeHRP(\"thor\"), serializedPath]);\n return publicKeyv2(this, data);\n }\n default:\n return { error_message: \"App Version is not supported\", return_code: 0x6400 };\n }\n } catch (e) {\n return processErrorResponse(e);\n }\n }\n\n async getAddressAndPubKey(path: number[], hrp: string, showInDevice = false) {\n try {\n const serializedPath = await this.serializePath(path);\n const data = Buffer.concat([THORChainApp.serializeHRP(hrp), serializedPath]);\n const response = await this.transport.send(\n CLA,\n INS.GET_ADDR_SECP256K1,\n showInDevice ? P1_VALUES.SHOW_ADDRESS_IN_DEVICE : P1_VALUES.ONLY_RETRIEVE,\n 0,\n data,\n [ERROR_CODE.NoError],\n );\n\n const compressedPk = Buffer.from(response.slice(0, 33));\n const bech32Address = Buffer.from(response.slice(33, -2)).toString();\n const returnCode = response.readUInt16BE(response.length - 2);\n\n return {\n bech32_address: bech32Address,\n compressed_pk: compressedPk,\n error_message: errorCodeToString(returnCode),\n return_code: returnCode,\n };\n } catch (err) {\n return processErrorResponse(err);\n }\n }\n\n showAddressAndPubKey(path: number[], hrp: string) {\n return this.getAddressAndPubKey(path, hrp, true);\n }\n\n signSendChunk(chunkIdx: number, chunkNum: number, chunk: Buffer, txType = P2_VALUES.JSON) {\n switch (this.versionResponse.major) {\n case 1:\n return signSendChunkv1(this, chunkIdx, chunkNum, chunk, txType);\n case 2:\n return signSendChunkv2(this, chunkIdx, chunkNum, chunk, txType);\n default:\n return { error_message: \"App Version is not supported\", return_code: 0x6400 };\n }\n }\n\n async sign(path: number[], message: string, txType = P2_VALUES.JSON) {\n const buffer = Buffer.from(message);\n let chunks: Buffer[] = [];\n let response: any;\n try {\n chunks = await this.signGetChunks(path, buffer);\n response = await this.signSendChunk(1, chunks.length, chunks[0] as Buffer, txType);\n } catch (error) {\n processErrorResponse(error);\n }\n let result = { error_message: response.error_message, return_code: response.return_code, signature: null };\n\n for (let i = 1; i < chunks.length; i += 1) {\n result = await this.signSendChunk(1 + i, chunks.length, chunks[i] as Buffer, txType);\n if (result.return_code !== ERROR_CODE.NoError) {\n break;\n }\n }\n\n return { error_message: result.error_message, return_code: result.return_code, signature: result.signature };\n }\n}\n",
|
|
14
14
|
"export const CLA = 0x55;\nexport const CHUNK_SIZE = 250;\nexport const APP_KEY = \"CSM\";\n\nexport const INS = {\n GET_ADDR_SECP256K1: 0x04,\n GET_VERSION: 0x00,\n INS_PUBLIC_KEY_SECP256K1: 0x01, // Obsolete\n SIGN_SECP256K1: 0x02,\n};\n\nexport const PAYLOAD_TYPE = { ADD: 0x01, INIT: 0x00, LAST: 0x02 };\n\nexport const P1_VALUES = { ONLY_RETRIEVE: 0x00, SHOW_ADDRESS_IN_DEVICE: 0x01 };\n\nexport const P2_VALUES = { JSON: 0x0 };\n\nexport const ERROR_CODE = { NoError: 0x9000 };\n\nconst ERROR_DESCRIPTION: any = {\n 1: \"U2F: Unknown\",\n 2: \"U2F: Bad request\",\n 3: \"U2F: Configuration unsupported\",\n 4: \"U2F: Device Ineligible\",\n 5: \"U2F: Timeout\",\n 14: \"Timeout\",\n 25600: \"Execution Error\",\n 26368: \"Wrong Length\",\n 26626: \"Error deriving keys\",\n 27010: \"Empty Buffer\",\n 27011: \"Output buffer too small\",\n 27012: \"Data is invalid\",\n 27013: \"Conditions not satisfied\",\n 27014: \"Transaction rejected\",\n 27264: \"Bad key handle\",\n 27392: \"Invalid P1/P2\",\n 27904: \"Instruction not supported\",\n 28160: \"App does not seem to be open\",\n 28416: \"Unknown error\",\n 28417: \"Sign/verify error\",\n 36864: \"No errors\",\n 36865: \"Device is busy\",\n};\n\nexport function errorCodeToString(statusCode: number) {\n if (statusCode in ERROR_DESCRIPTION) return ERROR_DESCRIPTION[statusCode];\n return `Unknown Status Code: ${statusCode}`;\n}\n\nfunction isDict(v: any) {\n return typeof v === \"object\" && v !== null && !Array.isArray(v) && !(v instanceof Date);\n}\n\nexport function processErrorResponse(response: any) {\n if (response) {\n if (isDict(response)) {\n if (Object.hasOwn(response, \"statusCode\")) {\n return { error_message: errorCodeToString(response.statusCode), return_code: response.statusCode };\n }\n\n if (Object.hasOwn(response, \"return_code\") && Object.hasOwn(response, \"error_message\")) {\n return response;\n }\n }\n return { error_message: response.toString(), return_code: 0xffff };\n }\n\n return { error_message: response.toString(), return_code: 0xffff };\n}\n\nexport function getVersion(transport: any) {\n return transport.send(CLA, INS.GET_VERSION, 0, 0).then((response: any) => {\n const errorCodeData = response.slice(-2);\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1];\n\n let targetId = 0;\n if (response.length >= 9) {\n targetId = (response[5] << 24) + (response[6] << 16) + (response[7] << 8) + (response[8] << 0);\n }\n\n return {\n device_locked: response[4] === 1,\n error_message: errorCodeToString(returnCode),\n major: response[1],\n minor: response[2],\n patch: response[3],\n return_code: returnCode,\n target_id: targetId.toString(16),\n // ///\n test_mode: response[0] !== 0,\n };\n }, processErrorResponse);\n}\n",
|
|
15
15
|
"import { SwapKitError } from \"@swapkit/helpers\";\nimport { CLA, ERROR_CODE, errorCodeToString, INS, P2_VALUES, PAYLOAD_TYPE, processErrorResponse } from \"./common\";\n\nexport function serializePathv1(path: number[]) {\n if (path == null || path.length < 3) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", { reason: \"Path too short\" });\n }\n if (path.length > 10) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", { reason: \"Path too long\" });\n }\n const buf = Buffer.alloc(1 + 4 * path.length);\n buf.writeUInt8(path.length, 0);\n for (let i = 0; i < path.length; i += 1) {\n let v = path[i] || 0;\n if (i < 3) {\n // eslint-disable-next-line no-bitwise\n v |= 0x80000000; // Harden\n }\n buf.writeInt32LE(v, 1 + i * 4);\n }\n return buf;\n}\n\nexport function signSendChunkv1(app: any, chunkIdx: number, _chunkNum: number, chunk: Buffer, txType = P2_VALUES.JSON) {\n return app.transport\n .send(CLA, INS.SIGN_SECP256K1, chunkIdx, txType, chunk, [ERROR_CODE.NoError, 0x6984, 0x6a80])\n .then((response: any) => {\n const errorCodeData = response.slice(-2);\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1];\n let errorMessage = errorCodeToString(returnCode);\n\n if (returnCode === 0x6a80 || returnCode === 0x6984) {\n errorMessage = `${errorMessage} : ${response.slice(0, response.length - 2).toString(\"ascii\")}`;\n }\n\n let signature: any = null;\n if (response.length > 2) {\n signature = response.slice(0, response.length - 2);\n }\n\n return { error_message: errorMessage, return_code: returnCode, signature };\n }, processErrorResponse);\n}\n\nfunction compressPublicKey(publicKey: Buffer) {\n if (publicKey.length !== 65) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", {\n reason: \"decompressed public key length should be 65 bytes\",\n });\n }\n const y = publicKey.slice(33, 65);\n\n // @ts-expect-error\n const z = Buffer.from([2 + (y[y.length - 1] & 1)]);\n return Buffer.concat([z, publicKey.slice(1, 33)]);\n}\n\nexport function publicKeyv1(app: any, data: Buffer) {\n return app.transport\n .send(CLA, INS.INS_PUBLIC_KEY_SECP256K1, 0, 0, data, [ERROR_CODE.NoError])\n .then((response: any) => {\n const errorCodeData = response.slice(-2);\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1];\n const pk = Buffer.from(response.slice(0, 65));\n\n return {\n compressed_pk: compressPublicKey(pk),\n error_message: errorCodeToString(returnCode),\n pk,\n return_code: returnCode,\n };\n }, processErrorResponse);\n}\n\nexport function serializePathv2(path: number[]) {\n if (!path || path.length !== 5) {\n throw new SwapKitError(\"wallet_ledger_invalid_params\", { reason: \"Path must be exactly 5 elements\" });\n }\n\n const buf = Buffer.alloc(20);\n // @ts-expect-error\n buf.writeUInt32LE(0x80000000 + path[0], 0);\n // @ts-expect-error\n buf.writeUInt32LE(0x80000000 + path[1], 4);\n // @ts-expect-error\n buf.writeUInt32LE(0x80000000 + path[2], 8);\n // @ts-expect-error\n buf.writeUInt32LE(path[3], 12);\n // @ts-expect-error\n buf.writeUInt32LE(path[4], 16);\n\n return buf;\n}\n\nexport function signSendChunkv2(app: any, chunkIdx: number, chunkNum: number, chunk: Buffer, txType = P2_VALUES.JSON) {\n let payloadType = PAYLOAD_TYPE.ADD;\n if (chunkIdx === 1) {\n payloadType = PAYLOAD_TYPE.INIT;\n }\n if (chunkIdx === chunkNum) {\n payloadType = PAYLOAD_TYPE.LAST;\n }\n\n return signSendChunkv1(app, payloadType, 0, chunk, txType);\n}\n\nexport function publicKeyv2(app: any, data: Buffer) {\n return app.transport.send(CLA, INS.GET_ADDR_SECP256K1, 0, 0, data, [ERROR_CODE.NoError]).then((response: any) => {\n const errorCodeData = response.slice(-2);\n const returnCode = errorCodeData[0] * 256 + errorCodeData[1];\n const compressedPk = Buffer.from(response.slice(0, 33));\n\n return {\n compressed_pk: compressedPk,\n error_message: errorCodeToString(returnCode),\n pk: \"OBSOLETE PROPERTY\",\n return_code: returnCode,\n };\n }, processErrorResponse);\n}\n",
|
|
16
|
-
"import type EthereumApp from \"@ledgerhq/hw-app-eth\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport {\n ChainId,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport {\n AbstractSigner,\n type Provider,\n type TransactionRequest,\n type TypedDataDomain,\n type TypedDataField,\n} from \"ethers\";\n\nimport { getLedgerTransport } from \"../helpers/getLedgerTransport\";\n\nfunction parseLedgerSignatureV(v: number | string) {\n if (typeof v === \"number\") return v;\n\n const hex = v.startsWith(\"0x\") ? v.slice(2) : v;\n return Number.parseInt(hex || \"0\", 16);\n}\n\nclass EVMLedgerInterface extends AbstractSigner {\n chainId: ChainId = ChainId.Ethereum;\n derivationPath = \"\";\n ledgerApp: InstanceType<typeof EthereumApp> | null = null;\n ledgerTimeout = 50000;\n private transport?: Transport;\n private readonly injectedTransport?: Transport;\n\n constructor({\n provider,\n derivationPath = NetworkDerivationPath.OP,\n chainId = ChainId.Optimism,\n transport,\n }: { provider: Provider; derivationPath?: DerivationPathArray | string; chainId?: ChainId; transport?: Transport }) {\n super(provider);\n\n this.chainId = chainId || ChainId.Ethereum;\n this.derivationPath = typeof derivationPath === \"string\" ? derivationPath : derivationPathToString(derivationPath);\n this.injectedTransport = transport;\n\n Object.defineProperty(this, \"provider\", { enumerable: true, value: provider || null, writable: false });\n }\n\n connect = (provider: Provider) =>\n new EVMLedgerInterface({\n chainId: this.chainId,\n derivationPath: this.derivationPath,\n provider,\n transport: this.transport ?? this.injectedTransport,\n });\n\n checkOrCreateTransportAndLedger = async () => {\n await this.createTransportAndLedger();\n };\n\n createTransportAndLedger = async () => {\n if (this.ledgerApp) return;\n\n this.transport ||= this.injectedTransport ?? (await getLedgerTransport());\n const EthereumApp = (await import(\"@ledgerhq/hw-app-eth\")).default;\n\n this.ledgerApp = new EthereumApp(this.transport);\n };\n\n getAddress = async () => {\n const response = await this.getAddressAndPubKey();\n if (!response) throw new SwapKitError(\"wallet_ledger_failed_to_get_address\");\n return response.address;\n };\n\n getAddressAndPubKey = async () => {\n await this.createTransportAndLedger();\n return this.ledgerApp?.getAddress(this.derivationPath);\n };\n\n showAddressAndPubKey = async () => {\n await this.createTransportAndLedger();\n return this.ledgerApp?.getAddress(this.derivationPath, true);\n };\n\n signMessage = async (messageHex: string) => {\n const { Signature } = await import(\"ethers\");\n await this.createTransportAndLedger();\n\n const sig = await this.ledgerApp?.signPersonalMessage(this.derivationPath, messageHex);\n\n if (!sig) throw new SwapKitError(\"wallet_ledger_signing_error\");\n\n sig.r = `0x${sig.r}`;\n sig.s = `0x${sig.s}`;\n return Signature.from(sig).serialized;\n };\n\n sendTransaction = async (tx: TransactionRequest): Promise<any> => {\n if (!this.provider) throw new SwapKitError(\"wallet_ledger_no_provider\");\n\n const signedTxHex = await this.signTransaction(tx);\n\n return await this.provider.broadcastTransaction(signedTxHex);\n };\n\n signTypedData = async (\n domain: TypedDataDomain,\n types: Record<string, TypedDataField[]>,\n value: Record<string, unknown>,\n explicitPrimaryType?: string,\n ) => {\n const { buildEIP712DomainType } = await import(\"@swapkit/toolboxes/evm\");\n const { Signature, TypedDataEncoder } = await import(\"ethers\");\n await this.createTransportAndLedger();\n\n const { EIP712Domain: _, ...filteredTypes } = types;\n const primaryType = explicitPrimaryType ?? TypedDataEncoder.from(filteredTypes).primaryType;\n\n let sig: { v: number; s: string; r: string } | undefined;\n\n try {\n sig = await this.ledgerApp?.signEIP712Message(this.derivationPath, {\n domain: domain as Record<string, unknown>,\n message: value,\n primaryType,\n types: { EIP712Domain: buildEIP712DomainType(domain), ...filteredTypes },\n });\n } catch (error) {\n const isLedgerDeviceError = error instanceof Error && \"statusCode\" in error;\n if (!isLedgerDeviceError || (isLedgerDeviceError && (error as { statusCode: number }).statusCode === 0x6985)) {\n throw error;\n }\n\n const domainSeparator = TypedDataEncoder.hashDomain(domain).slice(2);\n const messageHash = TypedDataEncoder.from(filteredTypes).hash(value).slice(2);\n\n sig = await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath, domainSeparator, messageHash);\n }\n\n if (!sig) throw new SwapKitError(\"wallet_ledger_signing_error\");\n\n sig.r = `0x${sig.r}`;\n sig.s = `0x${sig.s}`;\n return Signature.from(sig).serialized;\n };\n\n signTransaction = async (tx: TransactionRequest) => {\n const { Transaction } = await import(\"ethers\");\n await this.createTransportAndLedger();\n\n const nonce = tx.nonce ?? undefined;\n const transactionCount =\n nonce === undefined ? await this.provider?.getTransactionCount(tx.from || (await this.getAddress())) : undefined;\n\n const baseTx = {\n chainId: tx.chainId || this.chainId,\n data: tx.data,\n gasLimit: tx.gasLimit,\n ...(tx.gasPrice && { gasPrice: tx.gasPrice }),\n ...(!tx.gasPrice &&\n tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas, maxPriorityFeePerGas: tx.maxPriorityFeePerGas }),\n nonce: nonce !== undefined ? Number(nonce.toString()) : transactionCount,\n to: tx.to?.toString(),\n type: tx.type && !Number.isNaN(tx.type) ? tx.type : tx.maxFeePerGas ? 2 : 0,\n value: tx.value,\n };\n\n // ledger expects the tx to be serialized without the 0x prefix\n const unsignedTx = Transaction.from(baseTx).unsignedSerialized.slice(2);\n\n const { ledgerService } = await import(\"@ledgerhq/hw-app-eth\");\n\n const resolution = await ledgerService.resolveTransaction(unsignedTx, {}, { erc20: true, externalPlugins: true });\n\n const signature = await this.ledgerApp?.signTransaction(this.derivationPath, unsignedTx, resolution);\n\n if (!signature) throw new SwapKitError(\"wallet_ledger_signing_error\");\n\n const { r, s, v } = signature;\n\n return Transaction.from({ ...baseTx, signature: { r: `0x${r}`, s: `0x${s}`, v: parseLedgerSignatureV(v) } })\n .serialized;\n };\n}\n\ntype LedgerParams = { provider: Provider; derivationPath?: DerivationPathArray; transport?: Transport };\n\nexport const ArbitrumLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Arbitrum });\nexport const ArcLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Arc });\nexport const AuroraLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Aurora });\nexport const AvalancheLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Avalanche });\nexport const BaseLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Base });\nexport const EthereumLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Ethereum });\nexport const GnosisLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Gnosis });\nexport const OptimismLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Optimism });\nexport const PolygonLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Polygon });\nexport const BinanceSmartChainLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.BinanceSmartChain });\nexport const MonadLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Monad });\nexport const XLayerLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.XLayer });\nexport const BerachainLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Berachain });\n",
|
|
16
|
+
"import type EthereumApp from \"@ledgerhq/hw-app-eth\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport {\n ChainId,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\nimport {\n AbstractSigner,\n type Provider,\n type TransactionRequest,\n type TypedDataDomain,\n type TypedDataField,\n} from \"ethers\";\n\nimport { getLedgerTransport } from \"../helpers/getLedgerTransport\";\nimport {\n fetchLedgerNetworkCertificate,\n fetchLedgerNetworkDescriptor,\n provideLedgerCertificate,\n provideLedgerNetworkInformation,\n} from \"../helpers/ledgerNetworkInfo\";\n\nconst LEDGER_INCORRECT_DATA = 0x6a80;\n\nconst ARC_CHAIN_ID = Number(ChainId.Arc);\n\ntype LedgerTransactionResolution = Awaited<\n ReturnType<typeof import(\"@ledgerhq/hw-app-eth\")[\"ledgerService\"][\"resolveTransaction\"]>\n>;\n\nfunction isLedgerIncorrectDataError(error: unknown) {\n return (\n error instanceof Error &&\n \"statusCode\" in error &&\n (error as { statusCode: number }).statusCode === LEDGER_INCORRECT_DATA\n );\n}\n\nfunction hasClearSigningPayload(resolution: LedgerTransactionResolution | null) {\n return Object.values(resolution ?? {}).some((entries) => Array.isArray(entries) && entries.length);\n}\n\nfunction parseLedgerSignatureV(v: number | string) {\n if (typeof v === \"number\") return v;\n\n const hex = v.startsWith(\"0x\") ? v.slice(2) : v;\n return Number.parseInt(hex || \"0\", 16);\n}\n\nclass EVMLedgerInterface extends AbstractSigner {\n chainId: ChainId = ChainId.Ethereum;\n derivationPath = \"\";\n ledgerApp: InstanceType<typeof EthereumApp> | null = null;\n ledgerTimeout = 50000;\n private transport?: Transport;\n private readonly injectedTransport?: Transport;\n private arcNetworkRegistered = false;\n\n constructor({\n provider,\n derivationPath = NetworkDerivationPath.OP,\n chainId = ChainId.Optimism,\n transport,\n }: { provider: Provider; derivationPath?: DerivationPathArray | string; chainId?: ChainId; transport?: Transport }) {\n super(provider);\n\n this.chainId = chainId || ChainId.Ethereum;\n this.derivationPath = typeof derivationPath === \"string\" ? derivationPath : derivationPathToString(derivationPath);\n this.injectedTransport = transport;\n\n Object.defineProperty(this, \"provider\", { enumerable: true, value: provider || null, writable: false });\n }\n\n connect = (provider: Provider) =>\n new EVMLedgerInterface({\n chainId: this.chainId,\n derivationPath: this.derivationPath,\n provider,\n transport: this.transport ?? this.injectedTransport,\n });\n\n checkOrCreateTransportAndLedger = async () => {\n await this.createTransportAndLedger();\n };\n\n createTransportAndLedger = async () => {\n if (this.ledgerApp) return;\n\n this.transport ||= this.injectedTransport ?? (await getLedgerTransport());\n const EthereumApp = (await import(\"@ledgerhq/hw-app-eth\")).default;\n\n this.ledgerApp = new EthereumApp(this.transport);\n };\n\n getAddress = async () => {\n const response = await this.getAddressAndPubKey();\n if (!response) throw new SwapKitError(\"wallet_ledger_failed_to_get_address\");\n return response.address;\n };\n\n getAddressAndPubKey = async () => {\n await this.createTransportAndLedger();\n return this.ledgerApp?.getAddress(this.derivationPath);\n };\n\n showAddressAndPubKey = async () => {\n await this.createTransportAndLedger();\n return this.ledgerApp?.getAddress(this.derivationPath, true);\n };\n\n signMessage = async (messageHex: string) => {\n const { Signature } = await import(\"ethers\");\n await this.createTransportAndLedger();\n\n const sig = await this.ledgerApp?.signPersonalMessage(this.derivationPath, messageHex);\n\n if (!sig) throw new SwapKitError(\"wallet_ledger_signing_error\");\n\n sig.r = `0x${sig.r}`;\n sig.s = `0x${sig.s}`;\n return Signature.from(sig).serialized;\n };\n\n sendTransaction = async (tx: TransactionRequest): Promise<any> => {\n if (!this.provider) throw new SwapKitError(\"wallet_ledger_no_provider\");\n\n const signedTxHex = await this.signTransaction(tx);\n\n return await this.provider.broadcastTransaction(signedTxHex);\n };\n\n signTypedData = async (\n domain: TypedDataDomain,\n types: Record<string, TypedDataField[]>,\n value: Record<string, unknown>,\n explicitPrimaryType?: string,\n ) => {\n const { buildEIP712DomainType } = await import(\"@swapkit/toolboxes/evm\");\n const { Signature, TypedDataEncoder } = await import(\"ethers\");\n await this.createTransportAndLedger();\n\n const { EIP712Domain: _, ...filteredTypes } = types;\n const primaryType = explicitPrimaryType ?? TypedDataEncoder.from(filteredTypes).primaryType;\n\n let sig: { v: number; s: string; r: string } | undefined;\n\n try {\n sig = await this.ledgerApp?.signEIP712Message(this.derivationPath, {\n domain: domain as Record<string, unknown>,\n message: value,\n primaryType,\n types: { EIP712Domain: buildEIP712DomainType(domain), ...filteredTypes },\n });\n } catch (error) {\n const isLedgerDeviceError = error instanceof Error && \"statusCode\" in error;\n if (!isLedgerDeviceError || (isLedgerDeviceError && (error as { statusCode: number }).statusCode === 0x6985)) {\n throw error;\n }\n\n const domainSeparator = TypedDataEncoder.hashDomain(domain).slice(2);\n const messageHash = TypedDataEncoder.from(filteredTypes).hash(value).slice(2);\n\n sig = await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath, domainSeparator, messageHash);\n }\n\n if (!sig) throw new SwapKitError(\"wallet_ledger_signing_error\");\n\n sig.r = `0x${sig.r}`;\n sig.s = `0x${sig.s}`;\n return Signature.from(sig).serialized;\n };\n\n signTransaction = async (tx: TransactionRequest) => {\n const { Transaction } = await import(\"ethers\");\n await this.createTransportAndLedger();\n\n const nonce = tx.nonce ?? undefined;\n const transactionCount =\n nonce === undefined ? await this.provider?.getTransactionCount(tx.from || (await this.getAddress())) : undefined;\n\n const baseTx = {\n chainId: tx.chainId || this.chainId,\n data: tx.data,\n gasLimit: tx.gasLimit,\n ...(tx.gasPrice && { gasPrice: tx.gasPrice }),\n ...(!tx.gasPrice &&\n tx.maxFeePerGas && { maxFeePerGas: tx.maxFeePerGas, maxPriorityFeePerGas: tx.maxPriorityFeePerGas }),\n nonce: nonce !== undefined ? Number(nonce.toString()) : transactionCount,\n to: tx.to?.toString(),\n type: tx.type && !Number.isNaN(tx.type) ? tx.type : tx.maxFeePerGas ? 2 : 0,\n value: tx.value,\n };\n\n // ledger expects the tx to be serialized without the 0x prefix\n const unsignedTx = Transaction.from(baseTx).unsignedSerialized.slice(2);\n\n const { ledgerService } = await import(\"@ledgerhq/hw-app-eth\");\n\n const chainId = Number(baseTx.chainId);\n const isArc = chainId === ARC_CHAIN_ID;\n\n const resolution = await ledgerService\n .resolveTransaction(unsignedTx, {}, { erc20: true, externalPlugins: true })\n .catch((error) => {\n if (!isArc) throw error;\n\n console.warn(\"Ledger: could not fetch clear-signing metadata for Arc, signing blind\");\n\n return null;\n });\n\n if (isArc && !this.arcNetworkRegistered) await this.registerNetworkOnDevice(chainId);\n\n const signature = await this.signWithLedgerApp(unsignedTx, resolution, chainId);\n\n if (!signature) throw new SwapKitError(\"wallet_ledger_signing_error\");\n\n const { r, s, v } = signature;\n\n return Transaction.from({ ...baseTx, signature: { r: `0x${r}`, s: `0x${s}`, v: parseLedgerSignatureV(v) } })\n .serialized;\n };\n\n private signWithLedgerApp = async (\n unsignedTx: string,\n resolution: LedgerTransactionResolution | null,\n chainId: number,\n ) => {\n try {\n return await this.ledgerApp?.signTransaction(this.derivationPath, unsignedTx, resolution);\n } catch (error) {\n const canSignBlind =\n chainId === ARC_CHAIN_ID && isLedgerIncorrectDataError(error) && hasClearSigningPayload(resolution);\n\n if (!canSignBlind) throw error;\n\n console.warn(\"Ledger: the app rejected the Arc metadata, signing blind\");\n\n return await this.ledgerApp?.signTransaction(this.derivationPath, unsignedTx, null);\n }\n };\n\n private registerNetworkOnDevice = async (chainId: number) => {\n const deviceModelId = this.transport?.deviceModel?.id;\n\n if (!(this.transport && deviceModelId)) return;\n\n try {\n const [descriptor, certificate] = await Promise.all([\n fetchLedgerNetworkDescriptor(chainId, deviceModelId),\n fetchLedgerNetworkCertificate(deviceModelId),\n ]);\n\n if (!descriptor) return;\n\n if (certificate) await provideLedgerCertificate(this.transport, certificate);\n\n await provideLedgerNetworkInformation(this.transport, descriptor);\n\n this.arcNetworkRegistered = true;\n } catch {\n // the app will reject the metadata and signWithLedgerApp falls back to blind signing\n }\n };\n}\n\ntype LedgerParams = { provider: Provider; derivationPath?: DerivationPathArray; transport?: Transport };\n\nexport const ArbitrumLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Arbitrum });\nexport const ArcLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Arc });\nexport const AuroraLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Aurora });\nexport const AvalancheLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Avalanche });\nexport const BaseLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Base });\nexport const EthereumLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Ethereum });\nexport const GnosisLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Gnosis });\nexport const OptimismLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Optimism });\nexport const PolygonLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Polygon });\nexport const BinanceSmartChainLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.BinanceSmartChain });\nexport const MonadLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.Monad });\nexport const XLayerLedger = (params: LedgerParams) => new EVMLedgerInterface({ ...params, chainId: ChainId.XLayer });\nexport const BerachainLedger = (params: LedgerParams) =>\n new EVMLedgerInterface({ ...params, chainId: ChainId.Berachain });\n",
|
|
17
|
+
"import type Transport from \"@ledgerhq/hw-transport\";\n\nconst LEDGER_CAL_SERVICE_URL = \"https://crypto-assets-service.api.ledger.com/v1\";\n\nconst LEDGER_DEVICE_TO_CAL_MODEL: Record<string, string> = {\n apex: \"apexp\",\n europa: \"flex\",\n nanoS: \"nanos\",\n nanoSP: \"nanosp\",\n nanoX: \"nanox\",\n stax: \"stax\",\n};\n\nconst APDU_CLA = 0xe0;\nconst APDU_CLA_PKI = 0xb0;\nconst APDU_INS_LOAD_CERTIFICATE = 0x06;\nconst LEDGER_KEY_USAGE_NETWORK = 0x0c;\nconst APDU_INS_PROVIDE_NETWORK_INFORMATION = 0x30;\nconst APDU_P1_FIRST_CHUNK = 0x01;\nconst APDU_P1_FOLLOWING_CHUNK = 0x00;\nconst APDU_P2_NETWORK_CONFIG = 0x00;\nconst APDU_P2_NETWORK_ICON = 0x01;\nconst APDU_MAX_CHUNK_SIZE = 0xff;\nconst TLV_TAG_DER_SIGNATURE = 0x15;\n\nexport type LedgerNetworkDescriptor = { data: string; icon?: string; signature: string };\n\ntype CalNetwork = {\n chain_id: number;\n descriptors?: Record<string, { data?: string; signatures?: { prod?: string } }>;\n icons?: Record<string, string>;\n};\n\nexport async function fetchLedgerNetworkCertificate(\n deviceModelId: string,\n fetchFn: typeof fetch = fetch,\n): Promise<string | null> {\n const calModel = LEDGER_DEVICE_TO_CAL_MODEL[deviceModelId];\n if (!calModel) return null;\n\n const url = `${LEDGER_CAL_SERVICE_URL}/certificates?output=descriptor&public_key_usage=network&target_device=${calModel}`;\n const response = await fetchFn(url);\n if (!response.ok) return null;\n\n const certificates = (await response.json()) as Array<{\n descriptor?: { data?: string; signatures?: { prod?: string } };\n }>;\n const descriptor = certificates[0]?.descriptor;\n const signature = descriptor?.signatures?.prod;\n\n if (!(descriptor?.data && signature)) return null;\n\n return `${descriptor.data}${appendSignatureTlv(signature)}`;\n}\n\nexport async function provideLedgerCertificate(transport: Transport, payloadHex: string) {\n await transport.send(\n APDU_CLA_PKI,\n APDU_INS_LOAD_CERTIFICATE,\n LEDGER_KEY_USAGE_NETWORK,\n 0x00,\n Buffer.from(payloadHex, \"hex\"),\n );\n}\n\nexport async function fetchLedgerNetworkDescriptor(\n chainId: number,\n deviceModelId: string,\n fetchFn: typeof fetch = fetch,\n): Promise<LedgerNetworkDescriptor | null> {\n const calModel = LEDGER_DEVICE_TO_CAL_MODEL[deviceModelId];\n if (!calModel) return null;\n\n const url = `${LEDGER_CAL_SERVICE_URL}/networks?chain_id=${chainId}&output=chain_id,descriptors,icons`;\n const response = await fetchFn(url);\n if (!response.ok) return null;\n\n const networks = (await response.json()) as CalNetwork[];\n const network = networks.find((entry) => entry.chain_id === chainId);\n const descriptor = network?.descriptors?.[calModel];\n const signature = descriptor?.signatures?.prod;\n\n if (!(descriptor?.data && signature)) return null;\n\n return { data: descriptor.data, icon: network?.icons?.[calModel], signature };\n}\n\nfunction appendSignatureTlv(signature: string) {\n return encodeTlv(TLV_TAG_DER_SIGNATURE, Buffer.from(signature, \"hex\")).toString(\"hex\");\n}\n\nfunction encodeTlv(tag: number, value: Buffer) {\n return Buffer.concat([Buffer.from([tag, value.length]), value]);\n}\n\nexport function encodeNetworkInfoPayload({ data, signature }: LedgerNetworkDescriptor) {\n const tlv = Buffer.concat([\n Buffer.from(data, \"hex\"),\n encodeTlv(TLV_TAG_DER_SIGNATURE, Buffer.from(signature, \"hex\")),\n ]);\n const length = Buffer.alloc(2);\n length.writeUInt16BE(tlv.length, 0);\n return Buffer.concat([length, tlv]);\n}\n\nasync function sendChunked(transport: Transport, p2: number, payload: Buffer) {\n for (let offset = 0; offset < payload.length; offset += APDU_MAX_CHUNK_SIZE) {\n const p1 = offset === 0 ? APDU_P1_FIRST_CHUNK : APDU_P1_FOLLOWING_CHUNK;\n const chunk = payload.subarray(offset, offset + APDU_MAX_CHUNK_SIZE);\n await transport.send(APDU_CLA, APDU_INS_PROVIDE_NETWORK_INFORMATION, p1, p2, chunk);\n }\n}\n\nexport async function provideLedgerNetworkInformation(transport: Transport, descriptor: LedgerNetworkDescriptor) {\n const payload = encodeNetworkInfoPayload(descriptor);\n await sendChunked(transport, APDU_P2_NETWORK_CONFIG, payload);\n\n if (!descriptor.icon) return { iconAccepted: false };\n\n try {\n await sendChunked(transport, APDU_P2_NETWORK_ICON, Buffer.from(descriptor.icon, \"hex\"));\n return { iconAccepted: true };\n } catch {\n await sendChunked(transport, APDU_P2_NETWORK_CONFIG, payload);\n return { iconAccepted: false };\n }\n}\n",
|
|
17
18
|
"import type Transport from \"@ledgerhq/hw-transport\";\nimport type { SignedTransaction, Transaction } from \"@near-js/transactions\";\nimport type { DerivationPathArray } from \"@swapkit/helpers\";\nimport type { NearSigner } from \"@swapkit/toolboxes/near\";\nimport { getLedgerTransport } from \"../helpers/getLedgerTransport\";\n\nexport async function getNearLedgerClient(derivationPath?: DerivationPathArray, injectedTransport?: Transport) {\n const Near = (await import(\"@ledgerhq/hw-app-near\")).default;\n const { Chain, NetworkDerivationPath, SwapKitError } = await import(\"@swapkit/helpers\");\n const transport = injectedTransport ?? (await getLedgerTransport());\n const nearApp = new Near(transport);\n\n const path = (derivationPath || NetworkDerivationPath[Chain.Near]).join(\"'/\").concat(\"'\");\n\n const { address, publicKey: pubKeyHex } = await nearApp.getAddress(path);\n\n const signer = {\n getAddress() {\n return Promise.resolve(address);\n },\n async getPublicKey() {\n const { PublicKey } = await import(\"@near-js/crypto\");\n return PublicKey.fromString(`ed25519:${pubKeyHex}`);\n },\n\n signDelegateAction(_delegateAction: any) {\n return Promise.reject(\n new SwapKitError(\"wallet_ledger_method_not_supported\", { method: \"signDelegateAction\", wallet: \"Ledger\" }),\n );\n },\n\n signNep413Message(\n _message: string,\n _accountId: string,\n _recipient: string,\n _nonce: Uint8Array,\n _callbackUrl?: string,\n ) {\n return Promise.reject(\n new SwapKitError(\"wallet_ledger_method_not_supported\", { method: \"signNep413Message\", wallet: \"Ledger\" }),\n );\n },\n\n async signTransaction(transaction: Transaction) {\n const { Signature, SignedTransaction } = await import(\"@near-js/transactions\");\n try {\n const signatureArray = await nearApp.signTransaction(transaction.encode(), path);\n if (!signatureArray) {\n throw new Error(\"Signature undefined\");\n }\n\n const signature = new Signature({ data: signatureArray, keyType: 0 });\n\n const signedTransaction = new SignedTransaction({ signature, transaction });\n\n return [signatureArray, signedTransaction] as [Uint8Array<ArrayBufferLike>, SignedTransaction];\n } catch (error) {\n throw new SwapKitError(\"wallet_ledger_signing_error\", { error });\n }\n },\n };\n\n return signer as NearSigner;\n}\n",
|
|
18
19
|
"import type Sui from \"@ledgerhq/hw-app-sui\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport {\n Chain,\n type DerivationPathArray,\n derivationPathToString,\n NetworkDerivationPath,\n SwapKitError,\n} from \"@swapkit/helpers\";\n\nimport { getLedgerTransport } from \"../helpers/getLedgerTransport\";\n\nexport class SuiLedgerInterface {\n derivationPath: string;\n ledgerApp: InstanceType<typeof Sui> | null = null;\n address: string | null = null;\n publicKey: Uint8Array | null = null;\n private readonly injectedTransport?: Transport;\n\n constructor(derivationPath?: DerivationPathArray | string, transport?: Transport) {\n this.derivationPath =\n typeof derivationPath === \"string\"\n ? derivationPath\n : derivationPathToString(derivationPath || NetworkDerivationPath[Chain.Sui]);\n this.injectedTransport = transport;\n }\n\n /**\n * Transform derivation path for SUI Ledger format.\n * SUI Ledger expects: 44'/784'/0'/0'/0' (all hardened, no 'm/' prefix)\n * Standard format is: m/44'/784'/0'/0/0 (only first 3 hardened, has 'm/' prefix)\n */\n private getLedgerPath(): string {\n return this.derivationPath\n .replace(/^m\\//, \"\") // Remove 'm/' prefix\n .replace(/\\/(\\d+)\\/(\\d+)$/, \"/$1'/$2'\"); // Make last two components hardened\n }\n\n private async createTransportAndLedger() {\n if (this.ledgerApp) return;\n\n const transport = this.injectedTransport ?? (await getLedgerTransport());\n const SuiApp = (await import(\"@ledgerhq/hw-app-sui\")).default;\n this.ledgerApp = new SuiApp(transport);\n }\n\n async connect(): Promise<string> {\n await this.createTransportAndLedger();\n\n if (!this.ledgerApp) {\n throw new SwapKitError(\"wallet_ledger_transport_error\");\n }\n\n const ledgerPath = this.getLedgerPath();\n const result = await this.ledgerApp.getPublicKey(ledgerPath);\n\n if (!result?.publicKey) {\n throw new SwapKitError(\"wallet_ledger_failed_to_get_address\");\n }\n\n this.publicKey = result.publicKey;\n this.address = `0x${Buffer.from(result.address).toString(\"hex\")}`;\n\n return this.address;\n }\n\n toSuiAddress(): string {\n if (!this.address) {\n throw new SwapKitError(\"wallet_ledger_failed_to_get_address\");\n }\n return this.address;\n }\n\n async getAddress(): Promise<string> {\n if (this.address) return this.address;\n return await this.connect();\n }\n\n async signTransaction(\n input: Uint8Array | { transaction: Uint8Array },\n ): Promise<{ bytes: string; signature: string }> {\n const txBytes = input instanceof Uint8Array ? input : input.transaction;\n await this.createTransportAndLedger();\n\n if (!this.ledgerApp) {\n throw new SwapKitError(\"wallet_ledger_transport_error\");\n }\n\n if (!this.publicKey) {\n throw new SwapKitError(\"wallet_ledger_failed_to_get_address\");\n }\n\n try {\n const ledgerPath = this.getLedgerPath();\n\n // SUI intent message format for TransactionData:\n // [intent_scope=0 (TransactionData), intent_version=0, app_id=0] + transaction_bytes\n // The Ledger SUI app expects the INTENT MESSAGE, not raw transaction bytes\n const intentMessage = new Uint8Array(3 + txBytes.length);\n intentMessage[0] = 0; // IntentScope: TransactionData\n intentMessage[1] = 0; // IntentVersion: V0\n intentMessage[2] = 0; // AppId: Sui\n intentMessage.set(txBytes, 3);\n\n const result = await this.ledgerApp.signTransaction(ledgerPath, intentMessage);\n\n if (!result?.signature) {\n throw new SwapKitError(\"wallet_ledger_signing_error\");\n }\n\n // SUI signature format: [scheme_flag (1 byte)] + [signature (64 bytes)] + [public_key (32 bytes)]\n // Scheme flag 0x00 = Ed25519\n const pubKey = this.publicKey.length === 33 ? this.publicKey.slice(1) : this.publicKey;\n if (pubKey.length !== 32) {\n throw new SwapKitError(\"wallet_ledger_signing_error\", { error: \"Invalid public key length\" });\n }\n\n const serializedSignature = new Uint8Array(1 + 64 + 32);\n serializedSignature[0] = 0x00; // Ed25519 scheme flag\n serializedSignature.set(result.signature, 1);\n serializedSignature.set(pubKey, 65);\n\n const signatureBase64 = Buffer.from(serializedSignature).toString(\"base64\");\n const bytesBase64 = Buffer.from(txBytes).toString(\"base64\");\n\n return { bytes: bytesBase64, signature: signatureBase64 };\n } catch (error) {\n throw new SwapKitError(\"wallet_ledger_signing_error\", { error });\n }\n }\n}\n\nexport const SuiLedger = (derivationPath?: DerivationPathArray, transport?: Transport) =>\n new SuiLedgerInterface(derivationPath, transport);\n",
|
|
19
20
|
"import type { AccountData, AminoSignResponse, StdSignDoc } from \"@cosmjs/amino\";\nimport type Transport from \"@ledgerhq/hw-transport\";\nimport { base64 } from \"@scure/base\";\nimport { type DerivationPathArray, NetworkDerivationPath, SwapKitError } from \"@swapkit/helpers\";\n\nimport { CosmosLedgerInterface } from \"../../interfaces/CosmosLedgerInterface\";\nimport type { GetAddressAndPubKeyResponse } from \"../../types\";\nimport { getSignature } from \"./utils\";\n\ntype ThorchainAssetObject = { chain?: string; symbol?: string; synth?: boolean; ticker?: string };\n\ntype ThorchainDepositCoin = { amount: string; asset: string | ThorchainAssetObject };\n\nfunction getAminoAssetDenom(asset: string | ThorchainAssetObject) {\n if (typeof asset === \"string\") return asset;\n\n const chain = asset.chain?.toUpperCase();\n const symbol = (asset.symbol || asset.ticker || \"\").toUpperCase();\n\n if (!(chain && symbol)) return symbol || chain || \"\";\n if (asset.synth) return `${chain}/${symbol}`;\n\n return `${chain}.${symbol}`;\n}\n\nexport function normalizeThorchainLedgerSignDoc(signDoc: StdSignDoc): StdSignDoc {\n return {\n ...signDoc,\n msgs: signDoc.msgs.map((msg) => {\n if (!msg.type.includes(\"MsgDeposit\")) return msg;\n\n const coins = msg.value.coins;\n if (!Array.isArray(coins)) return msg;\n\n return {\n ...msg,\n value: {\n ...msg.value,\n coins: coins.map((coin: ThorchainDepositCoin) => ({ ...coin, asset: getAminoAssetDenom(coin.asset) })),\n },\n };\n }),\n };\n}\n\nexport class THORChainLedger extends CosmosLedgerInterface {\n private pubKey: string | null = null;\n\n derivationPath: DerivationPathArray;\n\n constructor(derivationPath: DerivationPathArray = NetworkDerivationPath.THOR, transport?: Transport) {\n super(transport);\n this.chain = \"thor\";\n this.derivationPath = derivationPath;\n }\n\n get pubkey() {\n return this.pubKey;\n }\n\n connect = async () => {\n await this.checkOrCreateTransportAndLedger();\n const { compressed_pk, bech32_address }: GetAddressAndPubKeyResponse = await this.getAddressAndPubKey();\n\n this.pubKey = base64.encode(compressed_pk);\n\n return bech32_address;\n };\n\n getAddressAndPubKey = async () => {\n await this.checkOrCreateTransportAndLedger(true);\n\n const response: GetAddressAndPubKeyResponse = await this.ledgerApp.getAddressAndPubKey(\n this.derivationPath,\n this.chain,\n );\n\n this.validateResponse(response.return_code, response.error_message);\n\n return response;\n };\n\n showAddressAndPubKey = async () => {\n await this.checkOrCreateTransportAndLedger(true);\n\n const response: GetAddressAndPubKeyResponse = await this.ledgerApp.showAddressAndPubKey(\n this.derivationPath,\n this.chain,\n );\n\n this.validateResponse(response.return_code, response.error_message);\n\n return response;\n };\n\n signTransaction = async (rawTx: string, sequence = \"0\") => {\n await this.checkOrCreateTransportAndLedger(true);\n\n const { return_code, error_message, signature } = await this.ledgerApp.sign(this.derivationPath, rawTx);\n\n if (!this.pubKey) throw new SwapKitError(\"wallet_ledger_pubkey_not_found\");\n\n this.validateResponse(return_code, error_message);\n\n return [\n {\n pub_key: { type: \"tendermint/PubKeySecp256k1\", value: this.pubKey },\n sequence,\n signature: getSignature(signature),\n },\n ];\n };\n\n signAmino = async (signerAddress: string, signDoc: StdSignDoc): Promise<AminoSignResponse> => {\n await this.checkOrCreateTransportAndLedger(true);\n\n const account = (await this.getAccounts()).find((item) => item.address === signerAddress);\n if (!account) {\n throw new SwapKitError(\"wallet_ledger_address_not_found\", { address: signerAddress });\n }\n\n const importedAmino = await import(\"@cosmjs/amino\");\n const encodeSecp256k1Signature =\n importedAmino.encodeSecp256k1Signature ?? importedAmino.default?.encodeSecp256k1Signature;\n const serializeSignDoc = importedAmino.serializeSignDoc ?? importedAmino.default?.serializeSignDoc;\n const normalizedSignDoc = normalizeThorchainLedgerSignDoc(signDoc);\n\n const { return_code, error_message, signature } = await this.ledgerApp.sign(\n this.derivationPath,\n serializeSignDoc(normalizedSignDoc),\n );\n\n this.validateResponse(return_code, error_message);\n\n return {\n signature: encodeSecp256k1Signature(account.pubkey, base64.decode(getSignature(signature))),\n // CosmJS rebuilds bodyBytes from the returned `signed` doc. Keep the\n // original direct-shaped doc there so MsgDeposit protobuf assets do not\n // get round-tripped through the incomplete Amino converter.\n signed: signDoc,\n };\n };\n\n getAccounts = async (): Promise<readonly AccountData[]> => {\n await this.checkOrCreateTransportAndLedger(true);\n\n const { bech32_address, compressed_pk }: GetAddressAndPubKeyResponse = await this.getAddressAndPubKey();\n\n this.pubKey = base64.encode(compressed_pk);\n\n return [{ address: bech32_address, algo: \"secp256k1\", pubkey: compressed_pk }];\n };\n\n sign = async (message: string) => {\n await this.checkOrCreateTransportAndLedger(true);\n\n const { return_code, error_message, signature } = await this.ledgerApp.sign(this.derivationPath, message);\n\n if (!this.pubKey) throw new SwapKitError(\"wallet_ledger_pubkey_not_found\");\n\n this.validateResponse(return_code, error_message);\n\n return getSignature(signature);\n };\n}\n",
|
|
@@ -23,7 +24,7 @@
|
|
|
23
24
|
"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",
|
|
24
25
|
"export { getLedgerAddress } from \"./getLedgerAddress\";\nexport { getLedgerClient } from \"./getLedgerClient\";\nexport { getLedgerTransport } from \"./getLedgerTransport\";\n"
|
|
25
26
|
],
|
|
26
|
-
"mappings": "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",
|
|
27
|
-
"debugId": "
|
|
27
|
+
"mappings": "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",
|
|
28
|
+
"debugId": "6AF47412139B800564756E2164756E21",
|
|
28
29
|
"names": []
|
|
29
30
|
}
|
package/dist/ledger/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as f}from"../chunk-3yr76n9s.js";import{d as W}from"../chunk-n05bv2n5.js";import{Chain as w,derivationPathToString as _0,FeeOption as TL,filterSupportedChains as tL,getRPCUrl as eL,NetworkDerivationPath as rL,SwapKitError as x,WalletOption as M0}from"@swapkit/helpers";import{addInputsAndOutputs as sL,assertDerivationIndex as XL,compileMemo as Ly,createHDWalletHelpers as yy,getNetworkForChain as OL,getUTXOAccountIndexFromPath as q0,getUTXOAccountPath as D0,getUTXOAddressPath as _y,getUtxoApi as Ry}from"@swapkit/toolboxes/utxo";import{createWallet as Gy,getWalletSupportedChains as By}from"@swapkit/wallet-core";import{Chain as q,SwapKitError as FL,WalletOption as ML}from"@swapkit/helpers";var P=async({chain:L,ledgerClient:y})=>{if(!y)return"";switch(L){case q.Cosmos:case q.THORChain:return y.connect();case q.Ethereum:case q.BinanceSmartChain:case q.Avalanche:case q.Polygon:case q.Arbitrum:case q.Arc:case q.Berachain:case q.Optimism:case q.Base:case q.Aurora:case q.Gnosis:case q.Monad:case q.XLayer:return y.getAddress();case q.Bitcoin:case q.BitcoinCash:case q.Dash:case q.Dogecoin:case q.Litecoin:case q.Zcash:{let _=y;await _.connect();let B=await _.getAddress();return L===q.BitcoinCash?B.replace("bitcoincash:",""):B}case q.Near:return await y.getAddress();case q.Ripple:return y.getAddress();case q.Tron:return y.getAddress();case q.Sui:return y.connect();default:throw new FL("wallet_chain_not_supported",{chain:L,wallet:ML.LEDGER})}};import{Chain as $,SwapKitError as pL,WalletOption as aL}from"@swapkit/helpers";import{derivationPathToString as CL,NetworkDerivationPath as UL,SwapKitError as P0}from"@swapkit/helpers";import{LedgerErrorCode as J0,NetworkDerivationPath as HL,SwapKitError as Z0}from"@swapkit/helpers";import{SwapKitError as V0}from"@swapkit/helpers";var c=85,N0=250;var l={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},r={ADD:1,INIT:0,LAST:2},T0={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},g={JSON:0},E={NoError:36864},z0={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 V(L){if(L in z0)return z0[L];return`Unknown Status Code: ${L}`}function qL(L){return typeof L==="object"&&L!==null&&!Array.isArray(L)&&!(L instanceof Date)}function K(L){if(L){if(qL(L)){if(Object.hasOwn(L,"statusCode"))return{error_message:V(L.statusCode),return_code:L.statusCode};if(Object.hasOwn(L,"return_code")&&Object.hasOwn(L,"error_message"))return L}return{error_message:L.toString(),return_code:65535}}return{error_message:L.toString(),return_code:65535}}function X0(L){return L.send(85,l.GET_VERSION,0,0).then((y)=>{let _=y.slice(-2),B=_[0]*256+_[1],R=0;if(y.length>=9)R=(y[5]<<24)+(y[6]<<16)+(y[7]<<8)+(y[8]<<0);return{device_locked:y[4]===1,error_message:V(B),major:y[1],minor:y[2],patch:y[3],return_code:B,target_id:R.toString(16),test_mode:y[0]!==0}},K)}import{SwapKitError as s}from"@swapkit/helpers";function k0(L){if(L==null||L.length<3)throw new s("wallet_ledger_invalid_params",{reason:"Path too short"});if(L.length>10)throw new s("wallet_ledger_invalid_params",{reason:"Path too long"});let y=Buffer.alloc(1+4*L.length);y.writeUInt8(L.length,0);for(let _=0;_<L.length;_+=1){let B=L[_]||0;if(_<3)B|=2147483648;y.writeInt32LE(B,1+_*4)}return y}function O0(L,y,_,B,R=g.JSON){return L.transport.send(c,l.SIGN_SECP256K1,y,R,B,[E.NoError,27012,27264]).then((G)=>{let N=G.slice(-2),T=N[0]*256+N[1],X=V(T);if(T===27264||T===27012)X=`${X} : ${G.slice(0,G.length-2).toString("ascii")}`;let J=null;if(G.length>2)J=G.slice(0,G.length-2);return{error_message:X,return_code:T,signature:J}},K)}function DL(L){if(L.length!==65)throw new s("wallet_ledger_invalid_params",{reason:"decompressed public key length should be 65 bytes"});let y=L.slice(33,65),_=Buffer.from([2+(y[y.length-1]&1)]);return Buffer.concat([_,L.slice(1,33)])}function K0(L,y){return L.transport.send(c,l.INS_PUBLIC_KEY_SECP256K1,0,0,y,[E.NoError]).then((_)=>{let B=_.slice(-2),R=B[0]*256+B[1],G=Buffer.from(_.slice(0,65));return{compressed_pk:DL(G),error_message:V(R),pk:G,return_code:R}},K)}function S0(L){if(!L||L.length!==5)throw new s("wallet_ledger_invalid_params",{reason:"Path must be exactly 5 elements"});let y=Buffer.alloc(20);return y.writeUInt32LE(2147483648+L[0],0),y.writeUInt32LE(2147483648+L[1],4),y.writeUInt32LE(2147483648+L[2],8),y.writeUInt32LE(L[3],12),y.writeUInt32LE(L[4],16),y}function A0(L,y,_,B,R=g.JSON){let G=r.ADD;if(y===1)G=r.INIT;if(y===_)G=r.LAST;return O0(L,G,0,B,R)}function m0(L,y){return L.transport.send(c,l.GET_ADDR_SECP256K1,0,0,y,[E.NoError]).then((_)=>{let B=_.slice(-2),R=B[0]*256+B[1];return{compressed_pk:Buffer.from(_.slice(0,33)),error_message:V(R),pk:"OBSOLETE PROPERTY",return_code:R}},K)}class u{transport;versionResponse;constructor(L){if(!L)throw new V0("wallet_ledger_transport_not_defined");this.transport=L}static serializeHRP(L){if(L==null||L.length<3||L.length>83)throw new V0("wallet_ledger_invalid_params",{reason:"Invalid HRP"});let y=Buffer.alloc(1+L.length);return y.writeUInt8(L.length,0),y.write(L,1),y}async serializePath(L){if(this.versionResponse=await X0(this.transport),this.versionResponse.return_code!==E.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return k0(L);case 2:return S0(L);default:return Buffer.alloc(0)}}async signGetChunks(L,y){let _=await this.serializePath(L),B=[];B.push(_);for(let R=0;R<y.length;R+=N0){let G=R+N0;if(R>y.length)G=y.length;B.push(y.slice(R,G))}return B}async getVersion(){try{return this.versionResponse=await X0(this.transport),this.versionResponse}catch(L){return K(L)}}appInfo(){return this.transport.send(176,1,0,0).then((L)=>{let y=L.readUInt16BE(L.length-2),_="",B="",R=0,G=0;if(L[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let N=L[1];_=L.slice(2,2+N).toString("ascii");let T=2+N,X=L[T];T+=1,B=L.slice(T,T+X).toString("ascii"),T+=X;let J=L[T];return T+=1,R=J,G=L[T],{appName:_,appVersion:B,error_message:V(y),flag_onboarded:(G&4)!==0,flag_pin_validated:(G&128)!==0,flag_recovery:(G&1)!==0,flag_signed_mcu_code:(G&2)!==0,flagLen:R,flagsValue:G,return_code:y}},K)}deviceInfo(){return this.transport.send(224,1,0,0,Buffer.from([]),[E.NoError,28160]).then((L)=>{let y=L.slice(-2),_=y[0]*256+y[1];if(_===28160)return{error_message:"This command is only available in the Dashboard",return_code:_};let B=L.slice(0,4).toString("hex"),R=4,G=L[R];R+=1;let N=L.slice(R,R+G).toString();R+=G;let T=L[R];R+=1;let X=L.slice(R,R+T).toString("hex");R+=T;let J=L[R];R+=1;let O=L.slice(R,R+J);if(O[J-1]===0)O=L.slice(R,R+J-1);let Z=O.toString();return{error_message:V(_),flag:X,mcuVersion:Z,return_code:_,seVersion:N,targetId:B}},K)}async publicKey(L){try{let y=await this.serializePath(L);switch(this.versionResponse.major){case 1:return K0(this,y);case 2:{let _=Buffer.concat([u.serializeHRP("thor"),y]);return m0(this,_)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(y){return K(y)}}async getAddressAndPubKey(L,y,_=!1){try{let B=await this.serializePath(L),R=Buffer.concat([u.serializeHRP(y),B]),G=await this.transport.send(c,l.GET_ADDR_SECP256K1,_?T0.SHOW_ADDRESS_IN_DEVICE:T0.ONLY_RETRIEVE,0,R,[E.NoError]),N=Buffer.from(G.slice(0,33)),T=Buffer.from(G.slice(33,-2)).toString(),X=G.readUInt16BE(G.length-2);return{bech32_address:T,compressed_pk:N,error_message:V(X),return_code:X}}catch(B){return K(B)}}showAddressAndPubKey(L,y){return this.getAddressAndPubKey(L,y,!0)}signSendChunk(L,y,_,B=g.JSON){switch(this.versionResponse.major){case 1:return O0(this,L,y,_,B);case 2:return A0(this,L,y,_,B);default:return{error_message:"App Version is not supported",return_code:25600}}}async sign(L,y,_=g.JSON){let B=Buffer.from(y),R=[],G;try{R=await this.signGetChunks(L,B),G=await this.signSendChunk(1,R.length,R[0],_)}catch(T){K(T)}let N={error_message:G.error_message,return_code:G.return_code,signature:null};for(let T=1;T<R.length;T+=1)if(N=await this.signSendChunk(1+T,R.length,R[T],_),N.return_code!==E.NoError)break;return{error_message:N.error_message,return_code:N.return_code,signature:N.signature}}}class i{ledgerTimeout=50000;derivationPath=HL.GAIA;transport;ledgerApp;chain="thor";injectedTransport;constructor(L){if(this.injectedTransport=L,L)this.transport=L}checkOrCreateTransportAndLedger=async(L=!1)=>{if(!L&&this.transport&&this.ledgerApp)return;try{if(!this.transport||L&&!this.injectedTransport)this.transport=this.injectedTransport??await f();switch(this.chain){case"thor":{this.ledgerApp=L||!this.ledgerApp?new u(this.transport):this.ledgerApp;break}case"cosmos":{let _=(await import("@ledgerhq/hw-app-cosmos")).default;this.ledgerApp=L||!this.ledgerApp?new _(this.transport):this.ledgerApp}}return this.ledgerApp}catch(y){throw new Z0("wallet_ledger_connection_error",y)}};validateResponse=(L,y)=>{switch(L){case J0.NoError:return;case J0.LockedDevice:throw new Z0("wallet_ledger_device_locked",{message:`Ledger is locked: ${y}`});case J0.TC_NotFound:throw new Z0("wallet_ledger_device_not_found");default:break}}}class $0 extends i{pubKey=null;derivationPath;constructor(L=UL.GAIA,y){super(y);this.chain="cosmos",this.derivationPath=CL(L)}connect=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{publicKey:L,address:y}=await this.getAddressAndPubKey();return this.pubKey=Buffer.from(L,"hex").toString("base64"),y};getAddressAndPubKey=async()=>{return await this.checkOrCreateTransportAndLedger(!0),await this.ledgerApp.getAddress(this.derivationPath,this.chain)};signTransaction=async(L,y="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:B,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new P0("wallet_ledger_pubkey_not_found");return this.validateResponse(_,B),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:y,signature:R}]};signAmino=async(L,y)=>{await this.checkOrCreateTransportAndLedger(!0);let _=await this.getAccounts();if(_.findIndex((j)=>j.address===L)===-1)throw new P0("wallet_ledger_address_not_found",{address:L});let R=await import("@cosmjs/amino"),G=R.encodeSecp256k1Signature??R.default?.encodeSecp256k1Signature,N=R.serializeSignDoc??R.default?.serializeSignDoc,T=await import("@cosmjs/crypto"),X=T.Secp256k1Signature??T.default?.Secp256k1Signature,J=N(y),O=await this.ledgerApp.sign(this.derivationPath,J);this.validateResponse(O.return_code,O.error_message);let Z=X.fromDer(O.signature).toFixedLength();return{signature:G(_[0].pubkey,Z),signed:y}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.getAddressAndPubKey();return[{address:L.address,algo:"secp256k1",pubkey:Buffer.from(L.publicKey,"hex")}]}}import{ChainId as U,derivationPathToString as fL,NetworkDerivationPath as zL,SwapKitError as o}from"@swapkit/helpers";import{AbstractSigner as kL}from"ethers";function KL(L){if(typeof L==="number")return L;let y=L.startsWith("0x")?L.slice(2):L;return Number.parseInt(y||"0",16)}class z extends kL{chainId=U.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;transport;injectedTransport;constructor({provider:L,derivationPath:y=zL.OP,chainId:_=U.Optimism,transport:B}){super(L);this.chainId=_||U.Ethereum,this.derivationPath=typeof y==="string"?y:fL(y),this.injectedTransport=B,Object.defineProperty(this,"provider",{enumerable:!0,value:L||null,writable:!1})}connect=(L)=>new z({chainId:this.chainId,derivationPath:this.derivationPath,provider:L,transport:this.transport??this.injectedTransport});checkOrCreateTransportAndLedger=async()=>{await this.createTransportAndLedger()};createTransportAndLedger=async()=>{if(this.ledgerApp)return;this.transport||=this.injectedTransport??await f();let L=(await import("@ledgerhq/hw-app-eth")).default;this.ledgerApp=new L(this.transport)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new o("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath)};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signMessage=async(L)=>{let{Signature:y}=await import("ethers");await this.createTransportAndLedger();let _=await this.ledgerApp?.signPersonalMessage(this.derivationPath,L);if(!_)throw new o("wallet_ledger_signing_error");return _.r=`0x${_.r}`,_.s=`0x${_.s}`,y.from(_).serialized};sendTransaction=async(L)=>{if(!this.provider)throw new o("wallet_ledger_no_provider");let y=await this.signTransaction(L);return await this.provider.broadcastTransaction(y)};signTypedData=async(L,y,_,B)=>{let{buildEIP712DomainType:R}=await import("@swapkit/toolboxes/evm"),{Signature:G,TypedDataEncoder:N}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:T,...X}=y,J=B??N.from(X).primaryType,O;try{O=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:L,message:_,primaryType:J,types:{EIP712Domain:R(L),...X}})}catch(Z){let j=Z instanceof Error&&"statusCode"in Z;if(!j||j&&Z.statusCode===27013)throw Z;let F=N.hashDomain(L).slice(2),C=N.from(X).hash(_).slice(2);O=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,F,C)}if(!O)throw new o("wallet_ledger_signing_error");return O.r=`0x${O.r}`,O.s=`0x${O.s}`,G.from(O).serialized};signTransaction=async(L)=>{let{Transaction:y}=await import("ethers");await this.createTransportAndLedger();let _=L.nonce??void 0,B=_===void 0?await this.provider?.getTransactionCount(L.from||await this.getAddress()):void 0,R={chainId:L.chainId||this.chainId,data:L.data,gasLimit:L.gasLimit,...L.gasPrice&&{gasPrice:L.gasPrice},...!L.gasPrice&&L.maxFeePerGas&&{maxFeePerGas:L.maxFeePerGas,maxPriorityFeePerGas:L.maxPriorityFeePerGas},nonce:_!==void 0?Number(_.toString()):B,to:L.to?.toString(),type:L.type&&!Number.isNaN(L.type)?L.type:L.maxFeePerGas?2:0,value:L.value},G=y.from(R).unsignedSerialized.slice(2),{ledgerService:N}=await import("@ledgerhq/hw-app-eth"),T=await N.resolveTransaction(G,{},{erc20:!0,externalPlugins:!0}),X=await this.ledgerApp?.signTransaction(this.derivationPath,G,T);if(!X)throw new o("wallet_ledger_signing_error");let{r:J,s:O,v:Z}=X;return y.from({...R,signature:{r:`0x${J}`,s:`0x${O}`,v:KL(Z)}}).serialized}}var E0=(L)=>new z({...L,chainId:U.Arbitrum}),I0=(L)=>new z({...L,chainId:U.Arc}),v0=(L)=>new z({...L,chainId:U.Aurora}),b0=(L)=>new z({...L,chainId:U.Avalanche}),l0=(L)=>new z({...L,chainId:U.Base}),c0=(L)=>new z({...L,chainId:U.Ethereum}),g0=(L)=>new z({...L,chainId:U.Gnosis}),h0=(L)=>new z({...L,chainId:U.Optimism}),x0=(L)=>new z({...L,chainId:U.Polygon}),d0=(L)=>new z({...L,chainId:U.BinanceSmartChain}),u0=(L)=>new z({...L,chainId:U.Monad}),i0=(L)=>new z({...L,chainId:U.XLayer}),o0=(L)=>new z({...L,chainId:U.Berachain});async function n0(L,y){let _=(await import("@ledgerhq/hw-app-near")).default,{Chain:B,NetworkDerivationPath:R,SwapKitError:G}=await import("@swapkit/helpers"),N=y??await f(),T=new _(N),X=(L||R[B.Near]).join("'/").concat("'"),{address:J,publicKey:O}=await T.getAddress(X);return{getAddress(){return Promise.resolve(J)},async getPublicKey(){let{PublicKey:j}=await import("@near-js/crypto");return j.fromString(`ed25519:${O}`)},signDelegateAction(j){return Promise.reject(new G("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(j,F,C,D,A){return Promise.reject(new G("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(j){let{Signature:F,SignedTransaction:C}=await import("@near-js/transactions");try{let D=await T.signTransaction(j.encode(),X);if(!D)throw Error("Signature undefined");let A=new F({data:D,keyType:0}),v=new C({signature:A,transaction:j});return[D,v]}catch(D){throw new G("wallet_ledger_signing_error",{error:D})}}}}import{Chain as SL,derivationPathToString as AL,NetworkDerivationPath as mL,SwapKitError as b}from"@swapkit/helpers";class p0{derivationPath;ledgerApp=null;address=null;publicKey=null;injectedTransport;constructor(L,y){this.derivationPath=typeof L==="string"?L:AL(L||mL[SL.Sui]),this.injectedTransport=y}getLedgerPath(){return this.derivationPath.replace(/^m\//,"").replace(/\/(\d+)\/(\d+)$/,"/$1'/$2'")}async createTransportAndLedger(){if(this.ledgerApp)return;let L=this.injectedTransport??await f(),y=(await import("@ledgerhq/hw-app-sui")).default;this.ledgerApp=new y(L)}async connect(){if(await this.createTransportAndLedger(),!this.ledgerApp)throw new b("wallet_ledger_transport_error");let L=this.getLedgerPath(),y=await this.ledgerApp.getPublicKey(L);if(!y?.publicKey)throw new b("wallet_ledger_failed_to_get_address");return this.publicKey=y.publicKey,this.address=`0x${Buffer.from(y.address).toString("hex")}`,this.address}toSuiAddress(){if(!this.address)throw new b("wallet_ledger_failed_to_get_address");return this.address}async getAddress(){if(this.address)return this.address;return await this.connect()}async signTransaction(L){let y=L instanceof Uint8Array?L:L.transaction;if(await this.createTransportAndLedger(),!this.ledgerApp)throw new b("wallet_ledger_transport_error");if(!this.publicKey)throw new b("wallet_ledger_failed_to_get_address");try{let _=this.getLedgerPath(),B=new Uint8Array(3+y.length);B[0]=0,B[1]=0,B[2]=0,B.set(y,3);let R=await this.ledgerApp.signTransaction(_,B);if(!R?.signature)throw new b("wallet_ledger_signing_error");let G=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(G.length!==32)throw new b("wallet_ledger_signing_error",{error:"Invalid public key length"});let N=new Uint8Array(97);N[0]=0,N.set(R.signature,1),N.set(G,65);let T=Buffer.from(N).toString("base64");return{bytes:Buffer.from(y).toString("base64"),signature:T}}catch(_){throw new b("wallet_ledger_signing_error",{error:_})}}}var a0=(L,y)=>new p0(L,y);import{base64 as j0}from"@scure/base";import{NetworkDerivationPath as PL,SwapKitError as W0}from"@swapkit/helpers";import{base64 as VL}from"@scure/base";import{SwapKitError as I}from"@swapkit/helpers";var L0=(L)=>{if(L.length<64)throw new I("wallet_ledger_invalid_signature",{reason:"Too short"});if(L[0]!==48)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected first byte 0x30"});if(L[1]+2!==L.length)throw new I("wallet_ledger_invalid_signature",{reason:"signature length does not match TLV"});if(L[2]!==2)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02"});let y=L[3],_=L.slice(4,y+4);if(_.length===33&&_[0]===0)_=_.slice(1,33);else if(_.length===33)throw new I("wallet_ledger_invalid_signature",{reason:"r too long"});while(_.length<32)_.unshift(0);if(L[y+4]!==2)throw new I("wallet_ledger_invalid_signature",{reason:"TLV encoding: expected length type 0x02 for s"});let B=L[y+5];if(4+y+2+B!==L.length)throw new I("wallet_ledger_invalid_signature",{reason:"TLV byte lengths do not match message length"});let R=L.slice(y+6,L.length);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:"s too long"});while(R.length<32)R.unshift(0);if(_.length!==32||R.length!==32)throw new I("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return VL.encode(Buffer.concat([_,R]))};function EL(L){if(typeof L==="string")return L;let y=L.chain?.toUpperCase(),_=(L.symbol||L.ticker||"").toUpperCase();if(!(y&&_))return _||y||"";if(L.synth)return`${y}/${_}`;return`${y}.${_}`}function IL(L){return{...L,msgs:L.msgs.map((y)=>{if(!y.type.includes("MsgDeposit"))return y;let _=y.value.coins;if(!Array.isArray(_))return y;return{...y,value:{...y.value,coins:_.map((B)=>({...B,asset:EL(B.asset)}))}}})}}class Q0 extends i{pubKey=null;derivationPath;constructor(L=PL.THOR,y){super(y);this.chain="thor",this.derivationPath=L}get pubkey(){return this.pubKey}connect=async()=>{await this.checkOrCreateTransportAndLedger();let{compressed_pk:L,bech32_address:y}=await this.getAddressAndPubKey();return this.pubKey=j0.encode(L),y};getAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.getAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};showAddressAndPubKey=async()=>{await this.checkOrCreateTransportAndLedger(!0);let L=await this.ledgerApp.showAddressAndPubKey(this.derivationPath,this.chain);return this.validateResponse(L.return_code,L.error_message),L};signTransaction=async(L,y="0")=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:_,error_message:B,signature:R}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new W0("wallet_ledger_pubkey_not_found");return this.validateResponse(_,B),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:y,signature:L0(R)}]};signAmino=async(L,y)=>{await this.checkOrCreateTransportAndLedger(!0);let _=(await this.getAccounts()).find((O)=>O.address===L);if(!_)throw new W0("wallet_ledger_address_not_found",{address:L});let B=await import("@cosmjs/amino"),R=B.encodeSecp256k1Signature??B.default?.encodeSecp256k1Signature,G=B.serializeSignDoc??B.default?.serializeSignDoc,N=IL(y),{return_code:T,error_message:X,signature:J}=await this.ledgerApp.sign(this.derivationPath,G(N));return this.validateResponse(T,X),{signature:R(_.pubkey,j0.decode(L0(J))),signed:y}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{bech32_address:L,compressed_pk:y}=await this.getAddressAndPubKey();return this.pubKey=j0.encode(y),[{address:L,algo:"secp256k1",pubkey:y}]};sign=async(L)=>{await this.checkOrCreateTransportAndLedger(!0);let{return_code:y,error_message:_,signature:B}=await this.ledgerApp.sign(this.derivationPath,L);if(!this.pubKey)throw new W0("wallet_ledger_pubkey_not_found");return this.validateResponse(y,_),L0(B)}}import{derivationPathToString as vL,NetworkDerivationPath as bL,SwapKitError as n}from"@swapkit/helpers";class t0{derivationPath;ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor(L,y){this.derivationPath=typeof L==="string"?L:vL(L||bL.TRON),this.injectedTransport=y}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let L=this.injectedTransport??await f(),y=(await import("@ledgerhq/hw-app-trx")).default;this.ledgerApp=new y(L)};getAddress=async()=>{let L=await this.getAddressAndPubKey();if(!L)throw new n("wallet_ledger_failed_to_get_address");return L.address};getAddressAndPubKey=async()=>{await this.createTransportAndLedger();let L=await this.ledgerApp?.getAddress(this.derivationPath);if(!L)throw new n("wallet_ledger_failed_to_get_address");return{address:L.address,publicKey:L.publicKey}};showAddressAndPubKey=async()=>{return await this.createTransportAndLedger(),this.ledgerApp?.getAddress(this.derivationPath,!0)};signTransaction=async(L)=>{if(await this.createTransportAndLedger(),!this.ledgerApp)throw new n("wallet_ledger_transport_error");try{let y=await this.ledgerApp.signTransaction(this.derivationPath,L.raw_data_hex,[]);if(!y)throw new n("wallet_ledger_signing_error");return{...L,signature:[y]}}catch(y){throw new n("wallet_ledger_signing_error",{error:y})}}}var e0=(L,y)=>new t0(L,y);import{hex as y0}from"@scure/base";import{derivationPathToString as lL,getWalletFormatFor as F0,SwapKitError as Y0}from"@swapkit/helpers";var s0=["bitcoin-cash","dash","dogecoin","zcash"],r0=({tx:L,inputUtxos:y,btcApp:_,derivationPath:B,chain:R},G)=>{let N=y.map((F)=>{return[_.splitTransaction(F.txHex||"",!s0.includes(R),R==="zcash"),F.index,void 0,void 0]}),T=y0.encode(L.unsignedTx),X=_.splitTransaction(T,!0),J=_.serializeTransactionOutputs(X).toString("hex"),O=F0(B),Z=O!=="legacy",j={additionals:O==="bech32"?["bech32"]:[],associatedKeysets:N.map(()=>B),inputs:N,outputScriptHex:J,segwit:Z,useTrustedInputForSegwit:Z};return _.createPaymentTransaction({...j,...G})},cL=({tx:L,inputUtxos:y,btcApp:_,derivationPaths:B,chain:R},G)=>{if(B.length!==y.length)throw new Y0("wallet_ledger_invalid_params",{message:`Derivation paths count (${B.length}) must match inputs count (${y.length})`});let N=y.map((F)=>{return[_.splitTransaction(F.txHex||"",!s0.includes(R),R==="zcash"),F.index,void 0,void 0]}),T=y0.encode(L.unsignedTx),X=_.splitTransaction(T,!0),J=_.serializeTransactionOutputs(X).toString("hex"),O=F0(B[0]??""),Z=O!=="legacy",j={additionals:O==="bech32"?["bech32"]:[],associatedKeysets:B,inputs:N,outputScriptHex:J,segwit:Z,useTrustedInputForSegwit:Z};return _.createPaymentTransaction({...j,...G})},h=({chain:L,additionalSignParams:y})=>{return(_,B)=>{let R,G=null;async function N(){G||=B??await f();let Z=(await import("@ledgerhq/hw-app-btc")).default;return R||=new Z({currency:L,transport:G}),R}async function T(){return R||await N()}async function X(){if(!B)await G?.close?.();R=void 0,G=null}let J=typeof _==="string"?_:lL(_),O=F0(J);return{connect:async()=>{await T()},disconnect:X,getAddress:async()=>{let{toCashAddress:Z}=await import("@swapkit/toolboxes/utxo"),j=await T(),{bitcoinAddress:F}=await j.getWalletPublicKey(J,{format:O});if(!F)throw new Y0("wallet_ledger_get_address_error",{message:`Cannot get ${L} address from ledger derivation path: ${J}`});return L==="bitcoin-cash"&&O==="legacy"?Z(F).replace(/(bchtest:|bitcoincash:)/,""):F},getExtendedPublicKey:async(Z="84'/0'/0'",j=76067358)=>{return(await T()).getWalletXpub({path:Z,xpubVersion:j})},signPCZT:async(Z)=>{if(L!=="zcash")throw new Y0("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});let j=await T(),{ZcashTransaction:F,Script:C}=await import("@swapkit/utxo-signer"),D=Z.getGlobal(),A=new F({consensusBranchId:D.consensusBranchId,expiryHeight:D.expiryHeight,lockTime:D.lockTime,version:D.txVersion,versionGroupId:D.versionGroupId}),v=[];for(let Y=0;Y<Z.inputsLength;Y++){let Q=Z.getInput(Y);A.addInput({index:Q.index,script:new Uint8Array,sequence:Q.sequence??4294967295,txid:Q.txid,value:Q.value}),v.push({hash:y0.encode(new Uint8Array([...Q.txid].reverse())),index:Q.index,txHex:gL(Q,D),value:Number(Q.value),witnessUtxo:{script:Q.scriptPubkey,value:Number(Q.value)}})}for(let Y=0;Y<Z.outputsLength;Y++){let Q=Z.getOutput(Y);A.addOutput({amount:Q.value,script:Q.scriptPubkey})}let d=await r0({btcApp:j,chain:L,derivationPath:J,inputUtxos:v,tx:A},{...y,expiryHeight:(()=>{let Y=Buffer.alloc(4);return Y.writeUInt32LE(D.expiryHeight),Y})(),lockTime:D.lockTime}),M=F.fromHex(d,{allowUnknownOutputs:!0}),H=Z.clone();for(let Y=0;Y<M.inputsLength;Y++){let Q=M.getInput(Y);if(Q.script&&Q.script.length>0){let k=C.decode(Q.script);if(k.length>=2)H.addSignature(Y,k[1],k[0])}}return H},signTransaction:async(Z,j)=>{let F=await T();return r0({btcApp:F,chain:L,derivationPath:J,inputUtxos:j,tx:Z},y)},signTransactionWithMultiplePaths:async(Z,j,F)=>{let C=await T();return cL({btcApp:C,chain:L,derivationPaths:F,inputUtxos:j,tx:Z},y)}}}};function gL(L,y){let _=[],B=(y.txVersion|2147483648)>>>0;_.push(B&255,B>>8&255,B>>16&255,B>>24&255);let R=y.versionGroupId;_.push(R&255,R>>8&255,R>>16&255,R>>24&255),_.push(0);let G=L.index+1;if(G<253)_.push(G);else _.push(253,G&255,G>>8&255);for(let X=0;X<L.index;X++)_.push(0,0,0,0,0,0,0,0),_.push(0);let N=L.value;_.push(Number(N&0xffn),Number(N>>8n&0xffn),Number(N>>16n&0xffn),Number(N>>24n&0xffn),Number(N>>32n&0xffn),Number(N>>40n&0xffn),Number(N>>48n&0xffn),Number(N>>56n&0xffn));let T=L.scriptPubkey;if(T.length<253)_.push(T.length);else _.push(253,T.length&255,T.length>>8&255);for(let X of T)_.push(X);return _.push(y.lockTime&255,y.lockTime>>8&255,y.lockTime>>16&255,y.lockTime>>24&255),_.push(y.expiryHeight&255,y.expiryHeight>>8&255,y.expiryHeight>>16&255,y.expiryHeight>>24&255),_.push(0,0,0,0,0,0,0,0),_.push(0),_.push(0),_.push(0),y0.encode(new Uint8Array(_))}var LL=h({chain:"bitcoin"}),yL=h({chain:"litecoin"}),_L=h({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),RL=h({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),GL=h({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),BL=h({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let L=Buffer.alloc(4);return L.writeUInt32LE(0),L})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});import hL from"@ledgerhq/hw-app-xrp";import{Chain as xL,derivationPathToString as dL,NetworkDerivationPath as uL}from"@swapkit/helpers";import{encode as wL}from"ripple-binary-codec";var iL=2147483648;function oL(L){let y={};for(let _ in L)if(L[_]!==null&&L[_]!==void 0)y[_]=L[_];return y}function nL(L){return new hL(L)}var NL=async(L,y)=>{let _=dL(L||uL[xL.Ripple]),B=y??await f(),R=nL(B),{address:G,publicKey:N}=await R.getAddress(_);async function T(X){let{hashes:J}=await import("xrpl"),Z={...oL(X),Flags:X.Flags||iL,SigningPubKey:N.toUpperCase()},j=wL(Z),F=await R.signTransaction(_,j),C=wL({...Z,TxnSignature:F});return{hash:J.hashSignedTx(C),tx_blob:C}}return{getAddress:()=>G,signTransaction:T}};var S=async({chain:L,derivationPath:y,transport:_})=>{let{match:B}=await import("ts-pattern");return B(L).returnType().with($.THORChain,()=>Promise.resolve(new Q0(y,_))).with($.Cosmos,()=>Promise.resolve(new $0(y,_))).with($.Bitcoin,()=>Promise.resolve(LL(y,_))).with($.BitcoinCash,()=>Promise.resolve(_L(y,_))).with($.Dash,()=>Promise.resolve(GL(y,_))).with($.Dogecoin,()=>Promise.resolve(RL(y,_))).with($.Litecoin,()=>Promise.resolve(yL(y,_))).with($.Zcash,()=>Promise.resolve(BL(y,_))).with($.Ripple,()=>Promise.resolve(NL(y,_))).with($.Tron,()=>Promise.resolve(e0(y,_))).with($.Sui,()=>Promise.resolve(a0(y,_))).with($.Near,()=>{return Promise.resolve(n0(y,_))}).with($.Arbitrum,$.Arc,$.Aurora,$.Avalanche,$.Berachain,$.BinanceSmartChain,$.Ethereum,$.Gnosis,$.Monad,$.Optimism,$.Polygon,$.Base,$.XLayer,async()=>{let{getProvider:R}=await import("@swapkit/toolboxes/evm"),G={derivationPath:y,provider:await R(L),transport:_};return B(L).with($.BinanceSmartChain,()=>d0(G)).with($.Avalanche,()=>b0(G)).with($.Arbitrum,()=>E0(G)).with($.Arc,()=>I0(G)).with($.Berachain,()=>o0(G)).with($.Optimism,()=>h0(G)).with($.Polygon,()=>x0(G)).with($.Base,()=>l0(G)).with($.Aurora,()=>v0(G)).with($.Gnosis,()=>g0(G)).with($.Monad,()=>u0(G)).with($.XLayer,()=>i0(G)).otherwise(()=>c0(G))}).otherwise(()=>{throw new pL("wallet_chain_not_supported",{chain:L,wallet:aL.LEDGER})})};var wy=Gy({connect:({addChain:L,supportedChains:y,walletType:_})=>async function(R,G,{address:N,transport:T}={}){let[X]=tL({chains:R,supportedChains:y,walletType:_});if(!X)return!1;let J=G??rL[X],O=await Xy({address:N,chain:X,derivationPath:J,transport:T});return L({...O,chain:X,walletType:M0.LEDGER}),!0},directSigningSupport:{[w.Arbitrum]:!0,[w.Arc]:!0,[w.Aurora]:!0,[w.Avalanche]:!0,[w.Base]:!0,[w.Berachain]:!0,[w.BinanceSmartChain]:!0,[w.Ethereum]:!0,[w.Gnosis]:!0,[w.Monad]:!0,[w.Bitcoin]:!0,[w.BitcoinCash]:!0,[w.Cosmos]:!0,[w.Dash]:!0,[w.Dogecoin]:!0,[w.Litecoin]:!0,[w.Near]:!0,[w.Optimism]:!0,[w.Polygon]:!0,[w.Ripple]:!0,[w.Sui]:!0,[w.THORChain]:!0,[w.Tron]:!0,[w.XLayer]:!0},getExtendedPublicKey:Ty,name:"connectLedger",supportedChains:[w.Arbitrum,w.Arc,w.Aurora,w.Avalanche,w.Base,w.Berachain,w.BinanceSmartChain,w.Bitcoin,w.BitcoinCash,w.Cosmos,w.Dash,w.Dogecoin,w.Ethereum,w.Gnosis,w.Litecoin,w.Monad,w.Near,w.Optimism,w.Polygon,w.Ripple,w.Sui,w.THORChain,w.XLayer,w.Tron,w.Zcash],walletType:M0.LEDGER}),q_=By(wy);function Ny(L,y="t"){if(!L?.includes("=:"))return L;let _=L.includes(`:${y}:`)?L.split(`:${y}:`)[0]:L;return _?.substring(0,_.lastIndexOf(":"))}async function Ty(L,y,{accountIndex:_}={}){if(![w.BitcoinCash,w.Bitcoin,w.Dash,w.Dogecoin,w.Litecoin,w.Zcash].includes(L))throw new x("wallet_chain_not_supported",{chain:L,wallet:M0.LEDGER});let B=L,R=await S({chain:B,derivationPath:y});if(!R.getExtendedPublicKey)return;let G=D0({accountIndex:_,chain:B,derivationPath:y}),N=_0(G),T=L===w.Bitcoin||L===w.Litecoin?N:N.replace(/^m\//,""),X=OL(B).bip32.public;try{let J=await R.getExtendedPublicKey(T,X);return{accountIndex:q0(G),path:N,xpub:J}}finally{await R.disconnect?.()}}async function Xy({address:L,chain:y,derivationPath:_,transport:B}){switch(y){case w.BitcoinCash:case w.Bitcoin:case w.Dash:case w.Dogecoin:case w.Litecoin:case w.Zcash:{let C=function(M={}){return F(M)},{getUtxoToolbox:R}=await import("@swapkit/toolboxes/utxo"),G=y,N=await S({chain:y,derivationPath:_,transport:B}),T=L??await P({chain:y,ledgerClient:N}),X,J;if(y===w.Bitcoin){let{BitcoinPsbtLedger:M}=await import("../chunk-gwx23jdp.js"),H=M(_,B);X={getAddress:H.getAddress,signTransaction:H.signTransaction}}else if(y===w.BitcoinCash||y===w.Dogecoin||y===w.Dash||y===w.Litecoin){let{createLegacyPsbtSigner:M,signLegacyPsbtTransaction:H}=await import("../chunk-bwf31zxr.js");X=M({address:T,chain:G,legacyClient:N}),J=async(Y)=>{let Q=await H({chain:G,legacyClient:N,tx:Y});return O.broadcastTx(Q)}}let O=X?await R(G,{signer:X}):R(G),Z=J??O.signAndBroadcastTransaction,j=async(M)=>{let H=M.feeRate||(await O.getFeeRates())[TL.Average],Y=[w.Bitcoin].includes(y)?M.memo:Ny(M.memo),{tx:Q,inputs:k}=await O.createTransaction({...M,feeRate:H,fetchTxHex:!0,memo:Y,sender:T}),m=await N.signTransaction(Q,k);return await O.broadcastTx(m)};async function F({accountIndex:M}={}){if(!N.getExtendedPublicKey)return;let H=D0({accountIndex:M,chain:G,derivationPath:_}),Y=_0(H),Q=y===w.Bitcoin||y===w.Litecoin?Y:Y.replace(/^m\//,""),k=OL(G).bip32.public,m=await N.getExtendedPublicKey(Q,k);return{accountIndex:q0(H),path:Y,xpub:m}}async function D({accountIndex:M,index:H,change:Y=!1}){try{let Q=_y({accountIndex:M,chain:G,change:Y,derivationPath:_,index:H}),k=await S({chain:G,derivationPath:Q,transport:B}),m=await P({chain:G,ledgerClient:k});return{accountIndex:q0(Q),address:m,change:Y,index:H,path:_0(Q),pubkey:""}}catch{return}}async function A({accountIndex:M,count:H,startIndex:Y=0,change:Q=!1}){return XL("count",H),XL("startIndex",Y),(await Promise.all(Array.from({length:H},(m,p)=>D({accountIndex:M,change:Q,index:Y+p})))).filter((m)=>!!m)}let v=yy({chain:G,deriveAddress:D,getBalance:O.getBalance,getUtxos:(M)=>Ry(G).getUtxos({address:M,fetchTxHex:!0})});async function d({utxos:M,recipient:H,assetValue:Y,memo:Q,feeRate:k,feeOptionKey:m,changeAddress:p}){if(!M.length)throw new x("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let JL=k||(await O.getFeeRates())[m||TL.Fast],R0=Q?Ly(Q):null,H0=[{address:H,value:Y.getBaseValue("number")}];if(R0)H0.push({script:R0,value:0});let ZL=M.map(({hash:t,index:e,value:G0,txHex:B0,witnessUtxo:w0})=>({hash:t,index:e,txHex:B0,value:G0,witnessUtxo:w0})),{inputs:a,outputs:C0}=O.accumulative({chain:G,feeRate:JL,inputs:ZL,outputs:H0});if(!(a&&C0))throw new x("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:$L}=await import("@swapkit/utxo-signer"),U0=new $L({allowLegacyWitnessUtxo:!0,version:1}),jL=p||M[0]?.address||H;sL({chain:G,compiledMemo:R0,inputs:a,outputs:C0,sender:jL,tx:U0});let WL=D0({chain:G,derivationPath:_}),QL=a.map((t)=>{let e=M.find((f0)=>f0.hash===t.hash&&f0.index===t.index),G0=e?.derivationIndex??0,B0=e?.isChange??!1,w0=[...WL,Number(B0),G0];return _0(w0)});if(!N.signTransactionWithMultiplePaths)throw new x("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let YL=await N.signTransactionWithMultiplePaths(U0,a,QL);return O.broadcastTx(YL)}return{...O,...v,address:T,deriveAddressAtIndex:D,deriveAddresses:A,getExtendedPublicKey:C,getExtendedPublicKeyInfo:F,signAndBroadcastTransaction:Z,transfer:j,transferFromMultipleAddresses:d}}case w.Ethereum:case w.Avalanche:case w.Arbitrum:case w.Arc:case w.Berachain:case w.Optimism:case w.Polygon:case w.BinanceSmartChain:case w.Base:case w.Aurora:case w.Gnosis:case w.Monad:case w.XLayer:{let{getEvmToolboxAsync:R}=await import("@swapkit/toolboxes/evm"),G=await S({chain:y,derivationPath:_,transport:B}),N=await P({chain:y,ledgerClient:G});return{...await R(y,{signer:G}),address:N}}case w.Cosmos:{let{createSigningStargateClient:R,getDefaultChainFee:G,getMsgSendDenom:N,getCosmosToolbox:T}=await import("@swapkit/toolboxes/cosmos"),X=await S({chain:y,derivationPath:_,transport:B}),J=await P({chain:y,ledgerClient:X});return{...await T(w.Cosmos,{signer:X}),address:J,transfer:async({assetValue:j,recipient:F,memo:C})=>{if(!j)throw new x("wallet_ledger_invalid_asset");let D={amount:[{amount:j.getBaseValue("string"),denom:N(`u${j.symbol}`).toLowerCase()}],fromAddress:J,toAddress:F},A=await eL(y),v=await R(A,X,"0.007uatom"),{transactionHash:d}=await v.signAndBroadcast(J,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:D}],G(w.Cosmos),C);return d}}}case w.THORChain:{let R=await S({chain:y,derivationPath:_,transport:B}),{getCosmosToolbox:G}=await import("@swapkit/toolboxes/cosmos"),N=G(y,{signer:R}),T=await P({chain:y,ledgerClient:R}),{sign:X}=R;return{...N,address:T,signMessage:X}}case w.Near:{let{getNearToolbox:R}=await import("@swapkit/toolboxes/near"),G=await S({chain:y,derivationPath:_,transport:B}),N=await G.getAddress();return{...R({signer:G}),address:N}}case w.Ripple:{let{getRippleToolbox:R}=await import("@swapkit/toolboxes/ripple"),G=await S({chain:y,derivationPath:_,transport:B}),N=G.getAddress();return{...R({signer:G}),address:N}}case w.Tron:{let{getTronToolbox:R}=await import("@swapkit/toolboxes/tron"),G=await S({chain:y,derivationPath:_,transport:B}),N=await P({chain:y,ledgerClient:G});return{...R({signer:G}),address:N}}case w.Sui:{let{getSuiToolbox:R}=await import("@swapkit/toolboxes/sui"),G=await S({chain:y,derivationPath:_,transport:B}),N=await P({chain:y,ledgerClient:G});return{...R({signer:G}),address:N}}default:throw new x("wallet_ledger_chain_not_supported",{chain:y})}}export{wy as ledgerWallet,Ty as getLedgerExtendedPublicKey,q_ as LEDGER_SUPPORTED_CHAINS};
|
|
1
|
+
import{c as A}from"../chunk-3yr76n9s.js";import{d as F}from"../chunk-n05bv2n5.js";import{Chain as T,derivationPathToString as R_,FeeOption as $0,filterSupportedChains as OL,getRPCUrl as BL,NetworkDerivationPath as DL,SwapKitError as h,WalletOption as j_}from"@swapkit/helpers";import{addInputsAndOutputs as UL,assertDerivationIndex as C0,compileMemo as WL,createHDWalletHelpers as XL,getNetworkForChain as Z0,getUTXOAccountIndexFromPath as J_,getUTXOAccountPath as Y_,getUTXOAddressPath as FL,getUtxoApi as $L}from"@swapkit/toolboxes/utxo";import{createWallet as CL,getWalletSupportedChains as ZL}from"@swapkit/wallet-core";import{Chain as j,SwapKitError as H0,WalletOption as E0}from"@swapkit/helpers";var m=async({chain:_,ledgerClient:L})=>{if(!L)return"";switch(_){case j.Cosmos:case j.THORChain:return L.connect();case j.Ethereum:case j.BinanceSmartChain:case j.Avalanche:case j.Polygon:case j.Arbitrum:case j.Arc:case j.Berachain:case j.Optimism:case j.Base:case j.Aurora:case j.Gnosis:case j.Monad:case j.XLayer:return L.getAddress();case j.Bitcoin:case j.BitcoinCash:case j.Dash:case j.Dogecoin:case j.Litecoin:case j.Zcash:{let R=L;await R.connect();let f=await R.getAddress();return _===j.BitcoinCash?f.replace("bitcoincash:",""):f}case j.Near:return await L.getAddress();case j.Ripple:return L.getAddress();case j.Tron:return L.getAddress();case j.Sui:return L.connect();default:throw new H0("wallet_chain_not_supported",{chain:_,wallet:E0.LEDGER})}};import{Chain as W,SwapKitError as GL,WalletOption as wL}from"@swapkit/helpers";import{derivationPathToString as z0,NetworkDerivationPath as P0,SwapKitError as V_}from"@swapkit/helpers";import{LedgerErrorCode as D_,NetworkDerivationPath as k0,SwapKitError as U_}from"@swapkit/helpers";import{SwapKitError as m_}from"@swapkit/helpers";var b=85,G_=250;var l={GET_ADDR_SECP256K1:4,GET_VERSION:0,INS_PUBLIC_KEY_SECP256K1:1,SIGN_SECP256K1:2},r={ADD:1,INIT:0,LAST:2},w_={ONLY_RETRIEVE:0,SHOW_ADDRESS_IN_DEVICE:1},g={JSON:0},V={NoError:36864},E_={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 E_)return E_[_];return`Unknown Status Code: ${_}`}function K0(_){return typeof _==="object"&&_!==null&&!Array.isArray(_)&&!(_ instanceof Date)}function K(_){if(_){if(K0(_)){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 O_(_){return _.send(85,l.GET_VERSION,0,0).then((L)=>{let R=L.slice(-2),f=R[0]*256+R[1],y=0;if(L.length>=9)y=(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:y.toString(16),test_mode:L[0]!==0}},K)}import{SwapKitError as s}from"@swapkit/helpers";function K_(_){if(_==null||_.length<3)throw new s("wallet_ledger_invalid_params",{reason:"Path too short"});if(_.length>10)throw new s("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 B_(_,L,R,f,y=g.JSON){return _.transport.send(b,l.SIGN_SECP256K1,L,y,f,[V.NoError,27012,27264]).then((N)=>{let G=N.slice(-2),w=G[0]*256+G[1],O=P(w);if(w===27264||w===27012)O=`${O} : ${N.slice(0,N.length-2).toString("ascii")}`;let D=null;if(N.length>2)D=N.slice(0,N.length-2);return{error_message:O,return_code:w,signature:D}},K)}function S0(_){if(_.length!==65)throw new s("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 S_(_,L){return _.transport.send(b,l.INS_PUBLIC_KEY_SECP256K1,0,0,L,[V.NoError]).then((R)=>{let f=R.slice(-2),y=f[0]*256+f[1],N=Buffer.from(R.slice(0,65));return{compressed_pk:S0(N),error_message:P(y),pk:N,return_code:y}},K)}function k_(_){if(!_||_.length!==5)throw new s("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 z_(_,L,R,f,y=g.JSON){let N=r.ADD;if(L===1)N=r.INIT;if(L===R)N=r.LAST;return B_(_,N,0,f,y)}function P_(_,L){return _.transport.send(b,l.GET_ADDR_SECP256K1,0,0,L,[V.NoError]).then((R)=>{let f=R.slice(-2),y=f[0]*256+f[1];return{compressed_pk:Buffer.from(R.slice(0,33)),error_message:P(y),pk:"OBSOLETE PROPERTY",return_code:y}},K)}class d{transport;versionResponse;constructor(_){if(!_)throw new m_("wallet_ledger_transport_not_defined");this.transport=_}static serializeHRP(_){if(_==null||_.length<3||_.length>83)throw new m_("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 O_(this.transport),this.versionResponse.return_code!==V.NoError)throw this.versionResponse;switch(this.versionResponse.major){case 1:return K_(_);case 2:return k_(_);default:return Buffer.alloc(0)}}async signGetChunks(_,L){let R=await this.serializePath(_),f=[];f.push(R);for(let y=0;y<L.length;y+=G_){let N=y+G_;if(y>L.length)N=L.length;f.push(L.slice(y,N))}return f}async getVersion(){try{return this.versionResponse=await O_(this.transport),this.versionResponse}catch(_){return K(_)}}appInfo(){return this.transport.send(176,1,0,0).then((_)=>{let L=_.readUInt16BE(_.length-2),R="",f="",y=0,N=0;if(_[0]!==1)return{error_message:"response format ID not recognized",return_code:36865};let G=_[1];R=_.slice(2,2+G).toString("ascii");let w=2+G,O=_[w];w+=1,f=_.slice(w,w+O).toString("ascii"),w+=O;let D=_[w];return w+=1,y=D,N=_[w],{appName:R,appVersion:f,error_message:P(L),flag_onboarded:(N&4)!==0,flag_pin_validated:(N&128)!==0,flag_recovery:(N&1)!==0,flag_signed_mcu_code:(N&2)!==0,flagLen:y,flagsValue:N,return_code:L}},K)}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"),y=4,N=_[y];y+=1;let G=_.slice(y,y+N).toString();y+=N;let w=_[y];y+=1;let O=_.slice(y,y+w).toString("hex");y+=w;let D=_[y];y+=1;let B=_.slice(y,y+D);if(B[D-1]===0)B=_.slice(y,y+D-1);let U=B.toString();return{error_message:P(R),flag:O,mcuVersion:U,return_code:R,seVersion:G,targetId:f}},K)}async publicKey(_){try{let L=await this.serializePath(_);switch(this.versionResponse.major){case 1:return S_(this,L);case 2:{let R=Buffer.concat([d.serializeHRP("thor"),L]);return P_(this,R)}default:return{error_message:"App Version is not supported",return_code:25600}}}catch(L){return K(L)}}async getAddressAndPubKey(_,L,R=!1){try{let f=await this.serializePath(_),y=Buffer.concat([d.serializeHRP(L),f]),N=await this.transport.send(b,l.GET_ADDR_SECP256K1,R?w_.SHOW_ADDRESS_IN_DEVICE:w_.ONLY_RETRIEVE,0,y,[V.NoError]),G=Buffer.from(N.slice(0,33)),w=Buffer.from(N.slice(33,-2)).toString(),O=N.readUInt16BE(N.length-2);return{bech32_address:w,compressed_pk:G,error_message:P(O),return_code:O}}catch(f){return K(f)}}showAddressAndPubKey(_,L){return this.getAddressAndPubKey(_,L,!0)}signSendChunk(_,L,R,f=g.JSON){switch(this.versionResponse.major){case 1:return B_(this,_,L,R,f);case 2:return z_(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),y=[],N;try{y=await this.signGetChunks(_,f),N=await this.signSendChunk(1,y.length,y[0],R)}catch(w){K(w)}let G={error_message:N.error_message,return_code:N.return_code,signature:null};for(let w=1;w<y.length;w+=1)if(G=await this.signSendChunk(1+w,y.length,y[w],R),G.return_code!==V.NoError)break;return{error_message:G.error_message,return_code:G.return_code,signature:G.signature}}}class n{ledgerTimeout=50000;derivationPath=k0.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 A();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 U_("wallet_ledger_connection_error",L)}};validateResponse=(_,L)=>{switch(_){case D_.NoError:return;case D_.LockedDevice:throw new U_("wallet_ledger_device_locked",{message:`Ledger is locked: ${L}`});case D_.TC_NotFound:throw new U_("wallet_ledger_device_not_found");default:break}}}class W_ extends n{pubKey=null;derivationPath;constructor(_=P0.GAIA,L){super(L);this.chain="cosmos",this.derivationPath=z0(_)}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:y}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new V_("wallet_ledger_pubkey_not_found");return this.validateResponse(R,f),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:L,signature:y}]};signAmino=async(_,L)=>{await this.checkOrCreateTransportAndLedger(!0);let R=await this.getAccounts();if(R.findIndex((X)=>X.address===_)===-1)throw new V_("wallet_ledger_address_not_found",{address:_});let y=await import("@cosmjs/amino"),N=y.encodeSecp256k1Signature??y.default?.encodeSecp256k1Signature,G=y.serializeSignDoc??y.default?.serializeSignDoc,w=await import("@cosmjs/crypto"),O=w.Secp256k1Signature??w.default?.Secp256k1Signature,D=G(L),B=await this.ledgerApp.sign(this.derivationPath,D);this.validateResponse(B.return_code,B.error_message);let U=O.fromDer(B.signature).toFixedLength();return{signature:N(R[0].pubkey,U),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 I0,NetworkDerivationPath as c0,SwapKitError as o}from"@swapkit/helpers";import{AbstractSigner as v0}from"ethers";var I_={apex:"apexp",europa:"flex",nanoS:"nanos",nanoSP:"nanosp",nanoX:"nanox",stax:"stax"};async function c_(_,L=fetch){let R=I_[_];if(!R)return null;let f=`https://crypto-assets-service.api.ledger.com/v1/certificates?output=descriptor&public_key_usage=network&target_device=${R}`,y=await L(f);if(!y.ok)return null;let G=(await y.json())[0]?.descriptor,w=G?.signatures?.prod;if(!(G?.data&&w))return null;return`${G.data}${m0(w)}`}async function v_(_,L){await _.send(176,6,12,0,Buffer.from(L,"hex"))}async function l_(_,L,R=fetch){let f=I_[L];if(!f)return null;let y=`https://crypto-assets-service.api.ledger.com/v1/networks?chain_id=${_}&output=chain_id,descriptors,icons`,N=await R(y);if(!N.ok)return null;let w=(await N.json()).find((B)=>B.chain_id===_),O=w?.descriptors?.[f],D=O?.signatures?.prod;if(!(O?.data&&D))return null;return{data:O.data,icon:w?.icons?.[f],signature:D}}function m0(_){return b_(21,Buffer.from(_,"hex")).toString("hex")}function b_(_,L){return Buffer.concat([Buffer.from([_,L.length]),L])}function V0({data:_,signature:L}){let R=Buffer.concat([Buffer.from(_,"hex"),b_(21,Buffer.from(L,"hex"))]),f=Buffer.alloc(2);return f.writeUInt16BE(R.length,0),Buffer.concat([f,R])}async function X_(_,L,R){for(let f=0;f<R.length;f+=255){let y=f===0?1:0,N=R.subarray(f,f+255);await _.send(224,48,y,L,N)}}async function g_(_,L){let R=V0(L);if(await X_(_,0,R),!L.icon)return{iconAccepted:!1};try{return await X_(_,1,Buffer.from(L.icon,"hex")),{iconAccepted:!0}}catch{return await X_(_,0,R),{iconAccepted:!1}}}var l0=27264,x_=Number(q.Arc);function b0(_){return _ instanceof Error&&"statusCode"in _&&_.statusCode===l0}function g0(_){return Object.values(_??{}).some((L)=>Array.isArray(L)&&L.length)}function x0(_){if(typeof _==="number")return _;let L=_.startsWith("0x")?_.slice(2):_;return Number.parseInt(L||"0",16)}class H extends v0{chainId=q.Ethereum;derivationPath="";ledgerApp=null;ledgerTimeout=50000;transport;injectedTransport;arcNetworkRegistered=!1;constructor({provider:_,derivationPath:L=c0.OP,chainId:R=q.Optimism,transport:f}){super(_);this.chainId=R||q.Ethereum,this.derivationPath=typeof L==="string"?L:I0(L),this.injectedTransport=f,Object.defineProperty(this,"provider",{enumerable:!0,value:_||null,writable:!1})}connect=(_)=>new H({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 A();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:y}=await import("@swapkit/toolboxes/evm"),{Signature:N,TypedDataEncoder:G}=await import("ethers");await this.createTransportAndLedger();let{EIP712Domain:w,...O}=L,D=f??G.from(O).primaryType,B;try{B=await this.ledgerApp?.signEIP712Message(this.derivationPath,{domain:_,message:R,primaryType:D,types:{EIP712Domain:y(_),...O}})}catch(U){let X=U instanceof Error&&"statusCode"in U;if(!X||X&&U.statusCode===27013)throw U;let C=G.hashDomain(_).slice(2),Q=G.from(O).hash(R).slice(2);B=await this.ledgerApp?.signEIP712HashedMessage(this.derivationPath,C,Q)}if(!B)throw new o("wallet_ledger_signing_error");return B.r=`0x${B.r}`,B.s=`0x${B.s}`,N.from(B).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,y={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},N=L.from(y).unsignedSerialized.slice(2),{ledgerService:G}=await import("@ledgerhq/hw-app-eth"),w=Number(y.chainId),O=w===x_,D=await G.resolveTransaction(N,{},{erc20:!0,externalPlugins:!0}).catch((Q)=>{if(!O)throw Q;return console.warn("Ledger: could not fetch clear-signing metadata for Arc, signing blind"),null});if(O&&!this.arcNetworkRegistered)await this.registerNetworkOnDevice(w);let B=await this.signWithLedgerApp(N,D,w);if(!B)throw new o("wallet_ledger_signing_error");let{r:U,s:X,v:C}=B;return L.from({...y,signature:{r:`0x${U}`,s:`0x${X}`,v:x0(C)}}).serialized};signWithLedgerApp=async(_,L,R)=>{try{return await this.ledgerApp?.signTransaction(this.derivationPath,_,L)}catch(f){if(!(R===x_&&b0(f)&&g0(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([l_(_,L),c_(L)]);if(!R)return;if(f)await v_(this.transport,f);await g_(this.transport,R),this.arcNetworkRegistered=!0}catch{}}}var h_=(_)=>new H({..._,chainId:q.Arbitrum}),u_=(_)=>new H({..._,chainId:q.Arc}),d_=(_)=>new H({..._,chainId:q.Aurora}),n_=(_)=>new H({..._,chainId:q.Avalanche}),o_=(_)=>new H({..._,chainId:q.Base}),i_=(_)=>new H({..._,chainId:q.Ethereum}),p_=(_)=>new H({..._,chainId:q.Gnosis}),t_=(_)=>new H({..._,chainId:q.Optimism}),a_=(_)=>new H({..._,chainId:q.Polygon}),e_=(_)=>new H({..._,chainId:q.BinanceSmartChain}),r_=(_)=>new H({..._,chainId:q.Monad}),s_=(_)=>new H({..._,chainId:q.XLayer}),_0=(_)=>new H({..._,chainId:q.Berachain});async function L0(_,L){let R=(await import("@ledgerhq/hw-app-near")).default,{Chain:f,NetworkDerivationPath:y,SwapKitError:N}=await import("@swapkit/helpers"),G=L??await A(),w=new R(G),O=(_||y[f.Near]).join("'/").concat("'"),{address:D,publicKey:B}=await w.getAddress(O);return{getAddress(){return Promise.resolve(D)},async getPublicKey(){let{PublicKey:X}=await import("@near-js/crypto");return X.fromString(`ed25519:${B}`)},signDelegateAction(X){return Promise.reject(new N("wallet_ledger_method_not_supported",{method:"signDelegateAction",wallet:"Ledger"}))},signNep413Message(X,C,Q,J,k){return Promise.reject(new N("wallet_ledger_method_not_supported",{method:"signNep413Message",wallet:"Ledger"}))},async signTransaction(X){let{Signature:C,SignedTransaction:Q}=await import("@near-js/transactions");try{let J=await w.signTransaction(X.encode(),O);if(!J)throw Error("Signature undefined");let k=new C({data:J,keyType:0}),c=new Q({signature:k,transaction:X});return[J,c]}catch(J){throw new N("wallet_ledger_signing_error",{error:J})}}}}import{Chain as h0,derivationPathToString as u0,NetworkDerivationPath as d0,SwapKitError as v}from"@swapkit/helpers";class R0{derivationPath;ledgerApp=null;address=null;publicKey=null;injectedTransport;constructor(_,L){this.derivationPath=typeof _==="string"?_:u0(_||d0[h0.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 A(),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 y=await this.ledgerApp.signTransaction(R,f);if(!y?.signature)throw new v("wallet_ledger_signing_error");let N=this.publicKey.length===33?this.publicKey.slice(1):this.publicKey;if(N.length!==32)throw new v("wallet_ledger_signing_error",{error:"Invalid public key length"});let G=new Uint8Array(97);G[0]=0,G.set(y.signature,1),G.set(N,65);let w=Buffer.from(G).toString("base64");return{bytes:Buffer.from(L).toString("base64"),signature:w}}catch(R){throw new v("wallet_ledger_signing_error",{error:R})}}}var y0=(_,L)=>new R0(_,L);import{base64 as F_}from"@scure/base";import{NetworkDerivationPath as o0,SwapKitError as $_}from"@swapkit/helpers";import{base64 as n0}from"@scure/base";import{SwapKitError as I}from"@swapkit/helpers";var __=(_)=>{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 y=_.slice(L+6,_.length);if(y.length===33&&y[0]===0)y=y.slice(1,33);else if(y.length===33)throw new I("wallet_ledger_invalid_signature",{reason:"s too long"});while(y.length<32)y.unshift(0);if(R.length!==32||y.length!==32)throw new I("wallet_ledger_invalid_signature",{reason:"must be 32 bytes each"});return n0.encode(Buffer.concat([R,y]))};function i0(_){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 p0(_){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:i0(f.asset)}))}}})}}class C_ extends n{pubKey=null;derivationPath;constructor(_=o0.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=F_.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:y}=await this.ledgerApp.sign(this.derivationPath,_);if(!this.pubKey)throw new $_("wallet_ledger_pubkey_not_found");return this.validateResponse(R,f),[{pub_key:{type:"tendermint/PubKeySecp256k1",value:this.pubKey},sequence:L,signature:__(y)}]};signAmino=async(_,L)=>{await this.checkOrCreateTransportAndLedger(!0);let R=(await this.getAccounts()).find((B)=>B.address===_);if(!R)throw new $_("wallet_ledger_address_not_found",{address:_});let f=await import("@cosmjs/amino"),y=f.encodeSecp256k1Signature??f.default?.encodeSecp256k1Signature,N=f.serializeSignDoc??f.default?.serializeSignDoc,G=p0(L),{return_code:w,error_message:O,signature:D}=await this.ledgerApp.sign(this.derivationPath,N(G));return this.validateResponse(w,O),{signature:y(R.pubkey,F_.decode(__(D))),signed:L}};getAccounts=async()=>{await this.checkOrCreateTransportAndLedger(!0);let{bech32_address:_,compressed_pk:L}=await this.getAddressAndPubKey();return this.pubKey=F_.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 $_("wallet_ledger_pubkey_not_found");return this.validateResponse(L,R),__(f)}}import{derivationPathToString as t0,NetworkDerivationPath as a0,SwapKitError as i}from"@swapkit/helpers";class N0{derivationPath;ledgerApp=null;ledgerTimeout=50000;injectedTransport;constructor(_,L){this.derivationPath=typeof _==="string"?_:t0(_||a0.TRON),this.injectedTransport=L}checkOrCreateTransportAndLedger=async()=>{if(this.ledgerApp)return;await this.createTransportAndLedger()};createTransportAndLedger=async()=>{let _=this.injectedTransport??await A(),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 f0=(_,L)=>new N0(_,L);import{hex as L_}from"@scure/base";import{derivationPathToString as e0,getWalletFormatFor as M_,SwapKitError as Z_}from"@swapkit/helpers";var G0=["bitcoin-cash","dash","dogecoin","zcash"],T0=({tx:_,inputUtxos:L,btcApp:R,derivationPath:f,chain:y},N)=>{let G=L.map((C)=>{return[R.splitTransaction(C.txHex||"",!G0.includes(y),y==="zcash"),C.index,void 0,void 0]}),w=L_.encode(_.unsignedTx),O=R.splitTransaction(w,!0),D=R.serializeTransactionOutputs(O).toString("hex"),B=M_(f),U=B!=="legacy",X={additionals:B==="bech32"?["bech32"]:[],associatedKeysets:G.map(()=>f),inputs:G,outputScriptHex:D,segwit:U,useTrustedInputForSegwit:U};return R.createPaymentTransaction({...X,...N})},r0=({tx:_,inputUtxos:L,btcApp:R,derivationPaths:f,chain:y},N)=>{if(f.length!==L.length)throw new Z_("wallet_ledger_invalid_params",{message:`Derivation paths count (${f.length}) must match inputs count (${L.length})`});let G=L.map((C)=>{return[R.splitTransaction(C.txHex||"",!G0.includes(y),y==="zcash"),C.index,void 0,void 0]}),w=L_.encode(_.unsignedTx),O=R.splitTransaction(w,!0),D=R.serializeTransactionOutputs(O).toString("hex"),B=M_(f[0]??""),U=B!=="legacy",X={additionals:B==="bech32"?["bech32"]:[],associatedKeysets:f,inputs:G,outputScriptHex:D,segwit:U,useTrustedInputForSegwit:U};return R.createPaymentTransaction({...X,...N})},x=({chain:_,additionalSignParams:L})=>{return(R,f)=>{let y,N=null;async function G(){N||=f??await A();let U=(await import("@ledgerhq/hw-app-btc")).default;return y||=new U({currency:_,transport:N}),y}async function w(){return y||await G()}async function O(){if(!f)await N?.close?.();y=void 0,N=null}let D=typeof R==="string"?R:e0(R),B=M_(D);return{connect:async()=>{await w()},disconnect:O,getAddress:async()=>{let{toCashAddress:U}=await import("@swapkit/toolboxes/utxo"),X=await w(),{bitcoinAddress:C}=await X.getWalletPublicKey(D,{format:B});if(!C)throw new Z_("wallet_ledger_get_address_error",{message:`Cannot get ${_} address from ledger derivation path: ${D}`});return _==="bitcoin-cash"&&B==="legacy"?U(C).replace(/(bchtest:|bitcoincash:)/,""):C},getExtendedPublicKey:async(U="84'/0'/0'",X=76067358)=>{return(await w()).getWalletXpub({path:U,xpubVersion:X})},signPCZT:async(U)=>{if(_!=="zcash")throw new Z_("wallet_ledger_chain_not_supported",{message:"PCZT signing is only supported for Zcash"});let X=await w(),{ZcashTransaction:C,Script:Q}=await import("@swapkit/utxo-signer"),J=U.getGlobal(),k=new C({consensusBranchId:J.consensusBranchId,expiryHeight:J.expiryHeight,lockTime:J.lockTime,version:J.txVersion,versionGroupId:J.versionGroupId}),c=[];for(let Z=0;Z<U.inputsLength;Z++){let $=U.getInput(Z);k.addInput({index:$.index,script:new Uint8Array,sequence:$.sequence??4294967295,txid:$.txid,value:$.value}),c.push({hash:L_.encode(new Uint8Array([...$.txid].reverse())),index:$.index,txHex:s0($,J),value:Number($.value),witnessUtxo:{script:$.scriptPubkey,value:Number($.value)}})}for(let Z=0;Z<U.outputsLength;Z++){let $=U.getOutput(Z);k.addOutput({amount:$.value,script:$.scriptPubkey})}let u=await T0({btcApp:X,chain:_,derivationPath:D,inputUtxos:c,tx:k},{...L,expiryHeight:(()=>{let Z=Buffer.alloc(4);return Z.writeUInt32LE(J.expiryHeight),Z})(),lockTime:J.lockTime}),M=C.fromHex(u,{allowUnknownOutputs:!0}),Y=U.clone();for(let Z=0;Z<M.inputsLength;Z++){let $=M.getInput(Z);if($.script&&$.script.length>0){let E=Q.decode($.script);if(E.length>=2)Y.addSignature(Z,E[1],E[0])}}return Y},signTransaction:async(U,X)=>{let C=await w();return T0({btcApp:C,chain:_,derivationPath:D,inputUtxos:X,tx:U},L)},signTransactionWithMultiplePaths:async(U,X,C)=>{let Q=await w();return r0({btcApp:Q,chain:_,derivationPaths:C,inputUtxos:X,tx:U},L)}}}};function s0(_,L){let R=[],f=(L.txVersion|2147483648)>>>0;R.push(f&255,f>>8&255,f>>16&255,f>>24&255);let y=L.versionGroupId;R.push(y&255,y>>8&255,y>>16&255,y>>24&255),R.push(0);let N=_.index+1;if(N<253)R.push(N);else R.push(253,N&255,N>>8&255);for(let O=0;O<_.index;O++)R.push(0,0,0,0,0,0,0,0),R.push(0);let G=_.value;R.push(Number(G&0xffn),Number(G>>8n&0xffn),Number(G>>16n&0xffn),Number(G>>24n&0xffn),Number(G>>32n&0xffn),Number(G>>40n&0xffn),Number(G>>48n&0xffn),Number(G>>56n&0xffn));let w=_.scriptPubkey;if(w.length<253)R.push(w.length);else R.push(253,w.length&255,w.length>>8&255);for(let O of w)R.push(O);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),L_.encode(new Uint8Array(R))}var w0=x({chain:"bitcoin"}),O0=x({chain:"litecoin"}),B0=x({additionalSignParams:{additionals:["abc"],segwit:!1,sigHashType:65},chain:"bitcoin-cash"}),D0=x({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dogecoin"}),U0=x({additionalSignParams:{additionals:[],segwit:!1,useTrustedInputForSegwit:!1},chain:"dash"}),W0=x({additionalSignParams:{additionals:["zcash","sapling"],expiryHeight:(()=>{let _=Buffer.alloc(4);return _.writeUInt32LE(0),_})(),lockTime:0,segwit:!1,useTrustedInputForSegwit:!1},chain:"zcash"});import _L from"@ledgerhq/hw-app-xrp";import{Chain as LL,derivationPathToString as RL,NetworkDerivationPath as yL}from"@swapkit/helpers";import{encode as X0}from"ripple-binary-codec";var NL=2147483648;function fL(_){let L={};for(let R in _)if(_[R]!==null&&_[R]!==void 0)L[R]=_[R];return L}function TL(_){return new _L(_)}var F0=async(_,L)=>{let R=RL(_||yL[LL.Ripple]),f=L??await A(),y=TL(f),{address:N,publicKey:G}=await y.getAddress(R);async function w(O){let{hashes:D}=await import("xrpl"),U={...fL(O),Flags:O.Flags||NL,SigningPubKey:G.toUpperCase()},X=X0(U),C=await y.signTransaction(R,X),Q=X0({...U,TxnSignature:C});return{hash:D.hashSignedTx(Q),tx_blob:Q}}return{getAddress:()=>N,signTransaction:w}};var S=async({chain:_,derivationPath:L,transport:R})=>{let{match:f}=await import("ts-pattern");return f(_).returnType().with(W.THORChain,()=>Promise.resolve(new C_(L,R))).with(W.Cosmos,()=>Promise.resolve(new W_(L,R))).with(W.Bitcoin,()=>Promise.resolve(w0(L,R))).with(W.BitcoinCash,()=>Promise.resolve(B0(L,R))).with(W.Dash,()=>Promise.resolve(U0(L,R))).with(W.Dogecoin,()=>Promise.resolve(D0(L,R))).with(W.Litecoin,()=>Promise.resolve(O0(L,R))).with(W.Zcash,()=>Promise.resolve(W0(L,R))).with(W.Ripple,()=>Promise.resolve(F0(L,R))).with(W.Tron,()=>Promise.resolve(f0(L,R))).with(W.Sui,()=>Promise.resolve(y0(L,R))).with(W.Near,()=>{return Promise.resolve(L0(L,R))}).with(W.Arbitrum,W.Arc,W.Aurora,W.Avalanche,W.Berachain,W.BinanceSmartChain,W.Ethereum,W.Gnosis,W.Monad,W.Optimism,W.Polygon,W.Base,W.XLayer,async()=>{let{getProvider:y}=await import("@swapkit/toolboxes/evm"),N={derivationPath:L,provider:await y(_),transport:R};return f(_).with(W.BinanceSmartChain,()=>e_(N)).with(W.Avalanche,()=>n_(N)).with(W.Arbitrum,()=>h_(N)).with(W.Arc,()=>u_(N)).with(W.Berachain,()=>_0(N)).with(W.Optimism,()=>t_(N)).with(W.Polygon,()=>a_(N)).with(W.Base,()=>o_(N)).with(W.Aurora,()=>d_(N)).with(W.Gnosis,()=>p_(N)).with(W.Monad,()=>r_(N)).with(W.XLayer,()=>s_(N)).otherwise(()=>i_(N))}).otherwise(()=>{throw new GL("wallet_chain_not_supported",{chain:_,wallet:wL.LEDGER})})};var ML=CL({connect:({addChain:_,supportedChains:L,walletType:R})=>async function(y,N,{address:G,transport:w}={}){let[O]=OL({chains:y,supportedChains:L,walletType:R});if(!O)return!1;let D=N??DL[O],B=await YL({address:G,chain:O,derivationPath:D,transport:w});return _({...B,chain:O,walletType:j_.LEDGER}),!0},directSigningSupport:{[T.Arbitrum]:!0,[T.Arc]:!0,[T.Aurora]:!0,[T.Avalanche]:!0,[T.Base]:!0,[T.Berachain]:!0,[T.BinanceSmartChain]:!0,[T.Ethereum]:!0,[T.Gnosis]:!0,[T.Monad]:!0,[T.Bitcoin]:!0,[T.BitcoinCash]:!0,[T.Cosmos]:!0,[T.Dash]:!0,[T.Dogecoin]:!0,[T.Litecoin]:!0,[T.Near]:!0,[T.Optimism]:!0,[T.Polygon]:!0,[T.Ripple]:!0,[T.Sui]:!0,[T.THORChain]:!0,[T.Tron]:!0,[T.XLayer]:!0},getExtendedPublicKey:JL,name:"connectLedger",supportedChains:[T.Arbitrum,T.Arc,T.Aurora,T.Avalanche,T.Base,T.Berachain,T.BinanceSmartChain,T.Bitcoin,T.BitcoinCash,T.Cosmos,T.Dash,T.Dogecoin,T.Ethereum,T.Gnosis,T.Litecoin,T.Monad,T.Near,T.Optimism,T.Polygon,T.Ripple,T.Sui,T.THORChain,T.XLayer,T.Tron,T.Zcash],walletType:j_.LEDGER}),IR=ZL(ML);function jL(_,L="t"){if(!_?.includes("=:"))return _;let R=_.includes(`:${L}:`)?_.split(`:${L}:`)[0]:_;return R?.substring(0,R.lastIndexOf(":"))}async function JL(_,L,{accountIndex:R}={}){if(![T.BitcoinCash,T.Bitcoin,T.Dash,T.Dogecoin,T.Litecoin,T.Zcash].includes(_))throw new h("wallet_chain_not_supported",{chain:_,wallet:j_.LEDGER});let f=_,y=await S({chain:f,derivationPath:L});if(!y.getExtendedPublicKey)return;let N=Y_({accountIndex:R,chain:f,derivationPath:L}),G=R_(N),w=_===T.Bitcoin||_===T.Litecoin?G:G.replace(/^m\//,""),O=Z0(f).bip32.public;try{let D=await y.getExtendedPublicKey(w,O);return{accountIndex:J_(N),path:G,xpub:D}}finally{await y.disconnect?.()}}async function YL({address:_,chain:L,derivationPath:R,transport:f}){switch(L){case T.BitcoinCash:case T.Bitcoin:case T.Dash:case T.Dogecoin:case T.Litecoin:case T.Zcash:{let Q=function(M={}){return C(M)},{getUtxoToolbox:y}=await import("@swapkit/toolboxes/utxo"),N=L,G=await S({chain:L,derivationPath:R,transport:f}),w=_??await m({chain:L,ledgerClient:G}),O,D;if(L===T.Bitcoin){let{BitcoinPsbtLedger:M}=await import("../chunk-gwx23jdp.js"),Y=M(R,f);O={getAddress:Y.getAddress,signTransaction:Y.signTransaction}}else if(L===T.BitcoinCash||L===T.Dogecoin||L===T.Dash||L===T.Litecoin){let{createLegacyPsbtSigner:M,signLegacyPsbtTransaction:Y}=await import("../chunk-bwf31zxr.js");O=M({address:w,chain:N,legacyClient:G}),D=async(Z)=>{let $=await Y({chain:N,legacyClient:G,tx:Z});return B.broadcastTx($)}}let B=O?await y(N,{signer:O}):y(N),U=D??B.signAndBroadcastTransaction,X=async(M)=>{let Y=M.feeRate||(await B.getFeeRates())[$0.Average],Z=[T.Bitcoin].includes(L)?M.memo:jL(M.memo),{tx:$,inputs:E}=await B.createTransaction({...M,feeRate:Y,fetchTxHex:!0,memo:Z,sender:w}),z=await G.signTransaction($,E);return await B.broadcastTx(z)};async function C({accountIndex:M}={}){if(!G.getExtendedPublicKey)return;let Y=Y_({accountIndex:M,chain:N,derivationPath:R}),Z=R_(Y),$=L===T.Bitcoin||L===T.Litecoin?Z:Z.replace(/^m\//,""),E=Z0(N).bip32.public,z=await G.getExtendedPublicKey($,E);return{accountIndex:J_(Y),path:Z,xpub:z}}async function J({accountIndex:M,index:Y,change:Z=!1}){try{let $=FL({accountIndex:M,chain:N,change:Z,derivationPath:R,index:Y}),E=await S({chain:N,derivationPath:$,transport:f}),z=await m({chain:N,ledgerClient:E});return{accountIndex:J_($),address:z,change:Z,index:Y,path:R_($),pubkey:""}}catch{return}}async function k({accountIndex:M,count:Y,startIndex:Z=0,change:$=!1}){return C0("count",Y),C0("startIndex",Z),(await Promise.all(Array.from({length:Y},(z,p)=>J({accountIndex:M,change:$,index:Z+p})))).filter((z)=>!!z)}let c=XL({chain:N,deriveAddress:J,getBalance:B.getBalance,getUtxos:(M)=>$L(N).getUtxos({address:M,fetchTxHex:!0})});async function u({utxos:M,recipient:Y,assetValue:Z,memo:$,feeRate:E,feeOptionKey:z,changeAddress:p}){if(!M.length)throw new h("wallet_ledger_invalid_params",{message:"No UTXOs provided for multi-address transfer"});let M0=E||(await B.getFeeRates())[z||$0.Fast],y_=$?WL($):null,Q_=[{address:Y,value:Z.getBaseValue("number")}];if(y_)Q_.push({script:y_,value:0});let j0=M.map(({hash:a,index:e,value:N_,txHex:f_,witnessUtxo:T_})=>({hash:a,index:e,txHex:f_,value:N_,witnessUtxo:T_})),{inputs:t,outputs:q_}=B.accumulative({chain:N,feeRate:M0,inputs:j0,outputs:Q_});if(!(t&&q_))throw new h("wallet_ledger_connection_error",{message:"Insufficient balance for multi-address transfer"});let{Transaction:J0}=await import("@swapkit/utxo-signer"),A_=new J0({allowLegacyWitnessUtxo:!0,version:1}),Y0=p||M[0]?.address||Y;UL({chain:N,compiledMemo:y_,inputs:t,outputs:q_,sender:Y0,tx:A_});let Q0=Y_({chain:N,derivationPath:R}),q0=t.map((a)=>{let e=M.find((H_)=>H_.hash===a.hash&&H_.index===a.index),N_=e?.derivationIndex??0,f_=e?.isChange??!1,T_=[...Q0,Number(f_),N_];return R_(T_)});if(!G.signTransactionWithMultiplePaths)throw new h("wallet_ledger_method_not_supported",{method:"signTransactionWithMultiplePaths"});let A0=await G.signTransactionWithMultiplePaths(A_,t,q0);return B.broadcastTx(A0)}return{...B,...c,address:w,deriveAddressAtIndex:J,deriveAddresses:k,getExtendedPublicKey:Q,getExtendedPublicKeyInfo:C,signAndBroadcastTransaction:U,transfer:X,transferFromMultipleAddresses:u}}case T.Ethereum:case T.Avalanche:case T.Arbitrum:case T.Arc:case T.Berachain:case T.Optimism:case T.Polygon:case T.BinanceSmartChain:case T.Base:case T.Aurora:case T.Gnosis:case T.Monad:case T.XLayer:{let{getEvmToolboxAsync:y}=await import("@swapkit/toolboxes/evm"),N=await S({chain:L,derivationPath:R,transport:f}),G=await m({chain:L,ledgerClient:N});return{...await y(L,{signer:N}),address:G}}case T.Cosmos:{let{createSigningStargateClient:y,getDefaultChainFee:N,getMsgSendDenom:G,getCosmosToolbox:w}=await import("@swapkit/toolboxes/cosmos"),O=await S({chain:L,derivationPath:R,transport:f}),D=await m({chain:L,ledgerClient:O});return{...await w(T.Cosmos,{signer:O}),address:D,transfer:async({assetValue:X,recipient:C,memo:Q})=>{if(!X)throw new h("wallet_ledger_invalid_asset");let J={amount:[{amount:X.getBaseValue("string"),denom:G(`u${X.symbol}`).toLowerCase()}],fromAddress:D,toAddress:C},k=await BL(L),c=await y(k,O,"0.007uatom"),{transactionHash:u}=await c.signAndBroadcast(D,[{typeUrl:"/cosmos.bank.v1beta1.MsgSend",value:J}],N(T.Cosmos),Q);return u}}}case T.THORChain:{let y=await S({chain:L,derivationPath:R,transport:f}),{getCosmosToolbox:N}=await import("@swapkit/toolboxes/cosmos"),G=N(L,{signer:y}),w=await m({chain:L,ledgerClient:y}),{sign:O}=y;return{...G,address:w,signMessage:O}}case T.Near:{let{getNearToolbox:y}=await import("@swapkit/toolboxes/near"),N=await S({chain:L,derivationPath:R,transport:f}),G=await N.getAddress();return{...y({signer:N}),address:G}}case T.Ripple:{let{getRippleToolbox:y}=await import("@swapkit/toolboxes/ripple"),N=await S({chain:L,derivationPath:R,transport:f}),G=N.getAddress();return{...y({signer:N}),address:G}}case T.Tron:{let{getTronToolbox:y}=await import("@swapkit/toolboxes/tron"),N=await S({chain:L,derivationPath:R,transport:f}),G=await m({chain:L,ledgerClient:N});return{...y({signer:N}),address:G}}case T.Sui:{let{getSuiToolbox:y}=await import("@swapkit/toolboxes/sui"),N=await S({chain:L,derivationPath:R,transport:f}),G=await m({chain:L,ledgerClient:N});return{...y({signer:N}),address:G}}default:throw new h("wallet_ledger_chain_not_supported",{chain:L})}}export{ML as ledgerWallet,JL as getLedgerExtendedPublicKey,IR as LEDGER_SUPPORTED_CHAINS};
|
|
2
2
|
|
|
3
|
-
//# debugId=
|
|
3
|
+
//# debugId=9BB877265923E57B64756E2164756E21
|
|
4
4
|
//# sourceMappingURL=index.js.map
|