diff --git a/package.json b/package.json index 335ca769..2d2368fb 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "prepare": "husky install" }, "dependencies": { - "@airswap/libraries": "5.0.3", + "@airswap/libraries": "5.0.9", "@akkafinance/web3-react-bitkeep": "^1.0.0", "@coinbase/wallet-sdk": "^3.7.2", "@craco/craco": "^6.2.0", diff --git a/src/app/store.ts b/src/app/store.ts index 7688f4d2..b48ab08d 100644 --- a/src/app/store.ts +++ b/src/app/store.ts @@ -1,4 +1,12 @@ -import { configureStore, ThunkAction, Action } from "@reduxjs/toolkit"; +import { + configureStore, + ThunkAction, + Action, + ThunkDispatch, + AnyAction, + Store, + combineReducers, +} from "@reduxjs/toolkit"; import { balancesReducer, @@ -18,31 +26,38 @@ import transactionsReducer from "../features/transactions/transactionsSlice"; import userSettingsReducer from "../features/userSettings/userSettingsSlice"; import web3Reducer from "../features/web3/web3Slice"; -export const store = configureStore({ - reducer: { - allowances: allowancesReducer, - transactions: transactionsReducer, - balances: balancesReducer, - metadata: metadataReducer, - tradeTerms: tradeTermsReducer, - indexer: indexerReducer, - orders: ordersReducer, - gasCost: gasCostReducer, - registry: registryReducer, - userSettings: userSettingsReducer, - makeOtc: makeOtcReducer, - myOrders: myOrdersReducer, - takeOtc: takeOtcReducer, - web3: web3Reducer, - quotes: quotesReducer, - }, -}); +const reducers = { + allowances: allowancesReducer, + transactions: transactionsReducer, + balances: balancesReducer, + metadata: metadataReducer, + tradeTerms: tradeTermsReducer, + indexer: indexerReducer, + orders: ordersReducer, + gasCost: gasCostReducer, + registry: registryReducer, + userSettings: userSettingsReducer, + makeOtc: makeOtcReducer, + myOrders: myOrdersReducer, + takeOtc: takeOtcReducer, + web3: web3Reducer, + quotes: quotesReducer, +}; + +const rootReducer = combineReducers(reducers); + +// 1. Get the root state's type from reducers +export type RootState = ReturnType; -export type AppDispatch = typeof store.dispatch; -export type RootState = ReturnType; -export type AppThunk = ThunkAction< - ReturnType, - RootState, - unknown, - Action ->; +// 2. Create a type for thunk dispatch +export type AppDispatch = ThunkDispatch; + +// 3. Create a type for store using RootState and Thunk enabled dispatch +export type AppStore = Omit, "dispatch"> & { + dispatch: AppDispatch; +}; + +//4. create the store with your custom AppStore +export const store: AppStore = configureStore({ + reducer: rootReducer, +}); diff --git a/src/components/@widgets/CancelWidget/CancelWidget.tsx b/src/components/@widgets/CancelWidget/CancelWidget.tsx index f3b196d5..89202f3c 100644 --- a/src/components/@widgets/CancelWidget/CancelWidget.tsx +++ b/src/components/@widgets/CancelWidget/CancelWidget.tsx @@ -13,6 +13,7 @@ import useCancellationSuccess from "../../../hooks/useCancellationSuccess"; import { AppRoutes } from "../../../routes"; import { OrderStatus } from "../../../types/orderStatus"; import Icon from "../../Icon/Icon"; +import SubmittedCancellationScreen from "../../SubmittedCancellationScreen"; import TransactionOverlay from "../../TransactionOverlay/TransactionOverlay"; import { Title } from "../../Typography/Typography"; import { InfoSubHeading } from "../../Typography/Typography"; @@ -27,7 +28,6 @@ import { BackButton, CancelButton, } from "./CancelWidget.styles"; -import SubmittedCancellationScreen from "./subcomponentss/SubmittedCancellationScreen/SubmittedCancellationScreen"; interface CancelWidgetProps { library: Web3Provider; diff --git a/src/components/@widgets/MyOrdersWidget/MyOrdersWidget.tsx b/src/components/@widgets/MyOrdersWidget/MyOrdersWidget.tsx index 38776d9c..a383e15e 100644 --- a/src/components/@widgets/MyOrdersWidget/MyOrdersWidget.tsx +++ b/src/components/@widgets/MyOrdersWidget/MyOrdersWidget.tsx @@ -1,4 +1,4 @@ -import React, { FC, useContext, useMemo } from "react"; +import React, { FC, useContext, useMemo, useState } from "react"; import { useTranslation } from "react-i18next"; import { useHistory } from "react-router-dom"; @@ -17,8 +17,14 @@ import { } from "../../../features/myOrders/myOrdersSlice"; import { getNonceUsed } from "../../../features/orders/ordersHelpers"; import { cancelOrder } from "../../../features/takeOtc/takeOtcActions"; +import { selectTakeOtcStatus } from "../../../features/takeOtc/takeOtcSlice"; +import { selectPendingCancellations } from "../../../features/transactions/transactionsSlice"; import switchToDefaultChain from "../../../helpers/switchToDefaultChain"; +import useCancellationPending from "../../../hooks/useCancellationPending"; import { AppRoutes } from "../../../routes"; +import SubmittedCancellationScreen from "../../SubmittedCancellationScreen"; +import TransactionOverlay from "../../TransactionOverlay/TransactionOverlay"; +import WalletSignScreen from "../../WalletSignScreen/WalletSignScreen"; import { Container, InfoSectionContainer } from "./MyOrdersWidget.styles"; import { getSortedOrders } from "./helpers"; import ActionButtons, { @@ -40,6 +46,14 @@ const MyOrdersWidget: FC = () => { selectMyOrdersReducer ); + const status = useAppSelector(selectTakeOtcStatus); + const [activeCancellationNonce, setActiveCancellationNonce] = + useState(); + const pendingCancelTranssaction = useCancellationPending( + activeCancellationNonce || null, + true + ); + // Modal states const { setShowWalletList } = useContext(InterfaceContext); @@ -61,6 +75,7 @@ const MyOrdersWidget: FC = () => { const nonceUsed = await getNonceUsed(order, library!); if (!isExpired && !nonceUsed) { + setActiveCancellationNonce(order.nonce); await dispatch( cancelOrder({ order: order, chainId: chainId!, library: library! }) ); @@ -93,6 +108,22 @@ const MyOrdersWidget: FC = () => { return ( + + + + + + + {pendingCancelTranssaction && ( + + )} + + {!!sortedUserOrders.length && ( <> ` +export const StyledNavLink = styled(NavLink)<{ $isHovered?: boolean }>` position: absolute; top: -1px; left: 0; @@ -107,7 +107,7 @@ export const StyledNavLink = styled(NavLink)<{ isHovered: boolean }>` width: 100%; height: calc(100% + 1px); background: ${({ theme }) => theme.colors.darkBlue}; - opacity: ${({ isHovered }) => (isHovered ? 1 : 0)}; + opacity: ${({ $isHovered }) => ($isHovered ? 1 : 0)}; z-index: 1; &:hover, diff --git a/src/components/@widgets/MyOrdersWidget/subcomponents/Order/Order.tsx b/src/components/@widgets/MyOrdersWidget/subcomponents/Order/Order.tsx index aa662f16..5cadca0b 100644 --- a/src/components/@widgets/MyOrdersWidget/subcomponents/Order/Order.tsx +++ b/src/components/@widgets/MyOrdersWidget/subcomponents/Order/Order.tsx @@ -120,7 +120,7 @@ const Order: FC> = ({ {orderStatus === OrderStatus.open ? timeLeft : orderStatusTranslation} diff --git a/src/components/@widgets/SwapWidget/SwapWidget.tsx b/src/components/@widgets/SwapWidget/SwapWidget.tsx index fbb90449..b7f90264 100644 --- a/src/components/@widgets/SwapWidget/SwapWidget.tsx +++ b/src/components/@widgets/SwapWidget/SwapWidget.tsx @@ -645,19 +645,6 @@ const SwapWidget: FC = () => { onCloseButtonClick={() => setProtocolFeeInfo(false)} /> - {baseTokenInfo && quoteTokenInfo && ( - toggleShowViewAllQuotes()} - > - toggleShowViewAllQuotes()} - /> - - )} diff --git a/src/components/@widgets/CancelWidget/subcomponentss/SubmittedCancellationScreen/SubmittedCancellationScreen.tsx b/src/components/SubmittedCancellationScreen.tsx similarity index 79% rename from src/components/@widgets/CancelWidget/subcomponentss/SubmittedCancellationScreen/SubmittedCancellationScreen.tsx rename to src/components/SubmittedCancellationScreen.tsx index 52d65f2c..2568a0af 100644 --- a/src/components/@widgets/CancelWidget/subcomponentss/SubmittedCancellationScreen/SubmittedCancellationScreen.tsx +++ b/src/components/SubmittedCancellationScreen.tsx @@ -1,16 +1,16 @@ import { FC, useState } from "react"; import { useTranslation } from "react-i18next"; -import { SubmittedCancellation } from "../../../../../entities/SubmittedTransaction/SubmittedTransaction"; -import useDebounce from "../../../../../hooks/useDebounce"; +import { SubmittedCancellation } from "../entities/SubmittedTransaction/SubmittedTransaction"; +import useDebounce from "../hooks/useDebounce"; import { OverlayContainer, OverlaySubHeading, OverlayTitle, OverlayTransactionLink, -} from "../../../../../styled-components/Overlay/Overlay"; -import { TransactionStatusType } from "../../../../../types/transactionTypes"; -import OverlayLoader from "../../../../OverlayLoader/OverlayLoader"; +} from "../styled-components/Overlay/Overlay"; +import { TransactionStatusType } from "../types/transactionTypes"; +import OverlayLoader from "./OverlayLoader/OverlayLoader"; interface SubmittedCancellationScreenProps { chainId?: number; diff --git a/src/components/Toasts/Toast.styles.tsx b/src/components/Toasts/Toast.styles.tsx index 46f2caa8..e188bfa9 100644 --- a/src/components/Toasts/Toast.styles.tsx +++ b/src/components/Toasts/Toast.styles.tsx @@ -66,5 +66,7 @@ export const HiXContainer = styled.button` `; export const TextContainer = styled.div` - display: block; + display: flex; + flex-direction: column; + gap: 0.25rem; `; diff --git a/src/components/Toasts/ToastController.tsx b/src/components/Toasts/ToastController.tsx index dd3de4db..72ee001a 100644 --- a/src/components/Toasts/ToastController.tsx +++ b/src/components/Toasts/ToastController.tsx @@ -1,160 +1,12 @@ import toast from "react-hot-toast"; -import { findTokenByAddress, FullOrderERC20, TokenInfo } from "@airswap/utils"; +import { FullOrderERC20 } from "@airswap/utils"; import i18n from "i18next"; -import { - SubmittedApprovalTransaction, - SubmittedDepositTransaction, - SubmittedTransaction, - SubmittedOrder, - SubmittedWithdrawTransaction, -} from "../../entities/SubmittedTransaction/SubmittedTransaction"; -import findEthOrTokenByAddress from "../../helpers/findEthOrTokenByAddress"; -import { TransactionTypes } from "../../types/transactionTypes"; -import ConfirmationToast from "./ConfirmationToast"; import CopyToast from "./CopyToast"; import ErrorToast from "./ErrorToast"; import OrderToast from "./OrderToast"; -import TransactionToast from "./TransactionToast"; - -export const notifyTransaction = ( - type: TransactionTypes, - transaction: SubmittedTransaction, - tokens: TokenInfo[], - error: boolean, - chainId?: number -) => { - let token: TokenInfo | null; - // TODO: make a switch case to render a different toast for each case - if ( - (type === TransactionTypes.order || - type === TransactionTypes.deposit || - type === TransactionTypes.withdraw) && - chainId - ) { - const tx: SubmittedOrder = transaction as SubmittedOrder; - /* TODO: fix toaster for multiple tabs or apps - now that we have a listener, you can have multiple - tabs open that receives the same order event. Only one redux - store will have the order, and the others won't. That will - throw an error here if we don't check for `order` inside `tx` - */ - if (tx?.order) { - const senderToken = findEthOrTokenByAddress( - tx.order.senderToken, - tokens, - chainId - ); - const signerToken = findEthOrTokenByAddress( - tx.order.signerToken, - tokens, - chainId - ); - toast( - (t) => ( - toast.dismiss(t.id)} - type={type} - transaction={transaction} - senderToken={senderToken || undefined} - signerToken={signerToken || undefined} - error={error} - /> - ), - { - duration: 3000, - } - ); - } - } else { - const tx: SubmittedApprovalTransaction = - transaction as SubmittedApprovalTransaction; - token = findTokenByAddress(tx.tokenAddress, tokens); - toast( - (t) => ( - toast.dismiss(t.id)} - type={type} - transaction={transaction} - approvalToken={token || undefined} - error={error} - /> - ), - { - duration: 3000, - } - ); - } -}; - -export const notifyApproval = (transaction: SubmittedApprovalTransaction) => { - toast( - (t) => ( - toast.dismiss(t.id)} - type={TransactionTypes.approval} - transaction={transaction} - approvalToken={transaction.token} - /> - ), - { - duration: 3000, - } - ); -}; - -export const notifyDeposit = (transaction: SubmittedDepositTransaction) => { - toast( - (t) => ( - toast.dismiss(t.id)} - type={TransactionTypes.deposit} - transaction={transaction} - senderToken={transaction.senderToken} - signerToken={transaction.signerToken} - /> - ), - { - duration: 3000, - } - ); -}; - -export const notifyWithdrawal = (transaction: SubmittedWithdrawTransaction) => { - toast( - (t) => ( - toast.dismiss(t.id)} - type={TransactionTypes.withdraw} - transaction={transaction} - senderToken={transaction.senderToken} - signerToken={transaction.signerToken} - /> - ), - { - duration: 3000, - } - ); -}; - -export const notifyOrder = (transaction: SubmittedOrder) => { - toast( - (t) => ( - toast.dismiss(t.id)} - type={TransactionTypes.order} - transaction={transaction} - senderToken={transaction.senderToken} - signerToken={transaction.signerToken} - /> - ), - { - duration: 3000, - } - ); -}; export const notifyError = (props: { heading: string; cta: string }) => { toast( @@ -171,21 +23,6 @@ export const notifyError = (props: { heading: string; cta: string }) => { ); }; -export const notifyConfirmation = (props: { heading: string; cta: string }) => { - toast( - (t) => ( - toast.dismiss(t.id)} - heading={props.heading} - cta={props.cta} - /> - ), - { - duration: 3000, - } - ); -}; - export const notifyOrderCreated = (order: FullOrderERC20) => { toast( (t) => toast.dismiss(t.id)} order={order} />, diff --git a/src/entities/ExtendedPricing/ExtendedPricingService.ts b/src/entities/ExtendedPricing/ExtendedPricingService.ts index 157ae92f..5e65e637 100644 --- a/src/entities/ExtendedPricing/ExtendedPricingService.ts +++ b/src/entities/ExtendedPricing/ExtendedPricingService.ts @@ -18,7 +18,7 @@ export const subscribeExtendedPricingERC20 = async ( return pricings.map((pricing) => transformToExtendedPricing( pricing, - server.locator, + server.getUrl(), server.getSenderWallet() ) ); @@ -36,7 +36,7 @@ export const getExtendedPricingERC20 = async ( return pricings.map((pricing) => transformToExtendedPricing( pricing, - server.locator, + server.getUrl(), server.getSenderWallet() ) ); diff --git a/src/features/indexer/indexerHelpers.ts b/src/features/indexer/indexerHelpers.ts index bd67f4fc..9f6982c9 100644 --- a/src/features/indexer/indexerHelpers.ts +++ b/src/features/indexer/indexerHelpers.ts @@ -18,10 +18,10 @@ export const sendOrderToIndexers = async ( const server = value.value; return server .addOrderERC20(order) - .then(() => console.log(`Order added to ${server.locator}`)) + .then(() => console.log(`Order added to ${server.getUrl()}`)) .catch((e: any) => { console.log( - `[indexerSlice] Order indexing failed for ${server.locator}`, + `[indexerSlice] Order indexing failed for ${server.getUrl()}`, e.message || "" ); }); diff --git a/src/features/indexer/indexerRegistryApi.ts b/src/features/indexer/indexerRegistryApi.ts index 7ecdfd6e..c03d9c34 100644 --- a/src/features/indexer/indexerRegistryApi.ts +++ b/src/features/indexer/indexerRegistryApi.ts @@ -7,9 +7,11 @@ export const getIndexerUrls = async ( chainId: number, provider: providers.Provider ): Promise => { - return await Registry.getServerURLs( + const urls = await Registry.getServerURLs( provider, chainId, ProtocolIds.IndexingERC20 ); + + return urls.map((url) => url.url); }; diff --git a/src/features/orders/ordersActions.ts b/src/features/orders/ordersActions.ts index ec327af4..0ee974d1 100644 --- a/src/features/orders/ordersActions.ts +++ b/src/features/orders/ordersActions.ts @@ -12,13 +12,8 @@ import { Dispatch } from "@reduxjs/toolkit"; import { AppDispatch } from "../../app/store"; import { - notifyApproval, - notifyConfirmation, - notifyDeposit, notifyError, - notifyOrder, notifyRejectedByUserError, - notifyWithdrawal, } from "../../components/Toasts/ToastController"; import nativeCurrency from "../../constants/nativeCurrency"; import { transformUnsignedOrderERC20ToOrderERC20 } from "../../entities/OrderERC20/OrderERC20Transformers"; @@ -58,7 +53,6 @@ import { import { setErrors, setStatus } from "./ordersSlice"; export const handleApproveTransaction = ( - transaction: SubmittedApprovalTransaction, status: TransactionStatusType ): void => { if (status === TransactionStatusType.failed) { @@ -69,12 +63,9 @@ export const handleApproveTransaction = ( return; } - - notifyApproval(transaction); }; export const handleSubmittedDepositOrder = ( - transaction: SubmittedDepositTransaction, status: TransactionStatusType ): void => { if (status === TransactionStatusType.failed) { @@ -85,12 +76,9 @@ export const handleSubmittedDepositOrder = ( return; } - - notifyDeposit(transaction); }; export const handleSubmittedWithdrawOrder = ( - transaction: SubmittedWithdrawTransaction, status: TransactionStatusType ): void => { if (status === TransactionStatusType.failed) { @@ -101,14 +89,9 @@ export const handleSubmittedWithdrawOrder = ( return; } - - notifyWithdrawal(transaction); }; -export const handleSubmittedOrder = ( - transaction: SubmittedOrder, - status: TransactionStatusType -): void => { +export const handleSubmittedOrder = (status: TransactionStatusType): void => { if (status === TransactionStatusType.failed) { notifyError({ heading: i18n.t("toast.swapFail"), @@ -117,8 +100,6 @@ export const handleSubmittedOrder = ( return; } - - notifyOrder(transaction); }; export const handleSubmittedCancelOrder = ( @@ -132,8 +113,6 @@ export const handleSubmittedCancelOrder = ( return; } - - notifyConfirmation({ heading: i18n.t("toast.cancelComplete"), cta: "" }); }; // replaces WETH to ETH on Wrapper orders @@ -393,7 +372,7 @@ export const takeLastLookOrder = senderToken.address ); - const server = servers.find((server) => server.locator === locator); + const server = servers.find((server) => server.getUrl() === locator); if (!server) { console.error("[takeLastLookOrder] Server not found"); diff --git a/src/features/quotes/quotesActions.ts b/src/features/quotes/quotesActions.ts index e19e9bf0..b498223a 100644 --- a/src/features/quotes/quotesActions.ts +++ b/src/features/quotes/quotesActions.ts @@ -191,7 +191,7 @@ export const subscribePricingERC20 = ); const server = servers.find( - (server) => server.locator === bestPricing.locator + (server) => server.getUrl() === bestPricing.locator ); if (!server) { diff --git a/src/features/quotes/quotesApi.ts b/src/features/quotes/quotesApi.ts index e1957742..a5b3b819 100644 --- a/src/features/quotes/quotesApi.ts +++ b/src/features/quotes/quotesApi.ts @@ -174,7 +174,7 @@ export const getBestPricingServer = async ( baseToken ); - const server = servers.find((server) => server.locator === locator); + const server = servers.find((server) => server.getUrl() === locator); if (!server) { return PricingErrorType.noServersFound; diff --git a/src/features/transactions/hooks/useLatestApproveFromEvents.ts b/src/features/transactions/hooks/useLatestApproveFromEvents.ts index 3295e56b..b56b4144 100644 --- a/src/features/transactions/hooks/useLatestApproveFromEvents.ts +++ b/src/features/transactions/hooks/useLatestApproveFromEvents.ts @@ -98,6 +98,9 @@ const useLatestApproveFromEvents = ( // Normally the useEffect above should suffice, but gnosis safe has a bug where the event is not triggered. // This may also happen for other providers I have not tested. So this "backup" useEffect is a solution for this issue. + // Update 17-12-2024: It seems the above useEffect is not working anymore. It seems the provider is not picking up the + // approve events anymore. So this "backup" useEffect is now the default solution. + useEffect(() => { if (!latestPendingTransaction || !provider) return; diff --git a/src/features/transactions/hooks/useLatestTransaction.ts b/src/features/transactions/hooks/useLatestTransaction.ts index fa8b3aae..85391827 100644 --- a/src/features/transactions/hooks/useLatestTransaction.ts +++ b/src/features/transactions/hooks/useLatestTransaction.ts @@ -36,10 +36,6 @@ const useLatestTransaction = (storeTransactions: SubmittedTransaction[]) => { }, [account, chainId, storeTransactions]); useEffect(() => { - if (!activeAccount) { - return; - } - const stateHashes = stateTransactions.map( (transaction) => transaction.hash ); @@ -47,7 +43,11 @@ const useLatestTransaction = (storeTransactions: SubmittedTransaction[]) => { (transaction) => !stateHashes.includes(transaction.hash) ); - if (newTransaction) { + if ( + newTransaction && + activeAccount === account && + activeChainId === chainId + ) { setLatestTransaction(newTransaction); } }, [storeTransactions]); diff --git a/src/features/transactions/transactionsHelpers.ts b/src/features/transactions/transactionsHelpers.ts index 348777d1..d91c8cf9 100644 --- a/src/features/transactions/transactionsHelpers.ts +++ b/src/features/transactions/transactionsHelpers.ts @@ -146,28 +146,29 @@ export const handleTransactionEvent = dispatch(updateTransaction(updatedTransaction, matchingTransaction.hash)); }; -export const handleTransactionResolved = - (transaction: SubmittedTransaction) => (): void => { - if (isApprovalTransaction(transaction)) { - handleApproveTransaction(transaction, transaction.status); - } +export const handleTransactionResolved = ( + transaction: SubmittedTransaction +) => { + if (isApprovalTransaction(transaction)) { + handleApproveTransaction(transaction.status); + } - if (isDepositTransaction(transaction)) { - handleSubmittedDepositOrder(transaction, transaction.status); - } + if (isDepositTransaction(transaction)) { + handleSubmittedDepositOrder(transaction.status); + } - if (isWithdrawTransaction(transaction)) { - handleSubmittedWithdrawOrder(transaction, transaction.status); - } + if (isWithdrawTransaction(transaction)) { + handleSubmittedWithdrawOrder(transaction.status); + } - if (isSubmittedOrder(transaction)) { - handleSubmittedOrder(transaction, transaction.status); - } + if (isSubmittedOrder(transaction)) { + handleSubmittedOrder(transaction.status); + } - if (isCancelTransaction(transaction)) { - handleSubmittedCancelOrder(transaction.status); - } - }; + if (isCancelTransaction(transaction)) { + handleSubmittedCancelOrder(transaction.status); + } +}; export const updateTransactionWithReceipt = (transaction: SubmittedTransaction, receipt: TransactionReceipt) => diff --git a/yarn.lock b/yarn.lock index fdb67c22..98e5c27a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14,10 +14,10 @@ dependencies: ethers "^5.7.2" -"@airswap/delegate@5.0.1": - version "5.0.1" - resolved "https://registry.yarnpkg.com/@airswap/delegate/-/delegate-5.0.1.tgz#0fb25951359093ceddce047f9ad38a03b4e36f49" - integrity sha512-DXKhz1/MZphzAwgNFpLCZFnEBK+Hs9AstDzs5ljyxIFO49dM8UdUt3BC5x072nmsAjH7r6j0IcEaddX9CYvpYA== +"@airswap/delegate@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@airswap/delegate/-/delegate-5.0.2.tgz#c5957bf906f6c933d76c3f8c7bbb3d50be0d8f36" + integrity sha512-chRZE4akeaeV23mT9sPlwxVKkEyARsDxyQ8sOC4bHb2RM3oUUk+5wcGZgs1MTuUC8bnWKdJQyVvjrrMr0OBTYw== dependencies: ethers "^5.7.2" @@ -28,20 +28,20 @@ dependencies: get-parameter-names "^0.3.0" -"@airswap/libraries@5.0.3": - version "5.0.3" - resolved "https://registry.yarnpkg.com/@airswap/libraries/-/libraries-5.0.3.tgz#8d9a55574e6a190384c17e995a684dce4ad92bf6" - integrity sha512-g9Wn2dTvCQ+C4R66WfHWGNFT+ECLJsaa+LB5i34oJvoNwqzHMwEm0dD8O7XauUWwo5sjQw4OLt9N94fZte7l8w== +"@airswap/libraries@5.0.9": + version "5.0.9" + resolved "https://registry.yarnpkg.com/@airswap/libraries/-/libraries-5.0.9.tgz#a886a9c39723b1b4a8353a378ff4d532c41a0800" + integrity sha512-scf8xWyQsGXVWvm8AAuqyCsehpDBr+v9pPDTuKhdW5uDs8HXDLBgghIrVFFwk91bw2vYrr182QjV2+5BmT4aow== dependencies: "@airswap/batch-call" "5.0.1" - "@airswap/delegate" "5.0.1" + "@airswap/delegate" "5.0.2" "@airswap/jsonrpc-client-websocket" "0.0.1" "@airswap/pool" "5.0.1" "@airswap/registry" "5.0.1" "@airswap/staking" "5.0.1" "@airswap/swap" "5.0.1" "@airswap/swap-erc20" "5.0.1" - "@airswap/utils" "5.0.2" + "@airswap/utils" "5.0.5" "@airswap/wrapper" "5.0.1" browser-or-node "^2.1.1" ethers "^5.7.2" @@ -85,10 +85,10 @@ dependencies: ethers "^5.7.2" -"@airswap/utils@5.0.2": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@airswap/utils/-/utils-5.0.2.tgz#2c79dd17e06ff3232225f68e7c2f777bf7d1e744" - integrity sha512-JIDR6hW8EX6zWvpA/rNetPpNv7Dwkza9bhgj6TaM0rhYSyyySj3cUTmGXHJTqZv7SOFw9LLFashhbqxtW+nG/A== +"@airswap/utils@5.0.5": + version "5.0.5" + resolved "https://registry.yarnpkg.com/@airswap/utils/-/utils-5.0.5.tgz#999835c22d8e5c7b5b560e6bd822ee023864fc86" + integrity sha512-Aj6sPSFVfL2FePiFw2Th8WEqBdVsXxvkt99GENewFBgRY0xpJFhO4EV83V+NuIlfZyNoRH2bOx/0lnqcyxNbSA== dependencies: "@metamask/eth-sig-util" "^5.0.2" "@uniswap/token-lists" "^1.0.0-beta.24"