@velora-dex/sdk 9.3.6 → 9.4.1-dev.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.
Files changed (147) hide show
  1. package/README.md +2 -0
  2. package/dist/examples/externalDelta.d.ts +2 -0
  3. package/dist/examples/externalDelta.d.ts.map +1 -0
  4. package/dist/examples/helpers/delta.d.ts +2 -2
  5. package/dist/examples/helpers/delta.d.ts.map +1 -1
  6. package/dist/index.d.ts +17 -6
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/methods/delta/buildDeltaOrder.d.ts +4 -10
  9. package/dist/methods/delta/buildDeltaOrder.d.ts.map +1 -1
  10. package/dist/methods/delta/buildExternalDeltaOrder.d.ts +46 -0
  11. package/dist/methods/delta/buildExternalDeltaOrder.d.ts.map +1 -0
  12. package/dist/methods/delta/buildTWAPDeltaOrder.d.ts +65 -0
  13. package/dist/methods/delta/buildTWAPDeltaOrder.d.ts.map +1 -0
  14. package/dist/methods/delta/getDeltaOrders.d.ts +14 -6
  15. package/dist/methods/delta/getDeltaOrders.d.ts.map +1 -1
  16. package/dist/methods/delta/helpers/abi.d.ts +16 -0
  17. package/dist/methods/delta/helpers/abi.d.ts.map +1 -0
  18. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts +0 -1
  19. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts.map +1 -1
  20. package/dist/methods/delta/helpers/buildExternalOrderData.d.ts +34 -0
  21. package/dist/methods/delta/helpers/buildExternalOrderData.d.ts.map +1 -0
  22. package/dist/methods/delta/helpers/buildTWAPOrderData.d.ts +74 -0
  23. package/dist/methods/delta/helpers/buildTWAPOrderData.d.ts.map +1 -0
  24. package/dist/methods/delta/helpers/misc.d.ts +51 -0
  25. package/dist/methods/delta/helpers/misc.d.ts.map +1 -1
  26. package/dist/methods/delta/helpers/types.d.ts +116 -4
  27. package/dist/methods/delta/helpers/types.d.ts.map +1 -1
  28. package/dist/methods/delta/index.d.ts +34 -3
  29. package/dist/methods/delta/index.d.ts.map +1 -1
  30. package/dist/methods/delta/postDeltaOrder.d.ts +4 -9
  31. package/dist/methods/delta/postDeltaOrder.d.ts.map +1 -1
  32. package/dist/methods/delta/postExternalDeltaOrder.d.ts +11 -0
  33. package/dist/methods/delta/postExternalDeltaOrder.d.ts.map +1 -0
  34. package/dist/methods/delta/postTWAPDeltaOrder.d.ts +16 -0
  35. package/dist/methods/delta/postTWAPDeltaOrder.d.ts.map +1 -0
  36. package/dist/methods/delta/preSignDeltaOrder.d.ts.map +1 -1
  37. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts +17 -0
  38. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts.map +1 -0
  39. package/dist/methods/delta/preSignTWAPDeltaOrder.d.ts +20 -0
  40. package/dist/methods/delta/preSignTWAPDeltaOrder.d.ts.map +1 -0
  41. package/dist/methods/delta/signExternalDeltaOrder.d.ts +9 -0
  42. package/dist/methods/delta/signExternalDeltaOrder.d.ts.map +1 -0
  43. package/dist/methods/delta/signTWAPDeltaOrder.d.ts +9 -0
  44. package/dist/methods/delta/signTWAPDeltaOrder.d.ts.map +1 -0
  45. package/dist/methods/limitOrders/approveForOrder.d.ts +2 -0
  46. package/dist/methods/limitOrders/approveForOrder.d.ts.map +1 -1
  47. package/dist/methods/limitOrders/buildOrder.d.ts +3 -0
  48. package/dist/methods/limitOrders/buildOrder.d.ts.map +1 -1
  49. package/dist/methods/limitOrders/cancelOrder.d.ts +2 -0
  50. package/dist/methods/limitOrders/cancelOrder.d.ts.map +1 -1
  51. package/dist/methods/limitOrders/fillOrderDirectly.d.ts +2 -0
  52. package/dist/methods/limitOrders/fillOrderDirectly.d.ts.map +1 -1
  53. package/dist/methods/limitOrders/getOrders.d.ts +2 -0
  54. package/dist/methods/limitOrders/getOrders.d.ts.map +1 -1
  55. package/dist/methods/limitOrders/getOrdersContract.d.ts +2 -0
  56. package/dist/methods/limitOrders/getOrdersContract.d.ts.map +1 -1
  57. package/dist/methods/limitOrders/index.d.ts +7 -1
  58. package/dist/methods/limitOrders/index.d.ts.map +1 -1
  59. package/dist/methods/limitOrders/postOrder.d.ts +2 -0
  60. package/dist/methods/limitOrders/postOrder.d.ts.map +1 -1
  61. package/dist/methods/limitOrders/signOrder.d.ts +2 -0
  62. package/dist/methods/limitOrders/signOrder.d.ts.map +1 -1
  63. package/dist/methods/limitOrders/transaction.d.ts +2 -0
  64. package/dist/methods/limitOrders/transaction.d.ts.map +1 -1
  65. package/dist/methods/nftOrders/approveForOrder.d.ts +2 -0
  66. package/dist/methods/nftOrders/approveForOrder.d.ts.map +1 -1
  67. package/dist/methods/nftOrders/buildOrder.d.ts +3 -0
  68. package/dist/methods/nftOrders/buildOrder.d.ts.map +1 -1
  69. package/dist/methods/nftOrders/cancelOrder.d.ts +2 -0
  70. package/dist/methods/nftOrders/cancelOrder.d.ts.map +1 -1
  71. package/dist/methods/nftOrders/getOrders.d.ts +2 -0
  72. package/dist/methods/nftOrders/getOrders.d.ts.map +1 -1
  73. package/dist/methods/nftOrders/getOrdersContract.d.ts +2 -0
  74. package/dist/methods/nftOrders/getOrdersContract.d.ts.map +1 -1
  75. package/dist/methods/nftOrders/helpers/misc.d.ts +1 -0
  76. package/dist/methods/nftOrders/helpers/misc.d.ts.map +1 -1
  77. package/dist/methods/nftOrders/index.d.ts +7 -1
  78. package/dist/methods/nftOrders/index.d.ts.map +1 -1
  79. package/dist/methods/nftOrders/postOrder.d.ts +2 -0
  80. package/dist/methods/nftOrders/postOrder.d.ts.map +1 -1
  81. package/dist/methods/nftOrders/signOrder.d.ts +2 -0
  82. package/dist/methods/nftOrders/signOrder.d.ts.map +1 -1
  83. package/dist/methods/nftOrders/transaction.d.ts +2 -0
  84. package/dist/methods/nftOrders/transaction.d.ts.map +1 -1
  85. package/dist/sdk/full.d.ts +2 -0
  86. package/dist/sdk/full.d.ts.map +1 -1
  87. package/dist/sdk/partial.d.ts +5 -1
  88. package/dist/sdk/partial.d.ts.map +1 -1
  89. package/dist/sdk/simple.d.ts +6 -0
  90. package/dist/sdk/simple.d.ts.map +1 -1
  91. package/dist/sdk.cjs.development.js +1357 -210
  92. package/dist/sdk.cjs.development.js.map +1 -1
  93. package/dist/sdk.cjs.production.min.js +1 -1
  94. package/dist/sdk.cjs.production.min.js.map +1 -1
  95. package/dist/sdk.esm.js +1348 -211
  96. package/dist/sdk.esm.js.map +1 -1
  97. package/package.json +1 -1
  98. package/src/constants.js +3 -0
  99. package/src/examples/delta.ts +9 -20
  100. package/src/examples/externalDelta.ts +162 -0
  101. package/src/examples/helpers/delta.ts +8 -4
  102. package/src/gas.js +1 -0
  103. package/src/index.js +85 -0
  104. package/src/index.ts +103 -3
  105. package/src/methods/delta/buildDeltaOrder.ts +13 -61
  106. package/src/methods/delta/buildExternalDeltaOrder.ts +124 -0
  107. package/src/methods/delta/buildTWAPDeltaOrder.ts +181 -0
  108. package/src/methods/delta/getDeltaOrders.ts +31 -13
  109. package/src/methods/delta/helpers/abi.ts +20 -0
  110. package/src/methods/delta/helpers/buildDeltaOrderData.ts +3 -35
  111. package/src/methods/delta/helpers/buildExternalOrderData.ts +129 -0
  112. package/src/methods/delta/helpers/buildTWAPOrderData.ts +227 -0
  113. package/src/methods/delta/helpers/misc.ts +244 -0
  114. package/src/methods/delta/helpers/types.ts +138 -9
  115. package/src/methods/delta/index.ts +159 -3
  116. package/src/methods/delta/postDeltaOrder.ts +9 -11
  117. package/src/methods/delta/postExternalDeltaOrder.ts +45 -0
  118. package/src/methods/delta/postTWAPDeltaOrder.ts +57 -0
  119. package/src/methods/delta/preSignDeltaOrder.ts +1 -21
  120. package/src/methods/delta/preSignExternalDeltaOrder.ts +141 -0
  121. package/src/methods/delta/preSignTWAPDeltaOrder.ts +168 -0
  122. package/src/methods/delta/signExternalDeltaOrder.ts +35 -0
  123. package/src/methods/delta/signTWAPDeltaOrder.ts +32 -0
  124. package/src/methods/limitOrders/approveForOrder.ts +2 -0
  125. package/src/methods/limitOrders/buildOrder.ts +3 -0
  126. package/src/methods/limitOrders/cancelOrder.ts +2 -0
  127. package/src/methods/limitOrders/fillOrderDirectly.ts +2 -0
  128. package/src/methods/limitOrders/getOrders.ts +2 -0
  129. package/src/methods/limitOrders/getOrdersContract.ts +2 -0
  130. package/src/methods/limitOrders/index.ts +7 -1
  131. package/src/methods/limitOrders/postOrder.ts +2 -0
  132. package/src/methods/limitOrders/signOrder.ts +2 -0
  133. package/src/methods/limitOrders/transaction.ts +2 -0
  134. package/src/methods/nftOrders/approveForOrder.ts +2 -0
  135. package/src/methods/nftOrders/buildOrder.ts +3 -0
  136. package/src/methods/nftOrders/cancelOrder.ts +2 -0
  137. package/src/methods/nftOrders/getOrders.ts +2 -0
  138. package/src/methods/nftOrders/getOrdersContract.ts +2 -0
  139. package/src/methods/nftOrders/helpers/misc.ts +1 -0
  140. package/src/methods/nftOrders/index.ts +7 -1
  141. package/src/methods/nftOrders/postOrder.ts +2 -0
  142. package/src/methods/nftOrders/signOrder.ts +2 -0
  143. package/src/methods/nftOrders/transaction.ts +2 -0
  144. package/src/sdk/full.ts +2 -0
  145. package/src/sdk/partial.ts +5 -1
  146. package/src/sdk/simple.ts +6 -0
  147. package/src/types.js +1 -0
@@ -1,4 +1,5 @@
1
1
  import type { ConstructProviderFetchInput } from '../../types';
2
+ import type { DeltaAuction } from './helpers/types';
2
3
  import {
3
4
  BuildDeltaOrderDataParams,
4
5
  BuildDeltaOrderFunctions,
@@ -6,7 +7,6 @@ import {
6
7
  } from './buildDeltaOrder';
7
8
  import {
8
9
  constructPostDeltaOrder,
9
- DeltaOrderApiResponse,
10
10
  DeltaOrderToPost,
11
11
  PostDeltaOrderFunctions,
12
12
  } from './postDeltaOrder';
@@ -54,6 +54,40 @@ import {
54
54
  DeltaTokenModuleFunctions,
55
55
  constructDeltaTokenModule,
56
56
  } from './deltaTokenModule';
57
+ import {
58
+ BuildExternalDeltaOrderParams,
59
+ BuildExternalDeltaOrderFunctions,
60
+ constructBuildExternalDeltaOrder,
61
+ } from './buildExternalDeltaOrder';
62
+ import {
63
+ constructSignExternalDeltaOrder,
64
+ SignExternalDeltaOrderFunctions,
65
+ } from './signExternalDeltaOrder';
66
+ import {
67
+ constructPostExternalDeltaOrder,
68
+ PostExternalDeltaOrderFunctions,
69
+ } from './postExternalDeltaOrder';
70
+ import {
71
+ constructPreSignExternalDeltaOrder,
72
+ PreSignExternalDeltaOrderFunctions,
73
+ } from './preSignExternalDeltaOrder';
74
+ import {
75
+ BuildTWAPDeltaOrderParams,
76
+ BuildTWAPDeltaOrderFunctions,
77
+ constructBuildTWAPDeltaOrder,
78
+ } from './buildTWAPDeltaOrder';
79
+ import {
80
+ constructSignTWAPDeltaOrder,
81
+ SignTWAPDeltaOrderFunctions,
82
+ } from './signTWAPDeltaOrder';
83
+ import {
84
+ constructPostTWAPDeltaOrder,
85
+ PostTWAPDeltaOrderFunctions,
86
+ } from './postTWAPDeltaOrder';
87
+ import {
88
+ constructPreSignTWAPDeltaOrder,
89
+ PreSignTWAPDeltaOrderFunctions,
90
+ } from './preSignTWAPDeltaOrder';
57
91
 
58
92
  export type SubmitDeltaOrderParams = BuildDeltaOrderDataParams & {
59
93
  /** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */
@@ -65,7 +99,7 @@ export type SubmitDeltaOrderParams = BuildDeltaOrderDataParams & {
65
99
 
66
100
  type SubmitDeltaOrder = (
67
101
  orderParams: SubmitDeltaOrderParams
68
- ) => Promise<DeltaOrderApiResponse>;
102
+ ) => Promise<DeltaAuction<'Order'>>;
69
103
 
70
104
  export type SubmitDeltaOrderFuncs = {
71
105
  submitDeltaOrder: SubmitDeltaOrder;
@@ -101,6 +135,95 @@ export const constructSubmitDeltaOrder = (
101
135
  return { submitDeltaOrder };
102
136
  };
103
137
 
138
+ export type SubmitExternalDeltaOrderParams = BuildExternalDeltaOrderParams & {
139
+ /** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */
140
+ partiallyFillable?: boolean;
141
+ /** @description Referrer address */
142
+ referrerAddress?: string;
143
+ } & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;
144
+
145
+ type SubmitExternalDeltaOrder = (
146
+ orderParams: SubmitExternalDeltaOrderParams
147
+ ) => Promise<DeltaAuction<'ExternalOrder'>>;
148
+
149
+ export type SubmitExternalDeltaOrderFuncs = {
150
+ submitExternalDeltaOrder: SubmitExternalDeltaOrder;
151
+ };
152
+
153
+ export const constructSubmitExternalDeltaOrder = (
154
+ options: ConstructProviderFetchInput<any, 'signTypedDataCall'>
155
+ ): SubmitExternalDeltaOrderFuncs => {
156
+ const { buildExternalDeltaOrder } = constructBuildExternalDeltaOrder(options);
157
+ const { signExternalDeltaOrder } = constructSignExternalDeltaOrder(options);
158
+ const { postExternalDeltaOrder } = constructPostExternalDeltaOrder(options);
159
+
160
+ const submitExternalDeltaOrder: SubmitExternalDeltaOrder = async (
161
+ orderParams
162
+ ) => {
163
+ const orderData = await buildExternalDeltaOrder(orderParams);
164
+ const signature = await signExternalDeltaOrder(orderData);
165
+
166
+ const response = await postExternalDeltaOrder({
167
+ signature,
168
+ partner: orderParams.partner,
169
+ order: orderData.data,
170
+ partiallyFillable: orderParams.partiallyFillable,
171
+ referrerAddress: orderParams.referrerAddress,
172
+ type: orderParams.type,
173
+ includeAgents: orderParams.includeAgents,
174
+ excludeAgents: orderParams.excludeAgents,
175
+ });
176
+
177
+ return response;
178
+ };
179
+
180
+ return { submitExternalDeltaOrder };
181
+ };
182
+
183
+ export type SubmitTWAPDeltaOrderParams = BuildTWAPDeltaOrderParams & {
184
+ /** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */
185
+ partiallyFillable?: boolean;
186
+ /** @description Referrer address */
187
+ referrerAddress?: string;
188
+ } & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;
189
+
190
+ type SubmitTWAPDeltaOrder = (
191
+ orderParams: SubmitTWAPDeltaOrderParams
192
+ ) => Promise<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>;
193
+
194
+ export type SubmitTWAPDeltaOrderFuncs = {
195
+ submitTWAPDeltaOrder: SubmitTWAPDeltaOrder;
196
+ };
197
+
198
+ export const constructSubmitTWAPDeltaOrder = (
199
+ options: ConstructProviderFetchInput<any, 'signTypedDataCall'>
200
+ ): SubmitTWAPDeltaOrderFuncs => {
201
+ const { buildTWAPDeltaOrder } = constructBuildTWAPDeltaOrder(options);
202
+ const { signTWAPDeltaOrder } = constructSignTWAPDeltaOrder(options);
203
+ const { postTWAPDeltaOrder } = constructPostTWAPDeltaOrder(options);
204
+
205
+ const submitTWAPDeltaOrder: SubmitTWAPDeltaOrder = async (orderParams) => {
206
+ const orderData = await buildTWAPDeltaOrder(orderParams);
207
+ const signature = await signTWAPDeltaOrder(orderData);
208
+
209
+ const response = await postTWAPDeltaOrder({
210
+ signature,
211
+ partner: orderParams.partner,
212
+ order: orderData.data,
213
+ onChainOrderType: orderParams.onChainOrderType,
214
+ partiallyFillable: orderParams.partiallyFillable,
215
+ referrerAddress: orderParams.referrerAddress,
216
+ type: orderParams.type,
217
+ includeAgents: orderParams.includeAgents,
218
+ excludeAgents: orderParams.excludeAgents,
219
+ });
220
+
221
+ return response;
222
+ };
223
+
224
+ return { submitTWAPDeltaOrder };
225
+ };
226
+
104
227
  export type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &
105
228
  ApproveTokenForDeltaFunctions<T> &
106
229
  BuildDeltaOrderFunctions &
@@ -114,7 +237,17 @@ export type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &
114
237
  SignDeltaOrderFunctions &
115
238
  PreSignDeltaOrderFunctions<T> &
116
239
  CancelDeltaOrderFunctions &
117
- DeltaTokenModuleFunctions<T>;
240
+ DeltaTokenModuleFunctions<T> &
241
+ SubmitExternalDeltaOrderFuncs &
242
+ BuildExternalDeltaOrderFunctions &
243
+ SignExternalDeltaOrderFunctions &
244
+ PostExternalDeltaOrderFunctions &
245
+ PreSignExternalDeltaOrderFunctions<T> &
246
+ SubmitTWAPDeltaOrderFuncs &
247
+ BuildTWAPDeltaOrderFunctions &
248
+ SignTWAPDeltaOrderFunctions &
249
+ PostTWAPDeltaOrderFunctions &
250
+ PreSignTWAPDeltaOrderFunctions<T>;
118
251
 
119
252
  /** @description construct SDK with every Delta Order-related method, fetching from API and Order signing */
120
253
  export const constructAllDeltaOrdersHandlers = <TxResponse>(
@@ -144,6 +277,19 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
144
277
 
145
278
  const deltaTokenModule = constructDeltaTokenModule(options);
146
279
 
280
+ const externalDeltaOrdersSubmit = constructSubmitExternalDeltaOrder(options);
281
+ const externalDeltaOrdersBuild = constructBuildExternalDeltaOrder(options);
282
+ const externalDeltaOrdersSign = constructSignExternalDeltaOrder(options);
283
+ const externalDeltaOrdersPost = constructPostExternalDeltaOrder(options);
284
+ const externalDeltaOrdersPreSign =
285
+ constructPreSignExternalDeltaOrder(options);
286
+
287
+ const twapDeltaOrdersSubmit = constructSubmitTWAPDeltaOrder(options);
288
+ const twapDeltaOrdersBuild = constructBuildTWAPDeltaOrder(options);
289
+ const twapDeltaOrdersSign = constructSignTWAPDeltaOrder(options);
290
+ const twapDeltaOrdersPost = constructPostTWAPDeltaOrder(options);
291
+ const twapDeltaOrdersPreSign = constructPreSignTWAPDeltaOrder(options);
292
+
147
293
  return {
148
294
  ...deltaOrdersGetters,
149
295
  ...deltaOrdersContractGetter,
@@ -159,5 +305,15 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
159
305
  ...deltaOrdersPost,
160
306
  ...deltaOrdersCancel,
161
307
  ...deltaTokenModule,
308
+ ...externalDeltaOrdersSubmit,
309
+ ...externalDeltaOrdersBuild,
310
+ ...externalDeltaOrdersSign,
311
+ ...externalDeltaOrdersPost,
312
+ ...externalDeltaOrdersPreSign,
313
+ ...twapDeltaOrdersSubmit,
314
+ ...twapDeltaOrdersBuild,
315
+ ...twapDeltaOrdersSign,
316
+ ...twapDeltaOrdersPost,
317
+ ...twapDeltaOrdersPreSign,
162
318
  };
163
319
  };
@@ -1,14 +1,18 @@
1
1
  import { API_URL } from '../../constants';
2
2
  import { constructSearchString } from '../../helpers/misc';
3
3
  import type { ConstructFetchInput, RequestParameters } from '../../types';
4
- import { DeltaAuctionOrder, DeltaAuction } from './helpers/types';
4
+ import type {
5
+ DeltaAuction,
6
+ OnChainOrderMap,
7
+ OnChainOrderType,
8
+ } from './helpers/types';
5
9
 
6
- export type DeltaOrderToPost = {
10
+ export type DeltaOrderToPost<T extends OnChainOrderType = 'Order'> = {
7
11
  /** @description Partner string */
8
12
  partner?: string;
9
13
  /** @description Referrer address */
10
14
  referrerAddress?: string;
11
- order: DeltaAuctionOrder;
15
+ order: OnChainOrderMap[T];
12
16
  /** @description Signature of the order from order.owner address. EOA signatures must be submitted in ERC-2098 Compact Representation. */
13
17
  signature: string;
14
18
  chainId: number;
@@ -26,16 +30,10 @@ export type PostDeltaOrderParams = Omit<DeltaOrderToPost, 'chainId'> & {
26
30
  degenMode?: boolean;
27
31
  };
28
32
 
29
- export type DeltaOrderApiResponse = Omit<DeltaAuction, 'transactions'> & {
30
- orderVersion: string; // "2.0.0"
31
- deltaGasOverhead: number; // @TODO may be removed
32
- type: 'MARKET' | 'LIMIT';
33
- };
34
-
35
33
  type PostDeltaOrder = (
36
34
  postData: PostDeltaOrderParams,
37
35
  requestParams?: RequestParameters
38
- ) => Promise<DeltaOrderApiResponse>;
36
+ ) => Promise<DeltaAuction<'Order'>>;
39
37
 
40
38
  export type PostDeltaOrderFunctions = {
41
39
  postDeltaOrder: PostDeltaOrder;
@@ -57,7 +55,7 @@ export const constructPostDeltaOrder = ({
57
55
  });
58
56
  const fetchURL = `${postOrderUrl}/${search}` as const;
59
57
 
60
- return fetcher<DeltaOrderApiResponse>({
58
+ return fetcher<DeltaAuction<'Order'>>({
61
59
  url: fetchURL,
62
60
  method: 'POST',
63
61
  data: deltaOrderToPost,
@@ -0,0 +1,45 @@
1
+ import { API_URL } from '../../constants';
2
+ import type { ConstructFetchInput, RequestParameters } from '../../types';
3
+ import type { DeltaAuction } from './helpers/types';
4
+ import type { DeltaOrderToPost } from './postDeltaOrder';
5
+
6
+ export type PostExternalDeltaOrderParams = Omit<
7
+ DeltaOrderToPost<'ExternalOrder'>,
8
+ 'chainId'
9
+ >;
10
+
11
+ type PostExternalDeltaOrder = (
12
+ postData: PostExternalDeltaOrderParams,
13
+ requestParams?: RequestParameters
14
+ ) => Promise<DeltaAuction<'ExternalOrder'>>;
15
+
16
+ export type PostExternalDeltaOrderFunctions = {
17
+ postExternalDeltaOrder: PostExternalDeltaOrder;
18
+ };
19
+
20
+ export const constructPostExternalDeltaOrder = ({
21
+ apiURL = API_URL,
22
+ chainId,
23
+ fetcher,
24
+ }: ConstructFetchInput): PostExternalDeltaOrderFunctions => {
25
+ const postOrderUrl = `${apiURL}/delta/orders` as const;
26
+
27
+ const postExternalDeltaOrder: PostExternalDeltaOrder = (
28
+ postData,
29
+ requestParams
30
+ ) => {
31
+ const deltaOrderToPost: DeltaOrderToPost<'ExternalOrder'> = {
32
+ ...postData,
33
+ chainId,
34
+ };
35
+
36
+ return fetcher<DeltaAuction<'ExternalOrder'>>({
37
+ url: postOrderUrl,
38
+ method: 'POST',
39
+ data: deltaOrderToPost,
40
+ requestParams,
41
+ });
42
+ };
43
+
44
+ return { postExternalDeltaOrder };
45
+ };
@@ -0,0 +1,57 @@
1
+ import { Prettify } from 'ts-essentials';
2
+ import { API_URL } from '../../constants';
3
+ import type { ConstructFetchInput, RequestParameters } from '../../types';
4
+ import type { DeltaAuction, TWAPOnChainOrderType } from './helpers/types';
5
+ import type { DeltaOrderToPost } from './postDeltaOrder';
6
+ import { constructSearchString } from '../../helpers/misc';
7
+
8
+ export type PostTWAPDeltaOrderParams = Prettify<
9
+ Omit<
10
+ DeltaOrderToPost<'TWAPOrder'> | DeltaOrderToPost<'TWAPBuyOrder'>,
11
+ 'chainId'
12
+ > & {
13
+ /** @description Must be "TWAPOrder" or "TWAPBuyOrder" */
14
+ onChainOrderType: TWAPOnChainOrderType;
15
+ degenMode?: boolean;
16
+ }
17
+ >;
18
+
19
+ type PostTWAPDeltaOrder = (
20
+ postData: PostTWAPDeltaOrderParams,
21
+ requestParams?: RequestParameters
22
+ ) => Promise<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>;
23
+
24
+ export type PostTWAPDeltaOrderFunctions = {
25
+ postTWAPDeltaOrder: PostTWAPDeltaOrder;
26
+ };
27
+
28
+ export const constructPostTWAPDeltaOrder = ({
29
+ apiURL = API_URL,
30
+ chainId,
31
+ fetcher,
32
+ }: ConstructFetchInput): PostTWAPDeltaOrderFunctions => {
33
+ const postOrderUrl = `${apiURL}/delta/orders` as const;
34
+
35
+ const postTWAPDeltaOrder: PostTWAPDeltaOrder = (_postData, requestParams) => {
36
+ const { degenMode, ...postData } = _postData;
37
+ const deltaOrderToPost: DeltaOrderToPost<'TWAPOrder' | 'TWAPBuyOrder'> = {
38
+ ...postData,
39
+ chainId,
40
+ };
41
+
42
+ const search = constructSearchString<{ degenMode?: boolean }>({
43
+ degenMode,
44
+ });
45
+
46
+ const fetchURL = `${postOrderUrl}/${search}` as const;
47
+
48
+ return fetcher<DeltaAuction<'TWAPOrder'> | DeltaAuction<'TWAPBuyOrder'>>({
49
+ url: fetchURL,
50
+ method: 'POST',
51
+ data: deltaOrderToPost,
52
+ requestParams,
53
+ });
54
+ };
55
+
56
+ return { postTWAPDeltaOrder };
57
+ };
@@ -9,6 +9,7 @@ import {
9
9
  SignableDeltaOrderData,
10
10
  } from './helpers/buildDeltaOrderData';
11
11
  import { sanitizeDeltaOrderData } from './helpers/misc';
12
+ import { PreSignatureModuleAbi } from './helpers/abi';
12
13
  import type { ExtractAbiMethodNames } from '../../helpers/misc';
13
14
  import { findPrimaryType } from '../../helpers/providers/helpers';
14
15
  import { constructGetDeltaContract } from './getDeltaContract';
@@ -42,27 +43,6 @@ export type PreSignDeltaOrderFunctions<T> = {
42
43
  preSignDeltaOrder: PreSignDeltaOrder<T>;
43
44
  };
44
45
 
45
- const PreSignatureModuleAbi = [
46
- {
47
- inputs: [
48
- {
49
- internalType: 'bytes32',
50
- name: 'orderHash',
51
- type: 'bytes32',
52
- },
53
- {
54
- internalType: 'bool',
55
- name: 'preSigned',
56
- type: 'bool',
57
- },
58
- ],
59
- name: 'setPreSignature',
60
- outputs: [],
61
- stateMutability: 'nonpayable',
62
- type: 'function',
63
- },
64
- ] as const;
65
-
66
46
  type AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;
67
47
 
68
48
  // returns whatever `contractCaller` returns
@@ -0,0 +1,141 @@
1
+ import { hashTypedData } from 'viem/utils';
2
+ import type {
3
+ ConstructProviderFetchInput,
4
+ RequestParameters,
5
+ TxSendOverrides,
6
+ } from '../../types';
7
+ import {
8
+ produceExternalOrderTypedData,
9
+ SignableExternalOrderData,
10
+ } from './helpers/buildExternalOrderData';
11
+ import { sanitizeExternalOrderData } from './helpers/misc';
12
+ import { PreSignatureModuleAbi } from './helpers/abi';
13
+ import type { ExtractAbiMethodNames } from '../../helpers/misc';
14
+ import { findPrimaryType } from '../../helpers/providers/helpers';
15
+ import { constructGetDeltaContract } from './getDeltaContract';
16
+ import type { ExternalDeltaOrder } from './helpers/types';
17
+
18
+ type HashExternalDeltaOrderTypedData = (
19
+ signableOrderData: SignableExternalOrderData
20
+ ) => string;
21
+
22
+ type HashExternalDeltaOrder = (
23
+ orderData: ExternalDeltaOrder,
24
+ requestParams?: RequestParameters
25
+ ) => Promise<string>;
26
+
27
+ export type SetExternalDeltaOrderPreSignature<T> = (
28
+ orderHash: string,
29
+ overrides?: TxSendOverrides,
30
+ requestParams?: RequestParameters
31
+ ) => Promise<T>;
32
+
33
+ export type PreSignExternalDeltaOrder<T> = (
34
+ signableOrderData: SignableExternalOrderData,
35
+ overrides?: TxSendOverrides,
36
+ requestParams?: RequestParameters
37
+ ) => Promise<T>;
38
+
39
+ export type PreSignExternalDeltaOrderFunctions<T> = {
40
+ hashExternalDeltaOrderTypedData: HashExternalDeltaOrderTypedData;
41
+ hashExternalDeltaOrder: HashExternalDeltaOrder;
42
+ setExternalDeltaOrderPreSignature: SetExternalDeltaOrderPreSignature<T>;
43
+ preSignExternalDeltaOrder: PreSignExternalDeltaOrder<T>;
44
+ };
45
+
46
+ type AvailableMethods = ExtractAbiMethodNames<typeof PreSignatureModuleAbi>;
47
+
48
+ // returns whatever `contractCaller` returns
49
+ // to allow for better versatility
50
+ export const constructPreSignExternalDeltaOrder = <T>(
51
+ options: ConstructProviderFetchInput<T, 'transactCall'>
52
+ ): PreSignExternalDeltaOrderFunctions<T> => {
53
+ const hashExternalDeltaOrderTypedData: HashExternalDeltaOrderTypedData = (
54
+ typedData
55
+ ) => {
56
+ // types allow to pass OrderData & extra_stuff, but tx will break like that
57
+ const typedDataOnly: SignableExternalOrderData = {
58
+ ...typedData,
59
+ data: sanitizeExternalOrderData(typedData.data),
60
+ };
61
+
62
+ const orderHash = produceExternalOrderHash(typedDataOnly);
63
+
64
+ return orderHash;
65
+ };
66
+ // cached internally
67
+ const { getDeltaContract } = constructGetDeltaContract(options);
68
+
69
+ const hashExternalDeltaOrder: HashExternalDeltaOrder = async (
70
+ orderData,
71
+ requestParams
72
+ ) => {
73
+ const ParaswapDelta = await getDeltaContract(requestParams);
74
+ if (!ParaswapDelta) {
75
+ throw new Error(`Delta is not available on chain ${options.chainId}`);
76
+ }
77
+
78
+ const typedData = produceExternalOrderTypedData({
79
+ orderInput: orderData,
80
+ chainId: options.chainId,
81
+ paraswapDeltaAddress: ParaswapDelta,
82
+ });
83
+ return hashExternalDeltaOrderTypedData(typedData);
84
+ };
85
+
86
+ const setExternalDeltaOrderPreSignature: SetExternalDeltaOrderPreSignature<
87
+ T
88
+ > = async (orderHash, overrides = {}, requestParams) => {
89
+ const ParaswapDelta = await getDeltaContract(requestParams);
90
+ if (!ParaswapDelta) {
91
+ throw new Error(`Delta is not available on chain ${options.chainId}`);
92
+ }
93
+
94
+ const res = await options.contractCaller.transactCall<AvailableMethods>({
95
+ address: ParaswapDelta,
96
+ abi: PreSignatureModuleAbi,
97
+ contractMethod: 'setPreSignature',
98
+ args: [orderHash, true],
99
+ overrides,
100
+ });
101
+
102
+ return res;
103
+ };
104
+
105
+ const preSignExternalDeltaOrder: PreSignExternalDeltaOrder<T> = async (
106
+ signableOrderData,
107
+ overrides = {},
108
+ requestParams
109
+ ) => {
110
+ const orderHash = hashExternalDeltaOrderTypedData(signableOrderData);
111
+ const res = await setExternalDeltaOrderPreSignature(
112
+ orderHash,
113
+ overrides,
114
+ requestParams
115
+ );
116
+ return res;
117
+ };
118
+
119
+ return {
120
+ hashExternalDeltaOrderTypedData,
121
+ hashExternalDeltaOrder,
122
+ setExternalDeltaOrderPreSignature,
123
+ preSignExternalDeltaOrder,
124
+ };
125
+ };
126
+
127
+ export function produceExternalOrderHash(
128
+ typedData: SignableExternalOrderData
129
+ ): string {
130
+ return hashTypedData({
131
+ domain: {
132
+ name: typedData.domain.name,
133
+ version: typedData.domain.version,
134
+ chainId: typedData.domain.chainId,
135
+ verifyingContract: typedData.domain.verifyingContract as `0x${string}`,
136
+ },
137
+ types: typedData.types,
138
+ primaryType: findPrimaryType(typedData.types),
139
+ message: typedData.data,
140
+ });
141
+ }