@velora-dex/sdk 9.4.0 → 9.4.1-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/index.d.ts +11 -5
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/methods/delta/buildTWAPDeltaOrder.d.ts +65 -0
  4. package/dist/methods/delta/buildTWAPDeltaOrder.d.ts.map +1 -0
  5. package/dist/methods/delta/helpers/buildTWAPOrderData.d.ts +74 -0
  6. package/dist/methods/delta/helpers/buildTWAPOrderData.d.ts.map +1 -0
  7. package/dist/methods/delta/helpers/misc.d.ts +8 -0
  8. package/dist/methods/delta/helpers/misc.d.ts.map +1 -1
  9. package/dist/methods/delta/helpers/types.d.ts +43 -2
  10. package/dist/methods/delta/helpers/types.d.ts.map +1 -1
  11. package/dist/methods/delta/index.d.ts +16 -1
  12. package/dist/methods/delta/index.d.ts.map +1 -1
  13. package/dist/methods/delta/postTWAPDeltaOrder.d.ts +16 -0
  14. package/dist/methods/delta/postTWAPDeltaOrder.d.ts.map +1 -0
  15. package/dist/methods/delta/preSignTWAPDeltaOrder.d.ts +20 -0
  16. package/dist/methods/delta/preSignTWAPDeltaOrder.d.ts.map +1 -0
  17. package/dist/methods/delta/signTWAPDeltaOrder.d.ts +9 -0
  18. package/dist/methods/delta/signTWAPDeltaOrder.d.ts.map +1 -0
  19. package/dist/sdk/partial.d.ts +3 -1
  20. package/dist/sdk/partial.d.ts.map +1 -1
  21. package/dist/sdk.cjs.development.js +623 -35
  22. package/dist/sdk.cjs.development.js.map +1 -1
  23. package/dist/sdk.cjs.production.min.js +1 -1
  24. package/dist/sdk.cjs.production.min.js.map +1 -1
  25. package/dist/sdk.esm.js +619 -36
  26. package/dist/sdk.esm.js.map +1 -1
  27. package/package.json +1 -1
  28. package/src/constants.js +1 -6
  29. package/src/index.js +68 -125
  30. package/src/index.ts +63 -0
  31. package/src/methods/delta/buildTWAPDeltaOrder.ts +187 -0
  32. package/src/methods/delta/helpers/buildTWAPOrderData.ts +227 -0
  33. package/src/methods/delta/helpers/misc.ts +35 -1
  34. package/src/methods/delta/helpers/types.ts +52 -2
  35. package/src/methods/delta/index.ts +78 -1
  36. package/src/methods/delta/postTWAPDeltaOrder.ts +57 -0
  37. package/src/methods/delta/preSignTWAPDeltaOrder.ts +168 -0
  38. package/src/methods/delta/signTWAPDeltaOrder.ts +32 -0
  39. package/src/sdk/partial.ts +3 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@velora-dex/sdk",
3
- "version": "9.4.0",
3
+ "version": "9.4.1-dev.2",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/sdk.esm.js",
6
6
  "typings": "dist/index.d.ts",
package/src/constants.js CHANGED
@@ -1,8 +1,3 @@
1
- export {
2
- SwapSide,
3
- ContractMethod,
4
- ContractMethodV5,
5
- ContractMethodV6,
6
- } from '@paraswap/core';
1
+ export { SwapSide, ContractMethod, ContractMethodV5, ContractMethodV6, } from '@paraswap/core';
7
2
  export const API_URL = 'https://api.paraswap.io';
8
3
  export const DEFAULT_VERSION = '6.2';
package/src/index.js CHANGED
@@ -1,138 +1,81 @@
1
- import { constructApproveToken } from './methods/swap/approve';
2
- import { constructGetBalances, isAllowance } from './methods/swap/balance';
3
- import { constructGetSpender } from './methods/swap/spender';
4
- import { constructGetAdapters } from './methods/swap/adapters';
5
- import { constructGetRate } from './methods/swap/rates';
1
+ import { constructApproveToken, } from './methods/swap/approve';
2
+ import { constructGetBalances, isAllowance, } from './methods/swap/balance';
3
+ import { constructGetSpender, } from './methods/swap/spender';
4
+ import { constructGetAdapters, } from './methods/swap/adapters';
5
+ import { constructGetRate, } from './methods/swap/rates';
6
6
  import { constructSwapTx } from './methods/swap/swapTx';
7
7
  import { constructGetTokens } from './methods/swap/token';
8
8
  import { constructBuildTx } from './methods/swap/transaction';
9
- import { constructBuildLimitOrder } from './methods/limitOrders/buildOrder';
10
- import { constructSignLimitOrder } from './methods/limitOrders/signOrder';
11
- import { constructCancelLimitOrder } from './methods/limitOrders/cancelOrder';
12
- import { constructFillOrderDirectly } from './methods/limitOrders/fillOrderDirectly';
13
- import { constructGetLimitOrders } from './methods/limitOrders/getOrders';
14
- import { constructPostLimitOrder } from './methods/limitOrders/postOrder';
15
- import { constructApproveTokenForLimitOrder } from './methods/limitOrders/approveForOrder';
16
- import { constructGetLimitOrdersContract } from './methods/limitOrders/getOrdersContract';
17
- import { constructBuildLimitOrderTx } from './methods/limitOrders/transaction';
18
- import { constructBuildNFTOrder } from './methods/nftOrders/buildOrder';
19
- import { constructSignNFTOrder } from './methods/nftOrders/signOrder';
20
- import { constructCancelNFTOrder } from './methods/nftOrders/cancelOrder';
21
- import { constructGetNFTOrders } from './methods/nftOrders/getOrders';
22
- import { constructPostNFTOrder } from './methods/nftOrders/postOrder';
23
- import { constructApproveTokenForNFTOrder } from './methods/nftOrders/approveForOrder';
24
- import { constructGetNFTOrdersContract } from './methods/nftOrders/getOrdersContract';
25
- import { constructBuildNFTOrderTx } from './methods/nftOrders/transaction';
26
- import {
27
- constructEthersContractCaller,
28
- constructEthersV5ContractCaller,
29
- constructEthersV6ContractCaller,
30
- constructWeb3ContractCaller,
31
- constructViemContractCaller,
32
- txParamsToViemTxParams,
33
- constructAxiosFetcher,
34
- constructFetchFetcher,
35
- isFetcherError,
36
- constructToken,
37
- } from './helpers';
38
- import { constructBuildDeltaOrder } from './methods/delta/buildDeltaOrder';
39
- import { constructPostDeltaOrder } from './methods/delta/postDeltaOrder';
40
- import { constructSignDeltaOrder } from './methods/delta/signDeltaOrder';
41
- import { constructPreSignDeltaOrder } from './methods/delta/preSignDeltaOrder';
42
- import { constructGetDeltaContract } from './methods/delta/getDeltaContract';
43
- import { constructGetDeltaPrice } from './methods/delta/getDeltaPrice';
44
- import { constructGetDeltaOrders } from './methods/delta/getDeltaOrders';
45
- import { constructApproveTokenForDelta } from './methods/delta/approveForDelta';
46
- import { constructGetPartnerFee } from './methods/delta/getPartnerFee';
47
- import { constructGetBridgeInfo } from './methods/delta/getBridgeInfo';
48
- import { constructIsTokenSupportedInDelta } from './methods/delta/isTokenSupportedInDelta';
49
- import { constructBuildExternalDeltaOrder } from './methods/delta/buildExternalDeltaOrder';
50
- import { constructSignExternalDeltaOrder } from './methods/delta/signExternalDeltaOrder';
51
- import { constructPostExternalDeltaOrder } from './methods/delta/postExternalDeltaOrder';
52
- import { constructPreSignExternalDeltaOrder } from './methods/delta/preSignExternalDeltaOrder';
53
- import { constructGetQuote } from './methods/quote/getQuote';
54
- import { constructCancelDeltaOrder } from './methods/delta/cancelDeltaOrder';
55
- import { constructDeltaTokenModule } from './methods/delta/deltaTokenModule';
9
+ import { constructBuildLimitOrder, } from './methods/limitOrders/buildOrder';
10
+ import { constructSignLimitOrder, } from './methods/limitOrders/signOrder';
11
+ import { constructCancelLimitOrder, } from './methods/limitOrders/cancelOrder';
12
+ import { constructFillOrderDirectly, } from './methods/limitOrders/fillOrderDirectly';
13
+ import { constructGetLimitOrders, } from './methods/limitOrders/getOrders';
14
+ import { constructPostLimitOrder, } from './methods/limitOrders/postOrder';
15
+ import { constructApproveTokenForLimitOrder, } from './methods/limitOrders/approveForOrder';
16
+ import { constructGetLimitOrdersContract, } from './methods/limitOrders/getOrdersContract';
17
+ import { constructBuildLimitOrderTx, } from './methods/limitOrders/transaction';
18
+ import { constructBuildNFTOrder, } from './methods/nftOrders/buildOrder';
19
+ import { constructSignNFTOrder, } from './methods/nftOrders/signOrder';
20
+ import { constructCancelNFTOrder, } from './methods/nftOrders/cancelOrder';
21
+ import { constructGetNFTOrders, } from './methods/nftOrders/getOrders';
22
+ import { constructPostNFTOrder, } from './methods/nftOrders/postOrder';
23
+ import { constructApproveTokenForNFTOrder, } from './methods/nftOrders/approveForOrder';
24
+ import { constructGetNFTOrdersContract, } from './methods/nftOrders/getOrdersContract';
25
+ import { constructBuildNFTOrderTx, } from './methods/nftOrders/transaction';
26
+ import { constructEthersContractCaller, constructEthersV5ContractCaller, constructEthersV6ContractCaller, constructWeb3ContractCaller, constructViemContractCaller, txParamsToViemTxParams, constructAxiosFetcher, constructFetchFetcher, isFetcherError, constructToken, } from './helpers';
27
+ import { constructBuildDeltaOrder, } from './methods/delta/buildDeltaOrder';
28
+ import { constructPostDeltaOrder, } from './methods/delta/postDeltaOrder';
29
+ import { constructSignDeltaOrder, } from './methods/delta/signDeltaOrder';
30
+ import { constructPreSignDeltaOrder, } from './methods/delta/preSignDeltaOrder';
31
+ import { constructGetDeltaContract, } from './methods/delta/getDeltaContract';
32
+ import { constructGetDeltaPrice, } from './methods/delta/getDeltaPrice';
33
+ import { constructGetDeltaOrders, } from './methods/delta/getDeltaOrders';
34
+ import { constructApproveTokenForDelta, } from './methods/delta/approveForDelta';
35
+ import { constructGetPartnerFee, } from './methods/delta/getPartnerFee';
36
+ import { constructGetBridgeInfo, } from './methods/delta/getBridgeInfo';
37
+ import { constructIsTokenSupportedInDelta, } from './methods/delta/isTokenSupportedInDelta';
38
+ import { constructBuildExternalDeltaOrder, } from './methods/delta/buildExternalDeltaOrder';
39
+ import { constructSignExternalDeltaOrder, } from './methods/delta/signExternalDeltaOrder';
40
+ import { constructPostExternalDeltaOrder, } from './methods/delta/postExternalDeltaOrder';
41
+ import { constructPreSignExternalDeltaOrder, } from './methods/delta/preSignExternalDeltaOrder';
42
+ import { constructBuildTWAPDeltaOrder, } from './methods/delta/buildTWAPDeltaOrder';
43
+ import { constructSignTWAPDeltaOrder, } from './methods/delta/signTWAPDeltaOrder';
44
+ import { constructPostTWAPDeltaOrder, } from './methods/delta/postTWAPDeltaOrder';
45
+ import { constructPreSignTWAPDeltaOrder, } from './methods/delta/preSignTWAPDeltaOrder';
46
+ import { constructGetQuote, } from './methods/quote/getQuote';
47
+ import { constructCancelDeltaOrder, } from './methods/delta/cancelDeltaOrder';
48
+ import { constructDeltaTokenModule, } from './methods/delta/deltaTokenModule';
56
49
  export { constructSwapSDK } from './methods/swap';
57
- export {
58
- constructAllLimitOrdersHandlers,
59
- constructSubmitLimitOrder,
60
- } from './methods/limitOrders';
61
- export {
62
- constructAllDeltaOrdersHandlers,
63
- constructSubmitDeltaOrder,
64
- constructSubmitExternalDeltaOrder,
65
- } from './methods/delta';
50
+ export { constructAllLimitOrdersHandlers, constructSubmitLimitOrder, } from './methods/limitOrders';
51
+ export { constructAllDeltaOrdersHandlers, constructSubmitDeltaOrder, constructSubmitExternalDeltaOrder, constructSubmitTWAPDeltaOrder, } from './methods/delta';
66
52
  export * from './constants';
67
53
  // can import these individually
68
54
  // and use in constructPartialSDK only what you need
69
55
  // unused should tree-shake
70
- export {
71
- // swap methods:
72
- constructApproveToken,
73
- constructGetBalances, // getAllowances is inside
74
- constructGetSpender, // this was getTokenTransferProxy
75
- constructGetTokens,
76
- constructBuildTx,
77
- constructGetAdapters,
78
- constructGetRate,
79
- constructSwapTx,
80
- // limitOrders methods:
81
- constructBuildLimitOrder,
82
- constructSignLimitOrder,
83
- constructCancelLimitOrder,
84
- constructFillOrderDirectly,
85
- constructGetLimitOrders,
86
- constructPostLimitOrder,
87
- constructApproveTokenForLimitOrder,
88
- constructGetLimitOrdersContract,
89
- constructBuildLimitOrderTx,
90
- // nftOrders methods
91
- constructBuildNFTOrder,
92
- constructSignNFTOrder,
93
- constructCancelNFTOrder,
94
- constructGetNFTOrders,
95
- constructPostNFTOrder,
96
- constructApproveTokenForNFTOrder,
97
- constructGetNFTOrdersContract,
98
- constructBuildNFTOrderTx,
99
- // Delta methods
100
- constructBuildDeltaOrder,
101
- constructPostDeltaOrder,
102
- constructSignDeltaOrder,
103
- constructPreSignDeltaOrder,
104
- constructGetDeltaContract,
105
- constructGetDeltaPrice,
106
- constructGetDeltaOrders,
107
- constructCancelDeltaOrder,
108
- constructDeltaTokenModule,
109
- constructApproveTokenForDelta,
110
- // External Delta methods
111
- constructBuildExternalDeltaOrder,
112
- constructSignExternalDeltaOrder,
113
- constructPostExternalDeltaOrder,
114
- constructPreSignExternalDeltaOrder,
115
- // Quote methods
116
- constructGetQuote,
117
- // different helpers
118
- constructGetPartnerFee,
119
- constructGetBridgeInfo,
120
- constructIsTokenSupportedInDelta,
121
- constructEthersContractCaller, // same as constructEthersV5ContractCaller for backwards compatibility
122
- constructEthersV5ContractCaller,
123
- constructEthersV6ContractCaller,
124
- constructWeb3ContractCaller,
125
- constructViemContractCaller,
126
- txParamsToViemTxParams,
127
- constructAxiosFetcher,
128
- constructFetchFetcher,
129
- isFetcherError,
130
- isAllowance,
131
- constructToken,
132
- };
56
+ export {
57
+ // swap methods:
58
+ constructApproveToken, constructGetBalances, // getAllowances is inside
59
+ constructGetSpender, // this was getTokenTransferProxy
60
+ constructGetTokens, constructBuildTx, constructGetAdapters, constructGetRate, constructSwapTx,
61
+ // limitOrders methods:
62
+ constructBuildLimitOrder, constructSignLimitOrder, constructCancelLimitOrder, constructFillOrderDirectly, constructGetLimitOrders, constructPostLimitOrder, constructApproveTokenForLimitOrder, constructGetLimitOrdersContract, constructBuildLimitOrderTx,
63
+ // nftOrders methods
64
+ constructBuildNFTOrder, constructSignNFTOrder, constructCancelNFTOrder, constructGetNFTOrders, constructPostNFTOrder, constructApproveTokenForNFTOrder, constructGetNFTOrdersContract, constructBuildNFTOrderTx,
65
+ // Delta methods
66
+ constructBuildDeltaOrder, constructPostDeltaOrder, constructSignDeltaOrder, constructPreSignDeltaOrder, constructGetDeltaContract, constructGetDeltaPrice, constructGetDeltaOrders, constructCancelDeltaOrder, constructDeltaTokenModule, constructApproveTokenForDelta,
67
+ // External Delta methods
68
+ constructBuildExternalDeltaOrder, constructSignExternalDeltaOrder, constructPostExternalDeltaOrder, constructPreSignExternalDeltaOrder,
69
+ // TWAP Delta methods
70
+ constructBuildTWAPDeltaOrder, constructSignTWAPDeltaOrder, constructPostTWAPDeltaOrder, constructPreSignTWAPDeltaOrder,
71
+ // Quote methods
72
+ constructGetQuote,
73
+ // different helpers
74
+ constructGetPartnerFee, constructGetBridgeInfo, constructIsTokenSupportedInDelta, constructEthersContractCaller, // same as constructEthersV5ContractCaller for backwards compatibility
75
+ constructEthersV5ContractCaller, constructEthersV6ContractCaller, constructWeb3ContractCaller, constructViemContractCaller, txParamsToViemTxParams, constructAxiosFetcher, constructFetchFetcher, isFetcherError, isAllowance, constructToken, };
133
76
  export { constructPartialSDK } from './sdk/partial';
134
77
  export { constructFullSDK } from './sdk/full';
135
- export { constructSimpleSDK } from './sdk/simple';
78
+ export { constructSimpleSDK, } from './sdk/simple';
136
79
  // bundled methods for limitOrders
137
80
  export * from './methods/limitOrders';
138
81
  export * from './methods/limitOrders/helpers/types';
package/src/index.ts CHANGED
@@ -141,12 +141,20 @@ import type {
141
141
  DeltaAuctionOrder,
142
142
  DeltaAuction,
143
143
  DeltaAuctionStatus,
144
+ DeltaAuctionTransaction,
144
145
  BridgeMetadata,
145
146
  BridgeStatus,
146
147
  Bridge,
147
148
  ExternalDeltaOrder,
149
+ TWAPDeltaOrder,
150
+ TWAPBuyDeltaOrder,
151
+ TWAPOnChainOrderType,
148
152
  OnChainOrderType,
149
153
  SwapSideUnion,
154
+ AmountsWithSlippage,
155
+ AmountsSellSlippage,
156
+ AmountsBuySlippage,
157
+ AmountsExplicit,
150
158
  } from './methods/delta/helpers/types';
151
159
  import {
152
160
  BuildDeltaOrderDataParams,
@@ -156,6 +164,7 @@ import {
156
164
  } from './methods/delta/buildDeltaOrder';
157
165
  import {
158
166
  constructPostDeltaOrder,
167
+ DeltaOrderToPost,
159
168
  PostDeltaOrderFunctions,
160
169
  PostDeltaOrderParams,
161
170
  } from './methods/delta/postDeltaOrder';
@@ -224,6 +233,28 @@ import {
224
233
  PreSignExternalDeltaOrderFunctions,
225
234
  } from './methods/delta/preSignExternalDeltaOrder';
226
235
 
236
+ import {
237
+ BuildTWAPDeltaOrderParams,
238
+ BuildTWAPSellOrderParams,
239
+ BuildTWAPBuyOrderParams,
240
+ BuildTWAPDeltaOrderFunctions,
241
+ constructBuildTWAPDeltaOrder,
242
+ } from './methods/delta/buildTWAPDeltaOrder';
243
+ import type { SignableTWAPOrderData } from './methods/delta/helpers/buildTWAPOrderData';
244
+ import {
245
+ constructSignTWAPDeltaOrder,
246
+ SignTWAPDeltaOrderFunctions,
247
+ } from './methods/delta/signTWAPDeltaOrder';
248
+ import {
249
+ constructPostTWAPDeltaOrder,
250
+ PostTWAPDeltaOrderFunctions,
251
+ PostTWAPDeltaOrderParams,
252
+ } from './methods/delta/postTWAPDeltaOrder';
253
+ import {
254
+ constructPreSignTWAPDeltaOrder,
255
+ PreSignTWAPDeltaOrderFunctions,
256
+ } from './methods/delta/preSignTWAPDeltaOrder';
257
+
227
258
  import {
228
259
  constructGetQuote,
229
260
  GetQuoteFunctions,
@@ -244,6 +275,10 @@ import {
244
275
  DepositNativeAndPreSignParams,
245
276
  DepositNativeAndPreSignDeltaOrderParams,
246
277
  } from './methods/delta/deltaTokenModule';
278
+ import {
279
+ CancelDeltaOrderData,
280
+ SignableCancelDeltaOrderData,
281
+ } from './methods/delta/helpers/buildCancelDeltaOrderData';
247
282
 
248
283
  export { constructSwapSDK, SwapSDKMethods } from './methods/swap';
249
284
 
@@ -257,9 +292,11 @@ export {
257
292
  constructAllDeltaOrdersHandlers,
258
293
  constructSubmitDeltaOrder,
259
294
  constructSubmitExternalDeltaOrder,
295
+ constructSubmitTWAPDeltaOrder,
260
296
  DeltaOrderHandlers,
261
297
  SubmitDeltaOrderParams,
262
298
  SubmitExternalDeltaOrderParams,
299
+ SubmitTWAPDeltaOrderParams,
263
300
  } from './methods/delta';
264
301
 
265
302
  export type {
@@ -337,6 +374,11 @@ export {
337
374
  constructSignExternalDeltaOrder,
338
375
  constructPostExternalDeltaOrder,
339
376
  constructPreSignExternalDeltaOrder,
377
+ // TWAP Delta methods
378
+ constructBuildTWAPDeltaOrder,
379
+ constructSignTWAPDeltaOrder,
380
+ constructPostTWAPDeltaOrder,
381
+ constructPreSignTWAPDeltaOrder,
340
382
  // Quote methods
341
383
  constructGetQuote,
342
384
  // different helpers
@@ -409,8 +451,11 @@ export type {
409
451
  DeltaAuctionOrder,
410
452
  DeltaAuction,
411
453
  DeltaAuctionStatus,
454
+ DeltaAuctionTransaction,
412
455
  DeltaOrderFilterByStatus,
413
456
  DeltaOrderFromAPI,
457
+ CancelDeltaOrderData,
458
+ SignableCancelDeltaOrderData,
414
459
  // bridge part of DeltaOrder
415
460
  BridgeMetadata,
416
461
  BridgeStatus,
@@ -421,6 +466,7 @@ export type {
421
466
  BuildDeltaOrderDataParams,
422
467
  BuildDeltaOrderFunctions,
423
468
  SignableDeltaOrderData,
469
+ DeltaOrderToPost,
424
470
  PostDeltaOrderFunctions,
425
471
  PostDeltaOrderParams,
426
472
  SignDeltaOrderFunctions,
@@ -436,7 +482,14 @@ export type {
436
482
  DepositNativeAndPreSignDeltaOrderParams,
437
483
  // External Delta types
438
484
  ExternalDeltaOrder,
485
+ TWAPDeltaOrder,
486
+ TWAPBuyDeltaOrder,
487
+ TWAPOnChainOrderType,
439
488
  OnChainOrderType,
489
+ AmountsWithSlippage,
490
+ AmountsSellSlippage,
491
+ AmountsBuySlippage,
492
+ AmountsExplicit,
440
493
  SignableExternalOrderData,
441
494
  BuildExternalDeltaOrderParams,
442
495
  BuildExternalDeltaOrderFunctions,
@@ -444,6 +497,16 @@ export type {
444
497
  PostExternalDeltaOrderFunctions,
445
498
  PostExternalDeltaOrderParams,
446
499
  PreSignExternalDeltaOrderFunctions,
500
+ // TWAP Delta types
501
+ BuildTWAPDeltaOrderParams,
502
+ BuildTWAPSellOrderParams,
503
+ BuildTWAPBuyOrderParams,
504
+ BuildTWAPDeltaOrderFunctions,
505
+ SignableTWAPOrderData,
506
+ SignTWAPDeltaOrderFunctions,
507
+ PostTWAPDeltaOrderFunctions,
508
+ PostTWAPDeltaOrderParams,
509
+ PreSignTWAPDeltaOrderFunctions,
447
510
  // types for Quote methods
448
511
  GetQuoteFunctions,
449
512
  QuoteParams,
@@ -0,0 +1,187 @@
1
+ import type { ConstructFetchInput, RequestParameters } from '../../types';
2
+ import { DEFAULT_BRIDGE } from './constants';
3
+ import { constructGetDeltaContract } from './getDeltaContract';
4
+ import type { BridgePrice } from './getDeltaPrice';
5
+ import { constructGetPartnerFee } from './getPartnerFee';
6
+ import {
7
+ buildTWAPSignableOrderData,
8
+ TWAPOrderCommonInput,
9
+ type BuildTWAPOrderDataInput,
10
+ type SignableTWAPOrderData,
11
+ } from './helpers/buildTWAPOrderData';
12
+ import { applySlippage, resolvePartnerFee } from './helpers/misc';
13
+ import type { MarkOptional } from 'ts-essentials';
14
+ export type { SignableTWAPOrderData } from './helpers/buildTWAPOrderData';
15
+
16
+ type BuildTWAPDeltaOrderParamsBase = {
17
+ /** @description The address of the order owner */
18
+ owner: string;
19
+ /** @description The address of the order beneficiary */
20
+ beneficiary?: string;
21
+ /** @description The address of the src token */
22
+ srcToken: string;
23
+ /** @description The address of the dest token. For Crosschain Order - destination token on the destination chain */
24
+ destToken: string;
25
+ /** @description The deadline for the order */
26
+ deadline?: number;
27
+ /** @description The nonce of the order */
28
+ nonce?: number | string;
29
+ /** @description Optional permit signature for the src token */
30
+ permit?: string;
31
+ /** @description Partner string */
32
+ partner?: string;
33
+ /** @description Destination Chain ID for Crosschain Orders */
34
+ destChainId?: number;
35
+ /** @description Seconds between slice executions (min 60) */
36
+ interval: number;
37
+ /** @description Number of slices (min 2) */
38
+ numSlices: number;
39
+ /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */
40
+ slippage?: number;
41
+
42
+ /** @description price response received from /delta/prices (getDeltaPrice method) for a single slice */
43
+ deltaPrice: MarkOptional<
44
+ Pick<
45
+ BridgePrice,
46
+ | 'destAmount'
47
+ | 'partner'
48
+ | 'partnerFee'
49
+ | 'destToken'
50
+ | 'srcAmount'
51
+ | 'bridge'
52
+ >,
53
+ 'partner' | 'partnerFee'
54
+ >;
55
+
56
+ /** @description partner fee in basis points (bps), 50bps=0.5% */
57
+ partnerFeeBps?: number;
58
+ /** @description partner address */
59
+ partnerAddress?: string;
60
+ /** @description take surplus */
61
+ partnerTakesSurplus?: boolean;
62
+ /** @description A boolean indicating whether the surplus should be capped. True by default */
63
+ capSurplus?: boolean;
64
+ /** @description Metadata for the order, hex string */
65
+ metadata?: string;
66
+ };
67
+
68
+ export type BuildTWAPSellOrderParams = BuildTWAPDeltaOrderParamsBase & {
69
+ /** @description Must be "TWAPOrder" for sell orders */
70
+ onChainOrderType: 'TWAPOrder';
71
+ /** @description Total source token amount across all slices */
72
+ totalSrcAmount: string;
73
+ };
74
+
75
+ export type BuildTWAPBuyOrderParams = BuildTWAPDeltaOrderParamsBase & {
76
+ /** @description Must be "TWAPBuyOrder" for buy orders */
77
+ onChainOrderType: 'TWAPBuyOrder';
78
+ /** @description Total destination token amount to buy across all slices */
79
+ totalDestAmount: string;
80
+ /** @description Maximum source token amount willing to spend */
81
+ maxSrcAmount: string;
82
+ };
83
+
84
+ export type BuildTWAPDeltaOrderParams =
85
+ | BuildTWAPSellOrderParams
86
+ | BuildTWAPBuyOrderParams;
87
+
88
+ type BuildTWAPDeltaOrder = (
89
+ buildOrderParams: BuildTWAPDeltaOrderParams,
90
+ requestParams?: RequestParameters
91
+ ) => Promise<SignableTWAPOrderData>;
92
+
93
+ export type BuildTWAPDeltaOrderFunctions = {
94
+ /** @description Build TWAP Orders (sell or buy) to be posted to Delta API for execution */
95
+ buildTWAPDeltaOrder: BuildTWAPDeltaOrder;
96
+ };
97
+
98
+ export const constructBuildTWAPDeltaOrder = (
99
+ options: ConstructFetchInput
100
+ ): BuildTWAPDeltaOrderFunctions => {
101
+ const { chainId } = options;
102
+
103
+ const { getDeltaContract } = constructGetDeltaContract(options);
104
+ const { getPartnerFee } = constructGetPartnerFee(options);
105
+
106
+ const buildTWAPDeltaOrder: BuildTWAPDeltaOrder = async (
107
+ params,
108
+ requestParams
109
+ ) => {
110
+ const ParaswapDelta = await getDeltaContract(requestParams);
111
+ if (!ParaswapDelta) {
112
+ throw new Error(`Delta is not available on chain ${chainId}`);
113
+ }
114
+
115
+ const { partnerAddress, partnerFeeBps, partnerTakesSurplus } =
116
+ await resolvePartnerFee(params, getPartnerFee, requestParams);
117
+
118
+ const commonInput: TWAPOrderCommonInput = {
119
+ owner: params.owner,
120
+ beneficiary: params.beneficiary,
121
+ srcToken: params.srcToken,
122
+ destToken: params.deltaPrice.destToken,
123
+ deadline: params.deadline,
124
+ nonce: params.nonce?.toString(10),
125
+ permit: params.permit,
126
+ metadata: params.metadata,
127
+ interval: params.interval,
128
+ numSlices: params.numSlices,
129
+ bridge: {
130
+ ...params.deltaPrice.bridge,
131
+ // TWAP child orders get their bridge data at execution time
132
+ protocolData: DEFAULT_BRIDGE.protocolData,
133
+ },
134
+
135
+ chainId,
136
+ paraswapDeltaAddress: ParaswapDelta,
137
+ partnerAddress,
138
+ partnerTakesSurplus,
139
+ partnerFeeBps,
140
+ capSurplus: params.capSurplus,
141
+ };
142
+
143
+ let input: BuildTWAPOrderDataInput;
144
+
145
+ if (params.onChainOrderType === 'TWAPOrder') {
146
+ const slippage = params.slippage ?? 0;
147
+ const destAmountPerSlice =
148
+ slippage > 0
149
+ ? applySlippage({
150
+ amount: params.deltaPrice.destAmount,
151
+ slippageBps: slippage,
152
+ increase: false,
153
+ })
154
+ : params.deltaPrice.destAmount;
155
+
156
+ input = {
157
+ ...commonInput,
158
+ onChainOrderType: 'TWAPOrder',
159
+ destAmountPerSlice,
160
+ totalSrcAmount: params.totalSrcAmount,
161
+ };
162
+ } else {
163
+ const slippage = params.slippage ?? 0;
164
+ const maxSrcAmount =
165
+ slippage > 0
166
+ ? applySlippage({
167
+ amount: params.maxSrcAmount,
168
+ slippageBps: slippage,
169
+ increase: true,
170
+ })
171
+ : params.maxSrcAmount;
172
+
173
+ input = {
174
+ ...commonInput,
175
+ onChainOrderType: 'TWAPBuyOrder',
176
+ totalDestAmount: params.totalDestAmount,
177
+ maxSrcAmount,
178
+ };
179
+ }
180
+
181
+ return buildTWAPSignableOrderData(input);
182
+ };
183
+
184
+ return {
185
+ buildTWAPDeltaOrder,
186
+ };
187
+ };