@gainsnetwork/sdk 0.1.29-rc3 → 0.1.30-rc1
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 +11 -11
- package/lib/constants.d.ts +262 -261
- package/lib/constants.js +278 -277
- package/lib/contracts/addresses.d.ts +3 -3
- package/lib/contracts/addresses.js +31 -31
- package/lib/contracts/addresses.json +89 -89
- package/lib/contracts/index.d.ts +8 -8
- package/lib/contracts/index.js +40 -40
- package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -1911
- package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -2
- package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +1067 -1067
- package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -2
- package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +1740 -1740
- package/lib/contracts/types/generated/GNSMultiCollatDiamond.js +2 -2
- package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +533 -533
- package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -2
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -613
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -2
- package/lib/contracts/types/generated/GNSTrading.d.ts +758 -758
- package/lib/contracts/types/generated/GNSTrading.js +2 -2
- package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -875
- package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -2
- package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -1387
- package/lib/contracts/types/generated/GNSTradingStorage.js +2 -2
- package/lib/contracts/types/generated/GToken.d.ts +1946 -1946
- package/lib/contracts/types/generated/GToken.js +2 -2
- package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -557
- package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -2
- package/lib/contracts/types/generated/common.d.ts +22 -22
- package/lib/contracts/types/generated/common.js +2 -2
- package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -83
- package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -2691
- package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +124 -124
- package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +1784 -1784
- package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +144 -144
- package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +3094 -3094
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -100
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -1116
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -100
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -1003
- package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -113
- package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -1428
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -96
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -2241
- package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -95
- package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -1071
- package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -59
- package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -765
- package/lib/contracts/types/generated/factories/GToken__factory.d.ts +121 -121
- package/lib/contracts/types/generated/factories/GToken__factory.js +2944 -2944
- package/lib/contracts/types/generated/factories/index.d.ts +10 -10
- package/lib/contracts/types/generated/factories/index.js +26 -26
- package/lib/contracts/types/generated/index.d.ts +21 -21
- package/lib/contracts/types/generated/index.js +47 -47
- package/lib/contracts/types/index.d.ts +27 -27
- package/lib/contracts/types/index.js +10 -10
- package/lib/contracts/utils/borrowingFees.d.ts +8 -8
- package/lib/contracts/utils/borrowingFees.js +28 -28
- package/lib/contracts/utils/index.d.ts +4 -4
- package/lib/contracts/utils/index.js +20 -20
- package/lib/contracts/utils/openLimitOrders.d.ts +8 -8
- package/lib/contracts/utils/openLimitOrders.js +88 -88
- package/lib/contracts/utils/openTrades.d.ts +9 -9
- package/lib/contracts/utils/openTrades.js +188 -188
- package/lib/contracts/utils/pairs.d.ts +7 -7
- package/lib/contracts/utils/pairs.js +338 -337
- package/lib/index.d.ts +7 -7
- package/lib/index.js +24 -24
- package/lib/markets/commodities.d.ts +1 -1
- package/lib/markets/commodities.js +31 -31
- package/lib/markets/crypto.d.ts +1 -1
- package/lib/markets/crypto.js +6 -6
- package/lib/markets/forex.d.ts +3 -3
- package/lib/markets/forex.js +45 -45
- package/lib/markets/index.d.ts +5 -5
- package/lib/markets/index.js +21 -21
- package/lib/markets/indices.d.ts +1 -1
- package/lib/markets/indices.js +6 -6
- package/lib/markets/stocks.d.ts +3 -3
- package/lib/markets/stocks.js +54 -54
- package/lib/trade/fees/borrowing/converter.d.ts +13 -13
- package/lib/trade/fees/borrowing/converter.js +41 -41
- package/lib/trade/fees/borrowing/index.d.ts +55 -55
- package/lib/trade/fees/borrowing/index.js +171 -171
- package/lib/trade/fees/borrowing/types.d.ts +36 -36
- package/lib/trade/fees/borrowing/types.js +2 -2
- package/lib/trade/fees/index.d.ts +4 -4
- package/lib/trade/fees/index.js +30 -30
- package/lib/trade/fees/tiers/index.d.ts +12 -12
- package/lib/trade/fees/tiers/index.js +51 -51
- package/lib/trade/fees/tiers/types.d.ts +8 -8
- package/lib/trade/fees/tiers/types.js +2 -2
- package/lib/trade/index.d.ts +8 -8
- package/lib/trade/index.js +24 -24
- package/lib/trade/liquidation.d.ts +3 -3
- package/lib/trade/liquidation.js +16 -16
- package/lib/trade/oiWindows.d.ts +3 -3
- package/lib/trade/oiWindows.js +20 -20
- package/lib/trade/openLimitOrder.d.ts +2 -2
- package/lib/trade/openLimitOrder.js +23 -23
- package/lib/trade/pnl.d.ts +7 -7
- package/lib/trade/pnl.js +33 -33
- package/lib/trade/spread.d.ts +2 -2
- package/lib/trade/spread.js +22 -22
- package/lib/trade/types.d.ts +430 -429
- package/lib/trade/types.js +250 -249
- package/lib/utils/index.d.ts +1 -1
- package/lib/utils/index.js +17 -17
- package/lib/utils/packing.d.ts +2 -2
- package/lib/utils/packing.js +39 -39
- package/lib/vault/index.d.ts +8 -8
- package/lib/vault/index.js +10 -10
- package/package.json +105 -105
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +0 -1058
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +0 -2
- package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +0 -911
- package/lib/contracts/types/generated/GNSPairInfosV6_1.js +0 -2
- package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +0 -660
- package/lib/contracts/types/generated/GNSPairsStorageV6.js +0 -2
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +0 -821
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +0 -2
- package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +0 -1838
- package/lib/contracts/types/generated/GTokenV6_3_2.js +0 -2
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +0 -113
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +0 -1742
- package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +0 -98
- package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +0 -1485
- package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +0 -117
- package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +0 -1265
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +0 -82
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +0 -1326
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +0 -110
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +0 -2682
- package/lib/trade/fees.d.ts +0 -15
- package/lib/trade/fees.js +0 -45
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.computeFeeMultiplier = exports.getFeeMultiplier = exports.getFeeTiersCount = exports.getCurrentDay = exports.MAX_FEE_TIERS = exports.FEE_MULTIPLIER_SCALE = exports.TRAILING_PERIOD_DAYS = void 0;
|
|
4
|
-
exports.TRAILING_PERIOD_DAYS = 30;
|
|
5
|
-
exports.FEE_MULTIPLIER_SCALE = 1;
|
|
6
|
-
exports.MAX_FEE_TIERS = 8;
|
|
7
|
-
const getCurrentDay = () => Math.floor(Date.now() / 1000 / 60 / 60 / 24);
|
|
8
|
-
exports.getCurrentDay = getCurrentDay;
|
|
9
|
-
const getFeeTiersCount = (feeTiers) => {
|
|
10
|
-
var _a;
|
|
11
|
-
for (let i = exports.MAX_FEE_TIERS; i > 0; --i) {
|
|
12
|
-
if (((_a = feeTiers[i - 1]) === null || _a === void 0 ? void 0 : _a.feeMultiplier) > 0) {
|
|
13
|
-
return i;
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return 0;
|
|
17
|
-
};
|
|
18
|
-
exports.getFeeTiersCount = getFeeTiersCount;
|
|
19
|
-
const getFeeMultiplier = (trailingPoints, tiers) => {
|
|
20
|
-
let feeMultiplier = exports.FEE_MULTIPLIER_SCALE;
|
|
21
|
-
for (let i = (0, exports.getFeeTiersCount)(tiers); i > 0; --i) {
|
|
22
|
-
const feeTier = tiers[i - 1];
|
|
23
|
-
if (trailingPoints >= feeTier.pointsThreshold) {
|
|
24
|
-
feeMultiplier = feeTier.feeMultiplier;
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return feeMultiplier;
|
|
29
|
-
};
|
|
30
|
-
exports.getFeeMultiplier = getFeeMultiplier;
|
|
31
|
-
const computeFeeMultiplier = (feeTiers, traderFeeTiers) => {
|
|
32
|
-
const { currentDay, tiers } = feeTiers;
|
|
33
|
-
const { traderInfo, expiredPoints, lastDayUpdatedPoints } = traderFeeTiers;
|
|
34
|
-
const { lastDayUpdated, trailingPoints } = traderInfo;
|
|
35
|
-
let curTrailingPoints = trailingPoints;
|
|
36
|
-
if (currentDay > lastDayUpdated) {
|
|
37
|
-
curTrailingPoints = 0;
|
|
38
|
-
const earliestActiveDay = currentDay - exports.TRAILING_PERIOD_DAYS;
|
|
39
|
-
if (lastDayUpdated >= earliestActiveDay) {
|
|
40
|
-
curTrailingPoints = trailingPoints + lastDayUpdatedPoints;
|
|
41
|
-
const expiredTrailingPoints = expiredPoints.reduce((acc, points) => acc + points, 0);
|
|
42
|
-
curTrailingPoints -= expiredTrailingPoints;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
const feeMultiplier = (0, exports.getFeeMultiplier)(curTrailingPoints, tiers);
|
|
46
|
-
return {
|
|
47
|
-
feeMultiplier,
|
|
48
|
-
trailingPoints: curTrailingPoints,
|
|
49
|
-
};
|
|
50
|
-
};
|
|
51
|
-
exports.computeFeeMultiplier = computeFeeMultiplier;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeFeeMultiplier = exports.getFeeMultiplier = exports.getFeeTiersCount = exports.getCurrentDay = exports.MAX_FEE_TIERS = exports.FEE_MULTIPLIER_SCALE = exports.TRAILING_PERIOD_DAYS = void 0;
|
|
4
|
+
exports.TRAILING_PERIOD_DAYS = 30;
|
|
5
|
+
exports.FEE_MULTIPLIER_SCALE = 1;
|
|
6
|
+
exports.MAX_FEE_TIERS = 8;
|
|
7
|
+
const getCurrentDay = () => Math.floor(Date.now() / 1000 / 60 / 60 / 24);
|
|
8
|
+
exports.getCurrentDay = getCurrentDay;
|
|
9
|
+
const getFeeTiersCount = (feeTiers) => {
|
|
10
|
+
var _a;
|
|
11
|
+
for (let i = exports.MAX_FEE_TIERS; i > 0; --i) {
|
|
12
|
+
if (((_a = feeTiers[i - 1]) === null || _a === void 0 ? void 0 : _a.feeMultiplier) > 0) {
|
|
13
|
+
return i;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return 0;
|
|
17
|
+
};
|
|
18
|
+
exports.getFeeTiersCount = getFeeTiersCount;
|
|
19
|
+
const getFeeMultiplier = (trailingPoints, tiers) => {
|
|
20
|
+
let feeMultiplier = exports.FEE_MULTIPLIER_SCALE;
|
|
21
|
+
for (let i = (0, exports.getFeeTiersCount)(tiers); i > 0; --i) {
|
|
22
|
+
const feeTier = tiers[i - 1];
|
|
23
|
+
if (trailingPoints >= feeTier.pointsThreshold) {
|
|
24
|
+
feeMultiplier = feeTier.feeMultiplier;
|
|
25
|
+
break;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return feeMultiplier;
|
|
29
|
+
};
|
|
30
|
+
exports.getFeeMultiplier = getFeeMultiplier;
|
|
31
|
+
const computeFeeMultiplier = (feeTiers, traderFeeTiers) => {
|
|
32
|
+
const { currentDay, tiers } = feeTiers;
|
|
33
|
+
const { traderInfo, expiredPoints, lastDayUpdatedPoints } = traderFeeTiers;
|
|
34
|
+
const { lastDayUpdated, trailingPoints } = traderInfo;
|
|
35
|
+
let curTrailingPoints = trailingPoints;
|
|
36
|
+
if (currentDay > lastDayUpdated) {
|
|
37
|
+
curTrailingPoints = 0;
|
|
38
|
+
const earliestActiveDay = currentDay - exports.TRAILING_PERIOD_DAYS;
|
|
39
|
+
if (lastDayUpdated >= earliestActiveDay) {
|
|
40
|
+
curTrailingPoints = trailingPoints + lastDayUpdatedPoints;
|
|
41
|
+
const expiredTrailingPoints = expiredPoints.reduce((acc, points) => acc + points, 0);
|
|
42
|
+
curTrailingPoints -= expiredTrailingPoints;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const feeMultiplier = (0, exports.getFeeMultiplier)(curTrailingPoints, tiers);
|
|
46
|
+
return {
|
|
47
|
+
feeMultiplier,
|
|
48
|
+
trailingPoints: curTrailingPoints,
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
exports.computeFeeMultiplier = computeFeeMultiplier;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export type FeeTier = {
|
|
2
|
-
feeMultiplier: number;
|
|
3
|
-
pointsThreshold: number;
|
|
4
|
-
};
|
|
5
|
-
export type TraderInfo = {
|
|
6
|
-
lastDayUpdated: number;
|
|
7
|
-
trailingPoints: number;
|
|
8
|
-
};
|
|
1
|
+
export type FeeTier = {
|
|
2
|
+
feeMultiplier: number;
|
|
3
|
+
pointsThreshold: number;
|
|
4
|
+
};
|
|
5
|
+
export type TraderInfo = {
|
|
6
|
+
lastDayUpdated: number;
|
|
7
|
+
trailingPoints: number;
|
|
8
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/lib/trade/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from "./fees";
|
|
2
|
-
export * from "./pnl";
|
|
3
|
-
export * from "./spread";
|
|
4
|
-
export * from "./openLimitOrder";
|
|
5
|
-
export * from "./liquidation";
|
|
6
|
-
export * from "./fees";
|
|
7
|
-
export * from "./types";
|
|
8
|
-
export * from "./oiWindows";
|
|
1
|
+
export * from "./fees";
|
|
2
|
+
export * from "./pnl";
|
|
3
|
+
export * from "./spread";
|
|
4
|
+
export * from "./openLimitOrder";
|
|
5
|
+
export * from "./liquidation";
|
|
6
|
+
export * from "./fees";
|
|
7
|
+
export * from "./types";
|
|
8
|
+
export * from "./oiWindows";
|
package/lib/trade/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./fees"), exports);
|
|
18
|
-
__exportStar(require("./pnl"), exports);
|
|
19
|
-
__exportStar(require("./spread"), exports);
|
|
20
|
-
__exportStar(require("./openLimitOrder"), exports);
|
|
21
|
-
__exportStar(require("./liquidation"), exports);
|
|
22
|
-
__exportStar(require("./fees"), exports);
|
|
23
|
-
__exportStar(require("./types"), exports);
|
|
24
|
-
__exportStar(require("./oiWindows"), exports);
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./fees"), exports);
|
|
18
|
+
__exportStar(require("./pnl"), exports);
|
|
19
|
+
__exportStar(require("./spread"), exports);
|
|
20
|
+
__exportStar(require("./openLimitOrder"), exports);
|
|
21
|
+
__exportStar(require("./liquidation"), exports);
|
|
22
|
+
__exportStar(require("./fees"), exports);
|
|
23
|
+
__exportStar(require("./types"), exports);
|
|
24
|
+
__exportStar(require("./oiWindows"), exports);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { GetBorrowingFeeContext } from "./fees";
|
|
2
|
-
import { Trade, TradeInfo, TradeInitialAccFees } from "./types";
|
|
3
|
-
export declare const getLiquidationPrice: (trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, context: GetBorrowingFeeContext) => number;
|
|
1
|
+
import { GetBorrowingFeeContext } from "./fees";
|
|
2
|
+
import { Trade, TradeInfo, TradeInitialAccFees } from "./types";
|
|
3
|
+
export declare const getLiquidationPrice: (trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, context: GetBorrowingFeeContext) => number;
|
package/lib/trade/liquidation.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getLiquidationPrice = void 0;
|
|
4
|
-
const fees_1 = require("./fees");
|
|
5
|
-
const getLiquidationPrice = (trade, tradeInfo, initialAccFees, context) => {
|
|
6
|
-
const posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
|
|
7
|
-
const liqPriceDistance = (trade.openPrice *
|
|
8
|
-
(posDai * 0.9 -
|
|
9
|
-
(0, fees_1.getBorrowingFee)(posDai * trade.leverage, trade.pairIndex, trade.buy, initialAccFees.borrowing, context))) /
|
|
10
|
-
posDai /
|
|
11
|
-
trade.leverage;
|
|
12
|
-
return trade.buy
|
|
13
|
-
? Math.max(trade.openPrice - liqPriceDistance, 0)
|
|
14
|
-
: Math.max(trade.openPrice + liqPriceDistance, 0);
|
|
15
|
-
};
|
|
16
|
-
exports.getLiquidationPrice = getLiquidationPrice;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getLiquidationPrice = void 0;
|
|
4
|
+
const fees_1 = require("./fees");
|
|
5
|
+
const getLiquidationPrice = (trade, tradeInfo, initialAccFees, context) => {
|
|
6
|
+
const posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
|
|
7
|
+
const liqPriceDistance = (trade.openPrice *
|
|
8
|
+
(posDai * 0.9 -
|
|
9
|
+
(0, fees_1.getBorrowingFee)(posDai * trade.leverage, trade.pairIndex, trade.buy, initialAccFees.borrowing, context))) /
|
|
10
|
+
posDai /
|
|
11
|
+
trade.leverage;
|
|
12
|
+
return trade.buy
|
|
13
|
+
? Math.max(trade.openPrice - liqPriceDistance, 0)
|
|
14
|
+
: Math.max(trade.openPrice + liqPriceDistance, 0);
|
|
15
|
+
};
|
|
16
|
+
exports.getLiquidationPrice = getLiquidationPrice;
|
package/lib/trade/oiWindows.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { OiWindows, OiWindowsSettings } from "../trade/types";
|
|
2
|
-
export declare const getCurrentOiWindowId: (oiWindowSettings: OiWindowsSettings) => number;
|
|
3
|
-
export declare const getActiveOi: (currentOiWindowId: number, windowsCount: number, oiWindows: OiWindows | undefined, buy: boolean) => number;
|
|
1
|
+
import { OiWindows, OiWindowsSettings } from "../trade/types";
|
|
2
|
+
export declare const getCurrentOiWindowId: (oiWindowSettings: OiWindowsSettings) => number;
|
|
3
|
+
export declare const getActiveOi: (currentOiWindowId: number, windowsCount: number, oiWindows: OiWindows | undefined, buy: boolean) => number;
|
package/lib/trade/oiWindows.js
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getActiveOi = exports.getCurrentOiWindowId = void 0;
|
|
4
|
-
const getCurrentOiWindowId = (oiWindowSettings) => {
|
|
5
|
-
return Math.floor((Math.floor(Date.now() / 1000) - oiWindowSettings.startTs) /
|
|
6
|
-
oiWindowSettings.windowsDuration);
|
|
7
|
-
};
|
|
8
|
-
exports.getCurrentOiWindowId = getCurrentOiWindowId;
|
|
9
|
-
const getActiveOi = (currentOiWindowId, windowsCount, oiWindows, buy) => {
|
|
10
|
-
var _a, _b;
|
|
11
|
-
if (oiWindows === undefined || windowsCount === 0)
|
|
12
|
-
return 0;
|
|
13
|
-
let activeOi = 0;
|
|
14
|
-
for (let id = currentOiWindowId - (windowsCount - 1); id <= currentOiWindowId; id++) {
|
|
15
|
-
activeOi +=
|
|
16
|
-
(buy ? (_a = oiWindows === null || oiWindows === void 0 ? void 0 : oiWindows[id]) === null || _a === void 0 ? void 0 : _a.oiLongUsd : (_b = oiWindows === null || oiWindows === void 0 ? void 0 : oiWindows[id]) === null || _b === void 0 ? void 0 : _b.oiShortUsd) || 0;
|
|
17
|
-
}
|
|
18
|
-
return activeOi;
|
|
19
|
-
};
|
|
20
|
-
exports.getActiveOi = getActiveOi;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getActiveOi = exports.getCurrentOiWindowId = void 0;
|
|
4
|
+
const getCurrentOiWindowId = (oiWindowSettings) => {
|
|
5
|
+
return Math.floor((Math.floor(Date.now() / 1000) - oiWindowSettings.startTs) /
|
|
6
|
+
oiWindowSettings.windowsDuration);
|
|
7
|
+
};
|
|
8
|
+
exports.getCurrentOiWindowId = getCurrentOiWindowId;
|
|
9
|
+
const getActiveOi = (currentOiWindowId, windowsCount, oiWindows, buy) => {
|
|
10
|
+
var _a, _b;
|
|
11
|
+
if (oiWindows === undefined || windowsCount === 0)
|
|
12
|
+
return 0;
|
|
13
|
+
let activeOi = 0;
|
|
14
|
+
for (let id = currentOiWindowId - (windowsCount - 1); id <= currentOiWindowId; id++) {
|
|
15
|
+
activeOi +=
|
|
16
|
+
(buy ? (_a = oiWindows === null || oiWindows === void 0 ? void 0 : oiWindows[id]) === null || _a === void 0 ? void 0 : _a.oiLongUsd : (_b = oiWindows === null || oiWindows === void 0 ? void 0 : oiWindows[id]) === null || _b === void 0 ? void 0 : _b.oiShortUsd) || 0;
|
|
17
|
+
}
|
|
18
|
+
return activeOi;
|
|
19
|
+
};
|
|
20
|
+
exports.getActiveOi = getActiveOi;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { LimitOrder, Pair, PairDepth, OiWindowsSettings, OiWindows } from "./types";
|
|
2
|
-
export declare const getFulfillmentPrice: (order: LimitOrder, pair: Pair, pairDepth: PairDepth, oiWindowsSettings?: OiWindowsSettings, oiWindows?: OiWindows) => number;
|
|
1
|
+
import { LimitOrder, Pair, PairDepth, OiWindowsSettings, OiWindows } from "./types";
|
|
2
|
+
export declare const getFulfillmentPrice: (order: LimitOrder, pair: Pair, pairDepth: PairDepth, oiWindowsSettings?: OiWindowsSettings, oiWindows?: OiWindows) => number;
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getFulfillmentPrice = void 0;
|
|
4
|
-
const spread_1 = require("./spread");
|
|
5
|
-
const types_1 = require("./types");
|
|
6
|
-
const getFulfillmentPrice = (order, pair, pairDepth, oiWindowsSettings, oiWindows) => {
|
|
7
|
-
if (!order || !pair) {
|
|
8
|
-
return 0;
|
|
9
|
-
}
|
|
10
|
-
// Get spread percentage
|
|
11
|
-
const spreadWithPriceImpactP = (0, spread_1.getSpreadWithPriceImpactP)(pair.spreadP, order.buy, order.positionSize, order.leverage, pairDepth, oiWindowsSettings, oiWindows);
|
|
12
|
-
if (spreadWithPriceImpactP === 0) {
|
|
13
|
-
return 0;
|
|
14
|
-
}
|
|
15
|
-
const askingPrice = (order.buy && order.type === types_1.OpenLimitOrderType.REVERSAL) ||
|
|
16
|
-
(!order.buy && order.type === types_1.OpenLimitOrderType.MOMENTUM)
|
|
17
|
-
? order.maxPrice
|
|
18
|
-
: order.minPrice;
|
|
19
|
-
return order.buy
|
|
20
|
-
? askingPrice * (1 + spreadWithPriceImpactP)
|
|
21
|
-
: askingPrice * (1 - spreadWithPriceImpactP);
|
|
22
|
-
};
|
|
23
|
-
exports.getFulfillmentPrice = getFulfillmentPrice;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFulfillmentPrice = void 0;
|
|
4
|
+
const spread_1 = require("./spread");
|
|
5
|
+
const types_1 = require("./types");
|
|
6
|
+
const getFulfillmentPrice = (order, pair, pairDepth, oiWindowsSettings, oiWindows) => {
|
|
7
|
+
if (!order || !pair) {
|
|
8
|
+
return 0;
|
|
9
|
+
}
|
|
10
|
+
// Get spread percentage
|
|
11
|
+
const spreadWithPriceImpactP = (0, spread_1.getSpreadWithPriceImpactP)(pair.spreadP, order.buy, order.positionSize, order.leverage, pairDepth, oiWindowsSettings, oiWindows);
|
|
12
|
+
if (spreadWithPriceImpactP === 0) {
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
const askingPrice = (order.buy && order.type === types_1.OpenLimitOrderType.REVERSAL) ||
|
|
16
|
+
(!order.buy && order.type === types_1.OpenLimitOrderType.MOMENTUM)
|
|
17
|
+
? order.maxPrice
|
|
18
|
+
: order.minPrice;
|
|
19
|
+
return order.buy
|
|
20
|
+
? askingPrice * (1 + spreadWithPriceImpactP)
|
|
21
|
+
: askingPrice * (1 - spreadWithPriceImpactP);
|
|
22
|
+
};
|
|
23
|
+
exports.getFulfillmentPrice = getFulfillmentPrice;
|
package/lib/trade/pnl.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { GetBorrowingFeeContext } from "./fees";
|
|
2
|
-
import { Fee, Trade, TradeInfo, TradeInitialAccFees } from "./types";
|
|
3
|
-
export type GetPnlContext = GetBorrowingFeeContext & {
|
|
4
|
-
fee: Fee | undefined;
|
|
5
|
-
maxGainP: number | undefined;
|
|
6
|
-
};
|
|
7
|
-
export declare const getPnl: (price: number | undefined, trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, useFees: boolean, context: GetPnlContext) => number[] | undefined;
|
|
1
|
+
import { GetBorrowingFeeContext } from "./fees";
|
|
2
|
+
import { Fee, Trade, TradeInfo, TradeInitialAccFees } from "./types";
|
|
3
|
+
export type GetPnlContext = GetBorrowingFeeContext & {
|
|
4
|
+
fee: Fee | undefined;
|
|
5
|
+
maxGainP: number | undefined;
|
|
6
|
+
};
|
|
7
|
+
export declare const getPnl: (price: number | undefined, trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, useFees: boolean, context: GetPnlContext) => number[] | undefined;
|
package/lib/trade/pnl.js
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPnl = void 0;
|
|
4
|
-
const fees_1 = require("./fees");
|
|
5
|
-
const getPnl = (price, trade, tradeInfo, initialAccFees, useFees, context) => {
|
|
6
|
-
if (!price) {
|
|
7
|
-
return;
|
|
8
|
-
}
|
|
9
|
-
const posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
|
|
10
|
-
const { openPrice, leverage } = trade;
|
|
11
|
-
const { maxGainP, fee } = context;
|
|
12
|
-
const maxGain = maxGainP === undefined ? Infinity : (maxGainP / 100) * posDai;
|
|
13
|
-
let pnlDai = trade.buy
|
|
14
|
-
? ((price - openPrice) / openPrice) * leverage * posDai
|
|
15
|
-
: ((openPrice - price) / openPrice) * leverage * posDai;
|
|
16
|
-
pnlDai = pnlDai > maxGain ? maxGain : pnlDai;
|
|
17
|
-
if (useFees) {
|
|
18
|
-
pnlDai -= (0, fees_1.getBorrowingFee)(posDai * trade.leverage, trade.pairIndex, trade.buy, initialAccFees.borrowing, context);
|
|
19
|
-
}
|
|
20
|
-
let pnlPercentage = (pnlDai / posDai) * 100;
|
|
21
|
-
// Can be liquidated
|
|
22
|
-
if (pnlPercentage <= -90) {
|
|
23
|
-
pnlPercentage = -100;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
pnlDai -= (0, fees_1.getClosingFee)(posDai, trade.leverage, trade.pairIndex, fee);
|
|
27
|
-
pnlPercentage = (pnlDai / posDai) * 100;
|
|
28
|
-
}
|
|
29
|
-
pnlPercentage = pnlPercentage < -100 ? -100 : pnlPercentage;
|
|
30
|
-
pnlDai = (posDai * pnlPercentage) / 100;
|
|
31
|
-
return [pnlDai, pnlPercentage];
|
|
32
|
-
};
|
|
33
|
-
exports.getPnl = getPnl;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getPnl = void 0;
|
|
4
|
+
const fees_1 = require("./fees");
|
|
5
|
+
const getPnl = (price, trade, tradeInfo, initialAccFees, useFees, context) => {
|
|
6
|
+
if (!price) {
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
const posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
|
|
10
|
+
const { openPrice, leverage } = trade;
|
|
11
|
+
const { maxGainP, fee } = context;
|
|
12
|
+
const maxGain = maxGainP === undefined ? Infinity : (maxGainP / 100) * posDai;
|
|
13
|
+
let pnlDai = trade.buy
|
|
14
|
+
? ((price - openPrice) / openPrice) * leverage * posDai
|
|
15
|
+
: ((openPrice - price) / openPrice) * leverage * posDai;
|
|
16
|
+
pnlDai = pnlDai > maxGain ? maxGain : pnlDai;
|
|
17
|
+
if (useFees) {
|
|
18
|
+
pnlDai -= (0, fees_1.getBorrowingFee)(posDai * trade.leverage, trade.pairIndex, trade.buy, initialAccFees.borrowing, context);
|
|
19
|
+
}
|
|
20
|
+
let pnlPercentage = (pnlDai / posDai) * 100;
|
|
21
|
+
// Can be liquidated
|
|
22
|
+
if (pnlPercentage <= -90) {
|
|
23
|
+
pnlPercentage = -100;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
pnlDai -= (0, fees_1.getClosingFee)(posDai, trade.leverage, trade.pairIndex, fee);
|
|
27
|
+
pnlPercentage = (pnlDai / posDai) * 100;
|
|
28
|
+
}
|
|
29
|
+
pnlPercentage = pnlPercentage < -100 ? -100 : pnlPercentage;
|
|
30
|
+
pnlDai = (posDai * pnlPercentage) / 100;
|
|
31
|
+
return [pnlDai, pnlPercentage];
|
|
32
|
+
};
|
|
33
|
+
exports.getPnl = getPnl;
|
package/lib/trade/spread.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { OiWindows, OiWindowsSettings, PairDepth } from "./types";
|
|
2
|
-
export declare const getSpreadWithPriceImpactP: (pairSpreadP: number, buy: boolean, collateral: number, leverage: number, pairDepth: PairDepth | undefined, oiWindowsSettings?: OiWindowsSettings | undefined, oiWindows?: OiWindows | undefined) => number;
|
|
1
|
+
import { OiWindows, OiWindowsSettings, PairDepth } from "./types";
|
|
2
|
+
export declare const getSpreadWithPriceImpactP: (pairSpreadP: number, buy: boolean, collateral: number, leverage: number, pairDepth: PairDepth | undefined, oiWindowsSettings?: OiWindowsSettings | undefined, oiWindows?: OiWindows | undefined) => number;
|
package/lib/trade/spread.js
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getSpreadWithPriceImpactP = void 0;
|
|
4
|
-
const oiWindows_1 = require("./oiWindows");
|
|
5
|
-
const getSpreadWithPriceImpactP = (pairSpreadP, buy, collateral, leverage, pairDepth, oiWindowsSettings, oiWindows) => {
|
|
6
|
-
if (pairSpreadP === undefined) {
|
|
7
|
-
return 0;
|
|
8
|
-
}
|
|
9
|
-
const onePercentDepth = buy
|
|
10
|
-
? pairDepth === null || pairDepth === void 0 ? void 0 : pairDepth.onePercentDepthAboveUsd
|
|
11
|
-
: pairDepth === null || pairDepth === void 0 ? void 0 : pairDepth.onePercentDepthBelowUsd;
|
|
12
|
-
let activeOi = undefined;
|
|
13
|
-
if (oiWindowsSettings !== undefined && (oiWindowsSettings === null || oiWindowsSettings === void 0 ? void 0 : oiWindowsSettings.windowsCount) > 0) {
|
|
14
|
-
activeOi = (0, oiWindows_1.getActiveOi)((0, oiWindows_1.getCurrentOiWindowId)(oiWindowsSettings), oiWindowsSettings.windowsCount, oiWindows, buy);
|
|
15
|
-
}
|
|
16
|
-
if (!onePercentDepth || activeOi === undefined || collateral === undefined) {
|
|
17
|
-
return pairSpreadP;
|
|
18
|
-
}
|
|
19
|
-
return (pairSpreadP +
|
|
20
|
-
(activeOi + (collateral * leverage) / 2) / onePercentDepth / 100);
|
|
21
|
-
};
|
|
22
|
-
exports.getSpreadWithPriceImpactP = getSpreadWithPriceImpactP;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSpreadWithPriceImpactP = void 0;
|
|
4
|
+
const oiWindows_1 = require("./oiWindows");
|
|
5
|
+
const getSpreadWithPriceImpactP = (pairSpreadP, buy, collateral, leverage, pairDepth, oiWindowsSettings, oiWindows) => {
|
|
6
|
+
if (pairSpreadP === undefined) {
|
|
7
|
+
return 0;
|
|
8
|
+
}
|
|
9
|
+
const onePercentDepth = buy
|
|
10
|
+
? pairDepth === null || pairDepth === void 0 ? void 0 : pairDepth.onePercentDepthAboveUsd
|
|
11
|
+
: pairDepth === null || pairDepth === void 0 ? void 0 : pairDepth.onePercentDepthBelowUsd;
|
|
12
|
+
let activeOi = undefined;
|
|
13
|
+
if (oiWindowsSettings !== undefined && (oiWindowsSettings === null || oiWindowsSettings === void 0 ? void 0 : oiWindowsSettings.windowsCount) > 0) {
|
|
14
|
+
activeOi = (0, oiWindows_1.getActiveOi)((0, oiWindows_1.getCurrentOiWindowId)(oiWindowsSettings), oiWindowsSettings.windowsCount, oiWindows, buy);
|
|
15
|
+
}
|
|
16
|
+
if (!onePercentDepth || activeOi === undefined || collateral === undefined) {
|
|
17
|
+
return pairSpreadP;
|
|
18
|
+
}
|
|
19
|
+
return (pairSpreadP +
|
|
20
|
+
(activeOi + (collateral * leverage) / 2) / onePercentDepth / 100);
|
|
21
|
+
};
|
|
22
|
+
exports.getSpreadWithPriceImpactP = getSpreadWithPriceImpactP;
|