@cowprotocol/sdk-trading 0.4.1 → 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 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, SignerLike, AbstractSigner, Signer, AbstractProviderAdapter, EthFlowContract } from '@cowprotocol/sdk-common';
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(params: LimitOrderParameters, advancedSettings?: LimitOrderAdvancedSettings, _orderBookApi?: OrderBookApi): Promise<OrderPostingResult>;
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, ORDER_PRIMARY_TYPE, 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 };
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, SignerLike, AbstractSigner, Signer, AbstractProviderAdapter, EthFlowContract } from '@cowprotocol/sdk-common';
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(params: LimitOrderParameters, advancedSettings?: LimitOrderAdvancedSettings, _orderBookApi?: OrderBookApi): Promise<OrderPostingResult>;
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, ORDER_PRIMARY_TYPE, 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 };
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 { networkCostsAmount = "0", signingScheme: _signingScheme = import_sdk_order_book4.SigningScheme.EIP712 } = additionalParams;
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
- [ORDER_PRIMARY_TYPE]: import_sdk_contracts_ts.ORDER_TYPE_FIELDS,
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 !== void 0 ? { validTo } : { validFor: effectiveValidFor },
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/postSwapOrder.ts
824
- async function postSwapOrder(params, advancedSettings, orderBookApi) {
825
- return postSwapOrderFromQuote(await getQuoteWithSigner(params, advancedSettings, orderBookApi), advancedSettings);
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(params, advancedSettings, _orderBookApi) {
870
- const appDataSlippage = advancedSettings?.appData?.metadata?.quote?.slippageBips;
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 { networkCostsAmount = "0", signingScheme: _signingScheme = SigningScheme3.EIP712 } = additionalParams;
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 { ORDER_TYPE_FIELDS } from "@cowprotocol/sdk-contracts-ts";
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
- [ORDER_PRIMARY_TYPE]: ORDER_TYPE_FIELDS,
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 !== void 0 ? { validTo } : { validFor: effectiveValidFor },
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/postSwapOrder.ts
789
- async function postSwapOrder(params, advancedSettings, orderBookApi) {
790
- return postSwapOrderFromQuote(await getQuoteWithSigner(params, advancedSettings, orderBookApi), advancedSettings);
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(params, advancedSettings, _orderBookApi) {
835
- const appDataSlippage = advancedSettings?.appData?.metadata?.quote?.slippageBips;
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 { enableLogging, getGlobalAdapter as getGlobalAdapter6, setGlobalAdapter } from "@cowprotocol/sdk-common";
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.1",
3
+ "version": "0.4.2",
4
4
  "description": "CowProtocol trading",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -28,19 +28,19 @@
28
28
  "viem": "^2.28.4",
29
29
  "ts-jest": "^29.0.0",
30
30
  "tsx": "^4.19.4",
31
- "@cowprotocol/sdk-ethers-v5-adapter": "0.1.2",
32
- "@cowprotocol/sdk-ethers-v6-adapter": "0.1.2",
33
- "@cowprotocol/sdk-viem-adapter": "0.1.2",
34
- "@cow-sdk/typescript-config": "0.0.0-beta.0"
31
+ "@cow-sdk/typescript-config": "0.0.0-beta.0",
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.1",
39
- "@cowprotocol/sdk-config": "0.1.0",
40
- "@cowprotocol/sdk-order-book": "0.1.2",
41
- "@cowprotocol/sdk-app-data": "4.1.3",
42
- "@cowprotocol/sdk-order-signing": "0.1.6",
43
- "@cowprotocol/sdk-contracts-ts": "0.4.0"
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",