@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.
Files changed (50) hide show
  1. package/lib/constants.d.ts +4 -0
  2. package/lib/constants.js +6 -1
  3. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +327 -7
  4. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +508 -3
  5. package/lib/contracts/utils/borrowingFees.js +3 -1
  6. package/lib/contracts/utils/pairs.js +4 -0
  7. package/lib/trade/fees/borrowing/converter.d.ts +5 -3
  8. package/lib/trade/fees/borrowing/converter.js +8 -3
  9. package/lib/trade/fees/borrowing/index.d.ts +9 -4
  10. package/lib/trade/fees/borrowing/index.js +53 -11
  11. package/lib/trade/fees/borrowing/types.d.ts +5 -0
  12. package/lib/trade/types.d.ts +5 -1
  13. package/lib/trade/types.js +4 -0
  14. package/package.json +1 -1
  15. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +0 -1911
  16. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +0 -2
  17. package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +0 -1067
  18. package/lib/contracts/types/generated/GNSBorrowingFees.js +0 -2
  19. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +0 -533
  20. package/lib/contracts/types/generated/GNSNftRewardsV6.js +0 -2
  21. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +0 -613
  22. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +0 -2
  23. package/lib/contracts/types/generated/GNSTrading.d.ts +0 -758
  24. package/lib/contracts/types/generated/GNSTrading.js +0 -2
  25. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +0 -875
  26. package/lib/contracts/types/generated/GNSTradingCallbacks.js +0 -2
  27. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +0 -1387
  28. package/lib/contracts/types/generated/GNSTradingStorage.js +0 -2
  29. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +0 -1838
  30. package/lib/contracts/types/generated/GTokenV6_3_2.js +0 -2
  31. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +0 -83
  32. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +0 -2691
  33. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +0 -124
  34. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +0 -1784
  35. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +0 -100
  36. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +0 -1116
  37. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +0 -100
  38. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +0 -1003
  39. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +0 -113
  40. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +0 -1428
  41. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +0 -96
  42. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +0 -2241
  43. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +0 -95
  44. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +0 -1071
  45. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +0 -110
  46. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +0 -2682
  47. package/lib/contracts/utils/openLimitOrders.d.ts +0 -8
  48. package/lib/contracts/utils/openLimitOrders.js +0 -88
  49. package/lib/trade/openLimitOrder.d.ts +0 -2
  50. 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
- delta: number;
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
- delta: number;
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
- delta: number;
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
- const delta = maxOi > 0 && feeExponent > 0
134
- ? feePerBlock *
135
- (currentBlock - accLastUpdatedBlock) *
136
- Math.pow((netOi / maxOi), feeExponent)
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
- const newAccFeeLong = moreShorts ? accFeeLong : accFeeLong + delta;
139
- const newAccFeeShort = moreShorts ? accFeeShort + delta : accFeeShort;
140
- return { accFeeLong: newAccFeeLong, accFeeShort: newAccFeeShort, delta };
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 netOi = Math.abs(long - short);
145
- return val.feePerBlock * Math.pow((netOi / max), val.feeExponent);
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 = {
@@ -561,5 +561,9 @@ export declare enum PairIndex {
561
561
  VVVUSD = 339,
562
562
  VINEUSD = 340,
563
563
  TOSHIUSD = 341,
564
- BERAUSD = 342
564
+ BERAUSD = 342,
565
+ LAYERUSD = 343,
566
+ CHEEMSUSD = 344,
567
+ SOLVUSD = 345,
568
+ TSTUSD = 346
565
569
  }
@@ -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 = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gainsnetwork/sdk",
3
- "version": "0.2.56-rc1",
3
+ "version": "0.2.56-rc3",
4
4
  "description": "Gains Network SDK",
5
5
  "main": "./lib/index.js",
6
6
  "files": [