@cowprotocol/sdk-trading 0.4.0 → 0.4.2
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 +9 -11
- package/dist/index.d.ts +9 -11
- package/dist/index.js +51 -87
- package/dist/index.mjs +56 -85
- package/package.json +10 -10
package/dist/index.d.mts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { cowAppDataLatestScheme, AppDataParams, LatestAppDataDocVersion } from '@cowprotocol/sdk-app-data';
|
|
2
2
|
import { OrderKind, OrderParameters, TokenAmount, SigningScheme, OrderQuoteRequest, QuoteAmountsAndCosts, OrderQuoteResponse, AppData, AppDataHash, Signature, OrderBookApi, EnrichedOrder } from '@cowprotocol/sdk-order-book';
|
|
3
|
-
import { AccountAddress,
|
|
4
|
-
import { UnsignedOrder } from '@cowprotocol/sdk-order-signing';
|
|
3
|
+
import { AccountAddress, AbstractSigner, Provider, SignerLike, Signer, AbstractProviderAdapter, EthFlowContract } from '@cowprotocol/sdk-common';
|
|
4
|
+
import { UnsignedOrder, ORDER_PRIMARY_TYPE } from '@cowprotocol/sdk-order-signing';
|
|
5
5
|
import { CowEnv, SupportedChainId } from '@cowprotocol/sdk-config';
|
|
6
6
|
|
|
7
|
-
declare const ORDER_PRIMARY_TYPE: "Order";
|
|
8
7
|
/**
|
|
9
8
|
* EIP-712 typed data domain.
|
|
10
9
|
*/
|
|
@@ -116,12 +115,7 @@ interface SigningStepManager {
|
|
|
116
115
|
onBridgingSignError?(): void;
|
|
117
116
|
onOrderSignError?(): void;
|
|
118
117
|
}
|
|
119
|
-
interface SwapAdvancedSettings {
|
|
120
|
-
quoteRequest?: Partial<Omit<OrderQuoteRequest, 'kind'> & {
|
|
121
|
-
validTo: number;
|
|
122
|
-
}>;
|
|
123
|
-
appData?: AppDataParams;
|
|
124
|
-
additionalParams?: PostTradeAdditionalParams;
|
|
118
|
+
interface SwapAdvancedSettings extends LimitOrderAdvancedSettings {
|
|
125
119
|
quoteSigner?: SignerLike;
|
|
126
120
|
/**
|
|
127
121
|
* An optional callback to use custom logic for slippage suggestion
|
|
@@ -129,6 +123,9 @@ interface SwapAdvancedSettings {
|
|
|
129
123
|
getSlippageSuggestion?(request: SlippageToleranceRequest): Promise<SlippageToleranceResponse>;
|
|
130
124
|
}
|
|
131
125
|
interface LimitOrderAdvancedSettings {
|
|
126
|
+
quoteRequest?: Partial<Omit<OrderQuoteRequest, 'kind'> & {
|
|
127
|
+
validTo: number;
|
|
128
|
+
}>;
|
|
132
129
|
appData?: AppDataParams;
|
|
133
130
|
additionalParams?: PostTradeAdditionalParams;
|
|
134
131
|
}
|
|
@@ -237,6 +234,7 @@ interface PostTradeAdditionalParams {
|
|
|
237
234
|
* You might need other types of signing, for example PRESIGN when sign order via Smart Contract wallets.
|
|
238
235
|
*/
|
|
239
236
|
signingScheme?: SigningScheme;
|
|
237
|
+
customEIP1271Signature?: (orderToSign: UnsignedOrder, signer: AbstractSigner<Provider>) => Promise<string>;
|
|
240
238
|
}
|
|
241
239
|
|
|
242
240
|
type QuoteResultsWithSigner = {
|
|
@@ -365,7 +363,7 @@ declare function getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow }
|
|
|
365
363
|
|
|
366
364
|
declare function postCoWProtocolTrade(orderBookApi: OrderBookApi, appData: TradingAppDataInfo, params: LimitTradeParameters, additionalParams?: PostTradeAdditionalParams, paramSigner?: SignerLike): Promise<OrderPostingResult>;
|
|
367
365
|
|
|
368
|
-
declare function postLimitOrder(
|
|
366
|
+
declare function postLimitOrder(_params: LimitOrderParameters, advancedSettings?: LimitOrderAdvancedSettings, _orderBookApi?: OrderBookApi): Promise<OrderPostingResult>;
|
|
369
367
|
|
|
370
368
|
declare function postSwapOrder(params: SwapParameters, advancedSettings?: SwapAdvancedSettings, orderBookApi?: OrderBookApi): Promise<OrderPostingResult>;
|
|
371
369
|
declare function postSwapOrderFromQuote({ orderBookApi, result: { signer, appDataInfo: _appDataInfo, quoteResponse, tradeParameters }, }: QuoteResultsWithSigner, advancedSettings?: SwapAdvancedSettings): Promise<OrderPostingResult>;
|
|
@@ -402,4 +400,4 @@ declare function getTradeParametersAfterQuote({ quoteParameters, sellToken, }: {
|
|
|
402
400
|
sellToken: string;
|
|
403
401
|
}): TradeParameters;
|
|
404
402
|
|
|
405
|
-
export { type AppDataRootSchema, type BuildAppDataParams, type EthFlowOrderExistsCallback, type LimitOrderAdvancedSettings, type LimitOrderParameters, type LimitTradeParameters, type LimitTradeParametersFromQuote,
|
|
403
|
+
export { type AppDataRootSchema, type BuildAppDataParams, type EthFlowOrderExistsCallback, type LimitOrderAdvancedSettings, type LimitOrderParameters, type LimitTradeParameters, type LimitTradeParametersFromQuote, type OrderPostingResult, type OrderTraderParams, type OrderTypedData, type PostTradeAdditionalParams, type QuoteAndPost, type QuoteResults, type QuoteResultsSerialized, type QuoteResultsWithSigner, type QuoterParameters, type SigningStepManager, type SlippageToleranceRequest, type SlippageToleranceResponse, type SwapAdvancedSettings, type SwapParameters, type TradeBaseParameters, type TradeOptionalParameters, type TradeParameters, type TraderParameters, type TradingAppDataInfo, TradingSdk, type TradingSdkOptions, type TradingTransactionParams, type WithPartialTraderParams, buildAppData, calculateUniqueOrderId, generateAppDataFromDoc, getEthFlowContract, getEthFlowTransaction, getOrderToSign, getPartnerFeeBps, getPreSignTransaction, getQuote, getQuoteWithSigner, getTradeParametersAfterQuote, mapQuoteAmountsAndCosts, mergeAppDataDoc, postCoWProtocolTrade, postLimitOrder, postSellNativeCurrencyOrder, postSwapOrder, postSwapOrderFromQuote, suggestSlippageBps, swapParamsToLimitOrderParams };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { cowAppDataLatestScheme, AppDataParams, LatestAppDataDocVersion } from '@cowprotocol/sdk-app-data';
|
|
2
2
|
import { OrderKind, OrderParameters, TokenAmount, SigningScheme, OrderQuoteRequest, QuoteAmountsAndCosts, OrderQuoteResponse, AppData, AppDataHash, Signature, OrderBookApi, EnrichedOrder } from '@cowprotocol/sdk-order-book';
|
|
3
|
-
import { AccountAddress,
|
|
4
|
-
import { UnsignedOrder } from '@cowprotocol/sdk-order-signing';
|
|
3
|
+
import { AccountAddress, AbstractSigner, Provider, SignerLike, Signer, AbstractProviderAdapter, EthFlowContract } from '@cowprotocol/sdk-common';
|
|
4
|
+
import { UnsignedOrder, ORDER_PRIMARY_TYPE } from '@cowprotocol/sdk-order-signing';
|
|
5
5
|
import { CowEnv, SupportedChainId } from '@cowprotocol/sdk-config';
|
|
6
6
|
|
|
7
|
-
declare const ORDER_PRIMARY_TYPE: "Order";
|
|
8
7
|
/**
|
|
9
8
|
* EIP-712 typed data domain.
|
|
10
9
|
*/
|
|
@@ -116,12 +115,7 @@ interface SigningStepManager {
|
|
|
116
115
|
onBridgingSignError?(): void;
|
|
117
116
|
onOrderSignError?(): void;
|
|
118
117
|
}
|
|
119
|
-
interface SwapAdvancedSettings {
|
|
120
|
-
quoteRequest?: Partial<Omit<OrderQuoteRequest, 'kind'> & {
|
|
121
|
-
validTo: number;
|
|
122
|
-
}>;
|
|
123
|
-
appData?: AppDataParams;
|
|
124
|
-
additionalParams?: PostTradeAdditionalParams;
|
|
118
|
+
interface SwapAdvancedSettings extends LimitOrderAdvancedSettings {
|
|
125
119
|
quoteSigner?: SignerLike;
|
|
126
120
|
/**
|
|
127
121
|
* An optional callback to use custom logic for slippage suggestion
|
|
@@ -129,6 +123,9 @@ interface SwapAdvancedSettings {
|
|
|
129
123
|
getSlippageSuggestion?(request: SlippageToleranceRequest): Promise<SlippageToleranceResponse>;
|
|
130
124
|
}
|
|
131
125
|
interface LimitOrderAdvancedSettings {
|
|
126
|
+
quoteRequest?: Partial<Omit<OrderQuoteRequest, 'kind'> & {
|
|
127
|
+
validTo: number;
|
|
128
|
+
}>;
|
|
132
129
|
appData?: AppDataParams;
|
|
133
130
|
additionalParams?: PostTradeAdditionalParams;
|
|
134
131
|
}
|
|
@@ -237,6 +234,7 @@ interface PostTradeAdditionalParams {
|
|
|
237
234
|
* You might need other types of signing, for example PRESIGN when sign order via Smart Contract wallets.
|
|
238
235
|
*/
|
|
239
236
|
signingScheme?: SigningScheme;
|
|
237
|
+
customEIP1271Signature?: (orderToSign: UnsignedOrder, signer: AbstractSigner<Provider>) => Promise<string>;
|
|
240
238
|
}
|
|
241
239
|
|
|
242
240
|
type QuoteResultsWithSigner = {
|
|
@@ -365,7 +363,7 @@ declare function getOrderToSign({ chainId, from, networkCostsAmount, isEthFlow }
|
|
|
365
363
|
|
|
366
364
|
declare function postCoWProtocolTrade(orderBookApi: OrderBookApi, appData: TradingAppDataInfo, params: LimitTradeParameters, additionalParams?: PostTradeAdditionalParams, paramSigner?: SignerLike): Promise<OrderPostingResult>;
|
|
367
365
|
|
|
368
|
-
declare function postLimitOrder(
|
|
366
|
+
declare function postLimitOrder(_params: LimitOrderParameters, advancedSettings?: LimitOrderAdvancedSettings, _orderBookApi?: OrderBookApi): Promise<OrderPostingResult>;
|
|
369
367
|
|
|
370
368
|
declare function postSwapOrder(params: SwapParameters, advancedSettings?: SwapAdvancedSettings, orderBookApi?: OrderBookApi): Promise<OrderPostingResult>;
|
|
371
369
|
declare function postSwapOrderFromQuote({ orderBookApi, result: { signer, appDataInfo: _appDataInfo, quoteResponse, tradeParameters }, }: QuoteResultsWithSigner, advancedSettings?: SwapAdvancedSettings): Promise<OrderPostingResult>;
|
|
@@ -402,4 +400,4 @@ declare function getTradeParametersAfterQuote({ quoteParameters, sellToken, }: {
|
|
|
402
400
|
sellToken: string;
|
|
403
401
|
}): TradeParameters;
|
|
404
402
|
|
|
405
|
-
export { type AppDataRootSchema, type BuildAppDataParams, type EthFlowOrderExistsCallback, type LimitOrderAdvancedSettings, type LimitOrderParameters, type LimitTradeParameters, type LimitTradeParametersFromQuote,
|
|
403
|
+
export { type AppDataRootSchema, type BuildAppDataParams, type EthFlowOrderExistsCallback, type LimitOrderAdvancedSettings, type LimitOrderParameters, type LimitTradeParameters, type LimitTradeParametersFromQuote, type OrderPostingResult, type OrderTraderParams, type OrderTypedData, type PostTradeAdditionalParams, type QuoteAndPost, type QuoteResults, type QuoteResultsSerialized, type QuoteResultsWithSigner, type QuoterParameters, type SigningStepManager, type SlippageToleranceRequest, type SlippageToleranceResponse, type SwapAdvancedSettings, type SwapParameters, type TradeBaseParameters, type TradeOptionalParameters, type TradeParameters, type TraderParameters, type TradingAppDataInfo, TradingSdk, type TradingSdkOptions, type TradingTransactionParams, type WithPartialTraderParams, buildAppData, calculateUniqueOrderId, generateAppDataFromDoc, getEthFlowContract, getEthFlowTransaction, getOrderToSign, getPartnerFeeBps, getPreSignTransaction, getQuote, getQuoteWithSigner, getTradeParametersAfterQuote, mapQuoteAmountsAndCosts, mergeAppDataDoc, postCoWProtocolTrade, postLimitOrder, postSellNativeCurrencyOrder, postSwapOrder, postSwapOrderFromQuote, suggestSlippageBps, swapParamsToLimitOrderParams };
|
package/dist/index.js
CHANGED
|
@@ -30,7 +30,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
-
ORDER_PRIMARY_TYPE: () => ORDER_PRIMARY_TYPE,
|
|
34
33
|
TradingSdk: () => TradingSdk,
|
|
35
34
|
buildAppData: () => buildAppData,
|
|
36
35
|
calculateUniqueOrderId: () => calculateUniqueOrderId,
|
|
@@ -69,56 +68,6 @@ var SIGN_SCHEME_MAP = {
|
|
|
69
68
|
[import_sdk_order_book.EcdsaSigningScheme.ETHSIGN]: import_sdk_order_book.SigningScheme.ETHSIGN
|
|
70
69
|
};
|
|
71
70
|
var GAS_LIMIT_DEFAULT = BigInt(15e4);
|
|
72
|
-
var ERC20_APPROVE_ABI = [
|
|
73
|
-
{
|
|
74
|
-
constant: false,
|
|
75
|
-
inputs: [
|
|
76
|
-
{
|
|
77
|
-
name: "_spender",
|
|
78
|
-
type: "address"
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
name: "_value",
|
|
82
|
-
type: "uint256"
|
|
83
|
-
}
|
|
84
|
-
],
|
|
85
|
-
name: "approve",
|
|
86
|
-
outputs: [
|
|
87
|
-
{
|
|
88
|
-
name: "",
|
|
89
|
-
type: "bool"
|
|
90
|
-
}
|
|
91
|
-
],
|
|
92
|
-
payable: false,
|
|
93
|
-
stateMutability: "nonpayable",
|
|
94
|
-
type: "function"
|
|
95
|
-
}
|
|
96
|
-
];
|
|
97
|
-
var ERC20_ALLOWANCE_ABI = [
|
|
98
|
-
{
|
|
99
|
-
constant: true,
|
|
100
|
-
inputs: [
|
|
101
|
-
{
|
|
102
|
-
name: "_owner",
|
|
103
|
-
type: "address"
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
name: "_spender",
|
|
107
|
-
type: "address"
|
|
108
|
-
}
|
|
109
|
-
],
|
|
110
|
-
name: "allowance",
|
|
111
|
-
outputs: [
|
|
112
|
-
{
|
|
113
|
-
name: "",
|
|
114
|
-
type: "uint256"
|
|
115
|
-
}
|
|
116
|
-
],
|
|
117
|
-
payable: false,
|
|
118
|
-
stateMutability: "view",
|
|
119
|
-
type: "function"
|
|
120
|
-
}
|
|
121
|
-
];
|
|
122
71
|
|
|
123
72
|
// src/postCoWProtocolTrade.ts
|
|
124
73
|
var import_sdk_order_signing2 = require("@cowprotocol/sdk-order-signing");
|
|
@@ -422,7 +371,11 @@ function resolveSigner(signer) {
|
|
|
422
371
|
// src/postCoWProtocolTrade.ts
|
|
423
372
|
async function postCoWProtocolTrade(orderBookApi, appData, params, additionalParams = {}, paramSigner) {
|
|
424
373
|
const signer = resolveSigner(paramSigner);
|
|
425
|
-
const {
|
|
374
|
+
const {
|
|
375
|
+
networkCostsAmount = "0",
|
|
376
|
+
signingScheme: _signingScheme = import_sdk_order_book4.SigningScheme.EIP712,
|
|
377
|
+
customEIP1271Signature
|
|
378
|
+
} = additionalParams;
|
|
426
379
|
const isEthFlow = getIsEthFlowOrder(params);
|
|
427
380
|
if (isEthFlow) {
|
|
428
381
|
const quoteId2 = params.quoteId;
|
|
@@ -442,7 +395,20 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
|
|
|
442
395
|
if (_signingScheme === import_sdk_order_book4.SigningScheme.PRESIGN) {
|
|
443
396
|
return { signature: from, signingScheme: import_sdk_order_book4.SigningScheme.PRESIGN };
|
|
444
397
|
} else {
|
|
398
|
+
const isEip1271 = _signingScheme === import_sdk_order_book4.SigningScheme.EIP1271;
|
|
399
|
+
if (isEip1271 && customEIP1271Signature) {
|
|
400
|
+
return {
|
|
401
|
+
signature: await customEIP1271Signature(orderToSign, signer),
|
|
402
|
+
signingScheme: _signingScheme
|
|
403
|
+
};
|
|
404
|
+
}
|
|
445
405
|
const signingResult = await import_sdk_order_signing2.OrderSigningUtils.signOrder(orderToSign, chainId, signer);
|
|
406
|
+
if (isEip1271) {
|
|
407
|
+
return {
|
|
408
|
+
signature: import_sdk_order_signing2.OrderSigningUtils.getEip1271Signature(orderToSign, signingResult.signature),
|
|
409
|
+
signingScheme: _signingScheme
|
|
410
|
+
};
|
|
411
|
+
}
|
|
446
412
|
return { signature: signingResult.signature, signingScheme: SIGN_SCHEME_MAP[signingResult.signingScheme] };
|
|
447
413
|
}
|
|
448
414
|
})();
|
|
@@ -512,12 +478,6 @@ async function mergeAppDataDoc(_doc, appDataOverride) {
|
|
|
512
478
|
};
|
|
513
479
|
}
|
|
514
480
|
|
|
515
|
-
// src/getOrderTypedData.ts
|
|
516
|
-
var import_sdk_contracts_ts = require("@cowprotocol/sdk-contracts-ts");
|
|
517
|
-
|
|
518
|
-
// src/types.ts
|
|
519
|
-
var ORDER_PRIMARY_TYPE = "Order";
|
|
520
|
-
|
|
521
481
|
// src/getOrderTypedData.ts
|
|
522
482
|
var import_sdk_order_signing3 = require("@cowprotocol/sdk-order-signing");
|
|
523
483
|
var EIP712DomainTypes = [
|
|
@@ -530,9 +490,9 @@ async function getOrderTypedData(chainId, orderToSign) {
|
|
|
530
490
|
const domain = await import_sdk_order_signing3.OrderSigningUtils.getDomain(chainId);
|
|
531
491
|
return {
|
|
532
492
|
domain,
|
|
533
|
-
primaryType: ORDER_PRIMARY_TYPE,
|
|
493
|
+
primaryType: import_sdk_order_signing3.ORDER_PRIMARY_TYPE,
|
|
534
494
|
types: {
|
|
535
|
-
|
|
495
|
+
...import_sdk_order_signing3.COW_EIP712_TYPES,
|
|
536
496
|
EIP712Domain: EIP712DomainTypes
|
|
537
497
|
},
|
|
538
498
|
message: orderToSign
|
|
@@ -709,7 +669,7 @@ async function getQuoteRaw(_tradeParameters, trader, advancedSettings, _orderBoo
|
|
|
709
669
|
sellToken,
|
|
710
670
|
buyToken,
|
|
711
671
|
receiver,
|
|
712
|
-
...validTo
|
|
672
|
+
...typeof validTo === "number" ? { validTo } : { validFor: effectiveValidFor },
|
|
713
673
|
appData: fullAppData,
|
|
714
674
|
appDataHash: appDataKeccak256,
|
|
715
675
|
priceQuality: import_sdk_order_book7.PriceQuality.OPTIMAL,
|
|
@@ -820,17 +780,10 @@ async function getQuoteWithSigner(swapParameters, advancedSettings, orderBookApi
|
|
|
820
780
|
};
|
|
821
781
|
}
|
|
822
782
|
|
|
823
|
-
// src/
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
}
|
|
827
|
-
async function postSwapOrderFromQuote({
|
|
828
|
-
orderBookApi,
|
|
829
|
-
result: { signer, appDataInfo: _appDataInfo, quoteResponse, tradeParameters }
|
|
830
|
-
}, advancedSettings) {
|
|
831
|
-
const params = swapParamsToLimitOrderParams(tradeParameters, quoteResponse);
|
|
783
|
+
// src/utils/applySettingsToLimitTradeParameters.ts
|
|
784
|
+
function applySettingsToLimitTradeParameters(_params, advancedSettings) {
|
|
785
|
+
const params = { ..._params };
|
|
832
786
|
const appDataOverride = advancedSettings?.appData;
|
|
833
|
-
const appDataInfo = appDataOverride ? await mergeAppDataDoc(_appDataInfo.doc, appDataOverride) : _appDataInfo;
|
|
834
787
|
const appDataSlippageOverride = appDataOverride?.metadata?.quote?.slippageBips;
|
|
835
788
|
const partnerFeeOverride = appDataOverride?.metadata?.partnerFee;
|
|
836
789
|
if (typeof appDataSlippageOverride !== "undefined") {
|
|
@@ -840,7 +793,7 @@ async function postSwapOrderFromQuote({
|
|
|
840
793
|
params.partnerFee = partnerFeeOverride;
|
|
841
794
|
}
|
|
842
795
|
if (advancedSettings?.quoteRequest) {
|
|
843
|
-
const { receiver, validTo, sellToken, buyToken } = advancedSettings.quoteRequest;
|
|
796
|
+
const { receiver, validTo, sellToken, buyToken, from } = advancedSettings.quoteRequest;
|
|
844
797
|
if (receiver)
|
|
845
798
|
params.receiver = receiver;
|
|
846
799
|
if (validTo)
|
|
@@ -849,7 +802,29 @@ async function postSwapOrderFromQuote({
|
|
|
849
802
|
params.sellToken = sellToken;
|
|
850
803
|
if (buyToken)
|
|
851
804
|
params.buyToken = buyToken;
|
|
805
|
+
if (from)
|
|
806
|
+
params.owner = from;
|
|
852
807
|
}
|
|
808
|
+
if (!params.env) {
|
|
809
|
+
params.env = "prod";
|
|
810
|
+
}
|
|
811
|
+
return params;
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
// src/postSwapOrder.ts
|
|
815
|
+
async function postSwapOrder(params, advancedSettings, orderBookApi) {
|
|
816
|
+
return postSwapOrderFromQuote(await getQuoteWithSigner(params, advancedSettings, orderBookApi), advancedSettings);
|
|
817
|
+
}
|
|
818
|
+
async function postSwapOrderFromQuote({
|
|
819
|
+
orderBookApi,
|
|
820
|
+
result: { signer, appDataInfo: _appDataInfo, quoteResponse, tradeParameters }
|
|
821
|
+
}, advancedSettings) {
|
|
822
|
+
const appDataOverride = advancedSettings?.appData;
|
|
823
|
+
const appDataInfo = appDataOverride ? await mergeAppDataDoc(_appDataInfo.doc, appDataOverride) : _appDataInfo;
|
|
824
|
+
const params = applySettingsToLimitTradeParameters(
|
|
825
|
+
swapParamsToLimitOrderParams(tradeParameters, quoteResponse),
|
|
826
|
+
advancedSettings
|
|
827
|
+
);
|
|
853
828
|
return postCoWProtocolTrade(
|
|
854
829
|
orderBookApi,
|
|
855
830
|
appDataInfo,
|
|
@@ -866,21 +841,11 @@ async function postSwapOrderFromQuote({
|
|
|
866
841
|
// src/postLimitOrder.ts
|
|
867
842
|
var import_sdk_order_book8 = require("@cowprotocol/sdk-order-book");
|
|
868
843
|
var import_sdk_common12 = require("@cowprotocol/sdk-common");
|
|
869
|
-
async function postLimitOrder(
|
|
870
|
-
const
|
|
871
|
-
const partnerFeeOverride = advancedSettings?.appData?.metadata?.partnerFee;
|
|
872
|
-
if (typeof appDataSlippage !== "undefined") {
|
|
873
|
-
params.slippageBps = appDataSlippage;
|
|
874
|
-
}
|
|
875
|
-
if (partnerFeeOverride) {
|
|
876
|
-
params.partnerFee = partnerFeeOverride;
|
|
877
|
-
}
|
|
844
|
+
async function postLimitOrder(_params, advancedSettings, _orderBookApi) {
|
|
845
|
+
const params = applySettingsToLimitTradeParameters(_params, advancedSettings);
|
|
878
846
|
if (!params.slippageBps) {
|
|
879
847
|
params.slippageBps = 0;
|
|
880
848
|
}
|
|
881
|
-
if (!params.env) {
|
|
882
|
-
params.env = "prod";
|
|
883
|
-
}
|
|
884
849
|
const { appCode, chainId, sellToken, buyToken, sellAmount, buyAmount, partnerFee } = params;
|
|
885
850
|
(0, import_sdk_common12.log)(`Limit order ${sellAmount} ${sellToken} for ${buyAmount} ${buyToken} on chain ${chainId}`);
|
|
886
851
|
const orderBookApi = _orderBookApi || new import_sdk_order_book8.OrderBookApi({ chainId, env: params.env });
|
|
@@ -1154,7 +1119,7 @@ var TradingSdk = class {
|
|
|
1154
1119
|
const vaultRelayerAddress = import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId];
|
|
1155
1120
|
return await adapter.readContract({
|
|
1156
1121
|
address: params.tokenAddress,
|
|
1157
|
-
abi: ERC20_ALLOWANCE_ABI,
|
|
1122
|
+
abi: import_sdk_common14.ERC20_ALLOWANCE_ABI,
|
|
1158
1123
|
functionName: "allowance",
|
|
1159
1124
|
args: [params.owner, vaultRelayerAddress]
|
|
1160
1125
|
});
|
|
@@ -1188,7 +1153,7 @@ var TradingSdk = class {
|
|
|
1188
1153
|
const vaultRelayerAddress = import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId];
|
|
1189
1154
|
const txParams = {
|
|
1190
1155
|
to: params.tokenAddress,
|
|
1191
|
-
data: adapter.utils.encodeFunction(ERC20_APPROVE_ABI, "approve", [
|
|
1156
|
+
data: adapter.utils.encodeFunction(import_sdk_common14.ERC20_APPROVE_ABI, "approve", [
|
|
1192
1157
|
vaultRelayerAddress,
|
|
1193
1158
|
"0x" + params.amount.toString(16)
|
|
1194
1159
|
])
|
|
@@ -1239,7 +1204,6 @@ function isTraderParameters(params) {
|
|
|
1239
1204
|
}
|
|
1240
1205
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1241
1206
|
0 && (module.exports = {
|
|
1242
|
-
ORDER_PRIMARY_TYPE,
|
|
1243
1207
|
TradingSdk,
|
|
1244
1208
|
buildAppData,
|
|
1245
1209
|
calculateUniqueOrderId,
|
package/dist/index.mjs
CHANGED
|
@@ -12,56 +12,6 @@ var SIGN_SCHEME_MAP = {
|
|
|
12
12
|
[EcdsaSigningScheme.ETHSIGN]: SigningScheme.ETHSIGN
|
|
13
13
|
};
|
|
14
14
|
var GAS_LIMIT_DEFAULT = BigInt(15e4);
|
|
15
|
-
var ERC20_APPROVE_ABI = [
|
|
16
|
-
{
|
|
17
|
-
constant: false,
|
|
18
|
-
inputs: [
|
|
19
|
-
{
|
|
20
|
-
name: "_spender",
|
|
21
|
-
type: "address"
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
name: "_value",
|
|
25
|
-
type: "uint256"
|
|
26
|
-
}
|
|
27
|
-
],
|
|
28
|
-
name: "approve",
|
|
29
|
-
outputs: [
|
|
30
|
-
{
|
|
31
|
-
name: "",
|
|
32
|
-
type: "bool"
|
|
33
|
-
}
|
|
34
|
-
],
|
|
35
|
-
payable: false,
|
|
36
|
-
stateMutability: "nonpayable",
|
|
37
|
-
type: "function"
|
|
38
|
-
}
|
|
39
|
-
];
|
|
40
|
-
var ERC20_ALLOWANCE_ABI = [
|
|
41
|
-
{
|
|
42
|
-
constant: true,
|
|
43
|
-
inputs: [
|
|
44
|
-
{
|
|
45
|
-
name: "_owner",
|
|
46
|
-
type: "address"
|
|
47
|
-
},
|
|
48
|
-
{
|
|
49
|
-
name: "_spender",
|
|
50
|
-
type: "address"
|
|
51
|
-
}
|
|
52
|
-
],
|
|
53
|
-
name: "allowance",
|
|
54
|
-
outputs: [
|
|
55
|
-
{
|
|
56
|
-
name: "",
|
|
57
|
-
type: "uint256"
|
|
58
|
-
}
|
|
59
|
-
],
|
|
60
|
-
payable: false,
|
|
61
|
-
stateMutability: "view",
|
|
62
|
-
type: "function"
|
|
63
|
-
}
|
|
64
|
-
];
|
|
65
15
|
|
|
66
16
|
// src/postCoWProtocolTrade.ts
|
|
67
17
|
import { OrderSigningUtils as OrderSigningUtils2 } from "@cowprotocol/sdk-order-signing";
|
|
@@ -377,7 +327,11 @@ function resolveSigner(signer) {
|
|
|
377
327
|
// src/postCoWProtocolTrade.ts
|
|
378
328
|
async function postCoWProtocolTrade(orderBookApi, appData, params, additionalParams = {}, paramSigner) {
|
|
379
329
|
const signer = resolveSigner(paramSigner);
|
|
380
|
-
const {
|
|
330
|
+
const {
|
|
331
|
+
networkCostsAmount = "0",
|
|
332
|
+
signingScheme: _signingScheme = SigningScheme3.EIP712,
|
|
333
|
+
customEIP1271Signature
|
|
334
|
+
} = additionalParams;
|
|
381
335
|
const isEthFlow = getIsEthFlowOrder(params);
|
|
382
336
|
if (isEthFlow) {
|
|
383
337
|
const quoteId2 = params.quoteId;
|
|
@@ -397,7 +351,20 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
|
|
|
397
351
|
if (_signingScheme === SigningScheme3.PRESIGN) {
|
|
398
352
|
return { signature: from, signingScheme: SigningScheme3.PRESIGN };
|
|
399
353
|
} else {
|
|
354
|
+
const isEip1271 = _signingScheme === SigningScheme3.EIP1271;
|
|
355
|
+
if (isEip1271 && customEIP1271Signature) {
|
|
356
|
+
return {
|
|
357
|
+
signature: await customEIP1271Signature(orderToSign, signer),
|
|
358
|
+
signingScheme: _signingScheme
|
|
359
|
+
};
|
|
360
|
+
}
|
|
400
361
|
const signingResult = await OrderSigningUtils2.signOrder(orderToSign, chainId, signer);
|
|
362
|
+
if (isEip1271) {
|
|
363
|
+
return {
|
|
364
|
+
signature: OrderSigningUtils2.getEip1271Signature(orderToSign, signingResult.signature),
|
|
365
|
+
signingScheme: _signingScheme
|
|
366
|
+
};
|
|
367
|
+
}
|
|
401
368
|
return { signature: signingResult.signature, signingScheme: SIGN_SCHEME_MAP[signingResult.signingScheme] };
|
|
402
369
|
}
|
|
403
370
|
})();
|
|
@@ -478,13 +445,7 @@ async function mergeAppDataDoc(_doc, appDataOverride) {
|
|
|
478
445
|
}
|
|
479
446
|
|
|
480
447
|
// src/getOrderTypedData.ts
|
|
481
|
-
import {
|
|
482
|
-
|
|
483
|
-
// src/types.ts
|
|
484
|
-
var ORDER_PRIMARY_TYPE = "Order";
|
|
485
|
-
|
|
486
|
-
// src/getOrderTypedData.ts
|
|
487
|
-
import { OrderSigningUtils as OrderSigningUtils3 } from "@cowprotocol/sdk-order-signing";
|
|
448
|
+
import { COW_EIP712_TYPES, ORDER_PRIMARY_TYPE, OrderSigningUtils as OrderSigningUtils3 } from "@cowprotocol/sdk-order-signing";
|
|
488
449
|
var EIP712DomainTypes = [
|
|
489
450
|
{ name: "name", type: "string" },
|
|
490
451
|
{ name: "version", type: "string" },
|
|
@@ -497,7 +458,7 @@ async function getOrderTypedData(chainId, orderToSign) {
|
|
|
497
458
|
domain,
|
|
498
459
|
primaryType: ORDER_PRIMARY_TYPE,
|
|
499
460
|
types: {
|
|
500
|
-
|
|
461
|
+
...COW_EIP712_TYPES,
|
|
501
462
|
EIP712Domain: EIP712DomainTypes
|
|
502
463
|
},
|
|
503
464
|
message: orderToSign
|
|
@@ -674,7 +635,7 @@ async function getQuoteRaw(_tradeParameters, trader, advancedSettings, _orderBoo
|
|
|
674
635
|
sellToken,
|
|
675
636
|
buyToken,
|
|
676
637
|
receiver,
|
|
677
|
-
...validTo
|
|
638
|
+
...typeof validTo === "number" ? { validTo } : { validFor: effectiveValidFor },
|
|
678
639
|
appData: fullAppData,
|
|
679
640
|
appDataHash: appDataKeccak256,
|
|
680
641
|
priceQuality: PriceQuality2.OPTIMAL,
|
|
@@ -785,17 +746,10 @@ async function getQuoteWithSigner(swapParameters, advancedSettings, orderBookApi
|
|
|
785
746
|
};
|
|
786
747
|
}
|
|
787
748
|
|
|
788
|
-
// src/
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
}
|
|
792
|
-
async function postSwapOrderFromQuote({
|
|
793
|
-
orderBookApi,
|
|
794
|
-
result: { signer, appDataInfo: _appDataInfo, quoteResponse, tradeParameters }
|
|
795
|
-
}, advancedSettings) {
|
|
796
|
-
const params = swapParamsToLimitOrderParams(tradeParameters, quoteResponse);
|
|
749
|
+
// src/utils/applySettingsToLimitTradeParameters.ts
|
|
750
|
+
function applySettingsToLimitTradeParameters(_params, advancedSettings) {
|
|
751
|
+
const params = { ..._params };
|
|
797
752
|
const appDataOverride = advancedSettings?.appData;
|
|
798
|
-
const appDataInfo = appDataOverride ? await mergeAppDataDoc(_appDataInfo.doc, appDataOverride) : _appDataInfo;
|
|
799
753
|
const appDataSlippageOverride = appDataOverride?.metadata?.quote?.slippageBips;
|
|
800
754
|
const partnerFeeOverride = appDataOverride?.metadata?.partnerFee;
|
|
801
755
|
if (typeof appDataSlippageOverride !== "undefined") {
|
|
@@ -805,7 +759,7 @@ async function postSwapOrderFromQuote({
|
|
|
805
759
|
params.partnerFee = partnerFeeOverride;
|
|
806
760
|
}
|
|
807
761
|
if (advancedSettings?.quoteRequest) {
|
|
808
|
-
const { receiver, validTo, sellToken, buyToken } = advancedSettings.quoteRequest;
|
|
762
|
+
const { receiver, validTo, sellToken, buyToken, from } = advancedSettings.quoteRequest;
|
|
809
763
|
if (receiver)
|
|
810
764
|
params.receiver = receiver;
|
|
811
765
|
if (validTo)
|
|
@@ -814,7 +768,29 @@ async function postSwapOrderFromQuote({
|
|
|
814
768
|
params.sellToken = sellToken;
|
|
815
769
|
if (buyToken)
|
|
816
770
|
params.buyToken = buyToken;
|
|
771
|
+
if (from)
|
|
772
|
+
params.owner = from;
|
|
817
773
|
}
|
|
774
|
+
if (!params.env) {
|
|
775
|
+
params.env = "prod";
|
|
776
|
+
}
|
|
777
|
+
return params;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
// src/postSwapOrder.ts
|
|
781
|
+
async function postSwapOrder(params, advancedSettings, orderBookApi) {
|
|
782
|
+
return postSwapOrderFromQuote(await getQuoteWithSigner(params, advancedSettings, orderBookApi), advancedSettings);
|
|
783
|
+
}
|
|
784
|
+
async function postSwapOrderFromQuote({
|
|
785
|
+
orderBookApi,
|
|
786
|
+
result: { signer, appDataInfo: _appDataInfo, quoteResponse, tradeParameters }
|
|
787
|
+
}, advancedSettings) {
|
|
788
|
+
const appDataOverride = advancedSettings?.appData;
|
|
789
|
+
const appDataInfo = appDataOverride ? await mergeAppDataDoc(_appDataInfo.doc, appDataOverride) : _appDataInfo;
|
|
790
|
+
const params = applySettingsToLimitTradeParameters(
|
|
791
|
+
swapParamsToLimitOrderParams(tradeParameters, quoteResponse),
|
|
792
|
+
advancedSettings
|
|
793
|
+
);
|
|
818
794
|
return postCoWProtocolTrade(
|
|
819
795
|
orderBookApi,
|
|
820
796
|
appDataInfo,
|
|
@@ -831,21 +807,11 @@ async function postSwapOrderFromQuote({
|
|
|
831
807
|
// src/postLimitOrder.ts
|
|
832
808
|
import { OrderBookApi as OrderBookApi4 } from "@cowprotocol/sdk-order-book";
|
|
833
809
|
import { log as log5 } from "@cowprotocol/sdk-common";
|
|
834
|
-
async function postLimitOrder(
|
|
835
|
-
const
|
|
836
|
-
const partnerFeeOverride = advancedSettings?.appData?.metadata?.partnerFee;
|
|
837
|
-
if (typeof appDataSlippage !== "undefined") {
|
|
838
|
-
params.slippageBps = appDataSlippage;
|
|
839
|
-
}
|
|
840
|
-
if (partnerFeeOverride) {
|
|
841
|
-
params.partnerFee = partnerFeeOverride;
|
|
842
|
-
}
|
|
810
|
+
async function postLimitOrder(_params, advancedSettings, _orderBookApi) {
|
|
811
|
+
const params = applySettingsToLimitTradeParameters(_params, advancedSettings);
|
|
843
812
|
if (!params.slippageBps) {
|
|
844
813
|
params.slippageBps = 0;
|
|
845
814
|
}
|
|
846
|
-
if (!params.env) {
|
|
847
|
-
params.env = "prod";
|
|
848
|
-
}
|
|
849
815
|
const { appCode, chainId, sellToken, buyToken, sellAmount, buyAmount, partnerFee } = params;
|
|
850
816
|
log5(`Limit order ${sellAmount} ${sellToken} for ${buyAmount} ${buyToken} on chain ${chainId}`);
|
|
851
817
|
const orderBookApi = _orderBookApi || new OrderBookApi4({ chainId, env: params.env });
|
|
@@ -883,7 +849,13 @@ async function getPreSignTransaction(signer, chainId, orderId) {
|
|
|
883
849
|
}
|
|
884
850
|
|
|
885
851
|
// src/tradingSdk.ts
|
|
886
|
-
import {
|
|
852
|
+
import {
|
|
853
|
+
enableLogging,
|
|
854
|
+
ERC20_ALLOWANCE_ABI,
|
|
855
|
+
ERC20_APPROVE_ABI,
|
|
856
|
+
getGlobalAdapter as getGlobalAdapter6,
|
|
857
|
+
setGlobalAdapter
|
|
858
|
+
} from "@cowprotocol/sdk-common";
|
|
887
859
|
import { OrderSigningUtils as OrderSigningUtils4 } from "@cowprotocol/sdk-order-signing";
|
|
888
860
|
|
|
889
861
|
// src/onChainCancellation.ts
|
|
@@ -1203,7 +1175,6 @@ function isTraderParameters(params) {
|
|
|
1203
1175
|
return getMissingTraderParams(params).length === 0;
|
|
1204
1176
|
}
|
|
1205
1177
|
export {
|
|
1206
|
-
ORDER_PRIMARY_TYPE,
|
|
1207
1178
|
TradingSdk,
|
|
1208
1179
|
buildAppData,
|
|
1209
1180
|
calculateUniqueOrderId,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cowprotocol/sdk-trading",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "CowProtocol trading",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -29,18 +29,18 @@
|
|
|
29
29
|
"ts-jest": "^29.0.0",
|
|
30
30
|
"tsx": "^4.19.4",
|
|
31
31
|
"@cow-sdk/typescript-config": "0.0.0-beta.0",
|
|
32
|
-
"@cowprotocol/sdk-ethers-v5-adapter": "0.1.
|
|
33
|
-
"@cowprotocol/sdk-ethers-v6-adapter": "0.1.
|
|
34
|
-
"@cowprotocol/sdk-viem-adapter": "0.1.
|
|
32
|
+
"@cowprotocol/sdk-ethers-v5-adapter": "0.1.3",
|
|
33
|
+
"@cowprotocol/sdk-ethers-v6-adapter": "0.1.3",
|
|
34
|
+
"@cowprotocol/sdk-viem-adapter": "0.1.3"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"deepmerge": "^4.3.1",
|
|
38
|
-
"@cowprotocol/sdk-common": "0.2.
|
|
39
|
-
"@cowprotocol/sdk-config": "0.
|
|
40
|
-
"@cowprotocol/sdk-
|
|
41
|
-
"@cowprotocol/sdk-order-book": "0.1.
|
|
42
|
-
"@cowprotocol/sdk-contracts-ts": "0.4.
|
|
43
|
-
"@cowprotocol/sdk-
|
|
38
|
+
"@cowprotocol/sdk-common": "0.2.2",
|
|
39
|
+
"@cowprotocol/sdk-config": "0.2.0",
|
|
40
|
+
"@cowprotocol/sdk-app-data": "4.1.4",
|
|
41
|
+
"@cowprotocol/sdk-order-book": "0.1.3",
|
|
42
|
+
"@cowprotocol/sdk-contracts-ts": "0.4.1",
|
|
43
|
+
"@cowprotocol/sdk-order-signing": "0.1.7"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "tsup src/index.ts --format esm,cjs --dts",
|