From 17842f566b74b0ac6a40d8141fed66e4f9375f89 Mon Sep 17 00:00:00 2001 From: keystoneGithub Date: Mon, 14 Oct 2024 15:56:00 +0800 Subject: [PATCH 1/6] feat: add keystone apis update: package.josn --- hooks/brc20/useBrc20TransferExecute.ts | 4 +- hooks/inscriptions/useInscriptionExecute.ts | 4 +- index.ts | 1 + keystone/bip32Type.ts | 9 + keystone/btc.ts | 112 ++ keystone/btcMessageSigning.ts | 217 +++ keystone/helper.ts | 108 ++ keystone/index.ts | 4 + keystone/types.ts | 5 + package-lock.json | 1553 ++++++++++++++++++- package.json | 12 +- transactions/bitcoin/context.ts | 308 +++- transactions/bitcoin/contextFactory.ts | 27 + transactions/bitcoin/types.ts | 6 +- transactions/brc20.ts | 12 + transactions/rbf.ts | 4 + types/account.ts | 4 +- utils/bip32.ts | 8 + 18 files changed, 2313 insertions(+), 85 deletions(-) create mode 100644 keystone/bip32Type.ts create mode 100644 keystone/btc.ts create mode 100644 keystone/btcMessageSigning.ts create mode 100644 keystone/helper.ts create mode 100644 keystone/index.ts create mode 100644 keystone/types.ts diff --git a/hooks/brc20/useBrc20TransferExecute.ts b/hooks/brc20/useBrc20TransferExecute.ts index 8728a2d8..f1dda310 100644 --- a/hooks/brc20/useBrc20TransferExecute.ts +++ b/hooks/brc20/useBrc20TransferExecute.ts @@ -5,6 +5,7 @@ import { CoreError } from '../../utils/coreError'; import { Transport } from '../../ledger'; import { TransactionContext } from '../../transactions/bitcoin'; import { BRC20ErrorCode, ExecuteTransferProgressCodes, brc20TransferExecute } from '../../transactions/brc20'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; type Props = { context: TransactionContext; @@ -35,7 +36,7 @@ const useBrc20TransferExecute = (props: Props) => { const [errorCode, setErrorCode] = useState(); const executeTransfer = useCallback( - (executeOptions?: { ledgerTransport?: Transport }) => { + (executeOptions?: { ledgerTransport?: Transport; keystoneTransport?: TransportWebUSB }) => { if (running) return; const innerProps = { @@ -56,6 +57,7 @@ const useBrc20TransferExecute = (props: Props) => { try { const transferGenerator = await brc20TransferExecute(innerProps, context, { ledgerTransport: executeOptions?.ledgerTransport, + keystoneTransport: executeOptions?.keystoneTransport, }); let done = false; diff --git a/hooks/inscriptions/useInscriptionExecute.ts b/hooks/inscriptions/useInscriptionExecute.ts index 3e476a4a..08997fbe 100644 --- a/hooks/inscriptions/useInscriptionExecute.ts +++ b/hooks/inscriptions/useInscriptionExecute.ts @@ -5,6 +5,7 @@ import { CoreError } from '../../utils/coreError'; import { Transport } from '../../ledger'; import { TransactionContext } from '../../transactions/bitcoin'; import { InscriptionErrorCode, inscriptionMintExecute } from '../../transactions/inscriptionMint'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; type Props = { context: TransactionContext; @@ -36,7 +37,7 @@ const useInscriptionExecute = (props: Props) => { const [errorMessage, setErrorMessage] = useState(); const executeMint = useCallback( - (executeOptions?: { ledgerTransport?: Transport }) => { + (executeOptions?: { ledgerTransport?: Transport; keystoneTransport?: TransportWebUSB }) => { if (running || !!revealTransactionId) return; const innerProps = { @@ -60,6 +61,7 @@ const useInscriptionExecute = (props: Props) => { try { const mintResult = await inscriptionMintExecute(innerProps, context, { ledgerTransport: executeOptions?.ledgerTransport, + keystoneTransport: executeOptions?.keystoneTransport, }); setRevealTransactionId(mintResult); diff --git a/index.ts b/index.ts index 2b12753f..0dbc5777 100644 --- a/index.ts +++ b/index.ts @@ -19,6 +19,7 @@ export * from './fungibleTokens'; export * from './gaia'; export * from './hooks'; export * from './ledger'; +export * from './keystone'; export * from './seedVault'; export * from './stacking'; export * from './stacksCollectible'; diff --git a/keystone/bip32Type.ts b/keystone/bip32Type.ts new file mode 100644 index 00000000..c4137360 --- /dev/null +++ b/keystone/bip32Type.ts @@ -0,0 +1,9 @@ +export type Bip32Derivation = { + masterFingerprint: Buffer; + path: string; + pubkey: Buffer; +}; + +export interface TapBip32Derivation extends Bip32Derivation { + leafHashes: Buffer[]; +} diff --git a/keystone/btc.ts b/keystone/btc.ts new file mode 100644 index 00000000..1411d796 --- /dev/null +++ b/keystone/btc.ts @@ -0,0 +1,112 @@ +import * as ecc from '@bitcoinerlab/secp256k1'; +import { initEccLib, Network, networks, payments } from 'bitcoinjs-lib'; +import Bitcoin from '@keystonehq/hw-app-bitcoin'; +import { BIP32Interface } from 'bip32'; +import { bip32, convertZpubToXpub } from '../utils'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; + +const defaultNetwork = networks.bitcoin; + +function getPathForNetwork(bipType: number, network: Network) { + const coinType = network === networks.bitcoin ? 0 : 1; + switch (bipType) { + case 44: + return `m/44'/${coinType}'/0'`; + case 49: + return `m/49'/${coinType}'/0'`; + case 84: + return `m/84'/${coinType}'/0'`; + case 86: + return `m/86'/${coinType}'/0'`; + default: + throw new Error('Unsupported BIP type'); + } +} + +function getNativeSegwitKeyAndAddress(root: BIP32Interface, { subPath = '0/0', network = defaultNetwork }) { + const child = root.derivePath(subPath); + + const { address, pubkey } = payments.p2wpkh({ + pubkey: child.publicKey, + network, + }); + + if (!address) { + throw new Error('Unable to get Native Segwit address'); + } + + if (!pubkey) { + throw new Error('Unable to get Native Segwit public key'); + } + + return { + address, + publicKey: Buffer.from(pubkey).toString('hex'), + }; +} + +function getTaprootPubkeyAndAddress(root: BIP32Interface, { subPath = '0/0', network = defaultNetwork }) { + const child = root.derivePath(subPath); + + const pubkey = child.publicKey; + const tweakedPubkey = ecc.xOnlyPointFromPoint(pubkey); + + const { address } = payments.p2tr({ + internalPubkey: Buffer.from(tweakedPubkey), + network, + }); + + if (!address) { + throw new Error('Unable to get Taproot address'); + } + if (!pubkey) { + throw new Error('Unable to get Taproot public key'); + } + + return { + address, + publicKey: Buffer.from(pubkey).toString('hex'), + }; +} + +interface ImportAddressProps { + transport: TransportWebUSB; + network?: Network; + addressIndex?: number; +} + +export async function importNativeSegwitAccountFromKeystone({ + transport, + network = networks.bitcoin, + addressIndex = 0, +}: ImportAddressProps) { + const bitcoin = new Bitcoin(transport); + + const nativeSegwitZpub = await bitcoin.getExtendedPublicKey(getPathForNetwork(84, network)); + const nativeSegwitXpub = convertZpubToXpub(nativeSegwitZpub); + const nativeSegwitRoot = bip32.fromBase58(nativeSegwitXpub, network); + const nativeSegwit = getNativeSegwitKeyAndAddress(nativeSegwitRoot, { subPath: `0/${addressIndex}`, network }); + + return { + xpub: nativeSegwitXpub, + ...nativeSegwit, + }; +} + +export async function importTaprootAccountFromKeystone({ + transport, + network = networks.bitcoin, + addressIndex = 0, +}: ImportAddressProps) { + initEccLib(ecc); + const bitcoin = new Bitcoin(transport); + + const taprootXpub = await bitcoin.getExtendedPublicKey(getPathForNetwork(86, network)); + const taprootRoot = bip32.fromBase58(taprootXpub, network); + const taproot = getTaprootPubkeyAndAddress(taprootRoot, { subPath: `0/${addressIndex}`, network }); + + return { + xpub: taprootXpub, + ...taproot, + }; +} diff --git a/keystone/btcMessageSigning.ts b/keystone/btcMessageSigning.ts new file mode 100644 index 00000000..a62566c2 --- /dev/null +++ b/keystone/btcMessageSigning.ts @@ -0,0 +1,217 @@ +import { AddressType, getAddressInfo } from 'bitcoin-address-validation'; +import { BTC_SEGWIT_PATH_PURPOSE, BTC_TAPROOT_PATH_PURPOSE } from '../constant'; +import { MessageSigningProtocols, NetworkType, SignedMessage } from '../types'; +import Bitcoin from '@keystonehq/hw-app-bitcoin'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; + +import { Psbt, Transaction } from 'bitcoinjs-lib'; +import { encode } from 'varuint-bitcoin'; +import { bip0322Hash } from '../connect'; +import { getCoinType, getNativeSegwitAccountDataFromXpub, getTaprootAccountDataFromXpub } from './helper'; +import { Bip32Derivation, TapBip32Derivation } from './bip32Type'; + +const encodeVarString = (b: Buffer) => Buffer.concat([encode(b.byteLength), b]); +const DUMMY_INPUT_HASH = Buffer.from('0000000000000000000000000000000000000000000000000000000000000000', 'hex'); +const DUMMY_INPUT_INDEX = 0xffffffff; +const DUMMY_INPUT_SEQUENCE = 0; +type PsbtInput = Parameters[0]; + +const createMessageSignature = async ( + app: Bitcoin, + message: string, + witnessScript: Buffer, + inputArgs: Pick | Pick, + isSegwit: boolean, +): Promise => { + const scriptSig = Buffer.concat([Buffer.from('0020', 'hex'), Buffer.from(bip0322Hash(message), 'hex')]); + const txToSpend = new Transaction(); + txToSpend.version = 0; + txToSpend.addInput(DUMMY_INPUT_HASH, DUMMY_INPUT_INDEX, DUMMY_INPUT_SEQUENCE, scriptSig); + txToSpend.addOutput(witnessScript, 0); + const psbtToSign = new Psbt(); + psbtToSign.setVersion(0); + psbtToSign.addInput({ + hash: txToSpend.getHash(), + index: 0, + sequence: 0, + witnessUtxo: { + script: witnessScript, + value: 0, + }, + ...inputArgs, + }); + psbtToSign.addOutput({ script: Buffer.from('6a', 'hex'), value: 0 }); + const signatures = await app.signPsbt(psbtToSign.toBase64()); + for (const signature of signatures) { + if (isSegwit) { + psbtToSign.updateInput(signature[0], { + partialSig: [signature[1]], + }); + } else { + psbtToSign.updateInput(signature[0], { + tapKeySig: signature[1].signature, + }); + } + } + psbtToSign.finalizeAllInputs(); + const txToSign = psbtToSign.extractTransaction(); + const len = encode(txToSign.ins[0].witness.length); + const result = Buffer.concat([len, ...txToSign.ins[0].witness.map((w) => encodeVarString(w))]); + const signature = result.toString('base64'); + return { + signature, + protocol: MessageSigningProtocols.BIP322, + }; +}; + +const createSegwitBip322Signature = async ({ + message, + app, + xpub, + addressIndex, + networkType, +}: { + message: string; + app: Bitcoin; + xpub?: string; + addressIndex: number; + networkType: NetworkType; +}): Promise => { + const coinType = getCoinType(networkType); + + if (!app.mfp) { + throw new Error('not found keystoneBitcoin mfp'); + } + if (!xpub) { + throw new Error('not found keystone extendedPublicKey'); + } + const { publicKey, witnessScript } = getNativeSegwitAccountDataFromXpub(xpub, addressIndex, networkType); + const inputDerivation: Bip32Derivation = { + path: `${BTC_SEGWIT_PATH_PURPOSE}${coinType}'/0'/0/${addressIndex}`, + pubkey: publicKey, + masterFingerprint: Buffer.from(app.mfp, 'hex'), + }; + return createMessageSignature( + app, + message, + witnessScript, + { + bip32Derivation: [inputDerivation], + }, + true, + ); +}; + +const createTaprootBip322Signature = async ({ + message, + app, + xpub, + addressIndex, + networkType, +}: { + message: string; + app: Bitcoin; + xpub?: string; + addressIndex: number; + networkType: NetworkType; +}): Promise => { + const coinType = getCoinType(networkType); + + if (!app.mfp) { + throw new Error('not found keystoneBitcoin mfp'); + } + if (!xpub) { + throw new Error('not found keystone extendedPublicKey'); + } + + const { internalPubkey, taprootScript } = getTaprootAccountDataFromXpub(xpub, addressIndex, networkType); + const inputDerivation: TapBip32Derivation = { + path: `${BTC_TAPROOT_PATH_PURPOSE}${coinType}'/0'/0/${addressIndex}`, + pubkey: internalPubkey, + masterFingerprint: Buffer.from(app.mfp, 'hex'), + leafHashes: [], + }; + return createMessageSignature( + app, + message, + taprootScript, + { + tapBip32Derivation: [inputDerivation], + tapInternalKey: internalPubkey, + }, + false, + ); +}; + +async function createNativeSegwitECDSA({ + transport, + mfp, + networkType, + message, + addressIndex, +}: { + transport: TransportWebUSB; + mfp: string; + networkType: NetworkType; + message: string; + addressIndex: number; +}): Promise { + const app = new Bitcoin(transport, mfp); + + const coinType = getCoinType(networkType); + const signature = await app.signMessage(message, `${BTC_SEGWIT_PATH_PURPOSE}${coinType}'/0'/0/${addressIndex}`); + return { + signature, + protocol: MessageSigningProtocols.ECDSA, + }; +} + +/** + * This function is used to sign an incoming BIP 322 message with the keystone + * @param transport - the transport object with connected keystone device + * @param networkType - the network type (Mainnet or Testnet) + * @param addressIndex - the index of the account address to sign with + * @param message - the incoming message in string format to sign + * @returns the signature in string (base64) format + * */ +export async function signMessageKeystone({ + transport, + networkType, + addressIndex, + address, + message, + protocol, + mfp, + xpub, +}: { + transport: TransportWebUSB; + networkType: NetworkType; + addressIndex: number; + address: string; + message: string; + protocol?: MessageSigningProtocols; + mfp: string; + xpub: { + btc?: string; + ordinals?: string; + }; +}): Promise { + const app = new Bitcoin(transport, mfp); + const { type } = getAddressInfo(address); + + // if protocol isn't specified, we default to bip322 for both address types + const protocolToSign = protocol || MessageSigningProtocols.BIP322; + if (protocolToSign === MessageSigningProtocols.ECDSA) { + if (type === AddressType.p2tr) { + throw new Error('ECDSA is not supported for Taproot Addresses'); + } + return createNativeSegwitECDSA({ transport, mfp, networkType, message, addressIndex }); + } + if (protocolToSign === MessageSigningProtocols.BIP322) { + if (type === AddressType.p2tr) { + return createTaprootBip322Signature({ message, app, xpub: xpub.ordinals, addressIndex, networkType }); + } + return createSegwitBip322Signature({ message, app, xpub: xpub.btc, addressIndex, networkType }); + } + throw new Error("Couldn't sign Message"); +} diff --git a/keystone/helper.ts b/keystone/helper.ts new file mode 100644 index 00000000..4320c4ec --- /dev/null +++ b/keystone/helper.ts @@ -0,0 +1,108 @@ +export { networks } from 'bitcoinjs-lib'; +import * as ecc from '@bitcoinerlab/secp256k1'; +import Bitcoin from '@keystonehq/hw-app-bitcoin'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; +import { NetworkType } from '../types/network'; +import { initEccLib, networks, payments } from 'bitcoinjs-lib'; +import { bip32 } from '../utils'; + +export async function getMasterFingerPrintFromKeystone(transport: TransportWebUSB): Promise { + const app = new Bitcoin(transport); + const masterFingerPrint = await app.getMasterFingerprint(); + return masterFingerPrint; +} + +/** + * This function is used to get the coin type depending on network type + * @param network - the network type + * @returns coin type in number format + **/ +export const getCoinType = (network: NetworkType) => (network === 'Mainnet' ? 0 : 1); + +/** + This function is used to get the public key from the xpub at a given index + @param xpub - the extended public key - compressed + @param index - the address index + @param network - the network type + @returns the public key in compressed format +**/ +export function getPublicKeyFromXpubAtIndex(xpub: string, index: number, network: NetworkType): Buffer { + const btcNetwork = network === 'Mainnet' ? networks.bitcoin : networks.testnet; + const { publicKey } = bip32.fromBase58(xpub, btcNetwork).derivePath(`0/${index}`); + return publicKey; +} + +/** + * This function is used to get the native segwit account data from the xpub at a given index + * @param xpub - the extended public key - compressed + * @param index - the address index + * @param network - the network type + * @returns the public key in compressed format, the address and the witness script + * */ +export function getNativeSegwitAccountDataFromXpub( + xpub: string, + index: number, + network: NetworkType, +): { + publicKey: Buffer; + address: string; + witnessScript: Buffer; +} { + initEccLib(ecc); + + const publicKey = getPublicKeyFromXpubAtIndex(xpub, index, network); + const btcNetwork = network === 'Mainnet' ? networks.bitcoin : networks.testnet; + const p2wpkh = payments.p2wpkh({ pubkey: publicKey, network: btcNetwork }); + const address = p2wpkh.address; + + if (!address) { + throw new Error('Address is null'); + } + + if (!p2wpkh.output) { + throw new Error('p2wpkh output is null'); + } + + return { + publicKey, + address, + witnessScript: p2wpkh.output, + }; +} + +/** + * This function is used to get the taproot account data from the xpub at a given index + * @param xpub - the extended public key - compressed + * @param index - the address index + * @param network - the network type + * @returns the public key in compressed format, the address, the internal public key and the taproot script + * */ +export function getTaprootAccountDataFromXpub( + xpub: string, + index: number, + network: NetworkType, +): { + publicKey: Buffer; + address: string; + internalPubkey: Buffer; + taprootScript: Buffer; +} { + initEccLib(ecc); + + const publicKey = getPublicKeyFromXpubAtIndex(xpub, index, network); + const p2tr = payments.p2tr({ + internalPubkey: publicKey.slice(1), + network: network === 'Mainnet' ? networks.bitcoin : networks.testnet, + }); + + if (!p2tr.output || !p2tr.address || !p2tr.internalPubkey) { + throw new Error('p2tr output, address or internalPubkey is null'); + } + + return { + publicKey, + address: p2tr.address, + internalPubkey: p2tr.internalPubkey, + taprootScript: p2tr.output, + }; +} diff --git a/keystone/index.ts b/keystone/index.ts new file mode 100644 index 00000000..48df2ae4 --- /dev/null +++ b/keystone/index.ts @@ -0,0 +1,4 @@ +export * from './btc'; +export * from './helper'; +export * from './types'; +export * from './btcMessageSigning'; diff --git a/keystone/types.ts b/keystone/types.ts new file mode 100644 index 00000000..817dad14 --- /dev/null +++ b/keystone/types.ts @@ -0,0 +1,5 @@ +import Bitcoin from '@keystonehq/hw-app-bitcoin'; + +export { URType, UR } from '@keystonehq/keystone-sdk'; + +export { Bitcoin }; diff --git a/package-lock.json b/package-lock.json index cd125d42..d7932584 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,11 @@ "license": "ISC", "dependencies": { "@bitcoinerlab/secp256k1": "^1.0.2", + "@keystonehq/hw-app-base": "^0.1.7", + "@keystonehq/hw-app-bitcoin": "^0.1.1", + "@keystonehq/hw-transport-usb": "^0.1.1", + "@keystonehq/hw-transport-webusb": "^0.5.1", + "@keystonehq/keystone-sdk": "^0.8.0", "@noble/curves": "^1.2.0", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.1.1", @@ -26,6 +31,7 @@ "@stacks/transactions": "6.16.1", "@stacks/wallet-sdk": "6.16.1", "@tanstack/react-query": "^4.29.3", + "@types/bn.js": "^5.1.6", "@zondax/ledger-stacks": "^1.0.4", "async-mutex": "^0.4.0", "axios": "1.7.0", @@ -35,7 +41,7 @@ "bitcoin-address-validation": "^2.2.1", "bitcoinjs-lib": "^6.1.3", "bitcoinjs-message": "^2.2.0", - "bn.js": "^5.1.3", + "bn.js": "^5.2.1", "bs58": "^5.0.0", "bs58check": "^3.0.1", "buffer": "6.0.3", @@ -82,8 +88,80 @@ "peerDependencies": { "bignumber.js": "^9.0.0", "micro-packed": ">0.5.0", - "react": ">18.0.0", - "react-dom": ">18.0.0" + "react": ">18.2.0", + "react-dom": ">18.2.0" + } + }, + "../keystone-sdk-usb/packages/hw-app-base": { + "name": "@keystonehq/hw-app-base", + "version": "0.1.7", + "extraneous": true, + "license": "ISC", + "dependencies": { + "@keystonehq/bc-ur-registry": "0.7.0", + "@keystonehq/hw-transport-error": "workspace:^", + "@keystonehq/hw-transport-usb": "workspace:^", + "@ngraveio/bc-ur": "^1.1.6", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/jest": "^27.5.2", + "@types/node": "^16.18.52", + "eslint": "^8.49.0", + "jest": "^27.4.3", + "typescript": "^5.2.2" + } + }, + "../keystone-sdk-usb/packages/hw-app-bitcoin": { + "name": "@keystonehq/hw-app-bitcoin", + "version": "0.1.0", + "extraneous": true, + "license": "ISC", + "dependencies": { + "@keystonehq/bc-ur-registry": "0.7.0", + "@keystonehq/bc-ur-registry-btc": "0.1.1", + "@keystonehq/hw-app-base": "workspace:^", + "@keystonehq/hw-transport-error": "workspace:^", + "@keystonehq/hw-transport-webusb": "workspace:^", + "@ngraveio/bc-ur": "^1.1.6", + "@scure/bip32": "^1.5.0", + "bech32": "^2.0.0", + "bitcoinjs-lib": "7.0.0-rc.0", + "uuid": "^8.3.2" + }, + "devDependencies": { + "@types/jest": "^27.5.2", + "@types/node": "^16.18.52", + "eslint": "^8.49.0", + "jest": "^27.4.3", + "typescript": "^5.2.2" + } + }, + "../keystone-sdk-usb/packages/hw-transport-webusb": { + "name": "@keystonehq/hw-transport-webusb", + "version": "0.5.0-alpha.0", + "extraneous": true, + "license": "ISC", + "dependencies": { + "@keystonehq/hw-transport-error": "workspace:^", + "@keystonehq/hw-transport-usb": "workspace:^", + "buffer": "^6.0.3" + }, + "devDependencies": { + "@types/node": "^16.18.52", + "@types/w3c-web-usb": "^1.0.6", + "eslint": "^8.49.0", + "typescript": "^5.2.2" + } + }, + ".yalc/@keystonehq/hw-transport-webusb": { + "version": "0.5.0-alpha.0", + "extraneous": true, + "license": "ISC", + "dependencies": { + "@keystonehq/hw-transport-error": "^0.0.2", + "@keystonehq/hw-transport-usb": "^0.1.0-alpha.0", + "buffer": "^6.0.3" } }, "node_modules/@ampproject/remapping": { @@ -169,6 +247,11 @@ "@noble/secp256k1": "^1.7.1" } }, + "node_modules/@bufbuild/protobuf": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", + "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==" + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -602,6 +685,29 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/@ethereumjs/rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", + "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ethereumjs/util": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz", + "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==", + "dependencies": { + "@ethereumjs/rlp": "^5.0.2", + "ethereum-cryptography": "^2.2.1" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -670,48 +776,1029 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@keystonehq/alias-sampling": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@keystonehq/alias-sampling/-/alias-sampling-0.1.2.tgz", + "integrity": "sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w==" + }, + "node_modules/@keystonehq/bc-ur-registry": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.7.0.tgz", + "integrity": "sha512-E6NUd6Y+YYM+IcYGOEXfO9+MU1s63Qjm8brtHftvNhxbdXhGtTYIsa4FQmqZ6q34q91bMkMqUQFsQYPmIxcxfg==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-aptos": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-aptos/-/bc-ur-registry-aptos-0.6.3.tgz", + "integrity": "sha512-NJipiLJpu/pxocCUz8yiQUwmjHtu5XEDhhZHoNFE4M5B9WoZTae+wDCt6dTZD42XlePkPIgLAotBKIKmSHMGRQ==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "bs58check": "^2.1.2", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-arweave": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-arweave/-/bc-ur-registry-arweave-0.5.3.tgz", + "integrity": "sha512-b5OAzhW7HLaOX7OEyWA+Bz+4EJIzCT7c+JXU0TElzpBD5rGo4ylf+StuyV6WnuKx5NV11fv9k2XDyHit26CCLA==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-btc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-btc/-/bc-ur-registry-btc-0.1.1.tgz", + "integrity": "sha512-LdYqItY1Y/M6fWJNE6L0HYZbKL8CGVP6OigG7T/gJ+SWnOGgYXj3at02aV7b9qZ7iNwJPkNrqsIDN5eajQcZjQ==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-cardano": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-cardano/-/bc-ur-registry-cardano-0.3.9.tgz", + "integrity": "sha512-moQtGVjRpzJmHBGxITjljKVE8b2wIC72/9UtuqIfeWWUz/gHWZ4zB0jrz+YgnNwhIizEKmydjtOHLSFrbUQ9VQ==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-cosmos": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-cosmos/-/bc-ur-registry-cosmos-0.5.3.tgz", + "integrity": "sha512-bCmm2LMM4EHiLrjhfkbzfnwTXi4ez56MfwKYke8Z0roeaJbHmr2KkCg6/MePLjeK9PRbY0jKXBmCowMe2DhfhA==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "bs58check": "^2.1.2", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-eth": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.20.1.tgz", + "integrity": "sha512-vQpqhj2DeDI1/xwY3eqj1PWgqqTdg53RgMVBUZUV3O8CSc0nbnH4SaP3cx85KEOO+4Loq6SXHbFJr1egalM2ng==", + "dependencies": { + "@ethereumjs/util": "^9.0.3", + "@keystonehq/bc-ur-registry": "^0.6.4", + "hdkey": "^2.0.1", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-evm": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-evm/-/bc-ur-registry-evm-0.5.3.tgz", + "integrity": "sha512-K3tmY1Y2SDImtSnCPFoASMBNernbN/ZRIIkp8iKegDeyHtaPbzfNIdaEL/wUHVoieTgTOUTwyWZspBvvbgrivw==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "bs58check": "^2.1.2", + "uuid": "^9.0.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@keystonehq/bc-ur-registry-keystone": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-keystone/-/bc-ur-registry-keystone-0.4.3.tgz", + "integrity": "sha512-YTf0p9TYYq9+bfF/wMEE2gbhNiV1S0m31hMwnl+4kn3q1avwlrXZ6h30nANZXD31NQ8hMuLO8x7Ny+0AldmAOA==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4" + } + }, + "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-near": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-near/-/bc-ur-registry-near-0.9.3.tgz", + "integrity": "sha512-+JHxlxwa4pbZXODSZYcIHN42XZZYblNQFp6ogP0yyqct1ayVbAgz/RoYdLrfdNJ4TDvPRClOPDIvZSiUFYCpaw==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "bs58check": "^2.1.2", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-near/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-near/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-near/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-near/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-near/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-sol": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-sol/-/bc-ur-registry-sol-0.9.3.tgz", + "integrity": "sha512-ZjTeInzS4y10tIZlgEN4NGW9W6vTBxzZrM9CaNNeVqTgtyiOB2JvPIW8buxlZUKYj2M5Mu5jPHuAjVRCK6Jm9Q==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "bs58check": "^2.1.2", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-stellar": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-stellar/-/bc-ur-registry-stellar-0.0.4.tgz", + "integrity": "sha512-L/naB3+/386htOrePisgQsTUOIKgIWpXS6FF24TTkyWWr/SHQV3PNOYXOnMto+WKABv6+BbG6AAnsw/7UuONLg==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "bs58check": "^2.1.2", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-sui": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-sui/-/bc-ur-registry-sui-0.3.1.tgz", + "integrity": "sha512-cbxu5AF5xFg9J3p0AXIkp1IMGSSNsaXWRgn22bcnkIlzwMEwmgJR5J/Lg45MIyIpW2p17fKyYqc9yuP0iMALEQ==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "uuid": "^9.0.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@keystonehq/bc-ur-registry-ton": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-ton/-/bc-ur-registry-ton-0.1.2.tgz", + "integrity": "sha512-m36/QODXTbkQQacM8vIopt5RvE/uc/f9f4Jc9VFxsxKWmld3aGwrMsLB1SBSva31kawikOVSMEWXhXlQ07UJhA==", + "dependencies": { + "@keystonehq/bc-ur-registry": "^0.6.4", + "uuid": "^9.0.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/@keystonehq/bc-ur-registry": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", + "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" + } + }, + "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@keystonehq/bc-ur-registry/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/@keystonehq/bc-ur-registry/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/@keystonehq/bc-ur-registry/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@keystonehq/hw-app-base": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@keystonehq/hw-app-base/-/hw-app-base-0.1.7.tgz", + "integrity": "sha512-lo5fsLFzUJGMUdm66xyTJz30Ql19XmhgSf4OjVUtrMIHN41PV94D7R5hueoaikRdBFyYNBTqvQTede9THFliEQ==", + "dependencies": { + "@keystonehq/bc-ur-registry": "0.7.0", + "@keystonehq/hw-transport-error": "^0.0.2", + "@keystonehq/hw-transport-webusb": "^0.4.0", + "@ngraveio/bc-ur": "^1.1.6", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/hw-app-base/node_modules/@keystonehq/hw-transport-webusb": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@keystonehq/hw-transport-webusb/-/hw-transport-webusb-0.4.0.tgz", + "integrity": "sha512-fICp9ptKbOpWHY2AJaJgVH86Tw6GHFsrEgcQt6tmwmtvW63EpQYnJC0lIRBkjfbRqF/EPpVvUsxnAENvHu6new==", + "dependencies": { + "@keystonehq/hw-transport-error": "^0.0.2", + "buffer": "^6.0.3" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@keystonehq/hw-app-bitcoin/-/hw-app-bitcoin-0.1.1.tgz", + "integrity": "sha512-XWNmWSUyPXFUG7X7DJDD3RuMfXYHhsVWluYHCiuOnnwY6sXS4JwGRmXBFxq4Z4FMCIVcEJ8YaW4g8ajMyj0foQ==", + "dependencies": { + "@keystonehq/bc-ur-registry": "0.7.0", + "@keystonehq/bc-ur-registry-btc": "0.1.1", + "@keystonehq/hw-app-base": "^0.1.7", + "@keystonehq/hw-transport-error": "^0.0.2", + "@keystonehq/hw-transport-usb": "^0.1.1", + "@keystonehq/hw-transport-webusb": "^0.5.1", + "@ngraveio/bc-ur": "^1.1.6", + "@scure/bip32": "^1.5.0", + "bech32": "^2.0.0", + "bitcoinjs-lib": "7.0.0-rc.0", + "uuid": "^8.3.2" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/@noble/curves": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.6.0.tgz", + "integrity": "sha512-TlaHRXDehJuRNR9TfZDNQ45mMEd5dwUwmicsafcIX4SsNiqnCHKjE/1alYPd/lDRVhxdhUAlv8uEhMCI5zjIJQ==", + "dependencies": { + "@noble/hashes": "1.5.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/@scure/bip32": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.5.0.tgz", + "integrity": "sha512-8EnFYkqEQdnkuGBVpCzKxyIwDCBLDVj3oiX0EKUFre/tOjL/Hqba1D6n/8RcmaQy4f95qQFrO2A8Sr6ybh4NRw==", + "dependencies": { + "@noble/curves": "~1.6.0", + "@noble/hashes": "~1.5.0", + "@scure/base": "~1.1.7" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/base-x": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.0.tgz", + "integrity": "sha512-sMW3VGSX1QWVFA6l8U62MLKz29rRfpTlYdCqLdpLo1/Yd4zZwSbnUaDfciIAowAqvq7YFnWq9hrhdg1KYgc1lQ==" + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/bip174": { + "version": "3.0.0-rc.1", + "resolved": "https://registry.npmjs.org/bip174/-/bip174-3.0.0-rc.1.tgz", + "integrity": "sha512-+8P3BpSairVNF2Nee6Ksdc1etIjWjBOi/MH0MwKtq9YaYp+S2Hk2uvup0e8hCT4IKlS58nXJyyQVmW92zPoD4Q==", + "dependencies": { + "uint8array-tools": "^0.0.9", + "varuint-bitcoin": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/bitcoinjs-lib": { + "version": "7.0.0-rc.0", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-7.0.0-rc.0.tgz", + "integrity": "sha512-7CQgOIbREemKR/NT2uc3uO/fkEy+6CM0sLxboVVY6bv6DbZmPt3gg5Y/hhWgQFeZu5lfTbtVAv32MIxf7lMh4g==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bech32": "^2.0.0", + "bip174": "^3.0.0-rc.0", + "bs58check": "^4.0.0", + "uint8array-tools": "^0.0.9", + "valibot": "^0.38.0", + "varuint-bitcoin": "^2.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/bs58": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", + "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", + "dependencies": { + "base-x": "^5.0.0" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/bs58check": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-4.0.0.tgz", + "integrity": "sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==", + "dependencies": { + "@noble/hashes": "^1.2.0", + "bs58": "^6.0.0" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/typescript": { + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/uint8array-tools": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.9.tgz", + "integrity": "sha512-9vqDWmoSXOoi+K14zNaf6LBV51Q8MayF0/IiQs3GlygIKUYtog603e6virExkjjFosfJUBI4LhbQK1iq8IG11A==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/valibot": { + "version": "0.38.0", + "resolved": "https://registry.npmjs.org/valibot/-/valibot-0.38.0.tgz", + "integrity": "sha512-RCJa0fetnzp+h+KN9BdgYOgtsMAG9bfoJ9JSjIhFHobKWVWyzM3jjaeNTdpFK9tQtf3q1sguXeERJ/LcmdFE7w==", + "peerDependencies": { + "typescript": ">=5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/varuint-bitcoin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-2.0.0.tgz", + "integrity": "sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==", + "dependencies": { + "uint8array-tools": "^0.0.8" + } + }, + "node_modules/@keystonehq/hw-app-bitcoin/node_modules/varuint-bitcoin/node_modules/uint8array-tools": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.8.tgz", + "integrity": "sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==", "engines": { - "node": ">=6.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" + "node_modules/@keystonehq/hw-transport-error": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@keystonehq/hw-transport-error/-/hw-transport-error-0.0.2.tgz", + "integrity": "sha512-j6rOJU277Cmq9oBiFjtVHJhUZ/gELGYGZMUXBlAom1WyK8pNrD3+I8kCVGp5Ss5oB+Zqo7Az5xCx/z+0i+Y40A==" + }, + "node_modules/@keystonehq/hw-transport-usb": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@keystonehq/hw-transport-usb/-/hw-transport-usb-0.1.1.tgz", + "integrity": "sha512-8B5OxLiwI/HHZSlQKtDWQ0AVXOxfYhI37So1/uBwLVSvpKqGC6FN6gG7vIkmZjMs7w5A1ARac5ejRuLzoCQumg==", + "dependencies": { + "@keystonehq/hw-transport-error": "^0.0.2", + "buffer": "^6.0.3" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, + "node_modules/@keystonehq/hw-transport-webusb": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@keystonehq/hw-transport-webusb/-/hw-transport-webusb-0.5.1.tgz", + "integrity": "sha512-0Dosdbp3IJw5z6Qr8jUusEKl2E2dNCuLxG+hRGfIkDLwMSXUdc/T4QBODlcJZxdfS0rGN+E1eNv46qxFwy2XAA==", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@keystonehq/hw-transport-error": "^0.0.2", + "@keystonehq/hw-transport-usb": "^0.1.1", + "buffer": "^6.0.3" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true + "node_modules/@keystonehq/keystone-sdk": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@keystonehq/keystone-sdk/-/keystone-sdk-0.8.0.tgz", + "integrity": "sha512-9lzjwwWLrJEVOraIZdwD8HIVNnIxWVJMd8H/JoL9288Ist2gLcV7KstGfS0HyxARwc8pmWEXFXR52GP2gSOR0g==", + "dependencies": { + "@bufbuild/protobuf": "^1.2.0", + "@keystonehq/bc-ur-registry": "^0.7.0", + "@keystonehq/bc-ur-registry-aptos": "^0.6.3", + "@keystonehq/bc-ur-registry-arweave": "^0.5.3", + "@keystonehq/bc-ur-registry-btc": "^0.1.1", + "@keystonehq/bc-ur-registry-cardano": "^0.3.9", + "@keystonehq/bc-ur-registry-cosmos": "^0.5.3", + "@keystonehq/bc-ur-registry-eth": "^0.20.1", + "@keystonehq/bc-ur-registry-evm": "^0.5.3", + "@keystonehq/bc-ur-registry-keystone": "^0.4.3", + "@keystonehq/bc-ur-registry-near": "^0.9.3", + "@keystonehq/bc-ur-registry-sol": "^0.9.3", + "@keystonehq/bc-ur-registry-stellar": "^0.0.4", + "@keystonehq/bc-ur-registry-sui": "^0.3.1", + "@keystonehq/bc-ur-registry-ton": "^0.1.2", + "@ngraveio/bc-ur": "^1.1.6", + "bs58check": "^3.0.1", + "pako": "^2.1.0", + "ripple-binary-codec": "^1.4.3", + "uuid": "^9.0.0" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node_modules/@keystonehq/keystone-sdk/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, "node_modules/@ledgerhq/devices": { @@ -745,6 +1832,20 @@ "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz", "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==" }, + "node_modules/@ngraveio/bc-ur": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@ngraveio/bc-ur/-/bc-ur-1.1.13.tgz", + "integrity": "sha512-j73akJMV4+vLR2yQ4AphPIT5HZmxVjn/LxpL7YHoINnXoH6ccc90Zzck6/n6a3bCXOVZwBxq+YHwbAKRV+P8Zg==", + "dependencies": { + "@keystonehq/alias-sampling": "^0.1.1", + "assert": "^2.0.0", + "bignumber.js": "^9.0.1", + "cbor-sync": "^1.0.4", + "crc": "^3.8.0", + "jsbi": "^3.1.5", + "sha.js": "^2.4.11" + } + }, "node_modules/@noble/curves": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", @@ -1401,9 +2502,9 @@ } }, "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", "dependencies": { "@types/node": "*" } @@ -2294,6 +3395,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } + }, "node_modules/assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", @@ -2414,6 +3527,14 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "engines": { + "node": ">=0.6" + } + }, "node_modules/bignumber.js": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", @@ -2770,12 +3891,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2806,6 +3933,11 @@ } ] }, + "node_modules/cbor-sync": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cbor-sync/-/cbor-sync-1.0.4.tgz", + "integrity": "sha512-GWlXN4wiz0vdWWXBU71Dvc1q3aBo0HytqwAZnXF1wOwjqNnDWA1vZ1gDMFLlqohak31VQzmhiYfiCX5QSSfagA==" + }, "node_modules/chai": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", @@ -3024,6 +4156,37 @@ "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", "dev": true }, + "node_modules/crc": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", + "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==", + "dependencies": { + "buffer": "^5.1.0" + } + }, + "node_modules/crc/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -3125,6 +4288,11 @@ } } }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" + }, "node_modules/deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -3143,12 +4311,28 @@ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -3338,6 +4522,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", @@ -3869,6 +5072,39 @@ "node": ">=0.10.0" } }, + "node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/ethereum-cryptography/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -4113,9 +5349,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -4154,13 +5393,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4309,6 +5553,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -4335,12 +5580,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4350,7 +5594,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -4405,6 +5648,73 @@ "minimalistic-assert": "^1.0.1" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hdkey": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-2.1.0.tgz", + "integrity": "sha512-i9Wzi0Dy49bNS4tXXeGeu0vIcn86xXdPQUpEYg+SO1YiO8HtomjmmRMaRyqL0r59QfcD4PfVbSF3qmsWFwAemA==", + "dependencies": { + "bs58check": "^2.1.2", + "ripemd160": "^2.0.2", + "safe-buffer": "^5.1.1", + "secp256k1": "^4.0.0" + } + }, + "node_modules/hdkey/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/hdkey/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/hdkey/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/hdkey/node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" + }, + "node_modules/hdkey/node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -4735,6 +6045,21 @@ "node": ">=0.10.0" } }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -4985,6 +6310,11 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbi": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/jsbi/-/jsbi-3.2.5.tgz", + "integrity": "sha512-aBE4n43IPvjaddScbvWRA2YlTzKEynHzu7MqOyTipdHucf/VxS63ViCjxYRg86M8Rxwbt/GfzHl1kKERkt45fQ==" + }, "node_modules/json-bigint": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", @@ -5687,7 +7017,6 @@ "version": "4.6.1", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", - "dev": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -5736,11 +7065,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, "engines": { "node": ">= 0.4" } @@ -5749,7 +7092,6 @@ "version": "4.1.4", "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.4", @@ -5886,6 +7228,11 @@ "node": ">=6" } }, + "node_modules/pako": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", + "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6181,9 +7528,9 @@ } }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -6193,16 +7540,16 @@ } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "peer": true, "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-is": { @@ -6384,6 +7731,42 @@ "node": ">=8" } }, + "node_modules/ripple-address-codec": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.3.1.tgz", + "integrity": "sha512-Qa3+9wKVvpL/xYtT6+wANsn0A1QcC5CT6IMZbRJZ/1lGt7gmwIfsrCuz1X0+LCEO7zgb+3UT1I1dc0k/5dwKQQ==", + "dependencies": { + "base-x": "^3.0.9", + "create-hash": "^1.1.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/ripple-address-codec/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ripple-binary-codec": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.11.0.tgz", + "integrity": "sha512-g7+gs3T+NfoeW6vIq5dcN0CkIT4t/zwRzFxz8X2RzfbrWRnewPUKqQbmBgs05tXLX5NuWPaneiaAVpFpYBcdfw==", + "dependencies": { + "assert": "^2.0.0", + "big-integer": "^1.6.48", + "buffer": "6.0.3", + "create-hash": "^1.2.0", + "decimal.js": "^10.2.0", + "ripple-address-codec": "^4.3.1" + }, + "engines": { + "node": ">= 10" + } + }, "node_modules/rollup": { "version": "4.17.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", @@ -6493,9 +7876,9 @@ } }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -6574,6 +7957,22 @@ "randombytes": "^2.1.0" } }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/sha.js": { "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", diff --git a/package.json b/package.json index e0e02750..461d77a2 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,11 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.0.2", + "@keystonehq/hw-app-base": "^0.1.7", + "@keystonehq/hw-app-bitcoin": "^0.1.1", + "@keystonehq/hw-transport-usb": "^0.1.1", + "@keystonehq/hw-transport-webusb": "^0.5.1", + "@keystonehq/keystone-sdk": "^0.8.0", "@noble/curves": "^1.2.0", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.1.1", @@ -36,6 +41,7 @@ "@stacks/transactions": "6.16.1", "@stacks/wallet-sdk": "6.16.1", "@tanstack/react-query": "^4.29.3", + "@types/bn.js": "^5.1.6", "@zondax/ledger-stacks": "^1.0.4", "async-mutex": "^0.4.0", "axios": "1.7.0", @@ -45,7 +51,7 @@ "bitcoin-address-validation": "^2.2.1", "bitcoinjs-lib": "^6.1.3", "bitcoinjs-message": "^2.2.0", - "bn.js": "^5.1.3", + "bn.js": "^5.2.1", "bs58": "^5.0.0", "bs58check": "^3.0.1", "buffer": "6.0.3", @@ -104,7 +110,7 @@ "peerDependencies": { "bignumber.js": "^9.0.0", "micro-packed": ">0.5.0", - "react": ">18.0.0", - "react-dom": ">18.0.0" + "react": ">18.2.0", + "react-dom": ">18.2.0" } } diff --git a/transactions/bitcoin/context.ts b/transactions/bitcoin/context.ts index f701253c..9940db9d 100644 --- a/transactions/bitcoin/context.ts +++ b/transactions/bitcoin/context.ts @@ -1,4 +1,5 @@ import { base64, hex } from '@scure/base'; +import * as bitcoin from 'bitcoinjs-lib'; import * as btc from '@scure/btc-signer'; import { Mutex } from 'async-mutex'; import { isAxiosError } from 'axios'; @@ -9,12 +10,15 @@ import { UtxoCache } from '../../api/utxoCache'; import { BTC_SEGWIT_PATH_PURPOSE, BTC_TAPROOT_PATH_PURPOSE } from '../../constant'; import { Transport } from '../../ledger/types'; import { SeedVault } from '../../seedVault'; -import { type NetworkType, type UTXO } from '../../types'; +import { Account, type NetworkType, type UTXO } from '../../types'; import { bip32 } from '../../utils/bip32'; import { getBitcoinDerivationPath, getSegwitDerivationPath, getTaprootDerivationPath } from '../../wallet'; import { ExtendedUtxo } from './extendedUtxo'; import { CompilationOptions, SupportedAddressType } from './types'; import { areByteArraysEqual } from './utils'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; +import { PartialSignature } from '@keystonehq/hw-app-bitcoin/lib/psbt'; +import Bitcoin from '@keystonehq/hw-app-bitcoin'; export type InputToSign = { address: string; @@ -24,6 +28,8 @@ export type InputToSign = { export type SignOptions = { ledgerTransport?: Transport; + keystoneTransport?: TransportWebUSB; + selectedAccount?: Account; inputsToSign?: InputToSign[]; }; @@ -229,6 +235,30 @@ export abstract class AddressContext { return signIndexes; } + protected getChangeIndexes( + transaction: btc.Transaction, + witnessScript?: Uint8Array, + ): Record { + const changeIndexes: Record = {}; + + // This is the internal path used by the wallet to sign transactions + for (let i = 0; i < transaction.outputsLength; i++) { + const output = transaction.getOutput(i); + + const witnessLockingScript = output.witnessScript; + const matchesWitnessUtxo = areByteArraysEqual(witnessLockingScript, witnessScript); + + const nonWitnessLockingScript = output?.script || undefined; + const matchesNonWitnessUtxo = areByteArraysEqual(nonWitnessLockingScript, witnessScript); + + if (matchesWitnessUtxo || matchesNonWitnessUtxo) { + changeIndexes[i] = undefined; + } + } + + return changeIndexes; + } + // eslint-disable-next-line @typescript-eslint/no-unused-vars -- used by subclasses async prepareInputs(_transaction: btc.Transaction, _options: SignOptions): Promise { // no-op @@ -431,6 +461,138 @@ export class LedgerP2wpkhAddressContext extends P2wpkhAddressContext { } } +export class KeystoneP2wpkhAddressContext extends P2wpkhAddressContext { + async addInput(transaction: btc.Transaction, extendedUtxo: ExtendedUtxo, options?: CompilationOptions) { + super.addInput(transaction, extendedUtxo, options); + + const utxoTxnHex = await extendedUtxo.hex; + + if (utxoTxnHex) { + const nonWitnessUtxo = Buffer.from(utxoTxnHex, 'hex'); + + transaction.updateInput(transaction.inputsLength - 1, { + nonWitnessUtxo, + }); + } + } + + async prepareInputs(transaction: btc.Transaction, options: SignOptions): Promise { + const { selectedAccount } = options; + + const masterFingerPrint = selectedAccount?.masterPubKey; + + if (!masterFingerPrint) { + throw new Error('masterFingerPrint is required'); + } + + const inputDerivation = [ + Buffer.from(this._publicKey, 'hex'), + { + path: btc.bip32Path(this.getDerivationPath()), + fingerprint: parseInt(masterFingerPrint, 16), + }, + ] as [Uint8Array, { path: number[]; fingerprint: number }]; + + const signIndexes = this.getSignIndexes(transaction, options, this._p2wpkh.script); + + for (const i of Object.keys(signIndexes)) { + const input = transaction.getInput(+i); + if (input.bip32Derivation?.some((derivation) => areByteArraysEqual(derivation[0], inputDerivation[0]))) { + continue; + } + + transaction.updateInput(+i, { + bip32Derivation: [inputDerivation], + }); + } + + const changeIndexes = this.getChangeIndexes(transaction, this._p2wpkh.script); + + for (const i of Object.keys(changeIndexes)) { + const output = transaction.getOutput(+i); + if (output.bip32Derivation?.some((derivation) => areByteArraysEqual(derivation[0], inputDerivation[0]))) { + continue; + } + + transaction.updateOutput(+i, { + bip32Derivation: [inputDerivation], + }); + } + } + + async signInputs(transaction: btc.Transaction, options: SignOptions): Promise { + const signIndexes = this.getSignIndexes(transaction, options, this._p2wpkh.script); + + if (Object.keys(signIndexes).length === 0) { + return; + } + + const { keystoneTransport } = options; + if (!keystoneTransport) { + throw new Error('keystoneTransport is required for Keystone signing'); + } + + const keystoneBitcoin = new Bitcoin(keystoneTransport); + + const psbt = transaction.toPSBT(0); + const psbtBase64 = base64.encode(psbt); + + const cleanedPsbtBase64 = this.cleanPsbtInputSig(psbtBase64); + + const signatures = await keystoneBitcoin.signPsbt(cleanedPsbtBase64); + + const cleanedSignatures = this.cleanPsbtSig(psbtBase64, signatures); + + for (const signature of cleanedSignatures) { + transaction.updateInput(signature[0], { + partialSig: [[signature[1].pubkey, signature[1].signature]], + }); + } + } + + cleanPsbtInputSig(psbt: string) { + const path = 86; + + const psbtObj = bitcoin.Psbt.fromBase64(psbt); + const clearInputs = psbtObj.data.inputs + .map((it, index) => { + const hasPath = [it.tapBip32Derivation, it.bip32Derivation] + .filter((f) => f) + .some((d) => d?.[0]?.path.startsWith(`m/${path}`)); + if (hasPath) { + return null; + } + return index; + }) + .filter((it) => it); + for (const index of Object.values(clearInputs)) { + psbtObj.data.inputs[index!].partialSig = []; + } + + return psbtObj.toBase64(); + } + + cleanPsbtSig(psbtBase64: string, signatures: [number, PartialSignature][]) { + const results = []; + const path = 84; + + const tx = bitcoin.Psbt.fromBase64(psbtBase64); + for (let i = 0; i < tx.txInputs.length; i++) { + const input = tx.data.inputs[i]; + + const hasPath = [input.tapBip32Derivation, input.bip32Derivation] + .filter((it) => it) + .some((d) => d?.[0]?.path?.startsWith(`m/${path}`)); + + if (!hasPath) { + continue; + } + results.push(signatures[i]); + } + return results; + } +} + export class P2trAddressContext extends AddressContext { protected _p2tr!: ReturnType; @@ -589,6 +751,150 @@ export class LedgerP2trAddressContext extends P2trAddressContext { } } +export class KeystoneP2trAddressContext extends P2trAddressContext { + async addInput(transaction: btc.Transaction, extendedUtxo: ExtendedUtxo, options?: CompilationOptions) { + super.addInput(transaction, extendedUtxo, options); + + const utxoTxnHex = await extendedUtxo.hex; + + if (utxoTxnHex) { + const nonWitnessUtxo = Buffer.from(utxoTxnHex, 'hex'); + + transaction.updateInput(transaction.inputsLength - 1, { + nonWitnessUtxo, + }); + } + } + + async prepareInputs(transaction: btc.Transaction, options: SignOptions): Promise { + const { selectedAccount } = options; + + const masterFingerPrint = selectedAccount?.masterPubKey; + + if (!masterFingerPrint) { + throw new Error('masterFingerPrint is required'); + } + + const inputDerivation = [ + this._p2tr.tapInternalKey, + { + hashes: [], + der: { + path: btc.bip32Path(this.getDerivationPath()), + fingerprint: parseInt(masterFingerPrint, 16), + }, + }, + ] as [ + Uint8Array, + { + hashes: Uint8Array[]; + der: { + fingerprint: any; + path: any; + }; + }, + ]; + + const signIndexes = this.getSignIndexes(transaction, options, this._p2tr.script); + + for (const i of Object.keys(signIndexes)) { + const input = transaction.getInput(+i); + if (input.bip32Derivation?.some((derivation) => areByteArraysEqual(derivation[0], inputDerivation[0]))) { + continue; + } + + transaction.updateInput(+i, { + tapBip32Derivation: [inputDerivation], + }); + } + + const changeIndexes = this.getChangeIndexes(transaction, this._p2tr.script); + + for (const i of Object.keys(changeIndexes)) { + const output = transaction.getOutput(+i); + if (output.tapBip32Derivation?.some((derivation) => areByteArraysEqual(derivation[0], inputDerivation[0]))) { + continue; + } + + transaction.updateOutput(+i, { + tapBip32Derivation: [inputDerivation], + }); + } + } + + async signInputs(transaction: btc.Transaction, options: SignOptions): Promise { + const signIndexes = this.getSignIndexes(transaction, options, this._p2tr.script); + + if (Object.keys(signIndexes).length === 0) { + return; + } + + const { keystoneTransport } = options; + if (!keystoneTransport) { + throw new Error('keystoneTransport is required for Keystone signing'); + } + + const keystoneBitcoin = new Bitcoin(keystoneTransport); + const psbt = transaction.toPSBT(0); + const psbtBase64 = base64.encode(psbt); + + const cleanedPsbtBase64 = this.cleanPsbtInputSig(psbtBase64); + + const signatures = await keystoneBitcoin.signPsbt(cleanedPsbtBase64); + + const cleanedSignatures = this.cleanPsbtSig(psbtBase64, signatures); + + for (const signature of cleanedSignatures) { + transaction.updateInput(signature[0], { + tapKeySig: signature[1].signature, + }); + } + } + + cleanPsbtInputSig(psbt: string) { + const path = 86; + + const psbtObj = bitcoin.Psbt.fromBase64(psbt); + const clearInputs = psbtObj.data.inputs + .map((it, index) => { + const hasPath = [it.tapBip32Derivation, it.bip32Derivation] + .filter((f) => f) + .some((d) => d?.[0]?.path.startsWith(`m/${path}`)); + if (hasPath) { + return null; + } + return index; + }) + .filter((it) => it); + for (const index of Object.values(clearInputs)) { + psbtObj.data.inputs[index!].partialSig = []; + } + + return psbtObj.toBase64(); + } + + cleanPsbtSig(psbt: string, signatures: [number, PartialSignature][]) { + const results = []; + const path = 86; + + const tx = bitcoin.Psbt.fromBase64(psbt); + + for (let i = 0; i < tx.txInputs.length; i++) { + const input = tx.data.inputs[i]; + + const hasPath = [input.tapBip32Derivation, input.bip32Derivation] + .filter((it) => it) + .some((d) => d?.[0]?.path?.startsWith(`m/${path}`)); + + if (!hasPath) { + continue; + } + results.push(signatures[i]); + } + return results; + } +} + export class TransactionContext { private _paymentAddress!: AddressContext; diff --git a/transactions/bitcoin/contextFactory.ts b/transactions/bitcoin/contextFactory.ts index 807099ac..4816a49f 100644 --- a/transactions/bitcoin/contextFactory.ts +++ b/transactions/bitcoin/contextFactory.ts @@ -5,6 +5,8 @@ import { SeedVault } from '../../seedVault'; import type { Account, AccountType, NetworkType } from '../../types'; import { AddressContext, + KeystoneP2trAddressContext, + KeystoneP2wpkhAddressContext, LedgerP2trAddressContext, LedgerP2wpkhAddressContext, P2shAddressContext, @@ -60,6 +62,31 @@ const createAddressContext = ({ } else { throw new Error(`Ledger support for this type of address not implemented: ${type}`); } + } else if (accountType === 'keystone') { + if (type === AddressType.p2wpkh) { + return new KeystoneP2wpkhAddressContext( + address, + publicKey, + network, + accountIndex, + seedVault, + utxoCache, + esploraApiProvider, + ); + } + if (type === AddressType.p2tr) { + return new KeystoneP2trAddressContext( + address, + publicKey, + network, + accountIndex, + seedVault, + utxoCache, + esploraApiProvider, + ); + } else { + throw new Error(`Keystone support for this type of address not implemented: ${type}`); + } } if (type === AddressType.p2sh) { diff --git a/transactions/bitcoin/types.ts b/transactions/bitcoin/types.ts index f99abc6b..00edd970 100644 --- a/transactions/bitcoin/types.ts +++ b/transactions/bitcoin/types.ts @@ -1,7 +1,8 @@ import * as btc from '@scure/btc-signer'; import { Transport } from '../../ledger'; -import { Artifact, RareSatsType } from '../../types'; +import { Account, Artifact, RareSatsType } from '../../types'; import { ExtendedDummyUtxo, ExtendedUtxo } from './extendedUtxo'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; type ScriptOpArray = Parameters[0]; @@ -77,7 +78,9 @@ export type TransactionOptions = { export type CompilationOptions = { rbfEnabled?: boolean; + selectedAccount?: Account; ledgerTransport?: Transport; + keystoneTransport?: TransportWebUSB; }; export type TransactionSummary = { @@ -94,6 +97,7 @@ export type TransactionSummary = { export type PSBTCompilationOptions = { ledgerTransport?: Transport; + keystoneTransport?: TransportWebUSB; finalize?: boolean; }; diff --git a/transactions/brc20.ts b/transactions/brc20.ts index 46d23a37..9aa91b2e 100644 --- a/transactions/brc20.ts +++ b/transactions/brc20.ts @@ -8,12 +8,14 @@ import { isValidTick } from '../utils'; import { CoreError } from '../utils/coreError'; import { ActionType, EnhancedTransaction, TransactionContext } from './bitcoin'; import { estimateVSize } from './bitcoin/utils/transactionVsizeEstimator'; +import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; // This is the value of the inscription output, which the final recipient of the inscription will receive. const FINAL_SATS_VALUE = 1000; export type SignOptions = { ledgerTransport?: Transport | undefined; + keystoneTransport?: TransportWebUSB | undefined; }; export enum BRC20ErrorCode { @@ -27,6 +29,7 @@ export enum BRC20ErrorCode { USER_REJECTED = 'USER_REJECTED', DEVICE_LOCKED = 'DEVICE_LOCKED', GENERAL_LEDGER_ERROR = 'GENERAL_LEDGER_ERROR', + GENERAL_KEYSTONE_ERROR = 'GENERAL_KEYSTONE_ERROR', } type EstimateProps = { @@ -237,12 +240,18 @@ export async function* brc20TransferExecute( if (options.ledgerTransport && e instanceof Error && e.message.includes('denied by the user')) { throw new CoreError('User rejected transaction', BRC20ErrorCode.USER_REJECTED); } + if (options.keystoneTransport && e instanceof Error && e.message.includes('UR parsing rejected')) { + throw new CoreError('User rejected transaction', BRC20ErrorCode.USER_REJECTED); + } if (e instanceof Error && e.name === 'LockedDeviceError') { throw new CoreError('Ledger device locked', BRC20ErrorCode.DEVICE_LOCKED); } if (e instanceof Error && e.name === 'TransportStatusError') { throw new CoreError('Ledger error', BRC20ErrorCode.GENERAL_LEDGER_ERROR); } + if (e instanceof Error && e.name === 'TransportError') { + throw new CoreError('Keystone error', BRC20ErrorCode.GENERAL_KEYSTONE_ERROR); + } throw e; } @@ -276,6 +285,9 @@ export async function* brc20TransferExecute( if (options.ledgerTransport && e instanceof Error && e.message.includes('denied by the user')) { throw new CoreError('User rejected transaction', BRC20ErrorCode.USER_REJECTED); } + if (options.keystoneTransport && e instanceof Error && e.message.includes('UR parsing rejected')) { + throw new CoreError('User rejected transaction', BRC20ErrorCode.USER_REJECTED); + } throw e; } diff --git a/transactions/rbf.ts b/transactions/rbf.ts index b649ed6c..62501156 100644 --- a/transactions/rbf.ts +++ b/transactions/rbf.ts @@ -81,6 +81,8 @@ const isTransactionRbfEnabled = (transaction: BtcTransactionData, wallet: RBFPro p2btc = btc.p2sh(p2wpkh, network); } else if (wallet.accountType === 'ledger') { p2btc = btc.p2wpkh(publicKeyBuff, network); + } else if (wallet.accountType === 'keystone') { + p2btc = btc.p2wpkh(publicKeyBuff, network); } else { throw new Error('Unrecognised account type'); } @@ -161,6 +163,8 @@ class RbfTransaction { p2btc = btc.p2sh(p2wpkh, network); } else if (options.accountType === 'ledger') { p2btc = btc.p2wpkh(publicKeyBuff, network); + } else if (options.accountType === 'keystone') { + p2btc = btc.p2wpkh(publicKeyBuff, network); } else { throw new Error('Unrecognised account type'); } diff --git a/types/account.ts b/types/account.ts index 92add39d..ffb55d91 100644 --- a/types/account.ts +++ b/types/account.ts @@ -1,4 +1,4 @@ -export type AccountType = 'ledger' | 'software'; +export type AccountType = 'ledger' | 'keystone' | 'software'; export interface Account { id: number; @@ -9,6 +9,8 @@ export interface Account { stxPublicKey: string; btcPublicKey: string; ordinalsPublicKey: string; + btcXpub?: string; + ordinalsXpub?: string; bnsName?: string; accountType?: AccountType; accountName?: string; diff --git a/utils/bip32.ts b/utils/bip32.ts index 1cb1be8c..b48559c9 100644 --- a/utils/bip32.ts +++ b/utils/bip32.ts @@ -1,5 +1,13 @@ +import b58 from 'bs58check'; import * as ecc from '@bitcoinerlab/secp256k1'; import { BIP32Factory, BIP32Interface } from 'bip32'; export const bip32 = BIP32Factory(ecc); export type { BIP32Interface }; + +export function convertZpubToXpub(zpub: string): string { + const data = b58.decode(zpub); + const buffer = Buffer.from(data); + buffer.writeUInt32BE(0x0488b21e, 0); + return b58.encode(buffer); +} From 4ce6fc0d80502779c5eacc9f8de22336f15b973a Mon Sep 17 00:00:00 2001 From: keystoneGithub Date: Fri, 8 Nov 2024 11:25:17 +0800 Subject: [PATCH 2/6] fix keystone deps version --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 461d77a2..463aabca 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,11 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.0.2", - "@keystonehq/hw-app-base": "^0.1.7", - "@keystonehq/hw-app-bitcoin": "^0.1.1", - "@keystonehq/hw-transport-usb": "^0.1.1", - "@keystonehq/hw-transport-webusb": "^0.5.1", - "@keystonehq/keystone-sdk": "^0.8.0", + "@keystonehq/hw-app-base": "0.1.7", + "@keystonehq/hw-app-bitcoin": "0.1.2", + "@keystonehq/hw-transport-usb": "0.1.1", + "@keystonehq/hw-transport-webusb": "0.5.1", + "@keystonehq/keystone-sdk": "0.8.0", "@noble/curves": "^1.2.0", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.1.1", From 784c4099cfcea58dcc228d4175c639e8e38a2a09 Mon Sep 17 00:00:00 2001 From: keystoneGithub Date: Tue, 3 Dec 2024 16:02:02 +0800 Subject: [PATCH 3/6] fix: psbt options type --- transactions/bitcoin/types.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/transactions/bitcoin/types.ts b/transactions/bitcoin/types.ts index 00edd970..7ca92056 100644 --- a/transactions/bitcoin/types.ts +++ b/transactions/bitcoin/types.ts @@ -98,6 +98,7 @@ export type TransactionSummary = { export type PSBTCompilationOptions = { ledgerTransport?: Transport; keystoneTransport?: TransportWebUSB; + selectedAccount?: Account; finalize?: boolean; }; From 9da9dda289aa02d29bf5a2a79142d7bcfb2903d1 Mon Sep 17 00:00:00 2001 From: keystoneGithub Date: Thu, 9 Jan 2025 16:25:04 +0800 Subject: [PATCH 4/6] fix: clean deps --- keystone/types.ts | 2 - package-lock.json | 1035 ++++----------------------------------------- package.json | 7 +- 3 files changed, 92 insertions(+), 952 deletions(-) diff --git a/keystone/types.ts b/keystone/types.ts index 817dad14..10987e8b 100644 --- a/keystone/types.ts +++ b/keystone/types.ts @@ -1,5 +1,3 @@ import Bitcoin from '@keystonehq/hw-app-bitcoin'; -export { URType, UR } from '@keystonehq/keystone-sdk'; - export { Bitcoin }; diff --git a/package-lock.json b/package-lock.json index d7932584..28a954b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,11 +10,8 @@ "license": "ISC", "dependencies": { "@bitcoinerlab/secp256k1": "^1.0.2", - "@keystonehq/hw-app-base": "^0.1.7", "@keystonehq/hw-app-bitcoin": "^0.1.1", - "@keystonehq/hw-transport-usb": "^0.1.1", "@keystonehq/hw-transport-webusb": "^0.5.1", - "@keystonehq/keystone-sdk": "^0.8.0", "@noble/curves": "^1.2.0", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.1.1", @@ -247,11 +244,6 @@ "@noble/secp256k1": "^1.7.1" } }, - "node_modules/@bufbuild/protobuf": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-1.10.0.tgz", - "integrity": "sha512-QDdVFLoN93Zjg36NoQPZfsVH9tZew7wKDKyV5qRdj8ntT4wQCOradQjRaTdwMhWUYsgKsvCINKKm87FdEk96Ag==" - }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -685,29 +677,6 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@ethereumjs/rlp": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", - "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", - "bin": { - "rlp": "bin/rlp.cjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ethereumjs/util": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-9.1.0.tgz", - "integrity": "sha512-XBEKsYqLGXLah9PNJbgdkigthkG7TAGvlD/sH12beMXEyHDyigfcbdvHhmLyDWgDyOJn4QwiQUaF7yeuhnjdog==", - "dependencies": { - "@ethereumjs/rlp": "^5.0.2", - "ethereum-cryptography": "^2.2.1" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.8", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", @@ -731,751 +700,120 @@ "node": ">=12.22" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@keystonehq/alias-sampling": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@keystonehq/alias-sampling/-/alias-sampling-0.1.2.tgz", - "integrity": "sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w==" - }, - "node_modules/@keystonehq/bc-ur-registry": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.7.0.tgz", - "integrity": "sha512-E6NUd6Y+YYM+IcYGOEXfO9+MU1s63Qjm8brtHftvNhxbdXhGtTYIsa4FQmqZ6q34q91bMkMqUQFsQYPmIxcxfg==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-aptos": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-aptos/-/bc-ur-registry-aptos-0.6.3.tgz", - "integrity": "sha512-NJipiLJpu/pxocCUz8yiQUwmjHtu5XEDhhZHoNFE4M5B9WoZTae+wDCt6dTZD42XlePkPIgLAotBKIKmSHMGRQ==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "bs58check": "^2.1.2", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-aptos/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-arweave": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-arweave/-/bc-ur-registry-arweave-0.5.3.tgz", - "integrity": "sha512-b5OAzhW7HLaOX7OEyWA+Bz+4EJIzCT7c+JXU0TElzpBD5rGo4ylf+StuyV6WnuKx5NV11fv9k2XDyHit26CCLA==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-arweave/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-btc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-btc/-/bc-ur-registry-btc-0.1.1.tgz", - "integrity": "sha512-LdYqItY1Y/M6fWJNE6L0HYZbKL8CGVP6OigG7T/gJ+SWnOGgYXj3at02aV7b9qZ7iNwJPkNrqsIDN5eajQcZjQ==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-cardano": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-cardano/-/bc-ur-registry-cardano-0.3.9.tgz", - "integrity": "sha512-moQtGVjRpzJmHBGxITjljKVE8b2wIC72/9UtuqIfeWWUz/gHWZ4zB0jrz+YgnNwhIizEKmydjtOHLSFrbUQ9VQ==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cardano/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-cosmos": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-cosmos/-/bc-ur-registry-cosmos-0.5.3.tgz", - "integrity": "sha512-bCmm2LMM4EHiLrjhfkbzfnwTXi4ez56MfwKYke8Z0roeaJbHmr2KkCg6/MePLjeK9PRbY0jKXBmCowMe2DhfhA==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "bs58check": "^2.1.2", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-cosmos/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-eth": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-eth/-/bc-ur-registry-eth-0.20.1.tgz", - "integrity": "sha512-vQpqhj2DeDI1/xwY3eqj1PWgqqTdg53RgMVBUZUV3O8CSc0nbnH4SaP3cx85KEOO+4Loq6SXHbFJr1egalM2ng==", - "dependencies": { - "@ethereumjs/util": "^9.0.3", - "@keystonehq/bc-ur-registry": "^0.6.4", - "hdkey": "^2.0.1", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-eth/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-evm": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-evm/-/bc-ur-registry-evm-0.5.3.tgz", - "integrity": "sha512-K3tmY1Y2SDImtSnCPFoASMBNernbN/ZRIIkp8iKegDeyHtaPbzfNIdaEL/wUHVoieTgTOUTwyWZspBvvbgrivw==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "bs58check": "^2.1.2", - "uuid": "^9.0.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-evm/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@keystonehq/bc-ur-registry-keystone": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-keystone/-/bc-ur-registry-keystone-0.4.3.tgz", - "integrity": "sha512-YTf0p9TYYq9+bfF/wMEE2gbhNiV1S0m31hMwnl+4kn3q1avwlrXZ6h30nANZXD31NQ8hMuLO8x7Ny+0AldmAOA==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4" - } - }, - "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-keystone/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-near": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-near/-/bc-ur-registry-near-0.9.3.tgz", - "integrity": "sha512-+JHxlxwa4pbZXODSZYcIHN42XZZYblNQFp6ogP0yyqct1ayVbAgz/RoYdLrfdNJ4TDvPRClOPDIvZSiUFYCpaw==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "bs58check": "^2.1.2", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-near/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-near/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-near/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-near/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-near/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-sol": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-sol/-/bc-ur-registry-sol-0.9.3.tgz", - "integrity": "sha512-ZjTeInzS4y10tIZlgEN4NGW9W6vTBxzZrM9CaNNeVqTgtyiOB2JvPIW8buxlZUKYj2M5Mu5jPHuAjVRCK6Jm9Q==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "bs58check": "^2.1.2", - "uuid": "^8.3.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } - }, - "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/@keystonehq/bc-ur-registry-sol/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-stellar": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-stellar/-/bc-ur-registry-stellar-0.0.4.tgz", - "integrity": "sha512-L/naB3+/386htOrePisgQsTUOIKgIWpXS6FF24TTkyWWr/SHQV3PNOYXOnMto+WKABv6+BbG6AAnsw/7UuONLg==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "bs58check": "^2.1.2", - "uuid": "^8.3.2" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" - } + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true }, - "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "dependencies": { - "base-x": "^3.0.2" + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@keystonehq/bc-ur-registry-stellar/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/@keystonehq/bc-ur-registry-sui": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-sui/-/bc-ur-registry-sui-0.3.1.tgz", - "integrity": "sha512-cbxu5AF5xFg9J3p0AXIkp1IMGSSNsaXWRgn22bcnkIlzwMEwmgJR5J/Lg45MIyIpW2p17fKyYqc9yuP0iMALEQ==", - "dependencies": { - "@keystonehq/bc-ur-registry": "^0.6.4", - "uuid": "^9.0.0" + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/@keystonehq/bc-ur-registry": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", - "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", - "dependencies": { - "@ngraveio/bc-ur": "^1.1.5", - "bs58check": "^2.1.2", - "tslib": "^2.3.0" + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", + "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "dev": true, "dependencies": { - "safe-buffer": "^5.0.1" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true }, - "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + "node_modules/@keystonehq/alias-sampling": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@keystonehq/alias-sampling/-/alias-sampling-0.1.2.tgz", + "integrity": "sha512-5ukLB3bcgltgaFfQfYKYwHDUbwHicekYo53fSEa7xhVkAEqsA74kxdIwoBIURmGUtXe3EVIRm4SYlgcrt2Ri0w==" }, - "node_modules/@keystonehq/bc-ur-registry-sui/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" + "node_modules/@keystonehq/bc-ur-registry": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.7.0.tgz", + "integrity": "sha512-E6NUd6Y+YYM+IcYGOEXfO9+MU1s63Qjm8brtHftvNhxbdXhGtTYIsa4FQmqZ6q34q91bMkMqUQFsQYPmIxcxfg==", + "dependencies": { + "@ngraveio/bc-ur": "^1.1.5", + "bs58check": "^2.1.2", + "tslib": "^2.3.0" } }, - "node_modules/@keystonehq/bc-ur-registry-ton": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-ton/-/bc-ur-registry-ton-0.1.2.tgz", - "integrity": "sha512-m36/QODXTbkQQacM8vIopt5RvE/uc/f9f4Jc9VFxsxKWmld3aGwrMsLB1SBSva31kawikOVSMEWXhXlQ07UJhA==", + "node_modules/@keystonehq/bc-ur-registry-btc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry-btc/-/bc-ur-registry-btc-0.1.1.tgz", + "integrity": "sha512-LdYqItY1Y/M6fWJNE6L0HYZbKL8CGVP6OigG7T/gJ+SWnOGgYXj3at02aV7b9qZ7iNwJPkNrqsIDN5eajQcZjQ==", "dependencies": { "@keystonehq/bc-ur-registry": "^0.6.4", - "uuid": "^9.0.0" + "uuid": "^8.3.2" } }, - "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/@keystonehq/bc-ur-registry": { + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/@keystonehq/bc-ur-registry": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/@keystonehq/bc-ur-registry/-/bc-ur-registry-0.6.4.tgz", "integrity": "sha512-j8Uy44DuAkvYkbf0jMxRY3UizJfn8wsEQr7GS3miRF44vcq7k0/yemVkftbn3jQ+0JYaUXf5wY7lVpLhAeW5nQ==", @@ -1485,7 +823,7 @@ "tslib": "^2.3.0" } }, - "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/base-x": { + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/base-x": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", @@ -1493,7 +831,7 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/bs58": { + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", @@ -1501,7 +839,7 @@ "base-x": "^3.0.2" } }, - "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/bs58check": { + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/bs58check": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", @@ -1511,23 +849,11 @@ "safe-buffer": "^5.1.2" } }, - "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/tslib": { + "node_modules/@keystonehq/bc-ur-registry-btc/node_modules/tslib": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, - "node_modules/@keystonehq/bc-ur-registry-ton/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@keystonehq/bc-ur-registry/node_modules/base-x": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", @@ -1762,45 +1088,6 @@ "buffer": "^6.0.3" } }, - "node_modules/@keystonehq/keystone-sdk": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@keystonehq/keystone-sdk/-/keystone-sdk-0.8.0.tgz", - "integrity": "sha512-9lzjwwWLrJEVOraIZdwD8HIVNnIxWVJMd8H/JoL9288Ist2gLcV7KstGfS0HyxARwc8pmWEXFXR52GP2gSOR0g==", - "dependencies": { - "@bufbuild/protobuf": "^1.2.0", - "@keystonehq/bc-ur-registry": "^0.7.0", - "@keystonehq/bc-ur-registry-aptos": "^0.6.3", - "@keystonehq/bc-ur-registry-arweave": "^0.5.3", - "@keystonehq/bc-ur-registry-btc": "^0.1.1", - "@keystonehq/bc-ur-registry-cardano": "^0.3.9", - "@keystonehq/bc-ur-registry-cosmos": "^0.5.3", - "@keystonehq/bc-ur-registry-eth": "^0.20.1", - "@keystonehq/bc-ur-registry-evm": "^0.5.3", - "@keystonehq/bc-ur-registry-keystone": "^0.4.3", - "@keystonehq/bc-ur-registry-near": "^0.9.3", - "@keystonehq/bc-ur-registry-sol": "^0.9.3", - "@keystonehq/bc-ur-registry-stellar": "^0.0.4", - "@keystonehq/bc-ur-registry-sui": "^0.3.1", - "@keystonehq/bc-ur-registry-ton": "^0.1.2", - "@ngraveio/bc-ur": "^1.1.6", - "bs58check": "^3.0.1", - "pako": "^2.1.0", - "ripple-binary-codec": "^1.4.3", - "uuid": "^9.0.0" - } - }, - "node_modules/@keystonehq/keystone-sdk/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@ledgerhq/devices": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.3.tgz", @@ -3527,14 +2814,6 @@ "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==" }, - "node_modules/big-integer": { - "version": "1.6.52", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", - "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", - "engines": { - "node": ">=0.6" - } - }, "node_modules/bignumber.js": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.1.tgz", @@ -4288,11 +3567,6 @@ } } }, - "node_modules/decimal.js": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", - "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==" - }, "node_modules/deep-eql": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", @@ -5072,39 +4346,6 @@ "node": ">=0.10.0" } }, - "node_modules/ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", - "dependencies": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" - } - }, - "node_modules/ethereum-cryptography/node_modules/@noble/curves": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", - "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ethereum-cryptography/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -5659,62 +4900,6 @@ "node": ">= 0.4" } }, - "node_modules/hdkey": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hdkey/-/hdkey-2.1.0.tgz", - "integrity": "sha512-i9Wzi0Dy49bNS4tXXeGeu0vIcn86xXdPQUpEYg+SO1YiO8HtomjmmRMaRyqL0r59QfcD4PfVbSF3qmsWFwAemA==", - "dependencies": { - "bs58check": "^2.1.2", - "ripemd160": "^2.0.2", - "safe-buffer": "^5.1.1", - "secp256k1": "^4.0.0" - } - }, - "node_modules/hdkey/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/hdkey/node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/hdkey/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/hdkey/node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, - "node_modules/hdkey/node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "hasInstallScript": true, - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -7017,6 +6202,7 @@ "version": "4.6.1", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.1.tgz", "integrity": "sha512-24vnklJmyRS8ViBNI8KbtK/r/DmXQMRiOMXTNz2nrTnAYUwjmEEbnnpB/+kt+yWRv73bPsSPRFddrcIbAxSiMQ==", + "dev": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -7228,11 +6414,6 @@ "node": ">=6" } }, - "node_modules/pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -7731,42 +6912,6 @@ "node": ">=8" } }, - "node_modules/ripple-address-codec": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.3.1.tgz", - "integrity": "sha512-Qa3+9wKVvpL/xYtT6+wANsn0A1QcC5CT6IMZbRJZ/1lGt7gmwIfsrCuz1X0+LCEO7zgb+3UT1I1dc0k/5dwKQQ==", - "dependencies": { - "base-x": "^3.0.9", - "create-hash": "^1.1.2" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/ripple-address-codec/node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/ripple-binary-codec": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.11.0.tgz", - "integrity": "sha512-g7+gs3T+NfoeW6vIq5dcN0CkIT4t/zwRzFxz8X2RzfbrWRnewPUKqQbmBgs05tXLX5NuWPaneiaAVpFpYBcdfw==", - "dependencies": { - "assert": "^2.0.0", - "big-integer": "^1.6.48", - "buffer": "6.0.3", - "create-hash": "^1.2.0", - "decimal.js": "^10.2.0", - "ripple-address-codec": "^4.3.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/rollup": { "version": "4.17.2", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.17.2.tgz", diff --git a/package.json b/package.json index 463aabca..daf1e365 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,8 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.0.2", - "@keystonehq/hw-app-base": "0.1.7", - "@keystonehq/hw-app-bitcoin": "0.1.2", - "@keystonehq/hw-transport-usb": "0.1.1", - "@keystonehq/hw-transport-webusb": "0.5.1", - "@keystonehq/keystone-sdk": "0.8.0", + "@keystonehq/hw-app-bitcoin": "^0.1.1", + "@keystonehq/hw-transport-webusb": "^0.5.1", "@noble/curves": "^1.2.0", "@noble/secp256k1": "^1.7.1", "@scure/base": "^1.1.1", From 185135e1d4949dcd253a785762ab926bdea050f2 Mon Sep 17 00:00:00 2001 From: keystoneGithub Date: Thu, 9 Jan 2025 11:34:38 +0800 Subject: [PATCH 5/6] fix: brc20 selectedAccount arg --- hooks/brc20/useBrc20TransferExecute.ts | 8 +++++++- package-lock.json | 9 +++++---- package.json | 2 +- transactions/brc20.ts | 3 ++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/hooks/brc20/useBrc20TransferExecute.ts b/hooks/brc20/useBrc20TransferExecute.ts index f1dda310..7228dafa 100644 --- a/hooks/brc20/useBrc20TransferExecute.ts +++ b/hooks/brc20/useBrc20TransferExecute.ts @@ -6,6 +6,7 @@ import { Transport } from '../../ledger'; import { TransactionContext } from '../../transactions/bitcoin'; import { BRC20ErrorCode, ExecuteTransferProgressCodes, brc20TransferExecute } from '../../transactions/brc20'; import { TransportWebUSB } from '@keystonehq/hw-transport-webusb'; +import { Account } from '../../types'; type Props = { context: TransactionContext; @@ -36,7 +37,11 @@ const useBrc20TransferExecute = (props: Props) => { const [errorCode, setErrorCode] = useState(); const executeTransfer = useCallback( - (executeOptions?: { ledgerTransport?: Transport; keystoneTransport?: TransportWebUSB }) => { + (executeOptions?: { + ledgerTransport?: Transport; + keystoneTransport?: TransportWebUSB; + selectedAccount?: Account; + }) => { if (running) return; const innerProps = { @@ -58,6 +63,7 @@ const useBrc20TransferExecute = (props: Props) => { const transferGenerator = await brc20TransferExecute(innerProps, context, { ledgerTransport: executeOptions?.ledgerTransport, keystoneTransport: executeOptions?.keystoneTransport, + selectedAccount: executeOptions?.selectedAccount, }); let done = false; diff --git a/package-lock.json b/package-lock.json index 28a954b3..3d2bc090 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "license": "ISC", "dependencies": { "@bitcoinerlab/secp256k1": "^1.0.2", - "@keystonehq/hw-app-bitcoin": "^0.1.1", + "@keystonehq/hw-app-bitcoin": "^0.1.2", "@keystonehq/hw-transport-webusb": "^0.5.1", "@noble/curves": "^1.2.0", "@noble/secp256k1": "^1.7.1", @@ -907,9 +907,10 @@ } }, "node_modules/@keystonehq/hw-app-bitcoin": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@keystonehq/hw-app-bitcoin/-/hw-app-bitcoin-0.1.1.tgz", - "integrity": "sha512-XWNmWSUyPXFUG7X7DJDD3RuMfXYHhsVWluYHCiuOnnwY6sXS4JwGRmXBFxq4Z4FMCIVcEJ8YaW4g8ajMyj0foQ==", + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@keystonehq/hw-app-bitcoin/-/hw-app-bitcoin-0.1.2.tgz", + "integrity": "sha512-UiejeaSRyJg/F7wcElg0eDboLppZmzFJxbwoxh28fSY5NEAdhQHfYUcFCydUey4bClZonKdkexQHOn7ImwzASQ==", + "license": "ISC", "dependencies": { "@keystonehq/bc-ur-registry": "0.7.0", "@keystonehq/bc-ur-registry-btc": "0.1.1", diff --git a/package.json b/package.json index daf1e365..adf45d90 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ }, "dependencies": { "@bitcoinerlab/secp256k1": "^1.0.2", - "@keystonehq/hw-app-bitcoin": "^0.1.1", + "@keystonehq/hw-app-bitcoin": "^0.1.2", "@keystonehq/hw-transport-webusb": "^0.5.1", "@noble/curves": "^1.2.0", "@noble/secp256k1": "^1.7.1", diff --git a/transactions/brc20.ts b/transactions/brc20.ts index 9aa91b2e..eb6eb614 100644 --- a/transactions/brc20.ts +++ b/transactions/brc20.ts @@ -3,7 +3,7 @@ import { CancelToken } from 'axios'; import BigNumber from 'bignumber.js'; import xverseInscribeApi from '../api/xverseInscribe'; import { Transport } from '../ledger'; -import { UTXO } from '../types'; +import { Account, UTXO } from '../types'; import { isValidTick } from '../utils'; import { CoreError } from '../utils/coreError'; import { ActionType, EnhancedTransaction, TransactionContext } from './bitcoin'; @@ -16,6 +16,7 @@ const FINAL_SATS_VALUE = 1000; export type SignOptions = { ledgerTransport?: Transport | undefined; keystoneTransport?: TransportWebUSB | undefined; + selectedAccount?: Account; }; export enum BRC20ErrorCode { From 6ec2c65fa1a3f3fdbafd5236e59cec094e0db88f Mon Sep 17 00:00:00 2001 From: keystoneGithub Date: Thu, 9 Jan 2025 14:17:05 +0800 Subject: [PATCH 6/6] fix: keystone sdk signature check --- keystone/btcMessageSigning.ts | 3 +++ transactions/bitcoin/context.ts | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/keystone/btcMessageSigning.ts b/keystone/btcMessageSigning.ts index a62566c2..6757c958 100644 --- a/keystone/btcMessageSigning.ts +++ b/keystone/btcMessageSigning.ts @@ -43,6 +43,9 @@ const createMessageSignature = async ( psbtToSign.addOutput({ script: Buffer.from('6a', 'hex'), value: 0 }); const signatures = await app.signPsbt(psbtToSign.toBase64()); for (const signature of signatures) { + if (!signature[1]) { + continue; + } if (isSegwit) { psbtToSign.updateInput(signature[0], { partialSig: [signature[1]], diff --git a/transactions/bitcoin/context.ts b/transactions/bitcoin/context.ts index 9940db9d..af1f415a 100644 --- a/transactions/bitcoin/context.ts +++ b/transactions/bitcoin/context.ts @@ -544,6 +544,9 @@ export class KeystoneP2wpkhAddressContext extends P2wpkhAddressContext { const cleanedSignatures = this.cleanPsbtSig(psbtBase64, signatures); for (const signature of cleanedSignatures) { + if (!signature[1]) { + continue; + } transaction.updateInput(signature[0], { partialSig: [[signature[1].pubkey, signature[1].signature]], }); @@ -572,7 +575,7 @@ export class KeystoneP2wpkhAddressContext extends P2wpkhAddressContext { return psbtObj.toBase64(); } - cleanPsbtSig(psbtBase64: string, signatures: [number, PartialSignature][]) { + cleanPsbtSig(psbtBase64: string, signatures: [number, PartialSignature | undefined][]) { const results = []; const path = 84; @@ -845,6 +848,9 @@ export class KeystoneP2trAddressContext extends P2trAddressContext { const cleanedSignatures = this.cleanPsbtSig(psbtBase64, signatures); for (const signature of cleanedSignatures) { + if (!signature[1]) { + continue; + } transaction.updateInput(signature[0], { tapKeySig: signature[1].signature, }); @@ -873,7 +879,7 @@ export class KeystoneP2trAddressContext extends P2trAddressContext { return psbtObj.toBase64(); } - cleanPsbtSig(psbt: string, signatures: [number, PartialSignature][]) { + cleanPsbtSig(psbt: string, signatures: [number, PartialSignature | undefined][]) { const results = []; const path = 86;