@dhedge/backend-flatcoin-core 0.2.99 → 0.3.0

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.
@@ -10,5 +10,4 @@ export { LimitOrder } from './abi/limit-order';
10
10
  export { DelayedOrder } from './abi/delayed-order';
11
11
  export { FlatcoinVault } from './abi/flatcoin-vault';
12
12
  export { CanLiquidateWithPriceFeeds } from './abi/liquidation-module';
13
- export { PythPriceFeed } from './abi/pyth-price-feed';
14
13
  export * from './helpers';
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.PythPriceFeed = exports.CanLiquidateWithPriceFeeds = exports.FlatcoinVault = exports.DelayedOrder = exports.LimitOrder = exports.LiquidateWithoutPriceFeeds = exports.Liquidate = exports.LiquidationModule = exports.LeverageModule = exports.FlatcoinErrors = exports.ViewerGetPositionData = exports.Viewer = exports.StableModule = void 0;
17
+ exports.CanLiquidateWithPriceFeeds = exports.FlatcoinVault = exports.DelayedOrder = exports.LimitOrder = exports.LiquidateWithoutPriceFeeds = exports.Liquidate = exports.LiquidationModule = exports.LeverageModule = exports.FlatcoinErrors = exports.ViewerGetPositionData = exports.Viewer = exports.StableModule = void 0;
18
18
  var stable_module_1 = require("./abi/stable-module");
19
19
  Object.defineProperty(exports, "StableModule", { enumerable: true, get: function () { return stable_module_1.StableModule; } });
20
20
  var viewer_1 = require("./abi/viewer");
@@ -39,6 +39,4 @@ var flatcoin_vault_1 = require("./abi/flatcoin-vault");
39
39
  Object.defineProperty(exports, "FlatcoinVault", { enumerable: true, get: function () { return flatcoin_vault_1.FlatcoinVault; } });
40
40
  var liquidation_module_4 = require("./abi/liquidation-module");
41
41
  Object.defineProperty(exports, "CanLiquidateWithPriceFeeds", { enumerable: true, get: function () { return liquidation_module_4.CanLiquidateWithPriceFeeds; } });
42
- var pyth_price_feed_1 = require("./abi/pyth-price-feed");
43
- Object.defineProperty(exports, "PythPriceFeed", { enumerable: true, get: function () { return pyth_price_feed_1.PythPriceFeed; } });
44
42
  __exportStar(require("./helpers"), exports);
@@ -8,12 +8,10 @@ export declare class GraphQueryService {
8
8
  getAnnouncedOrders(timestampFrom: number): Promise<AnnouncedOrder[]>;
9
9
  getLeverageOpensFromBLock(blockFrom: number): Promise<LeverageOpen[]>;
10
10
  getLeverageOpensByTimestampFrom(timestampFrom: number): Promise<LeverageOpen[]>;
11
- getLeverageOpensByTokenId(tokenId: number): Promise<LeverageOpen[]>;
12
11
  getLeverageClosesFromBlock(blockFrom: number): Promise<LeverageClose[]>;
13
12
  getLeverageClosesByTimestampFrom(timestampFrom: number): Promise<LeverageClose[]>;
14
13
  getLeverageAdjustsByTimestampFrom(timestampFrom: number): Promise<LeverageAdjust[]>;
15
14
  getLeverageAdjustsFromBlock(blockNumber: number): Promise<LeverageAdjust[]>;
16
- getLeverageAdjustsByTokenId(tokenId: number): Promise<LeverageAdjust[]>;
17
15
  getPositionLiquidateds(blockFrom: number): Promise<PositionLiquidated[]>;
18
16
  getDeposits(blockFrom: number): Promise<DepositEvent[]>;
19
17
  getDepositsByTimestampFrom(timestampFrom: number): Promise<DepositEvent[]>;
@@ -35,11 +33,9 @@ export declare class GraphQueryService {
35
33
  export declare const getAnnouncedOrdersQuery: string;
36
34
  export declare const getLeverageOpensQuery: string;
37
35
  export declare const getLeverageOpensByTimestampFromQuery: string;
38
- export declare const getLeverageOpensByTokenIdQuery: string;
39
36
  export declare const getLeverageClosesQuery: string;
40
37
  export declare const getLeverageClosesByTimestampFromQuery: string;
41
38
  export declare const getLeverageAdjustsByTimestampFromQuery: string;
42
- export declare const getLeverageAdjustsByTokenIdQuery: string;
43
39
  export declare const getLeverageAdjustsByBlockFromQuery: string;
44
40
  export declare const getPositionLiquidatedsQuery: string;
45
41
  export declare const getDepositsQuery: string;
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.getUnitHoldersQueryPaginated = exports.getClosedPositionsQueryByCloseBlockFrom = exports.getClosedPositionsQuery = exports.getClosedPositionsQueryPaginated = exports.getOpenPositionsQueryPaginated = exports.getLimitOrderExecutedsByTimestampFromQuery = exports.getLimitOrderAnnouncedsQuery = exports.getWithdrawsByWithdrawerAddressQuery = exports.getWithdrawsByTimestampFromQuery = exports.getWithdrawsQuery = exports.getDepositsByDepositorAddressQuery = exports.getDepositsByTimestampFromQuery = exports.getDepositsQuery = exports.getPositionLiquidatedsQuery = exports.getLeverageAdjustsByBlockFromQuery = exports.getLeverageAdjustsByTokenIdQuery = exports.getLeverageAdjustsByTimestampFromQuery = exports.getLeverageClosesByTimestampFromQuery = exports.getLeverageClosesQuery = exports.getLeverageOpensByTokenIdQuery = exports.getLeverageOpensByTimestampFromQuery = exports.getLeverageOpensQuery = exports.getAnnouncedOrdersQuery = exports.GraphQueryService = void 0;
12
+ exports.getUnitHoldersQueryPaginated = exports.getClosedPositionsQueryByCloseBlockFrom = exports.getClosedPositionsQuery = exports.getClosedPositionsQueryPaginated = exports.getOpenPositionsQueryPaginated = exports.getLimitOrderExecutedsByTimestampFromQuery = exports.getLimitOrderAnnouncedsQuery = exports.getWithdrawsByWithdrawerAddressQuery = exports.getWithdrawsByTimestampFromQuery = exports.getWithdrawsQuery = exports.getDepositsByDepositorAddressQuery = exports.getDepositsByTimestampFromQuery = exports.getDepositsQuery = exports.getPositionLiquidatedsQuery = exports.getLeverageAdjustsByBlockFromQuery = exports.getLeverageAdjustsByTimestampFromQuery = exports.getLeverageClosesByTimestampFromQuery = exports.getLeverageClosesQuery = exports.getLeverageOpensByTimestampFromQuery = exports.getLeverageOpensQuery = exports.getAnnouncedOrdersQuery = exports.GraphQueryService = void 0;
13
13
  const common_1 = require("@nestjs/common");
14
14
  const graphql_request_1 = require("graphql-request");
15
15
  let GraphQueryService = class GraphQueryService {
@@ -53,18 +53,6 @@ let GraphQueryService = class GraphQueryService {
53
53
  throw error;
54
54
  }
55
55
  }
56
- async getLeverageOpensByTokenId(tokenId) {
57
- const variables = { tokenId: tokenId };
58
- try {
59
- const response = await this.graphQLClient.request(exports.getLeverageOpensByTokenIdQuery, variables);
60
- this.logger.log(`Fetched ${response.leverageOpens.length} leverageOpens events from the graph for tokenId: ${tokenId}`);
61
- return response.leverageOpens;
62
- }
63
- catch (error) {
64
- this.logger.error(`Error fetching leverageOpens events from the graph for tokenId: ${tokenId}`, error);
65
- throw error;
66
- }
67
- }
68
56
  async getLeverageClosesFromBlock(blockFrom) {
69
57
  const variables = { fromBlock: blockFrom };
70
58
  try {
@@ -113,18 +101,6 @@ let GraphQueryService = class GraphQueryService {
113
101
  throw error;
114
102
  }
115
103
  }
116
- async getLeverageAdjustsByTokenId(tokenId) {
117
- const variables = { tokenId: tokenId };
118
- try {
119
- const response = await this.graphQLClient.request(exports.getLeverageAdjustsByTokenIdQuery, variables);
120
- this.logger.log(`Fetched ${response.leverageAdjusts.length} leverageAdjusts events from the graph for tokenId: ${tokenId}`);
121
- return response.leverageAdjusts;
122
- }
123
- catch (error) {
124
- this.logger.error(`Error fetching leverageAdjusts events from the graph by tokenId: ${tokenId}`, error);
125
- throw error;
126
- }
127
- }
128
104
  async getPositionLiquidateds(blockFrom) {
129
105
  const variables = { fromBlock: blockFrom };
130
106
  try {
@@ -385,21 +361,6 @@ exports.getLeverageOpensByTimestampFromQuery = (0, graphql_request_1.gql) `
385
361
  }
386
362
  }
387
363
  `;
388
- exports.getLeverageOpensByTokenIdQuery = (0, graphql_request_1.gql) `
389
- query GetLeverageOpens($tokenId: Int) {
390
- leverageOpens(where: { tokenId: $tokenId }, first: 1000) {
391
- blockNumber
392
- blockTimestamp
393
- entryPrice
394
- tokenId
395
- account
396
- margin
397
- size
398
- transactionHash
399
- executedBy
400
- }
401
- }
402
- `;
403
364
  exports.getLeverageClosesQuery = (0, graphql_request_1.gql) `
404
365
  query GetLeverageCloses($fromBlock: Int) {
405
366
  leverageCloses(where: { blockNumber_gt: $fromBlock }, first: 1000) {
@@ -442,20 +403,6 @@ exports.getLeverageAdjustsByTimestampFromQuery = (0, graphql_request_1.gql) `
442
403
  }
443
404
  }
444
405
  `;
445
- exports.getLeverageAdjustsByTokenIdQuery = (0, graphql_request_1.gql) `
446
- query GetLeverageAdjusts($tokenId: Int) {
447
- leverageAdjusts(where: { tokenId: $tokenId }, first: 1000) {
448
- tokenId
449
- marginDelta
450
- sizeDelta
451
- blockTimestamp
452
- transactionHash
453
- adjustPrice
454
- executedBy
455
- blockNumber
456
- }
457
- }
458
- `;
459
406
  exports.getLeverageAdjustsByBlockFromQuery = (0, graphql_request_1.gql) `
460
407
  query GetLeverageAdjusts($blockNumber: Int) {
461
408
  leverageAdjusts(where: { blockNumber_gt: $blockNumber }, first: 1000) {
@@ -3,9 +3,11 @@ export declare class NotificationService {
3
3
  private readonly logger;
4
4
  private readonly slackUri;
5
5
  private readonly slackEmergencyUri;
6
+ private readonly slackMonitoringUri;
6
7
  private readonly telegramUri;
7
8
  constructor(logger: Logger);
8
9
  sendSlackNotification(message: string, slackUri?: string): Promise<void>;
9
10
  sendSlackEmergencyNotification(message: string, slackUri?: string): Promise<void>;
11
+ sendSlackMonitoringNotification(message: string, slackUri?: string): Promise<void>;
10
12
  sendTelegramNotification(message: string): Promise<void>;
11
13
  }
@@ -34,6 +34,11 @@ let NotificationService = class NotificationService {
34
34
  }
35
35
  else
36
36
  this.logger.warn('NotificationService -> env property SLACK_EMERGENCY_CHANNEL is not provided');
37
+ if (process.env.SLACK_MONITORING_CHANNEL) {
38
+ this.slackMonitoringUri = process.env.SLACK_MONITORING_CHANNEL;
39
+ }
40
+ else
41
+ this.logger.warn('NotificationService -> env property SLACK_MONITORING_CHANNEL is not provided');
37
42
  }
38
43
  async sendSlackNotification(message, slackUri = this.slackUri) {
39
44
  try {
@@ -51,6 +56,16 @@ let NotificationService = class NotificationService {
51
56
  this.logger.error(`Error sending notification '${message}' to slack channel ${process.env.SLACK_EMERGENCY_CHANNEL}`, error);
52
57
  }
53
58
  }
59
+ async sendSlackMonitoringNotification(message, slackUri = this.slackMonitoringUri) {
60
+ if (this.slackMonitoringUri) {
61
+ try {
62
+ await axios_1.default.post(slackUri, { text: message });
63
+ }
64
+ catch (error) {
65
+ this.logger.error(`Error sending notification '${message}' to slack channel ${process.env.SLACK_MONITORING_CHANNEL}`, error);
66
+ }
67
+ }
68
+ }
54
69
  async sendTelegramNotification(message) {
55
70
  if (this.telegramUri) {
56
71
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhedge/backend-flatcoin-core",
3
- "version": "0.2.99",
3
+ "version": "0.3.0",
4
4
  "description": "Backend Flatcoin Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,8 +24,7 @@
24
24
  "nest-winston": "1.9.3",
25
25
  "typeorm": "^0.3.17",
26
26
  "winston": "3.10.0",
27
- "graphql-request": "6.1.0",
28
- "nestjs-ethers": "^2.0.3"
27
+ "graphql-request": "6.1.0"
29
28
  },
30
29
  "devDependencies": {
31
30
  "@nestjs/testing": "^9.4.3",
@@ -46,8 +45,7 @@
46
45
  "prettier": "^2.3.2",
47
46
  "rimraf": "5.0.5",
48
47
  "ts-jest": "29.1.0",
49
- "typescript": "^5.0.0",
50
- "@ethersproject/providers": "^5.7.2"
48
+ "typescript": "^5.0.0"
51
49
  },
52
50
  "repository": {
53
51
  "type": "git",
@@ -1,43 +0,0 @@
1
- export declare const PythPriceFeed: ({
2
- inputs: {
3
- internalType: string;
4
- name: string;
5
- type: string;
6
- }[];
7
- name: string;
8
- outputs: {
9
- components: ({
10
- internalType: string;
11
- name: string;
12
- type: string;
13
- components?: undefined;
14
- } | {
15
- components: {
16
- internalType: string;
17
- name: string;
18
- type: string;
19
- }[];
20
- internalType: string;
21
- name: string;
22
- type: string;
23
- })[];
24
- internalType: string;
25
- name: string;
26
- type: string;
27
- }[];
28
- stateMutability: string;
29
- type: string;
30
- anonymous?: undefined;
31
- } | {
32
- anonymous: boolean;
33
- inputs: {
34
- indexed: boolean;
35
- internalType: string;
36
- name: string;
37
- type: string;
38
- }[];
39
- name: string;
40
- type: string;
41
- outputs?: undefined;
42
- stateMutability?: undefined;
43
- })[];
@@ -1,110 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PythPriceFeed = void 0;
4
- exports.PythPriceFeed = [
5
- {
6
- inputs: [
7
- {
8
- internalType: 'bytes32',
9
- name: 'id',
10
- type: 'bytes32',
11
- },
12
- ],
13
- name: 'queryPriceFeed',
14
- outputs: [
15
- {
16
- components: [
17
- {
18
- internalType: 'bytes32',
19
- name: 'id',
20
- type: 'bytes32',
21
- },
22
- {
23
- components: [
24
- {
25
- internalType: 'int64',
26
- name: 'price',
27
- type: 'int64',
28
- },
29
- {
30
- internalType: 'uint64',
31
- name: 'conf',
32
- type: 'uint64',
33
- },
34
- {
35
- internalType: 'int32',
36
- name: 'expo',
37
- type: 'int32',
38
- },
39
- {
40
- internalType: 'uint256',
41
- name: 'publishTime',
42
- type: 'uint256',
43
- },
44
- ],
45
- internalType: 'struct PythStructs.Price',
46
- name: 'price',
47
- type: 'tuple',
48
- },
49
- {
50
- components: [
51
- {
52
- internalType: 'int64',
53
- name: 'price',
54
- type: 'int64',
55
- },
56
- {
57
- internalType: 'uint64',
58
- name: 'conf',
59
- type: 'uint64',
60
- },
61
- {
62
- internalType: 'int32',
63
- name: 'expo',
64
- type: 'int32',
65
- },
66
- {
67
- internalType: 'uint256',
68
- name: 'publishTime',
69
- type: 'uint256',
70
- },
71
- ],
72
- internalType: 'struct PythStructs.Price',
73
- name: 'emaPrice',
74
- type: 'tuple',
75
- },
76
- ],
77
- internalType: 'struct PythStructs.PriceFeed',
78
- name: 'priceFeed',
79
- type: 'tuple',
80
- },
81
- ],
82
- stateMutability: 'view',
83
- type: 'function',
84
- },
85
- {
86
- anonymous: false,
87
- inputs: [
88
- {
89
- indexed: true,
90
- internalType: 'address',
91
- name: 'owner',
92
- type: 'address',
93
- },
94
- {
95
- indexed: true,
96
- internalType: 'address',
97
- name: 'spender',
98
- type: 'address',
99
- },
100
- {
101
- indexed: false,
102
- internalType: 'uint256',
103
- name: 'value',
104
- type: 'uint256',
105
- },
106
- ],
107
- name: 'Approval',
108
- type: 'event',
109
- },
110
- ];