@typus/typus-perp-sdk 1.0.39 → 1.0.40-fix-history-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,7 +41,7 @@ exports.getTlpAPRFromSentio = getTlpAPRFromSentio;
41
41
  exports.getVolumeFromSentio = getVolumeFromSentio;
42
42
  var src_1 = require("../../src");
43
43
  var headers = {
44
- "api-key": "vQCQ6ZvvFesph3Q8usDLKfc7Wx2D8AX5M",
44
+ "api-key": "ffJa6FwxeJNrQP8NZ5doEMXqdSA7XM6mT",
45
45
  "Content-Type": "application/json",
46
46
  };
47
47
  function getFromSentio(event, userAddress, startTimestamp) {
@@ -1,5 +1,5 @@
1
1
  import { TOKEN } from "@typus/typus-sdk/dist/src/constants";
2
- export type actionType = "Place Order" | "Cancel Order" | "Order Filled (Open Position)" | "Order Filled (Close Position)" | "Realized PnL" | "Modify Collateral" | "Exercise Position" | "Liquidation" | "Force Close Position " | "Swap";
2
+ export type actionType = "Place Order" | "Cancel Order" | "Order Filled (Open Position)" | "Order Filled (Close Position)" | "Realized PnL" | "Modify Collateral" | "Exercise Position" | "Liquidation" | "Force Close Position" | "Swap";
3
3
  export type sideType = "Long" | "Short";
4
4
  export type orderType = "Market" | "Limit" | "Take Profit" | "Stop Loss";
5
5
  export type statusType = "Open" | "Filled" | "Canceled";
@@ -23,5 +23,6 @@ export interface Event {
23
23
  }
24
24
  export declare function parseUserHistory(raw_events: any): Promise<Event[]>;
25
25
  export declare function getGraphQLEvents(module: string, sender: string, beforeCursor?: string | null): Promise<any>;
26
- export declare function getLiquidateFromSentio(userAddress: string, startTimestamp: number): Promise<Event[]>;
27
- export declare function getOrderMatchFromSentio(userAddress: string, startTimestamp: number): Promise<Event[]>;
26
+ export declare function getLiquidateFromSentio(userAddress: string, startTimestamp: number, events: Event[]): Promise<Event[]>;
27
+ export declare function getOrderMatchFromSentio(userAddress: string, startTimestamp: number, events: Event[]): Promise<Event[]>;
28
+ export declare function getRealizeOptionFromSentio(userAddress: string, startTimestamp: number, events: Event[]): Promise<Event[]>;
@@ -67,6 +67,7 @@ exports.parseUserHistory = parseUserHistory;
67
67
  exports.getGraphQLEvents = getGraphQLEvents;
68
68
  exports.getLiquidateFromSentio = getLiquidateFromSentio;
69
69
  exports.getOrderMatchFromSentio = getOrderMatchFromSentio;
70
+ exports.getRealizeOptionFromSentio = getRealizeOptionFromSentio;
70
71
  var constants_1 = require("@typus/typus-sdk/dist/src/constants");
71
72
  var structs_1 = require("../typus_perp/position/structs");
72
73
  var structs_2 = require("../typus_perp/trading/structs");
@@ -118,13 +119,14 @@ function parseUserHistory(raw_events) {
118
119
  else if (json.reduce_only && json.is_stop_order) {
119
120
  order_type = "Stop Loss";
120
121
  }
122
+ related = events.find(function (e) { return e.position_id == json.linked_position_id && e.market == market; });
121
123
  var e = {
122
124
  action: "Place Order",
123
125
  typeName: name,
124
126
  order_id: json.order_id,
125
127
  position_id: json.linked_position_id,
126
128
  market: market,
127
- side: json.is_long ? "Long" : "Short",
129
+ side: related ? related.side : json.is_long ? "Long" : "Short",
128
130
  order_type: order_type,
129
131
  status: json.filled ? "Filled" : "Open",
130
132
  size: size,
@@ -158,7 +160,7 @@ function parseUserHistory(raw_events) {
158
160
  var realized_trading_fee = Number(json.realized_trading_fee) + Number(json.realized_borrow_fee);
159
161
  var realized_fee_in_usd = Number(json.realized_fee_in_usd) / Math.pow(10, 9);
160
162
  var realized_amount = json.realized_amount_sign ? Number(json.realized_amount) : -Number(json.realized_amount);
161
- var realized_pnl = ((realized_amount - realized_trading_fee) * realized_fee_in_usd) / realized_trading_fee;
163
+ var realized_pnl = realized_trading_fee > 0 ? ((realized_amount - realized_trading_fee) * realized_fee_in_usd) / realized_trading_fee : 0;
162
164
  var e = {
163
165
  action: action,
164
166
  typeName: name,
@@ -198,7 +200,7 @@ function parseUserHistory(raw_events) {
198
200
  action: "Cancel Order",
199
201
  typeName: name,
200
202
  order_id: json.order_id,
201
- position_id: undefined,
203
+ position_id: related === null || related === void 0 ? void 0 : related.position_id,
202
204
  market: market,
203
205
  side: related === null || related === void 0 ? void 0 : related.side,
204
206
  order_type: related === null || related === void 0 ? void 0 : related.order_type,
@@ -222,10 +224,10 @@ function parseUserHistory(raw_events) {
222
224
  var related = events.findLast(function (e) { return e.position_id === json.position_id && e.market === market; });
223
225
  var collateral;
224
226
  if (json.increased_collateral_amount) {
225
- collateral = Number(json.increased_collateral_amount);
227
+ collateral = Number(json.increased_collateral_amount) * -1;
226
228
  }
227
229
  else {
228
- collateral = Number(json.released_collateral_amount) * -1;
230
+ collateral = Number(json.released_collateral_amount);
229
231
  }
230
232
  var e = {
231
233
  action: "Modify Collateral",
@@ -311,74 +313,168 @@ function getGraphQLEvents(module_1, sender_1) {
311
313
  });
312
314
  });
313
315
  }
314
- function getLiquidateFromSentio(userAddress, startTimestamp) {
316
+ function getLiquidateFromSentio(userAddress, startTimestamp, events) {
315
317
  return __awaiter(this, void 0, void 0, function () {
316
- var datas;
318
+ var datas, liquidate;
317
319
  return __generator(this, function (_a) {
318
320
  switch (_a.label) {
319
321
  case 0: return [4 /*yield*/, (0, sentio_1.getFromSentio)("Liquidate", userAddress, startTimestamp.toString())];
320
322
  case 1:
321
323
  datas = _a.sent();
322
- // console.log(datas);
323
- return [2 /*return*/, datas.map(function (x) {
324
- var collateral = Number(x.liquidator_fee) + Number(x.value_for_lp_pool);
325
- var txHistory = {
326
- action: "Liquidation",
327
- typeName: undefined,
328
- order_id: x.order_id,
329
- position_id: x.position_id,
330
- market: "".concat(x.trading_token, "/USD"),
331
- side: undefined,
332
- order_type: "Market",
333
- status: "Filled",
334
- size: undefined,
335
- base_token: x.trading_token,
336
- collateral: collateral,
337
- collateral_token: x.collateral_token,
338
- price: x.trading_price,
339
- realized_pnl: collateral * Number(x.collateral_price),
340
- timestamp: x.timestamp,
341
- tx_digest: x.transaction_hash,
342
- };
343
- return txHistory;
344
- })];
324
+ liquidate = datas.map(function (x) {
325
+ var collateral = Number(x.liquidator_fee) + Number(x.value_for_lp_pool);
326
+ var base_token = toToken(x.trading_token);
327
+ var txHistory = {
328
+ action: "Liquidation",
329
+ typeName: "LiquidateEvent",
330
+ order_id: x.order_id,
331
+ position_id: x.position_id,
332
+ market: "".concat(base_token, "/USD"),
333
+ side: undefined,
334
+ order_type: "Market",
335
+ status: "Filled",
336
+ size: undefined,
337
+ base_token: base_token,
338
+ collateral: collateral,
339
+ collateral_token: x.collateral_token,
340
+ price: x.trading_price,
341
+ realized_pnl: -collateral * Number(x.collateral_price),
342
+ timestamp: x.timestamp,
343
+ tx_digest: x.transaction_hash,
344
+ };
345
+ return txHistory;
346
+ });
347
+ liquidate = liquidate.map(function (x) {
348
+ var related = events.findLast(function (e) { return e.position_id == x.position_id && e.market == x.market; });
349
+ // console.log(x);
350
+ // console.log(related);
351
+ if (related) {
352
+ x.side = related.side == "Long" ? "Short" : "Long";
353
+ x.size = related.size;
354
+ }
355
+ return x;
356
+ });
357
+ // console.log(liquidate);
358
+ events = events.concat(liquidate);
359
+ events = events.sort(function (a, b) { return Number(new Date(a.timestamp)) - Number(new Date(b.timestamp)); });
360
+ return [2 /*return*/, events];
345
361
  }
346
362
  });
347
363
  });
348
364
  }
349
- function getOrderMatchFromSentio(userAddress, startTimestamp) {
365
+ function getOrderMatchFromSentio(userAddress, startTimestamp, events) {
350
366
  return __awaiter(this, void 0, void 0, function () {
351
- var datas;
367
+ var datas, order_match;
352
368
  return __generator(this, function (_a) {
353
369
  switch (_a.label) {
354
370
  case 0: return [4 /*yield*/, (0, sentio_1.getFromSentio)("OrderFilled", userAddress, startTimestamp.toString())];
355
371
  case 1:
356
372
  datas = _a.sent();
357
- // console.log(datas);
358
- return [2 /*return*/, datas.map(function (x) {
359
- var realized_pnl = ((x.realized_amount - x.realized_trading_fee) * x.realized_fee_in_usd) / x.realized_trading_fee;
360
- var txHistory = {
361
- action: x.order_type == "Open" ? "Order Filled (Open Position)" : "Order Filled (Close Position)",
362
- typeName: undefined,
363
- order_id: x.order_id,
364
- position_id: x.position_id,
365
- market: "".concat(x.trading_token, "/USD"),
366
- side: x.side,
367
- order_type: undefined,
368
- status: "Filled",
369
- size: x.filled_size,
370
- base_token: x.trading_token,
371
- collateral: undefined,
372
- collateral_token: x.collateral_token,
373
- price: x.filled_price,
374
- realized_pnl: realized_pnl,
375
- timestamp: x.timestamp,
376
- tx_digest: x.transaction_hash,
377
- };
378
- return txHistory;
379
- })];
373
+ order_match = datas.map(function (x) {
374
+ var base_token = toToken(x.trading_token);
375
+ var txHistory = {
376
+ action: x.order_type == "Open" ? "Order Filled (Open Position)" : "Order Filled (Close Position)",
377
+ typeName: "OrderFilledEvent",
378
+ order_id: x.order_id,
379
+ position_id: x.position_id,
380
+ market: "".concat(base_token, "/USD"),
381
+ side: x.side,
382
+ order_type: undefined,
383
+ status: "Filled",
384
+ size: x.filled_size,
385
+ base_token: base_token,
386
+ collateral: undefined,
387
+ collateral_token: x.collateral_token,
388
+ price: x.filled_price,
389
+ realized_pnl: x.realized_pnl,
390
+ timestamp: x.timestamp,
391
+ tx_digest: x.transaction_hash,
392
+ };
393
+ return txHistory;
394
+ });
395
+ // deduplicate
396
+ order_match = order_match.filter(function (x) { return events.findIndex(function (y) { return y.tx_digest == x.tx_digest; }) == -1; });
397
+ order_match = order_match.map(function (x) {
398
+ var related = events.findLast(function (e) { return e.order_id == x.order_id && e.market == x.market; });
399
+ // console.log(x, related);
400
+ if (related) {
401
+ x.order_type = related.order_type;
402
+ x.collateral = related.collateral;
403
+ }
404
+ else {
405
+ x.order_type = "Market";
406
+ }
407
+ return x;
408
+ });
409
+ // console.log(order_match);
410
+ events = events.concat(order_match);
411
+ events = events.sort(function (a, b) { return Number(new Date(a.timestamp)) - Number(new Date(b.timestamp)); });
412
+ return [2 /*return*/, events];
413
+ }
414
+ });
415
+ });
416
+ }
417
+ function getRealizeOptionFromSentio(userAddress, startTimestamp, events) {
418
+ return __awaiter(this, void 0, void 0, function () {
419
+ var datas, exercise;
420
+ return __generator(this, function (_a) {
421
+ switch (_a.label) {
422
+ case 0: return [4 /*yield*/, (0, sentio_1.getFromSentio)("RealizeOption", userAddress, startTimestamp.toString())];
423
+ case 1:
424
+ datas = _a.sent();
425
+ exercise = datas.map(function (x) {
426
+ var base_token = toToken(x.base_token);
427
+ var txHistory = {
428
+ action: "Exercise Position",
429
+ typeName: "RealizeOptionPositionEvent",
430
+ order_id: undefined,
431
+ position_id: x.position_id,
432
+ market: "".concat(base_token, "/USD"),
433
+ side: undefined,
434
+ order_type: "Market",
435
+ status: "Filled",
436
+ size: undefined,
437
+ base_token: base_token,
438
+ collateral: Number(x.exercise_balance_value),
439
+ collateral_token: x.collateral_token,
440
+ price: undefined,
441
+ realized_pnl: Number(x.user_remaining_in_usd),
442
+ timestamp: x.timestamp,
443
+ tx_digest: x.transaction_hash,
444
+ };
445
+ // console.log(txHistory);
446
+ return txHistory;
447
+ });
448
+ exercise = exercise.map(function (x) {
449
+ var related = events.findLast(function (e) { return e.position_id == x.position_id && e.market == x.market; });
450
+ // console.log(x);
451
+ // console.log(related);
452
+ if (related) {
453
+ x.side = related.side;
454
+ x.size = related.size;
455
+ }
456
+ return x;
457
+ });
458
+ // console.log(exercise);
459
+ events = events.concat(exercise);
460
+ events = events.sort(function (a, b) { return Number(new Date(a.timestamp)) - Number(new Date(b.timestamp)); });
461
+ return [2 /*return*/, events];
380
462
  }
381
463
  });
382
464
  });
383
465
  }
384
466
  // getOrderMatchFromSentio("0x95f26ce574fc9ace2608807648d99a4dce17f1be8964613d5b972edc82849e9e", 0);
467
+ // getRealizeOptionFromSentio("0x95f26ce574fc9ace2608807648d99a4dce17f1be8964613d5b972edc82849e9e", 0);
468
+ function toToken(name) {
469
+ switch (name) {
470
+ case "BTC":
471
+ case "ETH":
472
+ case "SOL":
473
+ case "APT":
474
+ return "w".concat(name);
475
+ case "WUSDC":
476
+ return "wUSDC";
477
+ default:
478
+ return name;
479
+ }
480
+ }
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@typus/typus-perp-sdk",
3
- "version": "1.0.39",
3
+ "version": "1.0.40-fix-history-2",
4
4
  "repository": "https://github.com/Typus-Lab/typus-perp-sdk.git",
5
5
  "author": "Typus",
6
6
  "description": "typus perp sdk",
7
7
  "license": "MIT",
8
8
  "dependencies": {
9
- "@typus/typus-sdk": "1.6.15"
9
+ "@typus/typus-sdk": "1.6.16"
10
10
  },
11
11
  "devDependencies": {
12
12
  "@types/bs58": "^4.0.1",