@dhedge/backend-flatcoin-core 0.2.28 → 0.2.29

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.
@@ -12,3 +12,4 @@ export * from './period-performance';
12
12
  export * from './limit-order.entity';
13
13
  export * from './position-entity';
14
14
  export * from './borrowing-rate-apy-history';
15
+ export * from './leverage-leaderboard';
@@ -28,3 +28,4 @@ __exportStar(require("./period-performance"), exports);
28
28
  __exportStar(require("./limit-order.entity"), exports);
29
29
  __exportStar(require("./position-entity"), exports);
30
30
  __exportStar(require("./borrowing-rate-apy-history"), exports);
31
+ __exportStar(require("./leverage-leaderboard"), exports);
@@ -0,0 +1,9 @@
1
+ import { BigNumber } from 'ethers';
2
+ export declare class LeverageLeaderboard {
3
+ id: number;
4
+ account: string;
5
+ totalPnlReth: BigNumber;
6
+ totalTradedVolumeReth: BigNumber;
7
+ closedTradesCount: number;
8
+ lastClosedPositionTimestamp: number;
9
+ }
@@ -0,0 +1,52 @@
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.LeverageLeaderboard = void 0;
13
+ const graphql_1 = require("@nestjs/graphql");
14
+ const typeorm_1 = require("typeorm");
15
+ const utils_1 = require("../utils");
16
+ const ethers_1 = require("ethers");
17
+ let LeverageLeaderboard = class LeverageLeaderboard {
18
+ };
19
+ exports.LeverageLeaderboard = LeverageLeaderboard;
20
+ __decorate([
21
+ (0, typeorm_1.PrimaryGeneratedColumn)({ name: 'id' }),
22
+ __metadata("design:type", Number)
23
+ ], LeverageLeaderboard.prototype, "id", void 0);
24
+ __decorate([
25
+ (0, graphql_1.Field)(() => String, { nullable: false }),
26
+ (0, typeorm_1.Column)({ name: 'account', unique: true, nullable: false }),
27
+ __metadata("design:type", String)
28
+ ], LeverageLeaderboard.prototype, "account", void 0);
29
+ __decorate([
30
+ (0, graphql_1.Field)(() => graphql_1.Float, { nullable: true }),
31
+ (0, typeorm_1.Column)({ name: 'total_pnl_reth', type: 'bigint', precision: 30, transformer: utils_1.bigNumberTransformer }),
32
+ __metadata("design:type", ethers_1.BigNumber)
33
+ ], LeverageLeaderboard.prototype, "totalPnlReth", void 0);
34
+ __decorate([
35
+ (0, graphql_1.Field)(() => graphql_1.Float, { nullable: true }),
36
+ (0, typeorm_1.Column)({ name: 'total_traded_volume_reth', type: 'bigint', precision: 30, transformer: utils_1.bigNumberTransformer }),
37
+ __metadata("design:type", ethers_1.BigNumber)
38
+ ], LeverageLeaderboard.prototype, "totalTradedVolumeReth", void 0);
39
+ __decorate([
40
+ (0, graphql_1.Field)(() => graphql_1.Float, { nullable: true }),
41
+ (0, typeorm_1.Column)({ name: 'closed_trades_count', type: 'numeric', precision: 25, transformer: utils_1.numericTransformer }),
42
+ __metadata("design:type", Number)
43
+ ], LeverageLeaderboard.prototype, "closedTradesCount", void 0);
44
+ __decorate([
45
+ (0, graphql_1.Field)(() => graphql_1.Float, { nullable: true }),
46
+ (0, typeorm_1.Column)({ name: 'last_closed_position_timestamp', type: 'numeric', precision: 25, transformer: utils_1.numericTransformer }),
47
+ __metadata("design:type", Number)
48
+ ], LeverageLeaderboard.prototype, "lastClosedPositionTimestamp", void 0);
49
+ exports.LeverageLeaderboard = LeverageLeaderboard = __decorate([
50
+ (0, graphql_1.ObjectType)(),
51
+ (0, typeorm_1.Entity)({ name: 'leverage_leaderboard' })
52
+ ], LeverageLeaderboard);
@@ -1,5 +1,5 @@
1
1
  import { Repository } from 'typeorm';
2
- import { BorrowingRateApyHistory } from '../entity/borrowing-rate-apy-history';
2
+ import { BorrowingRateApyHistory } from '../entity';
3
3
  export declare class BorrowingRateApyHistoryRepository {
4
4
  private readonly repository;
5
5
  constructor(repository: Repository<BorrowingRateApyHistory>);
@@ -16,7 +16,7 @@ exports.BorrowingRateApyHistoryRepository = void 0;
16
16
  const common_1 = require("@nestjs/common");
17
17
  const typeorm_1 = require("@nestjs/typeorm");
18
18
  const typeorm_2 = require("typeorm");
19
- const borrowing_rate_apy_history_1 = require("../entity/borrowing-rate-apy-history");
19
+ const entity_1 = require("../entity");
20
20
  let BorrowingRateApyHistoryRepository = class BorrowingRateApyHistoryRepository {
21
21
  constructor(repository) {
22
22
  this.repository = repository;
@@ -36,6 +36,6 @@ let BorrowingRateApyHistoryRepository = class BorrowingRateApyHistoryRepository
36
36
  exports.BorrowingRateApyHistoryRepository = BorrowingRateApyHistoryRepository;
37
37
  exports.BorrowingRateApyHistoryRepository = BorrowingRateApyHistoryRepository = __decorate([
38
38
  (0, common_1.Injectable)(),
39
- __param(0, (0, typeorm_1.InjectRepository)(borrowing_rate_apy_history_1.BorrowingRateApyHistory)),
39
+ __param(0, (0, typeorm_1.InjectRepository)(entity_1.BorrowingRateApyHistory)),
40
40
  __metadata("design:paramtypes", [typeorm_2.Repository])
41
41
  ], BorrowingRateApyHistoryRepository);
@@ -5,3 +5,4 @@ export * from './limit-order.repository';
5
5
  export * from './position.repository';
6
6
  export * from './price.repository';
7
7
  export * from './borrowing-rate-apy-history.repository';
8
+ export * from './leverage-leaderboard.repository';
@@ -21,3 +21,4 @@ __exportStar(require("./limit-order.repository"), exports);
21
21
  __exportStar(require("./position.repository"), exports);
22
22
  __exportStar(require("./price.repository"), exports);
23
23
  __exportStar(require("./borrowing-rate-apy-history.repository"), exports);
24
+ __exportStar(require("./leverage-leaderboard.repository"), exports);
@@ -0,0 +1,10 @@
1
+ import { Repository } from 'typeorm';
2
+ import { LeverageLeaderboard } from '../entity';
3
+ export declare class LeverageLeaderboardRepository {
4
+ private repository;
5
+ constructor(repository: Repository<LeverageLeaderboard>);
6
+ findByLastTimestamp(): Promise<LeverageLeaderboard | null>;
7
+ findByAccount(account: string): Promise<LeverageLeaderboard | null>;
8
+ findAllOrderedByPnl(): Promise<LeverageLeaderboard[]>;
9
+ save(leverageLeaderboard: LeverageLeaderboard): Promise<void>;
10
+ }
@@ -0,0 +1,54 @@
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.LeverageLeaderboardRepository = 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 LeverageLeaderboardRepository = class LeverageLeaderboardRepository {
21
+ constructor(repository) {
22
+ this.repository = repository;
23
+ }
24
+ async findByLastTimestamp() {
25
+ return await this.repository
26
+ .createQueryBuilder('leverageLeaderboard')
27
+ .orderBy('leverageLeaderboard.last_closed_position_timestamp', 'DESC')
28
+ .take(1)
29
+ .getOne();
30
+ }
31
+ async findByAccount(account) {
32
+ return await this.repository
33
+ .createQueryBuilder('leverageLeaderboard')
34
+ .where('leverageLeaderboard.account = :account')
35
+ .setParameter('account', account)
36
+ .take(1)
37
+ .getOne();
38
+ }
39
+ async findAllOrderedByPnl() {
40
+ return this.repository
41
+ .createQueryBuilder('leverageLeaderboard')
42
+ .orderBy('leverageLeaderboard.total_pnl_reth', 'DESC')
43
+ .getMany();
44
+ }
45
+ async save(leverageLeaderboard) {
46
+ await this.repository.save(leverageLeaderboard);
47
+ }
48
+ };
49
+ exports.LeverageLeaderboardRepository = LeverageLeaderboardRepository;
50
+ exports.LeverageLeaderboardRepository = LeverageLeaderboardRepository = __decorate([
51
+ (0, common_1.Injectable)(),
52
+ __param(0, (0, typeorm_1.InjectRepository)(entity_1.LeverageLeaderboard)),
53
+ __metadata("design:paramtypes", [typeorm_2.Repository])
54
+ ], LeverageLeaderboardRepository);
@@ -16,6 +16,7 @@ export declare class GraphQueryService {
16
16
  getLimitOrderAnnounceds(blockNumberFrom: number): Promise<AnnouncedLimitOrder[]>;
17
17
  getAllOpenPositions(): Promise<Position[]>;
18
18
  getOpenPositions(skip: number, first: number): Promise<Position[]>;
19
+ getClosedPositions(closeTimestampVar: number): Promise<Position[]>;
19
20
  }
20
21
  export declare const getAnnouncedOrdersQuery: string;
21
22
  export declare const getLeverageOpensQuery: string;
@@ -27,3 +28,4 @@ export declare const getWithdrawsQuery: string;
27
28
  export declare const getWithdrawsByWithdrawerAddressQuery: string;
28
29
  export declare const getLimitOrderAnnouncedsQuery: string;
29
30
  export declare const getOpenPositionsQuery: string;
31
+ export declare const getClosedPositionsQuery: 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.getOpenPositionsQuery = exports.getLimitOrderAnnouncedsQuery = exports.getWithdrawsByWithdrawerAddressQuery = exports.getWithdrawsQuery = exports.getDepositsByDepositorAddressQuery = exports.getDepositsQuery = exports.getPositionLiquidatedsQuery = exports.getLeverageClosesQuery = exports.getLeverageOpensQuery = exports.getAnnouncedOrdersQuery = exports.GraphQueryService = void 0;
12
+ exports.getClosedPositionsQuery = exports.getOpenPositionsQuery = exports.getLimitOrderAnnouncedsQuery = exports.getWithdrawsByWithdrawerAddressQuery = exports.getWithdrawsQuery = exports.getDepositsByDepositorAddressQuery = exports.getDepositsQuery = exports.getPositionLiquidatedsQuery = exports.getLeverageClosesQuery = 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");
@@ -156,6 +156,18 @@ let GraphQueryService = class GraphQueryService {
156
156
  throw error;
157
157
  }
158
158
  }
159
+ async getClosedPositions(closeTimestampVar) {
160
+ const variables = { closeTimestampVar };
161
+ try {
162
+ const response = await this.graphQLClient.request(exports.getClosedPositionsQuery, variables);
163
+ this.logger.log(`Fetched ${response.positions.length} closed positions from the graph`);
164
+ return response.positions;
165
+ }
166
+ catch (error) {
167
+ this.logger.error('Error fetching open positions from the graph:', error);
168
+ throw error;
169
+ }
170
+ }
159
171
  };
160
172
  exports.GraphQueryService = GraphQueryService;
161
173
  exports.GraphQueryService = GraphQueryService = __decorate([
@@ -274,3 +286,18 @@ exports.getOpenPositionsQuery = (0, graphql_request_1.gql) `
274
286
  }
275
287
  }
276
288
  `;
289
+ exports.getClosedPositionsQuery = (0, graphql_request_1.gql) `
290
+ query GetOpenPositions($closeTimestampVar: Int) {
291
+ positions(
292
+ where: { status_in: [1, 2, 3], closeTimestamp_gt: $closeTimestampVar }
293
+ orderBy: closeTimestamp
294
+ orderDirection: desc
295
+ ) {
296
+ account
297
+ profitLoss
298
+ margin
299
+ status
300
+ closeTimestamp
301
+ }
302
+ }
303
+ `;
@@ -46,6 +46,10 @@ export interface AnnouncedLimitOrder {
46
46
  }
47
47
  export interface Position {
48
48
  tokenId: number;
49
+ account: string;
50
+ profitLoss: number;
51
+ margin: number;
52
+ closeTimestamp: number;
49
53
  }
50
54
  export interface DepositEventsData {
51
55
  deposits: DepositEvent[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhedge/backend-flatcoin-core",
3
- "version": "0.2.28",
3
+ "version": "0.2.29",
4
4
  "description": "Backend Flatcoin Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",