@reyaxyz/api-sdk 0.112.0 → 0.113.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.
package/README.md CHANGED
@@ -6,5 +6,5 @@
6
6
 
7
7
  | Statements | Branches | Functions | Lines |
8
8
  | --------------------------- | ----------------------- | ------------------------- | ----------------- |
9
- | ![Statements](https://img.shields.io/badge/statements-1.67%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-7.96%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0.64%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-1.68%25-red.svg?style=flat) |
9
+ | ![Statements](https://img.shields.io/badge/statements-1.71%25-red.svg?style=flat) | ![Branches](https://img.shields.io/badge/branches-7.75%25-red.svg?style=flat) | ![Functions](https://img.shields.io/badge/functions-0.66%25-red.svg?style=flat) | ![Lines](https://img.shields.io/badge/lines-1.72%25-red.svg?style=flat) |
10
10
 
@@ -73,18 +73,6 @@ var ConditionalOrdersClient = /** @class */ (function (_super) {
73
73
  });
74
74
  });
75
75
  };
76
- ConditionalOrdersClient.prototype.getConditionalOrdersHistoryForMarginAccountPaginated = function (params) {
77
- return __awaiter(this, void 0, void 0, function () {
78
- var uri;
79
- return __generator(this, function (_a) {
80
- uri = "/api/conditional-orders/get-orders-by-account/".concat(params.marginAccountId, "/paginated");
81
- return [2 /*return*/, this.get(uri, {
82
- page: params.page,
83
- perPage: params.perPage,
84
- })];
85
- });
86
- });
87
- };
88
76
  ConditionalOrdersClient.prototype.alreadyGaveTradePermissions = function (params) {
89
77
  return __awaiter(this, void 0, void 0, function () {
90
78
  var uri, response;
@@ -102,23 +90,6 @@ var ConditionalOrdersClient = /** @class */ (function (_super) {
102
90
  });
103
91
  });
104
92
  };
105
- ConditionalOrdersClient.prototype.cancelSLOrder = function (params) {
106
- return __awaiter(this, void 0, void 0, function () {
107
- var signature, uri;
108
- return __generator(this, function (_a) {
109
- switch (_a.label) {
110
- case 0: return [4 /*yield*/, (0, common_1.signCancelConditionalOrder)(params.signer, params.orderId)];
111
- case 1:
112
- signature = _a.sent();
113
- uri = "/api/conditional-orders/sl/cancel-order";
114
- return [2 /*return*/, this.put(uri, {}, {
115
- orderId: params.orderId,
116
- userSignature: signature,
117
- })];
118
- }
119
- });
120
- });
121
- };
122
93
  ConditionalOrdersClient.prototype.cancelConditionalOrder = function (params) {
123
94
  return __awaiter(this, void 0, void 0, function () {
124
95
  var signature, uri, res;
@@ -139,70 +110,36 @@ var ConditionalOrdersClient = /** @class */ (function (_super) {
139
110
  });
140
111
  });
141
112
  };
142
- ConditionalOrdersClient.prototype.registerSLOrder = function (params) {
143
- return __awaiter(this, void 0, void 0, function () {
144
- var inputs, uri, _a, _b;
145
- var _c;
146
- return __generator(this, function (_d) {
147
- switch (_d.label) {
148
- case 0: return [4 /*yield*/, this.parseSlOrderInputs(params.signer, params.marginAccountId, params.marketId, params.stopLossPrice, params.supportingParams.exchangeId, params.supportingParams.counterpartyAccountIds)];
149
- case 1:
150
- inputs = _d.sent();
151
- uri = "/api/conditional-orders/sl/create-order";
152
- _a = this.post;
153
- _b = [uri,
154
- {}];
155
- _c = {
156
- accountId: params.marginAccountId,
157
- marketId: params.marketId,
158
- isLong: inputs.positionBase < 0,
159
- stopPrice: params.stopLossPrice
160
- };
161
- return [4 /*yield*/, params.signer.getAddress()];
162
- case 2: return [2 /*return*/, _a.apply(this, _b.concat([(_c.signerWallet = _d.sent(),
163
- _c.nonce = inputs.nonce.toString(),
164
- _c.signature = inputs.signature,
165
- _c.deadline = inputs.deadline,
166
- _c.orderPriceLimit = inputs.orderPriceLimit.toString(),
167
- _c.exchangeId = params.supportingParams.exchangeId,
168
- _c.poolId = params.supportingParams.counterpartyAccountIds[0],
169
- _c.timestampMs = inputs.creationTimestampMs,
170
- _c)]))];
171
- }
172
- });
173
- });
174
- };
175
113
  ConditionalOrdersClient.prototype.registerConditionalOrder = function (params) {
176
114
  return __awaiter(this, void 0, void 0, function () {
177
115
  var inputs, uri, result, _a, _b;
178
116
  var _c;
179
117
  return __generator(this, function (_d) {
180
118
  switch (_d.label) {
181
- case 0: return [4 /*yield*/, this.parseConditionalOrderInputs(params.signer, params.marginAccountId, params.marketId, params.orderType, params.triggerPrice, params.supportingParams.exchangeId, params.supportingParams.counterpartyAccountIds,
182
- // TODO: @Costin to fix implementation
183
- params.orderSize)];
119
+ case 0: return [4 /*yield*/, this.parseConditionalOrderInputs(params.signer, params.marginAccountId, params.marketId, params.orderType, params.triggerPrice, params.supportingParams.exchangeId, params.supportingParams.counterpartyAccountIds, params.orderSize)];
184
120
  case 1:
185
121
  inputs = _d.sent();
186
- uri = "/api/conditional-orders/create-order";
122
+ uri = "/api/conditional-orders/create-or-update-order";
187
123
  _a = this.post;
188
124
  _b = [uri,
189
125
  {}];
190
126
  _c = {
191
127
  accountId: params.marginAccountId,
128
+ poolId: params.supportingParams.counterpartyAccountIds[0],
129
+ deadline: inputs.deadline,
130
+ exchangeId: params.supportingParams.exchangeId,
131
+ isLong: inputs.actualOrderSize > 0,
192
132
  marketId: params.marketId,
193
- isLong: inputs.positionBase < 0,
133
+ nonce: inputs.nonce.toString(),
134
+ orderPriceLimit: inputs.orderPriceLimit.toString(),
194
135
  orderType: params.orderType,
195
- triggerPrice: params.triggerPrice
136
+ signature: inputs.signature
196
137
  };
197
138
  return [4 /*yield*/, params.signer.getAddress()];
198
139
  case 2: return [4 /*yield*/, _a.apply(this, _b.concat([(_c.signerWallet = _d.sent(),
199
- _c.nonce = inputs.nonce.toString(),
200
- _c.signature = inputs.signature,
201
- _c.deadline = inputs.deadline,
202
- _c.orderPriceLimit = inputs.orderPriceLimit.toString(),
203
- _c.exchangeId = params.supportingParams.exchangeId,
204
- _c.poolId = params.supportingParams.counterpartyAccountIds[0],
205
140
  _c.timestampMs = inputs.creationTimestampMs,
141
+ _c.triggerPrice = params.triggerPrice,
142
+ _c.orderBase = params.orderSize,
206
143
  _c)]))];
207
144
  case 3:
208
145
  result = _d.sent();
@@ -211,68 +148,37 @@ var ConditionalOrdersClient = /** @class */ (function (_super) {
211
148
  });
212
149
  });
213
150
  };
214
- ConditionalOrdersClient.prototype.updateSLOrder = function (params) {
215
- return __awaiter(this, void 0, void 0, function () {
216
- var inputs, uri, _a, _b;
217
- var _c;
218
- return __generator(this, function (_d) {
219
- switch (_d.label) {
220
- case 0: return [4 /*yield*/, this.parseSlOrderInputs(params.signer, params.marginAccountId, params.marketId, params.stopLossPrice, params.supportingParams.exchangeId, params.supportingParams.counterpartyAccountIds)];
221
- case 1:
222
- inputs = _d.sent();
223
- uri = "/api/conditional-orders/sl/update-order";
224
- _a = this.post;
225
- _b = [uri,
226
- {}];
227
- _c = {
228
- accountId: params.marginAccountId,
229
- marketId: params.marketId,
230
- isLong: inputs.positionBase < 0,
231
- stopPrice: params.stopLossPrice
232
- };
233
- return [4 /*yield*/, params.signer.getAddress()];
234
- case 2: return [2 /*return*/, _a.apply(this, _b.concat([(_c.signerWallet = _d.sent(),
235
- _c.nonce = inputs.nonce.toString(),
236
- _c.signature = inputs.signature,
237
- _c.deadline = inputs.deadline,
238
- _c.orderPriceLimit = inputs.orderPriceLimit.toString(),
239
- _c.exchangeId = params.supportingParams.exchangeId,
240
- _c.poolId = params.supportingParams.counterpartyAccountIds[0],
241
- _c.timestampMs = inputs.creationTimestampMs,
242
- _c)]))];
243
- }
244
- });
245
- });
246
- };
247
151
  ConditionalOrdersClient.prototype.updateConditionalOrder = function (params) {
248
152
  return __awaiter(this, void 0, void 0, function () {
249
153
  var inputs, uri, result, _a, _b;
250
154
  var _c;
251
155
  return __generator(this, function (_d) {
252
156
  switch (_d.label) {
253
- case 0: return [4 /*yield*/, this.parseConditionalOrderInputs(params.signer, params.marginAccountId, params.marketId, params.orderType, params.triggerPrice, params.supportingParams.exchangeId, params.supportingParams.counterpartyAccountIds)];
157
+ case 0: return [4 /*yield*/, this.parseConditionalOrderInputs(params.signer, params.marginAccountId, params.marketId, params.orderType, params.triggerPrice, params.supportingParams.exchangeId, params.supportingParams.counterpartyAccountIds, params.orderSize)];
254
158
  case 1:
255
159
  inputs = _d.sent();
256
- uri = "/api/conditional-orders/update-order";
160
+ uri = "/api/conditional-orders/create-or-update-order";
257
161
  _a = this.post;
258
162
  _b = [uri,
259
163
  {}];
260
164
  _c = {
261
165
  accountId: params.marginAccountId,
166
+ poolId: params.supportingParams.counterpartyAccountIds[0],
167
+ deadline: inputs.deadline,
168
+ exchangeId: params.supportingParams.exchangeId,
169
+ isLong: inputs.actualOrderSize > 0,
262
170
  marketId: params.marketId,
263
- isLong: inputs.positionBase < 0,
171
+ nonce: inputs.nonce.toString(),
172
+ orderPriceLimit: inputs.orderPriceLimit.toString(),
264
173
  orderType: params.orderType,
265
- triggerPrice: params.triggerPrice
174
+ signature: inputs.signature
266
175
  };
267
176
  return [4 /*yield*/, params.signer.getAddress()];
268
177
  case 2: return [4 /*yield*/, _a.apply(this, _b.concat([(_c.signerWallet = _d.sent(),
269
- _c.nonce = inputs.nonce.toString(),
270
- _c.signature = inputs.signature,
271
- _c.deadline = inputs.deadline,
272
- _c.orderPriceLimit = inputs.orderPriceLimit.toString(),
273
- _c.exchangeId = params.supportingParams.exchangeId,
274
- _c.poolId = params.supportingParams.counterpartyAccountIds[0],
275
178
  _c.timestampMs = inputs.creationTimestampMs,
179
+ _c.triggerPrice = params.triggerPrice,
180
+ _c.cancelOrderId = params.cancelOrderId,
181
+ _c.orderBase = params.orderSize,
276
182
  _c)]))];
277
183
  case 3:
278
184
  result = _d.sent();
@@ -292,63 +198,43 @@ var ConditionalOrdersClient = /** @class */ (function (_super) {
292
198
  };
293
199
  ConditionalOrdersClient.prototype.parseConditionalOrderInputs = function (signer, accountId, marketId, orderType, triggerPrice, exchangeId, counterpartyAccountIds, orderSize) {
294
200
  return __awaiter(this, void 0, void 0, function () {
295
- var position, positionBase, isLongOrder, orderPriceLimit, inputs, creationTimestampMs, nonce, signature;
201
+ var inputs, actualOrderSize, isLongOrder, orderPriceLimit, position, positionBase, creationTimestampMs, nonce, signature;
296
202
  return __generator(this, function (_a) {
297
203
  switch (_a.label) {
298
204
  case 0:
299
- // TODO: @Costin to fix implementation
300
- console.log('orderSize', orderSize);
301
- return [4 /*yield*/, this.getPosition(accountId, marketId)];
302
- case 1:
303
- position = _a.sent();
304
- positionBase = position.base;
305
- if (positionBase === 0) {
306
- throw new Error('Position with no exposure');
205
+ if (!(orderType === common_1.ConditionalOrderType.LIMIT_ORDER)) return [3 /*break*/, 1];
206
+ if (orderSize === undefined) {
207
+ throw new Error('Order base is required for limit orders');
208
+ }
209
+ if (orderSize === 0) {
210
+ throw new Error('Cannot create an empty limit order');
307
211
  }
308
- isLongOrder = positionBase < 0;
212
+ actualOrderSize = orderSize;
213
+ isLongOrder = actualOrderSize > 0;
309
214
  orderPriceLimit = (0, common_1.calculateMaxPriceLimit)(isLongOrder);
310
- inputs = ethers_1.AbiCoder.defaultAbiCoder().encode(['bool', 'uint256', 'uint256'], [isLongOrder, (0, common_1.scale)(18)(triggerPrice), orderPriceLimit]);
311
- creationTimestampMs = Date.now();
312
- nonce = (0, utils_1.createNonce)(accountId, marketId, creationTimestampMs);
313
- return [4 /*yield*/, (0, common_1.signConditionalOrder)(signer, this.reyaChainId, accountId, marketId, exchangeId, counterpartyAccountIds, orderType, inputs, nonce, common_1.CONDITIONAL_ORDER_SIG_DEADLINE)];
215
+ inputs = ethers_1.AbiCoder.defaultAbiCoder().encode(['int256', 'uint256'], [(0, common_1.scale)(18)(orderSize), (0, common_1.scale)(18)(triggerPrice)]);
216
+ return [3 /*break*/, 3];
217
+ case 1: return [4 /*yield*/, this.getPosition(accountId, marketId)];
314
218
  case 2:
315
- signature = _a.sent();
316
- return [2 /*return*/, {
317
- signature: signature,
318
- positionBase: positionBase,
319
- orderPriceLimit: orderPriceLimit,
320
- nonce: nonce,
321
- deadline: common_1.CONDITIONAL_ORDER_SIG_DEADLINE,
322
- creationTimestampMs: creationTimestampMs,
323
- }];
324
- }
325
- });
326
- });
327
- };
328
- // todo: IR deprecate
329
- ConditionalOrdersClient.prototype.parseSlOrderInputs = function (signer, accountId, marketId, stopLossPrice, exchangeId, counterpartyAccountIds) {
330
- return __awaiter(this, void 0, void 0, function () {
331
- var position, positionBase, isLongOrder, orderPriceLimit, inputs, creationTimestampMs, nonce, signature;
332
- return __generator(this, function (_a) {
333
- switch (_a.label) {
334
- case 0: return [4 /*yield*/, this.getPosition(accountId, marketId)];
335
- case 1:
336
219
  position = _a.sent();
337
220
  positionBase = position.base;
338
221
  if (positionBase === 0) {
339
- throw new Error('Position with no exposure');
222
+ throw new Error('Cannot create SL or TP order for closed positions');
340
223
  }
341
- isLongOrder = positionBase < 0;
224
+ actualOrderSize = -positionBase;
225
+ isLongOrder = actualOrderSize > 0;
342
226
  orderPriceLimit = (0, common_1.calculateMaxPriceLimit)(isLongOrder);
343
- inputs = ethers_1.AbiCoder.defaultAbiCoder().encode(['bool', 'uint256', 'uint256'], [isLongOrder, (0, common_1.scale)(18)(stopLossPrice), orderPriceLimit]);
227
+ inputs = ethers_1.AbiCoder.defaultAbiCoder().encode(['bool', 'uint256', 'uint256'], [isLongOrder, (0, common_1.scale)(18)(triggerPrice), orderPriceLimit]);
228
+ _a.label = 3;
229
+ case 3:
344
230
  creationTimestampMs = Date.now();
345
231
  nonce = (0, utils_1.createNonce)(accountId, marketId, creationTimestampMs);
346
- return [4 /*yield*/, (0, common_1.signConditionalOrder)(signer, this.reyaChainId, accountId, marketId, exchangeId, counterpartyAccountIds, common_1.ConditionalOrderType.STOP_LOSS, inputs, nonce, common_1.CONDITIONAL_ORDER_SIG_DEADLINE)];
347
- case 2:
232
+ return [4 /*yield*/, (0, common_1.signConditionalOrder)(signer, this.reyaChainId, accountId, marketId, exchangeId, counterpartyAccountIds, orderType, inputs, nonce, common_1.CONDITIONAL_ORDER_SIG_DEADLINE)];
233
+ case 4:
348
234
  signature = _a.sent();
349
235
  return [2 /*return*/, {
350
236
  signature: signature,
351
- positionBase: positionBase,
237
+ actualOrderSize: actualOrderSize,
352
238
  orderPriceLimit: orderPriceLimit,
353
239
  nonce: nonce,
354
240
  deadline: common_1.CONDITIONAL_ORDER_SIG_DEADLINE,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["clients/modules/conditional-orders/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n calculateMaxPriceLimit,\n PositionEntity,\n RestClient,\n ReyaChainId,\n signConditionalOrder,\n signCancelConditionalOrder,\n StopLossOrder,\n ConditionalOrder,\n ConditionalOrderType,\n scale,\n CONDITIONAL_ORDER_SIG_DEADLINE,\n} from '@reyaxyz/common';\nimport { AbiCoder } from 'ethers';\nimport { Signer, JsonRpcSigner } from 'ethers';\nimport {\n AlreadyGaveTradePermissionParams,\n AlreadyGaveTradePermissionResult,\n CancelConditionalOrderParams,\n CancelConditionalOrderResult,\n CancelSLOrderParams,\n CancelSLOrderResult,\n GetConditionalOrdersHistoryForMarginAccountPaginatedParams,\n GetConditionalOrdersHistoryForMarginAccountPaginatedResult,\n GetConditionalOrdersHistoryForMarginAccountParams,\n GetConditionalOrdersHistoryForMarginAccountResult,\n RegisterConditionalOrderParams,\n RegisterConditionalOrderResult,\n RegisterSLOrderParams,\n RegisterSLOrderResult,\n UpdateConditionalOrderParams,\n UpdateConditionalOrderResult,\n UpdateSLOrderParams,\n UpdateSLOrderResult,\n} from './types';\nimport { createNonce } from './utils';\n\nexport default class ConditionalOrdersClient extends RestClient {\n private reyaChainId: ReyaChainId;\n\n constructor(reyaChainId: ReyaChainId, host: string) {\n super(host);\n this.reyaChainId = reyaChainId;\n }\n\n // ------ Conditional Orders History ---\n async getConditionalOrdersHistoryForMarginAccount(\n params: GetConditionalOrdersHistoryForMarginAccountParams,\n ): Promise<GetConditionalOrdersHistoryForMarginAccountResult> {\n const uri = `/api/conditional-orders/get-orders-by-account/${params.marginAccountId}`;\n return this.get<GetConditionalOrdersHistoryForMarginAccountResult>(uri, {\n limit: params.limit,\n });\n }\n\n async getConditionalOrdersHistoryForMarginAccountPaginated(\n params: GetConditionalOrdersHistoryForMarginAccountPaginatedParams,\n ): Promise<GetConditionalOrdersHistoryForMarginAccountPaginatedResult> {\n const uri = `/api/conditional-orders/get-orders-by-account/${params.marginAccountId}/paginated`;\n return this.get<GetConditionalOrdersHistoryForMarginAccountPaginatedResult>(\n uri,\n {\n page: params.page,\n perPage: params.perPage,\n },\n );\n }\n\n async alreadyGaveTradePermissions(\n params: AlreadyGaveTradePermissionParams,\n ): Promise<AlreadyGaveTradePermissionResult> {\n const uri = `/api/conditional-orders/gave-trade-permission/${params.accountId}`;\n const response = await this.get<boolean>(uri);\n\n return {\n permissionGiven: response,\n };\n }\n\n async cancelSLOrder(\n params: CancelSLOrderParams,\n ): Promise<CancelSLOrderResult> {\n const signature = await signCancelConditionalOrder(\n params.signer,\n params.orderId,\n );\n\n const uri = `/api/conditional-orders/sl/cancel-order`;\n return this.put<StopLossOrder>(\n uri,\n {},\n {\n orderId: params.orderId,\n userSignature: signature,\n },\n );\n }\n\n async cancelConditionalOrder(\n params: CancelConditionalOrderParams,\n ): Promise<CancelConditionalOrderResult> {\n const signature = await signCancelConditionalOrder(\n params.signer,\n params.orderId,\n );\n\n const uri = `/api/conditional-orders/cancel-order`;\n const res = await this.put<ConditionalOrder>(\n uri,\n {},\n {\n orderId: params.orderId,\n userSignature: signature,\n },\n );\n return res;\n }\n\n async registerSLOrder(\n params: RegisterSLOrderParams,\n ): Promise<RegisterSLOrderResult> {\n const inputs = await this.parseSlOrderInputs(\n params.signer,\n params.marginAccountId,\n params.marketId,\n params.stopLossPrice,\n params.supportingParams.exchangeId,\n params.supportingParams.counterpartyAccountIds,\n );\n\n // create new entry\n const uri = `/api/conditional-orders/sl/create-order`;\n return this.post<StopLossOrder>(\n uri,\n {},\n {\n accountId: params.marginAccountId,\n marketId: params.marketId,\n isLong: inputs.positionBase < 0,\n stopPrice: params.stopLossPrice,\n signerWallet: await params.signer.getAddress(),\n nonce: inputs.nonce.toString(),\n signature: inputs.signature,\n deadline: inputs.deadline,\n orderPriceLimit: inputs.orderPriceLimit.toString(),\n exchangeId: params.supportingParams.exchangeId,\n poolId: params.supportingParams.counterpartyAccountIds[0],\n timestampMs: inputs.creationTimestampMs,\n },\n );\n }\n\n async registerConditionalOrder(\n params: RegisterConditionalOrderParams,\n ): Promise<RegisterConditionalOrderResult> {\n const inputs = await this.parseConditionalOrderInputs(\n params.signer,\n params.marginAccountId,\n params.marketId,\n params.orderType,\n params.triggerPrice,\n params.supportingParams.exchangeId,\n params.supportingParams.counterpartyAccountIds,\n // TODO: @Costin to fix implementation\n params.orderSize,\n );\n\n // create new entry\n const uri = `/api/conditional-orders/create-order`;\n const result = await this.post<ConditionalOrder>(\n uri,\n {},\n {\n accountId: params.marginAccountId,\n marketId: params.marketId,\n isLong: inputs.positionBase < 0,\n orderType: params.orderType,\n triggerPrice: params.triggerPrice,\n signerWallet: await params.signer.getAddress(),\n nonce: inputs.nonce.toString(),\n signature: inputs.signature,\n deadline: inputs.deadline,\n orderPriceLimit: inputs.orderPriceLimit.toString(),\n exchangeId: params.supportingParams.exchangeId,\n poolId: params.supportingParams.counterpartyAccountIds[0],\n timestampMs: inputs.creationTimestampMs,\n },\n );\n return result;\n }\n\n async updateSLOrder(\n params: UpdateSLOrderParams,\n ): Promise<UpdateSLOrderResult> {\n const inputs = await this.parseSlOrderInputs(\n params.signer,\n params.marginAccountId,\n params.marketId,\n params.stopLossPrice,\n params.supportingParams.exchangeId,\n params.supportingParams.counterpartyAccountIds,\n );\n\n // create new entry\n const uri = `/api/conditional-orders/sl/update-order`;\n return this.post<StopLossOrder>(\n uri,\n {},\n {\n accountId: params.marginAccountId,\n marketId: params.marketId,\n isLong: inputs.positionBase < 0,\n stopPrice: params.stopLossPrice,\n signerWallet: await params.signer.getAddress(),\n nonce: inputs.nonce.toString(),\n signature: inputs.signature,\n deadline: inputs.deadline,\n orderPriceLimit: inputs.orderPriceLimit.toString(),\n exchangeId: params.supportingParams.exchangeId,\n poolId: params.supportingParams.counterpartyAccountIds[0],\n timestampMs: inputs.creationTimestampMs,\n },\n );\n }\n\n async updateConditionalOrder(\n params: UpdateConditionalOrderParams,\n ): Promise<UpdateConditionalOrderResult> {\n const inputs = await this.parseConditionalOrderInputs(\n params.signer,\n params.marginAccountId,\n params.marketId,\n params.orderType,\n params.triggerPrice,\n params.supportingParams.exchangeId,\n params.supportingParams.counterpartyAccountIds,\n );\n\n // create new entry\n const uri = `/api/conditional-orders/update-order`;\n const result = await this.post<ConditionalOrder>(\n uri,\n {},\n {\n accountId: params.marginAccountId,\n marketId: params.marketId,\n isLong: inputs.positionBase < 0,\n orderType: params.orderType,\n triggerPrice: params.triggerPrice,\n signerWallet: await params.signer.getAddress(),\n nonce: inputs.nonce.toString(),\n signature: inputs.signature,\n deadline: inputs.deadline,\n orderPriceLimit: inputs.orderPriceLimit.toString(),\n exchangeId: params.supportingParams.exchangeId,\n poolId: params.supportingParams.counterpartyAccountIds[0],\n timestampMs: inputs.creationTimestampMs,\n },\n );\n return result;\n }\n\n private async getPosition(\n accountId: number,\n marketId: number,\n ): Promise<PositionEntity> {\n const uri = `/api/accounts/marginAccount/position/${accountId}/${marketId}`;\n return this.get<PositionEntity>(uri);\n }\n\n private async parseConditionalOrderInputs(\n signer: Signer | JsonRpcSigner,\n accountId: number,\n marketId: number,\n orderType: ConditionalOrderType,\n triggerPrice: number,\n exchangeId: number,\n counterpartyAccountIds: number[],\n orderSize?: number,\n ): Promise<{\n signature: string;\n positionBase: number;\n orderPriceLimit: bigint;\n nonce: bigint;\n deadline: number;\n creationTimestampMs: number;\n orderSize?: number;\n }> {\n // TODO: @Costin to fix implementation\n console.log('orderSize', orderSize);\n\n const position = await this.getPosition(accountId, marketId);\n const positionBase = position.base;\n\n if (positionBase === 0) {\n throw new Error('Position with no exposure');\n }\n\n const isLongOrder = positionBase < 0;\n const orderPriceLimit = calculateMaxPriceLimit(isLongOrder);\n\n const inputs = AbiCoder.defaultAbiCoder().encode(\n ['bool', 'uint256', 'uint256'],\n [isLongOrder, scale(18)(triggerPrice), orderPriceLimit],\n );\n const creationTimestampMs = Date.now();\n const nonce = createNonce(accountId, marketId, creationTimestampMs);\n\n const signature = await signConditionalOrder(\n signer,\n this.reyaChainId,\n accountId,\n marketId,\n exchangeId,\n counterpartyAccountIds,\n orderType,\n inputs,\n nonce,\n CONDITIONAL_ORDER_SIG_DEADLINE,\n );\n\n return {\n signature,\n positionBase,\n orderPriceLimit,\n nonce,\n deadline: CONDITIONAL_ORDER_SIG_DEADLINE,\n creationTimestampMs,\n };\n }\n\n // todo: IR deprecate\n private async parseSlOrderInputs(\n signer: Signer | JsonRpcSigner,\n accountId: number,\n marketId: number,\n stopLossPrice: number,\n exchangeId: number,\n counterpartyAccountIds: number[],\n ): Promise<{\n signature: string;\n positionBase: number;\n orderPriceLimit: bigint;\n nonce: bigint;\n deadline: number;\n creationTimestampMs: number;\n }> {\n const position = await this.getPosition(accountId, marketId);\n const positionBase = position.base;\n\n if (positionBase === 0) {\n throw new Error('Position with no exposure');\n }\n\n const isLongOrder = positionBase < 0;\n const orderPriceLimit = calculateMaxPriceLimit(isLongOrder);\n\n const inputs = AbiCoder.defaultAbiCoder().encode(\n ['bool', 'uint256', 'uint256'],\n [isLongOrder, scale(18)(stopLossPrice), orderPriceLimit],\n );\n const creationTimestampMs = Date.now();\n const nonce = createNonce(accountId, marketId, creationTimestampMs);\n\n const signature = await signConditionalOrder(\n signer,\n this.reyaChainId,\n accountId,\n marketId,\n exchangeId,\n counterpartyAccountIds,\n ConditionalOrderType.STOP_LOSS,\n inputs,\n nonce,\n CONDITIONAL_ORDER_SIG_DEADLINE,\n );\n\n return {\n signature,\n positionBase,\n orderPriceLimit,\n nonce,\n deadline: CONDITIONAL_ORDER_SIG_DEADLINE,\n creationTimestampMs,\n };\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"/","sources":["clients/modules/conditional-orders/index.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n calculateMaxPriceLimit,\n PositionEntity,\n RestClient,\n ReyaChainId,\n signConditionalOrder,\n signCancelConditionalOrder,\n ConditionalOrder,\n ConditionalOrderType,\n scale,\n CONDITIONAL_ORDER_SIG_DEADLINE,\n} from '@reyaxyz/common';\nimport { AbiCoder } from 'ethers';\nimport { Signer, JsonRpcSigner } from 'ethers';\nimport {\n AlreadyGaveTradePermissionParams,\n AlreadyGaveTradePermissionResult,\n CancelConditionalOrderParams,\n CancelConditionalOrderResult,\n GetConditionalOrdersHistoryForMarginAccountParams,\n GetConditionalOrdersHistoryForMarginAccountResult,\n RegisterConditionalOrderParams,\n RegisterConditionalOrderResult,\n UpdateConditionalOrderParams,\n UpdateConditionalOrderResult,\n} from './types';\nimport { createNonce } from './utils';\n\nexport default class ConditionalOrdersClient extends RestClient {\n private reyaChainId: ReyaChainId;\n\n constructor(reyaChainId: ReyaChainId, host: string) {\n super(host);\n this.reyaChainId = reyaChainId;\n }\n\n // ------ Conditional Orders History ---\n async getConditionalOrdersHistoryForMarginAccount(\n params: GetConditionalOrdersHistoryForMarginAccountParams,\n ): Promise<GetConditionalOrdersHistoryForMarginAccountResult> {\n const uri = `/api/conditional-orders/get-orders-by-account/${params.marginAccountId}`;\n return this.get<GetConditionalOrdersHistoryForMarginAccountResult>(uri, {\n limit: params.limit,\n });\n }\n\n async alreadyGaveTradePermissions(\n params: AlreadyGaveTradePermissionParams,\n ): Promise<AlreadyGaveTradePermissionResult> {\n const uri = `/api/conditional-orders/gave-trade-permission/${params.accountId}`;\n const response = await this.get<boolean>(uri);\n\n return {\n permissionGiven: response,\n };\n }\n\n async cancelConditionalOrder(\n params: CancelConditionalOrderParams,\n ): Promise<CancelConditionalOrderResult> {\n const signature = await signCancelConditionalOrder(\n params.signer,\n params.orderId,\n );\n\n const uri = `/api/conditional-orders/cancel-order`;\n const res = await this.put<ConditionalOrder>(\n uri,\n {},\n {\n orderId: params.orderId,\n userSignature: signature,\n },\n );\n return res;\n }\n\n async registerConditionalOrder(\n params: RegisterConditionalOrderParams,\n ): Promise<RegisterConditionalOrderResult> {\n const inputs = await this.parseConditionalOrderInputs(\n params.signer,\n params.marginAccountId,\n params.marketId,\n params.orderType,\n params.triggerPrice,\n params.supportingParams.exchangeId,\n params.supportingParams.counterpartyAccountIds,\n params.orderSize,\n );\n\n // create new entry\n const uri = `/api/conditional-orders/create-or-update-order`;\n const result = await this.post<ConditionalOrder>(\n uri,\n {},\n {\n accountId: params.marginAccountId,\n poolId: params.supportingParams.counterpartyAccountIds[0],\n deadline: inputs.deadline,\n exchangeId: params.supportingParams.exchangeId,\n isLong: inputs.actualOrderSize > 0,\n marketId: params.marketId,\n nonce: inputs.nonce.toString(),\n orderPriceLimit: inputs.orderPriceLimit.toString(),\n orderType: params.orderType,\n signature: inputs.signature,\n signerWallet: await params.signer.getAddress(),\n timestampMs: inputs.creationTimestampMs,\n triggerPrice: params.triggerPrice,\n orderBase: params.orderSize,\n },\n );\n return result;\n }\n\n async updateConditionalOrder(\n params: UpdateConditionalOrderParams,\n ): Promise<UpdateConditionalOrderResult> {\n const inputs = await this.parseConditionalOrderInputs(\n params.signer,\n params.marginAccountId,\n params.marketId,\n params.orderType,\n params.triggerPrice,\n params.supportingParams.exchangeId,\n params.supportingParams.counterpartyAccountIds,\n params.orderSize,\n );\n\n // create new entry\n const uri = `/api/conditional-orders/create-or-update-order`;\n const result = await this.post<ConditionalOrder>(\n uri,\n {},\n {\n accountId: params.marginAccountId,\n poolId: params.supportingParams.counterpartyAccountIds[0],\n deadline: inputs.deadline,\n exchangeId: params.supportingParams.exchangeId,\n isLong: inputs.actualOrderSize > 0,\n marketId: params.marketId,\n nonce: inputs.nonce.toString(),\n orderPriceLimit: inputs.orderPriceLimit.toString(),\n orderType: params.orderType,\n signature: inputs.signature,\n signerWallet: await params.signer.getAddress(),\n timestampMs: inputs.creationTimestampMs,\n triggerPrice: params.triggerPrice,\n cancelOrderId: params.cancelOrderId,\n orderBase: params.orderSize,\n },\n );\n return result;\n }\n\n private async getPosition(\n accountId: number,\n marketId: number,\n ): Promise<PositionEntity> {\n const uri = `/api/accounts/marginAccount/position/${accountId}/${marketId}`;\n return this.get<PositionEntity>(uri);\n }\n\n private async parseConditionalOrderInputs(\n signer: Signer | JsonRpcSigner,\n accountId: number,\n marketId: number,\n orderType: ConditionalOrderType,\n triggerPrice: number,\n exchangeId: number,\n counterpartyAccountIds: number[],\n orderSize?: number,\n ): Promise<{\n signature: string;\n actualOrderSize: number;\n orderPriceLimit: bigint;\n nonce: bigint;\n deadline: number;\n creationTimestampMs: number;\n }> {\n let inputs: string;\n let actualOrderSize: number;\n let isLongOrder: boolean;\n let orderPriceLimit: bigint;\n\n if (orderType === ConditionalOrderType.LIMIT_ORDER) {\n if (orderSize === undefined) {\n throw new Error('Order base is required for limit orders');\n }\n\n if (orderSize === 0) {\n throw new Error('Cannot create an empty limit order');\n }\n\n actualOrderSize = orderSize;\n isLongOrder = actualOrderSize > 0;\n orderPriceLimit = calculateMaxPriceLimit(isLongOrder);\n\n inputs = AbiCoder.defaultAbiCoder().encode(\n ['int256', 'uint256'],\n [scale(18)(orderSize), scale(18)(triggerPrice)],\n );\n } else {\n const position = await this.getPosition(accountId, marketId);\n const positionBase = position.base;\n\n if (positionBase === 0) {\n throw new Error('Cannot create SL or TP order for closed positions');\n }\n\n actualOrderSize = -positionBase;\n isLongOrder = actualOrderSize > 0;\n orderPriceLimit = calculateMaxPriceLimit(isLongOrder);\n\n inputs = AbiCoder.defaultAbiCoder().encode(\n ['bool', 'uint256', 'uint256'],\n [isLongOrder, scale(18)(triggerPrice), orderPriceLimit],\n );\n }\n\n const creationTimestampMs = Date.now();\n const nonce = createNonce(accountId, marketId, creationTimestampMs);\n\n const signature = await signConditionalOrder(\n signer,\n this.reyaChainId,\n accountId,\n marketId,\n exchangeId,\n counterpartyAccountIds,\n orderType,\n inputs,\n nonce,\n CONDITIONAL_ORDER_SIG_DEADLINE,\n );\n\n return {\n signature,\n actualOrderSize,\n orderPriceLimit,\n nonce,\n deadline: CONDITIONAL_ORDER_SIG_DEADLINE,\n creationTimestampMs,\n };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"/","sources":["clients/modules/conditional-orders/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n StopLossOrder,\n ConditionalOrder,\n UnifiedConditionalOrderType,\n ConditionalOrderType,\n} from '@reyaxyz/common';\nimport { Signer, JsonRpcSigner } from 'ethers';\nimport { MarginAccountEntity, MarketEntity } from '@reyaxyz/common';\n\n// todo: IR to deprecate\nexport type CancelSLOrderParams = {\n signer: Signer | JsonRpcSigner;\n orderId: string;\n};\n\n// todo: IR to deprecate\nexport type CancelSLOrderResult = StopLossOrder;\n\nexport type CancelConditionalOrderParams = {\n signer: Signer | JsonRpcSigner;\n orderId: string;\n};\n\nexport type CancelConditionalOrderResult = ConditionalOrder;\n\nexport type ConditionalOrderDetails = {\n accountId: number;\n marketId: number;\n exchangeId: number;\n counterpartyAccountIds: number[];\n orderType: number;\n inputs: string;\n signer: string;\n nonce: bigint;\n};\n\nexport type OrderSupportingParams = {\n exchangeId: MarketEntity['orderInfo']['exchangeId'];\n counterpartyAccountIds: MarketEntity['orderInfo']['counterpartyAccountIds'];\n currentPrice: number;\n};\n\n// todo: IR to deprecate\nexport type RegisterSLOrderParams = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: MarginAccountEntity['id'];\n stopLossPrice: number;\n marketId: number;\n supportingParams: OrderSupportingParams;\n};\n\nexport type RegisterConditionalOrderParams = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: MarginAccountEntity['id'];\n triggerPrice: number;\n orderType: ConditionalOrderType;\n marketId: number;\n supportingParams: OrderSupportingParams;\n orderSize?: number;\n};\n\n// todo: IR to deprecate\nexport type UpdateSLOrderParams = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: MarginAccountEntity['id'];\n stopLossPrice: number;\n marketId: number;\n supportingParams: OrderSupportingParams;\n};\n\nexport type UpdateConditionalOrderParams = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: MarginAccountEntity['id'];\n triggerPrice: number;\n orderType: ConditionalOrderType;\n marketId: number;\n supportingParams: OrderSupportingParams;\n};\n\n// todo: IR to deprecate\nexport type RegisterSLOrderResult = StopLossOrder;\nexport type UpdateSLOrderResult = StopLossOrder;\n\nexport type RegisterConditionalOrderResult = ConditionalOrder;\nexport type UpdateConditionalOrderResult = ConditionalOrder;\n\nexport type AlreadyGaveTradePermissionParams = {\n accountId: number;\n};\n\nexport type AlreadyGaveTradePermissionResult = {\n permissionGiven: boolean;\n};\n\n// ---- Conditional Orders History ---\nexport type GetConditionalOrdersHistoryForMarginAccountParams = {\n address: string;\n marginAccountId: MarginAccountEntity['id'];\n limit?: number;\n};\nexport type GetConditionalOrdersHistoryForMarginAccountPaginatedParams = {\n address: string;\n marginAccountId: MarginAccountEntity['id'];\n page: number;\n perPage: number;\n};\n\nexport type GetConditionalOrdersHistoryForMarginAccountResult =\n UnifiedConditionalOrderType[];\nexport type GetConditionalOrdersHistoryForMarginAccountPaginatedResult = {\n data: UnifiedConditionalOrderType[];\n totalCount: number;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"/","sources":["clients/modules/conditional-orders/types.ts"],"names":[],"mappings":"","sourcesContent":["import {\n ConditionalOrder,\n UnifiedConditionalOrderType,\n ConditionalOrderType,\n} from '@reyaxyz/common';\nimport { Signer, JsonRpcSigner } from 'ethers';\nimport { MarginAccountEntity, MarketEntity } from '@reyaxyz/common';\n\nexport type CancelConditionalOrderParams = {\n signer: Signer | JsonRpcSigner;\n orderId: string;\n};\n\nexport type CancelConditionalOrderResult = ConditionalOrder;\n\nexport type ConditionalOrderDetails = {\n accountId: number;\n marketId: number;\n exchangeId: number;\n counterpartyAccountIds: number[];\n orderType: number;\n inputs: string;\n signer: string;\n nonce: bigint;\n};\n\nexport type OrderSupportingParams = {\n exchangeId: MarketEntity['orderInfo']['exchangeId'];\n counterpartyAccountIds: MarketEntity['orderInfo']['counterpartyAccountIds'];\n currentPrice: number;\n};\n\nexport type RegisterConditionalOrderParams = {\n signer: Signer | JsonRpcSigner;\n marginAccountId: MarginAccountEntity['id'];\n triggerPrice: number;\n orderType: ConditionalOrderType;\n marketId: number;\n supportingParams: OrderSupportingParams;\n orderSize?: number;\n};\n\nexport type UpdateConditionalOrderParams = {\n cancelOrderId: string;\n} & RegisterConditionalOrderParams;\n\nexport type RegisterConditionalOrderResult = ConditionalOrder;\nexport type UpdateConditionalOrderResult = ConditionalOrder;\n\nexport type AlreadyGaveTradePermissionParams = {\n accountId: number;\n};\n\nexport type AlreadyGaveTradePermissionResult = {\n permissionGiven: boolean;\n};\n\n// ---- Conditional Orders History ---\nexport type GetConditionalOrdersHistoryForMarginAccountParams = {\n address: string;\n marginAccountId: MarginAccountEntity['id'];\n limit?: number;\n};\n\nexport type GetConditionalOrdersHistoryForMarginAccountResult =\n UnifiedConditionalOrderType[];\n"]}
@@ -1,19 +1,14 @@
1
1
  import { RestClient, ReyaChainId } from '@reyaxyz/common';
2
- import { AlreadyGaveTradePermissionParams, AlreadyGaveTradePermissionResult, CancelConditionalOrderParams, CancelConditionalOrderResult, CancelSLOrderParams, CancelSLOrderResult, GetConditionalOrdersHistoryForMarginAccountPaginatedParams, GetConditionalOrdersHistoryForMarginAccountPaginatedResult, GetConditionalOrdersHistoryForMarginAccountParams, GetConditionalOrdersHistoryForMarginAccountResult, RegisterConditionalOrderParams, RegisterConditionalOrderResult, RegisterSLOrderParams, RegisterSLOrderResult, UpdateConditionalOrderParams, UpdateConditionalOrderResult, UpdateSLOrderParams, UpdateSLOrderResult } from './types';
2
+ import { AlreadyGaveTradePermissionParams, AlreadyGaveTradePermissionResult, CancelConditionalOrderParams, CancelConditionalOrderResult, GetConditionalOrdersHistoryForMarginAccountParams, GetConditionalOrdersHistoryForMarginAccountResult, RegisterConditionalOrderParams, RegisterConditionalOrderResult, UpdateConditionalOrderParams, UpdateConditionalOrderResult } from './types';
3
3
  export default class ConditionalOrdersClient extends RestClient {
4
4
  private reyaChainId;
5
5
  constructor(reyaChainId: ReyaChainId, host: string);
6
6
  getConditionalOrdersHistoryForMarginAccount(params: GetConditionalOrdersHistoryForMarginAccountParams): Promise<GetConditionalOrdersHistoryForMarginAccountResult>;
7
- getConditionalOrdersHistoryForMarginAccountPaginated(params: GetConditionalOrdersHistoryForMarginAccountPaginatedParams): Promise<GetConditionalOrdersHistoryForMarginAccountPaginatedResult>;
8
7
  alreadyGaveTradePermissions(params: AlreadyGaveTradePermissionParams): Promise<AlreadyGaveTradePermissionResult>;
9
- cancelSLOrder(params: CancelSLOrderParams): Promise<CancelSLOrderResult>;
10
8
  cancelConditionalOrder(params: CancelConditionalOrderParams): Promise<CancelConditionalOrderResult>;
11
- registerSLOrder(params: RegisterSLOrderParams): Promise<RegisterSLOrderResult>;
12
9
  registerConditionalOrder(params: RegisterConditionalOrderParams): Promise<RegisterConditionalOrderResult>;
13
- updateSLOrder(params: UpdateSLOrderParams): Promise<UpdateSLOrderResult>;
14
10
  updateConditionalOrder(params: UpdateConditionalOrderParams): Promise<UpdateConditionalOrderResult>;
15
11
  private getPosition;
16
12
  private parseConditionalOrderInputs;
17
- private parseSlOrderInputs;
18
13
  }
19
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/conditional-orders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,WAAW,EAQZ,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACnB,0DAA0D,EAC1D,0DAA0D,EAC1D,iDAAiD,EACjD,iDAAiD,EACjD,8BAA8B,EAC9B,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,UAAU;IAC7D,OAAO,CAAC,WAAW,CAAc;gBAErB,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAM5C,2CAA2C,CAC/C,MAAM,EAAE,iDAAiD,GACxD,OAAO,CAAC,iDAAiD,CAAC;IAOvD,oDAAoD,CACxD,MAAM,EAAE,0DAA0D,GACjE,OAAO,CAAC,0DAA0D,CAAC;IAWhE,2BAA2B,CAC/B,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,gCAAgC,CAAC;IAStC,aAAa,CACjB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAiBzB,sBAAsB,CAC1B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,CAAC;IAkBlC,eAAe,CACnB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,qBAAqB,CAAC;IAgC3B,wBAAwB,CAC5B,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAqCpC,aAAa,CACjB,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC;IAgCzB,sBAAsB,CAC1B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,CAAC;YAmC1B,WAAW;YAQX,2BAA2B;YA8D3B,kBAAkB;CAsDjC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"/","sources":["clients/modules/conditional-orders/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,WAAW,EAOZ,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,4BAA4B,EAC5B,4BAA4B,EAC5B,iDAAiD,EACjD,iDAAiD,EACjD,8BAA8B,EAC9B,8BAA8B,EAC9B,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,SAAS,CAAC;AAGjB,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,UAAU;IAC7D,OAAO,CAAC,WAAW,CAAc;gBAErB,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM;IAM5C,2CAA2C,CAC/C,MAAM,EAAE,iDAAiD,GACxD,OAAO,CAAC,iDAAiD,CAAC;IAOvD,2BAA2B,CAC/B,MAAM,EAAE,gCAAgC,GACvC,OAAO,CAAC,gCAAgC,CAAC;IAStC,sBAAsB,CAC1B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,CAAC;IAkBlC,wBAAwB,CAC5B,MAAM,EAAE,8BAA8B,GACrC,OAAO,CAAC,8BAA8B,CAAC;IAqCpC,sBAAsB,CAC1B,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,4BAA4B,CAAC;YAsC1B,WAAW;YAQX,2BAA2B;CAkF1C"}
@@ -1,11 +1,6 @@
1
- import { StopLossOrder, ConditionalOrder, UnifiedConditionalOrderType, ConditionalOrderType } from '@reyaxyz/common';
1
+ import { ConditionalOrder, UnifiedConditionalOrderType, ConditionalOrderType } from '@reyaxyz/common';
2
2
  import { Signer, JsonRpcSigner } from 'ethers';
3
3
  import { MarginAccountEntity, MarketEntity } from '@reyaxyz/common';
4
- export type CancelSLOrderParams = {
5
- signer: Signer | JsonRpcSigner;
6
- orderId: string;
7
- };
8
- export type CancelSLOrderResult = StopLossOrder;
9
4
  export type CancelConditionalOrderParams = {
10
5
  signer: Signer | JsonRpcSigner;
11
6
  orderId: string;
@@ -26,13 +21,6 @@ export type OrderSupportingParams = {
26
21
  counterpartyAccountIds: MarketEntity['orderInfo']['counterpartyAccountIds'];
27
22
  currentPrice: number;
28
23
  };
29
- export type RegisterSLOrderParams = {
30
- signer: Signer | JsonRpcSigner;
31
- marginAccountId: MarginAccountEntity['id'];
32
- stopLossPrice: number;
33
- marketId: number;
34
- supportingParams: OrderSupportingParams;
35
- };
36
24
  export type RegisterConditionalOrderParams = {
37
25
  signer: Signer | JsonRpcSigner;
38
26
  marginAccountId: MarginAccountEntity['id'];
@@ -42,23 +30,9 @@ export type RegisterConditionalOrderParams = {
42
30
  supportingParams: OrderSupportingParams;
43
31
  orderSize?: number;
44
32
  };
45
- export type UpdateSLOrderParams = {
46
- signer: Signer | JsonRpcSigner;
47
- marginAccountId: MarginAccountEntity['id'];
48
- stopLossPrice: number;
49
- marketId: number;
50
- supportingParams: OrderSupportingParams;
51
- };
52
33
  export type UpdateConditionalOrderParams = {
53
- signer: Signer | JsonRpcSigner;
54
- marginAccountId: MarginAccountEntity['id'];
55
- triggerPrice: number;
56
- orderType: ConditionalOrderType;
57
- marketId: number;
58
- supportingParams: OrderSupportingParams;
59
- };
60
- export type RegisterSLOrderResult = StopLossOrder;
61
- export type UpdateSLOrderResult = StopLossOrder;
34
+ cancelOrderId: string;
35
+ } & RegisterConditionalOrderParams;
62
36
  export type RegisterConditionalOrderResult = ConditionalOrder;
63
37
  export type UpdateConditionalOrderResult = ConditionalOrder;
64
38
  export type AlreadyGaveTradePermissionParams = {
@@ -72,15 +46,5 @@ export type GetConditionalOrdersHistoryForMarginAccountParams = {
72
46
  marginAccountId: MarginAccountEntity['id'];
73
47
  limit?: number;
74
48
  };
75
- export type GetConditionalOrdersHistoryForMarginAccountPaginatedParams = {
76
- address: string;
77
- marginAccountId: MarginAccountEntity['id'];
78
- page: number;
79
- perPage: number;
80
- };
81
49
  export type GetConditionalOrdersHistoryForMarginAccountResult = UnifiedConditionalOrderType[];
82
- export type GetConditionalOrdersHistoryForMarginAccountPaginatedResult = {
83
- data: UnifiedConditionalOrderType[];
84
- totalCount: number;
85
- };
86
50
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/conditional-orders/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"/","sources":["clients/modules/conditional-orders/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,oBAAoB,EACrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpE,MAAM,MAAM,4BAA4B,GAAG;IACzC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAE5D,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,UAAU,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC;IACpD,sBAAsB,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC,wBAAwB,CAAC,CAAC;IAC5E,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,oBAAoB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,qBAAqB,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,8BAA8B,CAAC;AAEnC,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,CAAC;AAC9D,MAAM,MAAM,4BAA4B,GAAG,gBAAgB,CAAC;AAE5D,MAAM,MAAM,gCAAgC,GAAG;IAC7C,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,gCAAgC,GAAG;IAC7C,eAAe,EAAE,OAAO,CAAC;CAC1B,CAAC;AAGF,MAAM,MAAM,iDAAiD,GAAG;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iDAAiD,GAC3D,2BAA2B,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reyaxyz/api-sdk",
3
- "version": "0.112.0",
3
+ "version": "0.113.0",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "registry": "https://registry.npmjs.org"
@@ -33,14 +33,14 @@
33
33
  "generate:coverage-badges": "npx istanbul-badges-readme --silent"
34
34
  },
35
35
  "dependencies": {
36
- "@reyaxyz/common": "0.172.0",
36
+ "@reyaxyz/common": "0.172.1",
37
37
  "bignumber.js": "^9.1.2",
38
38
  "ethers": "6.9.0",
39
39
  "isomorphic-ws": "^5.0.0",
40
40
  "ws": "^8.16.0"
41
41
  },
42
42
  "packageManager": "pnpm@8.3.1",
43
- "gitHead": "f442b34d02817bd553e3169c41b146bb06474086",
43
+ "gitHead": "1cfa2f9849f7d2d8e55b22490706f227aa1f0b78",
44
44
  "devDependencies": {
45
45
  "@types/ws": "8.5.10"
46
46
  }
@@ -5,7 +5,6 @@ import {
5
5
  ReyaChainId,
6
6
  signConditionalOrder,
7
7
  signCancelConditionalOrder,
8
- StopLossOrder,
9
8
  ConditionalOrder,
10
9
  ConditionalOrderType,
11
10
  scale,
@@ -18,20 +17,12 @@ import {
18
17
  AlreadyGaveTradePermissionResult,
19
18
  CancelConditionalOrderParams,
20
19
  CancelConditionalOrderResult,
21
- CancelSLOrderParams,
22
- CancelSLOrderResult,
23
- GetConditionalOrdersHistoryForMarginAccountPaginatedParams,
24
- GetConditionalOrdersHistoryForMarginAccountPaginatedResult,
25
20
  GetConditionalOrdersHistoryForMarginAccountParams,
26
21
  GetConditionalOrdersHistoryForMarginAccountResult,
27
22
  RegisterConditionalOrderParams,
28
23
  RegisterConditionalOrderResult,
29
- RegisterSLOrderParams,
30
- RegisterSLOrderResult,
31
24
  UpdateConditionalOrderParams,
32
25
  UpdateConditionalOrderResult,
33
- UpdateSLOrderParams,
34
- UpdateSLOrderResult,
35
26
  } from './types';
36
27
  import { createNonce } from './utils';
37
28
 
@@ -53,19 +44,6 @@ export default class ConditionalOrdersClient extends RestClient {
53
44
  });
54
45
  }
55
46
 
56
- async getConditionalOrdersHistoryForMarginAccountPaginated(
57
- params: GetConditionalOrdersHistoryForMarginAccountPaginatedParams,
58
- ): Promise<GetConditionalOrdersHistoryForMarginAccountPaginatedResult> {
59
- const uri = `/api/conditional-orders/get-orders-by-account/${params.marginAccountId}/paginated`;
60
- return this.get<GetConditionalOrdersHistoryForMarginAccountPaginatedResult>(
61
- uri,
62
- {
63
- page: params.page,
64
- perPage: params.perPage,
65
- },
66
- );
67
- }
68
-
69
47
  async alreadyGaveTradePermissions(
70
48
  params: AlreadyGaveTradePermissionParams,
71
49
  ): Promise<AlreadyGaveTradePermissionResult> {
@@ -77,25 +55,6 @@ export default class ConditionalOrdersClient extends RestClient {
77
55
  };
78
56
  }
79
57
 
80
- async cancelSLOrder(
81
- params: CancelSLOrderParams,
82
- ): Promise<CancelSLOrderResult> {
83
- const signature = await signCancelConditionalOrder(
84
- params.signer,
85
- params.orderId,
86
- );
87
-
88
- const uri = `/api/conditional-orders/sl/cancel-order`;
89
- return this.put<StopLossOrder>(
90
- uri,
91
- {},
92
- {
93
- orderId: params.orderId,
94
- userSignature: signature,
95
- },
96
- );
97
- }
98
-
99
58
  async cancelConditionalOrder(
100
59
  params: CancelConditionalOrderParams,
101
60
  ): Promise<CancelConditionalOrderResult> {
@@ -116,40 +75,6 @@ export default class ConditionalOrdersClient extends RestClient {
116
75
  return res;
117
76
  }
118
77
 
119
- async registerSLOrder(
120
- params: RegisterSLOrderParams,
121
- ): Promise<RegisterSLOrderResult> {
122
- const inputs = await this.parseSlOrderInputs(
123
- params.signer,
124
- params.marginAccountId,
125
- params.marketId,
126
- params.stopLossPrice,
127
- params.supportingParams.exchangeId,
128
- params.supportingParams.counterpartyAccountIds,
129
- );
130
-
131
- // create new entry
132
- const uri = `/api/conditional-orders/sl/create-order`;
133
- return this.post<StopLossOrder>(
134
- uri,
135
- {},
136
- {
137
- accountId: params.marginAccountId,
138
- marketId: params.marketId,
139
- isLong: inputs.positionBase < 0,
140
- stopPrice: params.stopLossPrice,
141
- signerWallet: await params.signer.getAddress(),
142
- nonce: inputs.nonce.toString(),
143
- signature: inputs.signature,
144
- deadline: inputs.deadline,
145
- orderPriceLimit: inputs.orderPriceLimit.toString(),
146
- exchangeId: params.supportingParams.exchangeId,
147
- poolId: params.supportingParams.counterpartyAccountIds[0],
148
- timestampMs: inputs.creationTimestampMs,
149
- },
150
- );
151
- }
152
-
153
78
  async registerConditionalOrder(
154
79
  params: RegisterConditionalOrderParams,
155
80
  ): Promise<RegisterConditionalOrderResult> {
@@ -161,66 +86,32 @@ export default class ConditionalOrdersClient extends RestClient {
161
86
  params.triggerPrice,
162
87
  params.supportingParams.exchangeId,
163
88
  params.supportingParams.counterpartyAccountIds,
164
- // TODO: @Costin to fix implementation
165
89
  params.orderSize,
166
90
  );
167
91
 
168
92
  // create new entry
169
- const uri = `/api/conditional-orders/create-order`;
93
+ const uri = `/api/conditional-orders/create-or-update-order`;
170
94
  const result = await this.post<ConditionalOrder>(
171
95
  uri,
172
96
  {},
173
97
  {
174
98
  accountId: params.marginAccountId,
175
- marketId: params.marketId,
176
- isLong: inputs.positionBase < 0,
177
- orderType: params.orderType,
178
- triggerPrice: params.triggerPrice,
179
- signerWallet: await params.signer.getAddress(),
180
- nonce: inputs.nonce.toString(),
181
- signature: inputs.signature,
99
+ poolId: params.supportingParams.counterpartyAccountIds[0],
182
100
  deadline: inputs.deadline,
183
- orderPriceLimit: inputs.orderPriceLimit.toString(),
184
101
  exchangeId: params.supportingParams.exchangeId,
185
- poolId: params.supportingParams.counterpartyAccountIds[0],
186
- timestampMs: inputs.creationTimestampMs,
187
- },
188
- );
189
- return result;
190
- }
191
-
192
- async updateSLOrder(
193
- params: UpdateSLOrderParams,
194
- ): Promise<UpdateSLOrderResult> {
195
- const inputs = await this.parseSlOrderInputs(
196
- params.signer,
197
- params.marginAccountId,
198
- params.marketId,
199
- params.stopLossPrice,
200
- params.supportingParams.exchangeId,
201
- params.supportingParams.counterpartyAccountIds,
202
- );
203
-
204
- // create new entry
205
- const uri = `/api/conditional-orders/sl/update-order`;
206
- return this.post<StopLossOrder>(
207
- uri,
208
- {},
209
- {
210
- accountId: params.marginAccountId,
102
+ isLong: inputs.actualOrderSize > 0,
211
103
  marketId: params.marketId,
212
- isLong: inputs.positionBase < 0,
213
- stopPrice: params.stopLossPrice,
214
- signerWallet: await params.signer.getAddress(),
215
104
  nonce: inputs.nonce.toString(),
216
- signature: inputs.signature,
217
- deadline: inputs.deadline,
218
105
  orderPriceLimit: inputs.orderPriceLimit.toString(),
219
- exchangeId: params.supportingParams.exchangeId,
220
- poolId: params.supportingParams.counterpartyAccountIds[0],
106
+ orderType: params.orderType,
107
+ signature: inputs.signature,
108
+ signerWallet: await params.signer.getAddress(),
221
109
  timestampMs: inputs.creationTimestampMs,
110
+ triggerPrice: params.triggerPrice,
111
+ orderBase: params.orderSize,
222
112
  },
223
113
  );
114
+ return result;
224
115
  }
225
116
 
226
117
  async updateConditionalOrder(
@@ -234,27 +125,30 @@ export default class ConditionalOrdersClient extends RestClient {
234
125
  params.triggerPrice,
235
126
  params.supportingParams.exchangeId,
236
127
  params.supportingParams.counterpartyAccountIds,
128
+ params.orderSize,
237
129
  );
238
130
 
239
131
  // create new entry
240
- const uri = `/api/conditional-orders/update-order`;
132
+ const uri = `/api/conditional-orders/create-or-update-order`;
241
133
  const result = await this.post<ConditionalOrder>(
242
134
  uri,
243
135
  {},
244
136
  {
245
137
  accountId: params.marginAccountId,
138
+ poolId: params.supportingParams.counterpartyAccountIds[0],
139
+ deadline: inputs.deadline,
140
+ exchangeId: params.supportingParams.exchangeId,
141
+ isLong: inputs.actualOrderSize > 0,
246
142
  marketId: params.marketId,
247
- isLong: inputs.positionBase < 0,
248
- orderType: params.orderType,
249
- triggerPrice: params.triggerPrice,
250
- signerWallet: await params.signer.getAddress(),
251
143
  nonce: inputs.nonce.toString(),
252
- signature: inputs.signature,
253
- deadline: inputs.deadline,
254
144
  orderPriceLimit: inputs.orderPriceLimit.toString(),
255
- exchangeId: params.supportingParams.exchangeId,
256
- poolId: params.supportingParams.counterpartyAccountIds[0],
145
+ orderType: params.orderType,
146
+ signature: inputs.signature,
147
+ signerWallet: await params.signer.getAddress(),
257
148
  timestampMs: inputs.creationTimestampMs,
149
+ triggerPrice: params.triggerPrice,
150
+ cancelOrderId: params.cancelOrderId,
151
+ orderBase: params.orderSize,
258
152
  },
259
153
  );
260
154
  return result;
@@ -279,30 +173,52 @@ export default class ConditionalOrdersClient extends RestClient {
279
173
  orderSize?: number,
280
174
  ): Promise<{
281
175
  signature: string;
282
- positionBase: number;
176
+ actualOrderSize: number;
283
177
  orderPriceLimit: bigint;
284
178
  nonce: bigint;
285
179
  deadline: number;
286
180
  creationTimestampMs: number;
287
- orderSize?: number;
288
181
  }> {
289
- // TODO: @Costin to fix implementation
290
- console.log('orderSize', orderSize);
291
-
292
- const position = await this.getPosition(accountId, marketId);
293
- const positionBase = position.base;
294
-
295
- if (positionBase === 0) {
296
- throw new Error('Position with no exposure');
182
+ let inputs: string;
183
+ let actualOrderSize: number;
184
+ let isLongOrder: boolean;
185
+ let orderPriceLimit: bigint;
186
+
187
+ if (orderType === ConditionalOrderType.LIMIT_ORDER) {
188
+ if (orderSize === undefined) {
189
+ throw new Error('Order base is required for limit orders');
190
+ }
191
+
192
+ if (orderSize === 0) {
193
+ throw new Error('Cannot create an empty limit order');
194
+ }
195
+
196
+ actualOrderSize = orderSize;
197
+ isLongOrder = actualOrderSize > 0;
198
+ orderPriceLimit = calculateMaxPriceLimit(isLongOrder);
199
+
200
+ inputs = AbiCoder.defaultAbiCoder().encode(
201
+ ['int256', 'uint256'],
202
+ [scale(18)(orderSize), scale(18)(triggerPrice)],
203
+ );
204
+ } else {
205
+ const position = await this.getPosition(accountId, marketId);
206
+ const positionBase = position.base;
207
+
208
+ if (positionBase === 0) {
209
+ throw new Error('Cannot create SL or TP order for closed positions');
210
+ }
211
+
212
+ actualOrderSize = -positionBase;
213
+ isLongOrder = actualOrderSize > 0;
214
+ orderPriceLimit = calculateMaxPriceLimit(isLongOrder);
215
+
216
+ inputs = AbiCoder.defaultAbiCoder().encode(
217
+ ['bool', 'uint256', 'uint256'],
218
+ [isLongOrder, scale(18)(triggerPrice), orderPriceLimit],
219
+ );
297
220
  }
298
221
 
299
- const isLongOrder = positionBase < 0;
300
- const orderPriceLimit = calculateMaxPriceLimit(isLongOrder);
301
-
302
- const inputs = AbiCoder.defaultAbiCoder().encode(
303
- ['bool', 'uint256', 'uint256'],
304
- [isLongOrder, scale(18)(triggerPrice), orderPriceLimit],
305
- );
306
222
  const creationTimestampMs = Date.now();
307
223
  const nonce = createNonce(accountId, marketId, creationTimestampMs);
308
224
 
@@ -321,63 +237,7 @@ export default class ConditionalOrdersClient extends RestClient {
321
237
 
322
238
  return {
323
239
  signature,
324
- positionBase,
325
- orderPriceLimit,
326
- nonce,
327
- deadline: CONDITIONAL_ORDER_SIG_DEADLINE,
328
- creationTimestampMs,
329
- };
330
- }
331
-
332
- // todo: IR deprecate
333
- private async parseSlOrderInputs(
334
- signer: Signer | JsonRpcSigner,
335
- accountId: number,
336
- marketId: number,
337
- stopLossPrice: number,
338
- exchangeId: number,
339
- counterpartyAccountIds: number[],
340
- ): Promise<{
341
- signature: string;
342
- positionBase: number;
343
- orderPriceLimit: bigint;
344
- nonce: bigint;
345
- deadline: number;
346
- creationTimestampMs: number;
347
- }> {
348
- const position = await this.getPosition(accountId, marketId);
349
- const positionBase = position.base;
350
-
351
- if (positionBase === 0) {
352
- throw new Error('Position with no exposure');
353
- }
354
-
355
- const isLongOrder = positionBase < 0;
356
- const orderPriceLimit = calculateMaxPriceLimit(isLongOrder);
357
-
358
- const inputs = AbiCoder.defaultAbiCoder().encode(
359
- ['bool', 'uint256', 'uint256'],
360
- [isLongOrder, scale(18)(stopLossPrice), orderPriceLimit],
361
- );
362
- const creationTimestampMs = Date.now();
363
- const nonce = createNonce(accountId, marketId, creationTimestampMs);
364
-
365
- const signature = await signConditionalOrder(
366
- signer,
367
- this.reyaChainId,
368
- accountId,
369
- marketId,
370
- exchangeId,
371
- counterpartyAccountIds,
372
- ConditionalOrderType.STOP_LOSS,
373
- inputs,
374
- nonce,
375
- CONDITIONAL_ORDER_SIG_DEADLINE,
376
- );
377
-
378
- return {
379
- signature,
380
- positionBase,
240
+ actualOrderSize,
381
241
  orderPriceLimit,
382
242
  nonce,
383
243
  deadline: CONDITIONAL_ORDER_SIG_DEADLINE,
@@ -1,5 +1,4 @@
1
1
  import {
2
- StopLossOrder,
3
2
  ConditionalOrder,
4
3
  UnifiedConditionalOrderType,
5
4
  ConditionalOrderType,
@@ -7,15 +6,6 @@ import {
7
6
  import { Signer, JsonRpcSigner } from 'ethers';
8
7
  import { MarginAccountEntity, MarketEntity } from '@reyaxyz/common';
9
8
 
10
- // todo: IR to deprecate
11
- export type CancelSLOrderParams = {
12
- signer: Signer | JsonRpcSigner;
13
- orderId: string;
14
- };
15
-
16
- // todo: IR to deprecate
17
- export type CancelSLOrderResult = StopLossOrder;
18
-
19
9
  export type CancelConditionalOrderParams = {
20
10
  signer: Signer | JsonRpcSigner;
21
11
  orderId: string;
@@ -40,15 +30,6 @@ export type OrderSupportingParams = {
40
30
  currentPrice: number;
41
31
  };
42
32
 
43
- // todo: IR to deprecate
44
- export type RegisterSLOrderParams = {
45
- signer: Signer | JsonRpcSigner;
46
- marginAccountId: MarginAccountEntity['id'];
47
- stopLossPrice: number;
48
- marketId: number;
49
- supportingParams: OrderSupportingParams;
50
- };
51
-
52
33
  export type RegisterConditionalOrderParams = {
53
34
  signer: Signer | JsonRpcSigner;
54
35
  marginAccountId: MarginAccountEntity['id'];
@@ -59,27 +40,9 @@ export type RegisterConditionalOrderParams = {
59
40
  orderSize?: number;
60
41
  };
61
42
 
62
- // todo: IR to deprecate
63
- export type UpdateSLOrderParams = {
64
- signer: Signer | JsonRpcSigner;
65
- marginAccountId: MarginAccountEntity['id'];
66
- stopLossPrice: number;
67
- marketId: number;
68
- supportingParams: OrderSupportingParams;
69
- };
70
-
71
43
  export type UpdateConditionalOrderParams = {
72
- signer: Signer | JsonRpcSigner;
73
- marginAccountId: MarginAccountEntity['id'];
74
- triggerPrice: number;
75
- orderType: ConditionalOrderType;
76
- marketId: number;
77
- supportingParams: OrderSupportingParams;
78
- };
79
-
80
- // todo: IR to deprecate
81
- export type RegisterSLOrderResult = StopLossOrder;
82
- export type UpdateSLOrderResult = StopLossOrder;
44
+ cancelOrderId: string;
45
+ } & RegisterConditionalOrderParams;
83
46
 
84
47
  export type RegisterConditionalOrderResult = ConditionalOrder;
85
48
  export type UpdateConditionalOrderResult = ConditionalOrder;
@@ -98,16 +61,6 @@ export type GetConditionalOrdersHistoryForMarginAccountParams = {
98
61
  marginAccountId: MarginAccountEntity['id'];
99
62
  limit?: number;
100
63
  };
101
- export type GetConditionalOrdersHistoryForMarginAccountPaginatedParams = {
102
- address: string;
103
- marginAccountId: MarginAccountEntity['id'];
104
- page: number;
105
- perPage: number;
106
- };
107
64
 
108
65
  export type GetConditionalOrdersHistoryForMarginAccountResult =
109
66
  UnifiedConditionalOrderType[];
110
- export type GetConditionalOrdersHistoryForMarginAccountPaginatedResult = {
111
- data: UnifiedConditionalOrderType[];
112
- totalCount: number;
113
- };