@pear-protocol/hyperliquid-sdk 0.1.4-pnl → 0.1.5-pnl
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/hooks/usePnlCalendar.d.ts +6 -2
- package/dist/index.d.ts +6 -1
- package/dist/index.js +48 -4
- package/package.json +1 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { TokenMetadata } from '../types';
|
|
2
1
|
export type PnlCalendarTimeframe = '2W' | '3W' | '2M' | '3M';
|
|
3
2
|
export interface PnlCalendarOptions {
|
|
4
3
|
timeframe?: PnlCalendarTimeframe;
|
|
@@ -7,12 +6,17 @@ export interface PnlCalendarOptions {
|
|
|
7
6
|
}
|
|
8
7
|
export interface PnlCalendarAsset {
|
|
9
8
|
coin: string;
|
|
10
|
-
|
|
9
|
+
symbol: string;
|
|
10
|
+
assetName: string;
|
|
11
|
+
marketPrefix: string;
|
|
12
|
+
percentage: number;
|
|
13
|
+
collateralToken: string;
|
|
11
14
|
}
|
|
12
15
|
export interface PnlCalendarTrade {
|
|
13
16
|
tradeHistoryId: string;
|
|
14
17
|
realizedPnl: number;
|
|
15
18
|
result: 'profit' | 'loss' | 'breakeven';
|
|
19
|
+
collateralTypes: string[];
|
|
16
20
|
closedLongAssets: PnlCalendarAsset[];
|
|
17
21
|
closedShortAssets: PnlCalendarAsset[];
|
|
18
22
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1506,12 +1506,17 @@ interface PnlCalendarOptions {
|
|
|
1506
1506
|
}
|
|
1507
1507
|
interface PnlCalendarAsset {
|
|
1508
1508
|
coin: string;
|
|
1509
|
-
|
|
1509
|
+
symbol: string;
|
|
1510
|
+
assetName: string;
|
|
1511
|
+
marketPrefix: string;
|
|
1512
|
+
percentage: number;
|
|
1513
|
+
collateralToken: string;
|
|
1510
1514
|
}
|
|
1511
1515
|
interface PnlCalendarTrade {
|
|
1512
1516
|
tradeHistoryId: string;
|
|
1513
1517
|
realizedPnl: number;
|
|
1514
1518
|
result: 'profit' | 'loss' | 'breakeven';
|
|
1519
|
+
collateralTypes: string[];
|
|
1515
1520
|
closedLongAssets: PnlCalendarAsset[];
|
|
1516
1521
|
closedShortAssets: PnlCalendarAsset[];
|
|
1517
1522
|
}
|
package/dist/index.js
CHANGED
|
@@ -8492,6 +8492,25 @@ const toISODateString$1 = (input) => {
|
|
|
8492
8492
|
return d.toISOString();
|
|
8493
8493
|
};
|
|
8494
8494
|
const round2 = (n) => Math.round(n * 100) / 100;
|
|
8495
|
+
const mapAsset$1 = (asset, getAssetByName) => {
|
|
8496
|
+
var _a, _b, _c, _d;
|
|
8497
|
+
const metadata = getAssetByName(asset.coin);
|
|
8498
|
+
const marketInfo = getMarketInfoFromSymbol(asset.coin);
|
|
8499
|
+
return {
|
|
8500
|
+
coin: asset.coin,
|
|
8501
|
+
symbol: (_a = metadata === null || metadata === void 0 ? void 0 : metadata.symbolName) !== null && _a !== void 0 ? _a : marketInfo.symbolName,
|
|
8502
|
+
assetName: (_b = metadata === null || metadata === void 0 ? void 0 : metadata.assetName) !== null && _b !== void 0 ? _b : asset.coin,
|
|
8503
|
+
marketPrefix: (_c = metadata === null || metadata === void 0 ? void 0 : metadata.marketName) !== null && _c !== void 0 ? _c : marketInfo.marketName,
|
|
8504
|
+
percentage: asset.closeWeight * 100,
|
|
8505
|
+
collateralToken: (_d = metadata === null || metadata === void 0 ? void 0 : metadata.collateralToken) !== null && _d !== void 0 ? _d : 'USDC',
|
|
8506
|
+
};
|
|
8507
|
+
};
|
|
8508
|
+
const getCollateralTypes$1 = (assets) => {
|
|
8509
|
+
const set = new Set();
|
|
8510
|
+
for (const a of assets)
|
|
8511
|
+
set.add(a.collateralToken);
|
|
8512
|
+
return set.size > 0 ? Array.from(set) : ['USDC'];
|
|
8513
|
+
};
|
|
8495
8514
|
const buildSummary = (days) => {
|
|
8496
8515
|
let pnl = 0;
|
|
8497
8516
|
let volume = 0;
|
|
@@ -8559,12 +8578,15 @@ const buildCalendarData = (tradeHistories, timeframe, rangeStart, rangeEnd, tota
|
|
|
8559
8578
|
bucket.volume += isFinite(vol) ? vol : 0;
|
|
8560
8579
|
bucket.positionsClosed += 1;
|
|
8561
8580
|
const tradePnl = trade.realizedPnl;
|
|
8581
|
+
const longAssets = trade.closedLongAssets.map((a) => mapAsset$1(a, getAssetByName));
|
|
8582
|
+
const shortAssets = trade.closedShortAssets.map((a) => mapAsset$1(a, getAssetByName));
|
|
8562
8583
|
bucket.trades.push({
|
|
8563
8584
|
tradeHistoryId: trade.tradeHistoryId,
|
|
8564
8585
|
realizedPnl: tradePnl,
|
|
8565
8586
|
result: tradePnl > 0 ? 'profit' : tradePnl < 0 ? 'loss' : 'breakeven',
|
|
8566
|
-
|
|
8567
|
-
|
|
8587
|
+
collateralTypes: getCollateralTypes$1([...longAssets, ...shortAssets]),
|
|
8588
|
+
closedLongAssets: longAssets,
|
|
8589
|
+
closedShortAssets: shortAssets,
|
|
8568
8590
|
});
|
|
8569
8591
|
}
|
|
8570
8592
|
// Build day objects
|
|
@@ -8747,14 +8769,36 @@ const getTimeframeDays = (tf) => {
|
|
|
8747
8769
|
}
|
|
8748
8770
|
};
|
|
8749
8771
|
const toISODateString = (date) => date.toISOString();
|
|
8772
|
+
const mapAsset = (asset, getAssetByName) => {
|
|
8773
|
+
var _a, _b, _c, _d;
|
|
8774
|
+
const metadata = getAssetByName(asset.coin);
|
|
8775
|
+
const marketInfo = getMarketInfoFromSymbol(asset.coin);
|
|
8776
|
+
return {
|
|
8777
|
+
coin: asset.coin,
|
|
8778
|
+
symbol: (_a = metadata === null || metadata === void 0 ? void 0 : metadata.symbolName) !== null && _a !== void 0 ? _a : marketInfo.symbolName,
|
|
8779
|
+
assetName: (_b = metadata === null || metadata === void 0 ? void 0 : metadata.assetName) !== null && _b !== void 0 ? _b : asset.coin,
|
|
8780
|
+
marketPrefix: (_c = metadata === null || metadata === void 0 ? void 0 : metadata.marketName) !== null && _c !== void 0 ? _c : marketInfo.marketName,
|
|
8781
|
+
percentage: asset.closeWeight * 100,
|
|
8782
|
+
collateralToken: (_d = metadata === null || metadata === void 0 ? void 0 : metadata.collateralToken) !== null && _d !== void 0 ? _d : 'USDC',
|
|
8783
|
+
};
|
|
8784
|
+
};
|
|
8785
|
+
const getCollateralTypes = (assets) => {
|
|
8786
|
+
const set = new Set();
|
|
8787
|
+
for (const a of assets)
|
|
8788
|
+
set.add(a.collateralToken);
|
|
8789
|
+
return set.size > 0 ? Array.from(set) : ['USDC'];
|
|
8790
|
+
};
|
|
8750
8791
|
const toCalendarTrade = (trade, getAssetByName) => {
|
|
8751
8792
|
const pnl = trade.realizedPnl;
|
|
8793
|
+
const longAssets = trade.closedLongAssets.map((a) => mapAsset(a, getAssetByName));
|
|
8794
|
+
const shortAssets = trade.closedShortAssets.map((a) => mapAsset(a, getAssetByName));
|
|
8752
8795
|
return {
|
|
8753
8796
|
tradeHistoryId: trade.tradeHistoryId,
|
|
8754
8797
|
realizedPnl: pnl,
|
|
8755
8798
|
result: pnl > 0 ? 'profit' : pnl < 0 ? 'loss' : 'breakeven',
|
|
8756
|
-
|
|
8757
|
-
|
|
8799
|
+
collateralTypes: getCollateralTypes([...longAssets, ...shortAssets]),
|
|
8800
|
+
closedLongAssets: longAssets,
|
|
8801
|
+
closedShortAssets: shortAssets,
|
|
8758
8802
|
};
|
|
8759
8803
|
};
|
|
8760
8804
|
// ─── hook ───────────────────────────────────────────────────────
|