@gainsnetwork/sdk 0.0.29-rc1 → 0.0.30-rc2

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.
@@ -1,9 +1,9 @@
1
1
  export { GFarmTradingStorageV5__factory } from "./GFarmTradingStorageV5__factory";
2
- export { GNSBorrowingFeesV6_3_2__factory } from "./GNSBorrowingFeesV6_3_2__factory";
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 { GNSTradingCallbacksV6_3_2__factory } from "./GNSTradingCallbacksV6_3_2__factory";
7
+ export { GNSTradingCallbacksV6_4__factory } from "./GNSTradingCallbacksV6_4__factory";
8
8
  export { GTokenOpenPnlFeed__factory } from "./GTokenOpenPnlFeed__factory";
9
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.GTokenV6_3_2__factory = exports.GTokenOpenPnlFeed__factory = exports.GNSTradingCallbacksV6_3_2__factory = exports.GNSPairsStorageV6__factory = exports.GNSPairInfosV6_1__factory = exports.GNSNftRewardsV6_3_1__factory = exports.GNSNftRewardsV6__factory = exports.GNSBorrowingFeesV6_3_2__factory = exports.GFarmTradingStorageV5__factory = void 0;
3
+ exports.GTokenV6_3_2__factory = 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 GNSBorrowingFeesV6_3_2__factory_1 = require("./GNSBorrowingFeesV6_3_2__factory");
10
- Object.defineProperty(exports, "GNSBorrowingFeesV6_3_2__factory", { enumerable: true, get: function () { return GNSBorrowingFeesV6_3_2__factory_1.GNSBorrowingFeesV6_3_2__factory; } });
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,8 +16,8 @@ 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 GNSTradingCallbacksV6_3_2__factory_1 = require("./GNSTradingCallbacksV6_3_2__factory");
20
- Object.defineProperty(exports, "GNSTradingCallbacksV6_3_2__factory", { enumerable: true, get: function () { return GNSTradingCallbacksV6_3_2__factory_1.GNSTradingCallbacksV6_3_2__factory; } });
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
23
  var GTokenV6_3_2__factory_1 = require("./GTokenV6_3_2__factory");
@@ -1,19 +1,19 @@
1
1
  export type { GFarmTradingStorageV5 } from "./GFarmTradingStorageV5";
2
- export type { GNSBorrowingFeesV6_3_2 } from "./GNSBorrowingFeesV6_3_2";
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 { GNSTradingCallbacksV6_3_2 } from "./GNSTradingCallbacksV6_3_2";
7
+ export type { GNSTradingCallbacksV6_4 } from "./GNSTradingCallbacksV6_4";
8
8
  export type { GTokenOpenPnlFeed } from "./GTokenOpenPnlFeed";
9
9
  export type { GTokenV6_3_2 } from "./GTokenV6_3_2";
10
10
  export * as factories from "./factories";
11
11
  export { GFarmTradingStorageV5__factory } from "./factories/GFarmTradingStorageV5__factory";
12
- export { GNSBorrowingFeesV6_3_2__factory } from "./factories/GNSBorrowingFeesV6_3_2__factory";
12
+ export { GNSBorrowingFeesV6_4__factory } from "./factories/GNSBorrowingFeesV6_4__factory";
13
13
  export { GNSNftRewardsV6__factory } from "./factories/GNSNftRewardsV6__factory";
14
14
  export { GNSNftRewardsV6_3_1__factory } from "./factories/GNSNftRewardsV6_3_1__factory";
15
15
  export { GNSPairInfosV6_1__factory } from "./factories/GNSPairInfosV6_1__factory";
16
16
  export { GNSPairsStorageV6__factory } from "./factories/GNSPairsStorageV6__factory";
17
- export { GNSTradingCallbacksV6_3_2__factory } from "./factories/GNSTradingCallbacksV6_3_2__factory";
17
+ export { GNSTradingCallbacksV6_4__factory } from "./factories/GNSTradingCallbacksV6_4__factory";
18
18
  export { GTokenOpenPnlFeed__factory } from "./factories/GTokenOpenPnlFeed__factory";
19
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.GTokenV6_3_2__factory = exports.GTokenOpenPnlFeed__factory = exports.GNSTradingCallbacksV6_3_2__factory = exports.GNSPairsStorageV6__factory = exports.GNSPairInfosV6_1__factory = exports.GNSNftRewardsV6_3_1__factory = exports.GNSNftRewardsV6__factory = exports.GNSBorrowingFeesV6_3_2__factory = exports.GFarmTradingStorageV5__factory = exports.factories = void 0;
26
+ exports.GTokenV6_3_2__factory = 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 GNSBorrowingFeesV6_3_2__factory_1 = require("./factories/GNSBorrowingFeesV6_3_2__factory");
31
- Object.defineProperty(exports, "GNSBorrowingFeesV6_3_2__factory", { enumerable: true, get: function () { return GNSBorrowingFeesV6_3_2__factory_1.GNSBorrowingFeesV6_3_2__factory; } });
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,8 +37,8 @@ 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 GNSTradingCallbacksV6_3_2__factory_1 = require("./factories/GNSTradingCallbacksV6_3_2__factory");
41
- Object.defineProperty(exports, "GNSTradingCallbacksV6_3_2__factory", { enumerable: true, get: function () { return GNSTradingCallbacksV6_3_2__factory_1.GNSTradingCallbacksV6_3_2__factory; } });
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
44
  var GTokenV6_3_2__factory_1 = require("./factories/GTokenV6_3_2__factory");
@@ -1,12 +1,12 @@
1
- import { GFarmTradingStorageV5, GNSPairInfosV6_1, GNSPairsStorageV6, GTokenOpenPnlFeed, GNSNftRewardsV6_3_1, GNSBorrowingFeesV6_3_2, GNSTradingCallbacksV6_3_2, GTokenV6_3_2 } from "./generated";
1
+ import { GFarmTradingStorageV5, GNSPairInfosV6_1, GNSPairsStorageV6, GTokenOpenPnlFeed, GNSNftRewardsV6_3_1, GNSBorrowingFeesV6_4, GNSTradingCallbacksV6_4, GTokenV6_3_2 } 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: GNSBorrowingFeesV6_3_2;
9
- gnsTradingCallbacks: GNSTradingCallbacksV6_3_2;
8
+ gnsBorrowingFees: GNSBorrowingFeesV6_4;
9
+ gnsTradingCallbacks: GNSTradingCallbacksV6_4;
10
10
  gDai: GTokenV6_3_2;
11
11
  };
12
12
  export type ContractAddresses = {
@@ -1,8 +1,8 @@
1
- import { GNSBorrowingFeesV6_3_2 } from "../types/generated";
1
+ import { GNSBorrowingFeesV6_4 } from "../types/generated";
2
2
  import { BorrowingFee } from "../../trade";
3
- export declare const fetchAllPairBorrowingFees: (contract: GNSBorrowingFeesV6_3_2) => Promise<BorrowingFee.Pair[]>;
4
- export declare const fetchGroupBorrowingFees: (contract: GNSBorrowingFeesV6_3_2, groupIxs: number[]) => Promise<BorrowingFee.Group[]>;
5
- export declare const fetchAllPairAndGroupBorrowingFees: (contract: GNSBorrowingFeesV6_3_2) => Promise<{
3
+ export declare const fetchAllPairBorrowingFees: (contract: GNSBorrowingFeesV6_4) => Promise<BorrowingFee.Pair[]>;
4
+ export declare const fetchGroupBorrowingFees: (contract: GNSBorrowingFeesV6_4, groupIxs: number[]) => Promise<BorrowingFee.Group[]>;
5
+ export declare const fetchAllPairAndGroupBorrowingFees: (contract: GNSBorrowingFeesV6_4) => Promise<{
6
6
  pairs: BorrowingFee.Pair[];
7
7
  groups: BorrowingFee.Group[];
8
8
  }>;
@@ -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,13 @@
1
- import { GNSBorrowingFeesInterfaceV6_3_2 } from "@/contracts/types/generated/GNSBorrowingFeesV6_3_2";
1
+ import { GNSBorrowingFeesInterfaceV6_4 } from "@/contracts/types/generated/GNSBorrowingFeesV6_4";
2
2
  import { BorrowingFee } from ".";
3
- export declare const convertPairGroupBorrowingFee: (pairGroup: GNSBorrowingFeesInterfaceV6_3_2.PairGroupStructOutput) => BorrowingFee.PairGroup;
4
- export declare const convertPairBorrowingFee: (pair: GNSBorrowingFeesInterfaceV6_3_2.PairStructOutput) => BorrowingFee.Pair;
5
- export declare const convertPairBorrowingFees: (pairs: GNSBorrowingFeesInterfaceV6_3_2.PairStructOutput[]) => BorrowingFee.Pair[];
6
- export declare const convertGroupBorrowingFee: (group: GNSBorrowingFeesInterfaceV6_3_2.GroupStructOutput) => BorrowingFee.Group;
7
- export declare const convertGroupBorrowingFees: (groups: GNSBorrowingFeesInterfaceV6_3_2.GroupStructOutput[]) => BorrowingFee.Group[];
3
+ export declare const convertPairGroupBorrowingFee: (pairGroup: GNSBorrowingFeesInterfaceV6_4.PairGroupStructOutput) => BorrowingFee.PairGroup;
4
+ export declare const convertPairBorrowingFee: (pair: GNSBorrowingFeesInterfaceV6_4.PairStructOutput, pairOi: GNSBorrowingFeesInterfaceV6_4.PairOiStructOutput) => BorrowingFee.Pair;
5
+ export declare const convertPairBorrowingFees: ([pairs, pairOi]: [
6
+ GNSBorrowingFeesInterfaceV6_4.PairStructOutput[],
7
+ GNSBorrowingFeesInterfaceV6_4.PairOiStructOutput[]
8
+ ]) => BorrowingFee.Pair[];
9
+ export declare const convertGroupBorrowingFee: (group: GNSBorrowingFeesInterfaceV6_4.GroupStructOutput, groupFeeExponent: number) => BorrowingFee.Group;
10
+ export declare const convertGroupBorrowingFees: ([groups, groupFeeExponents]: [
11
+ GNSBorrowingFeesInterfaceV6_4.GroupStructOutput[],
12
+ number[]
13
+ ]) => BorrowingFee.Group[];
@@ -12,18 +12,20 @@ const convertPairGroupBorrowingFee = (pairGroup) => ({
12
12
  block: pairGroup.block,
13
13
  });
14
14
  exports.convertPairGroupBorrowingFee = convertPairGroupBorrowingFee;
15
- const convertPairBorrowingFee = (pair) => ({
15
+ const convertPairBorrowingFee = (pair, pairOi) => ({
16
16
  feePerBlock: pair.feePerBlock / 1e10,
17
17
  accFeeLong: parseFloat(pair.accFeeLong.toString()) / 1e10,
18
18
  accFeeShort: parseFloat(pair.accFeeShort.toString()) / 1e10,
19
19
  accLastUpdatedBlock: pair.accLastUpdatedBlock,
20
20
  lastAccBlockWeightedMarketCap: parseFloat(pair.lastAccBlockWeightedMarketCap.toString()) / 1e40,
21
21
  groups: pair.groups.map(value => (0, exports.convertPairGroupBorrowingFee)(value)),
22
+ feeExponent: pair.feeExponent,
23
+ maxOi: parseFloat(pairOi.max.toString()) / 1e10,
22
24
  });
23
25
  exports.convertPairBorrowingFee = convertPairBorrowingFee;
24
- const convertPairBorrowingFees = (pairs) => pairs.map(value => (0, exports.convertPairBorrowingFee)(value));
26
+ const convertPairBorrowingFees = ([pairs, pairOi]) => pairs.map((value, ix) => (0, exports.convertPairBorrowingFee)(value, pairOi[ix]));
25
27
  exports.convertPairBorrowingFees = convertPairBorrowingFees;
26
- const convertGroupBorrowingFee = (group) => ({
28
+ const convertGroupBorrowingFee = (group, groupFeeExponent) => ({
27
29
  oiLong: parseFloat(group.oiLong.toString()) / 1e10,
28
30
  oiShort: parseFloat(group.oiShort.toString()) / 1e10,
29
31
  feePerBlock: group.feePerBlock / 1e10,
@@ -32,7 +34,8 @@ const convertGroupBorrowingFee = (group) => ({
32
34
  accLastUpdatedBlock: group.accLastUpdatedBlock,
33
35
  lastAccBlockWeightedMarketCap: parseFloat(group.lastAccBlockWeightedMarketCap.toString()) / 1e40,
34
36
  maxOi: parseFloat(group.maxOi.toString()) / 1e10,
37
+ feeExponent: groupFeeExponent,
35
38
  });
36
39
  exports.convertGroupBorrowingFee = convertGroupBorrowingFee;
37
- const convertGroupBorrowingFees = (groups) => groups.map(value => (0, exports.convertGroupBorrowingFee)(value));
40
+ const convertGroupBorrowingFees = ([groups, groupFeeExponents]) => groups.map((value, ix) => (0, exports.convertGroupBorrowingFee)(value, groupFeeExponents[ix]));
38
41
  exports.convertGroupBorrowingFees = convertGroupBorrowingFees;
@@ -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,17 +38,15 @@ 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, vaultMarketCap: 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, accBlockWeightedMarketCap: number, currentBlock: number) => number;
53
- getActiveGroupFeePerBlock: (group: BorrowingFee.Group, accBlockWeightedMarketCap: number, currentBlock: number) => number;
54
- getActiveFeePerBlock: (pair: BorrowingFee.Pair, group: BorrowingFee.Group | undefined, pairOpenInterest: OpenInterest, accBlockWeightedMarketCap: number, currentBlock: number) => number;
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;
@@ -74,20 +74,18 @@ const getPairGroupIndex = (pairIndex, context) => {
74
74
  return pairGroups.length == 0 ? 0 : pairGroups[0].groupIndex;
75
75
  };
76
76
  const getPairPendingAccFees = (pairIndex, currentBlock, context) => {
77
- const { pairs, openInterest: { long, short }, accBlockWeightedMarketCap, } = context;
77
+ const { pairs, openInterest: { long, short }, } = context;
78
78
  const pair = pairs[pairIndex];
79
- const vaultMarketCap = getWeightedVaultMarketCap(accBlockWeightedMarketCap, pair.lastAccBlockWeightedMarketCap, currentBlock - pair.accLastUpdatedBlock);
80
- return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, vaultMarketCap);
79
+ return getPendingAccFees(pair.accFeeLong, pair.accFeeShort, long, short, pair.feePerBlock, currentBlock, pair.accLastUpdatedBlock, pair.maxOi, pair.feeExponent);
81
80
  };
82
81
  const getPairPendingAccFee = (pairIndex, currentBlock, long, context) => {
83
82
  const { accFeeLong, accFeeShort } = getPairPendingAccFees(pairIndex, currentBlock, context);
84
83
  return long ? accFeeLong : accFeeShort;
85
84
  };
86
85
  const getGroupPendingAccFees = (groupIndex, currentBlock, context) => {
87
- const { groups, accBlockWeightedMarketCap } = context;
86
+ const { groups } = context;
88
87
  const group = groups[groupIndex];
89
- const vaultMarketCap = getWeightedVaultMarketCap(accBlockWeightedMarketCap, group.lastAccBlockWeightedMarketCap, currentBlock - group.accLastUpdatedBlock);
90
- return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.oiLong, group.oiShort, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, vaultMarketCap);
88
+ return getPendingAccFees(group.accFeeLong, group.accFeeShort, group.oiLong, group.oiShort, group.feePerBlock, currentBlock, group.accLastUpdatedBlock, group.maxOi, group.feeExponent);
91
89
  };
92
90
  const getGroupPendingAccFee = (groupIndex, currentBlock, long, context) => {
93
91
  const { accFeeLong, accFeeShort } = getGroupPendingAccFees(groupIndex, currentBlock, context);
@@ -98,15 +96,13 @@ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long,
98
96
  const beforeTradeOpen = group.block < initialFees.block;
99
97
  let deltaGroup, deltaPair;
100
98
  if (i == pairGroups.length - 1) {
101
- const { currentBlock, accBlockWeightedMarketCap, groups, pairs, openInterest, } = context;
99
+ const { currentBlock, groups, pairs, openInterest } = context;
102
100
  deltaGroup = getGroupPendingAccFee(group.groupIndex, currentBlock, long, {
103
101
  groups,
104
- accBlockWeightedMarketCap,
105
102
  });
106
103
  deltaPair = getPairPendingAccFee(pairIndex, currentBlock, long, {
107
104
  pairs,
108
105
  openInterest: openInterest,
109
- accBlockWeightedMarketCap,
110
106
  });
111
107
  }
112
108
  else {
@@ -129,36 +125,34 @@ const getPairGroupAccFeesDeltas = (i, pairGroups, initialFees, pairIndex, long,
129
125
  }
130
126
  return { deltaGroup, deltaPair, beforeTradeOpen };
131
127
  };
132
- const getPendingAccFees = (accFeeLong, accFeeShort, oiLong, oiShort, feePerBlock, currentBlock, accLastUpdatedBlock, vaultMarketCap) => {
133
- const delta = ((oiLong - oiShort) * feePerBlock * (currentBlock - accLastUpdatedBlock)) /
134
- vaultMarketCap;
135
- const newAccFeeLong = delta > 0 ? accFeeLong + delta : accFeeLong;
136
- const newAccFeeShort = delta < 0 ? accFeeShort - delta : accFeeShort;
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;
137
138
  return { accFeeLong: newAccFeeLong, accFeeShort: newAccFeeShort, delta };
138
139
  };
139
- const getWeightedVaultMarketCap = (accBlockWeightedMarketCap, lastAccBlockWeightedMarketCap, blockDelta) => {
140
- return blockDelta > 0
141
- ? blockDelta /
142
- (accBlockWeightedMarketCap - lastAccBlockWeightedMarketCap) /
143
- 1e18
144
- : 1;
145
- };
146
- const getActivePairFeePerBlock = (pair, openInterest, accBlockWeightedMarketCap, currentBlock) => {
140
+ const getActivePairFeePerBlock = (pair, openInterest) => {
147
141
  const { long, short } = openInterest;
148
- const vaultMarketCap = getWeightedVaultMarketCap(accBlockWeightedMarketCap, pair.lastAccBlockWeightedMarketCap, currentBlock - pair.accLastUpdatedBlock);
149
- return (Math.abs(long - short) * pair.feePerBlock) / vaultMarketCap;
142
+ const netOi = Math.abs(long - short);
143
+ return pair.feePerBlock * Math.pow((netOi / pair.maxOi), pair.feeExponent);
150
144
  };
151
- const getActiveGroupFeePerBlock = (group, accBlockWeightedMarketCap, currentBlock) => {
145
+ const getActiveGroupFeePerBlock = (group) => {
152
146
  const { oiLong, oiShort } = group;
153
- const vaultMarketCap = getWeightedVaultMarketCap(accBlockWeightedMarketCap, group.lastAccBlockWeightedMarketCap, currentBlock - group.accLastUpdatedBlock);
154
- return (Math.abs(oiLong - oiShort) * group.feePerBlock) / vaultMarketCap;
147
+ const netOi = Math.abs(oiLong - oiShort);
148
+ return group.feePerBlock * Math.pow((netOi / group.maxOi), group.feeExponent);
155
149
  };
156
- const getActiveFeePerBlock = (pair, group, pairOpenInterest, accBlockWeightedMarketCap, currentBlock) => {
157
- const pairFeePerBlock = getActivePairFeePerBlock(pair, pairOpenInterest, accBlockWeightedMarketCap, currentBlock);
150
+ const getActiveFeePerBlock = (pair, group, pairOpenInterest) => {
151
+ const pairFeePerBlock = getActivePairFeePerBlock(pair, pairOpenInterest);
158
152
  if (!group) {
159
153
  return pairFeePerBlock;
160
154
  }
161
- const groupFeePerBlock = getActiveGroupFeePerBlock(group, accBlockWeightedMarketCap, currentBlock);
155
+ const groupFeePerBlock = getActiveGroupFeePerBlock(group);
162
156
  return Math.max(pairFeePerBlock, groupFeePerBlock);
163
157
  };
164
158
  exports.borrowingFeeUtils = {
@@ -171,7 +165,6 @@ exports.borrowingFeeUtils = {
171
165
  getActivePairFeePerBlock,
172
166
  getActiveGroupFeePerBlock,
173
167
  getActiveFeePerBlock,
174
- getWeightedVaultMarketCap,
175
168
  getPairGroupIndex,
176
169
  };
177
170
  exports.BorrowingFee = __importStar(require("./types"));
@@ -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 - spreadWithPriceImpactP)
22
- : askingPrice * (1 + spreadWithPriceImpactP);
21
+ ? askingPrice * (1 + spreadWithPriceImpactP)
22
+ : askingPrice * (1 - spreadWithPriceImpactP);
23
23
  };
24
24
  exports.getFulfillmentPrice = getFulfillmentPrice;
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gainsnetwork/sdk",
3
- "version": "0.0.29-rc1",
3
+ "version": "0.0.30-rc2",
4
4
  "description": "Gains Network SDK",
5
5
  "main": "./lib/index.js",
6
6
  "files": [