@cowprotocol/sdk-trading 1.0.4 → 1.1.1
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/README.md +134 -0
- package/dist/index.d.mts +17 -5
- package/dist/index.d.ts +17 -5
- package/dist/index.js +109 -67
- package/dist/index.mjs +121 -70
- package/package.json +15 -10
package/README.md
CHANGED
|
@@ -850,3 +850,137 @@ if (currentAllowance < requiredAmount) {
|
|
|
850
850
|
console.log('Sufficient allowance already exists')
|
|
851
851
|
}
|
|
852
852
|
```
|
|
853
|
+
|
|
854
|
+
## Custom Contract Addresses
|
|
855
|
+
|
|
856
|
+
For advanced use cases such as testing, custom deployments, or chains where CoW Protocol contracts are deployed at non-standard addresses, you can override the contract addresses used by the SDK.
|
|
857
|
+
|
|
858
|
+
Both parameters accept an `AddressPerChain` object (`Record<SupportedChainId, Address>`), so they apply per-chain and persist across all operations when set in `traderParams`.
|
|
859
|
+
|
|
860
|
+
### settlementContractOverride / ethFlowContractOverride
|
|
861
|
+
|
|
862
|
+
Overrides the address of the CoW Protocol Settlement contract. This affects:
|
|
863
|
+
- Order domain signing (EIP-712 `verifyingContract`)
|
|
864
|
+
- On-chain order cancellation via `onChainCancelOrder`
|
|
865
|
+
- Pre-sign transactions via `getPreSignTransaction`
|
|
866
|
+
|
|
867
|
+
```typescript
|
|
868
|
+
import { SupportedChainId, OrderKind, TradeParameters, TradingSdk, COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS, ETH_FLOW_ADDRESSES } from '@cowprotocol/cow-sdk'
|
|
869
|
+
import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter'
|
|
870
|
+
import { createPublicClient, http, privateKeyToAccount } from 'viem'
|
|
871
|
+
import { sepolia } from 'viem/chains'
|
|
872
|
+
|
|
873
|
+
const adapter = new ViemAdapter({
|
|
874
|
+
provider: createPublicClient({
|
|
875
|
+
chain: sepolia,
|
|
876
|
+
transport: http('YOUR_RPC_URL')
|
|
877
|
+
}),
|
|
878
|
+
signer: privateKeyToAccount('YOUR_PRIVATE_KEY' as `0x${string}`)
|
|
879
|
+
})
|
|
880
|
+
|
|
881
|
+
const sdk = new TradingSdk({
|
|
882
|
+
chainId: SupportedChainId.SEPOLIA,
|
|
883
|
+
appCode: '<YOUR_APP_CODE>',
|
|
884
|
+
// Override the settlement contract address for MAINNET
|
|
885
|
+
settlementContractOverride: {
|
|
886
|
+
...COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS,
|
|
887
|
+
[SupportedChainId.MAINNET]: '0x<custom_settlement_contract>',
|
|
888
|
+
} as AddressPerChain,
|
|
889
|
+
// Override the eth-flow contract address for GNOSIS_CHAIN
|
|
890
|
+
ethFlowContractOverride: {
|
|
891
|
+
...ETH_FLOW_ADDRESSES,
|
|
892
|
+
[SupportedChainId.GNOSIS_CHAIN]: '0x<custom_eth_flow_contract>',
|
|
893
|
+
} as AddressPerChain,
|
|
894
|
+
}, {}, adapter)
|
|
895
|
+
|
|
896
|
+
const parameters: TradeParameters = {
|
|
897
|
+
kind: OrderKind.BUY,
|
|
898
|
+
sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14',
|
|
899
|
+
sellTokenDecimals: 18,
|
|
900
|
+
buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59',
|
|
901
|
+
buyTokenDecimals: 18,
|
|
902
|
+
amount: '120000000000000000',
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
const { quoteResults, postSwapOrderFromQuote } = await sdk.getQuote(parameters)
|
|
906
|
+
const orderId = await postSwapOrderFromQuote()
|
|
907
|
+
|
|
908
|
+
console.log('Order created, id: ', orderId)
|
|
909
|
+
```
|
|
910
|
+
|
|
911
|
+
You can also pass `settlementContractOverride` / `ethFlowContractOverride` per-call to override only for that operation:
|
|
912
|
+
|
|
913
|
+
```typescript
|
|
914
|
+
const { quoteResults, postSwapOrderFromQuote } = await sdk.getQuote({
|
|
915
|
+
...parameters,
|
|
916
|
+
settlementContractOverride: {
|
|
917
|
+
[SupportedChainId.MAINNET]: '0x<custom_settlement_contract>',
|
|
918
|
+
} as AddressPerChain,
|
|
919
|
+
})
|
|
920
|
+
|
|
921
|
+
// or
|
|
922
|
+
|
|
923
|
+
const { orderId } = await sdk.postSwapOrder({
|
|
924
|
+
...parameters,
|
|
925
|
+
settlementContractOverride: {
|
|
926
|
+
[SupportedChainId.MAINNET]: '0x<custom_settlement_contract>',
|
|
927
|
+
} as AddressPerChain,
|
|
928
|
+
})
|
|
929
|
+
```
|
|
930
|
+
|
|
931
|
+
## Custom Order-Book API Endpoint
|
|
932
|
+
|
|
933
|
+
By default the SDK uses the public CoW Protocol API endpoints. You can point the SDK at a custom or self-hosted order-book by creating an `OrderBookApi` instance with custom `baseUrls` and passing it as the `orderBookApi` option.
|
|
934
|
+
|
|
935
|
+
This is useful for:
|
|
936
|
+
- Running a local order-book node during development
|
|
937
|
+
- Using a private/dedicated API deployment
|
|
938
|
+
- Connecting to a forked or testnet environment with a custom backend
|
|
939
|
+
|
|
940
|
+
```typescript
|
|
941
|
+
import { SupportedChainId, TradingSdk, OrderKind, TradeParameters } from '@cowprotocol/sdk-trading'
|
|
942
|
+
import { OrderBookApi } from '@cowprotocol/sdk-order-book'
|
|
943
|
+
import { AddressPerChain } from '@cowprotocol/sdk-config'
|
|
944
|
+
import { ViemAdapter } from '@cowprotocol/sdk-viem-adapter'
|
|
945
|
+
import { createPublicClient, http, privateKeyToAccount } from 'viem'
|
|
946
|
+
import { mainnet } from 'viem/chains'
|
|
947
|
+
|
|
948
|
+
const adapter = new ViemAdapter({
|
|
949
|
+
provider: createPublicClient({ chain: mainnet, transport: http('YOUR_RPC_URL') }),
|
|
950
|
+
signer: privateKeyToAccount('YOUR_PRIVATE_KEY' as `0x${string}`),
|
|
951
|
+
})
|
|
952
|
+
|
|
953
|
+
// 1. Create an OrderBookApi instance with custom base URLs
|
|
954
|
+
const orderBookApi = new OrderBookApi({
|
|
955
|
+
chainId: SupportedChainId.MAINNET,
|
|
956
|
+
// Provide a base URL for each chain you intend to use
|
|
957
|
+
baseUrls: {
|
|
958
|
+
// ...
|
|
959
|
+
[SupportedChainId.MAINNET]: 'https://your-custom-orderbook.example.com/mainnet',
|
|
960
|
+
},
|
|
961
|
+
})
|
|
962
|
+
|
|
963
|
+
// 2. Pass it to TradingSdk via the options object
|
|
964
|
+
const sdk = new TradingSdk(
|
|
965
|
+
{
|
|
966
|
+
chainId: SupportedChainId.MAINNET,
|
|
967
|
+
appCode: '<YOUR_APP_CODE>',
|
|
968
|
+
},
|
|
969
|
+
{
|
|
970
|
+
orderBookApi, // All order-book requests will go to your custom endpoint
|
|
971
|
+
},
|
|
972
|
+
adapter,
|
|
973
|
+
)
|
|
974
|
+
|
|
975
|
+
const parameters: TradeParameters = {
|
|
976
|
+
kind: OrderKind.SELL,
|
|
977
|
+
sellToken: '0xfff9976782d46cc05630d1f6ebab18b2324d6b14',
|
|
978
|
+
sellTokenDecimals: 18,
|
|
979
|
+
buyToken: '0x0625afb445c3b6b7b929342a04a22599fd5dbb59',
|
|
980
|
+
buyTokenDecimals: 18,
|
|
981
|
+
amount: '100000000000000000',
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
const { orderId } = await sdk.postSwapOrder(parameters)
|
|
985
|
+
console.log('Order created via custom endpoint, id:', orderId)
|
|
986
|
+
```
|
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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, AbstractSigner, Provider, SignerLike, Signer, AbstractProviderAdapter, EthFlowContract } from '@cowprotocol/sdk-common';
|
|
3
|
+
import { AccountAddress, AbstractSigner, Provider, SignerLike, Signer, AbstractProviderAdapter, Address, EthFlowContract } from '@cowprotocol/sdk-common';
|
|
4
4
|
import { UnsignedOrder, ORDER_PRIMARY_TYPE } from '@cowprotocol/sdk-order-signing';
|
|
5
|
-
import { CowEnv, SupportedChainId } from '@cowprotocol/sdk-config';
|
|
5
|
+
import { CowEnv, AddressPerChain, SupportedChainId, ProtocolOptions } from '@cowprotocol/sdk-config';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* EIP-712 typed data domain.
|
|
@@ -46,6 +46,14 @@ interface TradeBaseParameters {
|
|
|
46
46
|
*/
|
|
47
47
|
interface TradeOptionalParameters {
|
|
48
48
|
env?: CowEnv;
|
|
49
|
+
/**
|
|
50
|
+
* Custom address of settlement contract
|
|
51
|
+
*/
|
|
52
|
+
settlementContractOverride?: Partial<AddressPerChain>;
|
|
53
|
+
/**
|
|
54
|
+
* Custom address of sell native token contract
|
|
55
|
+
*/
|
|
56
|
+
ethFlowContractOverride?: Partial<AddressPerChain>;
|
|
49
57
|
partiallyFillable?: OrderParameters['partiallyFillable'];
|
|
50
58
|
/**
|
|
51
59
|
* Slippage in basis points.
|
|
@@ -69,6 +77,8 @@ interface TraderParameters {
|
|
|
69
77
|
appCode: cowAppDataLatestScheme.AppCode;
|
|
70
78
|
signer?: SignerLike;
|
|
71
79
|
env?: CowEnv;
|
|
80
|
+
settlementContractOverride?: Partial<AddressPerChain>;
|
|
81
|
+
ethFlowContractOverride?: Partial<AddressPerChain>;
|
|
72
82
|
}
|
|
73
83
|
type QuoterParameters = Omit<TraderParameters, 'signer'> & {
|
|
74
84
|
account: AccountAddress;
|
|
@@ -262,7 +272,7 @@ declare function getQuoteWithSigner(swapParameters: SwapParameters, advancedSett
|
|
|
262
272
|
|
|
263
273
|
declare function postSellNativeCurrencyOrder(orderBookApi: OrderBookApi, appData: Pick<TradingAppDataInfo, 'fullAppData' | 'appDataKeccak256'>, _params: LimitTradeParametersFromQuote, additionalParams?: PostTradeAdditionalParams, paramSigner?: SignerLike): Promise<OrderPostingResult>;
|
|
264
274
|
|
|
265
|
-
declare function getPreSignTransaction(signer: Signer, chainId: SupportedChainId, orderId: string): Promise<TradingTransactionParams>;
|
|
275
|
+
declare function getPreSignTransaction(signer: Signer, chainId: SupportedChainId, orderId: string, options?: ProtocolOptions): Promise<TradingTransactionParams>;
|
|
266
276
|
|
|
267
277
|
type WithPartialTraderParams<T> = T & Partial<TraderParameters>;
|
|
268
278
|
/**
|
|
@@ -371,6 +381,7 @@ declare class TradingSdk {
|
|
|
371
381
|
getCowProtocolAllowance(params: WithPartialTraderParams<{
|
|
372
382
|
tokenAddress: string;
|
|
373
383
|
owner: string;
|
|
384
|
+
vaultRelayerAddress?: Address;
|
|
374
385
|
}>): Promise<bigint>;
|
|
375
386
|
/**
|
|
376
387
|
* Approves the CoW Protocol Vault Relayer to spend a specified amount of an ERC-20 token.
|
|
@@ -394,6 +405,7 @@ declare class TradingSdk {
|
|
|
394
405
|
approveCowProtocol(params: WithPartialTraderParams<{
|
|
395
406
|
tokenAddress: string;
|
|
396
407
|
amount: bigint;
|
|
408
|
+
vaultRelayerAddress?: Address;
|
|
397
409
|
}>): Promise<string>;
|
|
398
410
|
private resolveOrderBookApi;
|
|
399
411
|
private mergeParams;
|
|
@@ -409,7 +421,7 @@ declare function getEthFlowTransaction(appDataKeccak256: string, _params: LimitT
|
|
|
409
421
|
transaction: TradingTransactionParams;
|
|
410
422
|
orderToSign: UnsignedOrder;
|
|
411
423
|
}>;
|
|
412
|
-
declare function getEthFlowContract(signer: Signer, chainId: SupportedChainId,
|
|
424
|
+
declare function getEthFlowContract(signer: Signer, chainId: SupportedChainId, options?: ProtocolOptions): EthFlowContract;
|
|
413
425
|
|
|
414
426
|
interface OrderToSignParams {
|
|
415
427
|
chainId: SupportedChainId;
|
|
@@ -455,7 +467,7 @@ declare function buildAppData({ slippageBps, appCode, orderClass: orderClassName
|
|
|
455
467
|
declare function generateAppDataFromDoc(doc: AppDataRootSchema): Promise<Pick<TradingAppDataInfo, 'fullAppData' | 'appDataKeccak256'>>;
|
|
456
468
|
declare function mergeAppDataDoc(_doc: LatestAppDataDocVersion, appDataOverride: AppDataParams): Promise<TradingAppDataInfo>;
|
|
457
469
|
|
|
458
|
-
declare function calculateUniqueOrderId(chainId: SupportedChainId, order: UnsignedOrder, checkEthFlowOrderExists?: EthFlowOrderExistsCallback,
|
|
470
|
+
declare function calculateUniqueOrderId(chainId: SupportedChainId, order: UnsignedOrder, checkEthFlowOrderExists?: EthFlowOrderExistsCallback, options?: ProtocolOptions): Promise<string>;
|
|
459
471
|
|
|
460
472
|
declare function getPartnerFeeBps(partnerFee: cowAppDataLatestScheme.PartnerFee | undefined): number | undefined;
|
|
461
473
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
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, AbstractSigner, Provider, SignerLike, Signer, AbstractProviderAdapter, EthFlowContract } from '@cowprotocol/sdk-common';
|
|
3
|
+
import { AccountAddress, AbstractSigner, Provider, SignerLike, Signer, AbstractProviderAdapter, Address, EthFlowContract } from '@cowprotocol/sdk-common';
|
|
4
4
|
import { UnsignedOrder, ORDER_PRIMARY_TYPE } from '@cowprotocol/sdk-order-signing';
|
|
5
|
-
import { CowEnv, SupportedChainId } from '@cowprotocol/sdk-config';
|
|
5
|
+
import { CowEnv, AddressPerChain, SupportedChainId, ProtocolOptions } from '@cowprotocol/sdk-config';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* EIP-712 typed data domain.
|
|
@@ -46,6 +46,14 @@ interface TradeBaseParameters {
|
|
|
46
46
|
*/
|
|
47
47
|
interface TradeOptionalParameters {
|
|
48
48
|
env?: CowEnv;
|
|
49
|
+
/**
|
|
50
|
+
* Custom address of settlement contract
|
|
51
|
+
*/
|
|
52
|
+
settlementContractOverride?: Partial<AddressPerChain>;
|
|
53
|
+
/**
|
|
54
|
+
* Custom address of sell native token contract
|
|
55
|
+
*/
|
|
56
|
+
ethFlowContractOverride?: Partial<AddressPerChain>;
|
|
49
57
|
partiallyFillable?: OrderParameters['partiallyFillable'];
|
|
50
58
|
/**
|
|
51
59
|
* Slippage in basis points.
|
|
@@ -69,6 +77,8 @@ interface TraderParameters {
|
|
|
69
77
|
appCode: cowAppDataLatestScheme.AppCode;
|
|
70
78
|
signer?: SignerLike;
|
|
71
79
|
env?: CowEnv;
|
|
80
|
+
settlementContractOverride?: Partial<AddressPerChain>;
|
|
81
|
+
ethFlowContractOverride?: Partial<AddressPerChain>;
|
|
72
82
|
}
|
|
73
83
|
type QuoterParameters = Omit<TraderParameters, 'signer'> & {
|
|
74
84
|
account: AccountAddress;
|
|
@@ -262,7 +272,7 @@ declare function getQuoteWithSigner(swapParameters: SwapParameters, advancedSett
|
|
|
262
272
|
|
|
263
273
|
declare function postSellNativeCurrencyOrder(orderBookApi: OrderBookApi, appData: Pick<TradingAppDataInfo, 'fullAppData' | 'appDataKeccak256'>, _params: LimitTradeParametersFromQuote, additionalParams?: PostTradeAdditionalParams, paramSigner?: SignerLike): Promise<OrderPostingResult>;
|
|
264
274
|
|
|
265
|
-
declare function getPreSignTransaction(signer: Signer, chainId: SupportedChainId, orderId: string): Promise<TradingTransactionParams>;
|
|
275
|
+
declare function getPreSignTransaction(signer: Signer, chainId: SupportedChainId, orderId: string, options?: ProtocolOptions): Promise<TradingTransactionParams>;
|
|
266
276
|
|
|
267
277
|
type WithPartialTraderParams<T> = T & Partial<TraderParameters>;
|
|
268
278
|
/**
|
|
@@ -371,6 +381,7 @@ declare class TradingSdk {
|
|
|
371
381
|
getCowProtocolAllowance(params: WithPartialTraderParams<{
|
|
372
382
|
tokenAddress: string;
|
|
373
383
|
owner: string;
|
|
384
|
+
vaultRelayerAddress?: Address;
|
|
374
385
|
}>): Promise<bigint>;
|
|
375
386
|
/**
|
|
376
387
|
* Approves the CoW Protocol Vault Relayer to spend a specified amount of an ERC-20 token.
|
|
@@ -394,6 +405,7 @@ declare class TradingSdk {
|
|
|
394
405
|
approveCowProtocol(params: WithPartialTraderParams<{
|
|
395
406
|
tokenAddress: string;
|
|
396
407
|
amount: bigint;
|
|
408
|
+
vaultRelayerAddress?: Address;
|
|
397
409
|
}>): Promise<string>;
|
|
398
410
|
private resolveOrderBookApi;
|
|
399
411
|
private mergeParams;
|
|
@@ -409,7 +421,7 @@ declare function getEthFlowTransaction(appDataKeccak256: string, _params: LimitT
|
|
|
409
421
|
transaction: TradingTransactionParams;
|
|
410
422
|
orderToSign: UnsignedOrder;
|
|
411
423
|
}>;
|
|
412
|
-
declare function getEthFlowContract(signer: Signer, chainId: SupportedChainId,
|
|
424
|
+
declare function getEthFlowContract(signer: Signer, chainId: SupportedChainId, options?: ProtocolOptions): EthFlowContract;
|
|
413
425
|
|
|
414
426
|
interface OrderToSignParams {
|
|
415
427
|
chainId: SupportedChainId;
|
|
@@ -455,7 +467,7 @@ declare function buildAppData({ slippageBps, appCode, orderClass: orderClassName
|
|
|
455
467
|
declare function generateAppDataFromDoc(doc: AppDataRootSchema): Promise<Pick<TradingAppDataInfo, 'fullAppData' | 'appDataKeccak256'>>;
|
|
456
468
|
declare function mergeAppDataDoc(_doc: LatestAppDataDocVersion, appDataOverride: AppDataParams): Promise<TradingAppDataInfo>;
|
|
457
469
|
|
|
458
|
-
declare function calculateUniqueOrderId(chainId: SupportedChainId, order: UnsignedOrder, checkEthFlowOrderExists?: EthFlowOrderExistsCallback,
|
|
470
|
+
declare function calculateUniqueOrderId(chainId: SupportedChainId, order: UnsignedOrder, checkEthFlowOrderExists?: EthFlowOrderExistsCallback, options?: ProtocolOptions): Promise<string>;
|
|
459
471
|
|
|
460
472
|
declare function getPartnerFeeBps(partnerFee: cowAppDataLatestScheme.PartnerFee | undefined): number | undefined;
|
|
461
473
|
|
package/dist/index.js
CHANGED
|
@@ -203,7 +203,8 @@ var import_sdk_order_book3 = require("@cowprotocol/sdk-order-book");
|
|
|
203
203
|
// src/calculateUniqueOrderId.ts
|
|
204
204
|
var import_sdk_order_signing = require("@cowprotocol/sdk-order-signing");
|
|
205
205
|
var import_sdk_config2 = require("@cowprotocol/sdk-config");
|
|
206
|
-
async function calculateUniqueOrderId(chainId, order, checkEthFlowOrderExists,
|
|
206
|
+
async function calculateUniqueOrderId(chainId, order, checkEthFlowOrderExists, options) {
|
|
207
|
+
const { env, ethFlowContractOverride } = options ?? {};
|
|
207
208
|
const { orderDigest, orderId } = await import_sdk_order_signing.OrderSigningUtils.generateOrderId(
|
|
208
209
|
chainId,
|
|
209
210
|
{
|
|
@@ -212,15 +213,21 @@ async function calculateUniqueOrderId(chainId, order, checkEthFlowOrderExists, e
|
|
|
212
213
|
sellToken: import_sdk_config2.WRAPPED_NATIVE_CURRENCIES[chainId].address
|
|
213
214
|
},
|
|
214
215
|
{
|
|
215
|
-
owner: env === "staging" ? import_sdk_config2.BARN_ETH_FLOW_ADDRESSES[chainId] : import_sdk_config2.ETH_FLOW_ADDRESSES[chainId]
|
|
216
|
-
}
|
|
216
|
+
owner: ethFlowContractOverride?.[chainId] ?? (env === "staging" ? import_sdk_config2.BARN_ETH_FLOW_ADDRESSES[chainId] : import_sdk_config2.ETH_FLOW_ADDRESSES[chainId])
|
|
217
|
+
},
|
|
218
|
+
options
|
|
217
219
|
);
|
|
218
220
|
if (checkEthFlowOrderExists && await checkEthFlowOrderExists(orderId, orderDigest)) {
|
|
219
221
|
console.error("ETH FLOW", "[calculateUniqueOrderId] \u274C Collision detected: " + orderId, {
|
|
220
222
|
sellAmount: order.sellAmount,
|
|
221
223
|
fee: order.feeAmount
|
|
222
224
|
});
|
|
223
|
-
return calculateUniqueOrderId(
|
|
225
|
+
return calculateUniqueOrderId(
|
|
226
|
+
chainId,
|
|
227
|
+
adjustAmounts(order),
|
|
228
|
+
checkEthFlowOrderExists,
|
|
229
|
+
options
|
|
230
|
+
);
|
|
224
231
|
}
|
|
225
232
|
return orderId;
|
|
226
233
|
}
|
|
@@ -312,7 +319,12 @@ async function getEthFlowTransaction(appDataKeccak256, _params, chainId, additio
|
|
|
312
319
|
slippageBps
|
|
313
320
|
};
|
|
314
321
|
const { quoteId } = params;
|
|
315
|
-
const
|
|
322
|
+
const protocolOptions = {
|
|
323
|
+
env: params.env,
|
|
324
|
+
settlementContractOverride: params.settlementContractOverride,
|
|
325
|
+
ethFlowContractOverride: params.ethFlowContractOverride
|
|
326
|
+
};
|
|
327
|
+
const contract = getEthFlowContract(signer, chainId, protocolOptions);
|
|
316
328
|
const orderToSign = getOrderToSign(
|
|
317
329
|
{
|
|
318
330
|
chainId,
|
|
@@ -323,7 +335,7 @@ async function getEthFlowTransaction(appDataKeccak256, _params, chainId, additio
|
|
|
323
335
|
params,
|
|
324
336
|
appDataKeccak256
|
|
325
337
|
);
|
|
326
|
-
const orderId = await calculateUniqueOrderId(chainId, orderToSign, checkEthFlowOrderExists,
|
|
338
|
+
const orderId = await calculateUniqueOrderId(chainId, orderToSign, checkEthFlowOrderExists, protocolOptions);
|
|
327
339
|
const ethOrderParams = {
|
|
328
340
|
buyToken: orderToSign.buyToken,
|
|
329
341
|
receiver: orderToSign.receiver,
|
|
@@ -353,8 +365,9 @@ async function getEthFlowTransaction(appDataKeccak256, _params, chainId, additio
|
|
|
353
365
|
}
|
|
354
366
|
};
|
|
355
367
|
}
|
|
356
|
-
function getEthFlowContract(signer, chainId,
|
|
357
|
-
const
|
|
368
|
+
function getEthFlowContract(signer, chainId, options) {
|
|
369
|
+
const { env, ethFlowContractOverride } = options ?? {};
|
|
370
|
+
const address = ethFlowContractOverride?.[chainId] ?? (env === "staging" ? import_sdk_config4.BARN_ETH_FLOW_ADDRESSES[chainId] : import_sdk_config4.ETH_FLOW_ADDRESSES[chainId]);
|
|
358
371
|
return import_sdk_common.ContractFactory.createEthFlowContract(address, signer);
|
|
359
372
|
}
|
|
360
373
|
|
|
@@ -365,7 +378,11 @@ async function postSellNativeCurrencyOrder(orderBookApi, appData, _params, addit
|
|
|
365
378
|
const { appDataKeccak256, fullAppData } = appData;
|
|
366
379
|
const { orderId, transaction, orderToSign } = await getEthFlowTransaction(
|
|
367
380
|
appDataKeccak256,
|
|
368
|
-
|
|
381
|
+
{
|
|
382
|
+
..._params,
|
|
383
|
+
env: _params.env ?? orderBookApi.context.env,
|
|
384
|
+
ethFlowContractOverride: _params.ethFlowContractOverride
|
|
385
|
+
},
|
|
369
386
|
orderBookApi.context.chainId,
|
|
370
387
|
additionalParams,
|
|
371
388
|
signer
|
|
@@ -408,6 +425,8 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
|
|
|
408
425
|
}
|
|
409
426
|
const { quoteId = null, owner } = params;
|
|
410
427
|
const { appDataKeccak256, fullAppData } = appData;
|
|
428
|
+
const env = params.env ?? orderBookApi.context.env;
|
|
429
|
+
const settlementContractOverride = params.settlementContractOverride;
|
|
411
430
|
const chainId = orderBookApi.context.chainId;
|
|
412
431
|
const from = owner || await signer.getAddress();
|
|
413
432
|
const orderToSign = getOrderToSign(
|
|
@@ -429,7 +448,12 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
|
|
|
429
448
|
signingScheme: _signingScheme
|
|
430
449
|
};
|
|
431
450
|
}
|
|
432
|
-
const signingResult = await import_sdk_order_signing2.OrderSigningUtils.signOrder(
|
|
451
|
+
const signingResult = await import_sdk_order_signing2.OrderSigningUtils.signOrder(
|
|
452
|
+
orderToSign,
|
|
453
|
+
chainId,
|
|
454
|
+
signer,
|
|
455
|
+
{ env, settlementContractOverride }
|
|
456
|
+
);
|
|
433
457
|
if (isEip1271) {
|
|
434
458
|
return {
|
|
435
459
|
signature: import_sdk_order_signing2.OrderSigningUtils.getEip1271Signature(orderToSign, signingResult.signature),
|
|
@@ -466,9 +490,14 @@ var import_deepmerge = __toESM(require("deepmerge"));
|
|
|
466
490
|
// ../sdk/package.json
|
|
467
491
|
var package_default = {
|
|
468
492
|
name: "@cowprotocol/cow-sdk",
|
|
469
|
-
version: "8.0.
|
|
493
|
+
version: "8.0.2",
|
|
470
494
|
license: "(MIT OR Apache-2.0)",
|
|
471
495
|
description: "CoW Protocol SDK - get quote, configure your order, and trade",
|
|
496
|
+
repository: {
|
|
497
|
+
type: "git",
|
|
498
|
+
url: "https://github.com/cowprotocol/cow-sdk.git",
|
|
499
|
+
directory: "packages/sdk"
|
|
500
|
+
},
|
|
472
501
|
main: "./dist/index.js",
|
|
473
502
|
module: "./dist/index.mjs",
|
|
474
503
|
types: "./dist/index.d.ts",
|
|
@@ -542,11 +571,6 @@ var package_default = {
|
|
|
542
571
|
"typescript",
|
|
543
572
|
"subgraph"
|
|
544
573
|
],
|
|
545
|
-
repository: {
|
|
546
|
-
type: "git",
|
|
547
|
-
url: "https://github.com/cowprotocol/cow-sdk.git",
|
|
548
|
-
directory: "packages/sdk"
|
|
549
|
-
},
|
|
550
574
|
bugs: {
|
|
551
575
|
url: "https://github.com/cowprotocol/cow-sdk/issues"
|
|
552
576
|
},
|
|
@@ -618,8 +642,8 @@ var EIP712DomainTypes = [
|
|
|
618
642
|
{ name: "chainId", type: "uint256" },
|
|
619
643
|
{ name: "verifyingContract", type: "address" }
|
|
620
644
|
];
|
|
621
|
-
async function getOrderTypedData(chainId, orderToSign) {
|
|
622
|
-
const domain = await import_sdk_order_signing3.OrderSigningUtils.getDomain(chainId);
|
|
645
|
+
async function getOrderTypedData(chainId, orderToSign, options) {
|
|
646
|
+
const domain = await import_sdk_order_signing3.OrderSigningUtils.getDomain(chainId, options);
|
|
623
647
|
return {
|
|
624
648
|
domain,
|
|
625
649
|
primaryType: import_sdk_order_signing3.ORDER_PRIMARY_TYPE,
|
|
@@ -871,6 +895,8 @@ async function getQuote(_tradeParameters, trader, advancedSettings, _orderBookAp
|
|
|
871
895
|
const { quote, orderBookApi, tradeParameters, slippageBps, suggestedSlippageBps, appDataInfo, isEthFlow } = await getQuoteRaw(_tradeParameters, trader, advancedSettings, _orderBookApi);
|
|
872
896
|
const { partnerFee } = tradeParameters;
|
|
873
897
|
const { chainId, account: from } = trader;
|
|
898
|
+
const env = _tradeParameters.env ?? trader.env;
|
|
899
|
+
const settlementContractOverride = _tradeParameters.settlementContractOverride ?? trader.settlementContractOverride;
|
|
874
900
|
const amountsAndCosts = (0, import_sdk_order_book7.getQuoteAmountsAndCosts)({
|
|
875
901
|
orderParams: quote.quote,
|
|
876
902
|
slippagePercentBps: slippageBps,
|
|
@@ -888,7 +914,7 @@ async function getQuote(_tradeParameters, trader, advancedSettings, _orderBookAp
|
|
|
888
914
|
swapParamsToLimitOrderParams(tradeParameters, quote),
|
|
889
915
|
appDataInfo.appDataKeccak256
|
|
890
916
|
);
|
|
891
|
-
const orderTypedData = await getOrderTypedData(chainId, orderToSign);
|
|
917
|
+
const orderTypedData = await getOrderTypedData(chainId, orderToSign, { env, settlementContractOverride });
|
|
892
918
|
return {
|
|
893
919
|
result: {
|
|
894
920
|
tradeParameters,
|
|
@@ -908,7 +934,8 @@ async function getTrader(swapParameters) {
|
|
|
908
934
|
return {
|
|
909
935
|
chainId: swapParameters.chainId,
|
|
910
936
|
appCode: swapParameters.appCode,
|
|
911
|
-
account
|
|
937
|
+
account,
|
|
938
|
+
settlementContractOverride: swapParameters.settlementContractOverride
|
|
912
939
|
};
|
|
913
940
|
}
|
|
914
941
|
async function getQuoteWithSigner(swapParameters, advancedSettings, orderBookApi) {
|
|
@@ -1013,13 +1040,17 @@ async function postLimitOrder(_params, advancedSettings, _orderBookApi) {
|
|
|
1013
1040
|
// src/getSettlementContract.ts
|
|
1014
1041
|
var import_sdk_common13 = require("@cowprotocol/sdk-common");
|
|
1015
1042
|
var import_sdk_config5 = require("@cowprotocol/sdk-config");
|
|
1016
|
-
function getSettlementContract(chainId, signer) {
|
|
1017
|
-
|
|
1043
|
+
function getSettlementContract(chainId, signer, options) {
|
|
1044
|
+
const { env, settlementContractOverride } = options ?? {};
|
|
1045
|
+
return import_sdk_common13.ContractFactory.createSettlementContract(
|
|
1046
|
+
settlementContractOverride?.[chainId] ?? (env === "staging" ? import_sdk_config5.COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS_STAGING[chainId] : import_sdk_config5.COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS[chainId]),
|
|
1047
|
+
signer
|
|
1048
|
+
);
|
|
1018
1049
|
}
|
|
1019
1050
|
|
|
1020
1051
|
// src/getPreSignTransaction.ts
|
|
1021
|
-
async function getPreSignTransaction(signer, chainId, orderId) {
|
|
1022
|
-
const contract = getSettlementContract(chainId, signer);
|
|
1052
|
+
async function getPreSignTransaction(signer, chainId, orderId, options) {
|
|
1053
|
+
const contract = getSettlementContract(chainId, signer, options);
|
|
1023
1054
|
const preSignatureCall = contract.interface.encodeFunctionData("setPreSignature", [orderId, true]);
|
|
1024
1055
|
const gas = await contract.estimateGas.setPreSignature?.(orderId, true).catch(() => GAS_LIMIT_DEFAULT) || GAS_LIMIT_DEFAULT;
|
|
1025
1056
|
return {
|
|
@@ -1128,7 +1159,11 @@ var TradingSdk = class {
|
|
|
1128
1159
|
return this;
|
|
1129
1160
|
}
|
|
1130
1161
|
async getQuote(params, advancedSettings) {
|
|
1131
|
-
const quoteResults = await getQuoteWithSigner(
|
|
1162
|
+
const quoteResults = await getQuoteWithSigner(
|
|
1163
|
+
this.mergeParams(params),
|
|
1164
|
+
advancedSettings,
|
|
1165
|
+
this.resolveOrderBookApi(params)
|
|
1166
|
+
);
|
|
1132
1167
|
return {
|
|
1133
1168
|
quoteResults: quoteResults.result,
|
|
1134
1169
|
postSwapOrderFromQuote: async (advancedSettings2, signingStepManager) => {
|
|
@@ -1197,19 +1232,21 @@ var TradingSdk = class {
|
|
|
1197
1232
|
chainId: quoterParams.chainId,
|
|
1198
1233
|
appCode: quoterParams.appCode,
|
|
1199
1234
|
env: quoterParams.env,
|
|
1200
|
-
account: quoterParams.owner
|
|
1235
|
+
account: quoterParams.owner,
|
|
1236
|
+
settlementContractOverride: quoterParams.settlementContractOverride,
|
|
1237
|
+
ethFlowContractOverride: quoterParams.ethFlowContractOverride
|
|
1201
1238
|
};
|
|
1202
|
-
const result = await getQuote(quoterParams, trader, advancedSettings, this.
|
|
1239
|
+
const result = await getQuote(quoterParams, trader, advancedSettings, this.resolveOrderBookApi(params));
|
|
1203
1240
|
return result.result;
|
|
1204
1241
|
}
|
|
1205
1242
|
async getQuoteResults(params, advancedSettings) {
|
|
1206
|
-
return getQuoteWithSigner(this.mergeParams(params), advancedSettings, this.
|
|
1243
|
+
return getQuoteWithSigner(this.mergeParams(params), advancedSettings, this.resolveOrderBookApi(params));
|
|
1207
1244
|
}
|
|
1208
1245
|
async postSwapOrder(params, advancedSettings) {
|
|
1209
|
-
return postSwapOrder(this.mergeParams(params), advancedSettings, this.
|
|
1246
|
+
return postSwapOrder(this.mergeParams(params), advancedSettings, this.resolveOrderBookApi(params));
|
|
1210
1247
|
}
|
|
1211
1248
|
async postLimitOrder(params, advancedSettings) {
|
|
1212
|
-
return postLimitOrder(this.mergeParams(params), advancedSettings, this.
|
|
1249
|
+
return postLimitOrder(this.mergeParams(params), advancedSettings, this.resolveOrderBookApi(params));
|
|
1213
1250
|
}
|
|
1214
1251
|
/**
|
|
1215
1252
|
* Posts a sell order for native currency (e.g., ETH) using the EthFlow contract.
|
|
@@ -1234,7 +1271,11 @@ var TradingSdk = class {
|
|
|
1234
1271
|
* ```
|
|
1235
1272
|
*/
|
|
1236
1273
|
async postSellNativeCurrencyOrder(params, advancedSettings) {
|
|
1237
|
-
const quoteResults = await getQuoteWithSigner(
|
|
1274
|
+
const quoteResults = await getQuoteWithSigner(
|
|
1275
|
+
this.mergeParams(params),
|
|
1276
|
+
advancedSettings,
|
|
1277
|
+
this.resolveOrderBookApi(params)
|
|
1278
|
+
);
|
|
1238
1279
|
const { tradeParameters, quoteResponse } = quoteResults.result;
|
|
1239
1280
|
return postSellNativeCurrencyOrder(
|
|
1240
1281
|
quoteResults.orderBookApi,
|
|
@@ -1249,9 +1290,12 @@ var TradingSdk = class {
|
|
|
1249
1290
|
);
|
|
1250
1291
|
}
|
|
1251
1292
|
async getPreSignTransaction(params) {
|
|
1252
|
-
const
|
|
1253
|
-
const signer = resolveSigner(
|
|
1254
|
-
return getPreSignTransaction(signer,
|
|
1293
|
+
const { chainId, env, settlementContractOverride, orderUid, signer: signerLike } = this.mergeParams(params);
|
|
1294
|
+
const signer = resolveSigner(signerLike);
|
|
1295
|
+
return getPreSignTransaction(signer, chainId, orderUid, {
|
|
1296
|
+
env,
|
|
1297
|
+
settlementContractOverride
|
|
1298
|
+
});
|
|
1255
1299
|
}
|
|
1256
1300
|
async getOrder(params) {
|
|
1257
1301
|
const orderBookApi = this.resolveOrderBookApi(params);
|
|
@@ -1259,13 +1303,13 @@ var TradingSdk = class {
|
|
|
1259
1303
|
}
|
|
1260
1304
|
async offChainCancelOrder(params) {
|
|
1261
1305
|
const orderBookApi = this.resolveOrderBookApi(params);
|
|
1262
|
-
const signer =
|
|
1306
|
+
const { env, chainId, settlementContractOverride, signer: signerLike } = this.mergeParams(params);
|
|
1307
|
+
const signer = resolveSigner(signerLike);
|
|
1263
1308
|
const { orderUid } = params;
|
|
1264
|
-
const
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
}
|
|
1268
|
-
const orderCancellationSigning = await import_sdk_order_signing4.OrderSigningUtils.signOrderCancellations([orderUid], chainId, signer);
|
|
1309
|
+
const orderCancellationSigning = await import_sdk_order_signing4.OrderSigningUtils.signOrderCancellations([orderUid], chainId, signer, {
|
|
1310
|
+
env,
|
|
1311
|
+
settlementContractOverride
|
|
1312
|
+
});
|
|
1269
1313
|
await orderBookApi.sendSignedOrderCancellations({
|
|
1270
1314
|
...orderCancellationSigning,
|
|
1271
1315
|
orderUids: [orderUid]
|
|
@@ -1273,14 +1317,11 @@ var TradingSdk = class {
|
|
|
1273
1317
|
return true;
|
|
1274
1318
|
}
|
|
1275
1319
|
async onChainCancelOrder(params, _order) {
|
|
1276
|
-
const
|
|
1277
|
-
if (!chainId) {
|
|
1278
|
-
throw new Error("Chain ID is missing in offChainCancelOrder() call");
|
|
1279
|
-
}
|
|
1320
|
+
const { env, chainId, settlementContractOverride, ethFlowContractOverride } = this.mergeParams(params);
|
|
1280
1321
|
const order = _order ?? await this.getOrder(params);
|
|
1281
1322
|
const isEthFlowOrder = !!order.onchainOrderData;
|
|
1282
1323
|
const signer = params.signer ? (0, import_sdk_common14.getGlobalAdapter)().createSigner(params.signer) : (0, import_sdk_common14.getGlobalAdapter)().signer;
|
|
1283
|
-
const { transaction } = await (isEthFlowOrder ? getEthFlowCancellation(getEthFlowContract(signer, chainId,
|
|
1324
|
+
const { transaction } = await (isEthFlowOrder ? getEthFlowCancellation(getEthFlowContract(signer, chainId, { env, ethFlowContractOverride }), order) : getSettlementCancellation(getSettlementContract(chainId, signer, { env, settlementContractOverride }), order));
|
|
1284
1325
|
const txReceipt = await signer.sendTransaction(transaction);
|
|
1285
1326
|
return txReceipt.hash;
|
|
1286
1327
|
}
|
|
@@ -1303,12 +1344,9 @@ var TradingSdk = class {
|
|
|
1303
1344
|
* ```
|
|
1304
1345
|
*/
|
|
1305
1346
|
async getCowProtocolAllowance(params) {
|
|
1306
|
-
const
|
|
1307
|
-
if (!chainId) {
|
|
1308
|
-
throw new Error("Chain ID is missing in getCowProtocolAllowance() call");
|
|
1309
|
-
}
|
|
1347
|
+
const { env, chainId } = this.mergeParams(params);
|
|
1310
1348
|
const adapter = (0, import_sdk_common14.getGlobalAdapter)();
|
|
1311
|
-
const vaultRelayerAddress = import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId];
|
|
1349
|
+
const vaultRelayerAddress = params.vaultRelayerAddress ?? (env === "staging" ? import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS_STAGING[chainId] : import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId]);
|
|
1312
1350
|
return await adapter.readContract({
|
|
1313
1351
|
address: params.tokenAddress,
|
|
1314
1352
|
abi: import_sdk_common14.ERC20_ALLOWANCE_ABI,
|
|
@@ -1336,13 +1374,10 @@ var TradingSdk = class {
|
|
|
1336
1374
|
* ```
|
|
1337
1375
|
*/
|
|
1338
1376
|
async approveCowProtocol(params) {
|
|
1339
|
-
const
|
|
1340
|
-
if (!chainId) {
|
|
1341
|
-
throw new Error("Chain ID is missing in approveCowProtocol() call");
|
|
1342
|
-
}
|
|
1377
|
+
const { env, chainId, signer: signerLike } = this.mergeParams(params);
|
|
1343
1378
|
const adapter = (0, import_sdk_common14.getGlobalAdapter)();
|
|
1344
|
-
const signer = resolveSigner(
|
|
1345
|
-
const vaultRelayerAddress = import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId];
|
|
1379
|
+
const signer = resolveSigner(signerLike);
|
|
1380
|
+
const vaultRelayerAddress = params.vaultRelayerAddress ?? (env === "staging" ? import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS_STAGING[chainId] : import_sdk_config6.COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId]);
|
|
1346
1381
|
const txParams = {
|
|
1347
1382
|
to: params.tokenAddress,
|
|
1348
1383
|
data: adapter.utils.encodeFunction(import_sdk_common14.ERC20_APPROVE_ABI, "approve", [
|
|
@@ -1355,19 +1390,22 @@ var TradingSdk = class {
|
|
|
1355
1390
|
}
|
|
1356
1391
|
resolveOrderBookApi(params) {
|
|
1357
1392
|
const chainId = params.chainId ?? this.traderParams.chainId;
|
|
1358
|
-
const env = params.env ?? this.traderParams.env ?? "prod";
|
|
1393
|
+
const env = params.env ?? this.traderParams.env ?? this.options.orderBookApi?.context?.env ?? "prod";
|
|
1359
1394
|
if (!chainId) {
|
|
1360
1395
|
throw new Error("Chain ID is missing in getOrder() call");
|
|
1361
1396
|
}
|
|
1362
|
-
return resolveOrderBookApi(chainId, env);
|
|
1397
|
+
return resolveOrderBookApi(chainId, env, this.options.orderBookApi);
|
|
1363
1398
|
}
|
|
1364
1399
|
mergeParams(params) {
|
|
1365
|
-
const { chainId, signer, appCode, env } = params;
|
|
1400
|
+
const { chainId, signer, appCode, env, settlementContractOverride, ethFlowContractOverride } = params;
|
|
1401
|
+
const orderBookContext = this.options.orderBookApi?.context;
|
|
1366
1402
|
const traderParams = {
|
|
1367
|
-
chainId: chainId
|
|
1368
|
-
signer: signer
|
|
1369
|
-
appCode: appCode
|
|
1370
|
-
env: env
|
|
1403
|
+
chainId: chainId ?? this.traderParams.chainId ?? orderBookContext?.chainId,
|
|
1404
|
+
signer: signer ?? this.traderParams.signer ?? (0, import_sdk_common14.getGlobalAdapter)().signer,
|
|
1405
|
+
appCode: appCode ?? this.traderParams.appCode,
|
|
1406
|
+
env: env ?? this.traderParams.env ?? orderBookContext?.env,
|
|
1407
|
+
settlementContractOverride: settlementContractOverride ?? this.traderParams.settlementContractOverride,
|
|
1408
|
+
ethFlowContractOverride: ethFlowContractOverride ?? this.traderParams.ethFlowContractOverride
|
|
1371
1409
|
};
|
|
1372
1410
|
assertTraderParams(traderParams);
|
|
1373
1411
|
return {
|
|
@@ -1380,9 +1418,11 @@ var TradingSdk = class {
|
|
|
1380
1418
|
* Used by quote-only operations that don't need signing capability.
|
|
1381
1419
|
*/
|
|
1382
1420
|
mergeQuoterParams(params) {
|
|
1383
|
-
const chainId = params.chainId
|
|
1384
|
-
const appCode = params.appCode
|
|
1385
|
-
const env = params.env
|
|
1421
|
+
const chainId = params.chainId ?? this.traderParams.chainId;
|
|
1422
|
+
const appCode = params.appCode ?? this.traderParams.appCode;
|
|
1423
|
+
const env = params.env ?? this.traderParams.env ?? this.options.orderBookApi?.context?.env ?? "prod";
|
|
1424
|
+
const settlementContractOverride = params.settlementContractOverride ?? this.traderParams.settlementContractOverride;
|
|
1425
|
+
const ethFlowContractOverride = params.ethFlowContractOverride ?? this.traderParams.ethFlowContractOverride;
|
|
1386
1426
|
if (!chainId) {
|
|
1387
1427
|
throw new Error("Missing quoter parameters: chainId");
|
|
1388
1428
|
}
|
|
@@ -1393,7 +1433,9 @@ var TradingSdk = class {
|
|
|
1393
1433
|
...params,
|
|
1394
1434
|
chainId,
|
|
1395
1435
|
appCode,
|
|
1396
|
-
env
|
|
1436
|
+
env,
|
|
1437
|
+
settlementContractOverride,
|
|
1438
|
+
ethFlowContractOverride
|
|
1397
1439
|
};
|
|
1398
1440
|
}
|
|
1399
1441
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -154,7 +154,8 @@ import {
|
|
|
154
154
|
MAX_VALID_TO_EPOCH,
|
|
155
155
|
WRAPPED_NATIVE_CURRENCIES
|
|
156
156
|
} from "@cowprotocol/sdk-config";
|
|
157
|
-
async function calculateUniqueOrderId(chainId, order, checkEthFlowOrderExists,
|
|
157
|
+
async function calculateUniqueOrderId(chainId, order, checkEthFlowOrderExists, options) {
|
|
158
|
+
const { env, ethFlowContractOverride } = options ?? {};
|
|
158
159
|
const { orderDigest, orderId } = await OrderSigningUtils.generateOrderId(
|
|
159
160
|
chainId,
|
|
160
161
|
{
|
|
@@ -163,15 +164,21 @@ async function calculateUniqueOrderId(chainId, order, checkEthFlowOrderExists, e
|
|
|
163
164
|
sellToken: WRAPPED_NATIVE_CURRENCIES[chainId].address
|
|
164
165
|
},
|
|
165
166
|
{
|
|
166
|
-
owner: env === "staging" ? BARN_ETH_FLOW_ADDRESSES[chainId] : ETH_FLOW_ADDRESSES[chainId]
|
|
167
|
-
}
|
|
167
|
+
owner: ethFlowContractOverride?.[chainId] ?? (env === "staging" ? BARN_ETH_FLOW_ADDRESSES[chainId] : ETH_FLOW_ADDRESSES[chainId])
|
|
168
|
+
},
|
|
169
|
+
options
|
|
168
170
|
);
|
|
169
171
|
if (checkEthFlowOrderExists && await checkEthFlowOrderExists(orderId, orderDigest)) {
|
|
170
172
|
console.error("ETH FLOW", "[calculateUniqueOrderId] \u274C Collision detected: " + orderId, {
|
|
171
173
|
sellAmount: order.sellAmount,
|
|
172
174
|
fee: order.feeAmount
|
|
173
175
|
});
|
|
174
|
-
return calculateUniqueOrderId(
|
|
176
|
+
return calculateUniqueOrderId(
|
|
177
|
+
chainId,
|
|
178
|
+
adjustAmounts(order),
|
|
179
|
+
checkEthFlowOrderExists,
|
|
180
|
+
options
|
|
181
|
+
);
|
|
175
182
|
}
|
|
176
183
|
return orderId;
|
|
177
184
|
}
|
|
@@ -181,7 +188,10 @@ function adjustAmounts(order) {
|
|
|
181
188
|
}
|
|
182
189
|
|
|
183
190
|
// src/getEthFlowTransaction.ts
|
|
184
|
-
import {
|
|
191
|
+
import {
|
|
192
|
+
BARN_ETH_FLOW_ADDRESSES as BARN_ETH_FLOW_ADDRESSES2,
|
|
193
|
+
ETH_FLOW_ADDRESSES as ETH_FLOW_ADDRESSES2
|
|
194
|
+
} from "@cowprotocol/sdk-config";
|
|
185
195
|
|
|
186
196
|
// src/utils/misc.ts
|
|
187
197
|
import { ETH_ADDRESS, WRAPPED_NATIVE_CURRENCIES as WRAPPED_NATIVE_CURRENCIES2 } from "@cowprotocol/sdk-config";
|
|
@@ -266,7 +276,12 @@ async function getEthFlowTransaction(appDataKeccak256, _params, chainId, additio
|
|
|
266
276
|
slippageBps
|
|
267
277
|
};
|
|
268
278
|
const { quoteId } = params;
|
|
269
|
-
const
|
|
279
|
+
const protocolOptions = {
|
|
280
|
+
env: params.env,
|
|
281
|
+
settlementContractOverride: params.settlementContractOverride,
|
|
282
|
+
ethFlowContractOverride: params.ethFlowContractOverride
|
|
283
|
+
};
|
|
284
|
+
const contract = getEthFlowContract(signer, chainId, protocolOptions);
|
|
270
285
|
const orderToSign = getOrderToSign(
|
|
271
286
|
{
|
|
272
287
|
chainId,
|
|
@@ -277,7 +292,7 @@ async function getEthFlowTransaction(appDataKeccak256, _params, chainId, additio
|
|
|
277
292
|
params,
|
|
278
293
|
appDataKeccak256
|
|
279
294
|
);
|
|
280
|
-
const orderId = await calculateUniqueOrderId(chainId, orderToSign, checkEthFlowOrderExists,
|
|
295
|
+
const orderId = await calculateUniqueOrderId(chainId, orderToSign, checkEthFlowOrderExists, protocolOptions);
|
|
281
296
|
const ethOrderParams = {
|
|
282
297
|
buyToken: orderToSign.buyToken,
|
|
283
298
|
receiver: orderToSign.receiver,
|
|
@@ -307,8 +322,9 @@ async function getEthFlowTransaction(appDataKeccak256, _params, chainId, additio
|
|
|
307
322
|
}
|
|
308
323
|
};
|
|
309
324
|
}
|
|
310
|
-
function getEthFlowContract(signer, chainId,
|
|
311
|
-
const
|
|
325
|
+
function getEthFlowContract(signer, chainId, options) {
|
|
326
|
+
const { env, ethFlowContractOverride } = options ?? {};
|
|
327
|
+
const address = ethFlowContractOverride?.[chainId] ?? (env === "staging" ? BARN_ETH_FLOW_ADDRESSES2[chainId] : ETH_FLOW_ADDRESSES2[chainId]);
|
|
312
328
|
return ContractFactory.createEthFlowContract(address, signer);
|
|
313
329
|
}
|
|
314
330
|
|
|
@@ -319,7 +335,11 @@ async function postSellNativeCurrencyOrder(orderBookApi, appData, _params, addit
|
|
|
319
335
|
const { appDataKeccak256, fullAppData } = appData;
|
|
320
336
|
const { orderId, transaction, orderToSign } = await getEthFlowTransaction(
|
|
321
337
|
appDataKeccak256,
|
|
322
|
-
|
|
338
|
+
{
|
|
339
|
+
..._params,
|
|
340
|
+
env: _params.env ?? orderBookApi.context.env,
|
|
341
|
+
ethFlowContractOverride: _params.ethFlowContractOverride
|
|
342
|
+
},
|
|
323
343
|
orderBookApi.context.chainId,
|
|
324
344
|
additionalParams,
|
|
325
345
|
signer
|
|
@@ -362,6 +382,8 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
|
|
|
362
382
|
}
|
|
363
383
|
const { quoteId = null, owner } = params;
|
|
364
384
|
const { appDataKeccak256, fullAppData } = appData;
|
|
385
|
+
const env = params.env ?? orderBookApi.context.env;
|
|
386
|
+
const settlementContractOverride = params.settlementContractOverride;
|
|
365
387
|
const chainId = orderBookApi.context.chainId;
|
|
366
388
|
const from = owner || await signer.getAddress();
|
|
367
389
|
const orderToSign = getOrderToSign(
|
|
@@ -383,7 +405,12 @@ async function postCoWProtocolTrade(orderBookApi, appData, params, additionalPar
|
|
|
383
405
|
signingScheme: _signingScheme
|
|
384
406
|
};
|
|
385
407
|
}
|
|
386
|
-
const signingResult = await OrderSigningUtils2.signOrder(
|
|
408
|
+
const signingResult = await OrderSigningUtils2.signOrder(
|
|
409
|
+
orderToSign,
|
|
410
|
+
chainId,
|
|
411
|
+
signer,
|
|
412
|
+
{ env, settlementContractOverride }
|
|
413
|
+
);
|
|
387
414
|
if (isEip1271) {
|
|
388
415
|
return {
|
|
389
416
|
signature: OrderSigningUtils2.getEip1271Signature(orderToSign, signingResult.signature),
|
|
@@ -430,9 +457,14 @@ import deepmerge from "deepmerge";
|
|
|
430
457
|
// ../sdk/package.json
|
|
431
458
|
var package_default = {
|
|
432
459
|
name: "@cowprotocol/cow-sdk",
|
|
433
|
-
version: "8.0.
|
|
460
|
+
version: "8.0.2",
|
|
434
461
|
license: "(MIT OR Apache-2.0)",
|
|
435
462
|
description: "CoW Protocol SDK - get quote, configure your order, and trade",
|
|
463
|
+
repository: {
|
|
464
|
+
type: "git",
|
|
465
|
+
url: "https://github.com/cowprotocol/cow-sdk.git",
|
|
466
|
+
directory: "packages/sdk"
|
|
467
|
+
},
|
|
436
468
|
main: "./dist/index.js",
|
|
437
469
|
module: "./dist/index.mjs",
|
|
438
470
|
types: "./dist/index.d.ts",
|
|
@@ -506,11 +538,6 @@ var package_default = {
|
|
|
506
538
|
"typescript",
|
|
507
539
|
"subgraph"
|
|
508
540
|
],
|
|
509
|
-
repository: {
|
|
510
|
-
type: "git",
|
|
511
|
-
url: "https://github.com/cowprotocol/cow-sdk.git",
|
|
512
|
-
directory: "packages/sdk"
|
|
513
|
-
},
|
|
514
541
|
bugs: {
|
|
515
542
|
url: "https://github.com/cowprotocol/cow-sdk/issues"
|
|
516
543
|
},
|
|
@@ -582,8 +609,8 @@ var EIP712DomainTypes = [
|
|
|
582
609
|
{ name: "chainId", type: "uint256" },
|
|
583
610
|
{ name: "verifyingContract", type: "address" }
|
|
584
611
|
];
|
|
585
|
-
async function getOrderTypedData(chainId, orderToSign) {
|
|
586
|
-
const domain = await OrderSigningUtils3.getDomain(chainId);
|
|
612
|
+
async function getOrderTypedData(chainId, orderToSign, options) {
|
|
613
|
+
const domain = await OrderSigningUtils3.getDomain(chainId, options);
|
|
587
614
|
return {
|
|
588
615
|
domain,
|
|
589
616
|
primaryType: ORDER_PRIMARY_TYPE,
|
|
@@ -835,6 +862,8 @@ async function getQuote(_tradeParameters, trader, advancedSettings, _orderBookAp
|
|
|
835
862
|
const { quote, orderBookApi, tradeParameters, slippageBps, suggestedSlippageBps, appDataInfo, isEthFlow } = await getQuoteRaw(_tradeParameters, trader, advancedSettings, _orderBookApi);
|
|
836
863
|
const { partnerFee } = tradeParameters;
|
|
837
864
|
const { chainId, account: from } = trader;
|
|
865
|
+
const env = _tradeParameters.env ?? trader.env;
|
|
866
|
+
const settlementContractOverride = _tradeParameters.settlementContractOverride ?? trader.settlementContractOverride;
|
|
838
867
|
const amountsAndCosts = getQuoteAmountsAndCosts4({
|
|
839
868
|
orderParams: quote.quote,
|
|
840
869
|
slippagePercentBps: slippageBps,
|
|
@@ -852,7 +881,7 @@ async function getQuote(_tradeParameters, trader, advancedSettings, _orderBookAp
|
|
|
852
881
|
swapParamsToLimitOrderParams(tradeParameters, quote),
|
|
853
882
|
appDataInfo.appDataKeccak256
|
|
854
883
|
);
|
|
855
|
-
const orderTypedData = await getOrderTypedData(chainId, orderToSign);
|
|
884
|
+
const orderTypedData = await getOrderTypedData(chainId, orderToSign, { env, settlementContractOverride });
|
|
856
885
|
return {
|
|
857
886
|
result: {
|
|
858
887
|
tradeParameters,
|
|
@@ -872,7 +901,8 @@ async function getTrader(swapParameters) {
|
|
|
872
901
|
return {
|
|
873
902
|
chainId: swapParameters.chainId,
|
|
874
903
|
appCode: swapParameters.appCode,
|
|
875
|
-
account
|
|
904
|
+
account,
|
|
905
|
+
settlementContractOverride: swapParameters.settlementContractOverride
|
|
876
906
|
};
|
|
877
907
|
}
|
|
878
908
|
async function getQuoteWithSigner(swapParameters, advancedSettings, orderBookApi) {
|
|
@@ -976,14 +1006,21 @@ async function postLimitOrder(_params, advancedSettings, _orderBookApi) {
|
|
|
976
1006
|
|
|
977
1007
|
// src/getSettlementContract.ts
|
|
978
1008
|
import { ContractFactory as ContractFactory2 } from "@cowprotocol/sdk-common";
|
|
979
|
-
import {
|
|
980
|
-
|
|
981
|
-
|
|
1009
|
+
import {
|
|
1010
|
+
COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS,
|
|
1011
|
+
COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS_STAGING
|
|
1012
|
+
} from "@cowprotocol/sdk-config";
|
|
1013
|
+
function getSettlementContract(chainId, signer, options) {
|
|
1014
|
+
const { env, settlementContractOverride } = options ?? {};
|
|
1015
|
+
return ContractFactory2.createSettlementContract(
|
|
1016
|
+
settlementContractOverride?.[chainId] ?? (env === "staging" ? COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS_STAGING[chainId] : COW_PROTOCOL_SETTLEMENT_CONTRACT_ADDRESS[chainId]),
|
|
1017
|
+
signer
|
|
1018
|
+
);
|
|
982
1019
|
}
|
|
983
1020
|
|
|
984
1021
|
// src/getPreSignTransaction.ts
|
|
985
|
-
async function getPreSignTransaction(signer, chainId, orderId) {
|
|
986
|
-
const contract = getSettlementContract(chainId, signer);
|
|
1022
|
+
async function getPreSignTransaction(signer, chainId, orderId, options) {
|
|
1023
|
+
const contract = getSettlementContract(chainId, signer, options);
|
|
987
1024
|
const preSignatureCall = contract.interface.encodeFunctionData("setPreSignature", [orderId, true]);
|
|
988
1025
|
const gas = await contract.estimateGas.setPreSignature?.(orderId, true).catch(() => GAS_LIMIT_DEFAULT) || GAS_LIMIT_DEFAULT;
|
|
989
1026
|
return {
|
|
@@ -1073,7 +1110,10 @@ function resolveOrderBookApi(chainId, env, existingOrderBookApi) {
|
|
|
1073
1110
|
}
|
|
1074
1111
|
|
|
1075
1112
|
// src/tradingSdk.ts
|
|
1076
|
-
import {
|
|
1113
|
+
import {
|
|
1114
|
+
COW_PROTOCOL_VAULT_RELAYER_ADDRESS,
|
|
1115
|
+
COW_PROTOCOL_VAULT_RELAYER_ADDRESS_STAGING
|
|
1116
|
+
} from "@cowprotocol/sdk-config";
|
|
1077
1117
|
var TradingSdk = class {
|
|
1078
1118
|
constructor(traderParams = {}, options = {}, adapter) {
|
|
1079
1119
|
this.traderParams = traderParams;
|
|
@@ -1098,7 +1138,11 @@ var TradingSdk = class {
|
|
|
1098
1138
|
return this;
|
|
1099
1139
|
}
|
|
1100
1140
|
async getQuote(params, advancedSettings) {
|
|
1101
|
-
const quoteResults = await getQuoteWithSigner(
|
|
1141
|
+
const quoteResults = await getQuoteWithSigner(
|
|
1142
|
+
this.mergeParams(params),
|
|
1143
|
+
advancedSettings,
|
|
1144
|
+
this.resolveOrderBookApi(params)
|
|
1145
|
+
);
|
|
1102
1146
|
return {
|
|
1103
1147
|
quoteResults: quoteResults.result,
|
|
1104
1148
|
postSwapOrderFromQuote: async (advancedSettings2, signingStepManager) => {
|
|
@@ -1167,19 +1211,21 @@ var TradingSdk = class {
|
|
|
1167
1211
|
chainId: quoterParams.chainId,
|
|
1168
1212
|
appCode: quoterParams.appCode,
|
|
1169
1213
|
env: quoterParams.env,
|
|
1170
|
-
account: quoterParams.owner
|
|
1214
|
+
account: quoterParams.owner,
|
|
1215
|
+
settlementContractOverride: quoterParams.settlementContractOverride,
|
|
1216
|
+
ethFlowContractOverride: quoterParams.ethFlowContractOverride
|
|
1171
1217
|
};
|
|
1172
|
-
const result = await getQuote(quoterParams, trader, advancedSettings, this.
|
|
1218
|
+
const result = await getQuote(quoterParams, trader, advancedSettings, this.resolveOrderBookApi(params));
|
|
1173
1219
|
return result.result;
|
|
1174
1220
|
}
|
|
1175
1221
|
async getQuoteResults(params, advancedSettings) {
|
|
1176
|
-
return getQuoteWithSigner(this.mergeParams(params), advancedSettings, this.
|
|
1222
|
+
return getQuoteWithSigner(this.mergeParams(params), advancedSettings, this.resolveOrderBookApi(params));
|
|
1177
1223
|
}
|
|
1178
1224
|
async postSwapOrder(params, advancedSettings) {
|
|
1179
|
-
return postSwapOrder(this.mergeParams(params), advancedSettings, this.
|
|
1225
|
+
return postSwapOrder(this.mergeParams(params), advancedSettings, this.resolveOrderBookApi(params));
|
|
1180
1226
|
}
|
|
1181
1227
|
async postLimitOrder(params, advancedSettings) {
|
|
1182
|
-
return postLimitOrder(this.mergeParams(params), advancedSettings, this.
|
|
1228
|
+
return postLimitOrder(this.mergeParams(params), advancedSettings, this.resolveOrderBookApi(params));
|
|
1183
1229
|
}
|
|
1184
1230
|
/**
|
|
1185
1231
|
* Posts a sell order for native currency (e.g., ETH) using the EthFlow contract.
|
|
@@ -1204,7 +1250,11 @@ var TradingSdk = class {
|
|
|
1204
1250
|
* ```
|
|
1205
1251
|
*/
|
|
1206
1252
|
async postSellNativeCurrencyOrder(params, advancedSettings) {
|
|
1207
|
-
const quoteResults = await getQuoteWithSigner(
|
|
1253
|
+
const quoteResults = await getQuoteWithSigner(
|
|
1254
|
+
this.mergeParams(params),
|
|
1255
|
+
advancedSettings,
|
|
1256
|
+
this.resolveOrderBookApi(params)
|
|
1257
|
+
);
|
|
1208
1258
|
const { tradeParameters, quoteResponse } = quoteResults.result;
|
|
1209
1259
|
return postSellNativeCurrencyOrder(
|
|
1210
1260
|
quoteResults.orderBookApi,
|
|
@@ -1219,9 +1269,12 @@ var TradingSdk = class {
|
|
|
1219
1269
|
);
|
|
1220
1270
|
}
|
|
1221
1271
|
async getPreSignTransaction(params) {
|
|
1222
|
-
const
|
|
1223
|
-
const signer = resolveSigner(
|
|
1224
|
-
return getPreSignTransaction(signer,
|
|
1272
|
+
const { chainId, env, settlementContractOverride, orderUid, signer: signerLike } = this.mergeParams(params);
|
|
1273
|
+
const signer = resolveSigner(signerLike);
|
|
1274
|
+
return getPreSignTransaction(signer, chainId, orderUid, {
|
|
1275
|
+
env,
|
|
1276
|
+
settlementContractOverride
|
|
1277
|
+
});
|
|
1225
1278
|
}
|
|
1226
1279
|
async getOrder(params) {
|
|
1227
1280
|
const orderBookApi = this.resolveOrderBookApi(params);
|
|
@@ -1229,13 +1282,13 @@ var TradingSdk = class {
|
|
|
1229
1282
|
}
|
|
1230
1283
|
async offChainCancelOrder(params) {
|
|
1231
1284
|
const orderBookApi = this.resolveOrderBookApi(params);
|
|
1232
|
-
const signer =
|
|
1285
|
+
const { env, chainId, settlementContractOverride, signer: signerLike } = this.mergeParams(params);
|
|
1286
|
+
const signer = resolveSigner(signerLike);
|
|
1233
1287
|
const { orderUid } = params;
|
|
1234
|
-
const
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
}
|
|
1238
|
-
const orderCancellationSigning = await OrderSigningUtils4.signOrderCancellations([orderUid], chainId, signer);
|
|
1288
|
+
const orderCancellationSigning = await OrderSigningUtils4.signOrderCancellations([orderUid], chainId, signer, {
|
|
1289
|
+
env,
|
|
1290
|
+
settlementContractOverride
|
|
1291
|
+
});
|
|
1239
1292
|
await orderBookApi.sendSignedOrderCancellations({
|
|
1240
1293
|
...orderCancellationSigning,
|
|
1241
1294
|
orderUids: [orderUid]
|
|
@@ -1243,14 +1296,11 @@ var TradingSdk = class {
|
|
|
1243
1296
|
return true;
|
|
1244
1297
|
}
|
|
1245
1298
|
async onChainCancelOrder(params, _order) {
|
|
1246
|
-
const
|
|
1247
|
-
if (!chainId) {
|
|
1248
|
-
throw new Error("Chain ID is missing in offChainCancelOrder() call");
|
|
1249
|
-
}
|
|
1299
|
+
const { env, chainId, settlementContractOverride, ethFlowContractOverride } = this.mergeParams(params);
|
|
1250
1300
|
const order = _order ?? await this.getOrder(params);
|
|
1251
1301
|
const isEthFlowOrder = !!order.onchainOrderData;
|
|
1252
1302
|
const signer = params.signer ? getGlobalAdapter6().createSigner(params.signer) : getGlobalAdapter6().signer;
|
|
1253
|
-
const { transaction } = await (isEthFlowOrder ? getEthFlowCancellation(getEthFlowContract(signer, chainId,
|
|
1303
|
+
const { transaction } = await (isEthFlowOrder ? getEthFlowCancellation(getEthFlowContract(signer, chainId, { env, ethFlowContractOverride }), order) : getSettlementCancellation(getSettlementContract(chainId, signer, { env, settlementContractOverride }), order));
|
|
1254
1304
|
const txReceipt = await signer.sendTransaction(transaction);
|
|
1255
1305
|
return txReceipt.hash;
|
|
1256
1306
|
}
|
|
@@ -1273,12 +1323,9 @@ var TradingSdk = class {
|
|
|
1273
1323
|
* ```
|
|
1274
1324
|
*/
|
|
1275
1325
|
async getCowProtocolAllowance(params) {
|
|
1276
|
-
const
|
|
1277
|
-
if (!chainId) {
|
|
1278
|
-
throw new Error("Chain ID is missing in getCowProtocolAllowance() call");
|
|
1279
|
-
}
|
|
1326
|
+
const { env, chainId } = this.mergeParams(params);
|
|
1280
1327
|
const adapter = getGlobalAdapter6();
|
|
1281
|
-
const vaultRelayerAddress = COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId];
|
|
1328
|
+
const vaultRelayerAddress = params.vaultRelayerAddress ?? (env === "staging" ? COW_PROTOCOL_VAULT_RELAYER_ADDRESS_STAGING[chainId] : COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId]);
|
|
1282
1329
|
return await adapter.readContract({
|
|
1283
1330
|
address: params.tokenAddress,
|
|
1284
1331
|
abi: ERC20_ALLOWANCE_ABI,
|
|
@@ -1306,13 +1353,10 @@ var TradingSdk = class {
|
|
|
1306
1353
|
* ```
|
|
1307
1354
|
*/
|
|
1308
1355
|
async approveCowProtocol(params) {
|
|
1309
|
-
const
|
|
1310
|
-
if (!chainId) {
|
|
1311
|
-
throw new Error("Chain ID is missing in approveCowProtocol() call");
|
|
1312
|
-
}
|
|
1356
|
+
const { env, chainId, signer: signerLike } = this.mergeParams(params);
|
|
1313
1357
|
const adapter = getGlobalAdapter6();
|
|
1314
|
-
const signer = resolveSigner(
|
|
1315
|
-
const vaultRelayerAddress = COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId];
|
|
1358
|
+
const signer = resolveSigner(signerLike);
|
|
1359
|
+
const vaultRelayerAddress = params.vaultRelayerAddress ?? (env === "staging" ? COW_PROTOCOL_VAULT_RELAYER_ADDRESS_STAGING[chainId] : COW_PROTOCOL_VAULT_RELAYER_ADDRESS[chainId]);
|
|
1316
1360
|
const txParams = {
|
|
1317
1361
|
to: params.tokenAddress,
|
|
1318
1362
|
data: adapter.utils.encodeFunction(ERC20_APPROVE_ABI, "approve", [
|
|
@@ -1325,19 +1369,22 @@ var TradingSdk = class {
|
|
|
1325
1369
|
}
|
|
1326
1370
|
resolveOrderBookApi(params) {
|
|
1327
1371
|
const chainId = params.chainId ?? this.traderParams.chainId;
|
|
1328
|
-
const env = params.env ?? this.traderParams.env ?? "prod";
|
|
1372
|
+
const env = params.env ?? this.traderParams.env ?? this.options.orderBookApi?.context?.env ?? "prod";
|
|
1329
1373
|
if (!chainId) {
|
|
1330
1374
|
throw new Error("Chain ID is missing in getOrder() call");
|
|
1331
1375
|
}
|
|
1332
|
-
return resolveOrderBookApi(chainId, env);
|
|
1376
|
+
return resolveOrderBookApi(chainId, env, this.options.orderBookApi);
|
|
1333
1377
|
}
|
|
1334
1378
|
mergeParams(params) {
|
|
1335
|
-
const { chainId, signer, appCode, env } = params;
|
|
1379
|
+
const { chainId, signer, appCode, env, settlementContractOverride, ethFlowContractOverride } = params;
|
|
1380
|
+
const orderBookContext = this.options.orderBookApi?.context;
|
|
1336
1381
|
const traderParams = {
|
|
1337
|
-
chainId: chainId
|
|
1338
|
-
signer: signer
|
|
1339
|
-
appCode: appCode
|
|
1340
|
-
env: env
|
|
1382
|
+
chainId: chainId ?? this.traderParams.chainId ?? orderBookContext?.chainId,
|
|
1383
|
+
signer: signer ?? this.traderParams.signer ?? getGlobalAdapter6().signer,
|
|
1384
|
+
appCode: appCode ?? this.traderParams.appCode,
|
|
1385
|
+
env: env ?? this.traderParams.env ?? orderBookContext?.env,
|
|
1386
|
+
settlementContractOverride: settlementContractOverride ?? this.traderParams.settlementContractOverride,
|
|
1387
|
+
ethFlowContractOverride: ethFlowContractOverride ?? this.traderParams.ethFlowContractOverride
|
|
1341
1388
|
};
|
|
1342
1389
|
assertTraderParams(traderParams);
|
|
1343
1390
|
return {
|
|
@@ -1350,9 +1397,11 @@ var TradingSdk = class {
|
|
|
1350
1397
|
* Used by quote-only operations that don't need signing capability.
|
|
1351
1398
|
*/
|
|
1352
1399
|
mergeQuoterParams(params) {
|
|
1353
|
-
const chainId = params.chainId
|
|
1354
|
-
const appCode = params.appCode
|
|
1355
|
-
const env = params.env
|
|
1400
|
+
const chainId = params.chainId ?? this.traderParams.chainId;
|
|
1401
|
+
const appCode = params.appCode ?? this.traderParams.appCode;
|
|
1402
|
+
const env = params.env ?? this.traderParams.env ?? this.options.orderBookApi?.context?.env ?? "prod";
|
|
1403
|
+
const settlementContractOverride = params.settlementContractOverride ?? this.traderParams.settlementContractOverride;
|
|
1404
|
+
const ethFlowContractOverride = params.ethFlowContractOverride ?? this.traderParams.ethFlowContractOverride;
|
|
1356
1405
|
if (!chainId) {
|
|
1357
1406
|
throw new Error("Missing quoter parameters: chainId");
|
|
1358
1407
|
}
|
|
@@ -1363,7 +1412,9 @@ var TradingSdk = class {
|
|
|
1363
1412
|
...params,
|
|
1364
1413
|
chainId,
|
|
1365
1414
|
appCode,
|
|
1366
|
-
env
|
|
1415
|
+
env,
|
|
1416
|
+
settlementContractOverride,
|
|
1417
|
+
ethFlowContractOverride
|
|
1367
1418
|
};
|
|
1368
1419
|
}
|
|
1369
1420
|
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cowprotocol/sdk-trading",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "CowProtocol trading",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "https://github.com/cowprotocol/cow-sdk.git",
|
|
8
|
+
"directory": "packages/trading"
|
|
9
|
+
},
|
|
5
10
|
"main": "./dist/index.js",
|
|
6
11
|
"module": "./dist/index.mjs",
|
|
7
12
|
"types": "./dist/index.d.ts",
|
|
@@ -29,18 +34,18 @@
|
|
|
29
34
|
"ts-jest": "^29.0.0",
|
|
30
35
|
"tsx": "^4.19.4",
|
|
31
36
|
"@cow-sdk/typescript-config": "0.0.0-beta.0",
|
|
32
|
-
"@cowprotocol/sdk-ethers-v5-adapter": "0.3.
|
|
33
|
-
"@cowprotocol/sdk-ethers-v6-adapter": "0.3.
|
|
34
|
-
"@cowprotocol/sdk-viem-adapter": "0.3.
|
|
37
|
+
"@cowprotocol/sdk-ethers-v5-adapter": "0.3.13",
|
|
38
|
+
"@cowprotocol/sdk-ethers-v6-adapter": "0.3.13",
|
|
39
|
+
"@cowprotocol/sdk-viem-adapter": "0.3.13"
|
|
35
40
|
},
|
|
36
41
|
"dependencies": {
|
|
37
42
|
"deepmerge": "^4.3.1",
|
|
38
|
-
"@cowprotocol/sdk-common": "0.
|
|
39
|
-
"@cowprotocol/sdk-
|
|
40
|
-
"@cowprotocol/sdk-
|
|
41
|
-
"@cowprotocol/sdk-order-
|
|
42
|
-
"@cowprotocol/sdk-order-
|
|
43
|
-
"@cowprotocol/sdk-contracts-ts": "2.
|
|
43
|
+
"@cowprotocol/sdk-common": "0.8.1",
|
|
44
|
+
"@cowprotocol/sdk-app-data": "4.6.10",
|
|
45
|
+
"@cowprotocol/sdk-config": "1.1.1",
|
|
46
|
+
"@cowprotocol/sdk-order-signing": "0.2.1",
|
|
47
|
+
"@cowprotocol/sdk-order-book": "2.0.2",
|
|
48
|
+
"@cowprotocol/sdk-contracts-ts": "2.1.1"
|
|
44
49
|
},
|
|
45
50
|
"scripts": {
|
|
46
51
|
"build": "tsup src/index.ts --format esm,cjs --dts",
|