@gainsnetwork/sdk 0.2.56-rc1 → 0.2.56-rc3
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 +4 -0
- package/lib/constants.js +6 -1
- package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +327 -7
- package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +508 -3
- package/lib/contracts/utils/borrowingFees.js +3 -1
- package/lib/contracts/utils/pairs.js +4 -0
- package/lib/trade/fees/borrowing/converter.d.ts +5 -3
- package/lib/trade/fees/borrowing/converter.js +8 -3
- package/lib/trade/fees/borrowing/index.d.ts +9 -4
- package/lib/trade/fees/borrowing/index.js +53 -11
- package/lib/trade/fees/borrowing/types.d.ts +5 -0
- package/lib/trade/types.d.ts +5 -1
- package/lib/trade/types.js +4 -0
- 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/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/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/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/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/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.convertGroupBorrowingData = exports.convertGroupBorrowingFee = exports.convertPairBorrowingFees = exports.convertPairBorrowingFee = exports.convertPairGroupBorrowingFee = void 0;
|
|
3
|
+
exports.convertFeePerBlockCap = exports.convertGroupBorrowingFees = exports.convertGroupBorrowingData = exports.convertGroupBorrowingFee = exports.convertPairBorrowingFees = exports.convertPairBorrowingFee = exports.convertPairGroupBorrowingFee = void 0;
|
|
4
4
|
const borrowingFees_1 = require("../../../contracts/utils/borrowingFees");
|
|
5
5
|
const convertPairGroupBorrowingFee = (pairGroup) => ({
|
|
6
6
|
groupIndex: pairGroup.groupIndex,
|
|
@@ -14,9 +14,9 @@ const convertPairGroupBorrowingFee = (pairGroup) => ({
|
|
|
14
14
|
block: pairGroup.block,
|
|
15
15
|
});
|
|
16
16
|
exports.convertPairGroupBorrowingFee = convertPairGroupBorrowingFee;
|
|
17
|
-
const convertPairBorrowingFee = (pair, pairOi, pairGroup) => (Object.assign(Object.assign({}, (0, exports.convertGroupBorrowingData)(pair, pairOi)), { groups: pairGroup.map(value => (0, exports.convertPairGroupBorrowingFee)(value)) }));
|
|
17
|
+
const convertPairBorrowingFee = (pair, pairOi, pairGroup, feeCap) => (Object.assign(Object.assign({}, (0, exports.convertGroupBorrowingData)(pair, pairOi)), { groups: pairGroup.map(value => (0, exports.convertPairGroupBorrowingFee)(value)), feePerBlockCap: (0, exports.convertFeePerBlockCap)(feeCap) }));
|
|
18
18
|
exports.convertPairBorrowingFee = convertPairBorrowingFee;
|
|
19
|
-
const convertPairBorrowingFees = ([pairs, pairOi, pairGroups]) => pairs.map((value, ix) => (0, exports.convertPairBorrowingFee)(value, pairOi[ix], pairGroups[ix]));
|
|
19
|
+
const convertPairBorrowingFees = ([pairs, pairOi, pairGroups, feeCaps]) => pairs.map((value, ix) => (0, exports.convertPairBorrowingFee)(value, pairOi[ix], pairGroups[ix], feeCaps[ix]));
|
|
20
20
|
exports.convertPairBorrowingFees = convertPairBorrowingFees;
|
|
21
21
|
const convertGroupBorrowingFee = (group, groupOi) => (0, exports.convertGroupBorrowingData)(group, groupOi);
|
|
22
22
|
exports.convertGroupBorrowingFee = convertGroupBorrowingFee;
|
|
@@ -35,3 +35,8 @@ const convertGroupBorrowingData = (obj, oi) => ({
|
|
|
35
35
|
exports.convertGroupBorrowingData = convertGroupBorrowingData;
|
|
36
36
|
const convertGroupBorrowingFees = ([groups, groupOis]) => groups.map((value, ix) => (0, exports.convertGroupBorrowingFee)(value, groupOis[ix]));
|
|
37
37
|
exports.convertGroupBorrowingFees = convertGroupBorrowingFees;
|
|
38
|
+
const convertFeePerBlockCap = (feeCap) => ({
|
|
39
|
+
minP: feeCap.minP ? parseFloat(feeCap.minP.toString()) / 1e3 / 100 : 0,
|
|
40
|
+
maxP: feeCap.maxP ? parseFloat(feeCap.maxP.toString()) / 1e3 / 100 : 1,
|
|
41
|
+
});
|
|
42
|
+
exports.convertFeePerBlockCap = convertFeePerBlockCap;
|
|
@@ -22,7 +22,8 @@ export declare const borrowingFeeUtils: {
|
|
|
22
22
|
}) => {
|
|
23
23
|
accFeeLong: number;
|
|
24
24
|
accFeeShort: number;
|
|
25
|
-
|
|
25
|
+
deltaLong: number;
|
|
26
|
+
deltaShort: number;
|
|
26
27
|
};
|
|
27
28
|
getPairPendingAccFee: (pairIndex: PairIndex, currentBlock: number, long: boolean, context: {
|
|
28
29
|
pairs: BorrowingFee.Pair[];
|
|
@@ -33,21 +34,25 @@ export declare const borrowingFeeUtils: {
|
|
|
33
34
|
}) => {
|
|
34
35
|
accFeeLong: number;
|
|
35
36
|
accFeeShort: number;
|
|
36
|
-
|
|
37
|
+
deltaLong: number;
|
|
38
|
+
deltaShort: number;
|
|
37
39
|
};
|
|
38
40
|
getGroupPendingAccFee: (groupIndex: number, currentBlock: number, long: boolean, context: {
|
|
39
41
|
groups: BorrowingFee.Group[];
|
|
40
42
|
}) => number;
|
|
41
|
-
getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number, maxOi: number, feeExponent: number) => {
|
|
43
|
+
getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number, maxOi: number, feeExponent: number, feeCaps?: BorrowingFee.BorrowingFeePerBlockCap) => {
|
|
42
44
|
accFeeLong: number;
|
|
43
45
|
accFeeShort: number;
|
|
44
|
-
|
|
46
|
+
deltaLong: number;
|
|
47
|
+
deltaShort: number;
|
|
45
48
|
};
|
|
46
49
|
getActiveFeePerBlock: (pair: BorrowingFee.Pair, group: BorrowingFee.Group | undefined) => number;
|
|
47
50
|
getBorrowingDataActiveFeePerBlock: (val: BorrowingFee.Pair | BorrowingFee.Group) => number;
|
|
48
51
|
getPairGroupIndex: (pairIndex: PairIndex, context: {
|
|
49
52
|
pairs: BorrowingFee.Pair[];
|
|
50
53
|
}) => number;
|
|
54
|
+
getPendingAccFeesDelta: (blockDistance: number, feePerBlock: number, netOi: number, maxOi: number, feeExponent: number) => number;
|
|
55
|
+
getFeePerBlockCaps: (cap?: BorrowingFee.BorrowingFeePerBlockCap) => BorrowingFee.BorrowingFeePerBlockCap;
|
|
51
56
|
};
|
|
52
57
|
export * as BorrowingFee from "./types";
|
|
53
58
|
export * from "./converter";
|
|
@@ -77,7 +77,7 @@ const getPairGroupIndex = (pairIndex, context) => {
|
|
|
77
77
|
const getPairPendingAccFees = (pairIndex, currentBlock, context) => {
|
|
78
78
|
const { pairs, openInterest: { long, short }, } = context;
|
|
79
79
|
const pair = pairs[pairIndex];
|
|
80
|
-
return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.oi.max, pair.feeExponent);
|
|
80
|
+
return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.oi.max, pair.feeExponent, pair.feePerBlockCap);
|
|
81
81
|
};
|
|
82
82
|
const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
|
|
83
83
|
const { accFeeLong, accFeeShort } = getPairPendingAccFees(pairIndex, currentBlock, context);
|
|
@@ -127,22 +127,62 @@ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long,
|
|
|
127
127
|
}
|
|
128
128
|
return { deltaGroup, deltaPair, beforeTradeOpen };
|
|
129
129
|
};
|
|
130
|
-
const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, maxOi, feeExponent
|
|
130
|
+
const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, maxOi, feeExponent, feeCaps // as percentage: eg minP: 0.1 = 10%, maxP: 0.5 = 50%
|
|
131
|
+
) => {
|
|
131
132
|
const moreShorts = oiLong < oiShort;
|
|
133
|
+
const blockDistance = currentBlock > accLastUpdatedBlock ? currentBlock - accLastUpdatedBlock : 0;
|
|
134
|
+
// If block distance is zero nothing changes
|
|
135
|
+
if (blockDistance === 0) {
|
|
136
|
+
return {
|
|
137
|
+
accFeeLong,
|
|
138
|
+
accFeeShort,
|
|
139
|
+
deltaLong: 0,
|
|
140
|
+
deltaShort: 0,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
132
143
|
const netOi = Math.abs(oiLong - oiShort);
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
144
|
+
// Calculate minimum and maximum effective oi
|
|
145
|
+
const { minP, maxP } = getFeePerBlockCaps(feeCaps);
|
|
146
|
+
const minNetOi = maxOi * minP;
|
|
147
|
+
const maxNetOi = maxOi * maxP;
|
|
148
|
+
// Calculate the minimum acc fee delta (applies to both sides)
|
|
149
|
+
const minDelta = minNetOi > 0
|
|
150
|
+
? getPendingAccFeesDelta(blockDistance, feePerBlock, netOi, maxOi, feeExponent)
|
|
151
|
+
: 0;
|
|
152
|
+
// Calculate the actual acc fee (using capped oi of 100% or less)
|
|
153
|
+
const delta = netOi > minNetOi
|
|
154
|
+
? getPendingAccFeesDelta(blockDistance, feePerBlock, Math.min(netOi, maxNetOi), // if netOi > cap, use cap
|
|
155
|
+
maxOi, feeExponent)
|
|
156
|
+
: minDelta;
|
|
157
|
+
const [deltaLong, deltaShort] = moreShorts
|
|
158
|
+
? [minDelta, delta]
|
|
159
|
+
: [delta, minDelta];
|
|
160
|
+
return {
|
|
161
|
+
accFeeLong: accFeeLong + deltaLong,
|
|
162
|
+
accFeeShort: accFeeShort + deltaShort,
|
|
163
|
+
deltaLong,
|
|
164
|
+
deltaShort,
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
const getPendingAccFeesDelta = (blockDistance, feePerBlock, netOi, maxOi, feeExponent) => {
|
|
168
|
+
return maxOi > 0 && feeExponent > 0
|
|
169
|
+
? feePerBlock * blockDistance * Math.pow((netOi / maxOi), feeExponent)
|
|
137
170
|
: 0;
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
return {
|
|
171
|
+
};
|
|
172
|
+
const getFeePerBlockCaps = (cap) => {
|
|
173
|
+
return {
|
|
174
|
+
minP: (cap === null || cap === void 0 ? void 0 : cap.minP) || 0,
|
|
175
|
+
maxP: (cap === null || cap === void 0 ? void 0 : cap.maxP) && cap.maxP > 0 ? cap.maxP : 1,
|
|
176
|
+
};
|
|
141
177
|
};
|
|
142
178
|
const getBorrowingDataActiveFeePerBlock = (val) => {
|
|
143
179
|
const { long, short, max } = val.oi;
|
|
144
|
-
const
|
|
145
|
-
|
|
180
|
+
const { minP, maxP } = getFeePerBlockCaps("feePerBlockCap" in val ? val.feePerBlockCap : undefined);
|
|
181
|
+
// Calculate the effective open interest
|
|
182
|
+
// If minP > 0 then netOi has to be at least minP * maxOi
|
|
183
|
+
// If maxP > 0 then netOi cannot be more than maxP * maxOi
|
|
184
|
+
const effectiveOi = Math.min(Math.max(Math.abs(long - short), max * minP), max * maxP);
|
|
185
|
+
return val.feePerBlock * Math.pow((effectiveOi / max), val.feeExponent);
|
|
146
186
|
};
|
|
147
187
|
const getActiveFeePerBlock = (pair, group) => {
|
|
148
188
|
const pairFeePerBlock = getBorrowingDataActiveFeePerBlock(pair);
|
|
@@ -162,6 +202,8 @@ exports.borrowingFeeUtils = {
|
|
|
162
202
|
getActiveFeePerBlock,
|
|
163
203
|
getBorrowingDataActiveFeePerBlock,
|
|
164
204
|
getPairGroupIndex,
|
|
205
|
+
getPendingAccFeesDelta,
|
|
206
|
+
getFeePerBlockCaps,
|
|
165
207
|
};
|
|
166
208
|
exports.BorrowingFee = __importStar(require("./types"));
|
|
167
209
|
__exportStar(require("./converter"), exports);
|
|
@@ -20,8 +20,13 @@ export type PairGroup = {
|
|
|
20
20
|
export type BorrowingOi = {
|
|
21
21
|
oi: OpenInterest;
|
|
22
22
|
};
|
|
23
|
+
export type BorrowingFeePerBlockCap = {
|
|
24
|
+
minP: number;
|
|
25
|
+
maxP: number;
|
|
26
|
+
};
|
|
23
27
|
export type Pair = BorrowingData & BorrowingOi & {
|
|
24
28
|
groups: PairGroup[];
|
|
29
|
+
feePerBlockCap?: BorrowingFeePerBlockCap;
|
|
25
30
|
};
|
|
26
31
|
export type Group = BorrowingData & BorrowingOi;
|
|
27
32
|
export type InitialAccFees = {
|
package/lib/trade/types.d.ts
CHANGED
package/lib/trade/types.js
CHANGED
|
@@ -372,4 +372,8 @@ var PairIndex;
|
|
|
372
372
|
PairIndex[PairIndex["VINEUSD"] = 340] = "VINEUSD";
|
|
373
373
|
PairIndex[PairIndex["TOSHIUSD"] = 341] = "TOSHIUSD";
|
|
374
374
|
PairIndex[PairIndex["BERAUSD"] = 342] = "BERAUSD";
|
|
375
|
+
PairIndex[PairIndex["LAYERUSD"] = 343] = "LAYERUSD";
|
|
376
|
+
PairIndex[PairIndex["CHEEMSUSD"] = 344] = "CHEEMSUSD";
|
|
377
|
+
PairIndex[PairIndex["SOLVUSD"] = 345] = "SOLVUSD";
|
|
378
|
+
PairIndex[PairIndex["TSTUSD"] = 346] = "TSTUSD";
|
|
375
379
|
})(PairIndex = exports.PairIndex || (exports.PairIndex = {}));
|