@gainsnetwork/sdk 0.0.40 → 0.0.41-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 (119) hide show
  1. package/README.md +11 -11
  2. package/lib/constants.d.ts +174 -174
  3. package/lib/constants.js +186 -186
  4. package/lib/contracts/addresses.d.ts +2 -2
  5. package/lib/contracts/addresses.js +15 -15
  6. package/lib/contracts/addresses.json +35 -35
  7. package/lib/contracts/index.d.ts +6 -6
  8. package/lib/contracts/index.js +35 -35
  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 +1341 -0
  12. package/lib/contracts/types/generated/GNSBorrowingFees.js +2 -0
  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/GNSNftRewardsV6.d.ts +533 -533
  18. package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -2
  19. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -613
  20. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -2
  21. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +911 -911
  22. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +2 -2
  23. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +660 -660
  24. package/lib/contracts/types/generated/GNSPairsStorageV6.js +2 -2
  25. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.d.ts +806 -0
  26. package/lib/contracts/types/generated/GNSTradingCallbacksV6_3_2.js +2 -0
  27. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +821 -821
  28. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +2 -2
  29. package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -557
  30. package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -2
  31. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +1838 -1838
  32. package/lib/contracts/types/generated/GTokenV6_3_2.js +2 -2
  33. package/lib/contracts/types/generated/common.d.ts +22 -22
  34. package/lib/contracts/types/generated/common.js +2 -2
  35. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -83
  36. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -2691
  37. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.d.ts +88 -0
  38. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_3_2__factory.js +1654 -0
  39. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +113 -113
  40. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +1742 -1742
  41. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +128 -0
  42. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +2206 -0
  43. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -100
  44. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -1116
  45. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -100
  46. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -1003
  47. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +98 -98
  48. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +1485 -1485
  49. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +117 -117
  50. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +1265 -1265
  51. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.d.ts +82 -0
  52. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_3_2__factory.js +1273 -0
  53. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +82 -82
  54. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +1326 -1326
  55. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -59
  56. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -765
  57. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +110 -110
  58. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +2682 -2682
  59. package/lib/contracts/types/generated/factories/index.d.ts +9 -9
  60. package/lib/contracts/types/generated/factories/index.js +24 -24
  61. package/lib/contracts/types/generated/index.d.ts +19 -19
  62. package/lib/contracts/types/generated/index.js +45 -45
  63. package/lib/contracts/types/index.d.ts +23 -23
  64. package/lib/contracts/types/index.js +2 -2
  65. package/lib/contracts/utils/borrowingFees.d.ts +8 -8
  66. package/lib/contracts/utils/borrowingFees.js +28 -28
  67. package/lib/contracts/utils/index.d.ts +4 -4
  68. package/lib/contracts/utils/index.js +20 -20
  69. package/lib/contracts/utils/openLimitOrders.d.ts +8 -8
  70. package/lib/contracts/utils/openLimitOrders.js +88 -88
  71. package/lib/contracts/utils/openTrades.d.ts +9 -9
  72. package/lib/contracts/utils/openTrades.js +172 -172
  73. package/lib/contracts/utils/pairs.d.ts +7 -7
  74. package/lib/contracts/utils/pairs.js +115 -115
  75. package/lib/index.d.ts +7 -7
  76. package/lib/index.js +24 -24
  77. package/lib/markets/commodities.d.ts +1 -1
  78. package/lib/markets/commodities.js +31 -31
  79. package/lib/markets/crypto.d.ts +1 -1
  80. package/lib/markets/crypto.js +6 -6
  81. package/lib/markets/forex.d.ts +2 -2
  82. package/lib/markets/forex.js +38 -38
  83. package/lib/markets/index.d.ts +5 -5
  84. package/lib/markets/index.js +21 -21
  85. package/lib/markets/indices.d.ts +1 -1
  86. package/lib/markets/indices.js +6 -6
  87. package/lib/markets/stocks.d.ts +3 -3
  88. package/lib/markets/stocks.js +54 -54
  89. package/lib/trade/fees/borrowing/converter.d.ts +13 -13
  90. package/lib/trade/fees/borrowing/converter.js +41 -41
  91. package/lib/trade/fees/borrowing/index.d.ts +55 -55
  92. package/lib/trade/fees/borrowing/index.js +171 -171
  93. package/lib/trade/fees/borrowing/types.d.ts +36 -36
  94. package/lib/trade/fees/borrowing/types.js +2 -2
  95. package/lib/trade/fees/index.d.ts +16 -16
  96. package/lib/trade/fees/index.js +60 -60
  97. package/lib/trade/index.d.ts +8 -7
  98. package/lib/trade/index.js +24 -23
  99. package/lib/trade/liquidation.d.ts +7 -7
  100. package/lib/trade/liquidation.js +18 -18
  101. package/lib/trade/oiWindows.d.ts +3 -0
  102. package/lib/trade/oiWindows.js +19 -0
  103. package/lib/trade/openLimitOrder.d.ts +2 -2
  104. package/lib/trade/openLimitOrder.js +24 -24
  105. package/lib/trade/pnl.d.ts +9 -9
  106. package/lib/trade/pnl.js +44 -44
  107. package/lib/trade/spread.d.ts +3 -3
  108. package/lib/trade/spread.js +33 -30
  109. package/lib/trade/types.d.ts +185 -176
  110. package/lib/trade/types.js +14 -14
  111. package/lib/utils/index.d.ts +1 -1
  112. package/lib/utils/index.js +17 -17
  113. package/lib/utils/packing.d.ts +2 -2
  114. package/lib/utils/packing.js +39 -39
  115. package/lib/vault/index.d.ts +7 -7
  116. package/lib/vault/index.js +11 -11
  117. package/package.json +104 -104
  118. package/lib/trade/fees.d.ts +0 -15
  119. 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,16 +1,16 @@
1
- import { Fee, OpenInterest, PairFundingFees, PairParams, PairRolloverFees } from "../types";
2
- export declare const getClosingFee: (posDai: number, leverage: number, pairIndex: number, pairFee: Fee | undefined) => number;
3
- export type GetFundingFeeContext = {
4
- currentBlock?: number;
5
- pairParams?: PairParams;
6
- pairFundingFees?: PairFundingFees;
7
- openInterest?: OpenInterest;
8
- };
9
- export declare const getFundingFee: (leveragedPosDai: number, initialAccFundingFees: number, buy: boolean, openedAfterUpdate: boolean, context: GetFundingFeeContext) => number;
10
- export type GetRolloverFeeContext = {
11
- currentBlock?: number;
12
- pairParams?: PairParams;
13
- pairRolloverFees?: PairRolloverFees;
14
- };
15
- export declare const getRolloverFee: (posDai: number, initialAccRolloverFees: number, openedAfterUpdate: boolean, context: GetRolloverFeeContext) => number;
16
- export * from "./borrowing";
1
+ import { Fee, OpenInterest, PairFundingFees, PairParams, PairRolloverFees } from "../types";
2
+ export declare const getClosingFee: (posDai: number, leverage: number, pairIndex: number, pairFee: Fee | undefined) => number;
3
+ export type GetFundingFeeContext = {
4
+ currentBlock?: number;
5
+ pairParams?: PairParams;
6
+ pairFundingFees?: PairFundingFees;
7
+ openInterest?: OpenInterest;
8
+ };
9
+ export declare const getFundingFee: (leveragedPosDai: number, initialAccFundingFees: number, buy: boolean, openedAfterUpdate: boolean, context: GetFundingFeeContext) => number;
10
+ export type GetRolloverFeeContext = {
11
+ currentBlock?: number;
12
+ pairParams?: PairParams;
13
+ pairRolloverFees?: PairRolloverFees;
14
+ };
15
+ export declare const getRolloverFee: (posDai: number, initialAccRolloverFees: number, openedAfterUpdate: boolean, context: GetRolloverFeeContext) => number;
16
+ export * from "./borrowing";
@@ -1,60 +1,60 @@
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.getRolloverFee = exports.getFundingFee = 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
- const getFundingFee = (leveragedPosDai, initialAccFundingFees, buy, openedAfterUpdate, context) => {
30
- const { pairParams, pairFundingFees, openInterest, currentBlock } = context;
31
- if (!currentBlock ||
32
- !openedAfterUpdate ||
33
- pairParams === undefined ||
34
- pairFundingFees === undefined ||
35
- openInterest === undefined)
36
- return 0;
37
- const { accPerOiLong, accPerOiShort, lastUpdateBlock } = pairFundingFees;
38
- const { fundingFeePerBlockP } = pairParams;
39
- const { long: longOi, short: shortOi } = openInterest;
40
- const fundingFeesPaidByLongs = (longOi - shortOi) * fundingFeePerBlockP * (currentBlock - lastUpdateBlock);
41
- const pendingAccFundingFees = buy
42
- ? accPerOiLong + fundingFeesPaidByLongs / longOi
43
- : accPerOiShort + (fundingFeesPaidByLongs * -1) / shortOi;
44
- return leveragedPosDai * (pendingAccFundingFees - initialAccFundingFees);
45
- };
46
- exports.getFundingFee = getFundingFee;
47
- const getRolloverFee = (posDai, initialAccRolloverFees, openedAfterUpdate, context) => {
48
- const { pairParams, pairRolloverFees, currentBlock } = context;
49
- if (!currentBlock ||
50
- !openedAfterUpdate ||
51
- pairParams === undefined ||
52
- pairRolloverFees === undefined)
53
- return 0;
54
- const { accPerCollateral, lastUpdateBlock } = pairRolloverFees;
55
- const { rolloverFeePerBlockP } = pairParams;
56
- const pendingAccRolloverFees = accPerCollateral + (currentBlock - lastUpdateBlock) * rolloverFeePerBlockP;
57
- return posDai * (pendingAccRolloverFees - initialAccRolloverFees);
58
- };
59
- exports.getRolloverFee = getRolloverFee;
60
- __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.getRolloverFee = exports.getFundingFee = 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
+ const getFundingFee = (leveragedPosDai, initialAccFundingFees, buy, openedAfterUpdate, context) => {
30
+ const { pairParams, pairFundingFees, openInterest, currentBlock } = context;
31
+ if (!currentBlock ||
32
+ !openedAfterUpdate ||
33
+ pairParams === undefined ||
34
+ pairFundingFees === undefined ||
35
+ openInterest === undefined)
36
+ return 0;
37
+ const { accPerOiLong, accPerOiShort, lastUpdateBlock } = pairFundingFees;
38
+ const { fundingFeePerBlockP } = pairParams;
39
+ const { long: longOi, short: shortOi } = openInterest;
40
+ const fundingFeesPaidByLongs = (longOi - shortOi) * fundingFeePerBlockP * (currentBlock - lastUpdateBlock);
41
+ const pendingAccFundingFees = buy
42
+ ? accPerOiLong + fundingFeesPaidByLongs / longOi
43
+ : accPerOiShort + (fundingFeesPaidByLongs * -1) / shortOi;
44
+ return leveragedPosDai * (pendingAccFundingFees - initialAccFundingFees);
45
+ };
46
+ exports.getFundingFee = getFundingFee;
47
+ const getRolloverFee = (posDai, initialAccRolloverFees, openedAfterUpdate, context) => {
48
+ const { pairParams, pairRolloverFees, currentBlock } = context;
49
+ if (!currentBlock ||
50
+ !openedAfterUpdate ||
51
+ pairParams === undefined ||
52
+ pairRolloverFees === undefined)
53
+ return 0;
54
+ const { accPerCollateral, lastUpdateBlock } = pairRolloverFees;
55
+ const { rolloverFeePerBlockP } = pairParams;
56
+ const pendingAccRolloverFees = accPerCollateral + (currentBlock - lastUpdateBlock) * rolloverFeePerBlockP;
57
+ return posDai * (pendingAccRolloverFees - initialAccRolloverFees);
58
+ };
59
+ exports.getRolloverFee = getRolloverFee;
60
+ __exportStar(require("./borrowing"), exports);
@@ -1,7 +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";
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,23 +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);
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);