@gainsnetwork/sdk 0.1.29-rc3 → 0.1.29-rc4

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 (135) hide show
  1. package/README.md +11 -11
  2. package/lib/constants.d.ts +261 -261
  3. package/lib/constants.js +277 -277
  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/GNSMultiCollatDiamond.d.ts +1740 -1740
  14. package/lib/contracts/types/generated/GNSMultiCollatDiamond.js +2 -2
  15. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +533 -533
  16. package/lib/contracts/types/generated/GNSNftRewardsV6.js +2 -2
  17. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +613 -613
  18. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +2 -2
  19. package/lib/contracts/types/generated/GNSTrading.d.ts +758 -758
  20. package/lib/contracts/types/generated/GNSTrading.js +2 -2
  21. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -875
  22. package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -2
  23. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -1387
  24. package/lib/contracts/types/generated/GNSTradingStorage.js +2 -2
  25. package/lib/contracts/types/generated/GToken.d.ts +1946 -1946
  26. package/lib/contracts/types/generated/GToken.js +2 -2
  27. package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -557
  28. package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -2
  29. package/lib/contracts/types/generated/common.d.ts +22 -22
  30. package/lib/contracts/types/generated/common.js +2 -2
  31. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -83
  32. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -2691
  33. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +124 -124
  34. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +1784 -1784
  35. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +144 -144
  36. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +3094 -3094
  37. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -100
  38. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -1116
  39. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -100
  40. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -1003
  41. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -113
  42. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -1428
  43. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -96
  44. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -2241
  45. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -95
  46. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -1071
  47. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -59
  48. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -765
  49. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +121 -121
  50. package/lib/contracts/types/generated/factories/GToken__factory.js +2944 -2944
  51. package/lib/contracts/types/generated/factories/index.d.ts +10 -10
  52. package/lib/contracts/types/generated/factories/index.js +26 -26
  53. package/lib/contracts/types/generated/index.d.ts +21 -21
  54. package/lib/contracts/types/generated/index.js +47 -47
  55. package/lib/contracts/types/index.d.ts +27 -27
  56. package/lib/contracts/types/index.js +10 -10
  57. package/lib/contracts/utils/borrowingFees.d.ts +8 -8
  58. package/lib/contracts/utils/borrowingFees.js +28 -28
  59. package/lib/contracts/utils/index.d.ts +4 -4
  60. package/lib/contracts/utils/index.js +20 -20
  61. package/lib/contracts/utils/openLimitOrders.d.ts +8 -8
  62. package/lib/contracts/utils/openLimitOrders.js +88 -88
  63. package/lib/contracts/utils/openTrades.d.ts +9 -9
  64. package/lib/contracts/utils/openTrades.js +188 -188
  65. package/lib/contracts/utils/pairs.d.ts +7 -7
  66. package/lib/contracts/utils/pairs.js +337 -337
  67. package/lib/index.d.ts +7 -7
  68. package/lib/index.js +24 -24
  69. package/lib/markets/commodities.d.ts +1 -1
  70. package/lib/markets/commodities.js +31 -31
  71. package/lib/markets/crypto.d.ts +1 -1
  72. package/lib/markets/crypto.js +6 -6
  73. package/lib/markets/forex.d.ts +3 -3
  74. package/lib/markets/forex.js +45 -45
  75. package/lib/markets/index.d.ts +5 -5
  76. package/lib/markets/index.js +21 -21
  77. package/lib/markets/indices.d.ts +1 -1
  78. package/lib/markets/indices.js +6 -6
  79. package/lib/markets/stocks.d.ts +3 -3
  80. package/lib/markets/stocks.js +54 -54
  81. package/lib/trade/fees/borrowing/converter.d.ts +13 -13
  82. package/lib/trade/fees/borrowing/converter.js +41 -41
  83. package/lib/trade/fees/borrowing/index.d.ts +55 -55
  84. package/lib/trade/fees/borrowing/index.js +171 -171
  85. package/lib/trade/fees/borrowing/types.d.ts +36 -36
  86. package/lib/trade/fees/borrowing/types.js +2 -2
  87. package/lib/trade/fees/index.d.ts +4 -4
  88. package/lib/trade/fees/index.js +30 -30
  89. package/lib/trade/fees/tiers/index.d.ts +12 -12
  90. package/lib/trade/fees/tiers/index.js +51 -51
  91. package/lib/trade/fees/tiers/types.d.ts +8 -8
  92. package/lib/trade/fees/tiers/types.js +2 -2
  93. package/lib/trade/index.d.ts +8 -8
  94. package/lib/trade/index.js +24 -24
  95. package/lib/trade/liquidation.d.ts +3 -3
  96. package/lib/trade/liquidation.js +16 -16
  97. package/lib/trade/oiWindows.d.ts +3 -3
  98. package/lib/trade/oiWindows.js +20 -20
  99. package/lib/trade/openLimitOrder.d.ts +2 -2
  100. package/lib/trade/openLimitOrder.js +23 -23
  101. package/lib/trade/pnl.d.ts +7 -7
  102. package/lib/trade/pnl.js +33 -33
  103. package/lib/trade/spread.d.ts +2 -2
  104. package/lib/trade/spread.js +22 -22
  105. package/lib/trade/types.d.ts +429 -429
  106. package/lib/trade/types.js +249 -249
  107. package/lib/utils/index.d.ts +1 -1
  108. package/lib/utils/index.js +17 -17
  109. package/lib/utils/packing.d.ts +2 -2
  110. package/lib/utils/packing.js +39 -39
  111. package/lib/vault/index.d.ts +8 -8
  112. package/lib/vault/index.js +10 -10
  113. package/package.json +105 -105
  114. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +0 -1058
  115. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +0 -2
  116. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +0 -911
  117. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +0 -2
  118. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +0 -660
  119. package/lib/contracts/types/generated/GNSPairsStorageV6.js +0 -2
  120. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +0 -821
  121. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +0 -2
  122. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +0 -1838
  123. package/lib/contracts/types/generated/GTokenV6_3_2.js +0 -2
  124. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +0 -113
  125. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +0 -1742
  126. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +0 -98
  127. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +0 -1485
  128. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +0 -117
  129. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +0 -1265
  130. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +0 -82
  131. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +0 -1326
  132. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +0 -110
  133. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +0 -2682
  134. package/lib/trade/fees.d.ts +0 -15
  135. package/lib/trade/fees.js +0 -45
@@ -1,55 +1,55 @@
1
- import { OpenInterest, PairIndex } from "../../types";
2
- import * as BorrowingFee from "./types";
3
- export type GetBorrowingFeeContext = {
4
- currentBlock: number;
5
- groups: BorrowingFee.Group[];
6
- pairs: BorrowingFee.Pair[];
7
- openInterest: OpenInterest;
8
- };
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: {
11
- groups: BorrowingFee.Group[];
12
- pairs: BorrowingFee.Pair[];
13
- }) => boolean;
14
- export declare const borrowingFeeUtils: {
15
- getPairGroupAccFeesDeltas: (i: number, pairGroups: BorrowingFee.PairGroup[], initialFees: BorrowingFee.InitialAccFees, pairIndex: PairIndex, long: boolean, context: GetBorrowingFeeContext) => {
16
- deltaGroup: number;
17
- deltaPair: number;
18
- beforeTradeOpen: boolean;
19
- };
20
- getPairPendingAccFees: (pairIndex: PairIndex, currentBlock: number, context: {
21
- pairs: BorrowingFee.Pair[];
22
- openInterest: OpenInterest;
23
- }) => {
24
- accFeeLong: number;
25
- accFeeShort: number;
26
- delta: number;
27
- };
28
- getPairPendingAccFee: (pairIndex: PairIndex, currentBlock: number, long: boolean, context: {
29
- pairs: BorrowingFee.Pair[];
30
- openInterest: OpenInterest;
31
- }) => number;
32
- getGroupPendingAccFees: (groupIndex: number, currentBlock: number, context: {
33
- groups: BorrowingFee.Group[];
34
- }) => {
35
- accFeeLong: number;
36
- accFeeShort: number;
37
- delta: number;
38
- };
39
- getGroupPendingAccFee: (groupIndex: number, currentBlock: number, long: boolean, context: {
40
- groups: BorrowingFee.Group[];
41
- }) => number;
42
- getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number, maxOi: number, feeExponent: number) => {
43
- accFeeLong: number;
44
- accFeeShort: number;
45
- delta: number;
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;
50
- getPairGroupIndex: (pairIndex: PairIndex, context: {
51
- pairs: BorrowingFee.Pair[];
52
- }) => number;
53
- };
54
- export * as BorrowingFee from "./types";
55
- export * from "./converter";
1
+ import { OpenInterest, PairIndex } from "../../types";
2
+ import * as BorrowingFee from "./types";
3
+ export type GetBorrowingFeeContext = {
4
+ currentBlock: number;
5
+ groups: BorrowingFee.Group[];
6
+ pairs: BorrowingFee.Pair[];
7
+ openInterest: OpenInterest;
8
+ };
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: {
11
+ groups: BorrowingFee.Group[];
12
+ pairs: BorrowingFee.Pair[];
13
+ }) => boolean;
14
+ export declare const borrowingFeeUtils: {
15
+ getPairGroupAccFeesDeltas: (i: number, pairGroups: BorrowingFee.PairGroup[], initialFees: BorrowingFee.InitialAccFees, pairIndex: PairIndex, long: boolean, context: GetBorrowingFeeContext) => {
16
+ deltaGroup: number;
17
+ deltaPair: number;
18
+ beforeTradeOpen: boolean;
19
+ };
20
+ getPairPendingAccFees: (pairIndex: PairIndex, currentBlock: number, context: {
21
+ pairs: BorrowingFee.Pair[];
22
+ openInterest: OpenInterest;
23
+ }) => {
24
+ accFeeLong: number;
25
+ accFeeShort: number;
26
+ delta: number;
27
+ };
28
+ getPairPendingAccFee: (pairIndex: PairIndex, currentBlock: number, long: boolean, context: {
29
+ pairs: BorrowingFee.Pair[];
30
+ openInterest: OpenInterest;
31
+ }) => number;
32
+ getGroupPendingAccFees: (groupIndex: number, currentBlock: number, context: {
33
+ groups: BorrowingFee.Group[];
34
+ }) => {
35
+ accFeeLong: number;
36
+ accFeeShort: number;
37
+ delta: number;
38
+ };
39
+ getGroupPendingAccFee: (groupIndex: number, currentBlock: number, long: boolean, context: {
40
+ groups: BorrowingFee.Group[];
41
+ }) => number;
42
+ getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number, maxOi: number, feeExponent: number) => {
43
+ accFeeLong: number;
44
+ accFeeShort: number;
45
+ delta: number;
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;
50
+ getPairGroupIndex: (pairIndex: PairIndex, context: {
51
+ pairs: BorrowingFee.Pair[];
52
+ }) => number;
53
+ };
54
+ export * as BorrowingFee from "./types";
55
+ export * from "./converter";
@@ -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,4 +1,4 @@
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";
4
- export * from "./tiers";
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";
4
+ export * from "./tiers";
@@ -1,30 +1,30 @@
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);
30
- __exportStar(require("./tiers"), 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);
30
+ __exportStar(require("./tiers"), exports);
@@ -1,12 +1,12 @@
1
- import { FeeTiers, TraderFeeTiers } from "../../types";
2
- import { FeeTier } from "./types";
3
- export declare const TRAILING_PERIOD_DAYS = 30;
4
- export declare const FEE_MULTIPLIER_SCALE = 1;
5
- export declare const MAX_FEE_TIERS = 8;
6
- export declare const getCurrentDay: () => number;
7
- export declare const getFeeTiersCount: (feeTiers: FeeTier[]) => number;
8
- export declare const getFeeMultiplier: (trailingPoints: number, tiers: FeeTier[]) => number;
9
- export declare const computeFeeMultiplier: (feeTiers: FeeTiers, traderFeeTiers: TraderFeeTiers) => {
10
- feeMultiplier: number;
11
- trailingPoints: number;
12
- };
1
+ import { FeeTiers, TraderFeeTiers } from "../../types";
2
+ import { FeeTier } from "./types";
3
+ export declare const TRAILING_PERIOD_DAYS = 30;
4
+ export declare const FEE_MULTIPLIER_SCALE = 1;
5
+ export declare const MAX_FEE_TIERS = 8;
6
+ export declare const getCurrentDay: () => number;
7
+ export declare const getFeeTiersCount: (feeTiers: FeeTier[]) => number;
8
+ export declare const getFeeMultiplier: (trailingPoints: number, tiers: FeeTier[]) => number;
9
+ export declare const computeFeeMultiplier: (feeTiers: FeeTiers, traderFeeTiers: TraderFeeTiers) => {
10
+ feeMultiplier: number;
11
+ trailingPoints: number;
12
+ };