From db65420bc234315c80489364272f68c28e02f2ea Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Mon, 12 Oct 2026 11:20:07 -0300 Subject: [PATCH 1/2] feat: point CoW swap adapters at the new V3 deployment Moves the adapter and factory addresses to the suite deployed from cow-swap-adapters@12a8bb5a and adds the leverage adapter. Linea has its own factory; every other chain uses the shared Core factory. The new factories verify adapter orders under the EIP-712 name AaveV3AdapterV3Factory, which the SDK now takes as adapterDomainName. An instance can only be cancelled on the factory that created it, so each saved order now records its factory, and orders saved before this change cancel on the previous factory, the only one used before. --- .../CancelAdapterOrderActions.tsx | 11 +-- .../CollateralSwapActionsViaCoWAdapters.tsx | 11 ++- .../DebtSwap/DebtSwapActionsViaCoW.tsx | 11 ++- .../RepayWithCollateralActionsViaCoW.tsx | 11 ++- .../Swap/constants/cow.constants.ts | 92 +++++++++++-------- .../Swap/helpers/cow/env.helpers.ts | 7 +- src/hooks/useTransactionHistory.tsx | 1 + src/modules/history/types.ts | 1 + src/utils/swapAdapterHistory.ts | 1 + 9 files changed, 96 insertions(+), 50 deletions(-) diff --git a/src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx b/src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx index 575435425a..086c0bfe84 100644 --- a/src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx +++ b/src/components/transactions/CancelCowOrder/CancelAdapterOrderActions.tsx @@ -1,4 +1,4 @@ -import { OrderStatus, SupportedChainId } from '@cowprotocol/cow-sdk'; +import { OrderStatus } from '@cowprotocol/cow-sdk'; import { Trans } from '@lingui/macro'; import { useQueryClient } from '@tanstack/react-query'; import { Interface } from 'ethers/lib/utils'; @@ -16,7 +16,7 @@ import { useRootStore } from 'src/store/root'; import { getErrorTextFromError, TxAction } from 'src/ui-config/errorMapping'; import { updateCowOrderStatus } from 'src/utils/swapAdapterHistory'; -import { ADAPTER_FACTORY } from '../Swap/constants/cow.constants'; +import { LEGACY_ADAPTER_FACTORY } from '../Swap/constants/cow.constants'; import { TxActionsWrapper } from '../TxActionsWrapper'; interface CancelAdapterOrderActionsProps { @@ -59,11 +59,8 @@ export const CancelAdapterOrderActions = ({ const adapterInterface = new Interface(ADAPTER_ABI); - const factoryAddress = ADAPTER_FACTORY[cowOrder.chainId as SupportedChainId]; - - if (!factoryAddress) { - throw new Error('Factory address not found for this chain'); - } + // An instance is only cancelled on the factory that created it. + const factoryAddress = cowSwapOrder.adapterFactoryAddress ?? LEGACY_ADAPTER_FACTORY; const data = adapterInterface.encodeFunctionData('cancelInstance', [ cowSwapOrder.adapterInstanceAddress, diff --git a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx index 8a1720920c..fcbec4f7c0 100644 --- a/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx +++ b/src/components/transactions/Swap/actions/CollateralSwap/CollateralSwapActionsViaCoWAdapters.tsx @@ -1,5 +1,11 @@ import { normalize } from '@aave/math-utils'; -import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; +import { + getOrderToSign, + LimitTradeParameters, + OrderKind, + OrderStatus, + SupportedChainId, +} from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; @@ -13,7 +19,7 @@ import { saveCowOrderToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; -import { COW_PARTNER_FEE } from '../../constants/cow.constants'; +import { ADAPTER_FACTORY, COW_PARTNER_FEE } from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { addOrderTypeToAppData, @@ -304,6 +310,7 @@ export const CollateralSwapActionsViaCowAdapters = ({ decimals: state.buyAmountToken.decimals, }, adapterInstanceAddress: instanceAddress, + adapterFactoryAddress: ADAPTER_FACTORY[state.chainId as SupportedChainId], usedAdapter: true, // CollateralSwap via adapters always uses adapter (flashloan) srcAmount: state.sellAmountBigInt.toString(), destAmount: state.buyAmountBigInt.toString(), diff --git a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx index 02dc948b14..8f6573e1ff 100644 --- a/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/DebtSwap/DebtSwapActionsViaCoW.tsx @@ -1,5 +1,11 @@ import { normalize } from '@aave/math-utils'; -import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; +import { + getOrderToSign, + LimitTradeParameters, + OrderKind, + OrderStatus, + SupportedChainId, +} from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; @@ -14,7 +20,7 @@ import { zeroAddress } from 'viem'; import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; -import { COW_PARTNER_FEE } from '../../constants/cow.constants'; +import { ADAPTER_FACTORY, COW_PARTNER_FEE } from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { addOrderTypeToAppData, @@ -331,6 +337,7 @@ export const DebtSwapActionsViaCoW = ({ decimals: state.buyAmountToken.decimals, }, adapterInstanceAddress: instanceAddress, + adapterFactoryAddress: ADAPTER_FACTORY[state.chainId as SupportedChainId], usedAdapter: true, // DebtSwap always uses adapter srcAmount: state.sellAmountBigInt.toString(), destAmount: state.buyAmountBigInt.toString(), diff --git a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx index d44efb0995..37312da901 100644 --- a/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx +++ b/src/components/transactions/Swap/actions/RepayWithCollateral/RepayWithCollateralActionsViaCoW.tsx @@ -1,5 +1,11 @@ import { normalize } from '@aave/math-utils'; -import { getOrderToSign, LimitTradeParameters, OrderKind, OrderStatus } from '@cowprotocol/cow-sdk'; +import { + getOrderToSign, + LimitTradeParameters, + OrderKind, + OrderStatus, + SupportedChainId, +} from '@cowprotocol/cow-sdk'; import { AaveFlashLoanType, HASH_ZERO } from '@cowprotocol/sdk-flash-loans'; import { Trans } from '@lingui/macro'; import { Dispatch, useEffect, useMemo, useState } from 'react'; @@ -13,7 +19,7 @@ import { saveCowOrderToUserHistory } from 'src/utils/swapAdapterHistory'; import { useShallow } from 'zustand/react/shallow'; import { TrackAnalyticsHandlers } from '../../analytics/useTrackAnalytics'; -import { COW_PARTNER_FEE } from '../../constants/cow.constants'; +import { ADAPTER_FACTORY, COW_PARTNER_FEE } from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { addOrderTypeToAppData, @@ -329,6 +335,7 @@ export const RepayWithCollateralActionsViaCoW = ({ decimals: state.buyAmountToken.decimals, }, adapterInstanceAddress: instanceAddress, + adapterFactoryAddress: ADAPTER_FACTORY[state.chainId as SupportedChainId], usedAdapter: true, // RepayWithCollateral always uses adapter srcAmount: state.sellAmountBigInt.toString(), destAmount: state.buyAmountBigInt.toString(), diff --git a/src/components/transactions/Swap/constants/cow.constants.ts b/src/components/transactions/Swap/constants/cow.constants.ts index 37ab7e217c..7a5cf3a7a3 100644 --- a/src/components/transactions/Swap/constants/cow.constants.ts +++ b/src/components/transactions/Swap/constants/cow.constants.ts @@ -8,43 +8,57 @@ import { OrderType, SwapType } from '../types'; export const HOOK_ADAPTER_PER_TYPE: Record> = { [AaveFlashLoanType.CollateralSwap]: { - [SupportedChainId.MAINNET]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.GNOSIS_CHAIN]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.ARBITRUM_ONE]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.AVALANCHE]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.BNB]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.POLYGON]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.BASE]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.LINEA]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', - [SupportedChainId.PLASMA]: '0x029d584E847373B6373b01dfaD1a0C9BfB916382', + [SupportedChainId.MAINNET]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.GNOSIS_CHAIN]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.ARBITRUM_ONE]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.AVALANCHE]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.BNB]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.POLYGON]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.BASE]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.LINEA]: '0xa1138627412212e53C208e220696f14b0185a82c', + [SupportedChainId.PLASMA]: '0xa1138627412212e53C208e220696f14b0185a82c', [SupportedChainId.SEPOLIA]: '', [SupportedChainId.INK]: '', [SupportedChainId.SOLANA]: '', }, [AaveFlashLoanType.DebtSwap]: { - [SupportedChainId.MAINNET]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.GNOSIS_CHAIN]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.ARBITRUM_ONE]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.AVALANCHE]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.BNB]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.POLYGON]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.BASE]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.LINEA]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', - [SupportedChainId.PLASMA]: '0x73e7aF13Ef172F13d8FEfEbfD90C7A6530096344', + [SupportedChainId.MAINNET]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.GNOSIS_CHAIN]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.ARBITRUM_ONE]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.AVALANCHE]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.BNB]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.POLYGON]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.BASE]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.LINEA]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', + [SupportedChainId.PLASMA]: '0xC898f87b572018ED25F501FFD620894a32dCa1AC', [SupportedChainId.SEPOLIA]: '', [SupportedChainId.INK]: '', [SupportedChainId.SOLANA]: '', }, [AaveFlashLoanType.RepayCollateral]: { - [SupportedChainId.MAINNET]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.GNOSIS_CHAIN]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.ARBITRUM_ONE]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.AVALANCHE]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.BNB]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.POLYGON]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.BASE]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.LINEA]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', - [SupportedChainId.PLASMA]: '0xAc27F3f86e78B14721d07C4f9CE999285f9AAa06', + [SupportedChainId.MAINNET]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.GNOSIS_CHAIN]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.ARBITRUM_ONE]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.AVALANCHE]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.BNB]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.POLYGON]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.BASE]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.LINEA]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.PLASMA]: '0x4AE46995af9ED4f4EdFC6FF1523b114EE4D7053a', + [SupportedChainId.SEPOLIA]: '', + [SupportedChainId.INK]: '', + [SupportedChainId.SOLANA]: '', + }, + [AaveFlashLoanType.Leverage]: { + [SupportedChainId.MAINNET]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.GNOSIS_CHAIN]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.ARBITRUM_ONE]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.AVALANCHE]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.BNB]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.POLYGON]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.BASE]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.LINEA]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', + [SupportedChainId.PLASMA]: '0xaEE8B0666BF8a584e9D67bFaa65007E74c70b26a', [SupportedChainId.SEPOLIA]: '', [SupportedChainId.INK]: '', [SupportedChainId.SOLANA]: '', @@ -52,20 +66,26 @@ export const HOOK_ADAPTER_PER_TYPE: Record = { - [SupportedChainId.MAINNET]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.GNOSIS_CHAIN]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.ARBITRUM_ONE]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.AVALANCHE]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.BNB]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.POLYGON]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.BASE]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.LINEA]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', - [SupportedChainId.PLASMA]: '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192', + [SupportedChainId.MAINNET]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', + [SupportedChainId.GNOSIS_CHAIN]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', + [SupportedChainId.ARBITRUM_ONE]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', + [SupportedChainId.AVALANCHE]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', + [SupportedChainId.BNB]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', + [SupportedChainId.POLYGON]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', + [SupportedChainId.BASE]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', + [SupportedChainId.LINEA]: '0x3171FC716942a40DEDe8dD0B7885dd9f44eca176', + [SupportedChainId.PLASMA]: '0xD2CC30cB0e77B80a34b879ccB6da67799e4ecD83', [SupportedChainId.SEPOLIA]: '', [SupportedChainId.INK]: '', [SupportedChainId.SOLANA]: '', }; +// Orders saved before the factory was recorded per order were all placed through this one. +export const LEGACY_ADAPTER_FACTORY = '0xdeCC46a4b09162F5369c5C80383AAa9159bCf192'; + +// EIP-712 domain name the factories above verify adapter order signatures against. +export const ADAPTER_FACTORY_DOMAIN_NAME = 'AaveV3AdapterV3Factory'; + export const DUST_PROTECTION_MULTIPLIER = 1.0003; // 3 BPS export const COW_UNSUPPORTED_ASSETS: Partial< diff --git a/src/components/transactions/Swap/helpers/cow/env.helpers.ts b/src/components/transactions/Swap/helpers/cow/env.helpers.ts index 5e2e9ca241..12bd1365a1 100644 --- a/src/components/transactions/Swap/helpers/cow/env.helpers.ts +++ b/src/components/transactions/Swap/helpers/cow/env.helpers.ts @@ -6,7 +6,11 @@ import { wagmiConfig } from 'src/ui-config/wagmiConfig'; import { getProvider } from 'src/utils/marketsAndNetworksConfig'; import { getAccount, getWalletClient } from 'wagmi/actions'; -import { ADAPTER_FACTORY, HOOK_ADAPTER_PER_TYPE } from '../../constants/cow.constants'; +import { + ADAPTER_FACTORY, + ADAPTER_FACTORY_DOMAIN_NAME, + HOOK_ADAPTER_PER_TYPE, +} from '../../constants/cow.constants'; import { APP_CODE_PER_SWAP_TYPE } from '../../constants/shared.constants'; import { SwapState } from '../../types'; import { COW_ENV } from './orders.helpers'; @@ -42,6 +46,7 @@ export const getCowFlashLoanSdk = async (chainId: number) => { return new AaveCollateralSwapSdk({ hookAdapterPerType: HOOK_ADAPTER_PER_TYPE, aaveAdapterFactory: ADAPTER_FACTORY, + adapterDomainName: ADAPTER_FACTORY_DOMAIN_NAME, hooksGasLimit: { pre: BigInt(300000), post: BigInt(700000), diff --git a/src/hooks/useTransactionHistory.tsx b/src/hooks/useTransactionHistory.tsx index 13bac5a23a..6c4d63f24e 100644 --- a/src/hooks/useTransactionHistory.tsx +++ b/src/hooks/useTransactionHistory.tsx @@ -470,6 +470,7 @@ export const useTransactionHistory = ({ isFilterActive }: { isFilterActive: bool orderId: e.orderId, chainId: e.chainId, adapterInstanceAddress: e.adapterInstanceAddress, + adapterFactoryAddress: e.adapterFactoryAddress, usedAdapter: e.usedAdapter, } as TransactionHistoryItemUnion; }) diff --git a/src/modules/history/types.ts b/src/modules/history/types.ts index 90549c23ab..4c722cd4c1 100644 --- a/src/modules/history/types.ts +++ b/src/modules/history/types.ts @@ -57,6 +57,7 @@ export type CowSwapSubset = SwapSubset & { protocol: 'cow'; orderId: string; adapterInstanceAddress?: string; // Instance address for adapter-based swaps + adapterFactoryAddress?: string; // Factory that created the instance usedAdapter?: boolean; // Whether adapter was used }; diff --git a/src/utils/swapAdapterHistory.ts b/src/utils/swapAdapterHistory.ts index d9f5bd1f53..273b28a2a3 100644 --- a/src/utils/swapAdapterHistory.ts +++ b/src/utils/swapAdapterHistory.ts @@ -23,6 +23,7 @@ export type CowAdapterEntry = { destAmount: string; // raw units // Adapter-specific fields for cancellation adapterInstanceAddress?: string; // Instance address for adapter-based swaps + adapterFactoryAddress?: string; // Factory that created the instance, and the one that can cancel it usedAdapter?: boolean; // Whether adapter was used (true for DebtSwap, RepayWithCollateral, and CollateralSwap with flashloan) }; From b0b12a9f00e227f10995dbf03b131a2618d548d6 Mon Sep 17 00:00:00 2001 From: Martin Grabina Date: Tue, 13 Oct 2026 09:57:28 -0300 Subject: [PATCH 2/2] chore: bump cow-sdk to the release with the V3 adapter domain name @cowprotocol/sdk-flash-loans 4.0.0 adds adapterDomainName and the Leverage flash-loan type. cow-sdk and the ethers-v5 adapter move with it so there is one copy of each internal sdk-* package. The release is younger than the 7-day minimumReleaseAge, so its exact versions are excluded until 2026-10-20. Exact-version excludes need pnpm 10.19, hence the packageManager bump. --- package.json | 8 +-- pnpm-lock.yaml | 132 ++++++++++++++++++++++---------------------- pnpm-workspace.yaml | 11 ++++ 3 files changed, 81 insertions(+), 70 deletions(-) diff --git a/package.json b/package.json index d0d9bdfc65..b66d414e69 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "3.0.1", "private": true, "license": "BSD-3-Clause", - "packageManager": "pnpm@10.18.0", + "packageManager": "pnpm@10.19.0", "engines": { "node": "24.x" }, @@ -63,9 +63,9 @@ "@aave/math-utils": "1.38.0", "@aave/react": "0.10.0", "@amplitude/analytics-browser": "^2.13.0", - "@cowprotocol/cow-sdk": "9.2.7", - "@cowprotocol/sdk-ethers-v5-adapter": "0.4.11", - "@cowprotocol/sdk-flash-loans": "3.3.4", + "@cowprotocol/cow-sdk": "9.2.21", + "@cowprotocol/sdk-ethers-v5-adapter": "0.4.21", + "@cowprotocol/sdk-flash-loans": "4.0.0", "@emotion/cache": "11.10.3", "@emotion/react": "11.10.4", "@emotion/server": "latest", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 16c4a38bac..9734306d05 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -52,14 +52,14 @@ importers: specifier: ^2.13.0 version: 2.44.5 '@cowprotocol/cow-sdk': - specifier: 9.2.7 - version: 9.2.7(ajv@8.20.0)(cross-fetch@4.1.0)(multiformats@9.9.0) + specifier: 9.2.21 + version: 9.2.21(ajv@8.20.0)(cross-fetch@4.1.0)(multiformats@9.9.0) '@cowprotocol/sdk-ethers-v5-adapter': - specifier: 0.4.11 - version: 0.4.11(@ethersproject/abstract-signer@5.8.0)(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) + specifier: 0.4.21 + version: 0.4.21(@ethersproject/abstract-signer@5.8.0)(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) '@cowprotocol/sdk-flash-loans': - specifier: 3.3.4 - version: 3.3.4(ajv@8.20.0)(multiformats@9.9.0) + specifier: 4.0.0 + version: 4.0.0(ajv@8.20.0)(multiformats@9.9.0) '@emotion/cache': specifier: 11.10.3 version: 11.10.3 @@ -1263,8 +1263,8 @@ packages: resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} engines: {node: '>=v14'} - '@cowprotocol/cow-sdk@9.2.7': - resolution: {integrity: sha512-rNT6msuhl+2ZLICGZNgq9ov0EOarpiZxYC3BDaJum+Z5hnnl46zeXZUbBQ4AA+zkNgAudUvChCpGgcXzw1o45Q==} + '@cowprotocol/cow-sdk@9.2.21': + resolution: {integrity: sha512-RuaoODRTwGbJbz8cHhd3epUTWCSTj+BR7Ydszc8IB0sE9EL8FdzkppvHHiQqJK7sBSBdtwT83SePN2jFlN5M7A==} peerDependencies: '@openzeppelin/merkle-tree': ^1.x cross-fetch: ^3.x @@ -1275,39 +1275,39 @@ packages: multiformats: optional: true - '@cowprotocol/sdk-app-data@6.0.0': - resolution: {integrity: sha512-0qoq0Y6WiaKfl32twLtLHrxoFlAlFaW17VMr+7KHGado79mJh/9tI4UsWfIoDrZICfSRxfdzIVCzMRRJK0abEA==} + '@cowprotocol/sdk-app-data@6.0.11': + resolution: {integrity: sha512-FLqTjDWXGyPGPsh3ZfGYFCI9t+9uToUzVNY2VnSZyXU7ztvg4Sh+KHZYRVn5co6nicLscm+CjUU/e+3CC/0a/w==} peerDependencies: ajv: ^8.x multiformats: ^9.x - '@cowprotocol/sdk-common@0.12.1': - resolution: {integrity: sha512-eh8o2b8iLHNRnS7ATRDNOkISp67KHV7JDzYn1qd/reCVPLlnN/lRDnNomT+A8uPU1aYV2eNkCkbLyTkkQ5bT4g==} + '@cowprotocol/sdk-common@0.14.5': + resolution: {integrity: sha512-Y+pzjo1zsIKg3qc5d7hMs/4JBQjtP0FJWpcBquEpvqiw3aFlyp/6HjcaS5tTGhSKy85D1H2uq7H1reuy3GYKQA==} - '@cowprotocol/sdk-config@2.4.0': - resolution: {integrity: sha512-NMJOqq3LfIjlFFUHd4zbx3Rc3YJl/oCklEaAxw10VHVDNMFMqcdK3tR6W9CPTILR8zAv5DDy1C2cPErXpcrzkQ==} + '@cowprotocol/sdk-config@2.10.0': + resolution: {integrity: sha512-k4mBAzwpemn0ZYFrMIXzqRPngI22mEHQU0edETLwxj+kG9nUrKBh56uuF5GOaX6OmT9RDL+b4bVR5+AxFoUDdg==} - '@cowprotocol/sdk-contracts-ts@3.4.0': - resolution: {integrity: sha512-mPnwaUp0rLX6o8dH9hXZoA0Nj5kpPaQMGePTpxq+DfggZc4Y17d6Re2rzaHJMoWMDm9zG+82xIXQnn4JWEwK7A==} + '@cowprotocol/sdk-contracts-ts@3.7.5': + resolution: {integrity: sha512-UNdbi7NhHBc+jE4/KZFKUHEJCxPL1wPCnunBSLtTvX0fyRpjlaTE1HHXqBUKXJOxLwWccjnofgYxKDY++AFzpQ==} - '@cowprotocol/sdk-ethers-v5-adapter@0.4.11': - resolution: {integrity: sha512-smFc78/x4VrHu7zLpTU5GF/cp1KE9qBQIyGhLkhT6edMzqq0ASpnuPajT2ddHylcUUR93sTAn9YYmUjYAb+VLQ==} + '@cowprotocol/sdk-ethers-v5-adapter@0.4.21': + resolution: {integrity: sha512-YabeSaouocAChyFN1nRjF4I1KtQY925GULzbMg+XNby8335XqW1OO7TFf20bGWUlkulnvnfzlFFak4jzjbLI/g==} peerDependencies: '@ethersproject/abstract-signer': ^5.8.0 '@typechain/ethers-v5': ^11.1.2 ethers: ^5.7.2 - '@cowprotocol/sdk-flash-loans@3.3.4': - resolution: {integrity: sha512-5IaWqtvQeGaa9fEqpiGxZHPT1HT2F//RSPhcM7NGnCZuv3ptwMrvNhhmxcLhtuCIuVe5RqAiT3VUrfCN4XDfUA==} + '@cowprotocol/sdk-flash-loans@4.0.0': + resolution: {integrity: sha512-IBmuCRh7koAxTlrhsLOItSNZW8GLEhVCdsN75aOF5kkgh3CosEVWjhNPUjW7J2TsBAT4BALapUqaFv0UMvMTlQ==} - '@cowprotocol/sdk-order-book@4.0.2': - resolution: {integrity: sha512-IuR6LARLtIrfRNkEqgPRkK5/1HRpR3+YktbkfqrH8B3Bi2YzMQxRVxu+N8KtEdC5fbHvkLixKKDDwN2gKAI3bA==} + '@cowprotocol/sdk-order-book@4.3.4': + resolution: {integrity: sha512-wwxFHA8/oun3NO5Kpz2xivdohOAmDG0vcg3m909quGkUr4BsJsSzaNgfuEFBCTYNfKZm8qaHwrtrq60mDlSUjg==} - '@cowprotocol/sdk-order-signing@1.1.7': - resolution: {integrity: sha512-0n1/Jsk/YHWfXoTx7IC9T5sCDd5NllRotkptjcV7cUWXS8HZVaUuw0EI+17gFHd/S+dro5s8e8Bmydvxq//8XQ==} + '@cowprotocol/sdk-order-signing@1.1.20': + resolution: {integrity: sha512-kjbea4pzPndQ1baErXNzbgyEIFYvnrnBtr4p8KbOXYsDBx3QFkNe4ylQZZhBXafeRJVRGo2yHbxHqDVCAunGqg==} - '@cowprotocol/sdk-trading@2.3.0': - resolution: {integrity: sha512-fuDfMTN/7t4PzXe0vcAHS09sEBMJqYIHx5gDgWMI65kMo9xnVJwHXHXV5nF2OpaTkvyOb6Z9CT7TIsSEmIAWrw==} + '@cowprotocol/sdk-trading@2.7.8': + resolution: {integrity: sha512-KFvBWsba4xn6Z9WMFEDmWxZJPZcFNimkV3z29yMc8hOGllHpGZzF5mOUwG5bFlS+XiNxVo23YLyqDBCT7BGglw==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -11548,15 +11548,15 @@ snapshots: dependencies: chalk: 4.1.2 - '@cowprotocol/cow-sdk@9.2.7(ajv@8.20.0)(cross-fetch@4.1.0)(multiformats@9.9.0)': + '@cowprotocol/cow-sdk@9.2.21(ajv@8.20.0)(cross-fetch@4.1.0)(multiformats@9.9.0)': dependencies: - '@cowprotocol/sdk-app-data': 6.0.0(ajv@8.20.0)(multiformats@9.9.0) - '@cowprotocol/sdk-common': 0.12.1 - '@cowprotocol/sdk-config': 2.4.0 - '@cowprotocol/sdk-contracts-ts': 3.4.0 - '@cowprotocol/sdk-order-book': 4.0.2 - '@cowprotocol/sdk-order-signing': 1.1.7 - '@cowprotocol/sdk-trading': 2.3.0(ajv@8.20.0)(multiformats@9.9.0) + '@cowprotocol/sdk-app-data': 6.0.11(ajv@8.20.0)(multiformats@9.9.0) + '@cowprotocol/sdk-common': 0.14.5 + '@cowprotocol/sdk-config': 2.10.0 + '@cowprotocol/sdk-contracts-ts': 3.7.5 + '@cowprotocol/sdk-order-book': 4.3.4 + '@cowprotocol/sdk-order-signing': 1.1.20 + '@cowprotocol/sdk-trading': 2.7.8(ajv@8.20.0)(multiformats@9.9.0) cross-fetch: 4.1.0 optionalDependencies: multiformats: 9.9.0 @@ -11564,74 +11564,74 @@ snapshots: - ajv - encoding - '@cowprotocol/sdk-app-data@6.0.0(ajv@8.20.0)(multiformats@9.9.0)': + '@cowprotocol/sdk-app-data@6.0.11(ajv@8.20.0)(multiformats@9.9.0)': dependencies: - '@cowprotocol/sdk-common': 0.12.1 + '@cowprotocol/sdk-common': 0.14.5 ajv: 8.20.0 json-stringify-deterministic: 1.0.14 multiformats: 9.9.0 - '@cowprotocol/sdk-common@0.12.1': + '@cowprotocol/sdk-common@0.14.5': dependencies: - '@cowprotocol/sdk-config': 2.4.0 + '@cowprotocol/sdk-config': 2.10.0 - '@cowprotocol/sdk-config@2.4.0': + '@cowprotocol/sdk-config@2.10.0': dependencies: exponential-backoff: 3.1.3 limiter: 2.1.0 - '@cowprotocol/sdk-contracts-ts@3.4.0': + '@cowprotocol/sdk-contracts-ts@3.7.5': dependencies: - '@cowprotocol/sdk-common': 0.12.1 - '@cowprotocol/sdk-config': 2.4.0 + '@cowprotocol/sdk-common': 0.14.5 + '@cowprotocol/sdk-config': 2.10.0 - '@cowprotocol/sdk-ethers-v5-adapter@0.4.11(@ethersproject/abstract-signer@5.8.0)(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': + '@cowprotocol/sdk-ethers-v5-adapter@0.4.21(@ethersproject/abstract-signer@5.8.0)(@typechain/ethers-v5@11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))': dependencies: - '@cowprotocol/sdk-common': 0.12.1 + '@cowprotocol/sdk-common': 0.14.5 '@ethersproject/abstract-signer': 5.8.0 '@typechain/ethers-v5': 11.1.2(@ethersproject/abi@5.8.0)(@ethersproject/providers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(ethers@5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typechain@8.3.2(typescript@5.9.3))(typescript@5.9.3) ethers: 5.8.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@cowprotocol/sdk-flash-loans@3.3.4(ajv@8.20.0)(multiformats@9.9.0)': + '@cowprotocol/sdk-flash-loans@4.0.0(ajv@8.20.0)(multiformats@9.9.0)': dependencies: - '@cowprotocol/sdk-app-data': 6.0.0(ajv@8.20.0)(multiformats@9.9.0) - '@cowprotocol/sdk-common': 0.12.1 - '@cowprotocol/sdk-config': 2.4.0 - '@cowprotocol/sdk-order-book': 4.0.2 - '@cowprotocol/sdk-order-signing': 1.1.7 - '@cowprotocol/sdk-trading': 2.3.0(ajv@8.20.0)(multiformats@9.9.0) + '@cowprotocol/sdk-app-data': 6.0.11(ajv@8.20.0)(multiformats@9.9.0) + '@cowprotocol/sdk-common': 0.14.5 + '@cowprotocol/sdk-config': 2.10.0 + '@cowprotocol/sdk-order-book': 4.3.4 + '@cowprotocol/sdk-order-signing': 1.1.20 + '@cowprotocol/sdk-trading': 2.7.8(ajv@8.20.0)(multiformats@9.9.0) transitivePeerDependencies: - ajv - encoding - multiformats - '@cowprotocol/sdk-order-book@4.0.2': + '@cowprotocol/sdk-order-book@4.3.4': dependencies: - '@cowprotocol/sdk-common': 0.12.1 - '@cowprotocol/sdk-config': 2.4.0 + '@cowprotocol/sdk-common': 0.14.5 + '@cowprotocol/sdk-config': 2.10.0 cross-fetch: 3.2.0 exponential-backoff: 3.1.3 limiter: 3.0.0 transitivePeerDependencies: - encoding - '@cowprotocol/sdk-order-signing@1.1.7': + '@cowprotocol/sdk-order-signing@1.1.20': dependencies: - '@cowprotocol/sdk-common': 0.12.1 - '@cowprotocol/sdk-config': 2.4.0 - '@cowprotocol/sdk-contracts-ts': 3.4.0 - '@cowprotocol/sdk-order-book': 4.0.2 + '@cowprotocol/sdk-common': 0.14.5 + '@cowprotocol/sdk-config': 2.10.0 + '@cowprotocol/sdk-contracts-ts': 3.7.5 + '@cowprotocol/sdk-order-book': 4.3.4 transitivePeerDependencies: - encoding - '@cowprotocol/sdk-trading@2.3.0(ajv@8.20.0)(multiformats@9.9.0)': + '@cowprotocol/sdk-trading@2.7.8(ajv@8.20.0)(multiformats@9.9.0)': dependencies: - '@cowprotocol/sdk-app-data': 6.0.0(ajv@8.20.0)(multiformats@9.9.0) - '@cowprotocol/sdk-common': 0.12.1 - '@cowprotocol/sdk-config': 2.4.0 - '@cowprotocol/sdk-contracts-ts': 3.4.0 - '@cowprotocol/sdk-order-book': 4.0.2 - '@cowprotocol/sdk-order-signing': 1.1.7 + '@cowprotocol/sdk-app-data': 6.0.11(ajv@8.20.0)(multiformats@9.9.0) + '@cowprotocol/sdk-common': 0.14.5 + '@cowprotocol/sdk-config': 2.10.0 + '@cowprotocol/sdk-contracts-ts': 3.7.5 + '@cowprotocol/sdk-order-book': 4.3.4 + '@cowprotocol/sdk-order-signing': 1.1.20 deepmerge: 4.3.1 transitivePeerDependencies: - ajv diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index bde3c82fae..d5bd9b6fda 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -13,6 +13,17 @@ minimumReleaseAge: 10080 minimumReleaseAgeExclude: - '@aave/*' - '@aave-dao/*' + # TODO: cow-sdk release from 2026-10-13, remove once it clears the 7-day window on 2026-10-20 + - '@cowprotocol/cow-sdk@9.2.21' + - '@cowprotocol/sdk-app-data@6.0.11' + - '@cowprotocol/sdk-common@0.14.5' + - '@cowprotocol/sdk-config@2.10.0' + - '@cowprotocol/sdk-contracts-ts@3.7.5' + - '@cowprotocol/sdk-ethers-v5-adapter@0.4.21' + - '@cowprotocol/sdk-flash-loans@4.0.0' + - '@cowprotocol/sdk-order-book@4.3.4' + - '@cowprotocol/sdk-order-signing@1.1.20' + - '@cowprotocol/sdk-trading@2.7.8' # Build-script allowlist. pnpm 10 blocks all dependency install/postinstall # scripts by default; only packages listed here may run them. This is the