@gainsnetwork/sdk 0.1.4 → 0.1.6

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 (139) hide show
  1. package/README.md +11 -11
  2. package/lib/constants.d.ts +229 -229
  3. package/lib/constants.js +246 -246
  4. package/lib/contracts/addresses.d.ts +3 -3
  5. package/lib/contracts/addresses.js +31 -31
  6. package/lib/contracts/addresses.json +89 -89
  7. package/lib/contracts/index.d.ts +8 -8
  8. package/lib/contracts/index.js +40 -40
  9. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -1911
  10. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -2
  11. package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +1067 -1067
  12. package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -2
  13. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.d.ts +979 -0
  14. package/lib/contracts/types/generated/GNSBorrowingFeesV6_3_2.js +2 -0
  15. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +1058 -1058
  16. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +2 -2
  17. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +1740 -1740
  18. package/lib/contracts/types/generated/GNSMultiCollatDiamond.js +2 -2
  19. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +533 -533
  20. package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -2
  21. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -613
  22. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -2
  23. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +911 -911
  24. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +2 -2
  25. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +660 -660
  26. package/lib/contracts/types/generated/GNSPairsStorageV6.js +2 -2
  27. package/lib/contracts/types/generated/GNSTrading.d.ts +758 -758
  28. package/lib/contracts/types/generated/GNSTrading.js +2 -2
  29. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -875
  30. package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -2
  31. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +806 -0
  32. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.js +2 -0
  33. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +821 -821
  34. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +2 -2
  35. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -1387
  36. package/lib/contracts/types/generated/GNSTradingStorage.js +2 -2
  37. package/lib/contracts/types/generated/GToken.d.ts +1946 -1946
  38. package/lib/contracts/types/generated/GToken.js +2 -2
  39. package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -557
  40. package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -2
  41. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +1838 -1838
  42. package/lib/contracts/types/generated/GTokenV6_3_2.js +2 -2
  43. package/lib/contracts/types/generated/common.d.ts +22 -22
  44. package/lib/contracts/types/generated/common.js +2 -2
  45. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -83
  46. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -2691
  47. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.d.ts +88 -0
  48. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.js +1654 -0
  49. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +113 -113
  50. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +1742 -1742
  51. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +124 -124
  52. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +1784 -1784
  53. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +144 -144
  54. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +3094 -3094
  55. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -100
  56. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -1116
  57. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -100
  58. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -1003
  59. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +98 -98
  60. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +1485 -1485
  61. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +117 -117
  62. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +1265 -1265
  63. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.d.ts +82 -0
  64. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +1273 -0
  65. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +82 -82
  66. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +1326 -1326
  67. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -113
  68. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -1428
  69. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -96
  70. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -2241
  71. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -95
  72. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -1071
  73. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -59
  74. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -765
  75. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +110 -110
  76. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +2682 -2682
  77. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +121 -121
  78. package/lib/contracts/types/generated/factories/GToken__factory.js +2944 -2944
  79. package/lib/contracts/types/generated/factories/index.d.ts +10 -10
  80. package/lib/contracts/types/generated/factories/index.js +26 -26
  81. package/lib/contracts/types/generated/index.d.ts +21 -21
  82. package/lib/contracts/types/generated/index.js +47 -47
  83. package/lib/contracts/types/index.d.ts +27 -27
  84. package/lib/contracts/types/index.js +10 -10
  85. package/lib/contracts/utils/borrowingFees.d.ts +8 -8
  86. package/lib/contracts/utils/borrowingFees.js +28 -28
  87. package/lib/contracts/utils/index.d.ts +4 -4
  88. package/lib/contracts/utils/index.js +20 -20
  89. package/lib/contracts/utils/openLimitOrders.d.ts +8 -8
  90. package/lib/contracts/utils/openLimitOrders.js +88 -88
  91. package/lib/contracts/utils/openTrades.d.ts +9 -9
  92. package/lib/contracts/utils/openTrades.js +188 -188
  93. package/lib/contracts/utils/pairs.d.ts +7 -6
  94. package/lib/contracts/utils/pairs.js +296 -94
  95. package/lib/index.d.ts +7 -7
  96. package/lib/index.js +24 -24
  97. package/lib/markets/commodities.d.ts +1 -1
  98. package/lib/markets/commodities.js +31 -31
  99. package/lib/markets/crypto.d.ts +1 -1
  100. package/lib/markets/crypto.js +6 -6
  101. package/lib/markets/forex.d.ts +2 -2
  102. package/lib/markets/forex.js +38 -38
  103. package/lib/markets/index.d.ts +5 -5
  104. package/lib/markets/index.js +21 -21
  105. package/lib/markets/indices.d.ts +1 -1
  106. package/lib/markets/indices.js +6 -6
  107. package/lib/markets/stocks.d.ts +3 -3
  108. package/lib/markets/stocks.js +54 -54
  109. package/lib/trade/fees/borrowing/converter.d.ts +13 -13
  110. package/lib/trade/fees/borrowing/converter.js +41 -41
  111. package/lib/trade/fees/borrowing/index.d.ts +55 -55
  112. package/lib/trade/fees/borrowing/index.js +171 -171
  113. package/lib/trade/fees/borrowing/types.d.ts +36 -36
  114. package/lib/trade/fees/borrowing/types.js +2 -2
  115. package/lib/trade/fees/index.d.ts +3 -3
  116. package/lib/trade/fees/index.js +29 -29
  117. package/lib/trade/index.d.ts +8 -8
  118. package/lib/trade/index.js +24 -24
  119. package/lib/trade/liquidation.d.ts +3 -3
  120. package/lib/trade/liquidation.js +16 -16
  121. package/lib/trade/oiWindows.d.ts +3 -3
  122. package/lib/trade/oiWindows.js +20 -20
  123. package/lib/trade/openLimitOrder.d.ts +2 -2
  124. package/lib/trade/openLimitOrder.js +23 -23
  125. package/lib/trade/pnl.d.ts +7 -7
  126. package/lib/trade/pnl.js +33 -33
  127. package/lib/trade/spread.d.ts +2 -2
  128. package/lib/trade/spread.js +22 -22
  129. package/lib/trade/types.d.ts +372 -181
  130. package/lib/trade/types.js +208 -14
  131. package/lib/utils/index.d.ts +1 -1
  132. package/lib/utils/index.js +17 -17
  133. package/lib/utils/packing.d.ts +2 -2
  134. package/lib/utils/packing.js +39 -39
  135. package/lib/vault/index.d.ts +8 -8
  136. package/lib/vault/index.js +10 -10
  137. package/package.json +104 -104
  138. package/lib/trade/fees.d.ts +0 -15
  139. package/lib/trade/fees.js +0 -45
@@ -1,171 +1,171 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.BorrowingFee = exports.borrowingFeeUtils = exports.withinMaxGroupOi = exports.getBorrowingFee = void 0;
30
- const getBorrowingFee = (posDai, pairIndex, long, initialAccFees, context) => {
31
- if (!context.groups ||
32
- !context.pairs ||
33
- !context.openInterest ||
34
- !context.pairs[pairIndex]) {
35
- return 0;
36
- }
37
- const { pairs } = context;
38
- const pairGroups = pairs[pairIndex].groups;
39
- const firstPairGroup = (pairGroups === null || pairGroups === void 0 ? void 0 : pairGroups.length) > 0 ? pairGroups[0] : undefined;
40
- let fee = 0;
41
- if (!firstPairGroup || firstPairGroup.block > initialAccFees.block) {
42
- fee =
43
- (!firstPairGroup
44
- ? getPairPendingAccFee(pairIndex, context.currentBlock, long, context)
45
- : long
46
- ? firstPairGroup.pairAccFeeLong
47
- : firstPairGroup.pairAccFeeShort) - initialAccFees.accPairFee;
48
- }
49
- for (let i = pairGroups.length; i > 0; i--) {
50
- const { deltaGroup, deltaPair, beforeTradeOpen } = getPairGroupAccFeesDeltas(i - 1, pairGroups, initialAccFees, pairIndex, long, context);
51
- fee += Math.max(deltaGroup, deltaPair);
52
- if (beforeTradeOpen) {
53
- break;
54
- }
55
- }
56
- return (posDai * fee) / 100;
57
- };
58
- exports.getBorrowingFee = getBorrowingFee;
59
- const withinMaxGroupOi = (pairIndex, long, positionSizeDai, context) => {
60
- const { groups, pairs } = context;
61
- if (!groups || !pairs) {
62
- return false;
63
- }
64
- const g = groups[getPairGroupIndex(pairIndex, { pairs })];
65
- return (g.maxOi == 0 || (long ? g.oiLong : g.oiShort) + positionSizeDai <= g.maxOi);
66
- };
67
- exports.withinMaxGroupOi = withinMaxGroupOi;
68
- const getPairGroupIndex = (pairIndex, context) => {
69
- const { pairs } = context;
70
- if (!pairs[pairIndex]) {
71
- return 0;
72
- }
73
- const pairGroups = pairs[pairIndex].groups;
74
- return pairGroups.length == 0 ? 0 : pairGroups[0].groupIndex;
75
- };
76
- const getPairPendingAccFees = (pairIndex, currentBlock, context) => {
77
- const { pairs, openInterest: { long, short }, } = context;
78
- const pair = pairs[pairIndex];
79
- return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.maxOi, pair.feeExponent);
80
- };
81
- const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
82
- const { accFeeLong, accFeeShort } = getPairPendingAccFees(pairIndex, currentBlock, context);
83
- return long ? accFeeLong : accFeeShort;
84
- };
85
- const getGroupPendingAccFees = (groupIndex, currentBlock, context) => {
86
- const { groups } = context;
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);
89
- };
90
- const getGroupPendingAccFee = (groupIndex, currentBlock, long, context) => {
91
- const { accFeeLong, accFeeShort } = getGroupPendingAccFees(groupIndex, currentBlock, context);
92
- return long ? accFeeLong : accFeeShort;
93
- };
94
- const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long, context) => {
95
- const group = pairGroups[i];
96
- const beforeTradeOpen = group.block < initialFees.block;
97
- let deltaGroup, deltaPair;
98
- if (i == pairGroups.length - 1) {
99
- const { currentBlock, groups, pairs, openInterest } = context;
100
- deltaGroup = getGroupPendingAccFee(group.groupIndex, currentBlock, long, {
101
- groups,
102
- });
103
- deltaPair = getPairPendingAccFee(pairIndex, currentBlock, long, {
104
- pairs,
105
- openInterest: openInterest,
106
- });
107
- }
108
- else {
109
- const nextGroup = pairGroups[i + 1];
110
- if (beforeTradeOpen && nextGroup.block <= initialFees.block) {
111
- return { deltaGroup: 0, deltaPair: 0, beforeTradeOpen };
112
- }
113
- deltaGroup = long
114
- ? nextGroup.prevGroupAccFeeLong
115
- : nextGroup.prevGroupAccFeeShort;
116
- deltaPair = long ? nextGroup.pairAccFeeLong : nextGroup.pairAccFeeShort;
117
- }
118
- if (beforeTradeOpen) {
119
- deltaGroup -= initialFees.accGroupFee;
120
- deltaPair -= initialFees.accPairFee;
121
- }
122
- else {
123
- deltaGroup -= long ? group.initialAccFeeLong : group.initialAccFeeShort;
124
- deltaPair -= long ? group.pairAccFeeLong : group.pairAccFeeShort;
125
- }
126
- return { deltaGroup, deltaPair, beforeTradeOpen };
127
- };
128
- const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, maxOi, feeExponent) => {
129
- const moreShorts = oiLong < oiShort;
130
- const netOi = Math.abs(oiLong - oiShort);
131
- const delta = maxOi > 0 && feeExponent > 0
132
- ? feePerBlock *
133
- (currentBlock - accLastUpdatedBlock) *
134
- Math.pow((netOi / maxOi), feeExponent)
135
- : 0;
136
- const newAccFeeLong = moreShorts ? accFeeLong : accFeeLong + delta;
137
- const newAccFeeShort = moreShorts ? accFeeShort + delta : accFeeShort;
138
- return { accFeeLong: newAccFeeLong, accFeeShort: newAccFeeShort, delta };
139
- };
140
- const getActivePairFeePerBlock = (pair, openInterest) => {
141
- const { long, short } = openInterest;
142
- const netOi = Math.abs(long - short);
143
- return pair.feePerBlock * Math.pow((netOi / pair.maxOi), pair.feeExponent);
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);
152
- if (!group) {
153
- return pairFeePerBlock;
154
- }
155
- const groupFeePerBlock = getActiveGroupFeePerBlock(group);
156
- return Math.max(pairFeePerBlock, groupFeePerBlock);
157
- };
158
- exports.borrowingFeeUtils = {
159
- getPairGroupAccFeesDeltas,
160
- getPairPendingAccFees,
161
- getPairPendingAccFee,
162
- getGroupPendingAccFees,
163
- getGroupPendingAccFee,
164
- getPendingAccFees,
165
- getActivePairFeePerBlock,
166
- getActiveGroupFeePerBlock,
167
- getActiveFeePerBlock,
168
- getPairGroupIndex,
169
- };
170
- exports.BorrowingFee = __importStar(require("./types"));
171
- __exportStar(require("./converter"), 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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.BorrowingFee = exports.borrowingFeeUtils = exports.withinMaxGroupOi = exports.getBorrowingFee = void 0;
30
+ const getBorrowingFee = (posDai, pairIndex, long, initialAccFees, context) => {
31
+ if (!context.groups ||
32
+ !context.pairs ||
33
+ !context.openInterest ||
34
+ !context.pairs[pairIndex]) {
35
+ return 0;
36
+ }
37
+ const { pairs } = context;
38
+ const pairGroups = pairs[pairIndex].groups;
39
+ const firstPairGroup = (pairGroups === null || pairGroups === void 0 ? void 0 : pairGroups.length) > 0 ? pairGroups[0] : undefined;
40
+ let fee = 0;
41
+ if (!firstPairGroup || firstPairGroup.block > initialAccFees.block) {
42
+ fee =
43
+ (!firstPairGroup
44
+ ? getPairPendingAccFee(pairIndex, context.currentBlock, long, context)
45
+ : long
46
+ ? firstPairGroup.pairAccFeeLong
47
+ : firstPairGroup.pairAccFeeShort) - initialAccFees.accPairFee;
48
+ }
49
+ for (let i = pairGroups.length; i > 0; i--) {
50
+ const { deltaGroup, deltaPair, beforeTradeOpen } = getPairGroupAccFeesDeltas(i - 1, pairGroups, initialAccFees, pairIndex, long, context);
51
+ fee += Math.max(deltaGroup, deltaPair);
52
+ if (beforeTradeOpen) {
53
+ break;
54
+ }
55
+ }
56
+ return (posDai * fee) / 100;
57
+ };
58
+ exports.getBorrowingFee = getBorrowingFee;
59
+ const withinMaxGroupOi = (pairIndex, long, positionSizeDai, context) => {
60
+ const { groups, pairs } = context;
61
+ if (!groups || !pairs) {
62
+ return false;
63
+ }
64
+ const g = groups[getPairGroupIndex(pairIndex, { pairs })];
65
+ return (g.maxOi == 0 || (long ? g.oiLong : g.oiShort) + positionSizeDai <= g.maxOi);
66
+ };
67
+ exports.withinMaxGroupOi = withinMaxGroupOi;
68
+ const getPairGroupIndex = (pairIndex, context) => {
69
+ const { pairs } = context;
70
+ if (!pairs[pairIndex]) {
71
+ return 0;
72
+ }
73
+ const pairGroups = pairs[pairIndex].groups;
74
+ return pairGroups.length == 0 ? 0 : pairGroups[0].groupIndex;
75
+ };
76
+ const getPairPendingAccFees = (pairIndex, currentBlock, context) => {
77
+ const { pairs, openInterest: { long, short }, } = context;
78
+ const pair = pairs[pairIndex];
79
+ return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.maxOi, pair.feeExponent);
80
+ };
81
+ const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
82
+ const { accFeeLong, accFeeShort } = getPairPendingAccFees(pairIndex, currentBlock, context);
83
+ return long ? accFeeLong : accFeeShort;
84
+ };
85
+ const getGroupPendingAccFees = (groupIndex, currentBlock, context) => {
86
+ const { groups } = context;
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);
89
+ };
90
+ const getGroupPendingAccFee = (groupIndex, currentBlock, long, context) => {
91
+ const { accFeeLong, accFeeShort } = getGroupPendingAccFees(groupIndex, currentBlock, context);
92
+ return long ? accFeeLong : accFeeShort;
93
+ };
94
+ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long, context) => {
95
+ const group = pairGroups[i];
96
+ const beforeTradeOpen = group.block < initialFees.block;
97
+ let deltaGroup, deltaPair;
98
+ if (i == pairGroups.length - 1) {
99
+ const { currentBlock, groups, pairs, openInterest } = context;
100
+ deltaGroup = getGroupPendingAccFee(group.groupIndex, currentBlock, long, {
101
+ groups,
102
+ });
103
+ deltaPair = getPairPendingAccFee(pairIndex, currentBlock, long, {
104
+ pairs,
105
+ openInterest: openInterest,
106
+ });
107
+ }
108
+ else {
109
+ const nextGroup = pairGroups[i + 1];
110
+ if (beforeTradeOpen && nextGroup.block <= initialFees.block) {
111
+ return { deltaGroup: 0, deltaPair: 0, beforeTradeOpen };
112
+ }
113
+ deltaGroup = long
114
+ ? nextGroup.prevGroupAccFeeLong
115
+ : nextGroup.prevGroupAccFeeShort;
116
+ deltaPair = long ? nextGroup.pairAccFeeLong : nextGroup.pairAccFeeShort;
117
+ }
118
+ if (beforeTradeOpen) {
119
+ deltaGroup -= initialFees.accGroupFee;
120
+ deltaPair -= initialFees.accPairFee;
121
+ }
122
+ else {
123
+ deltaGroup -= long ? group.initialAccFeeLong : group.initialAccFeeShort;
124
+ deltaPair -= long ? group.pairAccFeeLong : group.pairAccFeeShort;
125
+ }
126
+ return { deltaGroup, deltaPair, beforeTradeOpen };
127
+ };
128
+ const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, maxOi, feeExponent) => {
129
+ const moreShorts = oiLong < oiShort;
130
+ const netOi = Math.abs(oiLong - oiShort);
131
+ const delta = maxOi > 0 && feeExponent > 0
132
+ ? feePerBlock *
133
+ (currentBlock - accLastUpdatedBlock) *
134
+ Math.pow((netOi / maxOi), feeExponent)
135
+ : 0;
136
+ const newAccFeeLong = moreShorts ? accFeeLong : accFeeLong + delta;
137
+ const newAccFeeShort = moreShorts ? accFeeShort + delta : accFeeShort;
138
+ return { accFeeLong: newAccFeeLong, accFeeShort: newAccFeeShort, delta };
139
+ };
140
+ const getActivePairFeePerBlock = (pair, openInterest) => {
141
+ const { long, short } = openInterest;
142
+ const netOi = Math.abs(long - short);
143
+ return pair.feePerBlock * Math.pow((netOi / pair.maxOi), pair.feeExponent);
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);
152
+ if (!group) {
153
+ return pairFeePerBlock;
154
+ }
155
+ const groupFeePerBlock = getActiveGroupFeePerBlock(group);
156
+ return Math.max(pairFeePerBlock, groupFeePerBlock);
157
+ };
158
+ exports.borrowingFeeUtils = {
159
+ getPairGroupAccFeesDeltas,
160
+ getPairPendingAccFees,
161
+ getPairPendingAccFee,
162
+ getGroupPendingAccFees,
163
+ getGroupPendingAccFee,
164
+ getPendingAccFees,
165
+ getActivePairFeePerBlock,
166
+ getActiveGroupFeePerBlock,
167
+ getActiveFeePerBlock,
168
+ getPairGroupIndex,
169
+ };
170
+ exports.BorrowingFee = __importStar(require("./types"));
171
+ __exportStar(require("./converter"), exports);
@@ -1,36 +1,36 @@
1
- export type PairGroup = {
2
- groupIndex: number;
3
- initialAccFeeLong: number;
4
- initialAccFeeShort: number;
5
- prevGroupAccFeeLong: number;
6
- prevGroupAccFeeShort: number;
7
- pairAccFeeLong: number;
8
- pairAccFeeShort: number;
9
- block: number;
10
- };
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;
20
- };
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;
31
- };
32
- export type InitialAccFees = {
33
- accPairFee: number;
34
- accGroupFee: number;
35
- block: number;
36
- };
1
+ export type PairGroup = {
2
+ groupIndex: number;
3
+ initialAccFeeLong: number;
4
+ initialAccFeeShort: number;
5
+ prevGroupAccFeeLong: number;
6
+ prevGroupAccFeeShort: number;
7
+ pairAccFeeLong: number;
8
+ pairAccFeeShort: number;
9
+ block: number;
10
+ };
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;
20
+ };
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;
31
+ };
32
+ export type InitialAccFees = {
33
+ accPairFee: number;
34
+ accGroupFee: number;
35
+ block: number;
36
+ };
@@ -1,2 +1,2 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +1,3 @@
1
- import { Fee } from "../types";
2
- export declare const getClosingFee: (posDai: number, leverage: number, pairIndex: number, pairFee: Fee | undefined) => number;
3
- export * from "./borrowing";
1
+ import { Fee, PairIndex } from "../types";
2
+ export declare const getClosingFee: (posDai: number, leverage: number, pairIndex: PairIndex, pairFee: Fee | undefined) => number;
3
+ export * from "./borrowing";
@@ -1,29 +1,29 @@
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
- exports.getClosingFee = void 0;
18
- const getClosingFee = (posDai, leverage, pairIndex, pairFee) => {
19
- if (posDai === undefined ||
20
- leverage === undefined ||
21
- pairIndex === undefined ||
22
- pairFee === undefined) {
23
- return 0;
24
- }
25
- const { closeFeeP, nftLimitOrderFeeP } = pairFee;
26
- return (closeFeeP + nftLimitOrderFeeP) * posDai * leverage;
27
- };
28
- exports.getClosingFee = getClosingFee;
29
- __exportStar(require("./borrowing"), 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
+ exports.getClosingFee = void 0;
18
+ const getClosingFee = (posDai, leverage, pairIndex, pairFee) => {
19
+ if (posDai === undefined ||
20
+ leverage === undefined ||
21
+ pairIndex === undefined ||
22
+ pairFee === undefined) {
23
+ return 0;
24
+ }
25
+ const { closeFeeP, nftLimitOrderFeeP } = pairFee;
26
+ return (closeFeeP + nftLimitOrderFeeP) * posDai * leverage;
27
+ };
28
+ exports.getClosingFee = getClosingFee;
29
+ __exportStar(require("./borrowing"), exports);
@@ -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";
@@ -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;
@@ -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;
@@ -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;
@@ -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;