@gainsnetwork/sdk 0.1.29-rc3 → 0.2.0-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 +252 -261
  3. package/lib/constants.js +269 -277
  4. package/lib/contracts/addresses.d.ts +3 -3
  5. package/lib/contracts/addresses.js +31 -31
  6. package/lib/contracts/addresses.json +53 -89
  7. package/lib/contracts/index.d.ts +8 -8
  8. package/lib/contracts/index.js +37 -40
  9. package/lib/contracts/types/generated/GNSMultiCollatDiamond.d.ts +5215 -1740
  10. package/lib/contracts/types/generated/GNSMultiCollatDiamond.js +2 -2
  11. package/lib/contracts/types/generated/GToken.d.ts +1946 -1946
  12. package/lib/contracts/types/generated/GToken.js +2 -2
  13. package/lib/contracts/types/generated/GTokenOpenPnlFeed.d.ts +557 -557
  14. package/lib/contracts/types/generated/GTokenOpenPnlFeed.js +2 -2
  15. package/lib/contracts/types/generated/common.d.ts +22 -22
  16. package/lib/contracts/types/generated/common.js +2 -2
  17. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.d.ts +291 -144
  18. package/lib/contracts/types/generated/factories/GNSMultiCollatDiamond__factory.js +11360 -3094
  19. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.d.ts +59 -59
  20. package/lib/contracts/types/generated/factories/GTokenOpenPnlFeed__factory.js +765 -765
  21. package/lib/contracts/types/generated/factories/GToken__factory.d.ts +121 -121
  22. package/lib/contracts/types/generated/factories/GToken__factory.js +2944 -2944
  23. package/lib/contracts/types/generated/factories/index.d.ts +3 -10
  24. package/lib/contracts/types/generated/factories/index.js +12 -26
  25. package/lib/contracts/types/generated/index.d.ts +7 -21
  26. package/lib/contracts/types/generated/index.js +33 -47
  27. package/lib/contracts/types/index.d.ts +19 -27
  28. package/lib/contracts/types/index.js +10 -10
  29. package/lib/contracts/utils/borrowingFees.d.ts +8 -8
  30. package/lib/contracts/utils/borrowingFees.js +32 -28
  31. package/lib/contracts/utils/index.d.ts +3 -4
  32. package/lib/contracts/utils/index.js +19 -20
  33. package/lib/contracts/utils/openTrades.d.ts +9 -9
  34. package/lib/contracts/utils/openTrades.js +380 -188
  35. package/lib/contracts/utils/pairs.d.ts +7 -7
  36. package/lib/contracts/utils/pairs.js +339 -337
  37. package/lib/index.d.ts +7 -7
  38. package/lib/index.js +24 -24
  39. package/lib/markets/commodities.d.ts +1 -1
  40. package/lib/markets/commodities.js +31 -31
  41. package/lib/markets/crypto.d.ts +1 -1
  42. package/lib/markets/crypto.js +6 -6
  43. package/lib/markets/forex.d.ts +3 -3
  44. package/lib/markets/forex.js +45 -45
  45. package/lib/markets/index.d.ts +5 -5
  46. package/lib/markets/index.js +21 -21
  47. package/lib/markets/indices.d.ts +1 -1
  48. package/lib/markets/indices.js +6 -6
  49. package/lib/markets/stocks.d.ts +3 -3
  50. package/lib/markets/stocks.js +54 -54
  51. package/lib/trade/fees/borrowing/converter.d.ts +15 -13
  52. package/lib/trade/fees/borrowing/converter.js +35 -41
  53. package/lib/trade/fees/borrowing/index.d.ts +54 -55
  54. package/lib/trade/fees/borrowing/index.js +165 -171
  55. package/lib/trade/fees/borrowing/types.d.ts +30 -36
  56. package/lib/trade/fees/borrowing/types.js +2 -2
  57. package/lib/trade/fees/index.d.ts +4 -4
  58. package/lib/trade/fees/index.js +30 -30
  59. package/lib/trade/fees/tiers/index.d.ts +12 -12
  60. package/lib/trade/fees/tiers/index.js +51 -51
  61. package/lib/trade/fees/tiers/types.d.ts +8 -8
  62. package/lib/trade/fees/tiers/types.js +2 -2
  63. package/lib/trade/index.d.ts +7 -8
  64. package/lib/trade/index.js +23 -24
  65. package/lib/trade/liquidation.d.ts +3 -3
  66. package/lib/trade/liquidation.js +15 -16
  67. package/lib/trade/oiWindows.d.ts +3 -3
  68. package/lib/trade/oiWindows.js +20 -20
  69. package/lib/trade/pnl.d.ts +7 -7
  70. package/lib/trade/pnl.js +33 -33
  71. package/lib/trade/spread.d.ts +2 -2
  72. package/lib/trade/spread.js +22 -22
  73. package/lib/trade/types.d.ts +413 -429
  74. package/lib/trade/types.js +255 -249
  75. package/lib/utils/index.d.ts +1 -1
  76. package/lib/utils/index.js +17 -17
  77. package/lib/utils/packing.d.ts +2 -2
  78. package/lib/utils/packing.js +39 -39
  79. package/lib/vault/index.d.ts +8 -8
  80. package/lib/vault/index.js +10 -10
  81. package/package.json +105 -105
  82. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +0 -1911
  83. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +0 -2
  84. package/lib/contracts/types/generated/GNSBorrowingFees.d.ts +0 -1067
  85. package/lib/contracts/types/generated/GNSBorrowingFees.js +0 -2
  86. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +0 -1058
  87. package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.js +0 -2
  88. package/lib/contracts/types/generated/GNSNftRewardsV6.d.ts +0 -533
  89. package/lib/contracts/types/generated/GNSNftRewardsV6.js +0 -2
  90. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.d.ts +0 -613
  91. package/lib/contracts/types/generated/GNSNftRewardsV6_3_1.js +0 -2
  92. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +0 -911
  93. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +0 -2
  94. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +0 -660
  95. package/lib/contracts/types/generated/GNSPairsStorageV6.js +0 -2
  96. package/lib/contracts/types/generated/GNSTrading.d.ts +0 -758
  97. package/lib/contracts/types/generated/GNSTrading.js +0 -2
  98. package/lib/contracts/types/generated/GNSTradingCallbacks.d.ts +0 -875
  99. package/lib/contracts/types/generated/GNSTradingCallbacks.js +0 -2
  100. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +0 -821
  101. package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +0 -2
  102. package/lib/contracts/types/generated/GNSTradingStorage.d.ts +0 -1387
  103. package/lib/contracts/types/generated/GNSTradingStorage.js +0 -2
  104. package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +0 -1838
  105. package/lib/contracts/types/generated/GTokenV6_3_2.js +0 -2
  106. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +0 -83
  107. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +0 -2691
  108. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +0 -113
  109. package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +0 -1742
  110. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.d.ts +0 -124
  111. package/lib/contracts/types/generated/factories/GNSBorrowingFees__factory.js +0 -1784
  112. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.d.ts +0 -100
  113. package/lib/contracts/types/generated/factories/GNSNftRewardsV6_3_1__factory.js +0 -1116
  114. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.d.ts +0 -100
  115. package/lib/contracts/types/generated/factories/GNSNftRewardsV6__factory.js +0 -1003
  116. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +0 -98
  117. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +0 -1485
  118. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +0 -117
  119. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +0 -1265
  120. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +0 -82
  121. package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +0 -1326
  122. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.d.ts +0 -113
  123. package/lib/contracts/types/generated/factories/GNSTradingCallbacks__factory.js +0 -1428
  124. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.d.ts +0 -96
  125. package/lib/contracts/types/generated/factories/GNSTradingStorage__factory.js +0 -2241
  126. package/lib/contracts/types/generated/factories/GNSTrading__factory.d.ts +0 -95
  127. package/lib/contracts/types/generated/factories/GNSTrading__factory.js +0 -1071
  128. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +0 -110
  129. package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +0 -2682
  130. package/lib/contracts/utils/openLimitOrders.d.ts +0 -8
  131. package/lib/contracts/utils/openLimitOrders.js +0 -88
  132. package/lib/trade/fees.d.ts +0 -15
  133. package/lib/trade/fees.js +0 -45
  134. package/lib/trade/openLimitOrder.d.ts +0 -2
  135. package/lib/trade/openLimitOrder.js +0 -23
@@ -1,55 +1,54 @@
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, positionSizeCollateral: 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
+ getActiveFeePerBlock: (pair: BorrowingFee.Pair, group: BorrowingFee.Group | undefined) => number;
48
+ getBorrowingDataActiveFeePerBlock: (val: BorrowingFee.Pair | BorrowingFee.Group) => number;
49
+ getPairGroupIndex: (pairIndex: PairIndex, context: {
50
+ pairs: BorrowingFee.Pair[];
51
+ }) => number;
52
+ };
53
+ export * as BorrowingFee from "./types";
54
+ export * from "./converter";
@@ -1,171 +1,165 @@
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, positionSizeCollateral, context) => {
60
+ const { groups, pairs } = context;
61
+ if (!groups || !pairs) {
62
+ return false;
63
+ }
64
+ const g = groups[getPairGroupIndex(pairIndex, { pairs })].oi;
65
+ return (g.max == 0 || (long ? g.long : g.short) + positionSizeCollateral <= g.max);
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.oi.max, 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.oi.long, group.oi.short, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, group.oi.max, 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 getBorrowingDataActiveFeePerBlock = (val) => {
141
+ const { long, short, max } = val.oi;
142
+ const netOi = Math.abs(long - short);
143
+ return val.feePerBlock * Math.pow((netOi / max), val.feeExponent);
144
+ };
145
+ const getActiveFeePerBlock = (pair, group) => {
146
+ const pairFeePerBlock = getBorrowingDataActiveFeePerBlock(pair);
147
+ if (!group) {
148
+ return pairFeePerBlock;
149
+ }
150
+ const groupFeePerBlock = getBorrowingDataActiveFeePerBlock(group);
151
+ return Math.max(pairFeePerBlock, groupFeePerBlock);
152
+ };
153
+ exports.borrowingFeeUtils = {
154
+ getPairGroupAccFeesDeltas,
155
+ getPairPendingAccFees,
156
+ getPairPendingAccFee,
157
+ getGroupPendingAccFees,
158
+ getGroupPendingAccFee,
159
+ getPendingAccFees,
160
+ getActiveFeePerBlock,
161
+ getBorrowingDataActiveFeePerBlock,
162
+ getPairGroupIndex,
163
+ };
164
+ exports.BorrowingFee = __importStar(require("./types"));
165
+ __exportStar(require("./converter"), exports);
@@ -1,36 +1,30 @@
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
+ import { OpenInterest } from "../../types";
2
+ export type BorrowingData = {
3
+ feePerBlock: number;
4
+ accFeeLong: number;
5
+ accFeeShort: number;
6
+ accLastUpdatedBlock: number;
7
+ feeExponent: number;
8
+ };
9
+ export type PairGroup = {
10
+ groupIndex: number;
11
+ block: number;
12
+ initialAccFeeLong: number;
13
+ initialAccFeeShort: number;
14
+ prevGroupAccFeeLong: number;
15
+ prevGroupAccFeeShort: number;
16
+ pairAccFeeLong: number;
17
+ pairAccFeeShort: number;
18
+ };
19
+ export type BorrowingOi = {
20
+ oi: OpenInterest;
21
+ };
22
+ export type Pair = BorrowingData & BorrowingOi & {
23
+ groups: PairGroup[];
24
+ };
25
+ export type Group = BorrowingData & BorrowingOi;
26
+ export type InitialAccFees = {
27
+ accPairFee: number;
28
+ accGroupFee: number;
29
+ block: number;
30
+ };
@@ -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, triggerOrderFeeP } = pairFee;
26
+ return (closeFeeP + triggerOrderFeeP) * 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
+ };