@cowprotocol/sdk-trading 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -235,6 +235,12 @@ interface PostTradeAdditionalParams {
235
235
  */
236
236
  signingScheme?: SigningScheme;
237
237
  customEIP1271Signature?: (orderToSign: UnsignedOrder, signer: AbstractSigner<Provider>) => Promise<string>;
238
+ /**
239
+ * By default, we adjust the quoted sell/buy amounts to include network gas costs, slippage buffer,
240
+ * partner fees, and similar extras. Disable this when you prefer to post the raw amounts provided
241
+ * by the caller (for example, for limit orders that should not include these costs).
242
+ */
243
+ applyCostsSlippageAndFees?: boolean;
238
244
  }
239
245
 
240
246
  type QuoteResultsWithSigner = {
@@ -358,8 +364,9 @@ interface OrderToSignParams {
358
364
  isEthFlow: boolean;
359
365
  from: string;
360
366
  networkCostsAmount?: string;
367
+ applyCostsSlippageAndFees?: boolean;
361
368
  }
362
- declare function getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow }: OrderToSignParams, limitOrderParams: LimitTradeParameters, appDataKeccak256: string): UnsignedOrder;
369
+ declare function getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow, applyCostsSlippageAndFees }: OrderToSignParams, limitOrderParams: LimitTradeParameters, appDataKeccak256: string): UnsignedOrder;
363
370
 
364
371
  declare function postCoWProtocolTrade(orderBookApi: OrderBookApi, appData: TradingAppDataInfo, params: LimitTradeParameters, additionalParams?: PostTradeAdditionalParams, paramSigner?: SignerLike): Promise<OrderPostingResult>;
365
372
 
package/dist/index.d.ts CHANGED
@@ -235,6 +235,12 @@ interface PostTradeAdditionalParams {
235
235
  */
236
236
  signingScheme?: SigningScheme;
237
237
  customEIP1271Signature?: (orderToSign: UnsignedOrder, signer: AbstractSigner<Provider>) => Promise<string>;
238
+ /**
239
+ * By default, we adjust the quoted sell/buy amounts to include network gas costs, slippage buffer,
240
+ * partner fees, and similar extras. Disable this when you prefer to post the raw amounts provided
241
+ * by the caller (for example, for limit orders that should not include these costs).
242
+ */
243
+ applyCostsSlippageAndFees?: boolean;
238
244
  }
239
245
 
240
246
  type QuoteResultsWithSigner = {
@@ -358,8 +364,9 @@ interface OrderToSignParams {
358
364
  isEthFlow: boolean;
359
365
  from: string;
360
366
  networkCostsAmount?: string;
367
+ applyCostsSlippageAndFees?: boolean;
361
368
  }
362
- declare function getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow }: OrderToSignParams, limitOrderParams: LimitTradeParameters, appDataKeccak256: string): UnsignedOrder;
369
+ declare function getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow, applyCostsSlippageAndFees }: OrderToSignParams, limitOrderParams: LimitTradeParameters, appDataKeccak256: string): UnsignedOrder;
363
370
 
364
371
  declare function postCoWProtocolTrade(orderBookApi: OrderBookApi, appData: TradingAppDataInfo, params: LimitTradeParameters, additionalParams?: PostTradeAdditionalParams, paramSigner?: SignerLike): Promise<OrderPostingResult>;
365
372
 
package/dist/index.js CHANGED
@@ -133,7 +133,7 @@ function unsignedOrderForSigning(order) {
133
133
  }
134
134
 
135
135
  // src/getOrderToSign.ts
136
- function getOrderToSign({ chainId, from, networkCostsAmount = "0", isEthFlow }, limitOrderParams, appDataKeccak256) {
136
+ function getOrderToSign({ chainId, from, networkCostsAmount = "0", isEthFlow, applyCostsSlippageAndFees = true }, limitOrderParams, appDataKeccak256) {
137
137
  const {
138
138
  sellAmount,
139
139
  buyAmount,
@@ -161,18 +161,24 @@ function getOrderToSign({ chainId, from, networkCostsAmount = "0", isEthFlow },
161
161
  appData: appDataKeccak256,
162
162
  partiallyFillable
163
163
  };
164
- const { afterSlippage } = (0, import_sdk_order_book2.getQuoteAmountsAndCosts)({
165
- orderParams,
166
- slippagePercentBps: slippageBps,
167
- partnerFeeBps: getPartnerFeeBps(partnerFee),
168
- sellDecimals: sellTokenDecimals,
169
- buyDecimals: buyTokenDecimals
170
- });
164
+ let sellAmountToUse = sellAmount;
165
+ let buyAmountToUse = buyAmount;
166
+ if (applyCostsSlippageAndFees) {
167
+ const { afterSlippage } = (0, import_sdk_order_book2.getQuoteAmountsAndCosts)({
168
+ orderParams,
169
+ slippagePercentBps: slippageBps,
170
+ partnerFeeBps: getPartnerFeeBps(partnerFee),
171
+ sellDecimals: sellTokenDecimals,
172
+ buyDecimals: buyTokenDecimals
173
+ });
174
+ sellAmountToUse = afterSlippage.sellAmount.toString();
175
+ buyAmountToUse = afterSlippage.buyAmount.toString();
176
+ }
171
177
  return {
172
178
  sellToken,
173
179
  buyToken,
174
- sellAmount: afterSlippage.sellAmount.toString(),
175
- buyAmount: afterSlippage.buyAmount.toString(),
180
+ sellAmount: sellAmountToUse,
181
+ buyAmount: buyAmountToUse,
176
182
  validTo,
177
183
  kind,
178
184
  partiallyFillable,
@@ -374,7 +380,8 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
374
380
  const {
375
381
  networkCostsAmount = "0",
376
382
  signingScheme: _signingScheme = import_sdk_order_book4.SigningScheme.EIP712,
377
- customEIP1271Signature
383
+ customEIP1271Signature,
384
+ applyCostsSlippageAndFees
378
385
  } = additionalParams;
379
386
  const isEthFlow = getIsEthFlowOrder(params);
380
387
  if (isEthFlow) {
@@ -389,7 +396,11 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
389
396
  const { appDataKeccak256, fullAppData } = appData;
390
397
  const chainId = orderBookApi.context.chainId;
391
398
  const from = owner || await signer.getAddress();
392
- const orderToSign = getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow }, params, appData.appDataKeccak256);
399
+ const orderToSign = getOrderToSign(
400
+ { chainId, from, networkCostsAmount, isEthFlow, applyCostsSlippageAndFees },
401
+ params,
402
+ appData.appDataKeccak256
403
+ );
393
404
  (0, import_sdk_common5.log)("Signing order...");
394
405
  const { signature, signingScheme } = await (async () => {
395
406
  if (_signingScheme === import_sdk_order_book4.SigningScheme.PRESIGN) {
@@ -643,7 +654,9 @@ async function getQuoteRaw(_tradeParameters, trader, advancedSettings, _orderBoo
643
654
  env = "prod"
644
655
  } = tradeParameters;
645
656
  if (validTo !== void 0 && validFor !== void 0) {
646
- throw new Error("Cannot specify both validFor and validTo. Use validFor for relative time or validTo for absolute time.");
657
+ throw new Error(
658
+ "Cannot specify both validFor and validTo. Use validFor for relative time or validTo for absolute time."
659
+ );
647
660
  }
648
661
  const effectiveValidFor = validFor ?? DEFAULT_QUOTE_VALIDITY;
649
662
  (0, import_sdk_common11.log)(
package/dist/index.mjs CHANGED
@@ -81,7 +81,7 @@ function unsignedOrderForSigning(order) {
81
81
  }
82
82
 
83
83
  // src/getOrderToSign.ts
84
- function getOrderToSign({ chainId, from, networkCostsAmount = "0", isEthFlow }, limitOrderParams, appDataKeccak256) {
84
+ function getOrderToSign({ chainId, from, networkCostsAmount = "0", isEthFlow, applyCostsSlippageAndFees = true }, limitOrderParams, appDataKeccak256) {
85
85
  const {
86
86
  sellAmount,
87
87
  buyAmount,
@@ -109,18 +109,24 @@ function getOrderToSign({ chainId, from, networkCostsAmount = "0", isEthFlow },
109
109
  appData: appDataKeccak256,
110
110
  partiallyFillable
111
111
  };
112
- const { afterSlippage } = getQuoteAmountsAndCosts({
113
- orderParams,
114
- slippagePercentBps: slippageBps,
115
- partnerFeeBps: getPartnerFeeBps(partnerFee),
116
- sellDecimals: sellTokenDecimals,
117
- buyDecimals: buyTokenDecimals
118
- });
112
+ let sellAmountToUse = sellAmount;
113
+ let buyAmountToUse = buyAmount;
114
+ if (applyCostsSlippageAndFees) {
115
+ const { afterSlippage } = getQuoteAmountsAndCosts({
116
+ orderParams,
117
+ slippagePercentBps: slippageBps,
118
+ partnerFeeBps: getPartnerFeeBps(partnerFee),
119
+ sellDecimals: sellTokenDecimals,
120
+ buyDecimals: buyTokenDecimals
121
+ });
122
+ sellAmountToUse = afterSlippage.sellAmount.toString();
123
+ buyAmountToUse = afterSlippage.buyAmount.toString();
124
+ }
119
125
  return {
120
126
  sellToken,
121
127
  buyToken,
122
- sellAmount: afterSlippage.sellAmount.toString(),
123
- buyAmount: afterSlippage.buyAmount.toString(),
128
+ sellAmount: sellAmountToUse,
129
+ buyAmount: buyAmountToUse,
124
130
  validTo,
125
131
  kind,
126
132
  partiallyFillable,
@@ -330,7 +336,8 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
330
336
  const {
331
337
  networkCostsAmount = "0",
332
338
  signingScheme: _signingScheme = SigningScheme3.EIP712,
333
- customEIP1271Signature
339
+ customEIP1271Signature,
340
+ applyCostsSlippageAndFees
334
341
  } = additionalParams;
335
342
  const isEthFlow = getIsEthFlowOrder(params);
336
343
  if (isEthFlow) {
@@ -345,7 +352,11 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
345
352
  const { appDataKeccak256, fullAppData } = appData;
346
353
  const chainId = orderBookApi.context.chainId;
347
354
  const from = owner || await signer.getAddress();
348
- const orderToSign = getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow }, params, appData.appDataKeccak256);
355
+ const orderToSign = getOrderToSign(
356
+ { chainId, from, networkCostsAmount, isEthFlow, applyCostsSlippageAndFees },
357
+ params,
358
+ appData.appDataKeccak256
359
+ );
349
360
  log2("Signing order...");
350
361
  const { signature, signingScheme } = await (async () => {
351
362
  if (_signingScheme === SigningScheme3.PRESIGN) {
@@ -609,7 +620,9 @@ async function getQuoteRaw(_tradeParameters, trader, advancedSettings, _orderBoo
609
620
  env = "prod"
610
621
  } = tradeParameters;
611
622
  if (validTo !== void 0 && validFor !== void 0) {
612
- throw new Error("Cannot specify both validFor and validTo. Use validFor for relative time or validTo for absolute time.");
623
+ throw new Error(
624
+ "Cannot specify both validFor and validTo. Use validFor for relative time or validTo for absolute time."
625
+ );
613
626
  }
614
627
  const effectiveValidFor = validFor ?? DEFAULT_QUOTE_VALIDITY;
615
628
  log4(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cowprotocol/sdk-trading",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "description": "CowProtocol trading",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -29,17 +29,17 @@
29
29
  "ts-jest": "^29.0.0",
30
30
  "tsx": "^4.19.4",
31
31
  "@cowprotocol/sdk-ethers-v5-adapter": "0.2.0",
32
+ "@cow-sdk/typescript-config": "0.0.0-beta.0",
32
33
  "@cowprotocol/sdk-ethers-v6-adapter": "0.2.0",
33
- "@cowprotocol/sdk-viem-adapter": "0.2.0",
34
- "@cow-sdk/typescript-config": "0.0.0-beta.0"
34
+ "@cowprotocol/sdk-viem-adapter": "0.2.0"
35
35
  },
36
36
  "dependencies": {
37
37
  "deepmerge": "^4.3.1",
38
38
  "@cowprotocol/sdk-common": "0.3.0",
39
39
  "@cowprotocol/sdk-config": "0.2.0",
40
40
  "@cowprotocol/sdk-app-data": "4.1.5",
41
- "@cowprotocol/sdk-order-signing": "0.1.8",
42
- "@cowprotocol/sdk-contracts-ts": "0.4.2",
41
+ "@cowprotocol/sdk-order-signing": "0.1.9",
42
+ "@cowprotocol/sdk-contracts-ts": "0.4.3",
43
43
  "@cowprotocol/sdk-order-book": "0.1.4"
44
44
  },
45
45
  "scripts": {