diff --git a/package.json b/package.json index 601d6be07..d0873a8a6 100644 --- a/package.json +++ b/package.json @@ -23,22 +23,23 @@ "sentry": "node sentryscript.js" }, "dependencies": { - "@avalabs/vm-module-types": "0.1.0", "@avalabs/avalanchejs": "4.0.5", + "@avalabs/bitcoin-module": "0.1.4", "@avalabs/bridge-unified": "2.1.0", - "@avalabs/core-bridge-sdk": "3.0.0", - "@avalabs/core-chains-sdk": "3.0.0", - "@avalabs/core-coingecko-sdk": "3.0.0", - "@avalabs/core-covalent-sdk": "3.0.0", - "@avalabs/core-etherscan-sdk": "3.0.0", - "@avalabs/core-snowtrace-sdk": "3.0.0", - "@avalabs/core-token-prices-sdk": "3.0.0", - "@avalabs/core-utils-sdk": "3.0.0", - "@avalabs/core-wallets-sdk": "3.0.0", + "@avalabs/core-bridge-sdk": "3.0.1-alpha.1", + "@avalabs/core-chains-sdk": "3.0.1-alpha.1", + "@avalabs/core-coingecko-sdk": "3.0.1-alpha.1", + "@avalabs/core-covalent-sdk": "3.0.1-alpha.1", + "@avalabs/core-etherscan-sdk": "3.0.1-alpha.1", + "@avalabs/core-snowtrace-sdk": "3.0.1-alpha.1", + "@avalabs/core-token-prices-sdk": "3.0.1-alpha.1", + "@avalabs/core-utils-sdk": "3.0.1-alpha.1", + "@avalabs/core-wallets-sdk": "3.0.1-alpha.1", "@avalabs/glacier-sdk": "2.8.0-alpha.188", "@avalabs/hw-app-avalanche": "0.14.1", "@avalabs/core-k2-components": "4.18.0-alpha.47", - "@avalabs/types": "2.8.0-alpha.188", + "@avalabs/types": "3.0.1-alpha.1", + "@avalabs/vm-module-types": "0.1.4", "@blockaid/client": "0.10.0", "@coinbase/cbpay-js": "1.6.0", "@cubist-labs/cubesigner-sdk": "0.3.28", @@ -238,7 +239,10 @@ "@avalabs/vm-module-types>@avalabs/wallets-sdk>hdkey>secp256k1": false, "@avalabs/core-bridge-sdk>@avalabs/core-wallets-sdk>@avalabs/hw-app-avalanche>@ledgerhq/hw-app-eth>@ledgerhq/domain-service>eip55>keccak": false, "@avalabs/core-bridge-sdk>@avalabs/core-wallets-sdk>@ledgerhq/hw-app-btc>bitcoinjs-lib>bip32>tiny-secp256k1": false, - "@avalabs/core-bridge-sdk>@avalabs/core-wallets-sdk>hdkey>secp256k1": false + "@avalabs/core-bridge-sdk>@avalabs/core-wallets-sdk>hdkey>secp256k1": false, + "@avalabs/bitcoin-module>@avalabs/core-wallets-sdk>@avalabs/hw-app-avalanche>@ledgerhq/hw-app-eth>@ledgerhq/domain-service>eip55>keccak": false, + "@avalabs/bitcoin-module>@avalabs/core-wallets-sdk>@ledgerhq/hw-app-btc>bitcoinjs-lib>bip32>tiny-secp256k1": false, + "@avalabs/bitcoin-module>@avalabs/core-wallets-sdk>hdkey>secp256k1": false } } } diff --git a/src/background/runtime/BackgroundRuntime.ts b/src/background/runtime/BackgroundRuntime.ts index 8f84857df..a4a5fd7af 100644 --- a/src/background/runtime/BackgroundRuntime.ts +++ b/src/background/runtime/BackgroundRuntime.ts @@ -5,6 +5,7 @@ import { singleton } from 'tsyringe'; import { LockService } from '@src/background/services/lock/LockService'; import { OnboardingService } from '@src/background/services/onboarding/OnboardingService'; import { BridgeService } from '@src/background/services/bridge/BridgeService'; +import ModuleManager from '../vmModules/ModuleManager'; @singleton() export class BackgroundRuntime { @@ -20,6 +21,8 @@ export class BackgroundRuntime { this.registerInpageScript(); this.addContextMenus(); + ModuleManager.init(); + // Activate services which need to run all the or are required for bootstraping the wallet state this.connectionService.activate(); this.lockService.activate(); diff --git a/src/background/services/balances/models.ts b/src/background/services/balances/models.ts index c1e0f6f63..98e48a4b8 100644 --- a/src/background/services/balances/models.ts +++ b/src/background/services/balances/models.ts @@ -32,6 +32,7 @@ interface TokenBalanceDataWithDecimals extends TokenBalanceData { decimals: number; } +// TODO: remove TokenType once all VM modules are integrated (it should no longer be needed at this point) export enum TokenType { NATIVE = 'NATIVE', ERC20 = 'ERC20', diff --git a/src/background/services/balances/nft/utils/isNFT.ts b/src/background/services/balances/nft/utils/isNFT.ts index 332c62485..bcec8f76e 100644 --- a/src/background/services/balances/nft/utils/isNFT.ts +++ b/src/background/services/balances/nft/utils/isNFT.ts @@ -1,5 +1,7 @@ +import { TokenType as VMModulesTokenType } from '@avalabs/vm-module-types'; + import { TokenType } from '../../models'; -export function isNFT(tokenType: TokenType) { +export function isNFT(tokenType: TokenType | VMModulesTokenType) { return tokenType === TokenType.ERC721 || tokenType === TokenType.ERC1155; } diff --git a/src/background/services/history/HistoryService.test.ts b/src/background/services/history/HistoryService.test.ts index 51d559124..1884e6c82 100644 --- a/src/background/services/history/HistoryService.test.ts +++ b/src/background/services/history/HistoryService.test.ts @@ -180,6 +180,7 @@ describe('src/background/services/history/HistoryService.ts', () => { const result = await service.getTxHistory({ ...network1, vmName: NetworkVMType.BITCOIN, + caipId: 'bip122:000000000019d6689c085ae165831e93', }); expect(btcHistoryServiceMock.getHistory).toHaveBeenCalledTimes(1); expect(result).toEqual([btcTxHistoryItem]); @@ -188,6 +189,7 @@ describe('src/background/services/history/HistoryService.ts', () => { const result = await service.getTxHistory({ ...network1, vmName: NetworkVMType.BITCOIN, + caipId: 'bip122:000000000019d6689c085ae165831e93', }); expect(btcHistoryServiceMock.getHistory).toHaveBeenCalledTimes(1); expect(result).toEqual([btcTxHistoryItem]); diff --git a/src/background/services/history/HistoryService.ts b/src/background/services/history/HistoryService.ts index ba5455bf2..a366596f8 100644 --- a/src/background/services/history/HistoryService.ts +++ b/src/background/services/history/HistoryService.ts @@ -1,7 +1,7 @@ import { singleton } from 'tsyringe'; import { NetworkVMType } from '@avalabs/core-chains-sdk'; -import { Network } from '../network/models'; +import { NetworkWithCaipId } from '../network/models'; import { GlacierService } from '../glacier/GlacierService'; import { isPchainNetwork } from '../network/utils/isAvalanchePchainNetwork'; import { isXchainNetwork } from '../network/utils/isAvalancheXchainNetwork'; @@ -24,7 +24,7 @@ export class HistoryService { private historyServicePVM: HistoryServicePVM ) {} - async getTxHistory(network: Network) { + async getTxHistory(network: NetworkWithCaipId) { const isSupportedNetwork = await this.glacierService.isNetworkSupported( network.chainId ); diff --git a/src/background/services/history/HistoryServiceBTC.ts b/src/background/services/history/HistoryServiceBTC.ts index 7ded28452..22f264615 100644 --- a/src/background/services/history/HistoryServiceBTC.ts +++ b/src/background/services/history/HistoryServiceBTC.ts @@ -1,103 +1,56 @@ -import { Blockchain } from '@avalabs/core-bridge-sdk'; -import { - BITCOIN_NETWORK, - Network, - NetworkVMType, -} from '@avalabs/core-chains-sdk'; -import { BitcoinHistoryTx, BitcoinProvider } from '@avalabs/core-wallets-sdk'; -import { getExplorerAddress } from '@src/utils/getExplorerAddress'; +import { NetworkVMType } from '@avalabs/core-chains-sdk'; import { singleton } from 'tsyringe'; import { AccountsService } from '../accounts/AccountsService'; -import { TokenType } from '../balances/models'; -import { NetworkService } from '../network/NetworkService'; import { HistoryServiceBridgeHelper } from './HistoryServiceBridgeHelper'; import { TransactionType, TxHistoryItem } from './models'; -import { getProviderForNetwork } from '@src/utils/network/getProviderForNetwork'; +import ModuleManager from '@src/background/vmModules/ModuleManager'; +import { NetworkWithCaipId } from '../network/models'; +import sentryCaptureException, { + SentryExceptionTypes, +} from '@src/monitoring/sentryCaptureException'; @singleton() export class HistoryServiceBTC { constructor( - private networkService: NetworkService, private accountsService: AccountsService, private bridgeHistoryHelperService: HistoryServiceBridgeHelper ) {} - private bitcoinAmount(amount: number, demonimation: number) { - if (amount < 0) { - amount = amount * -1; - } - return (amount / Math.pow(10, demonimation)).toString(); - } - - private txHistoryItemConverter( - tx: BitcoinHistoryTx, - network: Network - ): TxHistoryItem { - const userAddress = this.accountsService.activeAccount?.addressBTC - ? this.accountsService.activeAccount?.addressBTC - : ''; - const txAddress = tx.addresses[0] ? tx.addresses[0] : ''; - const denomination = BITCOIN_NETWORK.networkToken.decimals; - const isBridge = this.bridgeHistoryHelperService.isBridgeTransactionBTC(tx); - const type = isBridge - ? TransactionType.BRIDGE - : tx.isSender - ? TransactionType.SEND - : TransactionType.RECEIVE; - return { - isBridge, - isIncoming: !tx.isSender, - isOutgoing: tx.isSender, - isContractCall: false, - timestamp: new Date(tx.receivedTime * 1000).toISOString(), - hash: tx.hash, - isSender: tx.isSender, - from: tx.isSender ? userAddress : txAddress, - to: tx.isSender ? txAddress : userAddress, - tokens: [ - { - decimal: denomination.toString(), - name: BITCOIN_NETWORK.networkToken.name, - symbol: BITCOIN_NETWORK.networkToken.symbol, - amount: this.bitcoinAmount(tx.amount, denomination), - type: TokenType.NATIVE, - }, - ], - gasUsed: tx.fee.toString(), - explorerLink: getExplorerAddress( - Blockchain.BITCOIN, - tx.hash, - network.chainId === BITCOIN_NETWORK.chainId - ), - chainId: network.chainId.toString(), - type, - }; - } - - async getHistory(network: Network): Promise { + async getHistory(network: NetworkWithCaipId): Promise { if (network?.vmName !== NetworkVMType.BITCOIN) { return []; } - const account = this.accountsService.activeAccount?.addressBTC; + const address = this.accountsService.activeAccount?.addressBTC; - if (!account) { + if (!address) { return []; } - const provider = getProviderForNetwork(network) as BitcoinProvider; try { - const txHistory: BitcoinHistoryTx[] = await provider.getTxHistory( - account - ); - const results: TxHistoryItem[] = []; - txHistory.forEach((tx) => { - const converted = this.txHistoryItemConverter(tx, network); - if (converted) { - results.push(converted); - } + const module = await ModuleManager.loadModuleByNetwork(network); + const { transactions } = await module.getTransactionHistory({ + address, + network, + }); + + return transactions.map((tx) => { + const isBridge = this.bridgeHistoryHelperService.isBridgeTransactionBTC( + [tx.from, tx.to] + ); + + return { + ...tx, + // BitcoinModule is not able to recognize bridge txs at the moment, so we need to do it here. + isBridge, + type: isBridge + ? TransactionType.BRIDGE + : tx.isSender + ? TransactionType.SEND + : TransactionType.RECEIVE, + }; }); - return results; - } catch (error) { + } catch (error: any) { + sentryCaptureException(error, SentryExceptionTypes.INTERNAL_ERROR); return []; } } diff --git a/src/background/services/history/HistoryServiceBridgeHelper.ts b/src/background/services/history/HistoryServiceBridgeHelper.ts index aaa371c2a..86a00087a 100644 --- a/src/background/services/history/HistoryServiceBridgeHelper.ts +++ b/src/background/services/history/HistoryServiceBridgeHelper.ts @@ -1,6 +1,5 @@ import { ETHEREUM_ADDRESS } from '@src/utils/bridgeTransactionUtils'; import { BridgeService } from '../bridge/BridgeService'; -import { BitcoinHistoryTx } from '@avalabs/core-wallets-sdk'; import { singleton } from 'tsyringe'; import { Erc20Tx } from '@avalabs/core-snowtrace-sdk'; import { Network } from '@avalabs/core-chains-sdk'; @@ -77,7 +76,7 @@ export class HistoryServiceBridgeHelper { * config.criticalBitcoin?.walletAddresses.btc or * config.criticalBitcoin?.walletAddresses.avalanche */ - isBridgeTransactionBTC(tx: BitcoinHistoryTx): boolean { + isBridgeTransactionBTC(addresses: string[]): boolean { const config = this.bridgeService.bridgeConfig; const bitcoinWalletAddresses = config?.config?.criticalBitcoin?.walletAddresses; @@ -86,7 +85,7 @@ export class HistoryServiceBridgeHelper { return false; } - return tx.addresses.some((address) => { + return addresses.some((address) => { return [ bitcoinWalletAddresses.btc, bitcoinWalletAddresses.avalanche, diff --git a/src/background/services/history/HistoryServiceETH.ts b/src/background/services/history/HistoryServiceETH.ts index 4d4bf09d0..4df352ff0 100644 --- a/src/background/services/history/HistoryServiceETH.ts +++ b/src/background/services/history/HistoryServiceETH.ts @@ -153,6 +153,8 @@ export class HistoryServiceETH { // Sort by timestamp const joined = [...filteredNormalTxs, ...erc20Hist]; - return joined.sort((a, b) => b.timestamp.localeCompare(a.timestamp)); + return joined.sort((a, b) => + (b.timestamp as string).localeCompare(a.timestamp as string) + ); } } diff --git a/src/background/services/history/models.ts b/src/background/services/history/models.ts index d16468e0b..d57a3d496 100644 --- a/src/background/services/history/models.ts +++ b/src/background/services/history/models.ts @@ -3,7 +3,7 @@ import { RichAddress, XChainTransactionType, } from '@avalabs/glacier-sdk'; -import { TokenType } from '../balances/models'; +import { TokenType } from '@avalabs/vm-module-types'; export interface TxHistoryItemToken { decimal?: string; @@ -22,7 +22,7 @@ export interface TxHistoryItem { isIncoming: boolean; isOutgoing: boolean; isSender: boolean; - timestamp: string; + timestamp: string | number; hash: string; from: string; to: string; diff --git a/src/background/vmModules/ModuleManager.test.ts b/src/background/vmModules/ModuleManager.test.ts index d407a29ed..b37892cc4 100644 --- a/src/background/vmModules/ModuleManager.test.ts +++ b/src/background/vmModules/ModuleManager.test.ts @@ -28,7 +28,7 @@ describe('ModuleManager', () => { }, { chainId: 'bip122:000000000019d6689c085ae165831e93', - method: 'bitcoin_randomMethod', + method: 'bitcoin_sendTransaction', name: NetworkVMType.BITCOIN, }, { diff --git a/src/background/vmModules/ModuleManager.ts b/src/background/vmModules/ModuleManager.ts index 84244efde..af2dda97f 100644 --- a/src/background/vmModules/ModuleManager.ts +++ b/src/background/vmModules/ModuleManager.ts @@ -1,14 +1,15 @@ -import { Module } from '@avalabs/vm-module-types'; +import { Environment, Module } from '@avalabs/vm-module-types'; +import { BitcoinModule } from '@avalabs/bitcoin-module'; import { ethErrors } from 'eth-rpc-errors'; import { assertPresent } from '@src/utils/assertions'; +import { isDevelopment } from '@src/utils/environment'; import { NetworkWithCaipId } from '../services/network/models'; import { AVMModule } from './mocks/avm'; import { EVMModule } from './mocks/evm'; import { PVMModule } from './mocks/pvm'; -import { BitcoinModule } from './mocks/bitcoin'; import { CoreEthModule } from './mocks/coreEth'; import { VMModuleError } from './models'; @@ -32,9 +33,15 @@ class ModuleManager { async init(): Promise { if (this.#_modules !== undefined) return; + const environment = isDevelopment() + ? Environment.DEV + : Environment.PRODUCTION; + this.#modules = [ new EVMModule(), - new BitcoinModule(), + new BitcoinModule({ + environment, + }), new AVMModule(), new CoreEthModule(), new PVMModule(), diff --git a/src/background/vmModules/mocks/bitcoin.manifest.json b/src/background/vmModules/mocks/bitcoin.manifest.json deleted file mode 100644 index 3acac1c22..000000000 --- a/src/background/vmModules/mocks/bitcoin.manifest.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "Bitcoin", - "description": "", - "version": "0.0.1", - "sources": { - "module": { - "checksum": "", - "location": { - "npm": { - "filePath": "dist/bundle.js", - "packageName": "@avalabs/bitcoin-module", - "registry": "https://registry.npmjs.org" - } - } - }, - "provider": { - "checksum": "", - "location": { - "npm": { - "filePath": "dist/provider.js", - "packageName": "@avalabs/bitcoin-module", - "registry": "https://registry.npmjs.org" - } - } - } - }, - "network": { - "chainIds": ["bip122:000000000019d6689c085ae165831e93"], - "namespaces": ["bip122"] - }, - "cointype": "60", - "permissions": { - "rpc": { - "dapps": true, - "methods": ["bitcoin_sendTransaction", "bitcoin_*"] - } - }, - "manifestVersion": "0.0" -} diff --git a/src/background/vmModules/mocks/bitcoin.ts b/src/background/vmModules/mocks/bitcoin.ts deleted file mode 100644 index aaa1d959b..000000000 --- a/src/background/vmModules/mocks/bitcoin.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { - GetBalancesResponse, - GetTransactionHistory, - Manifest, - Module, - Network, - NetworkContractToken, - NetworkFees, - RpcRequest, - RpcResponse, - parseManifest, -} from '@avalabs/vm-module-types'; -import { ethErrors } from 'eth-rpc-errors'; - -import manifest from './bitcoin.manifest.json'; - -export class BitcoinModule implements Module { - getManifest(): Manifest | undefined { - const result = parseManifest(manifest); - return result.success ? result.data : undefined; - } - - getBalances(): Promise { - return Promise.resolve({}); - } - - getTransactionHistory( - _: GetTransactionHistory // eslint-disable-line @typescript-eslint/no-unused-vars - ) { - return Promise.resolve({ transactions: [], nextPageToken: '' }); - } - - getNetworkFee(): Promise { - return Promise.resolve({ - low: { maxPriorityFeePerGas: 0n, maxFeePerGas: 0n }, - medium: { maxPriorityFeePerGas: 0n, maxFeePerGas: 0n }, - high: { maxPriorityFeePerGas: 0n, maxFeePerGas: 0n }, - baseFee: 0n, - isFixedFee: false, - }); - } - - async getAddress() { - return {}; - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars - getTokens(_: Network): Promise { - return Promise.resolve([]); - } - - async onRpcRequest(request: RpcRequest): Promise { - return { - error: ethErrors.rpc.methodNotSupported({ - data: `Method ${request.method} not supported`, - }) as any, // TODO: fix it - }; - } -} diff --git a/src/pages/Wallet/WalletRecentTxs.tsx b/src/pages/Wallet/WalletRecentTxs.tsx index 1a4cd25fc..6d4979e28 100644 --- a/src/pages/Wallet/WalletRecentTxs.tsx +++ b/src/pages/Wallet/WalletRecentTxs.tsx @@ -303,7 +303,7 @@ export function WalletRecentTxs({ ); }, [baseFilteredTxHistory, selectedFilter]); - const getDayString = (timestamp: string) => { + const getDayString = (timestamp: string | number) => { const date = new Date(timestamp); const isToday = isSameDay(today, date); const isYesterday = isSameDay(yesterday, date); diff --git a/yarn.lock b/yarn.lock index fe6c66d74..c38fbca38 100644 --- a/yarn.lock +++ b/yarn.lock @@ -45,6 +45,22 @@ "@scure/base" "1.1.5" micro-eth-signer "0.7.2" +"@avalabs/bitcoin-module@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@avalabs/bitcoin-module/-/bitcoin-module-0.1.4.tgz#69e5b0bde655385f737db7394d05f31ffb73752a" + integrity sha512-XDjElNILR8Wpn0RL1ngiYfnyAtjp/eWPn3nC4e2mNMNjZWmWgGHa0Y/flR5vWTWpmd1WNtDxEug2n6l0pTZIlg== + dependencies: + "@avalabs/core-coingecko-sdk" "3.0.1-alpha.1" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" + "@avalabs/core-wallets-sdk" "3.0.1-alpha.1" + "@avalabs/vm-module-types" "0.1.4" + "@metamask/rpc-errors" "6.3.0" + "@zodios/core" "10.9.6" + big.js "6.2.1" + bitcoinjs-lib "5.2.0" + bn.js "5.2.1" + zod "3.23.8" + "@avalabs/bridge-unified@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@avalabs/bridge-unified/-/bridge-unified-2.1.0.tgz#2b247cf46df387aeac8633b016419a056e12567b" @@ -54,42 +70,42 @@ lodash "4.17.21" viem "1.19.8" -"@avalabs/core-bridge-sdk@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-bridge-sdk/-/core-bridge-sdk-3.0.0.tgz#e5375e31c4939e5fe659349899f302070c2ec657" - integrity sha512-i/7BjMnnQhgs4E9trOuGDml9jmxyv1O02D7EXLe7lZQ0w4HrkYeol4p7j43qLfqPszb6yCMCo8Ra4iCFbv4kUA== +"@avalabs/core-bridge-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-bridge-sdk/-/core-bridge-sdk-3.0.1-alpha.1.tgz#ffa80432656374f57dc1a462a8d3044b45c2ee03" + integrity sha512-5QhLpYvqGatp+P9ekspw+qjXjcNey1D16HBBw8R8vAv15zcYlFwWsthOB72Ngn2L8lEpQVO8naPF2STM3tIbRg== dependencies: - "@avalabs/core-coingecko-sdk" "^3.0.0" - "@avalabs/core-utils-sdk" "^3.0.0" - "@avalabs/core-wallets-sdk" "^3.0.0" + "@avalabs/core-coingecko-sdk" "3.0.1-alpha.1" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" + "@avalabs/core-wallets-sdk" "3.0.1-alpha.1" -"@avalabs/core-chains-sdk@3.0.0", "@avalabs/core-chains-sdk@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-chains-sdk/-/core-chains-sdk-3.0.0.tgz#b5c2f92d8709881f821b68495ed8f89b1adbb3e0" - integrity sha512-7l5cpam+5kEXELTJ5zlheoyFAAe9bBGcgZv3pZCHAMeRrSMVMpHfoAH8upw05kc9Xl7wre3bouQJF6zkheyjMw== +"@avalabs/core-chains-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-chains-sdk/-/core-chains-sdk-3.0.1-alpha.1.tgz#c24c2981eb8460a304949472bfa07581d925f17a" + integrity sha512-9scLLf3b1DUp03IUW66OwyX73MBcU2JO+NleDVxTp4Qh4ENcdDKKmkHLEcx1dkpl94prda8wITv0COS2q6ZRPw== dependencies: - "@avalabs/core-utils-sdk" "^3.0.0" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" -"@avalabs/core-coingecko-sdk@3.0.0", "@avalabs/core-coingecko-sdk@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-coingecko-sdk/-/core-coingecko-sdk-3.0.0.tgz#3c9cb42c2d7586b54f440a840fbcc35d412bd2c4" - integrity sha512-J3idot3eY3TdGpZU+bp8j5c9aebWGmI+44i4kEx02PjIuRlzcT1xU74U2PpuQBJOLl+Ug9Xo9SLo2i9sk52q8w== +"@avalabs/core-coingecko-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-coingecko-sdk/-/core-coingecko-sdk-3.0.1-alpha.1.tgz#24d1584c91290722462397e80888fd0d10f8d2c7" + integrity sha512-V0fx3mVXBJaqyhKTYDGSki51TM17XB+3fHQjVnsMplT0VGOkEW2DtXLVi2/6fTDAeKU6/LUitZaySniZC8NNJg== dependencies: - "@avalabs/core-utils-sdk" "^3.0.0" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" -"@avalabs/core-covalent-sdk@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-covalent-sdk/-/core-covalent-sdk-3.0.0.tgz#b19471eb3f50b9cf391725b40710dc03e4d79c41" - integrity sha512-6zKpuRYjJz70aenhX5Tg+9EfHsxWEOgCJv14jCtsRle8Y5NEXMd+qlgtG4RShkHSVKVsWRWeh6U05hutv4DYUg== +"@avalabs/core-covalent-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-covalent-sdk/-/core-covalent-sdk-3.0.1-alpha.1.tgz#8d96420d6fbc25a858c317273ae402bbd23276d5" + integrity sha512-uzo1a4iMCjzyVsoP6qKyXJfaHeyJ13VB/+fNR1JYPnMRr3ed72ivbp/eXQhKN8C37JpFBkZRMfmTUCQgMylAuA== dependencies: - "@avalabs/core-utils-sdk" "^3.0.0" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" -"@avalabs/core-etherscan-sdk@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-etherscan-sdk/-/core-etherscan-sdk-3.0.0.tgz#0d9625f4497b784c10107c195967226ec41cbabb" - integrity sha512-bHyct1Ss6DK7wJbbi1EW1tUHlLt71q/8xOOTbI7PeeOIum02HDmJqeNt3X3iUkIyq6WOnszuCA6AsGt98RGpNg== +"@avalabs/core-etherscan-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-etherscan-sdk/-/core-etherscan-sdk-3.0.1-alpha.1.tgz#2bb1b7cedf6aeec90a35334f289dbbea02cb033f" + integrity sha512-j/J9Fnz8Zp911dPmbloz2t5SfRZYeoS20ABwv0t9GmYbaHw//92LVzTYvuTXzCLu7EWtnZpGDF5WQw/2bpqm7Q== dependencies: - "@avalabs/core-utils-sdk" "^3.0.0" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" "@avalabs/core-k2-components@4.18.0-alpha.47": version "4.18.0-alpha.47" @@ -114,38 +130,38 @@ react-hotkeys-hook "4.4.3" uuid "9.0.1" -"@avalabs/core-snowtrace-sdk@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-snowtrace-sdk/-/core-snowtrace-sdk-3.0.0.tgz#3ea02a56480addd64fbb1b8b49ab6981c6cf22e4" - integrity sha512-Tr9cEzHSiRRb3467pGoOG1JnoMH8AvC/Mx6pg+Xj3TvxgY5vnTPyyLb72TzMnGl06SsUL9tpsyPHa7htp0YneA== +"@avalabs/core-snowtrace-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-snowtrace-sdk/-/core-snowtrace-sdk-3.0.1-alpha.1.tgz#ac3d09c6faf1917d014c3e343500329e583dc621" + integrity sha512-UVTolqyKFxLF5niNJtg0I8NhLWBrhtOJw+/xqazHADdbyx1EtWH0L1Ovz6oX7QBLkdoE3sXdyTcXAk8z1A2OBw== dependencies: - "@avalabs/core-utils-sdk" "^3.0.0" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" -"@avalabs/core-token-prices-sdk@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-token-prices-sdk/-/core-token-prices-sdk-3.0.0.tgz#8f390ba11eb6ac00dca7bb32393702d3e4cafdd3" - integrity sha512-X4JzhTUJi8zKv/XdFh66z4/az4Pyn4DHeQYc4HccSZ/4/5tMixF9tYIXaQAlMbUTTAGKoKj5IOT3hIE3Z1y7aw== +"@avalabs/core-token-prices-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-token-prices-sdk/-/core-token-prices-sdk-3.0.1-alpha.1.tgz#602188ec545a44808e9f5f6e9b5dae82a1215cc3" + integrity sha512-Y9iG6MYHtsNgxBUknOfdotmecdh4HkP60w1Z/jdcftuHrgOfkzI/8YCjKao+fEhgftouQodUMR6QnpRJnax+Fw== dependencies: - "@avalabs/core-coingecko-sdk" "^3.0.0" - "@avalabs/core-utils-sdk" "^3.0.0" + "@avalabs/core-coingecko-sdk" "3.0.1-alpha.1" + "@avalabs/core-utils-sdk" "3.0.1-alpha.1" -"@avalabs/core-utils-sdk@3.0.0", "@avalabs/core-utils-sdk@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-utils-sdk/-/core-utils-sdk-3.0.0.tgz#2712645c5dc4da3fe725fd7ebf0ee415aa0ebc93" - integrity sha512-XBIepxf/UtCRGQNPB8/OYG4bLNSgETaePJjplcRO7oQzgn20DU99534F7adiS0ew3krsJ7HW2cro2gYAwROgZA== +"@avalabs/core-utils-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-utils-sdk/-/core-utils-sdk-3.0.1-alpha.1.tgz#c29bdcf778118868bf7d319bd5f83175cc9b4a0b" + integrity sha512-+Wr7JA6dZgeTSuwoh0KcM8AK7CbJZnIdxZ2arm5piSkaTPZzuAkYUOE/sVDxGqrzPWZQptDclfvJxeIhfuijIw== dependencies: "@avalabs/avalanchejs" "4.0.5" "@hpke/core" "1.2.5" is-ipfs "6.0.2" -"@avalabs/core-wallets-sdk@3.0.0", "@avalabs/core-wallets-sdk@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/core-wallets-sdk/-/core-wallets-sdk-3.0.0.tgz#25a57d6af5e98f48243bf70da533b5b7b373ab8e" - integrity sha512-Voml0K8h7FdW8u/n0pgaxR/zGKQ7z4kkX/wboBBjX589Dw/RcHY/WIyQXsfy5qvZZRDjY/lImIYM28UdEW8uPA== +"@avalabs/core-wallets-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/core-wallets-sdk/-/core-wallets-sdk-3.0.1-alpha.1.tgz#6e6d1a6da6799f7753cec9549f2e166f766c45be" + integrity sha512-q4zMx7CpcKwv2PqIaBdALQ7LZts9WeOju/oOdPHHtLqVEksXkPDPyzY4zxJEb7zLAMaLz1YvpP4Cr7cGqBzgtg== dependencies: "@avalabs/avalanchejs" "4.0.5" - "@avalabs/core-chains-sdk" "^3.0.0" - "@avalabs/glacier-sdk" "^3.0.0" + "@avalabs/core-chains-sdk" "3.0.1-alpha.1" + "@avalabs/glacier-sdk" "3.0.1-alpha.1" "@avalabs/hw-app-avalanche" "0.14.1" "@ledgerhq/hw-app-btc" "10.2.4" "@ledgerhq/hw-app-eth" "6.36.1" @@ -167,10 +183,10 @@ resolved "https://registry.yarnpkg.com/@avalabs/glacier-sdk/-/glacier-sdk-2.8.0-alpha.188.tgz#82e4efc4be55b2f67a825e033863a25a14a13915" integrity sha512-NjtlHXWpxC7aDZE+USb5YkZ1In+IjkCi/THHxOZg0ahv2RyccUiA75VU+daZ0zAZWgIUQCutniTB46HFq5Sjbw== -"@avalabs/glacier-sdk@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@avalabs/glacier-sdk/-/glacier-sdk-3.0.0.tgz#aa290877dd62e984e720750a19abe5b8e6b6a51a" - integrity sha512-NZOjqDRgM8S/vm9k7cWa8KYnhhvakaNIOb3pz1qn2jK+uYzyFh8X5MT+QhmVQcwfOiXt62Yhh0PUKHwpU+aTyg== +"@avalabs/glacier-sdk@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/glacier-sdk/-/glacier-sdk-3.0.1-alpha.1.tgz#7cd1fe5d534beb0c5370642a8bb22ad94bc14e48" + integrity sha512-cSf4w0dW2Kin2ImclGikT6zLm8ysNI3y9Nbzbt31tJvNj3WNQwxMO+9BUp+j9UWEhMMOOizal3t4/ieir/XKmw== "@avalabs/hw-app-avalanche@0.14.1": version "0.14.1" @@ -183,15 +199,15 @@ ledger-bitcoin "^0.2.1" sha3 "2.1.4" -"@avalabs/types@2.8.0-alpha.188": - version "2.8.0-alpha.188" - resolved "https://registry.yarnpkg.com/@avalabs/types/-/types-2.8.0-alpha.188.tgz#5f3d6df1983474c362e4345dd7acca7ed18052a3" - integrity sha512-sDKcOzKCvRRjuxPLThsf5KkTj874Ps6Ejoqt5HvrHUEsd5FqcN2TwpXLPrmD+0YPrCyAQ67G3Cdhl+VMBRrNQg== +"@avalabs/types@3.0.1-alpha.1": + version "3.0.1-alpha.1" + resolved "https://registry.yarnpkg.com/@avalabs/types/-/types-3.0.1-alpha.1.tgz#f0c213652fa0ba9f674e438dbad4eb6274cff61a" + integrity sha512-2Rysz0akLzn97VGNxBKuxKNY0GLgtVrbPw1RRJN2KHECAFGj5hMWdfQP5oI+7KfPegM3xenDmKlgrw41UOVbCg== -"@avalabs/vm-module-types@0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@avalabs/vm-module-types/-/vm-module-types-0.1.0.tgz#bea2bee27fa92bec0901608645e1c3ea5f36e631" - integrity sha512-t3vgsVW4LHZB2D/0M7RHmNriQ2Km+xdY/TUJl32F7Mimi2grRpv1zpGL16tPBlIs1ZWFTCQ5pmoNbA9Evq6sFA== +"@avalabs/vm-module-types@0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@avalabs/vm-module-types/-/vm-module-types-0.1.4.tgz#e6c0dfc595f06404ddd513d9134433ede71fa623" + integrity sha512-zlvAvZc1dp3VaMFApMQ0clooICt955aklh6zxDqUW4wPR1mHozI0TLUMZd8NXXFhW8OjFITaNEUb802h2qtkRA== dependencies: "@metamask/rpc-errors" "6.3.0" ethers "6.8.1" @@ -6763,6 +6779,11 @@ resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== +"@zodios/core@10.9.6": + version "10.9.6" + resolved "https://registry.yarnpkg.com/@zodios/core/-/core-10.9.6.tgz#64ad831216e6ffa71679ea6be8d1ed882bb04d83" + integrity sha512-aH4rOdb3AcezN7ws8vDgBfGboZMk2JGGzEq/DtW65MhnRxyTGRuLJRWVQ/2KxDgWvV2F5oTkAS+5pnjKbl0n+A== + "@zxing/browser@^0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@zxing/browser/-/browser-0.1.1.tgz#f5d6c0a57bda3b223539eadfa3d87c1260e0536f" @@ -7771,7 +7792,7 @@ bfj@^7.0.2: hoopy "^0.1.4" tryer "^1.0.1" -big.js@6.1.1, big.js@^5.2.2: +big.js@6.1.1, big.js@6.2.1, big.js@^5.2.2: version "6.1.1" resolved "https://registry.yarnpkg.com/big.js/-/big.js-6.1.1.tgz#63b35b19dc9775c94991ee5db7694880655d5537" integrity sha512-1vObw81a8ylZO5ePrtMay0n018TcftpTA5HFKDaSuiUDBo8biRBtjIobw60OpwuvrGk+FsxKamqN4cnmj/eXdg==