@velora-dex/sdk 9.3.5 → 9.4.0

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 (141) 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 +11 -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/getDeltaOrders.d.ts +14 -6
  13. package/dist/methods/delta/getDeltaOrders.d.ts.map +1 -1
  14. package/dist/methods/delta/getDeltaPrice.d.ts +5 -1
  15. package/dist/methods/delta/getDeltaPrice.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/misc.d.ts +43 -0
  23. package/dist/methods/delta/helpers/misc.d.ts.map +1 -1
  24. package/dist/methods/delta/helpers/types.d.ts +74 -3
  25. package/dist/methods/delta/helpers/types.d.ts.map +1 -1
  26. package/dist/methods/delta/index.d.ts +20 -3
  27. package/dist/methods/delta/index.d.ts.map +1 -1
  28. package/dist/methods/delta/postDeltaOrder.d.ts +6 -9
  29. package/dist/methods/delta/postDeltaOrder.d.ts.map +1 -1
  30. package/dist/methods/delta/postExternalDeltaOrder.d.ts +11 -0
  31. package/dist/methods/delta/postExternalDeltaOrder.d.ts.map +1 -0
  32. package/dist/methods/delta/preSignDeltaOrder.d.ts.map +1 -1
  33. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts +17 -0
  34. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts.map +1 -0
  35. package/dist/methods/delta/signExternalDeltaOrder.d.ts +9 -0
  36. package/dist/methods/delta/signExternalDeltaOrder.d.ts.map +1 -0
  37. package/dist/methods/limitOrders/approveForOrder.d.ts +2 -0
  38. package/dist/methods/limitOrders/approveForOrder.d.ts.map +1 -1
  39. package/dist/methods/limitOrders/buildOrder.d.ts +3 -0
  40. package/dist/methods/limitOrders/buildOrder.d.ts.map +1 -1
  41. package/dist/methods/limitOrders/cancelOrder.d.ts +2 -0
  42. package/dist/methods/limitOrders/cancelOrder.d.ts.map +1 -1
  43. package/dist/methods/limitOrders/fillOrderDirectly.d.ts +2 -0
  44. package/dist/methods/limitOrders/fillOrderDirectly.d.ts.map +1 -1
  45. package/dist/methods/limitOrders/getOrders.d.ts +2 -0
  46. package/dist/methods/limitOrders/getOrders.d.ts.map +1 -1
  47. package/dist/methods/limitOrders/getOrdersContract.d.ts +2 -0
  48. package/dist/methods/limitOrders/getOrdersContract.d.ts.map +1 -1
  49. package/dist/methods/limitOrders/index.d.ts +7 -1
  50. package/dist/methods/limitOrders/index.d.ts.map +1 -1
  51. package/dist/methods/limitOrders/postOrder.d.ts +2 -0
  52. package/dist/methods/limitOrders/postOrder.d.ts.map +1 -1
  53. package/dist/methods/limitOrders/signOrder.d.ts +2 -0
  54. package/dist/methods/limitOrders/signOrder.d.ts.map +1 -1
  55. package/dist/methods/limitOrders/transaction.d.ts +2 -0
  56. package/dist/methods/limitOrders/transaction.d.ts.map +1 -1
  57. package/dist/methods/nftOrders/approveForOrder.d.ts +2 -0
  58. package/dist/methods/nftOrders/approveForOrder.d.ts.map +1 -1
  59. package/dist/methods/nftOrders/buildOrder.d.ts +3 -0
  60. package/dist/methods/nftOrders/buildOrder.d.ts.map +1 -1
  61. package/dist/methods/nftOrders/cancelOrder.d.ts +2 -0
  62. package/dist/methods/nftOrders/cancelOrder.d.ts.map +1 -1
  63. package/dist/methods/nftOrders/getOrders.d.ts +2 -0
  64. package/dist/methods/nftOrders/getOrders.d.ts.map +1 -1
  65. package/dist/methods/nftOrders/getOrdersContract.d.ts +2 -0
  66. package/dist/methods/nftOrders/getOrdersContract.d.ts.map +1 -1
  67. package/dist/methods/nftOrders/helpers/misc.d.ts +1 -0
  68. package/dist/methods/nftOrders/helpers/misc.d.ts.map +1 -1
  69. package/dist/methods/nftOrders/index.d.ts +7 -1
  70. package/dist/methods/nftOrders/index.d.ts.map +1 -1
  71. package/dist/methods/nftOrders/postOrder.d.ts +2 -0
  72. package/dist/methods/nftOrders/postOrder.d.ts.map +1 -1
  73. package/dist/methods/nftOrders/signOrder.d.ts +2 -0
  74. package/dist/methods/nftOrders/signOrder.d.ts.map +1 -1
  75. package/dist/methods/nftOrders/transaction.d.ts +2 -0
  76. package/dist/methods/nftOrders/transaction.d.ts.map +1 -1
  77. package/dist/methods/swap/rates.d.ts +1 -0
  78. package/dist/methods/swap/rates.d.ts.map +1 -1
  79. package/dist/methods/swap/transaction.d.ts +1 -0
  80. package/dist/methods/swap/transaction.d.ts.map +1 -1
  81. package/dist/sdk/full.d.ts +2 -0
  82. package/dist/sdk/full.d.ts.map +1 -1
  83. package/dist/sdk/partial.d.ts +2 -0
  84. package/dist/sdk/partial.d.ts.map +1 -1
  85. package/dist/sdk/simple.d.ts +6 -0
  86. package/dist/sdk/simple.d.ts.map +1 -1
  87. package/dist/sdk.cjs.development.js +689 -119
  88. package/dist/sdk.cjs.development.js.map +1 -1
  89. package/dist/sdk.cjs.production.min.js +1 -1
  90. package/dist/sdk.cjs.production.min.js.map +1 -1
  91. package/dist/sdk.esm.js +685 -120
  92. package/dist/sdk.esm.js.map +1 -1
  93. package/package.json +1 -1
  94. package/src/constants.js +8 -0
  95. package/src/examples/delta.ts +9 -20
  96. package/src/examples/externalDelta.ts +162 -0
  97. package/src/examples/helpers/delta.ts +8 -4
  98. package/src/gas.js +1 -0
  99. package/src/index.js +142 -0
  100. package/src/index.ts +40 -3
  101. package/src/methods/delta/buildDeltaOrder.ts +13 -61
  102. package/src/methods/delta/buildExternalDeltaOrder.ts +124 -0
  103. package/src/methods/delta/getDeltaOrders.ts +31 -13
  104. package/src/methods/delta/getDeltaPrice.ts +9 -1
  105. package/src/methods/delta/helpers/abi.ts +20 -0
  106. package/src/methods/delta/helpers/buildDeltaOrderData.ts +3 -35
  107. package/src/methods/delta/helpers/buildExternalOrderData.ts +129 -0
  108. package/src/methods/delta/helpers/misc.ts +210 -0
  109. package/src/methods/delta/helpers/types.ts +87 -8
  110. package/src/methods/delta/index.ts +84 -3
  111. package/src/methods/delta/postDeltaOrder.ts +20 -13
  112. package/src/methods/delta/postExternalDeltaOrder.ts +45 -0
  113. package/src/methods/delta/preSignDeltaOrder.ts +1 -21
  114. package/src/methods/delta/preSignExternalDeltaOrder.ts +141 -0
  115. package/src/methods/delta/signExternalDeltaOrder.ts +35 -0
  116. package/src/methods/limitOrders/approveForOrder.ts +2 -0
  117. package/src/methods/limitOrders/buildOrder.ts +3 -0
  118. package/src/methods/limitOrders/cancelOrder.ts +2 -0
  119. package/src/methods/limitOrders/fillOrderDirectly.ts +2 -0
  120. package/src/methods/limitOrders/getOrders.ts +2 -0
  121. package/src/methods/limitOrders/getOrdersContract.ts +2 -0
  122. package/src/methods/limitOrders/index.ts +7 -1
  123. package/src/methods/limitOrders/postOrder.ts +2 -0
  124. package/src/methods/limitOrders/signOrder.ts +2 -0
  125. package/src/methods/limitOrders/transaction.ts +2 -0
  126. package/src/methods/nftOrders/approveForOrder.ts +2 -0
  127. package/src/methods/nftOrders/buildOrder.ts +3 -0
  128. package/src/methods/nftOrders/cancelOrder.ts +2 -0
  129. package/src/methods/nftOrders/getOrders.ts +2 -0
  130. package/src/methods/nftOrders/getOrdersContract.ts +2 -0
  131. package/src/methods/nftOrders/helpers/misc.ts +1 -0
  132. package/src/methods/nftOrders/index.ts +7 -1
  133. package/src/methods/nftOrders/postOrder.ts +2 -0
  134. package/src/methods/nftOrders/signOrder.ts +2 -0
  135. package/src/methods/nftOrders/transaction.ts +2 -0
  136. package/src/methods/swap/rates.ts +2 -0
  137. package/src/methods/swap/transaction.ts +1 -0
  138. package/src/sdk/full.ts +2 -0
  139. package/src/sdk/partial.ts +2 -0
  140. package/src/sdk/simple.ts +6 -0
  141. package/src/types.js +1 -0
@@ -1,5 +1,44 @@
1
+ import type { EnumerateLiteral } from '../../../types';
1
2
  import { SwapSide } from '../../../constants';
2
3
 
4
+ export type SwapSideUnion = EnumerateLiteral<typeof SwapSide>;
5
+
6
+ /** @description SELL with slippage: srcAmount provided, destAmount auto-computed from deltaPrice.destAmount */
7
+ export type AmountsSellSlippage = {
8
+ /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */
9
+ slippage: number;
10
+ /** @description The amount of src token to swap */
11
+ srcAmount: string;
12
+ destAmount?: never;
13
+ /** @description The side of the order */
14
+ side?: 'SELL';
15
+ };
16
+ /** @description BUY with slippage: destAmount provided, srcAmount auto-computed from deltaPrice.srcAmount */
17
+ export type AmountsBuySlippage = {
18
+ /** @description Slippage in basis points (bps). 10000 = 100%, 50 = 0.5% */
19
+ slippage: number;
20
+ /** @description The minimum amount of dest token to receive */
21
+ destAmount: string;
22
+ srcAmount?: never;
23
+ /** @description The side of the order */
24
+ side?: 'BUY';
25
+ };
26
+ /** @description Explicit amounts, no slippage (backward-compatible) */
27
+ export type AmountsExplicit = {
28
+ slippage?: never;
29
+ /** @description The amount of src token to swap */
30
+ srcAmount: string;
31
+ /** @description The minimum amount of dest token to receive */
32
+ destAmount: string;
33
+ /** @description The side of the order. Default is SELL */
34
+ side?: SwapSideUnion;
35
+ };
36
+
37
+ export type AmountsWithSlippage =
38
+ | AmountsSellSlippage
39
+ | AmountsBuySlippage
40
+ | AmountsExplicit;
41
+
3
42
  enum OrderKind {
4
43
  Sell = 0,
5
44
  Buy = 1,
@@ -52,6 +91,37 @@ export type Bridge = {
52
91
  protocolData: string; // Hex string
53
92
  };
54
93
 
94
+ export type ExternalDeltaOrder = {
95
+ /** @description The address of the order owner */
96
+ owner: string;
97
+ /** @description The address of the external handler contract */
98
+ handler: string;
99
+ /** @description The address of the src token */
100
+ srcToken: string;
101
+ /** @description The address of the dest token */
102
+ destToken: string;
103
+ /** @description The amount of src token to swap */
104
+ srcAmount: string;
105
+ /** @description The minimum amount of dest token to receive */
106
+ destAmount: string;
107
+ /** @description The expected amount of token to receive */
108
+ expectedAmount: string;
109
+ /** @description The kind of the order */
110
+ kind: OrderKind;
111
+ /** @description Metadata for the order, hex string */
112
+ metadata: string;
113
+ /** @description The deadline for the order */
114
+ deadline: number;
115
+ /** @description The nonce of the order */
116
+ nonce: string;
117
+ /** @description Optional permit signature for the src token */
118
+ permit: string;
119
+ /** @description Encoded partner address, fee bps, and flags for the order */
120
+ partnerAndFee: string;
121
+ /** @description Protocol-specific encoded bytes for the external handler */
122
+ data: string;
123
+ };
124
+
55
125
  export type DeltaAuctionStatus =
56
126
  | 'NOT_STARTED'
57
127
  | 'AWAITING_PRE_SIGNATURE'
@@ -92,13 +162,16 @@ type DeltaAuctionTransaction = {
92
162
  auctionId: string;
93
163
  };
94
164
 
95
- export type DeltaAuction = {
165
+ export type OnChainOrderMap = {
166
+ Order: DeltaAuctionOrder;
167
+ ExternalOrder: ExternalDeltaOrder;
168
+ };
169
+
170
+ type DeltaAuctionBase = {
96
171
  id: string;
97
172
  deltaVersion: string; // 1.0 or 2.0 currently
98
173
  user: string;
99
- signature: string;
100
174
  status: DeltaAuctionStatus;
101
- order: DeltaAuctionOrder;
102
175
  orderHash: string | null; // not available on old Orders only
103
176
  transactions: DeltaAuctionTransaction[];
104
177
  chainId: number;
@@ -115,13 +188,17 @@ export type DeltaAuction = {
115
188
  bridgeMetadata: BridgeMetadata | null;
116
189
  bridgeStatus: BridgeStatus | null;
117
190
 
118
- // @TODO only returned after POST Order so far
119
- // orderVersion: string; // "2.0.0"
120
- // deltaGasOverhead: number;
121
-
122
- type: 'MARKET' | 'LIMIT'; // @TODO when available in API for individual /order/:hash|:id
191
+ type: 'MARKET' | 'LIMIT';
123
192
  };
124
193
 
194
+ export type DeltaAuction<T extends OnChainOrderType = OnChainOrderType> =
195
+ T extends T
196
+ ? DeltaAuctionBase & {
197
+ onChainOrderType: T;
198
+ order: OnChainOrderMap[T];
199
+ }
200
+ : never;
201
+
125
202
  export type BridgeMetadata = {
126
203
  /** @description The amount that user should expect to get */
127
204
  outputAmount: string;
@@ -138,6 +215,8 @@ export type BridgeMetadata = {
138
215
  // refunded is basically failed
139
216
  export type BridgeStatus = 'pending' | 'filled' | 'expired' | 'refunded';
140
217
 
218
+ export type OnChainOrderType = 'Order' | 'ExternalOrder';
219
+
141
220
  //// available on BridgePrice ////
142
221
 
143
222
  type BridgeQuoteFee = {
@@ -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,17 +54,35 @@ 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';
57
74
 
58
75
  export type SubmitDeltaOrderParams = BuildDeltaOrderDataParams & {
59
76
  /** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */
60
77
  partiallyFillable?: boolean;
61
78
  /** @description Referrer address */
62
79
  referrerAddress?: string;
80
+ degenMode?: boolean;
63
81
  } & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;
64
82
 
65
83
  type SubmitDeltaOrder = (
66
84
  orderParams: SubmitDeltaOrderParams
67
- ) => Promise<DeltaOrderApiResponse>;
85
+ ) => Promise<DeltaAuction<'Order'>>;
68
86
 
69
87
  export type SubmitDeltaOrderFuncs = {
70
88
  submitDeltaOrder: SubmitDeltaOrder;
@@ -91,6 +109,7 @@ export const constructSubmitDeltaOrder = (
91
109
  type: orderParams.type,
92
110
  includeAgents: orderParams.includeAgents,
93
111
  excludeAgents: orderParams.excludeAgents,
112
+ degenMode: orderParams.degenMode,
94
113
  });
95
114
 
96
115
  return response;
@@ -99,6 +118,51 @@ export const constructSubmitDeltaOrder = (
99
118
  return { submitDeltaOrder };
100
119
  };
101
120
 
121
+ export type SubmitExternalDeltaOrderParams = BuildExternalDeltaOrderParams & {
122
+ /** @description designates the Order as being able to be partially filled, as opposed to fill-or-kill */
123
+ partiallyFillable?: boolean;
124
+ /** @description Referrer address */
125
+ referrerAddress?: string;
126
+ } & Pick<DeltaOrderToPost, 'type' | 'includeAgents' | 'excludeAgents'>;
127
+
128
+ type SubmitExternalDeltaOrder = (
129
+ orderParams: SubmitExternalDeltaOrderParams
130
+ ) => Promise<DeltaAuction<'ExternalOrder'>>;
131
+
132
+ export type SubmitExternalDeltaOrderFuncs = {
133
+ submitExternalDeltaOrder: SubmitExternalDeltaOrder;
134
+ };
135
+
136
+ export const constructSubmitExternalDeltaOrder = (
137
+ options: ConstructProviderFetchInput<any, 'signTypedDataCall'>
138
+ ): SubmitExternalDeltaOrderFuncs => {
139
+ const { buildExternalDeltaOrder } = constructBuildExternalDeltaOrder(options);
140
+ const { signExternalDeltaOrder } = constructSignExternalDeltaOrder(options);
141
+ const { postExternalDeltaOrder } = constructPostExternalDeltaOrder(options);
142
+
143
+ const submitExternalDeltaOrder: SubmitExternalDeltaOrder = async (
144
+ orderParams
145
+ ) => {
146
+ const orderData = await buildExternalDeltaOrder(orderParams);
147
+ const signature = await signExternalDeltaOrder(orderData);
148
+
149
+ const response = await postExternalDeltaOrder({
150
+ signature,
151
+ partner: orderParams.partner,
152
+ order: orderData.data,
153
+ partiallyFillable: orderParams.partiallyFillable,
154
+ referrerAddress: orderParams.referrerAddress,
155
+ type: orderParams.type,
156
+ includeAgents: orderParams.includeAgents,
157
+ excludeAgents: orderParams.excludeAgents,
158
+ });
159
+
160
+ return response;
161
+ };
162
+
163
+ return { submitExternalDeltaOrder };
164
+ };
165
+
102
166
  export type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &
103
167
  ApproveTokenForDeltaFunctions<T> &
104
168
  BuildDeltaOrderFunctions &
@@ -112,7 +176,12 @@ export type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &
112
176
  SignDeltaOrderFunctions &
113
177
  PreSignDeltaOrderFunctions<T> &
114
178
  CancelDeltaOrderFunctions &
115
- DeltaTokenModuleFunctions<T>;
179
+ DeltaTokenModuleFunctions<T> &
180
+ SubmitExternalDeltaOrderFuncs &
181
+ BuildExternalDeltaOrderFunctions &
182
+ SignExternalDeltaOrderFunctions &
183
+ PostExternalDeltaOrderFunctions &
184
+ PreSignExternalDeltaOrderFunctions<T>;
116
185
 
117
186
  /** @description construct SDK with every Delta Order-related method, fetching from API and Order signing */
118
187
  export const constructAllDeltaOrdersHandlers = <TxResponse>(
@@ -142,6 +211,13 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
142
211
 
143
212
  const deltaTokenModule = constructDeltaTokenModule(options);
144
213
 
214
+ const externalDeltaOrdersSubmit = constructSubmitExternalDeltaOrder(options);
215
+ const externalDeltaOrdersBuild = constructBuildExternalDeltaOrder(options);
216
+ const externalDeltaOrdersSign = constructSignExternalDeltaOrder(options);
217
+ const externalDeltaOrdersPost = constructPostExternalDeltaOrder(options);
218
+ const externalDeltaOrdersPreSign =
219
+ constructPreSignExternalDeltaOrder(options);
220
+
145
221
  return {
146
222
  ...deltaOrdersGetters,
147
223
  ...deltaOrdersContractGetter,
@@ -157,5 +233,10 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
157
233
  ...deltaOrdersPost,
158
234
  ...deltaOrdersCancel,
159
235
  ...deltaTokenModule,
236
+ ...externalDeltaOrdersSubmit,
237
+ ...externalDeltaOrdersBuild,
238
+ ...externalDeltaOrdersSign,
239
+ ...externalDeltaOrdersPost,
240
+ ...externalDeltaOrdersPreSign,
160
241
  };
161
242
  };
@@ -1,13 +1,18 @@
1
1
  import { API_URL } from '../../constants';
2
+ import { constructSearchString } from '../../helpers/misc';
2
3
  import type { ConstructFetchInput, RequestParameters } from '../../types';
3
- import { DeltaAuctionOrder, DeltaAuction } from './helpers/types';
4
+ import type {
5
+ DeltaAuction,
6
+ OnChainOrderMap,
7
+ OnChainOrderType,
8
+ } from './helpers/types';
4
9
 
5
- export type DeltaOrderToPost = {
10
+ export type DeltaOrderToPost<T extends OnChainOrderType = 'Order'> = {
6
11
  /** @description Partner string */
7
12
  partner?: string;
8
13
  /** @description Referrer address */
9
14
  referrerAddress?: string;
10
- order: DeltaAuctionOrder;
15
+ order: OnChainOrderMap[T];
11
16
  /** @description Signature of the order from order.owner address. EOA signatures must be submitted in ERC-2098 Compact Representation. */
12
17
  signature: string;
13
18
  chainId: number;
@@ -21,18 +26,14 @@ export type DeltaOrderToPost = {
21
26
  excludeAgents?: string[];
22
27
  };
23
28
 
24
- export type PostDeltaOrderParams = Omit<DeltaOrderToPost, 'chainId'>;
25
-
26
- export type DeltaOrderApiResponse = Omit<DeltaAuction, 'transactions'> & {
27
- orderVersion: string; // "2.0.0"
28
- deltaGasOverhead: number; // @TODO may be removed
29
- type: 'MARKET' | 'LIMIT';
29
+ export type PostDeltaOrderParams = Omit<DeltaOrderToPost, 'chainId'> & {
30
+ degenMode?: boolean;
30
31
  };
31
32
 
32
33
  type PostDeltaOrder = (
33
34
  postData: PostDeltaOrderParams,
34
35
  requestParams?: RequestParameters
35
- ) => Promise<DeltaOrderApiResponse>;
36
+ ) => Promise<DeltaAuction<'Order'>>;
36
37
 
37
38
  export type PostDeltaOrderFunctions = {
38
39
  postDeltaOrder: PostDeltaOrder;
@@ -45,11 +46,17 @@ export const constructPostDeltaOrder = ({
45
46
  }: ConstructFetchInput): PostDeltaOrderFunctions => {
46
47
  const postOrderUrl = `${apiURL}/delta/orders` as const;
47
48
 
48
- const postDeltaOrder: PostDeltaOrder = (postData, requestParams) => {
49
+ const postDeltaOrder: PostDeltaOrder = (_postData, requestParams) => {
50
+ const { degenMode, ...postData } = _postData;
49
51
  const deltaOrderToPost: DeltaOrderToPost = { ...postData, chainId };
50
52
 
51
- return fetcher<DeltaOrderApiResponse>({
52
- url: postOrderUrl,
53
+ const search = constructSearchString<{ degenMode?: boolean }>({
54
+ degenMode,
55
+ });
56
+ const fetchURL = `${postOrderUrl}/${search}` as const;
57
+
58
+ return fetcher<DeltaAuction<'Order'>>({
59
+ url: fetchURL,
53
60
  method: 'POST',
54
61
  data: deltaOrderToPost,
55
62
  requestParams,
@@ -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
+ };
@@ -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
+ }
@@ -0,0 +1,35 @@
1
+ import type { ConstructProviderFetchInput } from '../../types';
2
+ import { SignableExternalOrderData } from './helpers/buildExternalOrderData';
3
+ import { sanitizeExternalOrderData } from './helpers/misc';
4
+
5
+ type SignExternalDeltaOrder = (
6
+ signableOrderData: SignableExternalOrderData
7
+ ) => Promise<string>;
8
+
9
+ export type SignExternalDeltaOrderFunctions = {
10
+ signExternalDeltaOrder: SignExternalDeltaOrder;
11
+ };
12
+
13
+ // returns whatever `contractCaller` returns
14
+ // to allow for better versatility
15
+ export const constructSignExternalDeltaOrder = (
16
+ options: Pick<
17
+ ConstructProviderFetchInput<any, 'signTypedDataCall'>,
18
+ 'contractCaller'
19
+ >
20
+ ): SignExternalDeltaOrderFunctions => {
21
+ const signExternalDeltaOrder: SignExternalDeltaOrder = async (typedData) => {
22
+ // types allow to pass OrderData & extra_stuff, but tx will break like that
23
+ const typedDataOnly: SignableExternalOrderData = {
24
+ ...typedData,
25
+ data: sanitizeExternalOrderData(typedData.data),
26
+ };
27
+ const signature = await options.contractCaller.signTypedDataCall(
28
+ typedDataOnly
29
+ );
30
+
31
+ return signature;
32
+ };
33
+
34
+ return { signExternalDeltaOrder };
35
+ };
@@ -3,6 +3,7 @@ import { ApproveToken, approveTokenMethodFactory } from '../../helpers/approve';
3
3
  import { constructApproveToken } from '../swap/approve';
4
4
  import { constructGetSpender } from '../swap/spender';
5
5
 
6
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
6
7
  export type ApproveTokenForLimitOrderFunctions<T> = {
7
8
  /** @description approving AugustusRFQ as spender for makerAsset */
8
9
  approveMakerTokenForLimitOrder: ApproveToken<T>;
@@ -14,6 +15,7 @@ export type ApproveTokenForLimitOrderFunctions<T> = {
14
15
 
15
16
  // returns whatever `contractCaller` returns
16
17
  // to allow for better versatility
18
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
17
19
  export const constructApproveTokenForLimitOrder = <T>(
18
20
  options: ConstructProviderFetchInput<T, 'transactCall'>
19
21
  ): ApproveTokenForLimitOrderFunctions<T> => {
@@ -8,6 +8,7 @@ import {
8
8
  } from './helpers/buildOrderData';
9
9
  export * from './helpers/buildOrderData';
10
10
 
11
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
11
12
  export type BuildLimitOrderInput = Omit<
12
13
  BuildOrderDataInput,
13
14
  'chainId' | 'verifyingContract' | 'AugustusAddress' | 'AppVersion'
@@ -18,11 +19,13 @@ type BuildLimitOrder = (
18
19
  requestParams?: RequestParameters
19
20
  ) => Promise<SignableOrderData>;
20
21
 
22
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
21
23
  export type BuildLimitOrderFunctions = {
22
24
  /** @description Build Orders that will be excuted through AugustusSwapper */
23
25
  buildLimitOrder: BuildLimitOrder;
24
26
  };
25
27
 
28
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
26
29
  export const constructBuildLimitOrder = (
27
30
  options: ConstructFetchInput
28
31
  ): BuildLimitOrderFunctions => {
@@ -18,6 +18,7 @@ export type CancelOrderBulk<T> = (
18
18
  requestParams?: RequestParameters
19
19
  ) => Promise<T>;
20
20
 
21
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
21
22
  export type CancelLimitOrderFunctions<T> = {
22
23
  cancelLimitOrder: CancelOrder<T>;
23
24
  cancelLimitOrderBulk: CancelOrderBulk<T>;
@@ -57,6 +58,7 @@ type AvailableMethods = ExtractAbiMethodNames<typeof MinAugustusRFQAbi>;
57
58
 
58
59
  // returns whatever `contractCaller` returns
59
60
  // to allow for better versatility
61
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
60
62
  export const constructCancelLimitOrder = <T>(
61
63
  options: ConstructProviderFetchInput<T, 'transactCall'>
62
64
  ): CancelLimitOrderFunctions<T> => {
@@ -12,6 +12,7 @@ import {
12
12
  encodeEIP_2612PermitFunctionInput,
13
13
  } from '../common/orders/encoding';
14
14
 
15
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
15
16
  export type FillOrderDirectlyFunctions<T> = {
16
17
  fillOrderDirectly: FillOrderDirectly<T>;
17
18
  };
@@ -204,6 +205,7 @@ type FillOrderMethods = ExtractAbiMethodNames<typeof MinAugustusRFQAbi>;
204
205
 
205
206
  // returns whatever `contractCaller` returns
206
207
  // to allow for better versatility
208
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
207
209
  export function constructFillOrderDirectly<T>(
208
210
  options: ConstructProviderFetchInput<T, 'transactCall'>
209
211
  ): FillOrderDirectlyFunctions<T> {