@lido-nestjs/execution 1.5.0 → 1.6.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.
- package/dist/ethers/fee-history.d.ts +12 -0
- package/dist/ethers/fee-history.js +36 -0
- package/dist/ethers/format-block-number.d.ts +1 -0
- package/dist/ethers/format-block-number.js +21 -0
- package/dist/provider/extended-json-rpc-batch-provider.d.ts +3 -0
- package/dist/provider/extended-json-rpc-batch-provider.js +15 -0
- package/dist/provider/simple-fallback-json-rpc-batch-provider.d.ts +2 -0
- package/dist/provider/simple-fallback-json-rpc-batch-provider.js +4 -0
- package/package.json +3 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
|
+
import { ExtendedJsonRpcBatchProvider } from '../provider/extended-json-rpc-batch-provider';
|
|
3
|
+
import { SimpleFallbackJsonRpcBatchProvider } from '../provider/simple-fallback-json-rpc-batch-provider';
|
|
4
|
+
export declare const MIN_BLOCKCOUNT = 1;
|
|
5
|
+
export declare const MAX_BLOCKCOUNT = 1024;
|
|
6
|
+
export interface FeeHistory {
|
|
7
|
+
oldestBlock: number;
|
|
8
|
+
baseFeePerGas: BigNumber[];
|
|
9
|
+
gasUsedRatio: number[];
|
|
10
|
+
reward: BigNumber[][];
|
|
11
|
+
}
|
|
12
|
+
export declare function getFeeHistory(this: ExtendedJsonRpcBatchProvider | SimpleFallbackJsonRpcBatchProvider, blockCount: number, newestBlock?: string | null | number, rewardPercentiles?: number[]): Promise<FeeHistory>;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var bignumber = require('@ethersproject/bignumber');
|
|
6
|
+
var bytes = require('@ethersproject/bytes');
|
|
7
|
+
var formatBlockNumber = require('./format-block-number.js');
|
|
8
|
+
var logger$1 = require('@ethersproject/logger');
|
|
9
|
+
|
|
10
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
11
|
+
const logger = new logger$1.Logger('packages/execution');
|
|
12
|
+
const MIN_BLOCKCOUNT = 1;
|
|
13
|
+
const MAX_BLOCKCOUNT = 1024;
|
|
14
|
+
async function getFeeHistory(blockCount, newestBlock, rewardPercentiles) {
|
|
15
|
+
var _a;
|
|
16
|
+
await this.getNetwork();
|
|
17
|
+
if (blockCount < MIN_BLOCKCOUNT || blockCount > MAX_BLOCKCOUNT) {
|
|
18
|
+
logger.throwArgumentError('Invalid blockCount for `getFeeHistory`. Should be between 1 and 1024.', 'blockCount', blockCount);
|
|
19
|
+
}
|
|
20
|
+
const params = {
|
|
21
|
+
blockCount: bytes.hexValue(blockCount),
|
|
22
|
+
newestBlock: formatBlockNumber.formatBlockNumber(newestBlock),
|
|
23
|
+
rewardPercentiles,
|
|
24
|
+
};
|
|
25
|
+
const result = await this.perform('getFeeHistory', params);
|
|
26
|
+
return {
|
|
27
|
+
baseFeePerGas: result.baseFeePerGas.map((x) => bignumber.BigNumber.from(x)),
|
|
28
|
+
gasUsedRatio: result.gasUsedRatio,
|
|
29
|
+
oldestBlock: bignumber.BigNumber.from(result.oldestBlock).toNumber(),
|
|
30
|
+
reward: ((_a = result.reward) !== null && _a !== void 0 ? _a : []).map((x) => x.map((y) => bignumber.BigNumber.from(y))),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
exports.MAX_BLOCKCOUNT = MAX_BLOCKCOUNT;
|
|
35
|
+
exports.MIN_BLOCKCOUNT = MIN_BLOCKCOUNT;
|
|
36
|
+
exports.getFeeHistory = getFeeHistory;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const formatBlockNumber: (blockNumber: string | null | number | undefined) => string;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var bytes = require('@ethersproject/bytes');
|
|
6
|
+
|
|
7
|
+
const formatBlockNumber = (blockNumber) => {
|
|
8
|
+
if (blockNumber === 'latest' ||
|
|
9
|
+
blockNumber === 'earliest' ||
|
|
10
|
+
blockNumber === 'pending') {
|
|
11
|
+
return blockNumber;
|
|
12
|
+
}
|
|
13
|
+
else if (blockNumber !== null &&
|
|
14
|
+
typeof blockNumber !== 'undefined' &&
|
|
15
|
+
(typeof blockNumber === 'number' || bytes.isHexString(blockNumber))) {
|
|
16
|
+
return bytes.hexValue(blockNumber);
|
|
17
|
+
}
|
|
18
|
+
return 'latest';
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.formatBlockNumber = formatBlockNumber;
|
|
@@ -9,6 +9,7 @@ import { BigNumber, BigNumberish } from '@ethersproject/bignumber';
|
|
|
9
9
|
import { BlockTag } from '../ethers/block-tag';
|
|
10
10
|
import { TransactionRequest } from '@ethersproject/abstract-provider/src.ts/index';
|
|
11
11
|
import { MiddlewareCallback, MiddlewareService } from '@lido-nestjs/middleware';
|
|
12
|
+
import { FeeHistory } from '../ethers/fee-history';
|
|
12
13
|
export interface RequestPolicy {
|
|
13
14
|
jsonRpcMaxBatchSize: number;
|
|
14
15
|
maxConcurrentRequests: number;
|
|
@@ -70,6 +71,8 @@ export declare class ExtendedJsonRpcBatchProvider extends JsonRpcProvider {
|
|
|
70
71
|
static getFormatter(): Formatter;
|
|
71
72
|
protected _batchAggregatorTick(): void;
|
|
72
73
|
protected _startBatchAggregator(): void;
|
|
74
|
+
getFeeHistory(blockCount: number, newestBlock?: string | null | number, rewardPercentiles?: number[]): Promise<FeeHistory>;
|
|
75
|
+
prepareRequest(method: string, params: any): [string, Array<any>];
|
|
73
76
|
use(callback: MiddlewareCallback<Promise<any>>): void;
|
|
74
77
|
send(method: string, params: Array<unknown>): Promise<unknown>;
|
|
75
78
|
detectNetwork(): Promise<Network>;
|
|
@@ -12,6 +12,7 @@ var common = require('@nestjs/common');
|
|
|
12
12
|
var promiseLimit = require('../common/promise-limit.js');
|
|
13
13
|
var formatterWithEip1898 = require('../ethers/formatter-with-eip1898.js');
|
|
14
14
|
var middleware = require('@lido-nestjs/middleware');
|
|
15
|
+
var feeHistory = require('../ethers/fee-history.js');
|
|
15
16
|
|
|
16
17
|
exports.ExtendedJsonRpcBatchProvider = class ExtendedJsonRpcBatchProvider extends providers.JsonRpcProvider {
|
|
17
18
|
constructor(url, network, requestPolicy, fetchMiddlewares = []) {
|
|
@@ -102,6 +103,20 @@ exports.ExtendedJsonRpcBatchProvider = class ExtendedJsonRpcBatchProvider extend
|
|
|
102
103
|
this._batchAggregator = setTimeout(this._batchAggregatorTick.bind(this), this._requestPolicy.batchAggregationWaitMs);
|
|
103
104
|
}
|
|
104
105
|
}
|
|
106
|
+
async getFeeHistory(blockCount, newestBlock, rewardPercentiles) {
|
|
107
|
+
return feeHistory.getFeeHistory.call(this, blockCount, newestBlock, rewardPercentiles);
|
|
108
|
+
}
|
|
109
|
+
prepareRequest(method, params) {
|
|
110
|
+
switch (method) {
|
|
111
|
+
case 'getFeeHistory':
|
|
112
|
+
return [
|
|
113
|
+
'eth_feeHistory',
|
|
114
|
+
[params.blockCount, params.newestBlock, params.rewardPercentiles],
|
|
115
|
+
];
|
|
116
|
+
default:
|
|
117
|
+
return super.prepareRequest(method, params);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
105
120
|
use(callback) {
|
|
106
121
|
this._fetchMiddlewareService.use(callback);
|
|
107
122
|
}
|
|
@@ -9,6 +9,7 @@ import { BigNumber, BigNumberish } from '@ethersproject/bignumber';
|
|
|
9
9
|
import { Deferrable } from '@ethersproject/properties';
|
|
10
10
|
import { TransactionRequest } from '@ethersproject/abstract-provider/src.ts/index';
|
|
11
11
|
import { EventType, Listener } from '@ethersproject/abstract-provider';
|
|
12
|
+
import { FeeHistory } from '../ethers/fee-history';
|
|
12
13
|
/**
|
|
13
14
|
* EIP-1898 support
|
|
14
15
|
* https://eips.ethereum.org/EIPS/eip-1898
|
|
@@ -37,6 +38,7 @@ export declare class SimpleFallbackJsonRpcBatchProvider extends BaseProvider {
|
|
|
37
38
|
static _formatter: Formatter | null;
|
|
38
39
|
static getFormatter(): Formatter;
|
|
39
40
|
on(eventName: EventType, listener: Listener): this;
|
|
41
|
+
getFeeHistory(blockCount: number, newestBlock?: string | null | number, rewardPercentiles?: number[]): Promise<FeeHistory>;
|
|
40
42
|
protected get provider(): FallbackProvider;
|
|
41
43
|
protected switchToNextProvider(): void;
|
|
42
44
|
protected errorShouldBeReThrown(error: Error | unknown): boolean;
|
|
@@ -12,6 +12,7 @@ var networks = require('../common/networks.js');
|
|
|
12
12
|
var noNewBlocksWhilePolling_error = require('../error/no-new-blocks-while-polling.error.js');
|
|
13
13
|
var errors = require('../common/errors.js');
|
|
14
14
|
var allProvidersFailed_error = require('../error/all-providers-failed.error.js');
|
|
15
|
+
var feeHistory = require('../ethers/fee-history.js');
|
|
15
16
|
|
|
16
17
|
exports.SimpleFallbackJsonRpcBatchProvider = class SimpleFallbackJsonRpcBatchProvider extends providers.BaseProvider {
|
|
17
18
|
constructor(config, logger) {
|
|
@@ -70,6 +71,9 @@ exports.SimpleFallbackJsonRpcBatchProvider = class SimpleFallbackJsonRpcBatchPro
|
|
|
70
71
|
}
|
|
71
72
|
return super.on(eventName, listener);
|
|
72
73
|
}
|
|
74
|
+
async getFeeHistory(blockCount, newestBlock, rewardPercentiles) {
|
|
75
|
+
return feeHistory.getFeeHistory.call(this, blockCount, newestBlock, rewardPercentiles);
|
|
76
|
+
}
|
|
73
77
|
get provider() {
|
|
74
78
|
if (this.activeFallbackProviderIndex > this.fallbackProviders.length - 1) {
|
|
75
79
|
this.activeFallbackProviderIndex = 0;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lido-nestjs/execution",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "MIT",
|
|
@@ -34,6 +34,8 @@
|
|
|
34
34
|
"access": "public"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
+
"@ethersproject/bignumber": "^5.5.0",
|
|
38
|
+
"@ethersproject/bytes": "^5.5.0",
|
|
37
39
|
"@ethersproject/logger": "^5.5.0",
|
|
38
40
|
"@ethersproject/networks": "^5.5.2",
|
|
39
41
|
"@ethersproject/properties": "^5.5.0",
|