@gainsnetwork/sdk 0.1.29-rc2 → 0.1.29-rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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/GNSBorrowingFeesV6_4.d.ts +1058 -0
  14. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +2 -0
  15. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +1740 -1740
  16. package/lib/contracts/types/generated/GNSMultiCollatDiamond.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 -0
  22. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +2 -0
  23. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +660 -0
  24. package/lib/contracts/types/generated/GNSPairsStorageV6.js +2 -0
  25. package/lib/contracts/types/generated/GNSTrading.d.ts +758 -758
  26. package/lib/contracts/types/generated/GNSTrading.js +2 -2
  27. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +875 -875
  28. package/lib/contracts/types/generated/GNSTradingCallbacks.js +2 -2
  29. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +821 -0
  30. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +2 -0
  31. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +1387 -1387
  32. package/lib/contracts/types/generated/GNSTradingStorage.js +2 -2
  33. package/lib/contracts/types/generated/GToken.d.ts +1946 -1946
  34. package/lib/contracts/types/generated/GToken.js +2 -2
  35. package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -557
  36. package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -2
  37. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +1838 -0
  38. package/lib/contracts/types/generated/GTokenV6_3_2.js +2 -0
  39. package/lib/contracts/types/generated/common.d.ts +22 -22
  40. package/lib/contracts/types/generated/common.js +2 -2
  41. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -83
  42. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -2691
  43. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +113 -0
  44. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +1742 -0
  45. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +124 -124
  46. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +1784 -1784
  47. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +144 -144
  48. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +3094 -3094
  49. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +100 -100
  50. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +1116 -1116
  51. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +100 -100
  52. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +1003 -1003
  53. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +98 -0
  54. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +1485 -0
  55. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +117 -0
  56. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +1265 -0
  57. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +82 -0
  58. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +1326 -0
  59. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +113 -113
  60. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +1428 -1428
  61. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +96 -96
  62. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +2241 -2241
  63. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +95 -95
  64. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +1071 -1071
  65. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -59
  66. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -765
  67. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +110 -0
  68. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +2682 -0
  69. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +121 -121
  70. package/lib/contracts/types/generated/factories/GToken__factory.js +2944 -2944
  71. package/lib/contracts/types/generated/factories/index.d.ts +10 -10
  72. package/lib/contracts/types/generated/factories/index.js +26 -26
  73. package/lib/contracts/types/generated/index.d.ts +21 -21
  74. package/lib/contracts/types/generated/index.js +47 -47
  75. package/lib/contracts/types/index.d.ts +27 -27
  76. package/lib/contracts/types/index.js +10 -10
  77. package/lib/contracts/utils/borrowingFees.d.ts +8 -8
  78. package/lib/contracts/utils/borrowingFees.js +28 -28
  79. package/lib/contracts/utils/index.d.ts +4 -4
  80. package/lib/contracts/utils/index.js +20 -20
  81. package/lib/contracts/utils/openLimitOrders.d.ts +8 -8
  82. package/lib/contracts/utils/openLimitOrders.js +88 -88
  83. package/lib/contracts/utils/openTrades.d.ts +9 -9
  84. package/lib/contracts/utils/openTrades.js +188 -188
  85. package/lib/contracts/utils/pairs.d.ts +7 -7
  86. package/lib/contracts/utils/pairs.js +337 -337
  87. package/lib/index.d.ts +7 -7
  88. package/lib/index.js +24 -24
  89. package/lib/markets/commodities.d.ts +1 -1
  90. package/lib/markets/commodities.js +31 -31
  91. package/lib/markets/crypto.d.ts +1 -1
  92. package/lib/markets/crypto.js +6 -6
  93. package/lib/markets/forex.d.ts +3 -3
  94. package/lib/markets/forex.js +45 -45
  95. package/lib/markets/index.d.ts +5 -5
  96. package/lib/markets/index.js +21 -21
  97. package/lib/markets/indices.d.ts +1 -1
  98. package/lib/markets/indices.js +6 -6
  99. package/lib/markets/stocks.d.ts +3 -3
  100. package/lib/markets/stocks.js +54 -54
  101. package/lib/trade/fees/borrowing/converter.d.ts +13 -13
  102. package/lib/trade/fees/borrowing/converter.js +41 -41
  103. package/lib/trade/fees/borrowing/index.d.ts +55 -55
  104. package/lib/trade/fees/borrowing/index.js +171 -171
  105. package/lib/trade/fees/borrowing/types.d.ts +36 -36
  106. package/lib/trade/fees/borrowing/types.js +2 -2
  107. package/lib/trade/fees/index.d.ts +4 -4
  108. package/lib/trade/fees/index.js +30 -30
  109. package/lib/trade/fees/tiers/index.d.ts +12 -12
  110. package/lib/trade/fees/tiers/index.js +51 -51
  111. package/lib/trade/fees/tiers/types.d.ts +8 -8
  112. package/lib/trade/fees/tiers/types.js +2 -2
  113. package/lib/trade/fees.d.ts +15 -0
  114. package/lib/trade/fees.js +45 -0
  115. package/lib/trade/index.d.ts +8 -8
  116. package/lib/trade/index.js +24 -24
  117. package/lib/trade/liquidation.d.ts +3 -3
  118. package/lib/trade/liquidation.js +16 -16
  119. package/lib/trade/oiWindows.d.ts +3 -3
  120. package/lib/trade/oiWindows.js +20 -20
  121. package/lib/trade/openLimitOrder.d.ts +2 -2
  122. package/lib/trade/openLimitOrder.js +23 -23
  123. package/lib/trade/pnl.d.ts +7 -7
  124. package/lib/trade/pnl.js +33 -33
  125. package/lib/trade/spread.d.ts +2 -2
  126. package/lib/trade/spread.js +22 -22
  127. package/lib/trade/types.d.ts +429 -429
  128. package/lib/trade/types.js +249 -249
  129. package/lib/utils/index.d.ts +1 -1
  130. package/lib/utils/index.js +17 -17
  131. package/lib/utils/packing.d.ts +2 -2
  132. package/lib/utils/packing.js +39 -39
  133. package/lib/vault/index.d.ts +8 -8
  134. package/lib/vault/index.js +10 -10
  135. package/package.json +105 -105
@@ -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
+ };