@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.
- package/dist/src/api/sentio.js +1 -1
- package/dist/src/user/history.d.ts +4 -3
- package/dist/src/user/history.js +151 -55
- package/package.json +2 -2
package/dist/src/api/sentio.js
CHANGED
|
@@ -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": "
|
|
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
|
|
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[]>;
|
package/dist/src/user/history.js
CHANGED
|
@@ -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:
|
|
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)
|
|
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
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
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
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
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.
|
|
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.
|
|
9
|
+
"@typus/typus-sdk": "1.6.16"
|
|
10
10
|
},
|
|
11
11
|
"devDependencies": {
|
|
12
12
|
"@types/bs58": "^4.0.1",
|