@dhedge/backend-flatcoin-core 0.2.43 → 0.2.44

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.
@@ -14,4 +14,5 @@ export * from './position-entity';
14
14
  export * from './borrowing-rate-apy-history';
15
15
  export * from './leverage-leaderboard';
16
16
  export * from './order-execution';
17
+ export * from './protocol-metrics';
17
18
  export * from './leverage-monthly-pnl';
@@ -30,4 +30,5 @@ __exportStar(require("./position-entity"), exports);
30
30
  __exportStar(require("./borrowing-rate-apy-history"), exports);
31
31
  __exportStar(require("./leverage-leaderboard"), exports);
32
32
  __exportStar(require("./order-execution"), exports);
33
+ __exportStar(require("./protocol-metrics"), exports);
33
34
  __exportStar(require("./leverage-monthly-pnl"), exports);
@@ -47,5 +47,5 @@ __decorate([
47
47
  ], LeverageMonthlyPnl.prototype, "lastClosedPositionTimestamp", void 0);
48
48
  exports.LeverageMonthlyPnl = LeverageMonthlyPnl = __decorate([
49
49
  (0, graphql_1.ObjectType)(),
50
- (0, typeorm_1.Entity)({ name: 'leverage_leaderboard' })
50
+ (0, typeorm_1.Entity)({ name: 'leverage_monthly_pnl' })
51
51
  ], LeverageMonthlyPnl);
@@ -0,0 +1,10 @@
1
+ import { BigNumber } from 'ethers';
2
+ export declare class ProtocolMetrics {
3
+ id: number;
4
+ unitDepositsVolume: BigNumber;
5
+ unitWithdrawalsVolume: BigNumber;
6
+ leverageOpensVolume: BigNumber;
7
+ leverageAdjustsVolume: BigNumber;
8
+ leverageClosesVolume: BigNumber;
9
+ blockSynced: number;
10
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ProtocolMetrics = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const utils_1 = require("../utils");
15
+ const ethers_1 = require("ethers");
16
+ let ProtocolMetrics = class ProtocolMetrics {
17
+ };
18
+ exports.ProtocolMetrics = ProtocolMetrics;
19
+ __decorate([
20
+ (0, typeorm_1.PrimaryGeneratedColumn)({ name: 'id' }),
21
+ __metadata("design:type", Number)
22
+ ], ProtocolMetrics.prototype, "id", void 0);
23
+ __decorate([
24
+ (0, typeorm_1.Column)({ name: 'unit_deposits_volume', type: 'bigint', precision: 30, transformer: utils_1.bigNumberTransformer }),
25
+ __metadata("design:type", ethers_1.BigNumber)
26
+ ], ProtocolMetrics.prototype, "unitDepositsVolume", void 0);
27
+ __decorate([
28
+ (0, typeorm_1.Column)({ name: 'unit_withdrawals_volume', type: 'bigint', precision: 30, transformer: utils_1.bigNumberTransformer }),
29
+ __metadata("design:type", ethers_1.BigNumber)
30
+ ], ProtocolMetrics.prototype, "unitWithdrawalsVolume", void 0);
31
+ __decorate([
32
+ (0, typeorm_1.Column)({ name: 'leverage_opens_volume', type: 'bigint', precision: 30, transformer: utils_1.bigNumberTransformer }),
33
+ __metadata("design:type", ethers_1.BigNumber)
34
+ ], ProtocolMetrics.prototype, "leverageOpensVolume", void 0);
35
+ __decorate([
36
+ (0, typeorm_1.Column)({ name: 'leverage_adjusts_volume', type: 'bigint', precision: 30, transformer: utils_1.bigNumberTransformer }),
37
+ __metadata("design:type", ethers_1.BigNumber)
38
+ ], ProtocolMetrics.prototype, "leverageAdjustsVolume", void 0);
39
+ __decorate([
40
+ (0, typeorm_1.Column)({ name: 'leverage_closes_volume', type: 'bigint', precision: 30, transformer: utils_1.bigNumberTransformer }),
41
+ __metadata("design:type", ethers_1.BigNumber)
42
+ ], ProtocolMetrics.prototype, "leverageClosesVolume", void 0);
43
+ __decorate([
44
+ (0, typeorm_1.Column)({ name: 'block_synced', type: 'numeric', precision: 25, transformer: utils_1.numericTransformer }),
45
+ __metadata("design:type", Number)
46
+ ], ProtocolMetrics.prototype, "blockSynced", void 0);
47
+ exports.ProtocolMetrics = ProtocolMetrics = __decorate([
48
+ (0, typeorm_1.Entity)({ name: 'protocol_metrics' })
49
+ ], ProtocolMetrics);
@@ -7,4 +7,5 @@ export * from './price.repository';
7
7
  export * from './borrowing-rate-apy-history.repository';
8
8
  export * from './leverage-leaderboard.repository';
9
9
  export * from './order-execution.repository';
10
+ export * from './protocol-metrics.repository';
10
11
  export * from './leverage-monthly-pnl.repository';
@@ -23,4 +23,5 @@ __exportStar(require("./price.repository"), exports);
23
23
  __exportStar(require("./borrowing-rate-apy-history.repository"), exports);
24
24
  __exportStar(require("./leverage-leaderboard.repository"), exports);
25
25
  __exportStar(require("./order-execution.repository"), exports);
26
+ __exportStar(require("./protocol-metrics.repository"), exports);
26
27
  __exportStar(require("./leverage-monthly-pnl.repository"), exports);
@@ -25,6 +25,7 @@ let LeverageMonthlyPnlRepository = class LeverageMonthlyPnlRepository {
25
25
  return await this.repository
26
26
  .createQueryBuilder('leverageMonthlyPnl')
27
27
  .where('leverageMonthlyPnl.account = :account')
28
+ .orderBy('leverageMonthlyPnl.timestamp', 'ASC')
28
29
  .setParameter('account', account)
29
30
  .getMany();
30
31
  }
@@ -0,0 +1,8 @@
1
+ import { Repository } from 'typeorm';
2
+ import { ProtocolMetrics } from '../entity';
3
+ export declare class ProtocolMetricsRepository {
4
+ private repository;
5
+ constructor(repository: Repository<ProtocolMetrics>);
6
+ save(protocolMetrics: ProtocolMetrics): Promise<ProtocolMetrics>;
7
+ getLatestRecord(): Promise<ProtocolMetrics | null>;
8
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ProtocolMetricsRepository = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ const typeorm_1 = require("@nestjs/typeorm");
18
+ const typeorm_2 = require("typeorm");
19
+ const entity_1 = require("../entity");
20
+ let ProtocolMetricsRepository = class ProtocolMetricsRepository {
21
+ constructor(repository) {
22
+ this.repository = repository;
23
+ }
24
+ async save(protocolMetrics) {
25
+ return this.repository.save(protocolMetrics);
26
+ }
27
+ async getLatestRecord() {
28
+ return this.repository.createQueryBuilder().orderBy('block_synced', 'DESC').limit(1).getOne();
29
+ }
30
+ };
31
+ exports.ProtocolMetricsRepository = ProtocolMetricsRepository;
32
+ exports.ProtocolMetricsRepository = ProtocolMetricsRepository = __decorate([
33
+ (0, common_1.Injectable)(),
34
+ __param(0, (0, typeorm_1.InjectRepository)(entity_1.ProtocolMetrics)),
35
+ __metadata("design:paramtypes", [typeorm_2.Repository])
36
+ ], ProtocolMetricsRepository);
@@ -23,6 +23,7 @@ export declare class GraphQueryService {
23
23
  getAllOpenPositions(): Promise<Position[]>;
24
24
  getOpenPositions(skip: number, first: number): Promise<Position[]>;
25
25
  getClosedPositions(closeTimestampVar: number): Promise<Position[]>;
26
+ getClosedPositionsByCloseBlockFrom(closeBlockFrom: number): Promise<Position[]>;
26
27
  }
27
28
  export declare const getAnnouncedOrdersQuery: string;
28
29
  export declare const getLeverageOpensQuery: string;
@@ -41,3 +42,4 @@ export declare const getLimitOrderAnnouncedsQuery: string;
41
42
  export declare const getLimitOrderExecutedsByTimestampFromQuery: string;
42
43
  export declare const getOpenPositionsQuery: string;
43
44
  export declare const getClosedPositionsQuery: string;
45
+ export declare const getClosedPositionsQueryByCloseBlockFrom: 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.getClosedPositionsQuery = exports.getOpenPositionsQuery = exports.getLimitOrderExecutedsByTimestampFromQuery = exports.getLimitOrderAnnouncedsQuery = exports.getWithdrawsByWithdrawerAddressQuery = exports.getWithdrawsByTimestampFromQuery = exports.getWithdrawsQuery = exports.getDepositsByDepositorAddressQuery = exports.getDepositsByTimestampFromQuery = exports.getDepositsQuery = exports.getPositionLiquidatedsQuery = exports.getLeverageAdjustsByTimestampFromQuery = exports.getLeverageClosesByTimestampFromQuery = exports.getLeverageClosesQuery = exports.getLeverageOpensByTimestampFromQuery = exports.getLeverageOpensQuery = exports.getAnnouncedOrdersQuery = exports.GraphQueryService = void 0;
12
+ exports.getClosedPositionsQueryByCloseBlockFrom = exports.getClosedPositionsQuery = exports.getOpenPositionsQuery = exports.getLimitOrderExecutedsByTimestampFromQuery = exports.getLimitOrderAnnouncedsQuery = exports.getWithdrawsByWithdrawerAddressQuery = exports.getWithdrawsByTimestampFromQuery = exports.getWithdrawsQuery = exports.getDepositsByDepositorAddressQuery = exports.getDepositsByTimestampFromQuery = exports.getDepositsQuery = exports.getPositionLiquidatedsQuery = 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
  const constants_1 = require("../constants");
@@ -242,6 +242,18 @@ let GraphQueryService = class GraphQueryService {
242
242
  throw error;
243
243
  }
244
244
  }
245
+ async getClosedPositionsByCloseBlockFrom(closeBlockFrom) {
246
+ const variables = { closeBlockFrom };
247
+ try {
248
+ const response = await this.graphQLClient.request(exports.getClosedPositionsQueryByCloseBlockFrom, variables);
249
+ this.logger.log(`Fetched ${response.positions.length} closed positions from the graph from block ${closeBlockFrom}`);
250
+ return response.positions;
251
+ }
252
+ catch (error) {
253
+ this.logger.error(`Error fetching open positions from the graph from block ${closeBlockFrom}:`, error);
254
+ throw error;
255
+ }
256
+ }
245
257
  };
246
258
  exports.GraphQueryService = GraphQueryService;
247
259
  exports.GraphQueryService = GraphQueryService = __decorate([
@@ -433,7 +445,7 @@ exports.getOpenPositionsQuery = (0, graphql_request_1.gql) `
433
445
  }
434
446
  `;
435
447
  exports.getClosedPositionsQuery = (0, graphql_request_1.gql) `
436
- query GetOpenPositions($closeTimestampVar: Int) {
448
+ query GetClosedPositions($closeTimestampVar: Int) {
437
449
  positions(
438
450
  where: { status_in: [1, 2, 3], closeTimestamp_gt: $closeTimestampVar }
439
451
  orderBy: closeTimestamp
@@ -444,6 +456,23 @@ exports.getClosedPositionsQuery = (0, graphql_request_1.gql) `
444
456
  margin
445
457
  status
446
458
  closeTimestamp
459
+ accruedFunding
460
+ }
461
+ }
462
+ `;
463
+ exports.getClosedPositionsQueryByCloseBlockFrom = (0, graphql_request_1.gql) `
464
+ query GetClosedPositions($closeBlockFrom: Int) {
465
+ positions(
466
+ where: { status_in: [1, 2, 3], closeBlock_gt: $closeBlockFrom }
467
+ orderBy: closeBlock
468
+ orderDirection: desc
469
+ ) {
470
+ account
471
+ profitLoss
472
+ margin
473
+ status
474
+ closeTimestamp
475
+ accruedFunding
447
476
  }
448
477
  }
449
478
  `;
@@ -72,6 +72,7 @@ export interface Position {
72
72
  profitLoss: number;
73
73
  margin: number;
74
74
  closeTimestamp: number;
75
+ accruedFunding: number;
75
76
  }
76
77
  export interface DepositEventsData {
77
78
  deposits: DepositEvent[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhedge/backend-flatcoin-core",
3
- "version": "0.2.43",
3
+ "version": "0.2.44",
4
4
  "description": "Backend Flatcoin Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",