@gainsnetwork/sdk 0.1.27-rc3 → 0.2.0-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/lib/constants.d.ts +1 -5
- package/lib/constants.js +3 -6
- package/lib/contracts/addresses.json +8 -44
- package/lib/contracts/index.js +1 -4
- package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +4608 -1133
- package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +190 -43
- package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +9988 -1722
- package/lib/contracts/types/generated/factories/index.d.ts +0 -7
- package/lib/contracts/types/generated/factories/index.js +1 -15
- package/lib/contracts/types/generated/index.d.ts +0 -14
- package/lib/contracts/types/generated/index.js +1 -15
- package/lib/contracts/types/index.d.ts +2 -10
- package/lib/contracts/utils/borrowingFees.d.ts +4 -4
- package/lib/contracts/utils/borrowingFees.js +9 -5
- package/lib/contracts/utils/index.d.ts +0 -1
- package/lib/contracts/utils/index.js +0 -1
- package/lib/contracts/utils/openTrades.d.ts +1 -1
- package/lib/contracts/utils/openTrades.js +330 -138
- package/lib/contracts/utils/pairs.d.ts +1 -1
- package/lib/contracts/utils/pairs.js +27 -20
- package/lib/trade/fees/borrowing/converter.d.ts +12 -10
- package/lib/trade/fees/borrowing/converter.js +18 -24
- package/lib/trade/fees/borrowing/index.d.ts +3 -4
- package/lib/trade/fees/borrowing/index.js +12 -18
- package/lib/trade/fees/borrowing/types.d.ts +14 -20
- package/lib/trade/fees/index.js +2 -2
- package/lib/trade/index.d.ts +0 -1
- package/lib/trade/index.js +0 -1
- package/lib/trade/liquidation.d.ts +3 -3
- package/lib/trade/liquidation.js +4 -5
- package/lib/trade/pnl.js +12 -12
- package/lib/trade/types.d.ts +33 -66
- package/lib/trade/types.js +9 -13
- package/package.json +1 -1
- package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +0 -1911
- package/lib/contracts/types/generated/GFarmTradingStorageV5.js +0 -2
- package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +0 -1067
- package/lib/contracts/types/generated/GNSBorrowingFees.js +0 -2
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.d.ts +0 -979
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.js +0 -2
- 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/GNSNftRewardsV6.d.ts +0 -533
- package/lib/contracts/types/generated/GNSNftRewardsV6.js +0 -2
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +0 -613
- package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.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/GNSTrading.d.ts +0 -758
- package/lib/contracts/types/generated/GNSTrading.js +0 -2
- package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +0 -875
- package/lib/contracts/types/generated/GNSTradingCallbacks.js +0 -2
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +0 -806
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.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/GNSTradingStorage.d.ts +0 -1387
- package/lib/contracts/types/generated/GNSTradingStorage.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/GFarmTradingStorageV5__factory.d.ts +0 -83
- package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +0 -2691
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.d.ts +0 -88
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.js +0 -1654
- 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/GNSBorrowingFees__factory.d.ts +0 -124
- package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +0 -1784
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +0 -100
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +0 -1116
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +0 -100
- package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +0 -1003
- 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_3_2__factory.d.ts +0 -82
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +0 -1273
- 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/GNSTradingCallbacks__factory.d.ts +0 -113
- package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +0 -1428
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +0 -96
- package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +0 -2241
- package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +0 -95
- package/lib/contracts/types/generated/factories/GNSTrading__factory.js +0 -1071
- 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/contracts/utils/openLimitOrders.d.ts +0 -8
- package/lib/contracts/utils/openLimitOrders.js +0 -88
- package/lib/trade/openLimitOrder.d.ts +0 -2
- package/lib/trade/openLimitOrder.js +0 -23
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.convertGroupBorrowingFees = exports.convertGroupBorrowingFee = exports.convertPairBorrowingFees = exports.convertPairBorrowingFee = exports.convertPairGroupBorrowingFee = void 0;
|
|
3
|
+
exports.convertGroupBorrowingFees = exports.convertGroupBorrowingData = exports.convertGroupBorrowingFee = exports.convertPairBorrowingFees = exports.convertPairBorrowingFee = exports.convertPairGroupBorrowingFee = void 0;
|
|
4
4
|
const convertPairGroupBorrowingFee = (pairGroup) => ({
|
|
5
5
|
groupIndex: pairGroup.groupIndex,
|
|
6
6
|
initialAccFeeLong: parseFloat(pairGroup.initialAccFeeLong.toString()) / 1e10,
|
|
@@ -12,30 +12,24 @@ const convertPairGroupBorrowingFee = (pairGroup) => ({
|
|
|
12
12
|
block: pairGroup.block,
|
|
13
13
|
});
|
|
14
14
|
exports.convertPairGroupBorrowingFee = convertPairGroupBorrowingFee;
|
|
15
|
-
const convertPairBorrowingFee = (pair, pairOi) => ({
|
|
16
|
-
feePerBlock: pair.feePerBlock / 1e10,
|
|
17
|
-
accFeeLong: parseFloat(pair.accFeeLong.toString()) / 1e10,
|
|
18
|
-
accFeeShort: parseFloat(pair.accFeeShort.toString()) / 1e10,
|
|
19
|
-
accLastUpdatedBlock: pair.accLastUpdatedBlock,
|
|
20
|
-
lastAccBlockWeightedMarketCap: parseFloat(pair.lastAccBlockWeightedMarketCap.toString()) / 1e40,
|
|
21
|
-
groups: pair.groups.map(value => (0, exports.convertPairGroupBorrowingFee)(value)),
|
|
22
|
-
feeExponent: pair.feeExponent,
|
|
23
|
-
maxOi: parseFloat(pairOi.max.toString()) / 1e10,
|
|
24
|
-
});
|
|
15
|
+
const convertPairBorrowingFee = (pair, pairOi, pairGroup) => (Object.assign(Object.assign({}, (0, exports.convertGroupBorrowingData)(pair, pairOi)), { groups: pairGroup.map(value => (0, exports.convertPairGroupBorrowingFee)(value)) }));
|
|
25
16
|
exports.convertPairBorrowingFee = convertPairBorrowingFee;
|
|
26
|
-
const convertPairBorrowingFees = ([pairs, pairOi]) => pairs.map((value, ix) => (0, exports.convertPairBorrowingFee)(value, pairOi[ix]));
|
|
17
|
+
const convertPairBorrowingFees = ([pairs, pairOi, pairGroups]) => pairs.map((value, ix) => (0, exports.convertPairBorrowingFee)(value, pairOi[ix], pairGroups[ix]));
|
|
27
18
|
exports.convertPairBorrowingFees = convertPairBorrowingFees;
|
|
28
|
-
const convertGroupBorrowingFee = (group,
|
|
29
|
-
oiLong: parseFloat(group.oiLong.toString()) / 1e10,
|
|
30
|
-
oiShort: parseFloat(group.oiShort.toString()) / 1e10,
|
|
31
|
-
feePerBlock: group.feePerBlock / 1e10,
|
|
32
|
-
accFeeLong: parseFloat(group.accFeeLong.toString()) / 1e10,
|
|
33
|
-
accFeeShort: parseFloat(group.accFeeShort.toString()) / 1e10,
|
|
34
|
-
accLastUpdatedBlock: group.accLastUpdatedBlock,
|
|
35
|
-
lastAccBlockWeightedMarketCap: parseFloat(group.lastAccBlockWeightedMarketCap.toString()) / 1e40,
|
|
36
|
-
maxOi: parseFloat(group.maxOi.toString()) / 1e10,
|
|
37
|
-
feeExponent: groupFeeExponent,
|
|
38
|
-
});
|
|
19
|
+
const convertGroupBorrowingFee = (group, groupOi) => (0, exports.convertGroupBorrowingData)(group, groupOi);
|
|
39
20
|
exports.convertGroupBorrowingFee = convertGroupBorrowingFee;
|
|
40
|
-
const
|
|
21
|
+
const convertGroupBorrowingData = (obj, oi) => ({
|
|
22
|
+
oi: {
|
|
23
|
+
long: parseFloat(oi.long.toString()) / 1e10,
|
|
24
|
+
short: parseFloat(oi.short.toString()) / 1e10,
|
|
25
|
+
max: parseFloat(oi.max.toString()) / 1e10,
|
|
26
|
+
},
|
|
27
|
+
feePerBlock: obj.feePerBlock / 1e10,
|
|
28
|
+
accFeeLong: parseFloat(obj.accFeeLong.toString()) / 1e10,
|
|
29
|
+
accFeeShort: parseFloat(obj.accFeeShort.toString()) / 1e10,
|
|
30
|
+
accLastUpdatedBlock: obj.accLastUpdatedBlock,
|
|
31
|
+
feeExponent: obj.feeExponent,
|
|
32
|
+
});
|
|
33
|
+
exports.convertGroupBorrowingData = convertGroupBorrowingData;
|
|
34
|
+
const convertGroupBorrowingFees = ([groups, groupOis]) => groups.map((value, ix) => (0, exports.convertGroupBorrowingFee)(value, groupOis[ix]));
|
|
41
35
|
exports.convertGroupBorrowingFees = convertGroupBorrowingFees;
|
|
@@ -7,7 +7,7 @@ export type GetBorrowingFeeContext = {
|
|
|
7
7
|
openInterest: OpenInterest;
|
|
8
8
|
};
|
|
9
9
|
export declare const getBorrowingFee: (posDai: number, pairIndex: PairIndex, long: boolean, initialAccFees: BorrowingFee.InitialAccFees, context: GetBorrowingFeeContext) => number;
|
|
10
|
-
export declare const withinMaxGroupOi: (pairIndex: PairIndex, long: boolean,
|
|
10
|
+
export declare const withinMaxGroupOi: (pairIndex: PairIndex, long: boolean, positionSizeCollateral: number, context: {
|
|
11
11
|
groups: BorrowingFee.Group[];
|
|
12
12
|
pairs: BorrowingFee.Pair[];
|
|
13
13
|
}) => boolean;
|
|
@@ -44,9 +44,8 @@ export declare const borrowingFeeUtils: {
|
|
|
44
44
|
accFeeShort: number;
|
|
45
45
|
delta: number;
|
|
46
46
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
getActiveFeePerBlock: (pair: BorrowingFee.Pair, group: BorrowingFee.Group | undefined, pairOpenInterest: OpenInterest) => number;
|
|
47
|
+
getActiveFeePerBlock: (pair: BorrowingFee.Pair, group: BorrowingFee.Group | undefined) => number;
|
|
48
|
+
getBorrowingDataActiveFeePerBlock: (val: BorrowingFee.Pair | BorrowingFee.Group) => number;
|
|
50
49
|
getPairGroupIndex: (pairIndex: PairIndex, context: {
|
|
51
50
|
pairs: BorrowingFee.Pair[];
|
|
52
51
|
}) => number;
|
|
@@ -56,13 +56,13 @@ const getBorrowingFee = (posDai, pairIndex, long, initialAccFees, context) => {
|
|
|
56
56
|
return (posDai * fee) / 100;
|
|
57
57
|
};
|
|
58
58
|
exports.getBorrowingFee = getBorrowingFee;
|
|
59
|
-
const withinMaxGroupOi = (pairIndex, long,
|
|
59
|
+
const withinMaxGroupOi = (pairIndex, long, positionSizeCollateral, context) => {
|
|
60
60
|
const { groups, pairs } = context;
|
|
61
61
|
if (!groups || !pairs) {
|
|
62
62
|
return false;
|
|
63
63
|
}
|
|
64
|
-
const g = groups[getPairGroupIndex(pairIndex, { pairs })];
|
|
65
|
-
return (g.
|
|
64
|
+
const g = groups[getPairGroupIndex(pairIndex, { pairs })].oi;
|
|
65
|
+
return (g.max == 0 || (long ? g.long : g.short) + positionSizeCollateral <= g.max);
|
|
66
66
|
};
|
|
67
67
|
exports.withinMaxGroupOi = withinMaxGroupOi;
|
|
68
68
|
const getPairGroupIndex = (pairIndex, context) => {
|
|
@@ -76,7 +76,7 @@ const getPairGroupIndex = (pairIndex, context) => {
|
|
|
76
76
|
const getPairPendingAccFees = (pairIndex, currentBlock, context) => {
|
|
77
77
|
const { pairs, openInterest: { long, short }, } = context;
|
|
78
78
|
const pair = pairs[pairIndex];
|
|
79
|
-
return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.
|
|
79
|
+
return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.oi.max, pair.feeExponent);
|
|
80
80
|
};
|
|
81
81
|
const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
|
|
82
82
|
const { accFeeLong, accFeeShort } = getPairPendingAccFees(pairIndex, currentBlock, context);
|
|
@@ -85,7 +85,7 @@ const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
|
|
|
85
85
|
const getGroupPendingAccFees = (groupIndex, currentBlock, context) => {
|
|
86
86
|
const { groups } = context;
|
|
87
87
|
const group = groups[groupIndex];
|
|
88
|
-
return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.
|
|
88
|
+
return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.oi.long, group.oi.short, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, group.oi.max, group.feeExponent);
|
|
89
89
|
};
|
|
90
90
|
const getGroupPendingAccFee = (groupIndex, currentBlock, long, context) => {
|
|
91
91
|
const { accFeeLong, accFeeShort } = getGroupPendingAccFees(groupIndex, currentBlock, context);
|
|
@@ -137,22 +137,17 @@ const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock
|
|
|
137
137
|
const newAccFeeShort = moreShorts ? accFeeShort + delta : accFeeShort;
|
|
138
138
|
return { accFeeLong: newAccFeeLong, accFeeShort: newAccFeeShort, delta };
|
|
139
139
|
};
|
|
140
|
-
const
|
|
141
|
-
const { long, short } =
|
|
140
|
+
const getBorrowingDataActiveFeePerBlock = (val) => {
|
|
141
|
+
const { long, short, max } = val.oi;
|
|
142
142
|
const netOi = Math.abs(long - short);
|
|
143
|
-
return
|
|
143
|
+
return val.feePerBlock * Math.pow((netOi / max), val.feeExponent);
|
|
144
144
|
};
|
|
145
|
-
const
|
|
146
|
-
const
|
|
147
|
-
const netOi = Math.abs(oiLong - oiShort);
|
|
148
|
-
return group.feePerBlock * Math.pow((netOi / group.maxOi), group.feeExponent);
|
|
149
|
-
};
|
|
150
|
-
const getActiveFeePerBlock = (pair, group, pairOpenInterest) => {
|
|
151
|
-
const pairFeePerBlock = getActivePairFeePerBlock(pair, pairOpenInterest);
|
|
145
|
+
const getActiveFeePerBlock = (pair, group) => {
|
|
146
|
+
const pairFeePerBlock = getBorrowingDataActiveFeePerBlock(pair);
|
|
152
147
|
if (!group) {
|
|
153
148
|
return pairFeePerBlock;
|
|
154
149
|
}
|
|
155
|
-
const groupFeePerBlock =
|
|
150
|
+
const groupFeePerBlock = getBorrowingDataActiveFeePerBlock(group);
|
|
156
151
|
return Math.max(pairFeePerBlock, groupFeePerBlock);
|
|
157
152
|
};
|
|
158
153
|
exports.borrowingFeeUtils = {
|
|
@@ -162,9 +157,8 @@ exports.borrowingFeeUtils = {
|
|
|
162
157
|
getGroupPendingAccFees,
|
|
163
158
|
getGroupPendingAccFee,
|
|
164
159
|
getPendingAccFees,
|
|
165
|
-
getActivePairFeePerBlock,
|
|
166
|
-
getActiveGroupFeePerBlock,
|
|
167
160
|
getActiveFeePerBlock,
|
|
161
|
+
getBorrowingDataActiveFeePerBlock,
|
|
168
162
|
getPairGroupIndex,
|
|
169
163
|
};
|
|
170
164
|
exports.BorrowingFee = __importStar(require("./types"));
|
|
@@ -1,34 +1,28 @@
|
|
|
1
|
+
import { OpenInterest } from "../../types";
|
|
2
|
+
export type BorrowingData = {
|
|
3
|
+
feePerBlock: number;
|
|
4
|
+
accFeeLong: number;
|
|
5
|
+
accFeeShort: number;
|
|
6
|
+
accLastUpdatedBlock: number;
|
|
7
|
+
feeExponent: number;
|
|
8
|
+
};
|
|
1
9
|
export type PairGroup = {
|
|
2
10
|
groupIndex: number;
|
|
11
|
+
block: number;
|
|
3
12
|
initialAccFeeLong: number;
|
|
4
13
|
initialAccFeeShort: number;
|
|
5
14
|
prevGroupAccFeeLong: number;
|
|
6
15
|
prevGroupAccFeeShort: number;
|
|
7
16
|
pairAccFeeLong: number;
|
|
8
17
|
pairAccFeeShort: number;
|
|
9
|
-
block: number;
|
|
10
18
|
};
|
|
11
|
-
export type
|
|
12
|
-
|
|
13
|
-
feePerBlock: number;
|
|
14
|
-
accFeeLong: number;
|
|
15
|
-
accFeeShort: number;
|
|
16
|
-
accLastUpdatedBlock: number;
|
|
17
|
-
maxOi: number;
|
|
18
|
-
lastAccBlockWeightedMarketCap: number;
|
|
19
|
-
feeExponent: number;
|
|
19
|
+
export type BorrowingOi = {
|
|
20
|
+
oi: OpenInterest;
|
|
20
21
|
};
|
|
21
|
-
export type
|
|
22
|
-
|
|
23
|
-
oiShort: number;
|
|
24
|
-
feePerBlock: number;
|
|
25
|
-
accFeeLong: number;
|
|
26
|
-
accFeeShort: number;
|
|
27
|
-
accLastUpdatedBlock: number;
|
|
28
|
-
maxOi: number;
|
|
29
|
-
lastAccBlockWeightedMarketCap: number;
|
|
30
|
-
feeExponent: number;
|
|
22
|
+
export type Pair = BorrowingData & BorrowingOi & {
|
|
23
|
+
groups: PairGroup[];
|
|
31
24
|
};
|
|
25
|
+
export type Group = BorrowingData & BorrowingOi;
|
|
32
26
|
export type InitialAccFees = {
|
|
33
27
|
accPairFee: number;
|
|
34
28
|
accGroupFee: number;
|
package/lib/trade/fees/index.js
CHANGED
|
@@ -22,8 +22,8 @@ const getClosingFee = (posDai, leverage, pairIndex, pairFee) => {
|
|
|
22
22
|
pairFee === undefined) {
|
|
23
23
|
return 0;
|
|
24
24
|
}
|
|
25
|
-
const { closeFeeP,
|
|
26
|
-
return (closeFeeP +
|
|
25
|
+
const { closeFeeP, triggerOrderFeeP } = pairFee;
|
|
26
|
+
return (closeFeeP + triggerOrderFeeP) * posDai * leverage;
|
|
27
27
|
};
|
|
28
28
|
exports.getClosingFee = getClosingFee;
|
|
29
29
|
__exportStar(require("./borrowing"), exports);
|
package/lib/trade/index.d.ts
CHANGED
package/lib/trade/index.js
CHANGED
|
@@ -17,7 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./fees"), exports);
|
|
18
18
|
__exportStar(require("./pnl"), exports);
|
|
19
19
|
__exportStar(require("./spread"), exports);
|
|
20
|
-
__exportStar(require("./openLimitOrder"), exports);
|
|
21
20
|
__exportStar(require("./liquidation"), exports);
|
|
22
21
|
__exportStar(require("./fees"), exports);
|
|
23
22
|
__exportStar(require("./types"), exports);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { GetBorrowingFeeContext } from "./fees";
|
|
2
|
-
import { Trade, TradeInfo
|
|
3
|
-
export declare const getLiquidationPrice: (trade: Trade, tradeInfo: TradeInfo, initialAccFees:
|
|
1
|
+
import { GetBorrowingFeeContext, BorrowingFee } from "./fees";
|
|
2
|
+
import { Trade, TradeInfo } from "./types";
|
|
3
|
+
export declare const getLiquidationPrice: (trade: Trade, tradeInfo: TradeInfo, initialAccFees: BorrowingFee.InitialAccFees, context: GetBorrowingFeeContext) => number;
|
package/lib/trade/liquidation.js
CHANGED
|
@@ -3,13 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getLiquidationPrice = void 0;
|
|
4
4
|
const fees_1 = require("./fees");
|
|
5
5
|
const getLiquidationPrice = (trade, tradeInfo, initialAccFees, context) => {
|
|
6
|
-
const posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
|
|
7
6
|
const liqPriceDistance = (trade.openPrice *
|
|
8
|
-
(
|
|
9
|
-
(0, fees_1.getBorrowingFee)(
|
|
10
|
-
|
|
7
|
+
(trade.collateralAmount * 0.9 -
|
|
8
|
+
(0, fees_1.getBorrowingFee)(trade.collateralAmount * trade.leverage, trade.pairIndex, trade.long, initialAccFees, context))) /
|
|
9
|
+
trade.collateralAmount /
|
|
11
10
|
trade.leverage;
|
|
12
|
-
return trade.
|
|
11
|
+
return trade.long
|
|
13
12
|
? Math.max(trade.openPrice - liqPriceDistance, 0)
|
|
14
13
|
: Math.max(trade.openPrice + liqPriceDistance, 0);
|
|
15
14
|
};
|
package/lib/trade/pnl.js
CHANGED
|
@@ -6,28 +6,28 @@ const getPnl = (price, trade, tradeInfo, initialAccFees, useFees, context) => {
|
|
|
6
6
|
if (!price) {
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
|
-
const
|
|
9
|
+
const posCollat = trade.collateralAmount;
|
|
10
10
|
const { openPrice, leverage } = trade;
|
|
11
11
|
const { maxGainP, fee } = context;
|
|
12
|
-
const maxGain = maxGainP === undefined ? Infinity : (maxGainP / 100) *
|
|
13
|
-
let
|
|
14
|
-
? ((price - openPrice) / openPrice) * leverage *
|
|
15
|
-
: ((openPrice - price) / openPrice) * leverage *
|
|
16
|
-
|
|
12
|
+
const maxGain = maxGainP === undefined ? Infinity : (maxGainP / 100) * posCollat;
|
|
13
|
+
let pnlCollat = trade.long
|
|
14
|
+
? ((price - openPrice) / openPrice) * leverage * posCollat
|
|
15
|
+
: ((openPrice - price) / openPrice) * leverage * posCollat;
|
|
16
|
+
pnlCollat = pnlCollat > maxGain ? maxGain : pnlCollat;
|
|
17
17
|
if (useFees) {
|
|
18
|
-
|
|
18
|
+
pnlCollat -= (0, fees_1.getBorrowingFee)(posCollat * trade.leverage, trade.pairIndex, trade.long, initialAccFees, context);
|
|
19
19
|
}
|
|
20
|
-
let pnlPercentage = (
|
|
20
|
+
let pnlPercentage = (pnlCollat / posCollat) * 100;
|
|
21
21
|
// Can be liquidated
|
|
22
22
|
if (pnlPercentage <= -90) {
|
|
23
23
|
pnlPercentage = -100;
|
|
24
24
|
}
|
|
25
25
|
else {
|
|
26
|
-
|
|
27
|
-
pnlPercentage = (
|
|
26
|
+
pnlCollat -= (0, fees_1.getClosingFee)(posCollat, trade.leverage, trade.pairIndex, fee);
|
|
27
|
+
pnlPercentage = (pnlCollat / posCollat) * 100;
|
|
28
28
|
}
|
|
29
29
|
pnlPercentage = pnlPercentage < -100 ? -100 : pnlPercentage;
|
|
30
|
-
|
|
31
|
-
return [
|
|
30
|
+
pnlCollat = (posCollat * pnlPercentage) / 100;
|
|
31
|
+
return [pnlCollat, pnlPercentage];
|
|
32
32
|
};
|
|
33
33
|
exports.getPnl = getPnl;
|
package/lib/trade/types.d.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IGNSTradingCallbacks } from "../contracts/types/generated/GNSTradingCallbacks";
|
|
3
|
-
import { BigNumber } from "ethers";
|
|
1
|
+
import { ITradingStorage, IBorrowingFees } from "../contracts/types/generated/GNSMultiCollatDiamond";
|
|
4
2
|
import { BorrowingFee } from "./fees/borrowing";
|
|
5
3
|
import { FeeTier, TraderInfo } from "./fees/tiers/types";
|
|
6
4
|
export type PairIndexes = {
|
|
@@ -10,30 +8,26 @@ export type TradeContainer = {
|
|
|
10
8
|
trade: Trade;
|
|
11
9
|
tradeInfo: TradeInfo;
|
|
12
10
|
initialAccFees: TradeInitialAccFees;
|
|
13
|
-
tradeData: TradeData;
|
|
14
11
|
receivedAt?: number;
|
|
15
12
|
};
|
|
16
13
|
export type Trade = {
|
|
17
|
-
|
|
14
|
+
user: string;
|
|
18
15
|
index: number;
|
|
19
|
-
|
|
16
|
+
pairIndex: PairIndex;
|
|
20
17
|
leverage: number;
|
|
18
|
+
long: boolean;
|
|
19
|
+
isOpen: boolean;
|
|
20
|
+
collateralIndex: number;
|
|
21
|
+
tradeType: TradeType;
|
|
22
|
+
collateralAmount: number;
|
|
21
23
|
openPrice: number;
|
|
22
|
-
pairIndex: PairIndex;
|
|
23
24
|
sl: number;
|
|
24
25
|
tp: number;
|
|
25
|
-
trader: string;
|
|
26
26
|
};
|
|
27
27
|
export type TradeInfo = {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
tpLastUpdated: number;
|
|
32
|
-
};
|
|
33
|
-
export type TradeInitialAccFees = {
|
|
34
|
-
borrowing: BorrowingFee.InitialAccFees;
|
|
35
|
-
};
|
|
36
|
-
export type TradeData = {
|
|
28
|
+
createdBlock: number;
|
|
29
|
+
tpLastUpdatedBlock: number;
|
|
30
|
+
slLastUpdatedBlock: number;
|
|
37
31
|
maxSlippageP: number;
|
|
38
32
|
lastOiUpdateTs: number;
|
|
39
33
|
collateralPriceUsd: number;
|
|
@@ -43,36 +37,11 @@ export type TradingGroup = {
|
|
|
43
37
|
minLeverage: number;
|
|
44
38
|
name: string;
|
|
45
39
|
};
|
|
46
|
-
export type LimitOrder = {
|
|
47
|
-
block: number;
|
|
48
|
-
buy: boolean;
|
|
49
|
-
index: number;
|
|
50
|
-
leverage: number;
|
|
51
|
-
maxPrice: number;
|
|
52
|
-
minPrice: number;
|
|
53
|
-
pairIndex: PairIndex;
|
|
54
|
-
positionSize: number;
|
|
55
|
-
sl: number;
|
|
56
|
-
spreadReductionP: number;
|
|
57
|
-
tp: number;
|
|
58
|
-
trader: string;
|
|
59
|
-
type: number;
|
|
60
|
-
maxSlippageP: number;
|
|
61
|
-
};
|
|
62
|
-
export type LimitOrderRaw = GFarmTradingStorageV5.OpenLimitOrderStructOutput & {
|
|
63
|
-
type: number;
|
|
64
|
-
maxSlippageP: BigNumber;
|
|
65
|
-
};
|
|
66
40
|
export type Fee = {
|
|
67
|
-
closeFeeP: number;
|
|
68
|
-
minLevPosUsd: number;
|
|
69
|
-
nftLimitOrderFeeP: number;
|
|
70
41
|
openFeeP: number;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
max: number;
|
|
75
|
-
short: number;
|
|
42
|
+
closeFeeP: number;
|
|
43
|
+
minPositionSizeUsd: number;
|
|
44
|
+
triggerOrderFeeP: number;
|
|
76
45
|
};
|
|
77
46
|
export type PairDepth = {
|
|
78
47
|
onePercentDepthAboveUsd: number;
|
|
@@ -97,6 +66,7 @@ export type TradeHistoryRecord = {
|
|
|
97
66
|
address: string;
|
|
98
67
|
buy: number;
|
|
99
68
|
collateralPriceUsd: number;
|
|
69
|
+
collateralIndex: number;
|
|
100
70
|
date: string;
|
|
101
71
|
leverage: number;
|
|
102
72
|
pair: string;
|
|
@@ -147,22 +117,10 @@ export declare enum PositionType {
|
|
|
147
117
|
SHORT = "SHORT"
|
|
148
118
|
}
|
|
149
119
|
export type TradeContainerRaw = {
|
|
150
|
-
trade:
|
|
151
|
-
tradeInfo:
|
|
152
|
-
|
|
153
|
-
initialAccFees: {
|
|
154
|
-
borrowing: {
|
|
155
|
-
accPairFee: number;
|
|
156
|
-
accGroupFee: number;
|
|
157
|
-
block: number;
|
|
158
|
-
};
|
|
159
|
-
};
|
|
120
|
+
trade: ITradingStorage.TradeStruct;
|
|
121
|
+
tradeInfo: ITradingStorage.TradeInfoStruct;
|
|
122
|
+
initialAccFees: IBorrowingFees.BorrowingInitialAccFeesStruct;
|
|
160
123
|
};
|
|
161
|
-
export declare enum OpenLimitOrderType {
|
|
162
|
-
LEGACY = 0,
|
|
163
|
-
REVERSAL = 1,
|
|
164
|
-
MOMENTUM = 2
|
|
165
|
-
}
|
|
166
124
|
export type OiWindowsSettings = {
|
|
167
125
|
startTs: number;
|
|
168
126
|
windowsDuration: number;
|
|
@@ -177,6 +135,8 @@ export type OiWindows = {
|
|
|
177
135
|
[key: string]: OiWindow;
|
|
178
136
|
};
|
|
179
137
|
export type CollateralConfig = {
|
|
138
|
+
collateral: string;
|
|
139
|
+
isActive: boolean;
|
|
180
140
|
precision: number;
|
|
181
141
|
precisionDelta: number;
|
|
182
142
|
decimals?: number;
|
|
@@ -193,6 +153,17 @@ export type TraderFeeTiers = {
|
|
|
193
153
|
lastDayUpdatedPoints: number;
|
|
194
154
|
expiredPoints: number[];
|
|
195
155
|
};
|
|
156
|
+
export declare enum TradeType {
|
|
157
|
+
TRADE = 0,
|
|
158
|
+
LIMIT = 1,
|
|
159
|
+
STOP = 2
|
|
160
|
+
}
|
|
161
|
+
export type OpenInterest = {
|
|
162
|
+
long: number;
|
|
163
|
+
short: number;
|
|
164
|
+
max: number;
|
|
165
|
+
};
|
|
166
|
+
export type TradeInitialAccFees = BorrowingFee.InitialAccFees;
|
|
196
167
|
export declare enum PairIndex {
|
|
197
168
|
BTCUSD = 0,
|
|
198
169
|
ETHUSD = 1,
|
|
@@ -415,10 +386,6 @@ export declare enum PairIndex {
|
|
|
415
386
|
RONINUSD = 218,
|
|
416
387
|
ENAUSD = 219,
|
|
417
388
|
WUSD = 220,
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
TAOUSD = 223,
|
|
421
|
-
OMNIUSD = 224,
|
|
422
|
-
PRCLUSD = 225,
|
|
423
|
-
MERLUSD = 226
|
|
389
|
+
TNSRUSD = 221,
|
|
390
|
+
ZEUSUSD = 222
|
|
424
391
|
}
|
package/lib/trade/types.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PairIndex = exports.
|
|
3
|
+
exports.PairIndex = exports.TradeType = exports.PositionType = void 0;
|
|
4
4
|
var PositionType;
|
|
5
5
|
(function (PositionType) {
|
|
6
6
|
PositionType["LONG"] = "LONG";
|
|
7
7
|
PositionType["SHORT"] = "SHORT";
|
|
8
8
|
})(PositionType = exports.PositionType || (exports.PositionType = {}));
|
|
9
|
-
var
|
|
10
|
-
(function (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
})(
|
|
9
|
+
var TradeType;
|
|
10
|
+
(function (TradeType) {
|
|
11
|
+
TradeType[TradeType["TRADE"] = 0] = "TRADE";
|
|
12
|
+
TradeType[TradeType["LIMIT"] = 1] = "LIMIT";
|
|
13
|
+
TradeType[TradeType["STOP"] = 2] = "STOP";
|
|
14
|
+
})(TradeType = exports.TradeType || (exports.TradeType = {}));
|
|
15
15
|
var PairIndex;
|
|
16
16
|
(function (PairIndex) {
|
|
17
17
|
PairIndex[PairIndex["BTCUSD"] = 0] = "BTCUSD";
|
|
@@ -235,10 +235,6 @@ var PairIndex;
|
|
|
235
235
|
PairIndex[PairIndex["RONINUSD"] = 218] = "RONINUSD";
|
|
236
236
|
PairIndex[PairIndex["ENAUSD"] = 219] = "ENAUSD";
|
|
237
237
|
PairIndex[PairIndex["WUSD"] = 220] = "WUSD";
|
|
238
|
-
PairIndex[PairIndex["
|
|
239
|
-
PairIndex[PairIndex["
|
|
240
|
-
PairIndex[PairIndex["TAOUSD"] = 223] = "TAOUSD";
|
|
241
|
-
PairIndex[PairIndex["OMNIUSD"] = 224] = "OMNIUSD";
|
|
242
|
-
PairIndex[PairIndex["PRCLUSD"] = 225] = "PRCLUSD";
|
|
243
|
-
PairIndex[PairIndex["MERLUSD"] = 226] = "MERLUSD";
|
|
238
|
+
PairIndex[PairIndex["TNSRUSD"] = 221] = "TNSRUSD";
|
|
239
|
+
PairIndex[PairIndex["ZEUSUSD"] = 222] = "ZEUSUSD";
|
|
244
240
|
})(PairIndex = exports.PairIndex || (exports.PairIndex = {}));
|