@gainsnetwork/sdk 0.0.5-rc.2 → 0.0.5

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 (67) hide show
  1. package/README.md +11 -11
  2. package/lib/contracts/addresses.d.ts +2 -2
  3. package/lib/contracts/addresses.js +15 -15
  4. package/lib/contracts/addresses.json +17 -17
  5. package/lib/contracts/index.d.ts +6 -6
  6. package/lib/contracts/index.js +30 -30
  7. package/lib/contracts/types/generated/GFarmTradingStorageV5.d.ts +1911 -1911
  8. package/lib/contracts/types/generated/GFarmTradingStorageV5.js +2 -2
  9. package/lib/contracts/types/generated/GNSPairInfosV6_1.d.ts +911 -911
  10. package/lib/contracts/types/generated/GNSPairInfosV6_1.js +2 -2
  11. package/lib/contracts/types/generated/GNSPairsStorageV6.d.ts +660 -660
  12. package/lib/contracts/types/generated/GNSPairsStorageV6.js +2 -2
  13. package/lib/contracts/types/generated/common.d.ts +22 -22
  14. package/lib/contracts/types/generated/common.js +2 -2
  15. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.d.ts +83 -83
  16. package/lib/contracts/types/generated/factories/GFarmTradingStorageV5__factory.js +2691 -2691
  17. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.d.ts +98 -98
  18. package/lib/contracts/types/generated/factories/GNSPairInfosV6_1__factory.js +1485 -1485
  19. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.d.ts +117 -117
  20. package/lib/contracts/types/generated/factories/GNSPairsStorageV6__factory.js +1265 -1265
  21. package/lib/contracts/types/generated/factories/index.d.ts +3 -3
  22. package/lib/contracts/types/generated/factories/index.js +12 -12
  23. package/lib/contracts/types/generated/index.d.ts +7 -7
  24. package/lib/contracts/types/generated/index.js +33 -33
  25. package/lib/contracts/types/index.d.ts +11 -11
  26. package/lib/contracts/types/index.js +2 -2
  27. package/lib/contracts/utils/index.d.ts +2 -2
  28. package/lib/contracts/utils/index.js +18 -18
  29. package/lib/contracts/utils/openTrades.d.ts +3 -3
  30. package/lib/contracts/utils/openTrades.js +116 -116
  31. package/lib/contracts/utils/pairs.d.ts +6 -6
  32. package/lib/contracts/utils/pairs.js +102 -102
  33. package/lib/index.d.ts +2 -3
  34. package/lib/index.js +18 -19
  35. package/lib/trade/fees.d.ts +15 -15
  36. package/lib/trade/fees.js +45 -45
  37. package/lib/trade/index.d.ts +2 -2
  38. package/lib/trade/index.js +18 -18
  39. package/lib/trade/pnl.d.ts +7 -7
  40. package/lib/trade/pnl.js +43 -43
  41. package/lib/trade/types.d.ts +143 -143
  42. package/lib/trade/types.js +8 -8
  43. package/package.json +103 -103
  44. package/lib/contracts/types/GFarmTradingStorageV5.d.ts +0 -1911
  45. package/lib/contracts/types/GFarmTradingStorageV5.js +0 -2
  46. package/lib/contracts/types/GNSPairInfosV6_1.d.ts +0 -911
  47. package/lib/contracts/types/GNSPairInfosV6_1.js +0 -2
  48. package/lib/contracts/types/GNSPairsStorageV6.d.ts +0 -660
  49. package/lib/contracts/types/GNSPairsStorageV6.js +0 -2
  50. package/lib/contracts/types/common.d.ts +0 -22
  51. package/lib/contracts/types/common.js +0 -2
  52. package/lib/contracts/types/factories/GFarmTradingStorageV5__factory.d.ts +0 -83
  53. package/lib/contracts/types/factories/GFarmTradingStorageV5__factory.js +0 -2691
  54. package/lib/contracts/types/factories/GNSPairInfosV6_1__factory.d.ts +0 -98
  55. package/lib/contracts/types/factories/GNSPairInfosV6_1__factory.js +0 -1485
  56. package/lib/contracts/types/factories/GNSPairsStorageV6__factory.d.ts +0 -117
  57. package/lib/contracts/types/factories/GNSPairsStorageV6__factory.js +0 -1265
  58. package/lib/contracts/types/factories/index.d.ts +0 -3
  59. package/lib/contracts/types/factories/index.js +0 -12
  60. package/lib/markets/crypto.d.ts +0 -1
  61. package/lib/markets/crypto.js +0 -6
  62. package/lib/markets/forex.d.ts +0 -1
  63. package/lib/markets/forex.js +0 -29
  64. package/lib/markets/index.d.ts +0 -3
  65. package/lib/markets/index.js +0 -19
  66. package/lib/markets/stocks.d.ts +0 -1
  67. package/lib/markets/stocks.js +0 -50
@@ -1,102 +1,102 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.fetchFees = exports.fetchPairsRolloverFees = exports.fetchPairsParams = exports.fetchPairs = void 0;
13
- const fetchPairs = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
14
- if (!contracts) {
15
- return [];
16
- }
17
- const { gnsPairsStorageV6: pairsStorageContract } = contracts;
18
- try {
19
- const pairs = yield Promise.all(pairIxs.map((pairIndex) => pairsStorageContract.pairs(pairIndex)));
20
- return pairs.map((pair, index) => {
21
- return {
22
- name: pair.from + "/" + pair.to,
23
- from: pair.from,
24
- to: pair.to,
25
- feeIndex: parseInt(pair.feeIndex.toString()),
26
- groupIndex: parseInt(pair.groupIndex.toString()),
27
- pairIndex: pairIxs[index],
28
- spreadP: parseFloat(pair.spreadP.toString()) / 1e12,
29
- };
30
- });
31
- }
32
- catch (error) {
33
- console.error(`Unexpected error while fetching pairs!`);
34
- throw error;
35
- }
36
- });
37
- exports.fetchPairs = fetchPairs;
38
- const fetchPairsParams = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
39
- if (!contracts) {
40
- return [];
41
- }
42
- const { gnsPairInfosV6_1: pairInfosContract } = contracts;
43
- try {
44
- const pairParams = yield Promise.all(pairIxs.map((pairIndex) => pairInfosContract.pairParams(pairIndex)));
45
- return pairParams.map((pair) => {
46
- return {
47
- onePercentDepthAbove: parseFloat(pair.onePercentDepthAbove.toString()),
48
- onePercentDepthBelow: parseFloat(pair.onePercentDepthBelow.toString()),
49
- rolloverFeePerBlockP: parseFloat(pair.rolloverFeePerBlockP.toString()) / 1e12,
50
- fundingFeePerBlockP: parseFloat(pair.fundingFeePerBlockP.toString()) / 1e12,
51
- };
52
- });
53
- }
54
- catch (error) {
55
- console.error(`Unexpected error while fetching pairs!`);
56
- throw error;
57
- }
58
- });
59
- exports.fetchPairsParams = fetchPairsParams;
60
- const fetchPairsRolloverFees = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
61
- if (!contracts) {
62
- return [];
63
- }
64
- const { gnsPairInfosV6_1: pairInfosContract } = contracts;
65
- try {
66
- const pairsRolloverFees = yield Promise.all(pairIxs.map((pairIndex) => pairInfosContract.pairRolloverFees(pairIndex)));
67
- return pairsRolloverFees.map((pairData) => {
68
- return {
69
- accPerCollateral: parseFloat(pairData.accPerCollateral.toString()) / 1e18,
70
- lastUpdateBlock: parseInt(pairData.lastUpdateBlock.toString()),
71
- };
72
- });
73
- }
74
- catch (error) {
75
- console.error(`Unexpected error while fetching pairs!`);
76
- throw error;
77
- }
78
- });
79
- exports.fetchPairsRolloverFees = fetchPairsRolloverFees;
80
- const fetchFees = (contracts, feeIxs) => __awaiter(void 0, void 0, void 0, function* () {
81
- if (!contracts) {
82
- return [];
83
- }
84
- const { gnsPairsStorageV6: pairsStorageContract } = contracts;
85
- try {
86
- const fees = yield Promise.all(feeIxs.map((pairIndex) => pairsStorageContract.fees(pairIndex)));
87
- return fees.map((fee) => {
88
- return {
89
- closeFeeP: parseFloat(fee.closeFeeP.toString()) / 1e12,
90
- minLevPosDai: parseFloat(fee.minLevPosDai.toString()) / 1e12,
91
- nftLimitOrderFeeP: parseFloat(fee.nftLimitOrderFeeP.toString()) / 1e12,
92
- openFeeP: parseFloat(fee.openFeeP.toString()) / 1e12,
93
- referralFeeP: parseFloat(fee.referralFeeP.toString()) / 1e12,
94
- };
95
- });
96
- }
97
- catch (error) {
98
- console.error(`Unexpected error while fetching pairs!`);
99
- throw error;
100
- }
101
- });
102
- exports.fetchFees = fetchFees;
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.fetchFees = exports.fetchPairsRolloverFees = exports.fetchPairsParams = exports.fetchPairs = void 0;
13
+ const fetchPairs = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
14
+ if (!contracts) {
15
+ return [];
16
+ }
17
+ const { gnsPairsStorageV6: pairsStorageContract } = contracts;
18
+ try {
19
+ const pairs = yield Promise.all(pairIxs.map((pairIndex) => pairsStorageContract.pairs(pairIndex)));
20
+ return pairs.map((pair, index) => {
21
+ return {
22
+ name: pair.from + "/" + pair.to,
23
+ from: pair.from,
24
+ to: pair.to,
25
+ feeIndex: parseInt(pair.feeIndex.toString()),
26
+ groupIndex: parseInt(pair.groupIndex.toString()),
27
+ pairIndex: pairIxs[index],
28
+ spreadP: parseFloat(pair.spreadP.toString()) / 1e12,
29
+ };
30
+ });
31
+ }
32
+ catch (error) {
33
+ console.error(`Unexpected error while fetching pairs!`);
34
+ throw error;
35
+ }
36
+ });
37
+ exports.fetchPairs = fetchPairs;
38
+ const fetchPairsParams = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
39
+ if (!contracts) {
40
+ return [];
41
+ }
42
+ const { gnsPairInfosV6_1: pairInfosContract } = contracts;
43
+ try {
44
+ const pairParams = yield Promise.all(pairIxs.map((pairIndex) => pairInfosContract.pairParams(pairIndex)));
45
+ return pairParams.map((pair) => {
46
+ return {
47
+ onePercentDepthAbove: parseFloat(pair.onePercentDepthAbove.toString()),
48
+ onePercentDepthBelow: parseFloat(pair.onePercentDepthBelow.toString()),
49
+ rolloverFeePerBlockP: parseFloat(pair.rolloverFeePerBlockP.toString()) / 1e12,
50
+ fundingFeePerBlockP: parseFloat(pair.fundingFeePerBlockP.toString()) / 1e12,
51
+ };
52
+ });
53
+ }
54
+ catch (error) {
55
+ console.error(`Unexpected error while fetching pairs!`);
56
+ throw error;
57
+ }
58
+ });
59
+ exports.fetchPairsParams = fetchPairsParams;
60
+ const fetchPairsRolloverFees = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
61
+ if (!contracts) {
62
+ return [];
63
+ }
64
+ const { gnsPairInfosV6_1: pairInfosContract } = contracts;
65
+ try {
66
+ const pairsRolloverFees = yield Promise.all(pairIxs.map((pairIndex) => pairInfosContract.pairRolloverFees(pairIndex)));
67
+ return pairsRolloverFees.map((pairData) => {
68
+ return {
69
+ accPerCollateral: parseFloat(pairData.accPerCollateral.toString()) / 1e18,
70
+ lastUpdateBlock: parseInt(pairData.lastUpdateBlock.toString()),
71
+ };
72
+ });
73
+ }
74
+ catch (error) {
75
+ console.error(`Unexpected error while fetching pairs!`);
76
+ throw error;
77
+ }
78
+ });
79
+ exports.fetchPairsRolloverFees = fetchPairsRolloverFees;
80
+ const fetchFees = (contracts, feeIxs) => __awaiter(void 0, void 0, void 0, function* () {
81
+ if (!contracts) {
82
+ return [];
83
+ }
84
+ const { gnsPairsStorageV6: pairsStorageContract } = contracts;
85
+ try {
86
+ const fees = yield Promise.all(feeIxs.map((pairIndex) => pairsStorageContract.fees(pairIndex)));
87
+ return fees.map((fee) => {
88
+ return {
89
+ closeFeeP: parseFloat(fee.closeFeeP.toString()) / 1e12,
90
+ minLevPosDai: parseFloat(fee.minLevPosDai.toString()) / 1e12,
91
+ nftLimitOrderFeeP: parseFloat(fee.nftLimitOrderFeeP.toString()) / 1e12,
92
+ openFeeP: parseFloat(fee.openFeeP.toString()) / 1e12,
93
+ referralFeeP: parseFloat(fee.referralFeeP.toString()) / 1e12,
94
+ };
95
+ });
96
+ }
97
+ catch (error) {
98
+ console.error(`Unexpected error while fetching pairs!`);
99
+ throw error;
100
+ }
101
+ });
102
+ exports.fetchFees = fetchFees;
package/lib/index.d.ts CHANGED
@@ -1,3 +1,2 @@
1
- export * from "./trade";
2
- export * from "./contracts";
3
- export * from "./markets";
1
+ export * from "./trade";
2
+ export * from "./contracts";
package/lib/index.js CHANGED
@@ -1,19 +1,18 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./trade"), exports);
18
- __exportStar(require("./contracts"), exports);
19
- __exportStar(require("./markets"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./trade"), exports);
18
+ __exportStar(require("./contracts"), exports);
@@ -1,15 +1,15 @@
1
- import { Fee, OpenInterest, PairFundingFees, PairParams, PairRolloverFees } from "./types";
2
- export declare const getClosingFee: (posDai: number, leverage: number, pairIndex: number, pairFee: Fee | undefined) => number;
3
- export type GetFundingFeeContext = {
4
- currentBlock?: number;
5
- pairParams?: PairParams;
6
- pairFundingFees?: PairFundingFees;
7
- openInterest?: OpenInterest;
8
- };
9
- export declare const getFundingFee: (leveragedPosDai: number, initialAccFundingFees: number, buy: boolean, openedAfterUpdate: boolean, context: GetFundingFeeContext) => number;
10
- export type GetRolloverFeeContext = {
11
- currentBlock?: number;
12
- pairParams?: PairParams;
13
- pairRolloverFees?: PairRolloverFees;
14
- };
15
- export declare const getRolloverFee: (posDai: number, initialAccRolloverFees: number, openedAfterUpdate: boolean, context: GetRolloverFeeContext) => number;
1
+ import { Fee, OpenInterest, PairFundingFees, PairParams, PairRolloverFees } from "./types";
2
+ export declare const getClosingFee: (posDai: number, leverage: number, pairIndex: number, pairFee: Fee | undefined) => number;
3
+ export type GetFundingFeeContext = {
4
+ currentBlock?: number;
5
+ pairParams?: PairParams;
6
+ pairFundingFees?: PairFundingFees;
7
+ openInterest?: OpenInterest;
8
+ };
9
+ export declare const getFundingFee: (leveragedPosDai: number, initialAccFundingFees: number, buy: boolean, openedAfterUpdate: boolean, context: GetFundingFeeContext) => number;
10
+ export type GetRolloverFeeContext = {
11
+ currentBlock?: number;
12
+ pairParams?: PairParams;
13
+ pairRolloverFees?: PairRolloverFees;
14
+ };
15
+ export declare const getRolloverFee: (posDai: number, initialAccRolloverFees: number, openedAfterUpdate: boolean, context: GetRolloverFeeContext) => number;
package/lib/trade/fees.js CHANGED
@@ -1,45 +1,45 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getRolloverFee = exports.getFundingFee = exports.getClosingFee = void 0;
4
- const getClosingFee = (posDai, leverage, pairIndex, pairFee) => {
5
- if (posDai === undefined ||
6
- leverage === undefined ||
7
- pairIndex === undefined ||
8
- pairFee === undefined) {
9
- return 0;
10
- }
11
- const { closeFeeP, nftLimitOrderFeeP } = pairFee;
12
- return (closeFeeP + nftLimitOrderFeeP) * posDai * leverage;
13
- };
14
- exports.getClosingFee = getClosingFee;
15
- const getFundingFee = (leveragedPosDai, initialAccFundingFees, buy, openedAfterUpdate, context) => {
16
- const { pairParams, pairFundingFees, openInterest, currentBlock } = context;
17
- if (!currentBlock ||
18
- !openedAfterUpdate ||
19
- pairParams === undefined ||
20
- pairFundingFees === undefined ||
21
- openInterest === undefined)
22
- return 0;
23
- const { accPerOiLong, accPerOiShort, lastUpdateBlock } = pairFundingFees;
24
- const { fundingFeePerBlockP } = pairParams;
25
- const { long: longOi, short: shortOi } = openInterest;
26
- const fundingFeesPaidByLongs = (longOi - shortOi) * fundingFeePerBlockP * (currentBlock - lastUpdateBlock);
27
- const pendingAccFundingFees = buy
28
- ? accPerOiLong + fundingFeesPaidByLongs / longOi
29
- : accPerOiShort + (fundingFeesPaidByLongs * -1) / shortOi;
30
- return leveragedPosDai * (pendingAccFundingFees - initialAccFundingFees);
31
- };
32
- exports.getFundingFee = getFundingFee;
33
- const getRolloverFee = (posDai, initialAccRolloverFees, openedAfterUpdate, context) => {
34
- const { pairParams, pairRolloverFees, currentBlock } = context;
35
- if (!currentBlock ||
36
- !openedAfterUpdate ||
37
- pairParams === undefined ||
38
- pairRolloverFees === undefined)
39
- return 0;
40
- const { accPerCollateral, lastUpdateBlock } = pairRolloverFees;
41
- const { rolloverFeePerBlockP } = pairParams;
42
- const pendingAccRolloverFees = accPerCollateral + (currentBlock - lastUpdateBlock) * rolloverFeePerBlockP;
43
- return posDai * (pendingAccRolloverFees - initialAccRolloverFees);
44
- };
45
- exports.getRolloverFee = getRolloverFee;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRolloverFee = exports.getFundingFee = exports.getClosingFee = void 0;
4
+ const getClosingFee = (posDai, leverage, pairIndex, pairFee) => {
5
+ if (posDai === undefined ||
6
+ leverage === undefined ||
7
+ pairIndex === undefined ||
8
+ pairFee === undefined) {
9
+ return 0;
10
+ }
11
+ const { closeFeeP, nftLimitOrderFeeP } = pairFee;
12
+ return (closeFeeP + nftLimitOrderFeeP) * posDai * leverage;
13
+ };
14
+ exports.getClosingFee = getClosingFee;
15
+ const getFundingFee = (leveragedPosDai, initialAccFundingFees, buy, openedAfterUpdate, context) => {
16
+ const { pairParams, pairFundingFees, openInterest, currentBlock } = context;
17
+ if (!currentBlock ||
18
+ !openedAfterUpdate ||
19
+ pairParams === undefined ||
20
+ pairFundingFees === undefined ||
21
+ openInterest === undefined)
22
+ return 0;
23
+ const { accPerOiLong, accPerOiShort, lastUpdateBlock } = pairFundingFees;
24
+ const { fundingFeePerBlockP } = pairParams;
25
+ const { long: longOi, short: shortOi } = openInterest;
26
+ const fundingFeesPaidByLongs = (longOi - shortOi) * fundingFeePerBlockP * (currentBlock - lastUpdateBlock);
27
+ const pendingAccFundingFees = buy
28
+ ? accPerOiLong + fundingFeesPaidByLongs / longOi
29
+ : accPerOiShort + (fundingFeesPaidByLongs * -1) / shortOi;
30
+ return leveragedPosDai * (pendingAccFundingFees - initialAccFundingFees);
31
+ };
32
+ exports.getFundingFee = getFundingFee;
33
+ const getRolloverFee = (posDai, initialAccRolloverFees, openedAfterUpdate, context) => {
34
+ const { pairParams, pairRolloverFees, currentBlock } = context;
35
+ if (!currentBlock ||
36
+ !openedAfterUpdate ||
37
+ pairParams === undefined ||
38
+ pairRolloverFees === undefined)
39
+ return 0;
40
+ const { accPerCollateral, lastUpdateBlock } = pairRolloverFees;
41
+ const { rolloverFeePerBlockP } = pairParams;
42
+ const pendingAccRolloverFees = accPerCollateral + (currentBlock - lastUpdateBlock) * rolloverFeePerBlockP;
43
+ return posDai * (pendingAccRolloverFees - initialAccRolloverFees);
44
+ };
45
+ exports.getRolloverFee = getRolloverFee;
@@ -1,2 +1,2 @@
1
- export * from "./fees";
2
- export * from "./pnl";
1
+ export * from "./fees";
2
+ export * from "./pnl";
@@ -1,18 +1,18 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./fees"), exports);
18
- __exportStar(require("./pnl"), exports);
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./fees"), exports);
18
+ __exportStar(require("./pnl"), exports);
@@ -1,7 +1,7 @@
1
- import { GetFundingFeeContext, GetRolloverFeeContext } from "./fees";
2
- import { Fee, Trade, TradeInfo, TradeInitialAccFees } from "./types";
3
- export type GetPnlContext = {
4
- fee: Fee | undefined;
5
- maxGainP: number | undefined;
6
- } & GetRolloverFeeContext & GetFundingFeeContext;
7
- export declare const getPnl: (price: number | undefined, trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, useFees: boolean, context: GetPnlContext) => number[] | undefined;
1
+ import { GetFundingFeeContext, GetRolloverFeeContext } from "./fees";
2
+ import { Fee, Trade, TradeInfo, TradeInitialAccFees } from "./types";
3
+ export type GetPnlContext = {
4
+ fee: Fee | undefined;
5
+ maxGainP: number | undefined;
6
+ } & GetRolloverFeeContext & GetFundingFeeContext;
7
+ export declare const getPnl: (price: number | undefined, trade: Trade, tradeInfo: TradeInfo, initialAccFees: TradeInitialAccFees, useFees: boolean, context: GetPnlContext) => number[] | undefined;
package/lib/trade/pnl.js CHANGED
@@ -1,43 +1,43 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getPnl = void 0;
4
- const fees_1 = require("./fees");
5
- const getPnl = (price, trade, tradeInfo, initialAccFees, useFees, context) => {
6
- if (!price) {
7
- return;
8
- }
9
- const posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
10
- const { openPrice, leverage } = trade;
11
- const { maxGainP, currentBlock, pairParams, pairRolloverFees, pairFundingFees, openInterest, fee, } = context;
12
- const maxGain = maxGainP === undefined ? Infinity : (maxGainP / 100) * posDai;
13
- let pnlDai = trade.buy
14
- ? ((price - openPrice) / openPrice) * leverage * posDai
15
- : ((openPrice - price) / openPrice) * leverage * posDai;
16
- pnlDai = pnlDai > maxGain ? maxGain : pnlDai;
17
- if (useFees) {
18
- pnlDai -= (0, fees_1.getRolloverFee)(posDai, initialAccFees.rollover, initialAccFees.openedAfterUpdate, {
19
- currentBlock,
20
- pairParams,
21
- pairRolloverFees,
22
- });
23
- pnlDai -= (0, fees_1.getFundingFee)(posDai * trade.leverage, initialAccFees.funding, trade.buy, initialAccFees.openedAfterUpdate, {
24
- currentBlock,
25
- pairParams,
26
- pairFundingFees,
27
- openInterest,
28
- });
29
- }
30
- let pnlPercentage = (pnlDai / posDai) * 100;
31
- // Can be liquidated
32
- if (pnlPercentage <= -90) {
33
- pnlPercentage = -100;
34
- }
35
- else {
36
- pnlDai -= (0, fees_1.getClosingFee)(posDai, trade.leverage, trade.pairIndex, fee);
37
- pnlPercentage = (pnlDai / posDai) * 100;
38
- }
39
- pnlPercentage = pnlPercentage < -100 ? -100 : pnlPercentage;
40
- pnlDai = (posDai * pnlPercentage) / 100;
41
- return [pnlDai, pnlPercentage];
42
- };
43
- exports.getPnl = getPnl;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPnl = void 0;
4
+ const fees_1 = require("./fees");
5
+ const getPnl = (price, trade, tradeInfo, initialAccFees, useFees, context) => {
6
+ if (!price) {
7
+ return;
8
+ }
9
+ const posDai = trade.initialPosToken * tradeInfo.tokenPriceDai;
10
+ const { openPrice, leverage } = trade;
11
+ const { maxGainP, currentBlock, pairParams, pairRolloverFees, pairFundingFees, openInterest, fee, } = context;
12
+ const maxGain = maxGainP === undefined ? Infinity : (maxGainP / 100) * posDai;
13
+ let pnlDai = trade.buy
14
+ ? ((price - openPrice) / openPrice) * leverage * posDai
15
+ : ((openPrice - price) / openPrice) * leverage * posDai;
16
+ pnlDai = pnlDai > maxGain ? maxGain : pnlDai;
17
+ if (useFees) {
18
+ pnlDai -= (0, fees_1.getRolloverFee)(posDai, initialAccFees.rollover, initialAccFees.openedAfterUpdate, {
19
+ currentBlock,
20
+ pairParams,
21
+ pairRolloverFees,
22
+ });
23
+ pnlDai -= (0, fees_1.getFundingFee)(posDai * trade.leverage, initialAccFees.funding, trade.buy, initialAccFees.openedAfterUpdate, {
24
+ currentBlock,
25
+ pairParams,
26
+ pairFundingFees,
27
+ openInterest,
28
+ });
29
+ }
30
+ let pnlPercentage = (pnlDai / posDai) * 100;
31
+ // Can be liquidated
32
+ if (pnlPercentage <= -90) {
33
+ pnlPercentage = -100;
34
+ }
35
+ else {
36
+ pnlDai -= (0, fees_1.getClosingFee)(posDai, trade.leverage, trade.pairIndex, fee);
37
+ pnlPercentage = (pnlDai / posDai) * 100;
38
+ }
39
+ pnlPercentage = pnlPercentage < -100 ? -100 : pnlPercentage;
40
+ pnlDai = (posDai * pnlPercentage) / 100;
41
+ return [pnlDai, pnlPercentage];
42
+ };
43
+ exports.getPnl = getPnl;