From c3af0bfa89fdbd719b68419c0cb675cfbe72d7be Mon Sep 17 00:00:00 2001
From: vvava <94397450+vvava@users.noreply.github.com>
Date: Thu, 13 Feb 2025 20:06:06 +0100
Subject: [PATCH 1/6] feat: CP-9866 redesign the account switcher add address
menu (#135)
---
src/localization/locales/en/translation.json | 17 +-
src/pages/Accounts/Accounts.tsx | 3 -
.../components/AccountsActionButton.tsx | 445 ++++++++++++------
3 files changed, 309 insertions(+), 156 deletions(-)
diff --git a/src/localization/locales/en/translation.json b/src/localization/locales/en/translation.json
index 6aef1b47..f158972c 100644
--- a/src/localization/locales/en/translation.json
+++ b/src/localization/locales/en/translation.json
@@ -32,11 +32,9 @@
"Active Wallet:": "Active Wallet:",
"Activity": "Activity",
"Add one recovery method to continue.": "Add one recovery method to continue.",
- "Add Address via": "Add Address via",
"Add Custom Token": "Add Custom Token",
"Add Delegator": "Add Delegator",
"Add Network": "Add Network",
- "Add New Address": "Add New Address",
"Add New Asset?": "Add New Asset?",
"Add New Network?": "Add New Network?",
"Add Next": "Add Next",
@@ -53,12 +51,14 @@
"Add Wallet with Recovery Phrase": "Add Wallet with Recovery Phrase",
"Add a Passkey as a recovery method.": "Add a Passkey as a recovery method.",
"Add a Yubikey as a recovery method.": "Add a Yubikey as a recovery method.",
+ "Add a new account to your active wallet": "Add a new account to your active wallet",
"Add a {{device}} name, so that itβs easier to find later.": "Add a {{device}} name, so that itβs easier to find later.",
"Add account(s) by entering a valid recovery phrase.": "Add account(s) by entering a valid recovery phrase.",
"Add an account by entering a private key": "Add an account by entering a private key",
"Add assets": "Add assets",
"Add assets by Buying or Receiving": "Add assets by Buying or Receiving",
"Add assets by clicking the button below": "Add assets by clicking the button below",
+ "Add or Connect Wallet": "Add or Connect Wallet",
"Add using Keystone": "Add using Keystone",
"Add using Ledger": "Add using Ledger",
"Address": "Address",
@@ -195,6 +195,7 @@
"Connect Network": "Connect Network",
"Connect Software Wallet": "Connect Software Wallet",
"Connect the Ledger device to your computer.": "Connect the Ledger device to your computer.",
+ "Connect using Wallet Connect": "Connect using Wallet Connect",
"Connect your Ledger": "Connect your Ledger",
"Connect your Ledger device and open the {{appType}} App to approve this transaction": "Connect your Ledger device and open the {{appType}} App to approve this transaction",
"Connect your Wallet": "Connect your Wallet",
@@ -237,6 +238,7 @@
"Create Asset": "Create Asset",
"Create Blockchain": "Create Blockchain",
"Create Chain": "Create Chain",
+ "Create New Account ": "Create New Account ",
"Create New Password": "Create New Password",
"Create Subnet": "Create Subnet",
"Currency": "Currency",
@@ -417,8 +419,14 @@
"Import": "Import",
"Import Details": "Import Details",
"Import Duplicate Account?": "Import Duplicate Account?",
+ "Import Fireblocks Account": "Import Fireblocks Account",
"Import Keystore File": "Import Keystore File",
+ "Import Ledger Wallet": "Import Ledger Wallet",
"Import Private Key": "Import Private Key",
+ "Import Recovery Phrase": "Import Recovery Phrase",
+ "Import a single-chain account": "Import a single-chain account",
+ "Import account with Wallet Connect": "Import account with Wallet Connect",
+ "Import accounts from another wallet": "Import accounts from another wallet",
"Imported": "Imported",
"Imported Private Key": "Imported Private Key",
"In order for this network to be fully functional, you need to provide your Glacier API key. You will be prompted to do so upon approval.": "In order for this network to be fully functional, you need to provide your Glacier API key. You will be prompted to do so upon approval.",
@@ -463,7 +471,6 @@
"Keystone": "Keystone",
"Keystone Support": "Keystone Support",
"Keystone {{number}}": "Keystone {{number}}",
- "Keystore File": "Keystore File",
"Korean": "Korean",
"Language": "Language",
"Learn More": "Learn More",
@@ -629,7 +636,6 @@
"Please reconnect using Wallet Connect to add this network to authorized networks.": "Please reconnect using Wallet Connect to add this network to authorized networks.",
"Please refer to Active Transfers list in your Fireblocks Console for a detailed explanation.": "Please refer to Active Transfers list in your Fireblocks Console for a detailed explanation.",
"Please remove address prefix. (P- or X-)": "Please remove address prefix. (P- or X-)",
- "Please select a wallet": "Please select a wallet",
"Please sign on your mobile wallet.": "Please sign on your mobile wallet.",
"Please switch to Avalanche C-Chain to import your Fireblocks account.": "Please switch to Avalanche C-Chain to import your Fireblocks account.",
"Please switch to the {{requiredAppType}} app on your Ledger": "Please switch to the {{requiredAppType}} app on your Ledger",
@@ -981,11 +987,14 @@
"Update": "Update",
"Update Required": "Update Required",
"Upload Keystore File": "Upload Keystore File",
+ "Use Fireblocks application": "Use Fireblocks application",
+ "Use a keystore from the Avalanche Wallet": "Use a keystore from the Avalanche Wallet",
"Use an authenticator app as a recovery method.": "Use an authenticator app as a recovery method.",
"Use any authenticator app to scan the QR code. Or enter code manually.": "Use any authenticator app to scan the QR code. Or enter code manually.",
"Use any authenticator app and paste in the code found below.": "Use any authenticator app and paste in the code found below.",
"Use caution, this application may be malicious.": "Use caution, this application may be malicious.",
"Use caution, this transaction may be malicious.": "Use caution, this transaction may be malicious.",
+ "Use your Ledger hardware wallet": "Use your Ledger hardware wallet",
"User declined the transaction": "User declined the transaction",
"User rejected the request": "User rejected the request",
"Users may not use the Bridge if they are on the Specially Designated Nationals (SDN) List of the Office of Foreign Assets Control (OFAC) or any other sanctions or are otherwise a sanctioned person or from a sanctioned jurisdiction": "Users may not use the Bridge if they are on the Specially Designated Nationals (SDN) List of the Office of Foreign Assets Control (OFAC) or any other sanctions or are otherwise a sanctioned person or from a sanctioned jurisdiction",
diff --git a/src/pages/Accounts/Accounts.tsx b/src/pages/Accounts/Accounts.tsx
index b9ce23ff..ae222121 100644
--- a/src/pages/Accounts/Accounts.tsx
+++ b/src/pages/Accounts/Accounts.tsx
@@ -254,9 +254,6 @@ export function Accounts() {
)}
diff --git a/src/pages/Accounts/components/AccountsActionButton.tsx b/src/pages/Accounts/components/AccountsActionButton.tsx
index 0a9e93ea..c0b0009b 100644
--- a/src/pages/Accounts/components/AccountsActionButton.tsx
+++ b/src/pages/Accounts/components/AccountsActionButton.tsx
@@ -1,6 +1,5 @@
import {
Button,
- ButtonGroup,
ChevronDownIcon,
ClickAwayListener,
Grow,
@@ -14,9 +13,12 @@ import {
Tooltip,
ListIcon,
Typography,
- TypographyProps,
LedgerIcon,
KeystoreIcon,
+ Box,
+ ChevronRightIcon,
+ Stack,
+ PlusIcon,
} from '@avalabs/core-k2-components';
import { useCallback, useMemo, useRef, useState } from 'react';
import { useTranslation } from 'react-i18next';
@@ -34,52 +36,34 @@ type AccountsActionButtonProps = {
isLoading: boolean;
canCreateAccount: boolean;
onAddNewAccount: () => void;
- createAccountTooltip?: string;
};
-const StyledMenuItem = styled(MenuItem)`
- color: ${({ theme }) => theme.palette.text.secondary};
- &:hover {
- color: ${({ theme }) => theme.palette.text.primary};
- }
+const MenuItemColumn = styled(Stack)`
+ flex-direction: row;
+ align-items: center;
+ width: 100%;
+ justify-content: space-between;
+ border-bottom: 1px solid
+ ${({ theme, hasNoBorder }) =>
+ hasNoBorder ? 'transparent' : theme.palette.grey[800]};
+ padding-top: ${({ theme }) => theme.spacing(1.5)};
+ padding-bottom: ${({ theme }) => theme.spacing(1.5)};
`;
-const RoundedButtonGroup = styled(ButtonGroup)`
- & > .MuiButtonGroup-grouped {
- border-radius: 0;
- height: 40px;
-
- &:not(:last-of-type) {
- margin-right: 1px;
-
- &.Mui-disabled {
- margin-right: 1px;
- }
- }
-
- &:first-of-type {
- border-radius: 24px 0 0 24px;
- }
-
- &:last-of-type {
- border-radius: 0 24px 24px 0;
- }
- }
+const StyledMenuItem = styled(MenuItem)`
+ cursor: pointer;
+ padding: 0;
+ width: 100%;
`;
-const MenuHeader = (props: TypographyProps) => (
-
-);
+const IconColumn = styled(Stack)`
+ padding-right: ${({ theme }) => theme.spacing(2)};
+ padding-left: ${({ theme }) => theme.spacing(2)};
+`;
export const AccountsActionButton = ({
isLoading,
onAddNewAccount,
- createAccountTooltip,
canCreateAccount,
}: AccountsActionButtonProps) => {
const [isMenuOpen, setIsMenuOpen] = useState(false);
@@ -138,135 +122,298 @@ export const AccountsActionButton = ({
}, [t, network]);
return (
-
- setIsMenuOpen(false)}>
+
-
- setIsMenuOpen(false)}>
-
-
-
+ {featureFlags[FeatureGates.ADD_WALLET_WITH_SEEDPHRASE] && (
+
+
+
+
+
+
+
+
+ {t('Import Recovery Phrase')}
+
+
+
+
+ {t('Import accounts from another wallet')}
+
+
+
+
+
+
+
+
+ )}
+ {featureFlags[FeatureGates.ADD_WALLET_WITH_LEDGER] && (
+
+
+
+
+
+
+
+
+ {t('Import Ledger Wallet')}
+
+
+
+
+ {t('Use your Ledger hardware wallet')}
+
+
+
+
+
+
+
+
+ )}
+ {featureFlags[FeatureGates.ADD_WALLET_WITH_KEYSTORE_FILE] && (
+
+
+
+
+
+
+
+
+ {t('Import Keystore File')}
+
+
+
+
+ {t('Use a keystore from the Avalanche Wallet')}
+
+
+
+
+
+
+
+
+ )}
+ {canCreateAccount && (
+ {
+ onAddNewAccount();
+ setIsMenuOpen(false);
+ }}
+ data-testid={'add-primary-account'}
+ >
+
+
+
+
+
+
+
+ {t('Create New Account ')}
+
+
+
+
+ {t('Add a new account to your active wallet')}
+
+
+
+
+
+
+
+
+ )}
+
+
+ )}
+
+
+
);
};
From 49b65e77d7207c95ce4bc24df9725cc57d5bcced Mon Sep 17 00:00:00 2001
From: vvava <94397450+vvava@users.noreply.github.com>
Date: Thu, 13 Feb 2025 20:06:56 +0100
Subject: [PATCH 2/6] feat: add balance polling to two other pages (#138)
---
src/pages/Home/components/Portfolio/Assets.tsx | 6 ++++++
src/pages/Wallet/TokenFlow.tsx | 6 ++++++
2 files changed, 12 insertions(+)
diff --git a/src/pages/Home/components/Portfolio/Assets.tsx b/src/pages/Home/components/Portfolio/Assets.tsx
index cb1656f8..d41a7302 100644
--- a/src/pages/Home/components/Portfolio/Assets.tsx
+++ b/src/pages/Home/components/Portfolio/Assets.tsx
@@ -28,12 +28,16 @@ import { isBitcoinNetwork } from '@src/background/services/network/utils/isBitco
import { useAnalyticsContext } from '@src/contexts/AnalyticsProvider';
import { useTokenPriceMissing } from '@src/hooks/useTokenPriceIsMissing';
import { PAndL } from '@src/components/common/ProfitAndLoss';
+import { useLiveBalance } from '@src/hooks/useLiveBalance';
+import { TokenType } from '@avalabs/vm-module-types';
enum AssetsTabs {
TOKENS,
ACTIVITY,
}
+const POLLED_BALANCES = [TokenType.NATIVE, TokenType.ERC20];
+
export function Assets() {
const { t } = useTranslation();
const { network } = useNetworkContext();
@@ -70,6 +74,8 @@ export function Assets() {
return isPriceMissingFromNetwork(network?.chainId);
}, [isPriceMissingFromNetwork, network]);
+ useLiveBalance(POLLED_BALANCES);
+
return (
Date: Thu, 13 Feb 2025 20:07:48 +0100
Subject: [PATCH 3/6] feat: cp-9885 autolock the extension after a given time
(#143)
---
manifest/manifest.json | 3 +-
.../connections/ConnectionService.ts | 10 +-----
.../KeepaliveConnectionController.ts | 22 ------------
src/background/services/lock/LockService.ts | 35 ++++++++++++-------
src/background/services/lock/models.ts | 4 +++
src/contentscript.ts | 19 ++--------
6 files changed, 31 insertions(+), 62 deletions(-)
delete mode 100644 src/background/connections/keepaliveConnection/KeepaliveConnectionController.ts
diff --git a/manifest/manifest.json b/manifest/manifest.json
index 1189dbb1..5d8ae5f3 100644
--- a/manifest/manifest.json
+++ b/manifest/manifest.json
@@ -40,7 +40,8 @@
"notifications",
"tabs",
"scripting",
- "identity"
+ "identity",
+ "alarms"
],
"host_permissions": ["file://*/*", "http://*/*", "https://*/*"],
"oauth2": {
diff --git a/src/background/connections/ConnectionService.ts b/src/background/connections/ConnectionService.ts
index 7c4a1b02..4929951e 100644
--- a/src/background/connections/ConnectionService.ts
+++ b/src/background/connections/ConnectionService.ts
@@ -1,13 +1,8 @@
import browser, { Runtime } from 'webextension-polyfill';
-import {
- CONTENT_SCRIPT,
- EXTENSION_SCRIPT,
- KEEPALIVE_SCRIPT,
-} from '@src/common';
+import { CONTENT_SCRIPT, EXTENSION_SCRIPT } from '@src/common';
import { container, singleton } from 'tsyringe';
import { DAppConnectionController } from './dAppConnection/DAppConnectionController';
import { ConnectionController } from './models';
-import { KeepaliveConnectionController } from './keepaliveConnection/KeepaliveConnectionController';
import { ExtensionConnectionController } from './extensionConnection/ExtensionConnectionController';
import { CallbackManager } from '../runtime/CallbackManager';
@@ -46,10 +41,7 @@ export class ConnectionService {
connectionController = container.resolve(ExtensionConnectionController);
} else if (connection.name === CONTENT_SCRIPT) {
connectionController = container.resolve(DAppConnectionController);
- } else if (connection.name === KEEPALIVE_SCRIPT) {
- connectionController = container.resolve(KeepaliveConnectionController);
}
-
connectionController?.connect(connection);
return connectionController;
diff --git a/src/background/connections/keepaliveConnection/KeepaliveConnectionController.ts b/src/background/connections/keepaliveConnection/KeepaliveConnectionController.ts
deleted file mode 100644
index 922c1b46..00000000
--- a/src/background/connections/keepaliveConnection/KeepaliveConnectionController.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { Runtime } from 'webextension-polyfill';
-import { ConnectionController } from '../models';
-
-export class KeepaliveConnectionController implements ConnectionController {
- private connection?: Runtime.Port;
-
- connect(connection: Runtime.Port) {
- this.connection = connection;
- this.connection.onMessage.addListener(this.onMessage);
- setTimeout(() => {
- connection.disconnect();
- }, 60000);
- }
-
- disconnect() {
- this.connection?.onMessage.removeListener(this.onMessage);
- }
-
- private onMessage(val: any) {
- console.log('KEEPALIVE MESSAGE', val);
- }
-}
diff --git a/src/background/services/lock/LockService.ts b/src/background/services/lock/LockService.ts
index bade7c6a..ec4fcf02 100644
--- a/src/background/services/lock/LockService.ts
+++ b/src/background/services/lock/LockService.ts
@@ -8,15 +8,17 @@ import {
LOCK_TIMEOUT,
SessionAuthData,
SESSION_AUTH_DATA_KEY,
+ AlarmsEvents,
} from './models';
+import { OnAllExtensionClosed } from '@src/background/runtime/lifecycleCallbacks';
@singleton()
-export class LockService {
+export class LockService implements OnAllExtensionClosed {
private eventEmitter = new EventEmitter();
private _locked = true;
- private lockCheckInterval?: any;
+ #autoLockInMinutes = 30;
public get locked(): boolean {
return this._locked;
@@ -28,6 +30,15 @@ export class LockService {
) {}
async activate() {
+ chrome.runtime.onConnect.addListener(() => {
+ chrome.alarms.clear(AlarmsEvents.AUTO_LOCK);
+ });
+
+ chrome.alarms.onAlarm.addListener((alarm) => {
+ if (alarm.name === AlarmsEvents.AUTO_LOCK) {
+ this.lock();
+ }
+ });
const authData =
await this.storageService.loadFromSessionStorage(
SESSION_AUTH_DATA_KEY,
@@ -43,7 +54,14 @@ export class LockService {
}
await this.unlock(authData.password);
- this.startAutoLockInterval(authData?.loginTime);
+ }
+
+ onAllExtensionsClosed(): void | Promise {
+ if (!this._locked) {
+ chrome.alarms.create(AlarmsEvents.AUTO_LOCK, {
+ periodInMinutes: this.#autoLockInMinutes,
+ });
+ }
}
async unlock(password: string) {
@@ -78,16 +96,6 @@ export class LockService {
await this.storageService.changePassword(oldPassword, newPassword);
}
- private startAutoLockInterval(loginTime: number) {
- const timeToLock = loginTime + LOCK_TIMEOUT;
- this.lockCheckInterval = setInterval(() => {
- if (Date.now() > timeToLock) {
- clearInterval(this.lockCheckInterval);
- this.lock();
- }
- }, 60000);
- }
-
async verifyPassword(password: string): Promise {
const authData =
await this.storageService.loadFromSessionStorage(
@@ -104,6 +112,7 @@ export class LockService {
this.eventEmitter.emit(LockEvents.LOCK_STATE_CHANGED, {
isUnlocked: false,
});
+ chrome.alarms.clear(AlarmsEvents.AUTO_LOCK);
}
addListener(
diff --git a/src/background/services/lock/models.ts b/src/background/services/lock/models.ts
index a4a0381e..8806ed1b 100644
--- a/src/background/services/lock/models.ts
+++ b/src/background/services/lock/models.ts
@@ -9,6 +9,10 @@ export enum LockEvents {
LOCK_STATE_CHANGED = 'LockServiceEvents:Lock',
}
+export enum AlarmsEvents {
+ AUTO_LOCK = 'auto-lock',
+}
+
export interface LockStateChangedEventPayload {
isUnlocked: boolean;
}
diff --git a/src/contentscript.ts b/src/contentscript.ts
index 0966526e..73272a87 100644
--- a/src/contentscript.ts
+++ b/src/contentscript.ts
@@ -1,5 +1,5 @@
-import { CONTENT_SCRIPT, KEEPALIVE_SCRIPT } from './common';
-import browser, { Runtime } from 'webextension-polyfill';
+import { CONTENT_SCRIPT } from './common';
+import browser from 'webextension-polyfill';
import PortConnection from './background/utils/messaging/PortConnection';
import onPageActivated from './background/providers/utils/onPageActivated';
import AutoPairingPostMessageConnection from './background/utils/messaging/AutoPairingPostMessageConnection';
@@ -30,21 +30,6 @@ function setupStream() {
backgroundConnection.dispose();
});
- let backgroundKeepaliveConnection: Runtime.Port | null = null;
-
- function keepAlive() {
- if (backgroundKeepaliveConnection) return;
- backgroundKeepaliveConnection = browser.runtime.connect({
- name: KEEPALIVE_SCRIPT,
- });
- backgroundKeepaliveConnection?.onDisconnect.addListener(() => {
- backgroundKeepaliveConnection = null;
- keepAlive();
- });
- }
-
- keepAlive();
-
backgroundConnection.on('disconnect', () => {
console.log('reconnecting...');
setupStream();
From cea1f31f332907238ecf6f0a3c637fd7b5cb53f1 Mon Sep 17 00:00:00 2001
From: vvava <94397450+vvava@users.noreply.github.com>
Date: Thu, 13 Feb 2025 20:08:17 +0100
Subject: [PATCH 4/6] feat: CP-9247 add toast to swap status (#146)
---
.../SwapProvider/SwapProvider.test.tsx | 10 +++
src/contexts/SwapProvider/SwapProvider.tsx | 65 +++++++++++++++----
src/pages/Swap/Swap.tsx | 1 -
.../Swap/components/SwapPendingToast.tsx | 26 ++++++++
4 files changed, 88 insertions(+), 14 deletions(-)
create mode 100644 src/pages/Swap/components/SwapPendingToast.tsx
diff --git a/src/contexts/SwapProvider/SwapProvider.test.tsx b/src/contexts/SwapProvider/SwapProvider.test.tsx
index 4bd3e4d2..492e7c35 100644
--- a/src/contexts/SwapProvider/SwapProvider.test.tsx
+++ b/src/contexts/SwapProvider/SwapProvider.test.tsx
@@ -90,6 +90,16 @@ jest.mock('react-i18next', () => ({
}));
jest.mock('ethers');
+jest.mock('@avalabs/core-k2-components', () => ({
+ toast: {
+ success: jest.fn(),
+ loading: jest.fn(),
+ dismiss: jest.fn(),
+ error: jest.fn(),
+ custom: jest.fn(),
+ remove: jest.fn(),
+ },
+}));
describe('contexts/SwapProvider', () => {
const connectionContext = {
diff --git a/src/contexts/SwapProvider/SwapProvider.tsx b/src/contexts/SwapProvider/SwapProvider.tsx
index 3b9a5134..ce28a6e4 100644
--- a/src/contexts/SwapProvider/SwapProvider.tsx
+++ b/src/contexts/SwapProvider/SwapProvider.tsx
@@ -1,4 +1,4 @@
-import { createContext, useCallback, useContext, useMemo } from 'react';
+import { createContext, useCallback, useContext, useMemo, useRef } from 'react';
import type { JsonRpcBatchInternal } from '@avalabs/core-wallets-sdk';
import { TransactionParams } from '@avalabs/evm-module';
import { resolve } from '@avalabs/core-utils-sdk';
@@ -45,6 +45,8 @@ import { assert, assertPresent } from '@src/utils/assertions';
import { CommonError } from '@src/utils/errors';
import { useWalletContext } from '../WalletProvider';
import { SecretType } from '@src/background/services/secrets/models';
+import { toast } from '@avalabs/core-k2-components';
+import { SwapPendingToast } from '@src/pages/Swap/components/SwapPendingToast';
export const SwapContext = createContext({} as any);
@@ -63,6 +65,7 @@ export function SwapContextProvider({ children }: { children: any }) {
forceShowTokensWithoutBalances: true,
disallowedAssets: DISALLOWED_SWAP_ASSETS,
});
+ const pendingToastIdRef = useRef('');
const paraswap = useMemo(
() => new ParaSwap(ChainId.AVALANCHE_MAINNET_ID, undefined, new Web3()),
@@ -273,11 +276,23 @@ export function SwapContextProvider({ children }: { children: any }) {
.div(10 ** destDecimals)
.toString();
+ const notificationText = isSuccessful
+ ? t('Swap transaction succeeded! π')
+ : t('Swap transaction failed! β');
+
+ toast.remove(pendingToastIdRef.current);
+
+ if (isSuccessful) {
+ toast.success(notificationText);
+ }
+
+ if (!isSuccessful) {
+ toast.error(notificationText);
+ }
+
browser.notifications.create({
type: 'basic',
- title: isSuccessful
- ? t('Swap transaction succeeded! π')
- : t('Swap transaction failed! β'),
+ title: notificationText,
iconUrl: '../../../../images/icon-256.png',
priority: 2,
message: isSuccessful
@@ -457,6 +472,17 @@ export function SwapContextProvider({ children }: { children: any }) {
swapTxHash = txHash;
}
+ const toastId = toast.custom(
+ toast.remove(toastId)}>
+ {t('Swap pending...')}
+ ,
+
+ {
+ duration: Infinity,
+ },
+ );
+ pendingToastIdRef.current = toastId;
+
notifyOnSwapResult({
provider: avaxProviderC,
txHash: swapTxHash,
@@ -470,15 +496,16 @@ export function SwapContextProvider({ children }: { children: any }) {
});
},
[
- activeAccount,
+ isFlagEnabled,
activeNetwork,
+ networkFee,
+ activeAccount,
avaxProviderC,
+ getSwapTxProps,
buildTx,
- networkFee,
- request,
+ t,
notifyOnSwapResult,
- getSwapTxProps,
- isFlagEnabled,
+ request,
],
);
@@ -569,6 +596,17 @@ export function SwapContextProvider({ children }: { children: any }) {
}),
);
+ const toastId = toast.custom(
+ toast.remove(toastId)}>
+ {t('Swap pending...')}
+ ,
+
+ {
+ duration: Infinity,
+ },
+ );
+ pendingToastIdRef.current = toastId;
+
if (signError || !swapTxHash) {
return throwError(signError);
}
@@ -586,14 +624,15 @@ export function SwapContextProvider({ children }: { children: any }) {
});
},
[
- activeAccount,
activeNetwork,
- avaxProviderC,
- buildTx,
networkFee,
+ activeAccount,
+ avaxProviderC,
+ getSwapTxProps,
request,
+ t,
notifyOnSwapResult,
- getSwapTxProps,
+ buildTx,
],
);
diff --git a/src/pages/Swap/Swap.tsx b/src/pages/Swap/Swap.tsx
index 2a0d2f6f..e377bf98 100644
--- a/src/pages/Swap/Swap.tsx
+++ b/src/pages/Swap/Swap.tsx
@@ -184,7 +184,6 @@ export function Swap() {
}
if (!error) {
- toast.loading(t('Swap pending...'));
history.push('/home');
}
}
diff --git a/src/pages/Swap/components/SwapPendingToast.tsx b/src/pages/Swap/components/SwapPendingToast.tsx
new file mode 100644
index 00000000..41335d9c
--- /dev/null
+++ b/src/pages/Swap/components/SwapPendingToast.tsx
@@ -0,0 +1,26 @@
+import {
+ Card,
+ CircularProgress,
+ Grow,
+ IconButton,
+ Stack,
+ Typography,
+ XIcon,
+} from '@avalabs/core-k2-components';
+
+export const SwapPendingToast = ({ onDismiss, children }) => (
+
+
+
+
+
+
+ {children}
+
+
+
+
+);
From a74e32eca35bafd98a9a7cdb88936c172a5908eb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20Leszczyk?=
Date: Mon, 17 Feb 2025 17:20:55 +0100
Subject: [PATCH 5/6] chore: remove devnet p-chain references (#147)
---
.../services/accounts/AccountsService.ts | 24 -------------------
.../services/network/NetworkService.ts | 14 +----------
.../network/utils/isAvalanchePchainNetwork.ts | 4 +---
.../network/utils/isAvalancheXchainNetwork.ts | 4 +---
.../handlers/avalanche_sendTransaction.ts | 7 +-----
.../handlers/avalanche_signTransaction.ts | 7 +-----
src/utils/caipConversion.ts | 1 -
src/utils/isDevnet.ts | 5 ----
src/utils/network/getProviderForNetwork.ts | 9 +++----
9 files changed, 8 insertions(+), 67 deletions(-)
delete mode 100644 src/utils/isDevnet.ts
diff --git a/src/background/services/accounts/AccountsService.ts b/src/background/services/accounts/AccountsService.ts
index b9483d5d..433e16d7 100644
--- a/src/background/services/accounts/AccountsService.ts
+++ b/src/background/services/accounts/AccountsService.ts
@@ -26,8 +26,6 @@ import getAllAddressesForAccount from '@src/utils/getAllAddressesForAccount';
import { SecretsService } from '../secrets/SecretsService';
import { LedgerService } from '../ledger/LedgerService';
import { WalletConnectService } from '../walletConnect/WalletConnectService';
-import { Network } from '../network/models';
-import { isDevnet } from '@src/utils/isDevnet';
type AddAccountParams = {
walletId: string;
@@ -100,27 +98,8 @@ export class AccountsService implements OnLock, OnUnlock {
// refresh addresses so in case the user switches to testnet mode,
// as the BTC address needs to be updated
this.networkService.developerModeChanged.add(this.onDeveloperModeChanged);
-
- // TODO(@meeh0w):
- // Remove this listener after E-upgrade activation on Fuji. It will be no longer needed.
- this.networkService.uiActiveNetworkChanged.add(
- this.#onActiveNetworkChanged,
- );
}
- #wasDevnet = false;
-
- #onActiveNetworkChanged = async (network?: Network) => {
- if (!network) {
- return;
- }
-
- if (isDevnet(network) !== this.#wasDevnet) {
- this.#wasDevnet = isDevnet(network);
- await this.onDeveloperModeChanged(network?.isTestnet);
- }
- };
-
onLock() {
this.accounts = {
active: undefined,
@@ -131,9 +110,6 @@ export class AccountsService implements OnLock, OnUnlock {
this.networkService.developerModeChanged.remove(
this.onDeveloperModeChanged,
);
- this.networkService.uiActiveNetworkChanged.remove(
- this.#onActiveNetworkChanged,
- );
}
private onDeveloperModeChanged = async (isTestnet?: boolean) => {
diff --git a/src/background/services/network/NetworkService.ts b/src/background/services/network/NetworkService.ts
index dca0664e..af44e8c7 100644
--- a/src/background/services/network/NetworkService.ts
+++ b/src/background/services/network/NetworkService.ts
@@ -18,7 +18,6 @@ import {
NetworkWithCaipId,
} from './models';
import {
- AVALANCHE_P_DEV_NETWORK,
AVALANCHE_XP_NETWORK,
AVALANCHE_XP_TEST_NETWORK,
BITCOIN_NETWORK,
@@ -53,7 +52,6 @@ import {
decorateWithCaipId,
} from '@src/utils/caipConversion';
import { getSyncDomain, isSyncDomain } from './utils/getSyncDomain';
-import { isDevnet } from '@src/utils/isDevnet';
@singleton()
export class NetworkService implements OnLock, OnStorageReady {
@@ -377,9 +375,6 @@ export class NetworkService implements OnLock, OnStorageReady {
return networkList;
}
- private _getPchainDevnet(): Network {
- return decorateWithCaipId(AVALANCHE_P_DEV_NETWORK);
- }
private _getPchainNetwork(isTestnet: boolean): Network {
const network = isTestnet
@@ -449,7 +444,6 @@ export class NetworkService implements OnLock, OnStorageReady {
[ChainId.AVALANCHE_P]: this._getPchainNetwork(false),
[ChainId.AVALANCHE_TEST_X]: this._getXchainNetwork(true),
[ChainId.AVALANCHE_X]: this._getXchainNetwork(false),
- [ChainId.AVALANCHE_DEVNET_P]: this._getPchainDevnet(),
};
} else {
attempt += 1;
@@ -486,13 +480,7 @@ export class NetworkService implements OnLock, OnStorageReady {
* Returns the network object for Avalanche X/P Chains
*/
getAvalancheNetworkXP() {
- // TODO(@meeh0w): clean up after E-upgrade activation on Fuji
- const isDevnetActive =
- this.uiActiveNetwork && isDevnet(this.uiActiveNetwork);
-
- return isDevnetActive
- ? this._getPchainDevnet()
- : this._getXchainNetwork(!this.isMainnet());
+ return this._getXchainNetwork(!this.isMainnet());
}
async getAvalancheNetwork() {
diff --git a/src/background/services/network/utils/isAvalanchePchainNetwork.ts b/src/background/services/network/utils/isAvalanchePchainNetwork.ts
index 8513cb4a..db405e34 100644
--- a/src/background/services/network/utils/isAvalanchePchainNetwork.ts
+++ b/src/background/services/network/utils/isAvalanchePchainNetwork.ts
@@ -9,8 +9,6 @@ export function isPchainNetwork(network?: Network) {
export function isPchainNetworkId(chainId: number) {
return (
- ChainId.AVALANCHE_P === chainId ||
- ChainId.AVALANCHE_TEST_P === chainId ||
- ChainId.AVALANCHE_DEVNET_P === chainId // TODO: to remove this.
+ ChainId.AVALANCHE_P === chainId || ChainId.AVALANCHE_TEST_P === chainId
);
}
diff --git a/src/background/services/network/utils/isAvalancheXchainNetwork.ts b/src/background/services/network/utils/isAvalancheXchainNetwork.ts
index 3bef0c0a..34e8de20 100644
--- a/src/background/services/network/utils/isAvalancheXchainNetwork.ts
+++ b/src/background/services/network/utils/isAvalancheXchainNetwork.ts
@@ -10,8 +10,6 @@ export function isXchainNetwork(network?: Network) {
//TODO: Fix this once we figure out how to separate between x and p chain ID
export function isXchainNetworkId(chainId: number) {
return (
- ChainId.AVALANCHE_X === chainId ||
- ChainId.AVALANCHE_TEST_X === chainId ||
- ChainId.AVALANCHE_DEVNET_X === chainId // TODO: to remove this.
+ ChainId.AVALANCHE_X === chainId || ChainId.AVALANCHE_TEST_X === chainId
);
}
diff --git a/src/background/services/wallet/handlers/avalanche_sendTransaction.ts b/src/background/services/wallet/handlers/avalanche_sendTransaction.ts
index c158a580..3b68169e 100644
--- a/src/background/services/wallet/handlers/avalanche_sendTransaction.ts
+++ b/src/background/services/wallet/handlers/avalanche_sendTransaction.ts
@@ -27,7 +27,6 @@ import { ChainId } from '@avalabs/core-chains-sdk';
import { openApprovalWindow } from '@src/background/runtime/openApprovalWindow';
import { measureDuration } from '@src/utils/measureDuration';
import { HEADERS } from '../../glacier/glacierConfig';
-import { isDevnet } from '@src/utils/isDevnet';
type TxParams = {
transactionHex: string;
@@ -110,11 +109,7 @@ export class AvalancheSendTransactionHandler extends DAppRequestHandler<
: await Avalanche.getUtxosByTxFromGlacier({
transactionHex,
chainAlias,
- network: isDevnet(network)
- ? Network.DEVNET
- : network.isTestnet
- ? Network.FUJI
- : Network.MAINNET,
+ network: network.isTestnet ? Network.FUJI : Network.MAINNET,
url: process.env.GLACIER_URL as string,
token: process.env.GLACIER_API_KEY,
headers: HEADERS,
diff --git a/src/background/services/wallet/handlers/avalanche_signTransaction.ts b/src/background/services/wallet/handlers/avalanche_signTransaction.ts
index 7e9bd415..b7b40472 100644
--- a/src/background/services/wallet/handlers/avalanche_signTransaction.ts
+++ b/src/background/services/wallet/handlers/avalanche_signTransaction.ts
@@ -22,7 +22,6 @@ import { Network } from '@avalabs/glacier-sdk';
import getProvidedUtxos from '../utils/getProvidedUtxos';
import { openApprovalWindow } from '@src/background/runtime/openApprovalWindow';
import { HEADERS } from '../../glacier/glacierConfig';
-import { isDevnet } from '@src/utils/isDevnet';
type TxParams = {
transactionHex: string;
@@ -92,11 +91,7 @@ export class AvalancheSignTransactionHandler extends DAppRequestHandler) => {
diff --git a/src/utils/isDevnet.ts b/src/utils/isDevnet.ts
deleted file mode 100644
index 5ede382f..00000000
--- a/src/utils/isDevnet.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-import { ChainId } from '@avalabs/core-chains-sdk';
-import { Network } from '@src/background/services/network/models';
-
-export const isDevnet = (network: Network) =>
- network.chainId === ChainId.AVALANCHE_DEVNET_P || network.chainId === 43117;
diff --git a/src/utils/network/getProviderForNetwork.ts b/src/utils/network/getProviderForNetwork.ts
index dfcfb2d7..23e2710d 100644
--- a/src/utils/network/getProviderForNetwork.ts
+++ b/src/utils/network/getProviderForNetwork.ts
@@ -9,7 +9,6 @@ import { info } from '@avalabs/avalanchejs';
import { Network } from '@src/background/services/network/models';
-import { isDevnet } from '../isDevnet';
import { addGlacierAPIKeyIfNeeded } from './addGlacierAPIKeyIfNeeded';
export type SupportedProvider =
@@ -68,11 +67,9 @@ export const getProviderForNetwork = async (
.getUpgradesInfo()
.catch(() => undefined);
- return isDevnet(network)
- ? Avalanche.JsonRpcProvider.getDefaultDevnetProvider(upgradesInfo)
- : network.isTestnet
- ? Avalanche.JsonRpcProvider.getDefaultFujiProvider(upgradesInfo)
- : Avalanche.JsonRpcProvider.getDefaultMainnetProvider(upgradesInfo);
+ return network.isTestnet
+ ? Avalanche.JsonRpcProvider.getDefaultFujiProvider(upgradesInfo)
+ : Avalanche.JsonRpcProvider.getDefaultMainnetProvider(upgradesInfo);
} else {
throw new Error('unsupported network');
}
From 76a75c5221b214d5738a7845041545953d94d018 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Csaba=20V=C3=A1lyi?=
Date: Tue, 18 Feb 2025 15:22:23 +0100
Subject: [PATCH 6/6] feat: update vm-module versions to 1.4.2 (#142)
---
package.json | 10 +--
yarn.lock | 178 ++++++++++++++-------------------------------------
2 files changed, 52 insertions(+), 136 deletions(-)
diff --git a/package.json b/package.json
index 2844f9a3..4d440f48 100644
--- a/package.json
+++ b/package.json
@@ -23,9 +23,9 @@
"sentry": "node sentryscript.js"
},
"dependencies": {
- "@avalabs/avalanche-module": "1.4.0",
+ "@avalabs/avalanche-module": "1.4.2",
"@avalabs/avalanchejs": "4.2.0-alpha.1",
- "@avalabs/bitcoin-module": "1.4.0",
+ "@avalabs/bitcoin-module": "1.4.2",
"@avalabs/bridge-unified": "4.0.1",
"@avalabs/core-bridge-sdk": "3.1.0-alpha.34",
"@avalabs/core-chains-sdk": "3.1.0-alpha.34",
@@ -37,12 +37,12 @@
"@avalabs/core-token-prices-sdk": "3.1.0-alpha.34",
"@avalabs/core-utils-sdk": "3.1.0-alpha.34",
"@avalabs/core-wallets-sdk": "3.1.0-alpha.34",
- "@avalabs/evm-module": "1.4.0",
+ "@avalabs/evm-module": "1.4.2",
"@avalabs/glacier-sdk": "3.1.0-alpha.34",
"@avalabs/hw-app-avalanche": "0.14.1",
- "@avalabs/hvm-module": "1.4.0",
+ "@avalabs/hvm-module": "1.4.2",
"@avalabs/types": "3.1.0-alpha.34",
- "@avalabs/vm-module-types": "1.4.0",
+ "@avalabs/vm-module-types": "1.4.2",
"@blockaid/client": "0.10.0",
"@coinbase/cbpay-js": "1.6.0",
"@cubist-labs/cubesigner-sdk": "0.3.28",
diff --git a/yarn.lock b/yarn.lock
index 08fdb345..d045855b 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -34,36 +34,25 @@
resolved "https://registry.yarnpkg.com/@apocentre/alias-sampling/-/alias-sampling-0.5.3.tgz#897ff181b48ad7b2bcb4ecf29400214888244f08"
integrity sha512-7UDWIIF9hIeJqfKXkNIzkVandlwLf1FWTSdrb9iXvOP8oF544JRXQjCbiTmCv2c9n44n/FIWtehhBfNuAx2CZA==
-"@avalabs/avalanche-module@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@avalabs/avalanche-module/-/avalanche-module-1.4.0.tgz#3c47d1e82dd379f1262713195f2adb6d56edba5d"
- integrity sha512-diqLClfZ8obhy9g3ijINgkWRVVatfPW9JQ+aqlbjB4QPuR+r38/YMrhha0cTK2ZTadu9L9q/aJleTbjdPLhW6Q==
- dependencies:
- "@avalabs/avalanchejs" "4.1.2-alpha.3"
- "@avalabs/core-chains-sdk" "3.1.0-alpha.32"
- "@avalabs/core-coingecko-sdk" "3.1.0-alpha.32"
- "@avalabs/core-etherscan-sdk" "3.1.0-alpha.32"
- "@avalabs/core-utils-sdk" "3.1.0-alpha.32"
- "@avalabs/core-wallets-sdk" "3.1.0-alpha.32"
- "@avalabs/glacier-sdk" "3.1.0-alpha.32"
- "@avalabs/types" "3.1.0-alpha.32"
- "@avalabs/vm-module-types" "1.4.0"
+"@avalabs/avalanche-module@1.4.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@avalabs/avalanche-module/-/avalanche-module-1.4.2.tgz#2b41cbafbe08f7be38b249d80f7710888e5ba53c"
+ integrity sha512-/yTWVSTa7qMjP13m6AhfQNyGWebPX7Kp8DJke8SjI5414YVqxgraaS8OmUabWk1CPMVvjiBOgUclg3qVOkOk4Q==
+ dependencies:
+ "@avalabs/avalanchejs" "4.2.0-alpha.1"
+ "@avalabs/core-chains-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-coingecko-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-etherscan-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-utils-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-wallets-sdk" "3.1.0-alpha.34"
+ "@avalabs/glacier-sdk" "3.1.0-alpha.34"
+ "@avalabs/types" "3.1.0-alpha.34"
+ "@avalabs/vm-module-types" "1.4.2"
"@metamask/rpc-errors" "6.3.0"
big.js "6.2.1"
bn.js "5.2.1"
zod "3.23.8"
-"@avalabs/avalanchejs@4.1.2-alpha.3":
- version "4.1.2-alpha.3"
- resolved "https://registry.yarnpkg.com/@avalabs/avalanchejs/-/avalanchejs-4.1.2-alpha.3.tgz#ebe8e6a1d3ef196e714b454f7693507ab6be3958"
- integrity sha512-ALO2NzVfsKLB6+/sP8z516LFuCwuVF/pypkMDJscqBdmx+eNJAHOghJCqgN53NXHyC7Itoo6O50EO8AZg4EtXQ==
- dependencies:
- "@noble/curves" "1.3.0"
- "@noble/hashes" "1.3.3"
- "@noble/secp256k1" "2.0.0"
- "@scure/base" "1.1.5"
- micro-eth-signer "0.7.2"
-
"@avalabs/avalanchejs@4.2.0-alpha.1":
version "4.2.0-alpha.1"
resolved "https://registry.yarnpkg.com/@avalabs/avalanchejs/-/avalanchejs-4.2.0-alpha.1.tgz#a8cdd7b1c182f69548a91c83d7f76a63d9a3c98a"
@@ -75,15 +64,15 @@
"@scure/base" "1.1.5"
micro-eth-signer "0.7.2"
-"@avalabs/bitcoin-module@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@avalabs/bitcoin-module/-/bitcoin-module-1.4.0.tgz#8af9508c7937220e1325e6147a89e241d3bff5fe"
- integrity sha512-CsMXW/qsnHYXvUhUr6FbpBABoy7pjKonYGX5cGFskeiE7dLXgZ6o5mi+/MSrqCxpG0LUfDmJTEKIF8F+2I8grA==
+"@avalabs/bitcoin-module@1.4.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@avalabs/bitcoin-module/-/bitcoin-module-1.4.2.tgz#6abe4a0ec514002c019aa114b22606462f75e909"
+ integrity sha512-m7dQvEFglo5Dz1qoUG8tOi2MU6X2P0YhrVwqFCM9YIqTHpdrN5RN9FdLmpBz+GQ7F+CCUNqEOqgBgegjDdOAZA==
dependencies:
- "@avalabs/core-coingecko-sdk" "3.1.0-alpha.32"
- "@avalabs/core-utils-sdk" "3.1.0-alpha.32"
- "@avalabs/core-wallets-sdk" "3.1.0-alpha.32"
- "@avalabs/vm-module-types" "1.4.0"
+ "@avalabs/core-coingecko-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-utils-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-wallets-sdk" "3.1.0-alpha.34"
+ "@avalabs/vm-module-types" "1.4.2"
"@metamask/rpc-errors" "6.3.0"
big.js "6.2.1"
bitcoinjs-lib "5.2.0"
@@ -113,13 +102,6 @@
"@avalabs/core-utils-sdk" "3.1.0-alpha.34"
"@avalabs/core-wallets-sdk" "3.1.0-alpha.34"
-"@avalabs/core-chains-sdk@3.1.0-alpha.32":
- version "3.1.0-alpha.32"
- resolved "https://registry.yarnpkg.com/@avalabs/core-chains-sdk/-/core-chains-sdk-3.1.0-alpha.32.tgz#44b0dff435eca91e340e45b8d12970e8cb533c07"
- integrity sha512-WiesR7Y71WayHzq9zmp870dor+VKmBKZCwFIIUAjA5WgGs5oUW/P1oINUxqnWtSqDLnRgdSPWkeu5M7OurR3bg==
- dependencies:
- "@avalabs/core-utils-sdk" "3.1.0-alpha.32"
-
"@avalabs/core-chains-sdk@3.1.0-alpha.34":
version "3.1.0-alpha.34"
resolved "https://registry.yarnpkg.com/@avalabs/core-chains-sdk/-/core-chains-sdk-3.1.0-alpha.34.tgz#f3d7193722b6b0ff97d5e6d1afe36fcfb3863580"
@@ -127,13 +109,6 @@
dependencies:
"@avalabs/core-utils-sdk" "3.1.0-alpha.34"
-"@avalabs/core-coingecko-sdk@3.1.0-alpha.32":
- version "3.1.0-alpha.32"
- resolved "https://registry.yarnpkg.com/@avalabs/core-coingecko-sdk/-/core-coingecko-sdk-3.1.0-alpha.32.tgz#9e8f72adb85fc953d328136efb84f5575590f7de"
- integrity sha512-UI/7F8qaXJvlc4tOazUBqiDaFk4k93yjlejLmgK/mpUuEUHUWpPaeYpgvWBtgjw4Y3alOXS6T2PArJq2DSUjNA==
- dependencies:
- "@avalabs/core-utils-sdk" "3.1.0-alpha.32"
-
"@avalabs/core-coingecko-sdk@3.1.0-alpha.34":
version "3.1.0-alpha.34"
resolved "https://registry.yarnpkg.com/@avalabs/core-coingecko-sdk/-/core-coingecko-sdk-3.1.0-alpha.34.tgz#4f18f78e84dc52a5e21015124b5d81e7d4e1dbf2"
@@ -148,13 +123,6 @@
dependencies:
"@avalabs/core-utils-sdk" "3.1.0-alpha.34"
-"@avalabs/core-etherscan-sdk@3.1.0-alpha.32":
- version "3.1.0-alpha.32"
- resolved "https://registry.yarnpkg.com/@avalabs/core-etherscan-sdk/-/core-etherscan-sdk-3.1.0-alpha.32.tgz#589f9cebb8df2b605319a3e5e17bf23817351002"
- integrity sha512-Nx53yUe/9yd2Ix2P7dxxLcwATVP/S2lcNtFibHuiFqG3py7R8sKourzRnadNJh5wsPJLvoD+Cn8bJyifGdTxrA==
- dependencies:
- "@avalabs/core-utils-sdk" "3.1.0-alpha.32"
-
"@avalabs/core-etherscan-sdk@3.1.0-alpha.34":
version "3.1.0-alpha.34"
resolved "https://registry.yarnpkg.com/@avalabs/core-etherscan-sdk/-/core-etherscan-sdk-3.1.0-alpha.34.tgz#d1fd7a8ec00ce7af9c8621a293d75bf51796417d"
@@ -200,24 +168,6 @@
"@avalabs/core-coingecko-sdk" "3.1.0-alpha.34"
"@avalabs/core-utils-sdk" "3.1.0-alpha.34"
-"@avalabs/core-utils-sdk@3.1.0-alpha.30":
- version "3.1.0-alpha.30"
- resolved "https://registry.yarnpkg.com/@avalabs/core-utils-sdk/-/core-utils-sdk-3.1.0-alpha.30.tgz#7e04149d5006d8d5eb2446f2c087feda928c9dc6"
- integrity sha512-28eNkFMHos8/NGTOZ6tMHeXJTiu8iVb2lk3byViE2riT9bjUwW+NMaHO9WVzU20FnUnVLhyfeOZlSbOnDZyZng==
- dependencies:
- "@avalabs/avalanchejs" "4.1.2-alpha.3"
- "@hpke/core" "1.2.5"
- is-ipfs "6.0.2"
-
-"@avalabs/core-utils-sdk@3.1.0-alpha.32":
- version "3.1.0-alpha.32"
- resolved "https://registry.yarnpkg.com/@avalabs/core-utils-sdk/-/core-utils-sdk-3.1.0-alpha.32.tgz#eceffeaffb05bca54b54fb18c86f8bbf3548c2ea"
- integrity sha512-rniVCqZJW8zc/kCND04utKRg8qsJrynZtjRWhPiTuuADS7vw/bVZnFjCN0559Qlw9e6BdGJNnSK52zkrsnT+Ag==
- dependencies:
- "@avalabs/avalanchejs" "4.1.2-alpha.3"
- "@hpke/core" "1.2.5"
- is-ipfs "6.0.2"
-
"@avalabs/core-utils-sdk@3.1.0-alpha.34":
version "3.1.0-alpha.34"
resolved "https://registry.yarnpkg.com/@avalabs/core-utils-sdk/-/core-utils-sdk-3.1.0-alpha.34.tgz#e3deb829370f96b83d84b6bd1e414d8f823c7db5"
@@ -227,30 +177,6 @@
"@hpke/core" "1.2.5"
is-ipfs "6.0.2"
-"@avalabs/core-wallets-sdk@3.1.0-alpha.32":
- version "3.1.0-alpha.32"
- resolved "https://registry.yarnpkg.com/@avalabs/core-wallets-sdk/-/core-wallets-sdk-3.1.0-alpha.32.tgz#a4bed57479380bc46528bdabf251cd70ca2e10a8"
- integrity sha512-+XCXKOG7p8yowjDrxT4ebw+s0A+4SIYqL+vTsfEUmrMM411/B7WT3e+5yXCio+E6TnJVly3FeJ8FXhq7od5bkg==
- dependencies:
- "@avalabs/avalanchejs" "4.1.2-alpha.3"
- "@avalabs/core-chains-sdk" "3.1.0-alpha.32"
- "@avalabs/glacier-sdk" "3.1.0-alpha.32"
- "@avalabs/hw-app-avalanche" "0.14.1"
- "@ledgerhq/hw-app-btc" "10.2.4"
- "@ledgerhq/hw-app-eth" "6.36.1"
- "@ledgerhq/hw-transport" "6.30.6"
- "@metamask/eth-sig-util" "7.0.2"
- "@openzeppelin/contracts" "4.9.6"
- bip32 "2.0.6"
- bip32-path "0.4.2"
- bip39 "3.1.0"
- bitcoinjs-lib "5.2.0"
- coinselect "3.1.13"
- create-hash "1.2.0"
- hdkey "2.0.1"
- ledger-bitcoin "0.2.3"
- xss "1.0.14"
-
"@avalabs/core-wallets-sdk@3.1.0-alpha.34":
version "3.1.0-alpha.34"
resolved "https://registry.yarnpkg.com/@avalabs/core-wallets-sdk/-/core-wallets-sdk-3.1.0-alpha.34.tgz#07b3b639f8eba37e8fe560aecf9ca05d8a878c30"
@@ -275,19 +201,19 @@
ledger-bitcoin "0.2.3"
xss "1.0.14"
-"@avalabs/evm-module@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@avalabs/evm-module/-/evm-module-1.4.0.tgz#7f9959cc3769462c929986192cbb64e67562823c"
- integrity sha512-B6hpQQ0o3fLWp+NwSpLJaG5OehOkJ3cGU2UDo/Yis4ikDcxfFED97WXcs5bWpNheL3fImsIjA1ozIsbGvKVQ9A==
- dependencies:
- "@avalabs/core-chains-sdk" "3.1.0-alpha.32"
- "@avalabs/core-coingecko-sdk" "3.1.0-alpha.32"
- "@avalabs/core-etherscan-sdk" "3.1.0-alpha.32"
- "@avalabs/core-utils-sdk" "3.1.0-alpha.32"
- "@avalabs/core-wallets-sdk" "3.1.0-alpha.32"
- "@avalabs/glacier-sdk" "3.1.0-alpha.32"
- "@avalabs/types" "3.1.0-alpha.32"
- "@avalabs/vm-module-types" "1.4.0"
+"@avalabs/evm-module@1.4.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@avalabs/evm-module/-/evm-module-1.4.2.tgz#a1d24abba9e4dead85d2f4f31f2e3377449875ab"
+ integrity sha512-JYD7fIxi8tlM+1h8rQDZLRwQor683g1DBVGHbkwtlpD8GElA+usLhgQI50RZ/XKXTSXmBXx+1XVvuqNDnlVe0Q==
+ dependencies:
+ "@avalabs/core-chains-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-coingecko-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-etherscan-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-utils-sdk" "3.1.0-alpha.34"
+ "@avalabs/core-wallets-sdk" "3.1.0-alpha.34"
+ "@avalabs/glacier-sdk" "3.1.0-alpha.34"
+ "@avalabs/types" "3.1.0-alpha.34"
+ "@avalabs/vm-module-types" "1.4.2"
"@blockaid/client" "0.11.0"
"@metamask/rpc-errors" "6.3.0"
"@openzeppelin/contracts" "4.9.6"
@@ -296,23 +222,18 @@
xss "1.0.13"
zod "3.23.8"
-"@avalabs/glacier-sdk@3.1.0-alpha.32":
- version "3.1.0-alpha.32"
- resolved "https://registry.yarnpkg.com/@avalabs/glacier-sdk/-/glacier-sdk-3.1.0-alpha.32.tgz#a03a130ed85f60dde076cf9feeb2a4c487aee8e4"
- integrity sha512-LTRdqpsiGIJVJxfcnNs/85/NnSneD3Jg+DZw6+F8AiJ1OcZftGu9Hz1GvWZhoz+9udHSbEXHEN5trws4vqTjkQ==
-
"@avalabs/glacier-sdk@3.1.0-alpha.34":
version "3.1.0-alpha.34"
resolved "https://registry.yarnpkg.com/@avalabs/glacier-sdk/-/glacier-sdk-3.1.0-alpha.34.tgz#bc2b20bba5b1d5d6d970e4ed9989da37a7d3247a"
integrity sha512-LtMvlWuLwhlKcc82bUFQgXeLjP2QOu3zh7UAn1AgkEOM3+XbX5hZ+I8gP0RxOHk3mzAsJOGIrpEXRIznYBvZIw==
-"@avalabs/hvm-module@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@avalabs/hvm-module/-/hvm-module-1.4.0.tgz#e2244458bdd629f884241ee168138a2b8765e11b"
- integrity sha512-ACF90VcB0fabU4D3E0Xb+9cePPRSNE+sL73+OLZDFV8Fn/KHwWga61zNLLeSHVeW0iYhHCHqo730aKvB0w9G7Q==
+"@avalabs/hvm-module@1.4.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@avalabs/hvm-module/-/hvm-module-1.4.2.tgz#cf19020df97c623e7d7fce2ff8bcf10fe077ff7e"
+ integrity sha512-uzSq3kreu1ANQNDXAK3pKX75gZmIJjGwCX35yTtVWmnNnNYm03OVMJrN03zM9IpL1TdaL2ArA8pOnnorWp19tA==
dependencies:
- "@avalabs/core-utils-sdk" "3.1.0-alpha.30"
- "@avalabs/vm-module-types" "1.4.0"
+ "@avalabs/core-utils-sdk" "3.1.0-alpha.34"
+ "@avalabs/vm-module-types" "1.4.2"
"@metamask/rpc-errors" "6.3.0"
"@noble/hashes" "1.5.0"
hypersdk-client "0.4.16"
@@ -329,23 +250,18 @@
ledger-bitcoin "^0.2.1"
sha3 "2.1.4"
-"@avalabs/types@3.1.0-alpha.32":
- version "3.1.0-alpha.32"
- resolved "https://registry.yarnpkg.com/@avalabs/types/-/types-3.1.0-alpha.32.tgz#bb94019e3c3121bfc66e1d5fed5a8c5c78c10fb5"
- integrity sha512-EwIMmTPygrMMxA8GVfBL7UNia3IycMjkPxuaRuZ8PTkW2Yr24F7GGeufBMFU69N0xTyoM8VQgMYNZ2x7stpedg==
-
"@avalabs/types@3.1.0-alpha.34":
version "3.1.0-alpha.34"
resolved "https://registry.yarnpkg.com/@avalabs/types/-/types-3.1.0-alpha.34.tgz#f560f7e512e4a11f0a94ad2718aa7ce57367200e"
integrity sha512-v2/PAO+3QMk+xoubHzE810ZbZsIGXk+05eTXZvrNQy5KQjoPS02h11/EOSMGhpuAPg3jNCMLKQrIVkmKO/NFIw==
-"@avalabs/vm-module-types@1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@avalabs/vm-module-types/-/vm-module-types-1.4.0.tgz#bf819ace354c2f2ea66212f0fd4f4970331b3038"
- integrity sha512-udByYqsngI/8b4p7kLpNdMtaUJW9afMb3YNo8JKWUwvUjXaqOxzWf8b3RNmZqQywwm5kO42U18Ln1xdKXy0pyg==
+"@avalabs/vm-module-types@1.4.2":
+ version "1.4.2"
+ resolved "https://registry.yarnpkg.com/@avalabs/vm-module-types/-/vm-module-types-1.4.2.tgz#e9cadcaf4c873d686e0916916f3dacdfc154a59f"
+ integrity sha512-n2xdPYgBcLbvMN/QsBLVImXhMsw2PsB5/7jWQ1wkTVBhVgqUfnke2sn0yaG/8ebT8wgEZTVWgsS3PSVccutTkw==
dependencies:
- "@avalabs/core-wallets-sdk" "3.1.0-alpha.32"
- "@avalabs/glacier-sdk" "3.1.0-alpha.32"
+ "@avalabs/core-wallets-sdk" "3.1.0-alpha.34"
+ "@avalabs/glacier-sdk" "3.1.0-alpha.34"
"@metamask/rpc-errors" "6.3.0"
bitcoinjs-lib "5.2.0"
hypersdk-client "0.4.16"