Skip to content

Commit a9729ee

Browse files
mgrabinaclaude
andcommitted
fix: only swap network cost fields for SELL orders, update lockfile
The naming bug in cow-sdk only affected SELL order semantics — BUY orders had correct field mapping in both old and new SDK. After correcting only SELL, both order kinds resolve to the same fields (beforeNetworkCosts for src, afterNetworkCosts for dest), so the ternaries are removed. Also regenerates yarn.lock for cow-sdk 7.3.8. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 07ba620 commit a9729ee

2 files changed

Lines changed: 91 additions & 28 deletions

File tree

src/components/transactions/Swap/helpers/cow/rates.helpers.ts

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -194,19 +194,16 @@ export async function getCowProtocolSellRates({
194194

195195
if (invertedQuoteRoute) {
196196
// Calculate Amounts
197-
// Note: beforeNetworkCosts/afterNetworkCosts were swapped in cow-sdk v7.3.5+
198-
// (sdk-order-book v1.0.0) to fix a naming bug where the semantics were inverted.
197+
// cow-sdk v7.3.5+ (sdk-order-book v1.0.0) fixed a naming bug where
198+
// beforeNetworkCosts/afterNetworkCosts were inverted for SELL orders.
199+
// After the fix, both SELL and BUY resolve to the same fields.
199200
const srcSpotAmount =
200-
side === 'sell'
201-
? orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.buyAmount.toString()
202-
: orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.buyAmount.toString();
201+
orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.buyAmount.toString();
203202
const srcSpotUSD = BigNumber(destTokenPriceUsd)
204203
.multipliedBy(BigNumber(srcSpotAmount).dividedBy(10 ** destDecimals))
205204
.toString();
206205
const destSpotAmount =
207-
side === 'sell'
208-
? orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.sellAmount.toString()
209-
: orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.sellAmount.toString();
206+
orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.sellAmount.toString();
210207
const destSpotUSD = BigNumber(srcTokenPriceUsd)
211208
.multipliedBy(BigNumber(destSpotAmount).dividedBy(10 ** srcDecimals))
212209
.toString();
@@ -238,19 +235,16 @@ export async function getCowProtocolSellRates({
238235
};
239236
} else {
240237
// Calculate Amounts
241-
// Note: beforeNetworkCosts/afterNetworkCosts were swapped in cow-sdk v7.3.5+
242-
// (sdk-order-book v1.0.0) to fix a naming bug where the semantics were inverted.
238+
// cow-sdk v7.3.5+ (sdk-order-book v1.0.0) fixed a naming bug where
239+
// beforeNetworkCosts/afterNetworkCosts were inverted for SELL orders.
240+
// After the fix, both SELL and BUY resolve to the same fields.
243241
const srcSpotAmount =
244-
orderBookQuote.quoteResults.orderToSign.kind === OrderKind.SELL
245-
? orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.sellAmount.toString()
246-
: orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.sellAmount.toString();
242+
orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.sellAmount.toString();
247243
const srcSpotUSD = BigNumber(srcTokenPriceUsd)
248244
.multipliedBy(BigNumber(srcSpotAmount).dividedBy(10 ** srcDecimals))
249245
.toString();
250246
const destSpotAmount =
251-
orderBookQuote.quoteResults.orderToSign.kind === OrderKind.SELL
252-
? orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.buyAmount.toString()
253-
: orderBookQuote.quoteResults.amountsAndCosts.beforeNetworkCosts.buyAmount.toString();
247+
orderBookQuote.quoteResults.amountsAndCosts.afterNetworkCosts.buyAmount.toString();
254248
const destSpotUSD = BigNumber(destTokenPriceUsd)
255249
.multipliedBy(BigNumber(destSpotAmount).dividedBy(10 ** destDecimals))
256250
.toString();

yarn.lock

Lines changed: 81 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1390,18 +1390,18 @@
13901390
dependencies:
13911391
chalk "^4.1.0"
13921392

1393-
"@cowprotocol/cow-sdk@7.3.4":
1394-
version "7.3.4"
1395-
resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-7.3.4.tgz#cdc4bb406cf3b21094fca9cc89e36cf3408af772"
1396-
integrity sha512-3ckIwrG7UV8jwe2D0UL7h9hLJDyS9cYJEEToFqMcarO1GcPUH8VA8p0g5XCy0MM8Kcp14kXA/aZ1seUPS8c15Q==
1397-
dependencies:
1398-
"@cowprotocol/sdk-app-data" "4.6.2"
1399-
"@cowprotocol/sdk-common" "0.5.4"
1400-
"@cowprotocol/sdk-config" "0.7.3"
1401-
"@cowprotocol/sdk-contracts-ts" "1.4.2"
1402-
"@cowprotocol/sdk-order-book" "0.6.3"
1403-
"@cowprotocol/sdk-order-signing" "0.1.30"
1404-
"@cowprotocol/sdk-trading" "0.10.0"
1393+
"@cowprotocol/cow-sdk@7.3.8":
1394+
version "7.3.8"
1395+
resolved "https://registry.yarnpkg.com/@cowprotocol/cow-sdk/-/cow-sdk-7.3.8.tgz#b5911a709bc096e6f0bcd8bd87dc97fe600de616"
1396+
integrity sha512-ziY6vnvRYMqKfnOyONO8IabKTlVyCVsu5Iw84TyZKrx3BAjDIcuwFdlYxNVNXxyn3NPHru6t7NSJjrptSqZLLA==
1397+
dependencies:
1398+
"@cowprotocol/sdk-app-data" "4.6.5"
1399+
"@cowprotocol/sdk-common" "0.6.2"
1400+
"@cowprotocol/sdk-config" "0.8.1"
1401+
"@cowprotocol/sdk-contracts-ts" "1.6.1"
1402+
"@cowprotocol/sdk-order-book" "1.0.0"
1403+
"@cowprotocol/sdk-order-signing" "0.1.34"
1404+
"@cowprotocol/sdk-trading" "1.0.0"
14051405

14061406
"@cowprotocol/sdk-app-data@4.6.2":
14071407
version "4.6.2"
@@ -1415,13 +1415,32 @@
14151415
json-stringify-deterministic "^1.0.8"
14161416
multiformats "^9.6.4"
14171417

1418+
"@cowprotocol/sdk-app-data@4.6.5":
1419+
version "4.6.5"
1420+
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-app-data/-/sdk-app-data-4.6.5.tgz#b202913b0593214e2012f2e570bb73699e630a8b"
1421+
integrity sha512-0ww6vtJ13SOoHA8YIX/DXzswteYnD1w7McQO/t4TsYGXIhrfwSj1aV5hBscp+Nkyvrh9CSwGQfBWWMs2BhPq9g==
1422+
dependencies:
1423+
"@cowprotocol/sdk-common" "0.6.2"
1424+
ajv "^8.11.0"
1425+
cross-fetch "^3.1.5"
1426+
ipfs-only-hash "^4.0.0"
1427+
json-stringify-deterministic "^1.0.8"
1428+
multiformats "^9.6.4"
1429+
14181430
"@cowprotocol/sdk-common@0.5.4":
14191431
version "0.5.4"
14201432
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-common/-/sdk-common-0.5.4.tgz#4792030fee1297d33c70afd027c87bbbbb06197b"
14211433
integrity sha512-47z6e6UUTV42YA1iUIQOof6MbBQNB0x2b15ZPYuwj3v05bhUYLIHT7eupEkNDUTp/Um+vGnyfnjgIePUhWcoPw==
14221434
dependencies:
14231435
"@cowprotocol/sdk-config" "0.7.3"
14241436

1437+
"@cowprotocol/sdk-common@0.6.2":
1438+
version "0.6.2"
1439+
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-common/-/sdk-common-0.6.2.tgz#21738c0b7c7100eb8bbd99bd7b98b0c429dba6ee"
1440+
integrity sha512-zoifb8uzi1b8jQh7SidMx3iqRIlL+eu38MzmGIOtcO10oDNEgu8ved479baLdclu+uXb0soutOjAYLj0TAIEFA==
1441+
dependencies:
1442+
"@cowprotocol/sdk-config" "0.8.1"
1443+
14251444
"@cowprotocol/sdk-config@0.7.3":
14261445
version "0.7.3"
14271446
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-config/-/sdk-config-0.7.3.tgz#e60f599e535629fcb1f2fc3c1ead982bb9bc0b0d"
@@ -1430,6 +1449,14 @@
14301449
exponential-backoff "^3.1.1"
14311450
limiter "^2.1.0"
14321451

1452+
"@cowprotocol/sdk-config@0.8.1":
1453+
version "0.8.1"
1454+
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-config/-/sdk-config-0.8.1.tgz#90515cfba8c6dfdb172b665882779b082396efcc"
1455+
integrity sha512-gKrILavzbIYkvju0Ko58KAw5b+YM6RN7MYfk7qND9RkGi1E99gHOgfgwp9hWvNhlXf2V/ltM0INl5OV2tQuMKg==
1456+
dependencies:
1457+
exponential-backoff "^3.1.1"
1458+
limiter "^2.1.0"
1459+
14331460
"@cowprotocol/sdk-contracts-ts@1.4.2":
14341461
version "1.4.2"
14351462
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-contracts-ts/-/sdk-contracts-ts-1.4.2.tgz#f90729e9dfe5680da88955771c7dac1fa3dc300b"
@@ -1438,6 +1465,14 @@
14381465
"@cowprotocol/sdk-common" "0.5.4"
14391466
"@cowprotocol/sdk-config" "0.7.3"
14401467

1468+
"@cowprotocol/sdk-contracts-ts@1.6.1":
1469+
version "1.6.1"
1470+
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-contracts-ts/-/sdk-contracts-ts-1.6.1.tgz#bfd2b493c58f6d5166c5484bfe69af3464e1658a"
1471+
integrity sha512-nKIYU0dI88pruZdflMwsdLm1xQWwJ+E+GXuBiIbisZEf632ONMFJKlF2d72d3xWP4rvRyeWjnek2K3K87QOSOg==
1472+
dependencies:
1473+
"@cowprotocol/sdk-common" "0.6.2"
1474+
"@cowprotocol/sdk-config" "0.8.1"
1475+
14411476
"@cowprotocol/sdk-ethers-v5-adapter@0.3.5":
14421477
version "0.3.5"
14431478
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-ethers-v5-adapter/-/sdk-ethers-v5-adapter-0.3.5.tgz#0e72e734495f0aaa593b0073d09dcd5e6621ddc0"
@@ -1468,6 +1503,17 @@
14681503
exponential-backoff "^3.1.2"
14691504
limiter "^3.0.0"
14701505

1506+
"@cowprotocol/sdk-order-book@1.0.0":
1507+
version "1.0.0"
1508+
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-book/-/sdk-order-book-1.0.0.tgz#34dccaef736fbd97e6ec1a2d205cf07b027203a1"
1509+
integrity sha512-qDxiI/kJq6JjYkbjh8/u9X3N5h5kJvZ0F0+KN7snk4x0IjiYnb0I5ETXYFFkNsnko5qBGI9wVhvTfE6EHuqPjA==
1510+
dependencies:
1511+
"@cowprotocol/sdk-common" "0.6.2"
1512+
"@cowprotocol/sdk-config" "0.8.1"
1513+
cross-fetch "^3.2.0"
1514+
exponential-backoff "^3.1.2"
1515+
limiter "^3.0.0"
1516+
14711517
"@cowprotocol/sdk-order-signing@0.1.30":
14721518
version "0.1.30"
14731519
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-signing/-/sdk-order-signing-0.1.30.tgz#ff80e7d2a5f1da1ef42b74ec92ed937425193eb9"
@@ -1478,6 +1524,16 @@
14781524
"@cowprotocol/sdk-contracts-ts" "1.4.2"
14791525
"@cowprotocol/sdk-order-book" "0.6.3"
14801526

1527+
"@cowprotocol/sdk-order-signing@0.1.34":
1528+
version "0.1.34"
1529+
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-order-signing/-/sdk-order-signing-0.1.34.tgz#cb191cdde04b508d98e5605d367985381a4322ea"
1530+
integrity sha512-jUnxoo2ovff15RZUgE+hefe5Enql/r8R9vhspRYAt7m5VW6/6CcI3G0/n2KV1wsiqssMEp/QB8HVlC1AtAQ6dg==
1531+
dependencies:
1532+
"@cowprotocol/sdk-common" "0.6.2"
1533+
"@cowprotocol/sdk-config" "0.8.1"
1534+
"@cowprotocol/sdk-contracts-ts" "1.6.1"
1535+
"@cowprotocol/sdk-order-book" "1.0.0"
1536+
14811537
"@cowprotocol/sdk-trading@0.10.0":
14821538
version "0.10.0"
14831539
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-trading/-/sdk-trading-0.10.0.tgz#c88b8062b93d99d47f26cc3635f7ae230f8f46ae"
@@ -1491,6 +1547,19 @@
14911547
"@cowprotocol/sdk-order-signing" "0.1.30"
14921548
deepmerge "^4.3.1"
14931549

1550+
"@cowprotocol/sdk-trading@1.0.0":
1551+
version "1.0.0"
1552+
resolved "https://registry.yarnpkg.com/@cowprotocol/sdk-trading/-/sdk-trading-1.0.0.tgz#3739a8ee1ac793b963d0858fc1953bd394dd44cb"
1553+
integrity sha512-iQPA3Fv2eu9jlTD0/YKWGTm425JWhjveSpk9UVYWkK0tP3F/SIAg39DgZv/V3Kd34Z4cnNjRb5mIhFz1v+vVMA==
1554+
dependencies:
1555+
"@cowprotocol/sdk-app-data" "4.6.5"
1556+
"@cowprotocol/sdk-common" "0.6.2"
1557+
"@cowprotocol/sdk-config" "0.8.1"
1558+
"@cowprotocol/sdk-contracts-ts" "1.6.1"
1559+
"@cowprotocol/sdk-order-book" "1.0.0"
1560+
"@cowprotocol/sdk-order-signing" "0.1.34"
1561+
deepmerge "^4.3.1"
1562+
14941563
"@cspotcode/source-map-support@^0.8.0":
14951564
version "0.8.1"
14961565
resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"

0 commit comments

Comments
 (0)