@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.
Files changed (94) hide show
  1. package/lib/constants.d.ts +1 -5
  2. package/lib/constants.js +3 -6
  3. package/lib/contracts/addresses.json +8 -44
  4. package/lib/contracts/index.js +1 -4
  5. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +4608 -1133
  6. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +190 -43
  7. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +9988 -1722
  8. package/lib/contracts/types/generated/factories/index.d.ts +0 -7
  9. package/lib/contracts/types/generated/factories/index.js +1 -15
  10. package/lib/contracts/types/generated/index.d.ts +0 -14
  11. package/lib/contracts/types/generated/index.js +1 -15
  12. package/lib/contracts/types/index.d.ts +2 -10
  13. package/lib/contracts/utils/borrowingFees.d.ts +4 -4
  14. package/lib/contracts/utils/borrowingFees.js +9 -5
  15. package/lib/contracts/utils/index.d.ts +0 -1
  16. package/lib/contracts/utils/index.js +0 -1
  17. package/lib/contracts/utils/openTrades.d.ts +1 -1
  18. package/lib/contracts/utils/openTrades.js +330 -138
  19. package/lib/contracts/utils/pairs.d.ts +1 -1
  20. package/lib/contracts/utils/pairs.js +27 -20
  21. package/lib/trade/fees/borrowing/converter.d.ts +12 -10
  22. package/lib/trade/fees/borrowing/converter.js +18 -24
  23. package/lib/trade/fees/borrowing/index.d.ts +3 -4
  24. package/lib/trade/fees/borrowing/index.js +12 -18
  25. package/lib/trade/fees/borrowing/types.d.ts +14 -20
  26. package/lib/trade/fees/index.js +2 -2
  27. package/lib/trade/index.d.ts +0 -1
  28. package/lib/trade/index.js +0 -1
  29. package/lib/trade/liquidation.d.ts +3 -3
  30. package/lib/trade/liquidation.js +4 -5
  31. package/lib/trade/pnl.js +12 -12
  32. package/lib/trade/types.d.ts +33 -66
  33. package/lib/trade/types.js +9 -13
  34. package/package.json +1 -1
  35. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +0 -1911
  36. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +0 -2
  37. package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +0 -1067
  38. package/lib/contracts/types/generated/GNSBorrowingFees.js +0 -2
  39. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.d.ts +0 -979
  40. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.js +0 -2
  41. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +0 -1058
  42. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +0 -2
  43. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +0 -533
  44. package/lib/contracts/types/generated/GNSNftRewardsV6.js +0 -2
  45. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +0 -613
  46. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +0 -2
  47. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +0 -911
  48. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +0 -2
  49. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +0 -660
  50. package/lib/contracts/types/generated/GNSPairsStorageV6.js +0 -2
  51. package/lib/contracts/types/generated/GNSTrading.d.ts +0 -758
  52. package/lib/contracts/types/generated/GNSTrading.js +0 -2
  53. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +0 -875
  54. package/lib/contracts/types/generated/GNSTradingCallbacks.js +0 -2
  55. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +0 -806
  56. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.js +0 -2
  57. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +0 -821
  58. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +0 -2
  59. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +0 -1387
  60. package/lib/contracts/types/generated/GNSTradingStorage.js +0 -2
  61. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +0 -1838
  62. package/lib/contracts/types/generated/GTokenV6_3_2.js +0 -2
  63. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +0 -83
  64. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +0 -2691
  65. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.d.ts +0 -88
  66. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.js +0 -1654
  67. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +0 -113
  68. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +0 -1742
  69. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +0 -124
  70. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +0 -1784
  71. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +0 -100
  72. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +0 -1116
  73. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +0 -100
  74. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +0 -1003
  75. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +0 -98
  76. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +0 -1485
  77. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +0 -117
  78. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +0 -1265
  79. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.d.ts +0 -82
  80. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +0 -1273
  81. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +0 -82
  82. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +0 -1326
  83. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +0 -113
  84. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +0 -1428
  85. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +0 -96
  86. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +0 -2241
  87. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +0 -95
  88. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +0 -1071
  89. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +0 -110
  90. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +0 -2682
  91. package/lib/contracts/utils/openLimitOrders.d.ts +0 -8
  92. package/lib/contracts/utils/openLimitOrders.js +0 -88
  93. package/lib/trade/openLimitOrder.d.ts +0 -2
  94. 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, groupFeeExponent) => ({
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 convertGroupBorrowingFees = ([groups, groupFeeExponents]) => groups.map((value, ix) => (0, exports.convertGroupBorrowingFee)(value, groupFeeExponents[ix]));
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, positionSizeDai: number, context: {
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
- getActivePairFeePerBlock: (pair: BorrowingFee.Pair, openInterest: OpenInterest) => number;
48
- getActiveGroupFeePerBlock: (group: BorrowingFee.Group) => number;
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, positionSizeDai, context) => {
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.maxOi == 0 || (long ? g.oiLong : g.oiShort) + positionSizeDai <= g.maxOi);
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.maxOi, pair.feeExponent);
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.oiLong, group.oiShort, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, group.maxOi, group.feeExponent);
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 getActivePairFeePerBlock = (pair, openInterest) => {
141
- const { long, short } = openInterest;
140
+ const getBorrowingDataActiveFeePerBlock = (val) => {
141
+ const { long, short, max } = val.oi;
142
142
  const netOi = Math.abs(long - short);
143
- return pair.feePerBlock * Math.pow((netOi / pair.maxOi), pair.feeExponent);
143
+ return val.feePerBlock * Math.pow((netOi / max), val.feeExponent);
144
144
  };
145
- const getActiveGroupFeePerBlock = (group) => {
146
- const { oiLong, oiShort } = group;
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 = getActiveGroupFeePerBlock(group);
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 Pair = {
12
- groups: PairGroup[];
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 Group = {
22
- oiLong: number;
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;
@@ -22,8 +22,8 @@ const getClosingFee = (posDai, leverage, pairIndex, pairFee) => {
22
22
  pairFee === undefined) {
23
23
  return 0;
24
24
  }
25
- const { closeFeeP, nftLimitOrderFeeP } = pairFee;
26
- return (closeFeeP + nftLimitOrderFeeP) * posDai * leverage;
25
+ const { closeFeeP, triggerOrderFeeP } = pairFee;
26
+ return (closeFeeP + triggerOrderFeeP) * posDai * leverage;
27
27
  };
28
28
  exports.getClosingFee = getClosingFee;
29
29
  __exportStar(require("./borrowing"), exports);
@@ -1,7 +1,6 @@
1
1
  export * from "./fees";
2
2
  export * from "./pnl";
3
3
  export * from "./spread";
4
- export * from "./openLimitOrder";
5
4
  export * from "./liquidation";
6
5
  export * from "./fees";
7
6
  export * from "./types";
@@ -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, TradeInitialAccFees } from "./types";
3
- export declare const getLiquidationPrice: (trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, context: GetBorrowingFeeContext) => number;
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;
@@ -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
- (posDai * 0.9 -
9
- (0, fees_1.getBorrowingFee)(posDai * trade.leverage, trade.pairIndex, trade.buy, initialAccFees.borrowing, context))) /
10
- posDai /
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.buy
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 posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
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) * posDai;
13
- let pnlDai = trade.buy
14
- ? ((price - openPrice) / openPrice) * leverage * posDai
15
- : ((openPrice - price) / openPrice) * leverage * posDai;
16
- pnlDai = pnlDai > maxGain ? maxGain : pnlDai;
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
- pnlDai -= (0, fees_1.getBorrowingFee)(posDai * trade.leverage, trade.pairIndex, trade.buy, initialAccFees.borrowing, context);
18
+ pnlCollat -= (0, fees_1.getBorrowingFee)(posCollat * trade.leverage, trade.pairIndex, trade.long, initialAccFees, context);
19
19
  }
20
- let pnlPercentage = (pnlDai / posDai) * 100;
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
- pnlDai -= (0, fees_1.getClosingFee)(posDai, trade.leverage, trade.pairIndex, fee);
27
- pnlPercentage = (pnlDai / posDai) * 100;
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
- pnlDai = (posDai * pnlPercentage) / 100;
31
- return [pnlDai, pnlPercentage];
30
+ pnlCollat = (posCollat * pnlPercentage) / 100;
31
+ return [pnlCollat, pnlPercentage];
32
32
  };
33
33
  exports.getPnl = getPnl;
@@ -1,6 +1,4 @@
1
- import { GFarmTradingStorageV5 } from "../contracts/types/generated";
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
- buy: boolean;
14
+ user: string;
18
15
  index: number;
19
- initialPosToken: number;
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
- openInterestDai: number;
29
- slLastUpdated: number;
30
- tokenPriceDai: number;
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
- export type OpenInterest = {
73
- long: number;
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: GFarmTradingStorageV5.TradeStruct;
151
- tradeInfo: GFarmTradingStorageV5.TradeInfoStruct;
152
- tradeData: IGNSTradingCallbacks.TradeDataStruct;
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
- ZEUSUSD = 221,
419
- TNSRUSD = 222,
420
- TAOUSD = 223,
421
- OMNIUSD = 224,
422
- PRCLUSD = 225,
423
- MERLUSD = 226
389
+ TNSRUSD = 221,
390
+ ZEUSUSD = 222
424
391
  }
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PairIndex = exports.OpenLimitOrderType = exports.PositionType = void 0;
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 OpenLimitOrderType;
10
- (function (OpenLimitOrderType) {
11
- OpenLimitOrderType[OpenLimitOrderType["LEGACY"] = 0] = "LEGACY";
12
- OpenLimitOrderType[OpenLimitOrderType["REVERSAL"] = 1] = "REVERSAL";
13
- OpenLimitOrderType[OpenLimitOrderType["MOMENTUM"] = 2] = "MOMENTUM";
14
- })(OpenLimitOrderType = exports.OpenLimitOrderType || (exports.OpenLimitOrderType = {}));
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["ZEUSUSD"] = 221] = "ZEUSUSD";
239
- PairIndex[PairIndex["TNSRUSD"] = 222] = "TNSRUSD";
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 = {}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gainsnetwork/sdk",
3
- "version": "0.1.27-rc3",
3
+ "version": "0.2.0-rc1",
4
4
  "description": "Gains Network SDK",
5
5
  "main": "./lib/index.js",
6
6
  "files": [