@dhedge/backend-flatcoin-core 0.1.45 → 0.1.48

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.
@@ -458,17 +458,6 @@ exports.FlatcoinErrors = [
458
458
  name: 'PriceExpired',
459
459
  type: 'error',
460
460
  },
461
- {
462
- inputs: [
463
- {
464
- internalType: 'enum FlatcoinErrors.PriceSource',
465
- name: 'priceSource',
466
- type: 'uint8',
467
- },
468
- ],
469
- name: 'PriceInvalid',
470
- type: 'error',
471
- },
472
461
  {
473
462
  inputs: [],
474
463
  name: 'OracleConfigInvalid',
@@ -0,0 +1,15 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { BigNumber } from 'ethers';
3
+ import { JsonRpcProvider } from '@ethersproject/providers';
4
+ import { ErrorHandler } from './error.handler';
5
+ export declare class BlockchainQueryService {
6
+ private readonly logger;
7
+ private readonly customProvider;
8
+ private readonly errorHandler;
9
+ private readonly viewerContractAddress;
10
+ constructor(logger: Logger, customProvider: JsonRpcProvider, errorHandler: ErrorHandler);
11
+ getFlatcoinPrice(): Promise<BigNumber>;
12
+ getFlatcoinPriceByBlock(blockNumber: number): Promise<BigNumber>;
13
+ getTimestampByBlockNumber(blockNumber: number): Promise<number>;
14
+ getCurrentBlockNumber(): Promise<number>;
15
+ }
@@ -0,0 +1,62 @@
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.BlockchainQueryService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const ethers_1 = require("ethers");
15
+ const providers_1 = require("@ethersproject/providers");
16
+ const error_handler_1 = require("./error.handler");
17
+ const contracts_1 = require("../contracts");
18
+ let BlockchainQueryService = class BlockchainQueryService {
19
+ constructor(logger, customProvider, errorHandler) {
20
+ this.logger = logger;
21
+ this.customProvider = customProvider;
22
+ this.errorHandler = errorHandler;
23
+ if (process.env.VIEWER_CONTRACT_ADDRESS) {
24
+ this.viewerContractAddress = process.env.VIEWER_CONTRACT_ADDRESS;
25
+ }
26
+ else {
27
+ throw new Error('env property VIEWER_CONTRACT_ADDRESS is not configured');
28
+ }
29
+ }
30
+ async getFlatcoinPrice() {
31
+ try {
32
+ const contract = new ethers_1.ethers.Contract(this.viewerContractAddress, contracts_1.Viewer, this.customProvider);
33
+ return await contract.getFlatcoinPriceInUSD();
34
+ }
35
+ catch (err) {
36
+ const errorName = this.errorHandler.getViewMethodCallErrorName(err);
37
+ this.logger.error(`Error calling getFlatcoinPriceInUSD ${errorName}`);
38
+ throw err;
39
+ }
40
+ }
41
+ async getFlatcoinPriceByBlock(blockNumber) {
42
+ const contract = new ethers_1.ethers.Contract(this.viewerContractAddress, contracts_1.Viewer, this.customProvider);
43
+ return await contract.callStatic['getFlatcoinPriceInUSD']({
44
+ blockTag: blockNumber,
45
+ });
46
+ }
47
+ async getTimestampByBlockNumber(blockNumber) {
48
+ const block = await this.customProvider.getBlock(blockNumber);
49
+ // seconds
50
+ return block.timestamp;
51
+ }
52
+ async getCurrentBlockNumber() {
53
+ return this.customProvider.getBlockNumber();
54
+ }
55
+ };
56
+ exports.BlockchainQueryService = BlockchainQueryService;
57
+ exports.BlockchainQueryService = BlockchainQueryService = __decorate([
58
+ (0, common_1.Injectable)(),
59
+ __metadata("design:paramtypes", [common_1.Logger,
60
+ providers_1.JsonRpcProvider,
61
+ error_handler_1.ErrorHandler])
62
+ ], BlockchainQueryService);
@@ -7,4 +7,5 @@ export declare class ErrorHandler {
7
7
  constructor(notificationService: NotificationService, logger: Logger);
8
8
  handleError(message: string, error: any): Promise<void>;
9
9
  getGasEstimateErrorName(gasEstimateError: string): string;
10
+ getViewMethodCallErrorName(viewMethodCallError: string): string;
10
11
  }
@@ -47,6 +47,25 @@ let ErrorHandler = class ErrorHandler {
47
47
  return '';
48
48
  }
49
49
  }
50
+ getViewMethodCallErrorName(viewMethodCallError) {
51
+ if (!viewMethodCallError)
52
+ return '';
53
+ try {
54
+ const jsonStartIndex = viewMethodCallError.toString().indexOf('data=');
55
+ const jsonEndIndex = viewMethodCallError.toString().indexOf(', errorArgs');
56
+ if (jsonStartIndex > 0) {
57
+ const errorData = viewMethodCallError.toString().slice(jsonStartIndex, jsonEndIndex);
58
+ return this.errorInterface.parseError(errorData).name;
59
+ }
60
+ else {
61
+ return viewMethodCallError;
62
+ }
63
+ }
64
+ catch (error) {
65
+ this.logger.error("can't get gas estimate error", error);
66
+ return '';
67
+ }
68
+ }
50
69
  };
51
70
  exports.ErrorHandler = ErrorHandler;
52
71
  exports.ErrorHandler = ErrorHandler = __decorate([
@@ -2,3 +2,4 @@ export * from './app-price.service';
2
2
  export * from './graph-query.service';
3
3
  export * from './error.handler';
4
4
  export * from './notification.service';
5
+ export * from './blockchain-query.service';
@@ -18,3 +18,4 @@ __exportStar(require("./app-price.service"), exports);
18
18
  __exportStar(require("./graph-query.service"), exports);
19
19
  __exportStar(require("./error.handler"), exports);
20
20
  __exportStar(require("./notification.service"), exports);
21
+ __exportStar(require("./blockchain-query.service"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dhedge/backend-flatcoin-core",
3
- "version": "0.1.45",
3
+ "version": "0.1.48",
4
4
  "description": "Backend Flatcoin Core",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",