@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 +8 -1
- package/dist/index.d.ts +8 -1
- package/dist/index.js +26 -13
- package/dist/index.mjs +26 -13
- package/package.json +5 -5
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
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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:
|
|
175
|
-
buyAmount:
|
|
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(
|
|
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(
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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:
|
|
123
|
-
buyAmount:
|
|
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(
|
|
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(
|
|
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
|
+
"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.
|
|
42
|
-
"@cowprotocol/sdk-contracts-ts": "0.4.
|
|
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": {
|