@velora-dex/sdk 9.3.6 → 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 (132) 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/helpers/abi.d.ts +16 -0
  15. package/dist/methods/delta/helpers/abi.d.ts.map +1 -0
  16. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts +0 -1
  17. package/dist/methods/delta/helpers/buildDeltaOrderData.d.ts.map +1 -1
  18. package/dist/methods/delta/helpers/buildExternalOrderData.d.ts +34 -0
  19. package/dist/methods/delta/helpers/buildExternalOrderData.d.ts.map +1 -0
  20. package/dist/methods/delta/helpers/misc.d.ts +43 -0
  21. package/dist/methods/delta/helpers/misc.d.ts.map +1 -1
  22. package/dist/methods/delta/helpers/types.d.ts +74 -3
  23. package/dist/methods/delta/helpers/types.d.ts.map +1 -1
  24. package/dist/methods/delta/index.d.ts +19 -3
  25. package/dist/methods/delta/index.d.ts.map +1 -1
  26. package/dist/methods/delta/postDeltaOrder.d.ts +4 -9
  27. package/dist/methods/delta/postDeltaOrder.d.ts.map +1 -1
  28. package/dist/methods/delta/postExternalDeltaOrder.d.ts +11 -0
  29. package/dist/methods/delta/postExternalDeltaOrder.d.ts.map +1 -0
  30. package/dist/methods/delta/preSignDeltaOrder.d.ts.map +1 -1
  31. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts +17 -0
  32. package/dist/methods/delta/preSignExternalDeltaOrder.d.ts.map +1 -0
  33. package/dist/methods/delta/signExternalDeltaOrder.d.ts +9 -0
  34. package/dist/methods/delta/signExternalDeltaOrder.d.ts.map +1 -0
  35. package/dist/methods/limitOrders/approveForOrder.d.ts +2 -0
  36. package/dist/methods/limitOrders/approveForOrder.d.ts.map +1 -1
  37. package/dist/methods/limitOrders/buildOrder.d.ts +3 -0
  38. package/dist/methods/limitOrders/buildOrder.d.ts.map +1 -1
  39. package/dist/methods/limitOrders/cancelOrder.d.ts +2 -0
  40. package/dist/methods/limitOrders/cancelOrder.d.ts.map +1 -1
  41. package/dist/methods/limitOrders/fillOrderDirectly.d.ts +2 -0
  42. package/dist/methods/limitOrders/fillOrderDirectly.d.ts.map +1 -1
  43. package/dist/methods/limitOrders/getOrders.d.ts +2 -0
  44. package/dist/methods/limitOrders/getOrders.d.ts.map +1 -1
  45. package/dist/methods/limitOrders/getOrdersContract.d.ts +2 -0
  46. package/dist/methods/limitOrders/getOrdersContract.d.ts.map +1 -1
  47. package/dist/methods/limitOrders/index.d.ts +7 -1
  48. package/dist/methods/limitOrders/index.d.ts.map +1 -1
  49. package/dist/methods/limitOrders/postOrder.d.ts +2 -0
  50. package/dist/methods/limitOrders/postOrder.d.ts.map +1 -1
  51. package/dist/methods/limitOrders/signOrder.d.ts +2 -0
  52. package/dist/methods/limitOrders/signOrder.d.ts.map +1 -1
  53. package/dist/methods/limitOrders/transaction.d.ts +2 -0
  54. package/dist/methods/limitOrders/transaction.d.ts.map +1 -1
  55. package/dist/methods/nftOrders/approveForOrder.d.ts +2 -0
  56. package/dist/methods/nftOrders/approveForOrder.d.ts.map +1 -1
  57. package/dist/methods/nftOrders/buildOrder.d.ts +3 -0
  58. package/dist/methods/nftOrders/buildOrder.d.ts.map +1 -1
  59. package/dist/methods/nftOrders/cancelOrder.d.ts +2 -0
  60. package/dist/methods/nftOrders/cancelOrder.d.ts.map +1 -1
  61. package/dist/methods/nftOrders/getOrders.d.ts +2 -0
  62. package/dist/methods/nftOrders/getOrders.d.ts.map +1 -1
  63. package/dist/methods/nftOrders/getOrdersContract.d.ts +2 -0
  64. package/dist/methods/nftOrders/getOrdersContract.d.ts.map +1 -1
  65. package/dist/methods/nftOrders/helpers/misc.d.ts +1 -0
  66. package/dist/methods/nftOrders/helpers/misc.d.ts.map +1 -1
  67. package/dist/methods/nftOrders/index.d.ts +7 -1
  68. package/dist/methods/nftOrders/index.d.ts.map +1 -1
  69. package/dist/methods/nftOrders/postOrder.d.ts +2 -0
  70. package/dist/methods/nftOrders/postOrder.d.ts.map +1 -1
  71. package/dist/methods/nftOrders/signOrder.d.ts +2 -0
  72. package/dist/methods/nftOrders/signOrder.d.ts.map +1 -1
  73. package/dist/methods/nftOrders/transaction.d.ts +2 -0
  74. package/dist/methods/nftOrders/transaction.d.ts.map +1 -1
  75. package/dist/sdk/full.d.ts +2 -0
  76. package/dist/sdk/full.d.ts.map +1 -1
  77. package/dist/sdk/partial.d.ts +2 -0
  78. package/dist/sdk/partial.d.ts.map +1 -1
  79. package/dist/sdk/simple.d.ts +6 -0
  80. package/dist/sdk/simple.d.ts.map +1 -1
  81. package/dist/sdk.cjs.development.js +657 -95
  82. package/dist/sdk.cjs.development.js.map +1 -1
  83. package/dist/sdk.cjs.production.min.js +1 -1
  84. package/dist/sdk.cjs.production.min.js.map +1 -1
  85. package/dist/sdk.esm.js +653 -96
  86. package/dist/sdk.esm.js.map +1 -1
  87. package/package.json +1 -1
  88. package/src/constants.js +8 -0
  89. package/src/examples/delta.ts +9 -20
  90. package/src/examples/externalDelta.ts +162 -0
  91. package/src/examples/helpers/delta.ts +8 -4
  92. package/src/gas.js +1 -0
  93. package/src/index.js +142 -0
  94. package/src/index.ts +40 -3
  95. package/src/methods/delta/buildDeltaOrder.ts +13 -61
  96. package/src/methods/delta/buildExternalDeltaOrder.ts +124 -0
  97. package/src/methods/delta/getDeltaOrders.ts +31 -13
  98. package/src/methods/delta/helpers/abi.ts +20 -0
  99. package/src/methods/delta/helpers/buildDeltaOrderData.ts +3 -35
  100. package/src/methods/delta/helpers/buildExternalOrderData.ts +129 -0
  101. package/src/methods/delta/helpers/misc.ts +210 -0
  102. package/src/methods/delta/helpers/types.ts +87 -8
  103. package/src/methods/delta/index.ts +82 -3
  104. package/src/methods/delta/postDeltaOrder.ts +9 -11
  105. package/src/methods/delta/postExternalDeltaOrder.ts +45 -0
  106. package/src/methods/delta/preSignDeltaOrder.ts +1 -21
  107. package/src/methods/delta/preSignExternalDeltaOrder.ts +141 -0
  108. package/src/methods/delta/signExternalDeltaOrder.ts +35 -0
  109. package/src/methods/limitOrders/approveForOrder.ts +2 -0
  110. package/src/methods/limitOrders/buildOrder.ts +3 -0
  111. package/src/methods/limitOrders/cancelOrder.ts +2 -0
  112. package/src/methods/limitOrders/fillOrderDirectly.ts +2 -0
  113. package/src/methods/limitOrders/getOrders.ts +2 -0
  114. package/src/methods/limitOrders/getOrdersContract.ts +2 -0
  115. package/src/methods/limitOrders/index.ts +7 -1
  116. package/src/methods/limitOrders/postOrder.ts +2 -0
  117. package/src/methods/limitOrders/signOrder.ts +2 -0
  118. package/src/methods/limitOrders/transaction.ts +2 -0
  119. package/src/methods/nftOrders/approveForOrder.ts +2 -0
  120. package/src/methods/nftOrders/buildOrder.ts +3 -0
  121. package/src/methods/nftOrders/cancelOrder.ts +2 -0
  122. package/src/methods/nftOrders/getOrders.ts +2 -0
  123. package/src/methods/nftOrders/getOrdersContract.ts +2 -0
  124. package/src/methods/nftOrders/helpers/misc.ts +1 -0
  125. package/src/methods/nftOrders/index.ts +7 -1
  126. package/src/methods/nftOrders/postOrder.ts +2 -0
  127. package/src/methods/nftOrders/signOrder.ts +2 -0
  128. package/src/methods/nftOrders/transaction.ts +2 -0
  129. package/src/sdk/full.ts +2 -0
  130. package/src/sdk/partial.ts +2 -0
  131. package/src/sdk/simple.ts +6 -0
  132. 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,6 +54,23 @@ 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 */
@@ -65,7 +82,7 @@ export type SubmitDeltaOrderParams = BuildDeltaOrderDataParams & {
65
82
 
66
83
  type SubmitDeltaOrder = (
67
84
  orderParams: SubmitDeltaOrderParams
68
- ) => Promise<DeltaOrderApiResponse>;
85
+ ) => Promise<DeltaAuction<'Order'>>;
69
86
 
70
87
  export type SubmitDeltaOrderFuncs = {
71
88
  submitDeltaOrder: SubmitDeltaOrder;
@@ -101,6 +118,51 @@ export const constructSubmitDeltaOrder = (
101
118
  return { submitDeltaOrder };
102
119
  };
103
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
+
104
166
  export type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &
105
167
  ApproveTokenForDeltaFunctions<T> &
106
168
  BuildDeltaOrderFunctions &
@@ -114,7 +176,12 @@ export type DeltaOrderHandlers<T> = SubmitDeltaOrderFuncs &
114
176
  SignDeltaOrderFunctions &
115
177
  PreSignDeltaOrderFunctions<T> &
116
178
  CancelDeltaOrderFunctions &
117
- DeltaTokenModuleFunctions<T>;
179
+ DeltaTokenModuleFunctions<T> &
180
+ SubmitExternalDeltaOrderFuncs &
181
+ BuildExternalDeltaOrderFunctions &
182
+ SignExternalDeltaOrderFunctions &
183
+ PostExternalDeltaOrderFunctions &
184
+ PreSignExternalDeltaOrderFunctions<T>;
118
185
 
119
186
  /** @description construct SDK with every Delta Order-related method, fetching from API and Order signing */
120
187
  export const constructAllDeltaOrdersHandlers = <TxResponse>(
@@ -144,6 +211,13 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
144
211
 
145
212
  const deltaTokenModule = constructDeltaTokenModule(options);
146
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
+
147
221
  return {
148
222
  ...deltaOrdersGetters,
149
223
  ...deltaOrdersContractGetter,
@@ -159,5 +233,10 @@ export const constructAllDeltaOrdersHandlers = <TxResponse>(
159
233
  ...deltaOrdersPost,
160
234
  ...deltaOrdersCancel,
161
235
  ...deltaTokenModule,
236
+ ...externalDeltaOrdersSubmit,
237
+ ...externalDeltaOrdersBuild,
238
+ ...externalDeltaOrdersSign,
239
+ ...externalDeltaOrdersPost,
240
+ ...externalDeltaOrdersPreSign,
162
241
  };
163
242
  };
@@ -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
+ };
@@ -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> {
@@ -52,6 +52,7 @@ type GetRequiredBalance = (
52
52
  requestParams?: RequestParameters
53
53
  ) => Promise<Record<string, string>>;
54
54
 
55
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
55
56
  export type GetLimitOrdersFunctions = {
56
57
  getLimitOrders: GetLimitOrders;
57
58
  getLimitOrderByHash: GetLimitOrderByHash;
@@ -67,6 +68,7 @@ export type GetLimitOrdersFunctions = {
67
68
  getRequiredBalance: GetRequiredBalance;
68
69
  };
69
70
 
71
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
70
72
  export const constructGetLimitOrders = ({
71
73
  apiURL = API_URL,
72
74
  chainId,
@@ -1,11 +1,13 @@
1
1
  import type { ConstructFetchInput } from '../../types';
2
2
  import { constructGetSpender, GetSpender } from '../swap/spender';
3
3
 
4
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
4
5
  export type GetLimitOrdersContractFunctions = {
5
6
  getLimitOrdersContract: GetSpender;
6
7
  getTokenTransferProxy: GetSpender;
7
8
  };
8
9
 
10
+ /** @deprecated Limit Orders are deprecated and will be removed in a future version. */
9
11
  export const constructGetLimitOrdersContract = (
10
12
  options: ConstructFetchInput
11
13
  ): GetLimitOrdersContractFunctions => {