@eulerxyz/euler-v2-sdk 0.2.3-beta → 0.2.4-beta

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.
Files changed (106) hide show
  1. package/README.md +14 -11
  2. package/dist/src/entities/ERC4626Vault.d.ts +8 -0
  3. package/dist/src/entities/ERC4626Vault.d.ts.map +1 -1
  4. package/dist/src/entities/ERC4626Vault.js +4 -0
  5. package/dist/src/entities/ERC4626Vault.js.map +1 -1
  6. package/dist/src/entities/EVault.d.ts +6 -0
  7. package/dist/src/entities/EVault.d.ts.map +1 -1
  8. package/dist/src/entities/EVault.js +11 -0
  9. package/dist/src/entities/EVault.js.map +1 -1
  10. package/dist/src/entities/SecuritizeCollateralVault.d.ts +2 -0
  11. package/dist/src/entities/SecuritizeCollateralVault.d.ts.map +1 -1
  12. package/dist/src/entities/SecuritizeCollateralVault.js +4 -0
  13. package/dist/src/entities/SecuritizeCollateralVault.js.map +1 -1
  14. package/dist/src/index.d.ts +2 -0
  15. package/dist/src/index.d.ts.map +1 -1
  16. package/dist/src/index.js +2 -0
  17. package/dist/src/index.js.map +1 -1
  18. package/dist/src/sdk/buildSDK.d.ts +8 -0
  19. package/dist/src/sdk/buildSDK.d.ts.map +1 -1
  20. package/dist/src/sdk/buildSDK.js +309 -101
  21. package/dist/src/sdk/buildSDK.js.map +1 -1
  22. package/dist/src/sdk/config.d.ts +8 -2
  23. package/dist/src/sdk/config.d.ts.map +1 -1
  24. package/dist/src/sdk/config.js +6 -1
  25. package/dist/src/sdk/config.js.map +1 -1
  26. package/dist/src/sdk/sdk.d.ts +3 -0
  27. package/dist/src/sdk/sdk.d.ts.map +1 -1
  28. package/dist/src/sdk/sdk.js +2 -0
  29. package/dist/src/sdk/sdk.js.map +1 -1
  30. package/dist/src/services/accountService/accountServiceConfig.d.ts +2 -2
  31. package/dist/src/services/accountService/accountServiceConfig.d.ts.map +1 -1
  32. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.d.ts +199 -0
  33. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.d.ts.map +1 -0
  34. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.js +95 -0
  35. package/dist/src/services/executionService/abis/cowSwapWrapperAbi.js.map +1 -0
  36. package/dist/src/services/executionService/cowExecutor.d.ts +53 -0
  37. package/dist/src/services/executionService/cowExecutor.d.ts.map +1 -0
  38. package/dist/src/services/executionService/cowExecutor.js +390 -0
  39. package/dist/src/services/executionService/cowExecutor.js.map +1 -0
  40. package/dist/src/services/executionService/cowSwapHelpers.d.ts +254 -0
  41. package/dist/src/services/executionService/cowSwapHelpers.d.ts.map +1 -0
  42. package/dist/src/services/executionService/cowSwapHelpers.js +524 -0
  43. package/dist/src/services/executionService/cowSwapHelpers.js.map +1 -0
  44. package/dist/src/services/executionService/execute.d.ts +18 -3
  45. package/dist/src/services/executionService/execute.d.ts.map +1 -1
  46. package/dist/src/services/executionService/execute.js +9 -2
  47. package/dist/src/services/executionService/execute.js.map +1 -1
  48. package/dist/src/services/executionService/executionService.d.ts +53 -2
  49. package/dist/src/services/executionService/executionService.d.ts.map +1 -1
  50. package/dist/src/services/executionService/executionService.js +368 -15
  51. package/dist/src/services/executionService/executionService.js.map +1 -1
  52. package/dist/src/services/executionService/executionServiceTypes.d.ts +130 -3
  53. package/dist/src/services/executionService/executionServiceTypes.d.ts.map +1 -1
  54. package/dist/src/services/executionService/executionServiceTypes.js +13 -0
  55. package/dist/src/services/executionService/executionServiceTypes.js.map +1 -1
  56. package/dist/src/services/executionService/index.d.ts +5 -3
  57. package/dist/src/services/executionService/index.d.ts.map +1 -1
  58. package/dist/src/services/executionService/index.js +3 -2
  59. package/dist/src/services/executionService/index.js.map +1 -1
  60. package/dist/src/services/executionService/simulate.d.ts +1 -1
  61. package/dist/src/services/executionService/simulate.d.ts.map +1 -1
  62. package/dist/src/services/executionService/simulate.js +25 -9
  63. package/dist/src/services/executionService/simulate.js.map +1 -1
  64. package/dist/src/services/priceService/backendClient.d.ts +3 -1
  65. package/dist/src/services/priceService/backendClient.d.ts.map +1 -1
  66. package/dist/src/services/priceService/backendClient.js +30 -12
  67. package/dist/src/services/priceService/backendClient.js.map +1 -1
  68. package/dist/src/services/reulLockService/index.d.ts +3 -0
  69. package/dist/src/services/reulLockService/index.d.ts.map +1 -0
  70. package/dist/src/services/reulLockService/index.js +2 -0
  71. package/dist/src/services/reulLockService/index.js.map +1 -0
  72. package/dist/src/services/reulLockService/reulLockService.d.ts +82 -0
  73. package/dist/src/services/reulLockService/reulLockService.d.ts.map +1 -0
  74. package/dist/src/services/reulLockService/reulLockService.js +120 -0
  75. package/dist/src/services/reulLockService/reulLockService.js.map +1 -0
  76. package/dist/src/services/reulLockService/reulLockServiceTypes.d.ts +41 -0
  77. package/dist/src/services/reulLockService/reulLockServiceTypes.d.ts.map +1 -0
  78. package/dist/src/services/reulLockService/reulLockServiceTypes.js +2 -0
  79. package/dist/src/services/reulLockService/reulLockServiceTypes.js.map +1 -0
  80. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.d.ts.map +1 -1
  81. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js +93 -5
  82. package/dist/src/services/rewardsService/adapters/rewardsDirectAdapter/rewardsDirectAdapter.js.map +1 -1
  83. package/dist/src/services/rewardsService/rewardsService.d.ts +1 -7
  84. package/dist/src/services/rewardsService/rewardsService.d.ts.map +1 -1
  85. package/dist/src/services/rewardsService/rewardsService.js +5 -130
  86. package/dist/src/services/rewardsService/rewardsService.js.map +1 -1
  87. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts +13 -2
  88. package/dist/src/services/rewardsService/rewardsServiceTypes.d.ts.map +1 -1
  89. package/dist/src/services/swapService/index.d.ts +2 -2
  90. package/dist/src/services/swapService/index.d.ts.map +1 -1
  91. package/dist/src/services/swapService/index.js.map +1 -1
  92. package/dist/src/services/swapService/swapService.d.ts +15 -0
  93. package/dist/src/services/swapService/swapService.d.ts.map +1 -1
  94. package/dist/src/services/swapService/swapService.js +217 -7
  95. package/dist/src/services/swapService/swapService.js.map +1 -1
  96. package/dist/src/services/swapService/swapServiceTypes.d.ts +33 -0
  97. package/dist/src/services/swapService/swapServiceTypes.d.ts.map +1 -1
  98. package/dist/src/services/vaults/eVaultService/eVaultServiceConfig.d.ts +2 -2
  99. package/dist/src/services/vaults/eVaultService/eVaultServiceConfig.d.ts.map +1 -1
  100. package/dist/src/services/vaults/eulerEarnService/eulerEarnServiceConfig.d.ts +2 -2
  101. package/dist/src/services/vaults/eulerEarnService/eulerEarnServiceConfig.d.ts.map +1 -1
  102. package/dist/src/utils/fallbackAdapter.d.ts +69 -0
  103. package/dist/src/utils/fallbackAdapter.d.ts.map +1 -0
  104. package/dist/src/utils/fallbackAdapter.js +139 -0
  105. package/dist/src/utils/fallbackAdapter.js.map +1 -0
  106. package/package.json +1 -1
@@ -0,0 +1,390 @@
1
+ import { encodeFunctionData, erc20Abi, getAddress, } from "viem";
2
+ import { CLOSE_POSITION_WRAPPER_ABI, COLLATERAL_SWAP_WRAPPER_ABI, OPEN_POSITION_WRAPPER_ABI, } from "./abis/cowSwapWrapperAbi.js";
3
+ import { ethereumVaultConnectorAbi } from "./abis/ethereumVaultConnectorAbi.js";
4
+ import { buildClosePositionWrapperData, buildCollateralSwapWrapperData, buildCowSwapAppData, buildCowSwapOrderPayload, buildCowSwapOrderTypedData, buildEvcPermitTypedData, buildInboxSignature, buildOpenPositionWrapperData, computeNonceNamespace, encodeOrderDataForInbox, getCowSwapChainConfig, INBOX_DOMAIN_NAME, INBOX_DOMAIN_VERSION, normalizeCowSignature, submitCowSwapOrder, verifyInboxDomainSeparator, } from "./cowSwapHelpers.js";
5
+ import { isCowSwapPlanItem } from "./executionServiceTypes.js";
6
+ const ZERO_CODE = "0x";
7
+ function getEvcAddressPrefix(owner) {
8
+ return `0x${getAddress(owner).slice(2, 40)}`;
9
+ }
10
+ function toCowSwapTypedData(typedData) {
11
+ return typedData;
12
+ }
13
+ async function waitForSuccessfulReceipt(publicClient, hash) {
14
+ const receipt = await publicClient.waitForTransactionReceipt({ hash });
15
+ if (receipt.status && receipt.status !== "success") {
16
+ throw new Error(`Transaction ${hash} reverted`);
17
+ }
18
+ }
19
+ async function sendAndWait(args, request) {
20
+ const hash = await args.sendTransaction(request);
21
+ await waitForSuccessfulReceipt(args.providerService.getProvider(args.chainId), hash);
22
+ return hash;
23
+ }
24
+ async function safeApprove(args) {
25
+ if (args.amount <= 0n)
26
+ return [];
27
+ const provider = args.executionArgs.providerService.getProvider(args.executionArgs.chainId);
28
+ const allowance = (await provider.readContract({
29
+ address: args.token,
30
+ abi: erc20Abi,
31
+ functionName: "allowance",
32
+ args: [args.owner, args.spender],
33
+ }));
34
+ if (allowance >= args.amount)
35
+ return [];
36
+ const hashes = [];
37
+ if (allowance > 0n) {
38
+ hashes.push(await sendAndWait(args.executionArgs, {
39
+ to: args.token,
40
+ data: encodeFunctionData({
41
+ abi: erc20Abi,
42
+ functionName: "approve",
43
+ args: [args.spender, 0n],
44
+ }),
45
+ }));
46
+ }
47
+ hashes.push(await sendAndWait(args.executionArgs, {
48
+ to: args.token,
49
+ data: encodeFunctionData({
50
+ abi: erc20Abi,
51
+ functionName: "approve",
52
+ args: [args.spender, args.amount],
53
+ }),
54
+ }));
55
+ return hashes;
56
+ }
57
+ async function fetchNonceAndPermitData(args, wrapperAddress, wrapperAbi, wrapperParams) {
58
+ const provider = args.providerService.getProvider(args.chainId);
59
+ const evcAddress = args.deploymentService.getDeployment(args.chainId)
60
+ .addresses.coreAddrs.evc;
61
+ const nonceNamespace = computeNonceNamespace(wrapperAddress);
62
+ const addressPrefix = getEvcAddressPrefix(args.account);
63
+ const nonce = (await provider.readContract({
64
+ address: evcAddress,
65
+ abi: ethereumVaultConnectorAbi,
66
+ functionName: "getNonce",
67
+ args: [addressPrefix, nonceNamespace],
68
+ }));
69
+ const permitCalldata = (await provider.readContract({
70
+ address: wrapperAddress,
71
+ abi: wrapperAbi,
72
+ functionName: "encodePermitData",
73
+ args: [wrapperParams],
74
+ }));
75
+ return { nonce, nonceNamespace, permitCalldata, evcAddress };
76
+ }
77
+ async function signEvcPermit(args, params) {
78
+ const typedData = buildEvcPermitTypedData({
79
+ chainId: args.chainId,
80
+ evcAddress: params.evcAddress,
81
+ signer: args.account,
82
+ sender: params.wrapperAddress,
83
+ nonceNamespace: params.nonceNamespace,
84
+ nonce: params.nonce,
85
+ deadline: params.deadline,
86
+ data: params.permitCalldata,
87
+ });
88
+ return args.signTypedData(toCowSwapTypedData(typedData));
89
+ }
90
+ async function waitForNextBlock(provider, timeoutMs = 30_000) {
91
+ if (!provider.getBlockNumber)
92
+ return;
93
+ const startBlock = await provider.getBlockNumber();
94
+ const deadline = Date.now() + timeoutMs;
95
+ while (Date.now() < deadline) {
96
+ await new Promise((resolve) => setTimeout(resolve, 1_000));
97
+ if ((await provider.getBlockNumber()) > startBlock)
98
+ return;
99
+ }
100
+ }
101
+ async function executeOpenPosition(args, item, emit) {
102
+ const params = item.params;
103
+ const config = getCowSwapChainConfig(args.chainId);
104
+ if (!config)
105
+ throw new Error(`CoW Swap not supported on chain ${args.chainId}`);
106
+ const hashes = [];
107
+ emit("approval");
108
+ hashes.push(...(await safeApprove({
109
+ executionArgs: args,
110
+ token: params.collateralToken,
111
+ spender: params.wrapper.collateralVault,
112
+ amount: params.wrapper.collateralAmount,
113
+ owner: args.account,
114
+ })), ...(await safeApprove({
115
+ executionArgs: args,
116
+ token: params.sellToken,
117
+ spender: config.vaultRelayer,
118
+ amount: params.sellAmount,
119
+ owner: args.account,
120
+ })));
121
+ const wrapperAddress = config.openPositionWrapper;
122
+ const wrapperParams = {
123
+ ...params.wrapper,
124
+ deadline: BigInt(params.wrapper.deadline),
125
+ };
126
+ emit("signPermit");
127
+ const nonceData = await fetchNonceAndPermitData(args, wrapperAddress, OPEN_POSITION_WRAPPER_ABI, wrapperParams);
128
+ const permitSignature = await signEvcPermit(args, {
129
+ ...nonceData,
130
+ wrapperAddress,
131
+ deadline: params.wrapper.deadline,
132
+ });
133
+ emit("signOrder");
134
+ const wrapperData = buildOpenPositionWrapperData(params.wrapper, permitSignature);
135
+ const { appDataString, appDataHash } = buildCowSwapAppData(wrapperData, wrapperAddress, params.slippageBips);
136
+ const orderTypedData = buildCowSwapOrderTypedData({
137
+ chainId: args.chainId,
138
+ settlementContract: config.settlementContract,
139
+ sellToken: params.sellToken,
140
+ buyToken: params.buyToken,
141
+ receiver: params.wrapper.account,
142
+ sellAmount: params.sellAmount,
143
+ buyAmount: params.buyAmount,
144
+ validTo: params.validTo,
145
+ appDataHash,
146
+ });
147
+ const orderSignature = normalizeCowSignature(await args.signTypedData(toCowSwapTypedData(orderTypedData)));
148
+ const payload = buildCowSwapOrderPayload(orderTypedData, orderSignature, args.account, appDataString, appDataHash, { quoteId: params.quoteId });
149
+ emit("submitOrder");
150
+ const orderUid = await submitCowSwapOrder(payload, config.orderbookUrl);
151
+ return { item, orderUid, hashes };
152
+ }
153
+ async function executeCancelClosePosition(args, item, emit) {
154
+ const config = getCowSwapChainConfig(args.chainId);
155
+ if (!config)
156
+ throw new Error(`CoW Swap not supported on chain ${args.chainId}`);
157
+ const params = item.params;
158
+ const evcAddress = args.deploymentService.getDeployment(args.chainId)
159
+ .addresses.coreAddrs.evc;
160
+ const wrapperAddress = params.wrapperAddress ?? config.closePositionWrapper;
161
+ const nonceNamespace = params.nonceNamespace ?? computeNonceNamespace(wrapperAddress);
162
+ const addressPrefix = getEvcAddressPrefix(params.owner);
163
+ const provider = args.providerService.getProvider(args.chainId);
164
+ const currentNonce = (await provider.readContract({
165
+ address: evcAddress,
166
+ abi: ethereumVaultConnectorAbi,
167
+ functionName: "getNonce",
168
+ args: [addressPrefix, nonceNamespace],
169
+ }));
170
+ const permitCancellation = {
171
+ type: "evcPermitNonce",
172
+ chainId: args.chainId,
173
+ owner: params.owner,
174
+ evcAddress,
175
+ addressPrefix,
176
+ nonceNamespace,
177
+ nonce: params.nonce,
178
+ nextNonce: params.nonce + 1n,
179
+ wrapperAddress,
180
+ };
181
+ if (currentNonce > params.nonce) {
182
+ return { item, hashes: [], permitCancellation };
183
+ }
184
+ emit("cancelPermit");
185
+ const hash = await sendAndWait(args, {
186
+ to: evcAddress,
187
+ data: encodeFunctionData({
188
+ abi: ethereumVaultConnectorAbi,
189
+ functionName: "setNonce",
190
+ args: [addressPrefix, nonceNamespace, params.nonce + 1n],
191
+ }),
192
+ });
193
+ emit("cancelPermit", hash);
194
+ return { item, hashes: [hash], permitCancellation };
195
+ }
196
+ async function executeCollateralSwap(args, item, emit) {
197
+ const params = item.params;
198
+ const config = getCowSwapChainConfig(args.chainId);
199
+ if (!config)
200
+ throw new Error(`CoW Swap not supported on chain ${args.chainId}`);
201
+ const hashes = [];
202
+ emit("approval");
203
+ hashes.push(...(await safeApprove({
204
+ executionArgs: args,
205
+ token: params.sellToken,
206
+ spender: config.vaultRelayer,
207
+ amount: params.sellAmount,
208
+ owner: args.account,
209
+ })));
210
+ const wrapperAddress = config.collateralSwapWrapper;
211
+ const wrapperParams = {
212
+ ...params.wrapper,
213
+ deadline: BigInt(params.wrapper.deadline),
214
+ };
215
+ emit("signPermit");
216
+ const nonceData = await fetchNonceAndPermitData(args, wrapperAddress, COLLATERAL_SWAP_WRAPPER_ABI, wrapperParams);
217
+ const permitSignature = await signEvcPermit(args, {
218
+ ...nonceData,
219
+ wrapperAddress,
220
+ deadline: params.wrapper.deadline,
221
+ });
222
+ emit("signOrder");
223
+ const wrapperData = buildCollateralSwapWrapperData(params.wrapper, permitSignature);
224
+ const { appDataString, appDataHash } = buildCowSwapAppData(wrapperData, wrapperAddress, params.slippageBips, "euler_position_collateral_swap");
225
+ const orderTypedData = buildCowSwapOrderTypedData({
226
+ chainId: args.chainId,
227
+ settlementContract: config.settlementContract,
228
+ sellToken: params.sellToken,
229
+ buyToken: params.buyToken,
230
+ receiver: params.wrapper.account,
231
+ sellAmount: params.sellAmount,
232
+ buyAmount: params.buyAmount,
233
+ validTo: params.validTo,
234
+ appDataHash,
235
+ kind: "sell",
236
+ });
237
+ const orderSignature = normalizeCowSignature(await args.signTypedData(toCowSwapTypedData(orderTypedData)));
238
+ const payload = buildCowSwapOrderPayload(orderTypedData, orderSignature, args.account, appDataString, appDataHash, { quoteId: params.quoteId });
239
+ emit("submitOrder");
240
+ const orderUid = await submitCowSwapOrder(payload, config.orderbookUrl);
241
+ return { item, orderUid, hashes };
242
+ }
243
+ async function executeClosePosition(args, item, emit) {
244
+ const params = item.params;
245
+ const config = getCowSwapChainConfig(args.chainId);
246
+ if (!config)
247
+ throw new Error(`CoW Swap not supported on chain ${args.chainId}`);
248
+ const provider = args.providerService.getProvider(args.chainId);
249
+ const hashes = [];
250
+ const wrapperAddress = config.closePositionWrapper;
251
+ emit("prepareInbox");
252
+ const [inboxAddress, inboxDomainSeparator] = (await provider.readContract({
253
+ address: wrapperAddress,
254
+ abi: CLOSE_POSITION_WRAPPER_ABI,
255
+ functionName: "getInboxAddressAndDomainSeparator",
256
+ args: [params.wrapper.owner, params.wrapper.account],
257
+ }));
258
+ verifyInboxDomainSeparator(inboxAddress, args.chainId, inboxDomainSeparator);
259
+ const inboxCode = provider.getCode
260
+ ? await provider.getCode({ address: inboxAddress })
261
+ : undefined;
262
+ if (!inboxCode || inboxCode === ZERO_CODE) {
263
+ const hash = await sendAndWait(args, {
264
+ to: wrapperAddress,
265
+ data: encodeFunctionData({
266
+ abi: CLOSE_POSITION_WRAPPER_ABI,
267
+ functionName: "getInbox",
268
+ args: [params.wrapper.owner, params.wrapper.account],
269
+ }),
270
+ });
271
+ hashes.push(hash);
272
+ emit("prepareInbox", hash);
273
+ await waitForNextBlock(provider);
274
+ }
275
+ const wrapperParams = {
276
+ ...params.wrapper,
277
+ deadline: BigInt(params.wrapper.deadline),
278
+ };
279
+ emit("signPermit");
280
+ const nonceData = await fetchNonceAndPermitData(args, wrapperAddress, CLOSE_POSITION_WRAPPER_ABI, wrapperParams);
281
+ const permitSignature = await signEvcPermit(args, {
282
+ ...nonceData,
283
+ wrapperAddress,
284
+ deadline: params.wrapper.deadline,
285
+ });
286
+ emit("signOrder");
287
+ const wrapperData = buildClosePositionWrapperData(params.wrapper, permitSignature);
288
+ const { appDataString, appDataHash } = buildCowSwapAppData(wrapperData, wrapperAddress, params.slippageBips, "euler_position_close");
289
+ const orderTypedData = buildCowSwapOrderTypedData({
290
+ chainId: args.chainId,
291
+ settlementContract: config.settlementContract,
292
+ sellToken: params.sellToken,
293
+ buyToken: params.buyToken,
294
+ receiver: inboxAddress,
295
+ sellAmount: params.sellAmount,
296
+ buyAmount: params.buyAmount,
297
+ validTo: params.validTo,
298
+ appDataHash,
299
+ kind: params.orderKind,
300
+ domainName: INBOX_DOMAIN_NAME,
301
+ domainVersion: INBOX_DOMAIN_VERSION,
302
+ verifyingContract: inboxAddress,
303
+ });
304
+ const ecdsaSignature = normalizeCowSignature(await args.signTypedData(toCowSwapTypedData(orderTypedData)));
305
+ const orderEncodeData = encodeOrderDataForInbox({
306
+ sellToken: params.sellToken,
307
+ buyToken: params.buyToken,
308
+ receiver: inboxAddress,
309
+ sellAmount: params.sellAmount,
310
+ buyAmount: params.buyAmount,
311
+ validTo: params.validTo,
312
+ appData: appDataHash,
313
+ feeAmount: 0n,
314
+ kind: params.orderKind,
315
+ partiallyFillable: false,
316
+ sellTokenBalance: "erc20",
317
+ buyTokenBalance: "erc20",
318
+ });
319
+ const inboxSignature = buildInboxSignature(ecdsaSignature, orderEncodeData);
320
+ const payload = buildCowSwapOrderPayload(orderTypedData, inboxSignature, inboxAddress, appDataString, appDataHash, { signingScheme: "eip1271", quoteId: params.quoteId });
321
+ emit("submitOrder");
322
+ const orderUid = await submitCowSwapOrder(payload, config.orderbookUrl);
323
+ return {
324
+ item,
325
+ orderUid,
326
+ hashes,
327
+ permitCancellation: {
328
+ type: "evcPermitNonce",
329
+ chainId: args.chainId,
330
+ owner: args.account,
331
+ evcAddress: nonceData.evcAddress,
332
+ addressPrefix: getEvcAddressPrefix(args.account),
333
+ nonceNamespace: nonceData.nonceNamespace,
334
+ nonce: nonceData.nonce,
335
+ nextNonce: nonceData.nonce + 1n,
336
+ wrapperAddress,
337
+ },
338
+ };
339
+ }
340
+ async function executeCowSwapPlanItem(args, item, emit) {
341
+ if (item.kind === "openPosition") {
342
+ return executeOpenPosition(args, item, emit);
343
+ }
344
+ if (item.kind === "swapCollateral") {
345
+ return executeCollateralSwap(args, item, emit);
346
+ }
347
+ if (item.kind === "closePosition") {
348
+ return executeClosePosition(args, item, emit);
349
+ }
350
+ if (item.kind === "cancelClosePosition") {
351
+ return executeCancelClosePosition(args, item, emit);
352
+ }
353
+ throw new Error(`Unsupported CoW swap plan kind: ${item.kind}`);
354
+ }
355
+ export async function executeCowSwapTransactionPlan(args) {
356
+ const unsupportedItem = args.plan.find((item) => !isCowSwapPlanItem(item));
357
+ if (unsupportedItem) {
358
+ throw new Error(`executeCowSwapTransactionPlan only supports CoW swap plan items. Received ${unsupportedItem.type}.`);
359
+ }
360
+ const cowSwapItems = args.plan.filter(isCowSwapPlanItem);
361
+ const orderUids = [];
362
+ const hashes = [];
363
+ const results = [];
364
+ let completed = 0;
365
+ const emitProgress = (item, status, hash, orderUid) => {
366
+ args.onProgress?.({
367
+ completed,
368
+ total: args.plan.length,
369
+ item,
370
+ status,
371
+ hash,
372
+ orderUid,
373
+ });
374
+ };
375
+ for (const item of cowSwapItems) {
376
+ if (item.chainId !== args.chainId) {
377
+ throw new Error(`CoW swap plan item targets chain ${item.chainId}, but executor is configured for chain ${args.chainId}`);
378
+ }
379
+ const result = await executeCowSwapPlanItem(args, item, (status, hash, orderUid) => emitProgress(item, status, hash, orderUid));
380
+ results.push(result);
381
+ if (result.orderUid)
382
+ orderUids.push(result.orderUid);
383
+ if (result.hashes)
384
+ hashes.push(...result.hashes);
385
+ completed += 1;
386
+ emitProgress(item, "completed", undefined, result.orderUid);
387
+ }
388
+ return { plan: args.plan, orderUids, hashes, results };
389
+ }
390
+ //# sourceMappingURL=cowExecutor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cowExecutor.js","sourceRoot":"","sources":["../../../../src/services/executionService/cowExecutor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,254 @@
1
+ import { type Address, type Hex } from "viem";
2
+ import type { CowSwapClosePositionPlanParams, CowSwapCollateralSwapPlanParams, CowSwapOpenPositionPlanParams } from "./executionServiceTypes.js";
3
+ export declare const COWSWAP_APPDATA_VERSION = "0.9.0";
4
+ export declare const COWSWAP_ORDER_POLL_INTERVAL_MS = 3000;
5
+ export declare const COWSWAP_ORDER_POLL_MAX_DURATION_MS: number;
6
+ export declare const INBOX_DOMAIN_NAME = "Inbox";
7
+ export declare const INBOX_DOMAIN_VERSION = "1";
8
+ export type CowSwapOrderKind = "sell" | "buy";
9
+ export type CowSwapOrderSigningScheme = "eip712" | "eip1271" | "ethsign" | "presign";
10
+ export type CowSwapTokenBalance = "erc20" | "internal" | "external";
11
+ export type CowSwapOrderUid = string;
12
+ export type CowSwapTypedDataRequest = {
13
+ domain: Record<string, unknown>;
14
+ types: Record<string, unknown>;
15
+ primaryType: string;
16
+ message: Record<string, unknown>;
17
+ };
18
+ export type CowSwapCompetitionOrderStatusType = "open" | "scheduled" | "active" | "solved" | "executing" | "traded" | "cancelled";
19
+ export type CowSwapLifecycleOrderStatusType = "presignaturePending" | "open" | "fulfilled" | "cancelled" | "expired";
20
+ export type CowSwapOrderStatusType = CowSwapCompetitionOrderStatusType | CowSwapLifecycleOrderStatusType | "unknown";
21
+ export type CowSwapTerminalOrderStatus = "traded" | "fulfilled" | "cancelled" | "expired";
22
+ export type CowSwapOrderStatus = {
23
+ type: CowSwapOrderStatusType;
24
+ competitionType?: CowSwapCompetitionOrderStatusType;
25
+ orderType?: CowSwapLifecycleOrderStatusType;
26
+ terminal: boolean;
27
+ };
28
+ export type CowSwapOrderPayload = {
29
+ sellToken: Address;
30
+ buyToken: Address;
31
+ from: Address;
32
+ receiver: Address;
33
+ sellAmount: string;
34
+ buyAmount: string;
35
+ feeAmount: string;
36
+ kind: CowSwapOrderKind;
37
+ partiallyFillable: boolean;
38
+ validTo: number;
39
+ sellTokenBalance: CowSwapTokenBalance;
40
+ buyTokenBalance: CowSwapTokenBalance;
41
+ signature: string;
42
+ signingScheme: CowSwapOrderSigningScheme;
43
+ onchainOrder: boolean;
44
+ appData: string;
45
+ appDataHash: Hex;
46
+ quoteId?: number;
47
+ };
48
+ export type CowSwapChainConfig = {
49
+ orderbookUrl: string;
50
+ settlementContract: Address;
51
+ vaultRelayer: Address;
52
+ openPositionWrapper: Address;
53
+ closePositionWrapper: Address;
54
+ collateralSwapWrapper: Address;
55
+ };
56
+ export declare const COWSWAP_CHAIN_CONFIG: Record<number, CowSwapChainConfig>;
57
+ export declare function getCowSwapChainConfig(chainId: number): CowSwapChainConfig | undefined;
58
+ export declare function getCowSwapOrderExplorerUrl(orderUid: CowSwapOrderUid): string;
59
+ export declare function computeNonceNamespace(sender: Address): bigint;
60
+ export declare function buildEvcPermitTypedData(params: {
61
+ chainId: number;
62
+ evcAddress: Address;
63
+ signer: Address;
64
+ sender: Address;
65
+ nonceNamespace: bigint;
66
+ nonce: bigint;
67
+ deadline: number;
68
+ value?: bigint;
69
+ data: Hex;
70
+ }): {
71
+ domain: {
72
+ name: string;
73
+ chainId: bigint;
74
+ verifyingContract: `0x${string}`;
75
+ };
76
+ types: {
77
+ readonly Permit: readonly [{
78
+ readonly name: "signer";
79
+ readonly type: "address";
80
+ }, {
81
+ readonly name: "sender";
82
+ readonly type: "address";
83
+ }, {
84
+ readonly name: "nonceNamespace";
85
+ readonly type: "uint256";
86
+ }, {
87
+ readonly name: "nonce";
88
+ readonly type: "uint256";
89
+ }, {
90
+ readonly name: "deadline";
91
+ readonly type: "uint256";
92
+ }, {
93
+ readonly name: "value";
94
+ readonly type: "uint256";
95
+ }, {
96
+ readonly name: "data";
97
+ readonly type: "bytes";
98
+ }];
99
+ };
100
+ primaryType: "Permit";
101
+ message: {
102
+ signer: `0x${string}`;
103
+ sender: `0x${string}`;
104
+ nonceNamespace: bigint;
105
+ nonce: bigint;
106
+ deadline: bigint;
107
+ value: bigint;
108
+ data: `0x${string}`;
109
+ };
110
+ };
111
+ export declare function buildOpenPositionWrapperData(params: CowSwapOpenPositionPlanParams["wrapper"], permitSignature: Hex): Hex;
112
+ export declare function buildCollateralSwapWrapperData(params: CowSwapCollateralSwapPlanParams["wrapper"], permitSignature: Hex): Hex;
113
+ export declare function buildClosePositionWrapperData(params: CowSwapClosePositionPlanParams["wrapper"], permitSignature: Hex): Hex;
114
+ export declare function buildCowSwapAppData(wrapperData: Hex, wrapperAddress: Address, slippageBips: number, appCode?: string): {
115
+ appDataString: string;
116
+ appDataHash: Hex;
117
+ };
118
+ export declare function buildOpenPositionQuoteAppData(params: CowSwapOpenPositionPlanParams["wrapper"], wrapperAddress: Address, slippageBips: number): string;
119
+ export declare function buildCollateralSwapQuoteAppData(params: CowSwapCollateralSwapPlanParams["wrapper"], wrapperAddress: Address, slippageBips: number): string;
120
+ export declare function buildClosePositionQuoteAppData(params: CowSwapClosePositionPlanParams["wrapper"], wrapperAddress: Address, slippageBips: number): string;
121
+ export declare function buildCowSwapOrderTypedData(params: {
122
+ chainId: number;
123
+ settlementContract: Address;
124
+ sellToken: Address;
125
+ buyToken: Address;
126
+ receiver: Address;
127
+ sellAmount: bigint;
128
+ buyAmount: bigint;
129
+ validTo: number;
130
+ appDataHash: Hex;
131
+ kind?: CowSwapOrderKind;
132
+ domainName?: string;
133
+ domainVersion?: string;
134
+ verifyingContract?: Address;
135
+ }): {
136
+ domain: {
137
+ name: string;
138
+ version: string;
139
+ chainId: bigint;
140
+ verifyingContract: `0x${string}`;
141
+ };
142
+ types: {
143
+ readonly Order: readonly [{
144
+ readonly name: "sellToken";
145
+ readonly type: "address";
146
+ }, {
147
+ readonly name: "buyToken";
148
+ readonly type: "address";
149
+ }, {
150
+ readonly name: "receiver";
151
+ readonly type: "address";
152
+ }, {
153
+ readonly name: "sellAmount";
154
+ readonly type: "uint256";
155
+ }, {
156
+ readonly name: "buyAmount";
157
+ readonly type: "uint256";
158
+ }, {
159
+ readonly name: "validTo";
160
+ readonly type: "uint32";
161
+ }, {
162
+ readonly name: "appData";
163
+ readonly type: "bytes32";
164
+ }, {
165
+ readonly name: "feeAmount";
166
+ readonly type: "uint256";
167
+ }, {
168
+ readonly name: "kind";
169
+ readonly type: "string";
170
+ }, {
171
+ readonly name: "partiallyFillable";
172
+ readonly type: "bool";
173
+ }, {
174
+ readonly name: "sellTokenBalance";
175
+ readonly type: "string";
176
+ }, {
177
+ readonly name: "buyTokenBalance";
178
+ readonly type: "string";
179
+ }];
180
+ };
181
+ primaryType: "Order";
182
+ message: {
183
+ readonly sellToken: `0x${string}`;
184
+ readonly buyToken: `0x${string}`;
185
+ readonly receiver: `0x${string}`;
186
+ readonly sellAmount: bigint;
187
+ readonly buyAmount: bigint;
188
+ readonly validTo: number;
189
+ readonly appData: `0x${string}`;
190
+ readonly feeAmount: 0n;
191
+ readonly kind: CowSwapOrderKind;
192
+ readonly partiallyFillable: false;
193
+ readonly sellTokenBalance: "erc20";
194
+ readonly buyTokenBalance: "erc20";
195
+ };
196
+ };
197
+ export declare function buildCowSwapOrderPayload(typedData: ReturnType<typeof buildCowSwapOrderTypedData>, signature: string, from: Address, appDataString: string, appDataHash: Hex, options?: {
198
+ signingScheme?: CowSwapOrderSigningScheme;
199
+ quoteId?: number;
200
+ }): CowSwapOrderPayload;
201
+ export declare function buildCowSwapCancelOrderTypedData(params: {
202
+ orderUid: CowSwapOrderUid;
203
+ chainId: number;
204
+ settlementContract?: Address;
205
+ }): CowSwapTypedDataRequest;
206
+ export declare function normalizeCowSignature(signature: Hex): Hex;
207
+ export declare function encodeOrderDataForInbox(order: {
208
+ sellToken: Address;
209
+ buyToken: Address;
210
+ receiver: Address;
211
+ sellAmount: bigint;
212
+ buyAmount: bigint;
213
+ validTo: number;
214
+ appData: Hex;
215
+ feeAmount: bigint;
216
+ kind: CowSwapOrderKind;
217
+ partiallyFillable: boolean;
218
+ sellTokenBalance: string;
219
+ buyTokenBalance: string;
220
+ }): Hex;
221
+ export declare function buildInboxSignature(ecdsaSignature: Hex, orderEncodeData: Hex): Hex;
222
+ export declare function verifyInboxDomainSeparator(inboxAddress: Address, chainId: number, expectedDomainSep: Hex): void;
223
+ export declare function submitCowSwapOrder(payload: CowSwapOrderPayload, orderbookUrl: string): Promise<CowSwapOrderUid>;
224
+ export declare function resolveCowSwapOrderStatusType(params: {
225
+ competitionType?: CowSwapCompetitionOrderStatusType;
226
+ orderType?: CowSwapLifecycleOrderStatusType;
227
+ }): CowSwapOrderStatusType;
228
+ export declare function isCowSwapTerminalOrderStatus(type?: CowSwapOrderStatusType): type is CowSwapTerminalOrderStatus;
229
+ type CowSwapOrderbookArgs = {
230
+ chainId?: number;
231
+ orderbookUrl?: string;
232
+ };
233
+ export type FetchCowSwapOrderStatusArgs = CowSwapOrderbookArgs & {
234
+ orderUid: CowSwapOrderUid;
235
+ signal?: AbortSignal;
236
+ };
237
+ export declare function fetchCowSwapOrderStatus(args: FetchCowSwapOrderStatusArgs): Promise<CowSwapOrderStatus>;
238
+ export type PollCowSwapOrderStatusArgs = FetchCowSwapOrderStatusArgs & {
239
+ intervalMs?: number;
240
+ timeoutMs?: number;
241
+ onStatus?: (status: CowSwapOrderStatus) => void;
242
+ };
243
+ export declare function pollCowSwapOrderStatus(args: PollCowSwapOrderStatusArgs): Promise<CowSwapOrderStatus>;
244
+ export declare function formatCowSwapExecutionErrorMessage(error: Error): string;
245
+ export type CancelCowSwapOrderArgs = CowSwapOrderbookArgs & {
246
+ orderUid: CowSwapOrderUid;
247
+ chainId: number;
248
+ settlementContract?: Address;
249
+ signTypedData: (parameters: CowSwapTypedDataRequest) => Promise<Hex>;
250
+ signal?: AbortSignal;
251
+ };
252
+ export declare function cancelCowSwapOrder(args: CancelCowSwapOrderArgs): Promise<void>;
253
+ export {};
254
+ //# sourceMappingURL=cowSwapHelpers.d.ts.map