@gainsnetwork/sdk 0.0.29-rc1 → 0.0.30-rc1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/contracts/addresses.json +3 -6
- package/lib/contracts/index.js +2 -3
- package/lib/contracts/types/generated/GNSBorrowingFeesV6_4.d.ts +1058 -0
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.d.ts +821 -0
- package/lib/contracts/types/generated/GNSTradingCallbacksV6_4.js +2 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.d.ts +113 -0
- package/lib/contracts/types/generated/factories/GNSBorrowingFeesV6_4__factory.js +1742 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.d.ts +82 -0
- package/lib/contracts/types/generated/factories/GNSTradingCallbacksV6_4__factory.js +1326 -0
- package/lib/contracts/types/generated/factories/index.d.ts +2 -3
- package/lib/contracts/types/generated/factories/index.js +5 -7
- package/lib/contracts/types/generated/index.d.ts +4 -6
- package/lib/contracts/types/generated/index.js +5 -7
- package/lib/contracts/types/index.d.ts +3 -5
- package/lib/contracts/utils/index.d.ts +0 -1
- package/lib/contracts/utils/index.js +0 -1
- package/lib/contracts/utils/openLimitOrders.js +12 -1
- package/lib/contracts/utils/pairs.d.ts +1 -2
- package/lib/contracts/utils/pairs.js +8 -21
- package/lib/trade/fees/borrowing/index.d.ts +4 -11
- package/lib/trade/fees/borrowing/index.js +24 -35
- package/lib/trade/fees/borrowing/types.d.ts +3 -0
- package/lib/trade/openLimitOrder.js +2 -2
- package/lib/trade/types.d.ts +2 -0
- package/package.json +1 -1
- package/lib/contracts/types/generated/GTokenV6_3_2.d.ts +0 -1838
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.d.ts +0 -110
- package/lib/contracts/types/generated/factories/GTokenV6_3_2__factory.js +0 -2682
- package/lib/contracts/utils/borrowingFees.d.ts +0 -8
- package/lib/contracts/utils/borrowingFees.js +0 -28
- package/lib/trade/fees/borrowing/converter.d.ts +0 -7
- package/lib/trade/fees/borrowing/converter.js +0 -38
- /package/lib/contracts/types/generated/{GTokenV6_3_2.js → GNSBorrowingFeesV6_4.js} +0 -0
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
export { GFarmTradingStorageV5__factory } from "./GFarmTradingStorageV5__factory";
|
|
2
|
-
export {
|
|
2
|
+
export { GNSBorrowingFeesV6_4__factory } from "./GNSBorrowingFeesV6_4__factory";
|
|
3
3
|
export { GNSNftRewardsV6__factory } from "./GNSNftRewardsV6__factory";
|
|
4
4
|
export { GNSNftRewardsV6_3_1__factory } from "./GNSNftRewardsV6_3_1__factory";
|
|
5
5
|
export { GNSPairInfosV6_1__factory } from "./GNSPairInfosV6_1__factory";
|
|
6
6
|
export { GNSPairsStorageV6__factory } from "./GNSPairsStorageV6__factory";
|
|
7
|
-
export {
|
|
7
|
+
export { GNSTradingCallbacksV6_4__factory } from "./GNSTradingCallbacksV6_4__factory";
|
|
8
8
|
export { GTokenOpenPnlFeed__factory } from "./GTokenOpenPnlFeed__factory";
|
|
9
|
-
export { GTokenV6_3_2__factory } from "./GTokenV6_3_2__factory";
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.GTokenOpenPnlFeed__factory = exports.GNSTradingCallbacksV6_4__factory = exports.GNSPairsStorageV6__factory = exports.GNSPairInfosV6_1__factory = exports.GNSNftRewardsV6_3_1__factory = exports.GNSNftRewardsV6__factory = exports.GNSBorrowingFeesV6_4__factory = exports.GFarmTradingStorageV5__factory = void 0;
|
|
4
4
|
/* Autogenerated file. Do not edit manually. */
|
|
5
5
|
/* tslint:disable */
|
|
6
6
|
/* eslint-disable */
|
|
7
7
|
var GFarmTradingStorageV5__factory_1 = require("./GFarmTradingStorageV5__factory");
|
|
8
8
|
Object.defineProperty(exports, "GFarmTradingStorageV5__factory", { enumerable: true, get: function () { return GFarmTradingStorageV5__factory_1.GFarmTradingStorageV5__factory; } });
|
|
9
|
-
var
|
|
10
|
-
Object.defineProperty(exports, "
|
|
9
|
+
var GNSBorrowingFeesV6_4__factory_1 = require("./GNSBorrowingFeesV6_4__factory");
|
|
10
|
+
Object.defineProperty(exports, "GNSBorrowingFeesV6_4__factory", { enumerable: true, get: function () { return GNSBorrowingFeesV6_4__factory_1.GNSBorrowingFeesV6_4__factory; } });
|
|
11
11
|
var GNSNftRewardsV6__factory_1 = require("./GNSNftRewardsV6__factory");
|
|
12
12
|
Object.defineProperty(exports, "GNSNftRewardsV6__factory", { enumerable: true, get: function () { return GNSNftRewardsV6__factory_1.GNSNftRewardsV6__factory; } });
|
|
13
13
|
var GNSNftRewardsV6_3_1__factory_1 = require("./GNSNftRewardsV6_3_1__factory");
|
|
@@ -16,9 +16,7 @@ var GNSPairInfosV6_1__factory_1 = require("./GNSPairInfosV6_1__factory");
|
|
|
16
16
|
Object.defineProperty(exports, "GNSPairInfosV6_1__factory", { enumerable: true, get: function () { return GNSPairInfosV6_1__factory_1.GNSPairInfosV6_1__factory; } });
|
|
17
17
|
var GNSPairsStorageV6__factory_1 = require("./GNSPairsStorageV6__factory");
|
|
18
18
|
Object.defineProperty(exports, "GNSPairsStorageV6__factory", { enumerable: true, get: function () { return GNSPairsStorageV6__factory_1.GNSPairsStorageV6__factory; } });
|
|
19
|
-
var
|
|
20
|
-
Object.defineProperty(exports, "
|
|
19
|
+
var GNSTradingCallbacksV6_4__factory_1 = require("./GNSTradingCallbacksV6_4__factory");
|
|
20
|
+
Object.defineProperty(exports, "GNSTradingCallbacksV6_4__factory", { enumerable: true, get: function () { return GNSTradingCallbacksV6_4__factory_1.GNSTradingCallbacksV6_4__factory; } });
|
|
21
21
|
var GTokenOpenPnlFeed__factory_1 = require("./GTokenOpenPnlFeed__factory");
|
|
22
22
|
Object.defineProperty(exports, "GTokenOpenPnlFeed__factory", { enumerable: true, get: function () { return GTokenOpenPnlFeed__factory_1.GTokenOpenPnlFeed__factory; } });
|
|
23
|
-
var GTokenV6_3_2__factory_1 = require("./GTokenV6_3_2__factory");
|
|
24
|
-
Object.defineProperty(exports, "GTokenV6_3_2__factory", { enumerable: true, get: function () { return GTokenV6_3_2__factory_1.GTokenV6_3_2__factory; } });
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
export type { GFarmTradingStorageV5 } from "./GFarmTradingStorageV5";
|
|
2
|
-
export type {
|
|
2
|
+
export type { GNSBorrowingFeesV6_4 } from "./GNSBorrowingFeesV6_4";
|
|
3
3
|
export type { GNSNftRewardsV6 } from "./GNSNftRewardsV6";
|
|
4
4
|
export type { GNSNftRewardsV6_3_1 } from "./GNSNftRewardsV6_3_1";
|
|
5
5
|
export type { GNSPairInfosV6_1 } from "./GNSPairInfosV6_1";
|
|
6
6
|
export type { GNSPairsStorageV6 } from "./GNSPairsStorageV6";
|
|
7
|
-
export type {
|
|
7
|
+
export type { GNSTradingCallbacksV6_4 } from "./GNSTradingCallbacksV6_4";
|
|
8
8
|
export type { GTokenOpenPnlFeed } from "./GTokenOpenPnlFeed";
|
|
9
|
-
export type { GTokenV6_3_2 } from "./GTokenV6_3_2";
|
|
10
9
|
export * as factories from "./factories";
|
|
11
10
|
export { GFarmTradingStorageV5__factory } from "./factories/GFarmTradingStorageV5__factory";
|
|
12
|
-
export {
|
|
11
|
+
export { GNSBorrowingFeesV6_4__factory } from "./factories/GNSBorrowingFeesV6_4__factory";
|
|
13
12
|
export { GNSNftRewardsV6__factory } from "./factories/GNSNftRewardsV6__factory";
|
|
14
13
|
export { GNSNftRewardsV6_3_1__factory } from "./factories/GNSNftRewardsV6_3_1__factory";
|
|
15
14
|
export { GNSPairInfosV6_1__factory } from "./factories/GNSPairInfosV6_1__factory";
|
|
16
15
|
export { GNSPairsStorageV6__factory } from "./factories/GNSPairsStorageV6__factory";
|
|
17
|
-
export {
|
|
16
|
+
export { GNSTradingCallbacksV6_4__factory } from "./factories/GNSTradingCallbacksV6_4__factory";
|
|
18
17
|
export { GTokenOpenPnlFeed__factory } from "./factories/GTokenOpenPnlFeed__factory";
|
|
19
|
-
export { GTokenV6_3_2__factory } from "./factories/GTokenV6_3_2__factory";
|
|
@@ -23,12 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.GTokenOpenPnlFeed__factory = exports.GNSTradingCallbacksV6_4__factory = exports.GNSPairsStorageV6__factory = exports.GNSPairInfosV6_1__factory = exports.GNSNftRewardsV6_3_1__factory = exports.GNSNftRewardsV6__factory = exports.GNSBorrowingFeesV6_4__factory = exports.GFarmTradingStorageV5__factory = exports.factories = void 0;
|
|
27
27
|
exports.factories = __importStar(require("./factories"));
|
|
28
28
|
var GFarmTradingStorageV5__factory_1 = require("./factories/GFarmTradingStorageV5__factory");
|
|
29
29
|
Object.defineProperty(exports, "GFarmTradingStorageV5__factory", { enumerable: true, get: function () { return GFarmTradingStorageV5__factory_1.GFarmTradingStorageV5__factory; } });
|
|
30
|
-
var
|
|
31
|
-
Object.defineProperty(exports, "
|
|
30
|
+
var GNSBorrowingFeesV6_4__factory_1 = require("./factories/GNSBorrowingFeesV6_4__factory");
|
|
31
|
+
Object.defineProperty(exports, "GNSBorrowingFeesV6_4__factory", { enumerable: true, get: function () { return GNSBorrowingFeesV6_4__factory_1.GNSBorrowingFeesV6_4__factory; } });
|
|
32
32
|
var GNSNftRewardsV6__factory_1 = require("./factories/GNSNftRewardsV6__factory");
|
|
33
33
|
Object.defineProperty(exports, "GNSNftRewardsV6__factory", { enumerable: true, get: function () { return GNSNftRewardsV6__factory_1.GNSNftRewardsV6__factory; } });
|
|
34
34
|
var GNSNftRewardsV6_3_1__factory_1 = require("./factories/GNSNftRewardsV6_3_1__factory");
|
|
@@ -37,9 +37,7 @@ var GNSPairInfosV6_1__factory_1 = require("./factories/GNSPairInfosV6_1__factory
|
|
|
37
37
|
Object.defineProperty(exports, "GNSPairInfosV6_1__factory", { enumerable: true, get: function () { return GNSPairInfosV6_1__factory_1.GNSPairInfosV6_1__factory; } });
|
|
38
38
|
var GNSPairsStorageV6__factory_1 = require("./factories/GNSPairsStorageV6__factory");
|
|
39
39
|
Object.defineProperty(exports, "GNSPairsStorageV6__factory", { enumerable: true, get: function () { return GNSPairsStorageV6__factory_1.GNSPairsStorageV6__factory; } });
|
|
40
|
-
var
|
|
41
|
-
Object.defineProperty(exports, "
|
|
40
|
+
var GNSTradingCallbacksV6_4__factory_1 = require("./factories/GNSTradingCallbacksV6_4__factory");
|
|
41
|
+
Object.defineProperty(exports, "GNSTradingCallbacksV6_4__factory", { enumerable: true, get: function () { return GNSTradingCallbacksV6_4__factory_1.GNSTradingCallbacksV6_4__factory; } });
|
|
42
42
|
var GTokenOpenPnlFeed__factory_1 = require("./factories/GTokenOpenPnlFeed__factory");
|
|
43
43
|
Object.defineProperty(exports, "GTokenOpenPnlFeed__factory", { enumerable: true, get: function () { return GTokenOpenPnlFeed__factory_1.GTokenOpenPnlFeed__factory; } });
|
|
44
|
-
var GTokenV6_3_2__factory_1 = require("./factories/GTokenV6_3_2__factory");
|
|
45
|
-
Object.defineProperty(exports, "GTokenV6_3_2__factory", { enumerable: true, get: function () { return GTokenV6_3_2__factory_1.GTokenV6_3_2__factory; } });
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { GFarmTradingStorageV5, GNSPairInfosV6_1, GNSPairsStorageV6, GTokenOpenPnlFeed, GNSNftRewardsV6_3_1,
|
|
1
|
+
import { GFarmTradingStorageV5, GNSPairInfosV6_1, GNSPairsStorageV6, GTokenOpenPnlFeed, GNSNftRewardsV6_3_1, GNSBorrowingFeesV6_4, GNSTradingCallbacksV6_4 } from "./generated";
|
|
2
2
|
export type Contracts = {
|
|
3
3
|
gfarmTradingStorageV5: GFarmTradingStorageV5;
|
|
4
4
|
gnsPairInfosV6_1: GNSPairInfosV6_1;
|
|
5
5
|
gnsPairsStorageV6: GNSPairsStorageV6;
|
|
6
6
|
gTokenOpenPnlFeed: GTokenOpenPnlFeed;
|
|
7
7
|
gnsNftRewards: GNSNftRewardsV6_3_1;
|
|
8
|
-
gnsBorrowingFees:
|
|
9
|
-
gnsTradingCallbacks:
|
|
10
|
-
gDai: GTokenV6_3_2;
|
|
8
|
+
gnsBorrowingFees: GNSBorrowingFeesV6_4;
|
|
9
|
+
gnsTradingCallbacks: GNSTradingCallbacksV6_4;
|
|
11
10
|
};
|
|
12
11
|
export type ContractAddresses = {
|
|
13
12
|
gfarmTradingStorageV5: string;
|
|
@@ -18,6 +17,5 @@ export type ContractAddresses = {
|
|
|
18
17
|
gnsNftRewardsV6_3_1: string;
|
|
19
18
|
gnsBorrowingFeesV6_3_2: string;
|
|
20
19
|
gnsTradingCallbacksV6_3_2: string;
|
|
21
|
-
gDai: string;
|
|
22
20
|
};
|
|
23
21
|
export type BlockTag = number | "latest" | "pending";
|
|
@@ -30,6 +30,7 @@ const fetchOpenLimitOrders = (contracts, overrides = {}) => __awaiter(void 0, vo
|
|
|
30
30
|
tp: parseFloat(order.tp.toString()) / 1e10,
|
|
31
31
|
trader: order.trader,
|
|
32
32
|
type: parseInt(order.type.toString()),
|
|
33
|
+
maxSlippageP: parseFloat(order.maxSlippageP.toString()) / 1e10,
|
|
33
34
|
}));
|
|
34
35
|
});
|
|
35
36
|
exports.fetchOpenLimitOrders = fetchOpenLimitOrders;
|
|
@@ -39,24 +40,33 @@ const fetchOpenLimitOrdersRaw = (contracts, overrides = {}) => __awaiter(void 0,
|
|
|
39
40
|
}
|
|
40
41
|
console.time("fetchOpenLimitOrdersRaw");
|
|
41
42
|
const { useMulticall = false, blockTag = "latest" } = overrides;
|
|
42
|
-
const { gfarmTradingStorageV5: storageContract, gnsNftRewards: nftRewards } = contracts;
|
|
43
|
+
const { gfarmTradingStorageV5: storageContract, gnsNftRewards: nftRewards, gnsTradingCallbacks: callbacks, } = contracts;
|
|
43
44
|
const openLimitOrders = yield storageContract.getOpenLimitOrders({
|
|
44
45
|
blockTag,
|
|
45
46
|
});
|
|
46
47
|
let openLimitOrderTypes = [];
|
|
48
|
+
let openLimitOrderTradeData = [];
|
|
47
49
|
if (useMulticall) {
|
|
48
50
|
const multicallProvider = new ethcall_1.Provider();
|
|
49
51
|
yield multicallProvider.init(storageContract.provider);
|
|
50
52
|
const nftRewardsContractMulticall = new ethcall_1.Contract(nftRewards.address, [
|
|
51
53
|
...nftRewards.interface.fragments,
|
|
52
54
|
]);
|
|
55
|
+
const callbacksContractMulticall = new ethcall_1.Contract(callbacks.address, [
|
|
56
|
+
...callbacks.interface.fragments,
|
|
57
|
+
]);
|
|
53
58
|
openLimitOrderTypes = yield multicallProvider.all(openLimitOrders.map(order => nftRewardsContractMulticall.openLimitOrderTypes(order.trader, order.pairIndex, order.index)), blockTag);
|
|
59
|
+
openLimitOrderTradeData = yield multicallProvider.all(openLimitOrders.map(order => callbacksContractMulticall.tradeData(order.trader, order.pairIndex, order.index, 1)), blockTag);
|
|
54
60
|
}
|
|
55
61
|
else {
|
|
56
62
|
openLimitOrderTypes = yield Promise.all(openLimitOrders.map(order => nftRewards.openLimitOrderTypes(order.trader, order.pairIndex, order.index, { blockTag })));
|
|
63
|
+
openLimitOrderTradeData = yield Promise.all(openLimitOrders.map(order => callbacks.tradeData(order.trader, order.pairIndex, order.index, 1, {
|
|
64
|
+
blockTag,
|
|
65
|
+
})));
|
|
57
66
|
}
|
|
58
67
|
return openLimitOrderTypes.map((openLimitOrderType, index) => {
|
|
59
68
|
const openLimitOrder = openLimitOrders[index];
|
|
69
|
+
const tradeData = openLimitOrderTradeData[index];
|
|
60
70
|
return {
|
|
61
71
|
trader: openLimitOrder.trader,
|
|
62
72
|
pairIndex: openLimitOrder.pairIndex,
|
|
@@ -71,6 +81,7 @@ const fetchOpenLimitOrdersRaw = (contracts, overrides = {}) => __awaiter(void 0,
|
|
|
71
81
|
maxPrice: openLimitOrder.maxPrice,
|
|
72
82
|
block: openLimitOrder.block,
|
|
73
83
|
type: openLimitOrderType,
|
|
84
|
+
maxSlippageP: tradeData.maxSlippageP,
|
|
74
85
|
};
|
|
75
86
|
});
|
|
76
87
|
});
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Pair, PairParams, PairRolloverFees, Fee
|
|
1
|
+
import { Pair, PairParams, PairRolloverFees, Fee } from "@/trade/types";
|
|
2
2
|
import { Contracts } from "@/contracts/types";
|
|
3
3
|
export declare const fetchPairs: (contracts: Contracts, pairIxs: number[]) => Promise<Pair[]>;
|
|
4
4
|
export declare const fetchPairsParams: (contracts: Contracts, pairIxs: number[]) => Promise<PairParams[]>;
|
|
5
5
|
export declare const fetchPairsRolloverFees: (contracts: Contracts, pairIxs: number[]) => Promise<PairRolloverFees[]>;
|
|
6
6
|
export declare const fetchFees: (contracts: Contracts, feeIxs: number[]) => Promise<Fee[]>;
|
|
7
|
-
export declare const fetchOpenInterest: (contracts: Contracts, pairIxs: number[]) => Promise<OpenInterest[]>;
|
|
@@ -9,14 +9,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
12
|
+
exports.fetchFees = exports.fetchPairsRolloverFees = exports.fetchPairsParams = exports.fetchPairs = void 0;
|
|
13
13
|
const fetchPairs = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
14
|
if (!contracts) {
|
|
15
15
|
return [];
|
|
16
16
|
}
|
|
17
17
|
const { gnsPairsStorageV6: pairsStorageContract } = contracts;
|
|
18
18
|
try {
|
|
19
|
-
const pairs = yield Promise.all(pairIxs.map(pairIndex => pairsStorageContract.pairs(pairIndex)));
|
|
19
|
+
const pairs = yield Promise.all(pairIxs.map((pairIndex) => pairsStorageContract.pairs(pairIndex)));
|
|
20
20
|
return pairs.map((pair, index) => {
|
|
21
21
|
return {
|
|
22
22
|
name: pair.from + "/" + pair.to,
|
|
@@ -41,8 +41,8 @@ const fetchPairsParams = (contracts, pairIxs) => __awaiter(void 0, void 0, void
|
|
|
41
41
|
}
|
|
42
42
|
const { gnsPairInfosV6_1: pairInfosContract } = contracts;
|
|
43
43
|
try {
|
|
44
|
-
const pairParams = yield Promise.all(pairIxs.map(pairIndex => pairInfosContract.pairParams(pairIndex)));
|
|
45
|
-
return pairParams.map(pair => {
|
|
44
|
+
const pairParams = yield Promise.all(pairIxs.map((pairIndex) => pairInfosContract.pairParams(pairIndex)));
|
|
45
|
+
return pairParams.map((pair) => {
|
|
46
46
|
return {
|
|
47
47
|
onePercentDepthAbove: parseFloat(pair.onePercentDepthAbove.toString()),
|
|
48
48
|
onePercentDepthBelow: parseFloat(pair.onePercentDepthBelow.toString()),
|
|
@@ -63,8 +63,8 @@ const fetchPairsRolloverFees = (contracts, pairIxs) => __awaiter(void 0, void 0,
|
|
|
63
63
|
}
|
|
64
64
|
const { gnsPairInfosV6_1: pairInfosContract } = contracts;
|
|
65
65
|
try {
|
|
66
|
-
const pairsRolloverFees = yield Promise.all(pairIxs.map(pairIndex => pairInfosContract.pairRolloverFees(pairIndex)));
|
|
67
|
-
return pairsRolloverFees.map(pairData => {
|
|
66
|
+
const pairsRolloverFees = yield Promise.all(pairIxs.map((pairIndex) => pairInfosContract.pairRolloverFees(pairIndex)));
|
|
67
|
+
return pairsRolloverFees.map((pairData) => {
|
|
68
68
|
return {
|
|
69
69
|
accPerCollateral: parseFloat(pairData.accPerCollateral.toString()) / 1e18,
|
|
70
70
|
lastUpdateBlock: parseInt(pairData.lastUpdateBlock.toString()),
|
|
@@ -83,8 +83,8 @@ const fetchFees = (contracts, feeIxs) => __awaiter(void 0, void 0, void 0, funct
|
|
|
83
83
|
}
|
|
84
84
|
const { gnsPairsStorageV6: pairsStorageContract } = contracts;
|
|
85
85
|
try {
|
|
86
|
-
const fees = yield Promise.all(feeIxs.map(pairIndex => pairsStorageContract.fees(pairIndex)));
|
|
87
|
-
return fees.map(fee => {
|
|
86
|
+
const fees = yield Promise.all(feeIxs.map((pairIndex) => pairsStorageContract.fees(pairIndex)));
|
|
87
|
+
return fees.map((fee) => {
|
|
88
88
|
return {
|
|
89
89
|
closeFeeP: parseFloat(fee.closeFeeP.toString()) / 1e12,
|
|
90
90
|
minLevPosDai: parseFloat(fee.minLevPosDai.toString()) / 1e12,
|
|
@@ -100,16 +100,3 @@ const fetchFees = (contracts, feeIxs) => __awaiter(void 0, void 0, void 0, funct
|
|
|
100
100
|
}
|
|
101
101
|
});
|
|
102
102
|
exports.fetchFees = fetchFees;
|
|
103
|
-
const fetchOpenInterest = (contracts, pairIxs) => __awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
-
const openInterests = yield Promise.all(pairIxs.map(pairIndex => Promise.all([
|
|
105
|
-
contracts.gfarmTradingStorageV5.openInterestDai(pairIndex, 0),
|
|
106
|
-
contracts.gfarmTradingStorageV5.openInterestDai(pairIndex, 1),
|
|
107
|
-
contracts.gfarmTradingStorageV5.openInterestDai(pairIndex, 2),
|
|
108
|
-
])));
|
|
109
|
-
return openInterests.map(openInterest => ({
|
|
110
|
-
long: parseFloat(openInterest[0].toString()) / 1e18,
|
|
111
|
-
short: parseFloat(openInterest[1].toString()) / 1e18,
|
|
112
|
-
max: parseFloat(openInterest[2].toString()) / 1e18,
|
|
113
|
-
}));
|
|
114
|
-
});
|
|
115
|
-
exports.fetchOpenInterest = fetchOpenInterest;
|
|
@@ -2,7 +2,6 @@ import { OpenInterest } from "../../types";
|
|
|
2
2
|
import * as BorrowingFee from "./types";
|
|
3
3
|
export type GetBorrowingFeeContext = {
|
|
4
4
|
currentBlock: number;
|
|
5
|
-
accBlockWeightedMarketCap: number;
|
|
6
5
|
groups: BorrowingFee.Group[];
|
|
7
6
|
pairs: BorrowingFee.Pair[];
|
|
8
7
|
openInterest: OpenInterest;
|
|
@@ -21,7 +20,6 @@ export declare const borrowingFeeUtils: {
|
|
|
21
20
|
getPairPendingAccFees: (pairIndex: number, currentBlock: number, context: {
|
|
22
21
|
pairs: BorrowingFee.Pair[];
|
|
23
22
|
openInterest: OpenInterest;
|
|
24
|
-
accBlockWeightedMarketCap: number;
|
|
25
23
|
}) => {
|
|
26
24
|
accFeeLong: number;
|
|
27
25
|
accFeeShort: number;
|
|
@@ -30,11 +28,9 @@ export declare const borrowingFeeUtils: {
|
|
|
30
28
|
getPairPendingAccFee: (pairIndex: number, currentBlock: number, long: boolean, context: {
|
|
31
29
|
pairs: BorrowingFee.Pair[];
|
|
32
30
|
openInterest: OpenInterest;
|
|
33
|
-
accBlockWeightedMarketCap: number;
|
|
34
31
|
}) => number;
|
|
35
32
|
getGroupPendingAccFees: (groupIndex: number, currentBlock: number, context: {
|
|
36
33
|
groups: BorrowingFee.Group[];
|
|
37
|
-
accBlockWeightedMarketCap: number;
|
|
38
34
|
}) => {
|
|
39
35
|
accFeeLong: number;
|
|
40
36
|
accFeeShort: number;
|
|
@@ -42,20 +38,17 @@ export declare const borrowingFeeUtils: {
|
|
|
42
38
|
};
|
|
43
39
|
getGroupPendingAccFee: (groupIndex: number, currentBlock: number, long: boolean, context: {
|
|
44
40
|
groups: BorrowingFee.Group[];
|
|
45
|
-
accBlockWeightedMarketCap: number;
|
|
46
41
|
}) => number;
|
|
47
|
-
getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number,
|
|
42
|
+
getPendingAccFees: (accFeeLong: number, accFeeShort: number, oiLong: number, oiShort: number, feePerBlock: number, currentBlock: number, accLastUpdatedBlock: number, maxOi: number, feeExponent: number) => {
|
|
48
43
|
accFeeLong: number;
|
|
49
44
|
accFeeShort: number;
|
|
50
45
|
delta: number;
|
|
51
46
|
};
|
|
52
|
-
getActivePairFeePerBlock: (pair: BorrowingFee.Pair, openInterest: OpenInterest
|
|
53
|
-
getActiveGroupFeePerBlock: (group: BorrowingFee.Group
|
|
54
|
-
getActiveFeePerBlock: (pair: BorrowingFee.Pair, group: BorrowingFee.Group | undefined, pairOpenInterest: OpenInterest
|
|
55
|
-
getWeightedVaultMarketCap: (accBlockWeightedMarketCap: number, lastAccBlockWeightedMarketCap: number, blockDelta: number) => number;
|
|
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;
|
|
56
50
|
getPairGroupIndex: (pairIndex: number, context: {
|
|
57
51
|
pairs: BorrowingFee.Pair[];
|
|
58
52
|
}) => number;
|
|
59
53
|
};
|
|
60
54
|
export * as BorrowingFee from "./types";
|
|
61
|
-
export * from "./converter";
|
|
@@ -22,9 +22,6 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
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
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
26
|
exports.BorrowingFee = exports.borrowingFeeUtils = exports.withinMaxGroupOi = exports.getBorrowingFee = void 0;
|
|
30
27
|
const getBorrowingFee = (posDai, pairIndex, long, initialAccFees, context) => {
|
|
@@ -74,20 +71,18 @@ const getPairGroupIndex = (pairIndex, context) => {
|
|
|
74
71
|
return pairGroups.length == 0 ? 0 : pairGroups[0].groupIndex;
|
|
75
72
|
};
|
|
76
73
|
const getPairPendingAccFees = (pairIndex, currentBlock, context) => {
|
|
77
|
-
const { pairs, openInterest: { long, short },
|
|
74
|
+
const { pairs, openInterest: { long, short }, } = context;
|
|
78
75
|
const pair = pairs[pairIndex];
|
|
79
|
-
|
|
80
|
-
return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, vaultMarketCap);
|
|
76
|
+
return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.maxOi, pair.feeExponent);
|
|
81
77
|
};
|
|
82
78
|
const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
|
|
83
79
|
const { accFeeLong, accFeeShort } = getPairPendingAccFees(pairIndex, currentBlock, context);
|
|
84
80
|
return long ? accFeeLong : accFeeShort;
|
|
85
81
|
};
|
|
86
82
|
const getGroupPendingAccFees = (groupIndex, currentBlock, context) => {
|
|
87
|
-
const { groups
|
|
83
|
+
const { groups } = context;
|
|
88
84
|
const group = groups[groupIndex];
|
|
89
|
-
|
|
90
|
-
return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.oiLong, group.oiShort, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, vaultMarketCap);
|
|
85
|
+
return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.oiLong, group.oiShort, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, group.maxOi, group.feeExponent);
|
|
91
86
|
};
|
|
92
87
|
const getGroupPendingAccFee = (groupIndex, currentBlock, long, context) => {
|
|
93
88
|
const { accFeeLong, accFeeShort } = getGroupPendingAccFees(groupIndex, currentBlock, context);
|
|
@@ -98,15 +93,13 @@ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long,
|
|
|
98
93
|
const beforeTradeOpen = group.block < initialFees.block;
|
|
99
94
|
let deltaGroup, deltaPair;
|
|
100
95
|
if (i == pairGroups.length - 1) {
|
|
101
|
-
const { currentBlock,
|
|
96
|
+
const { currentBlock, groups, pairs, openInterest } = context;
|
|
102
97
|
deltaGroup = getGroupPendingAccFee(group.groupIndex, currentBlock, long, {
|
|
103
98
|
groups,
|
|
104
|
-
accBlockWeightedMarketCap,
|
|
105
99
|
});
|
|
106
100
|
deltaPair = getPairPendingAccFee(pairIndex, currentBlock, long, {
|
|
107
101
|
pairs,
|
|
108
102
|
openInterest: openInterest,
|
|
109
|
-
accBlockWeightedMarketCap,
|
|
110
103
|
});
|
|
111
104
|
}
|
|
112
105
|
else {
|
|
@@ -129,36 +122,34 @@ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long,
|
|
|
129
122
|
}
|
|
130
123
|
return { deltaGroup, deltaPair, beforeTradeOpen };
|
|
131
124
|
};
|
|
132
|
-
const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock,
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
const
|
|
136
|
-
|
|
125
|
+
const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, maxOi, feeExponent) => {
|
|
126
|
+
const moreShorts = oiLong < oiShort;
|
|
127
|
+
const netOi = Math.abs(oiLong - oiShort);
|
|
128
|
+
const delta = maxOi > 0 && feeExponent > 0
|
|
129
|
+
? feePerBlock *
|
|
130
|
+
(currentBlock - accLastUpdatedBlock) *
|
|
131
|
+
Math.pow((netOi / maxOi), feeExponent)
|
|
132
|
+
: 0;
|
|
133
|
+
const newAccFeeLong = moreShorts ? accFeeLong : accFeeLong + delta;
|
|
134
|
+
const newAccFeeShort = moreShorts ? accFeeShort + delta : accFeeShort;
|
|
137
135
|
return { accFeeLong: newAccFeeLong, accFeeShort: newAccFeeShort, delta };
|
|
138
136
|
};
|
|
139
|
-
const
|
|
140
|
-
return blockDelta > 0
|
|
141
|
-
? blockDelta /
|
|
142
|
-
(accBlockWeightedMarketCap - lastAccBlockWeightedMarketCap) /
|
|
143
|
-
1e18
|
|
144
|
-
: 1;
|
|
145
|
-
};
|
|
146
|
-
const getActivePairFeePerBlock = (pair, openInterest, accBlockWeightedMarketCap, currentBlock) => {
|
|
137
|
+
const getActivePairFeePerBlock = (pair, openInterest) => {
|
|
147
138
|
const { long, short } = openInterest;
|
|
148
|
-
const
|
|
149
|
-
return
|
|
139
|
+
const netOi = Math.abs(long - short);
|
|
140
|
+
return pair.feePerBlock * Math.pow((netOi / pair.maxOi), pair.feeExponent);
|
|
150
141
|
};
|
|
151
|
-
const getActiveGroupFeePerBlock = (group
|
|
142
|
+
const getActiveGroupFeePerBlock = (group) => {
|
|
152
143
|
const { oiLong, oiShort } = group;
|
|
153
|
-
const
|
|
154
|
-
return
|
|
144
|
+
const netOi = Math.abs(oiLong - oiShort);
|
|
145
|
+
return group.feePerBlock * Math.pow((netOi / group.maxOi), group.feeExponent);
|
|
155
146
|
};
|
|
156
|
-
const getActiveFeePerBlock = (pair, group, pairOpenInterest
|
|
157
|
-
const pairFeePerBlock = getActivePairFeePerBlock(pair, pairOpenInterest
|
|
147
|
+
const getActiveFeePerBlock = (pair, group, pairOpenInterest) => {
|
|
148
|
+
const pairFeePerBlock = getActivePairFeePerBlock(pair, pairOpenInterest);
|
|
158
149
|
if (!group) {
|
|
159
150
|
return pairFeePerBlock;
|
|
160
151
|
}
|
|
161
|
-
const groupFeePerBlock = getActiveGroupFeePerBlock(group
|
|
152
|
+
const groupFeePerBlock = getActiveGroupFeePerBlock(group);
|
|
162
153
|
return Math.max(pairFeePerBlock, groupFeePerBlock);
|
|
163
154
|
};
|
|
164
155
|
exports.borrowingFeeUtils = {
|
|
@@ -171,8 +162,6 @@ exports.borrowingFeeUtils = {
|
|
|
171
162
|
getActivePairFeePerBlock,
|
|
172
163
|
getActiveGroupFeePerBlock,
|
|
173
164
|
getActiveFeePerBlock,
|
|
174
|
-
getWeightedVaultMarketCap,
|
|
175
165
|
getPairGroupIndex,
|
|
176
166
|
};
|
|
177
167
|
exports.BorrowingFee = __importStar(require("./types"));
|
|
178
|
-
__exportStar(require("./converter"), exports);
|
|
@@ -14,7 +14,9 @@ export type Pair = {
|
|
|
14
14
|
accFeeLong: number;
|
|
15
15
|
accFeeShort: number;
|
|
16
16
|
accLastUpdatedBlock: number;
|
|
17
|
+
maxOi: number;
|
|
17
18
|
lastAccBlockWeightedMarketCap: number;
|
|
19
|
+
feeExponent: number;
|
|
18
20
|
};
|
|
19
21
|
export type Group = {
|
|
20
22
|
oiLong: number;
|
|
@@ -25,6 +27,7 @@ export type Group = {
|
|
|
25
27
|
accLastUpdatedBlock: number;
|
|
26
28
|
maxOi: number;
|
|
27
29
|
lastAccBlockWeightedMarketCap: number;
|
|
30
|
+
feeExponent: number;
|
|
28
31
|
};
|
|
29
32
|
export type InitialAccFees = {
|
|
30
33
|
accPairFee: number;
|
|
@@ -18,7 +18,7 @@ const getFulfillmentPrice = (order, pair, pairParams, openInterest) => {
|
|
|
18
18
|
? order.maxPrice
|
|
19
19
|
: order.minPrice;
|
|
20
20
|
return order.buy
|
|
21
|
-
? askingPrice * (1
|
|
22
|
-
: askingPrice * (1
|
|
21
|
+
? askingPrice * (1 + spreadWithPriceImpactP)
|
|
22
|
+
: askingPrice * (1 - spreadWithPriceImpactP);
|
|
23
23
|
};
|
|
24
24
|
exports.getFulfillmentPrice = getFulfillmentPrice;
|
package/lib/trade/types.d.ts
CHANGED
|
@@ -53,9 +53,11 @@ export type LimitOrder = {
|
|
|
53
53
|
tp: number;
|
|
54
54
|
trader: string;
|
|
55
55
|
type: number;
|
|
56
|
+
maxSlippageP: number;
|
|
56
57
|
};
|
|
57
58
|
export type LimitOrderRaw = GFarmTradingStorageV5.OpenLimitOrderStructOutput & {
|
|
58
59
|
type: number;
|
|
60
|
+
maxSlippageP: BigNumber;
|
|
59
61
|
};
|
|
60
62
|
export type Fee = {
|
|
61
63
|
closeFeeP: number;
|