@lido-nestjs/registry 1.0.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.
Files changed (63) hide show
  1. package/LICENSE.txt +21 -0
  2. package/README.md +14 -0
  3. package/dist/fetch/interfaces/key.interface.d.ts +7 -0
  4. package/dist/fetch/interfaces/module.interface.d.ts +14 -0
  5. package/dist/fetch/interfaces/operator.interface.d.ts +10 -0
  6. package/dist/fetch/interfaces/overrides.interface.d.ts +10 -0
  7. package/dist/fetch/key.constants.d.ts +1 -0
  8. package/dist/fetch/key.constants.js +7 -0
  9. package/dist/fetch/key.fetch.d.ts +13 -0
  10. package/dist/fetch/key.fetch.js +49 -0
  11. package/dist/fetch/meta.fetch.d.ts +8 -0
  12. package/dist/fetch/meta.fetch.js +23 -0
  13. package/dist/fetch/operator.constants.d.ts +1 -0
  14. package/dist/fetch/operator.constants.js +7 -0
  15. package/dist/fetch/operator.fetch.d.ts +13 -0
  16. package/dist/fetch/operator.fetch.js +55 -0
  17. package/dist/fetch/registry-fetch.module.d.ts +8 -0
  18. package/dist/fetch/registry-fetch.module.js +79 -0
  19. package/dist/fetch/registry-fetch.service.d.ts +2 -0
  20. package/dist/fetch/registry-fetch.service.js +12 -0
  21. package/dist/index.d.ts +22 -0
  22. package/dist/index.js +96 -0
  23. package/dist/main/abstract-registry.d.ts +52 -0
  24. package/dist/main/abstract-registry.js +211 -0
  25. package/dist/main/constants.d.ts +1 -0
  26. package/dist/main/constants.js +7 -0
  27. package/dist/main/interfaces/module.interface.d.ts +11 -0
  28. package/dist/main/key-registry/key-registry.module.d.ts +8 -0
  29. package/dist/main/key-registry/key-registry.module.js +57 -0
  30. package/dist/main/key-registry/key-registry.service.d.ts +9 -0
  31. package/dist/main/key-registry/key-registry.service.js +22 -0
  32. package/dist/main/validator-registry/validator-registry.module.d.ts +8 -0
  33. package/dist/main/validator-registry/validator-registry.module.js +57 -0
  34. package/dist/main/validator-registry/validator-registry.service.d.ts +7 -0
  35. package/dist/main/validator-registry/validator-registry.service.js +18 -0
  36. package/dist/storage/interfaces/module.interface.d.ts +9 -0
  37. package/dist/storage/key.entity.d.ts +12 -0
  38. package/dist/storage/key.entity.js +41 -0
  39. package/dist/storage/key.repository.d.ts +4 -0
  40. package/dist/storage/key.repository.js +10 -0
  41. package/dist/storage/key.storage.d.ts +22 -0
  42. package/dist/storage/key.storage.js +59 -0
  43. package/dist/storage/meta.entity.d.ts +10 -0
  44. package/dist/storage/meta.entity.js +36 -0
  45. package/dist/storage/meta.repository.d.ts +4 -0
  46. package/dist/storage/meta.repository.js +10 -0
  47. package/dist/storage/meta.storage.d.ts +12 -0
  48. package/dist/storage/meta.storage.js +34 -0
  49. package/dist/storage/operator.entity.d.ts +14 -0
  50. package/dist/storage/operator.entity.js +56 -0
  51. package/dist/storage/operator.repository.d.ts +4 -0
  52. package/dist/storage/operator.repository.js +10 -0
  53. package/dist/storage/operator.storage.d.ts +18 -0
  54. package/dist/storage/operator.storage.js +48 -0
  55. package/dist/storage/registry-storage.module.d.ts +8 -0
  56. package/dist/storage/registry-storage.module.js +57 -0
  57. package/dist/storage/registry-storage.service.d.ts +8 -0
  58. package/dist/storage/registry-storage.service.js +25 -0
  59. package/dist/utils/meta.utils.d.ts +2 -0
  60. package/dist/utils/meta.utils.js +15 -0
  61. package/dist/utils/operator.utils.d.ts +2 -0
  62. package/dist/utils/operator.utils.js +17 -0
  63. package/package.json +56 -0
package/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Lido
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,14 @@
1
+ # Registry Module
2
+
3
+ NestJS Registry Module for Lido Finance projects.
4
+ Part of [Lido NestJS Modules](https://github.com/lidofinance/lido-nestjs-modules/#readme)
5
+
6
+ ## Install
7
+
8
+ ```bash
9
+ yarn add @lido-nestjs/registry
10
+ ```
11
+
12
+ ## Usage
13
+
14
+ TODO
@@ -0,0 +1,7 @@
1
+ export interface RegistryKey {
2
+ index: number;
3
+ operatorIndex: number;
4
+ depositSignature: string;
5
+ key: string;
6
+ used: boolean;
7
+ }
@@ -0,0 +1,14 @@
1
+ import { ModuleMetadata } from '@nestjs/common';
2
+ import { Signer } from 'ethers';
3
+ import { Provider } from '@ethersproject/providers';
4
+ export interface RegistryFetchOptions {
5
+ registryAddress?: string;
6
+ lidoAddress?: string;
7
+ provider?: Provider | Signer;
8
+ }
9
+ export interface RegistryFetchModuleSyncOptions extends Pick<ModuleMetadata, 'imports'>, RegistryFetchOptions {
10
+ }
11
+ export interface RegistryFetchModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
12
+ useFactory: (...args: any[]) => Promise<RegistryFetchOptions>;
13
+ inject?: any[];
14
+ }
@@ -0,0 +1,10 @@
1
+ export interface RegistryOperator {
2
+ index: number;
3
+ active: boolean;
4
+ name: string;
5
+ rewardAddress: string;
6
+ stakingLimit: number;
7
+ stoppedValidators: number;
8
+ totalSigningKeys: number;
9
+ usedSigningKeys: number;
10
+ }
@@ -0,0 +1,10 @@
1
+ import { CallOverrides as CallOverridesSource } from '@ethersproject/contracts';
2
+ export declare type BlockTagWith1898 = string | number | {
3
+ blockNumber: string;
4
+ } | {
5
+ blockHash: string;
6
+ requireCanonical?: boolean;
7
+ };
8
+ export interface CallOverrides extends Omit<CallOverridesSource, 'blockTag'> {
9
+ blockTag?: BlockTagWith1898;
10
+ }
@@ -0,0 +1 @@
1
+ export declare const REGISTRY_KEY_BATCH_SIZE = 200;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const REGISTRY_KEY_BATCH_SIZE = 200;
6
+
7
+ exports.REGISTRY_KEY_BATCH_SIZE = REGISTRY_KEY_BATCH_SIZE;
@@ -0,0 +1,13 @@
1
+ import { Registry } from '@lido-nestjs/contracts';
2
+ import { CallOverrides } from './interfaces/overrides.interface';
3
+ import { RegistryKey } from './interfaces/key.interface';
4
+ import { RegistryOperatorFetchService } from './operator.fetch';
5
+ export declare class RegistryKeyFetchService {
6
+ private contract;
7
+ private operatorsService;
8
+ constructor(contract: Registry, operatorsService: RegistryOperatorFetchService);
9
+ /** fetches one key */
10
+ fetchOne(operatorIndex: number, keyIndex: number, overrides?: CallOverrides): Promise<RegistryKey>;
11
+ /** fetches operator's keys */
12
+ fetch(operatorIndex: number, fromIndex?: number, toIndex?: number, overrides?: CallOverrides): Promise<RegistryKey[]>;
13
+ }
@@ -0,0 +1,49 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var common = require('@nestjs/common');
7
+ var utils = require('@lido-nestjs/utils');
8
+ var contracts = require('@lido-nestjs/contracts');
9
+ var operator_fetch = require('./operator.fetch.js');
10
+ var key_constants = require('./key.constants.js');
11
+
12
+ exports.RegistryKeyFetchService = class RegistryKeyFetchService {
13
+ constructor(contract, operatorsService) {
14
+ this.contract = contract;
15
+ this.operatorsService = operatorsService;
16
+ }
17
+ /** fetches one key */
18
+ async fetchOne(operatorIndex, keyIndex, overrides = {}) {
19
+ const keyData = await this.contract.getSigningKey(operatorIndex, keyIndex, overrides);
20
+ const { key, depositSignature, used } = keyData;
21
+ return {
22
+ operatorIndex,
23
+ index: keyIndex,
24
+ key,
25
+ depositSignature,
26
+ used,
27
+ };
28
+ }
29
+ /** fetches operator's keys */
30
+ async fetch(operatorIndex, fromIndex = 0, toIndex = -1, overrides = {}) {
31
+ if (fromIndex > toIndex && toIndex !== -1) {
32
+ throw new Error('fromIndex is greater than or equal to toIndex');
33
+ }
34
+ if (toIndex == null || toIndex === -1) {
35
+ const operator = await this.operatorsService.fetchOne(operatorIndex, overrides);
36
+ toIndex = operator.totalSigningKeys;
37
+ }
38
+ const fetcher = async (keyIndex) => {
39
+ return await this.fetchOne(operatorIndex, keyIndex, overrides);
40
+ };
41
+ const batchSize = key_constants.REGISTRY_KEY_BATCH_SIZE;
42
+ return await utils.rangePromise(fetcher, fromIndex, toIndex, batchSize);
43
+ }
44
+ };
45
+ exports.RegistryKeyFetchService = tslib.__decorate([
46
+ common.Injectable(),
47
+ tslib.__param(0, common.Inject(contracts.REGISTRY_CONTRACT_TOKEN)),
48
+ tslib.__metadata("design:paramtypes", [Object, operator_fetch.RegistryOperatorFetchService])
49
+ ], exports.RegistryKeyFetchService);
@@ -0,0 +1,8 @@
1
+ import { Registry } from '@lido-nestjs/contracts';
2
+ import { CallOverrides } from './interfaces/overrides.interface';
3
+ export declare class RegistryMetaFetchService {
4
+ private registryContract;
5
+ constructor(registryContract: Registry);
6
+ /** fetches keys operation index */
7
+ fetchKeysOpIndex(overrides?: CallOverrides): Promise<number>;
8
+ }
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var common = require('@nestjs/common');
7
+ var contracts = require('@lido-nestjs/contracts');
8
+
9
+ exports.RegistryMetaFetchService = class RegistryMetaFetchService {
10
+ constructor(registryContract) {
11
+ this.registryContract = registryContract;
12
+ }
13
+ /** fetches keys operation index */
14
+ async fetchKeysOpIndex(overrides = {}) {
15
+ const bigNumber = await this.registryContract.getKeysOpIndex(overrides);
16
+ return bigNumber.toNumber();
17
+ }
18
+ };
19
+ exports.RegistryMetaFetchService = tslib.__decorate([
20
+ common.Injectable(),
21
+ tslib.__param(0, common.Inject(contracts.REGISTRY_CONTRACT_TOKEN)),
22
+ tslib.__metadata("design:paramtypes", [Object])
23
+ ], exports.RegistryMetaFetchService);
@@ -0,0 +1 @@
1
+ export declare const REGISTRY_OPERATORS_BATCH_SIZE = 50;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const REGISTRY_OPERATORS_BATCH_SIZE = 50;
6
+
7
+ exports.REGISTRY_OPERATORS_BATCH_SIZE = REGISTRY_OPERATORS_BATCH_SIZE;
@@ -0,0 +1,13 @@
1
+ import { Registry } from '@lido-nestjs/contracts';
2
+ import { CallOverrides } from './interfaces/overrides.interface';
3
+ import { RegistryOperator } from './interfaces/operator.interface';
4
+ export declare class RegistryOperatorFetchService {
5
+ private contract;
6
+ constructor(contract: Registry);
7
+ /** fetches number of operators */
8
+ count(overrides?: CallOverrides): Promise<number>;
9
+ /** fetches one operator */
10
+ fetchOne(operatorIndex: number, overrides?: CallOverrides): Promise<RegistryOperator>;
11
+ /** fetches operators */
12
+ fetch(fromIndex?: number, toIndex?: number, overrides?: CallOverrides): Promise<RegistryOperator[]>;
13
+ }
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var common = require('@nestjs/common');
7
+ var utils = require('@lido-nestjs/utils');
8
+ var contracts = require('@lido-nestjs/contracts');
9
+ var operator_constants = require('./operator.constants.js');
10
+
11
+ exports.RegistryOperatorFetchService = class RegistryOperatorFetchService {
12
+ constructor(contract) {
13
+ this.contract = contract;
14
+ }
15
+ /** fetches number of operators */
16
+ async count(overrides = {}) {
17
+ const bigNumber = await this.contract.getNodeOperatorsCount(overrides);
18
+ return bigNumber.toNumber();
19
+ }
20
+ /** fetches one operator */
21
+ async fetchOne(operatorIndex, overrides = {}) {
22
+ const fullInfo = true;
23
+ const operator = await this.contract.getNodeOperator(operatorIndex, fullInfo, overrides);
24
+ const { name, active, rewardAddress, stakingLimit, stoppedValidators, totalSigningKeys, usedSigningKeys, } = operator;
25
+ return {
26
+ index: operatorIndex,
27
+ active,
28
+ name,
29
+ rewardAddress,
30
+ stakingLimit: stakingLimit.toNumber(),
31
+ stoppedValidators: stoppedValidators.toNumber(),
32
+ totalSigningKeys: totalSigningKeys.toNumber(),
33
+ usedSigningKeys: usedSigningKeys.toNumber(),
34
+ };
35
+ }
36
+ /** fetches operators */
37
+ async fetch(fromIndex = 0, toIndex = -1, overrides = {}) {
38
+ if (fromIndex > toIndex && toIndex !== -1) {
39
+ throw new Error('fromIndex is greater than or equal to toIndex');
40
+ }
41
+ if (toIndex == null || toIndex === -1) {
42
+ toIndex = await this.count(overrides);
43
+ }
44
+ const fetcher = async (operatorIndex) => {
45
+ return await this.fetchOne(operatorIndex, overrides);
46
+ };
47
+ const batchSize = operator_constants.REGISTRY_OPERATORS_BATCH_SIZE;
48
+ return await utils.rangePromise(fetcher, fromIndex, toIndex, batchSize);
49
+ }
50
+ };
51
+ exports.RegistryOperatorFetchService = tslib.__decorate([
52
+ common.Injectable(),
53
+ tslib.__param(0, common.Inject(contracts.REGISTRY_CONTRACT_TOKEN)),
54
+ tslib.__metadata("design:paramtypes", [Object])
55
+ ], exports.RegistryOperatorFetchService);
@@ -0,0 +1,8 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { RegistryFetchModuleSyncOptions, RegistryFetchModuleAsyncOptions } from './interfaces/module.interface';
3
+ export declare class RegistryFetchModule {
4
+ static forRoot(options?: RegistryFetchModuleSyncOptions): DynamicModule;
5
+ static forRootAsync(options: RegistryFetchModuleAsyncOptions): DynamicModule;
6
+ static forFeature(options?: RegistryFetchModuleSyncOptions): DynamicModule;
7
+ static forFeatureAsync(options: RegistryFetchModuleAsyncOptions): DynamicModule;
8
+ }
@@ -0,0 +1,79 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var common = require('@nestjs/common');
7
+ var contracts = require('@lido-nestjs/contracts');
8
+ var operator_fetch = require('./operator.fetch.js');
9
+ var meta_fetch = require('./meta.fetch.js');
10
+ var key_fetch = require('./key.fetch.js');
11
+ var registryFetch_service = require('./registry-fetch.service.js');
12
+
13
+ var RegistryFetchModule_1;
14
+ exports.RegistryFetchModule = RegistryFetchModule_1 = class RegistryFetchModule {
15
+ static forRoot(options) {
16
+ return Object.assign({ global: true }, this.forFeature(options));
17
+ }
18
+ static forRootAsync(options) {
19
+ return Object.assign({ global: true }, this.forFeatureAsync(options));
20
+ }
21
+ static forFeature(options) {
22
+ return {
23
+ module: RegistryFetchModule_1,
24
+ imports: [
25
+ ...((options === null || options === void 0 ? void 0 : options.imports) || []),
26
+ contracts.LidoContractModule.forFeature({
27
+ address: options === null || options === void 0 ? void 0 : options.lidoAddress,
28
+ provider: options === null || options === void 0 ? void 0 : options.provider,
29
+ }),
30
+ contracts.RegistryContractModule.forFeature({
31
+ address: options === null || options === void 0 ? void 0 : options.registryAddress,
32
+ provider: options === null || options === void 0 ? void 0 : options.provider,
33
+ }),
34
+ ],
35
+ exports: [contracts.LidoContractModule, contracts.RegistryContractModule],
36
+ };
37
+ }
38
+ static forFeatureAsync(options) {
39
+ return {
40
+ module: RegistryFetchModule_1,
41
+ imports: [
42
+ ...(options.imports || []),
43
+ contracts.LidoContractModule.forFeatureAsync({
44
+ async useFactory(...args) {
45
+ const config = await options.useFactory(...args);
46
+ const { provider, lidoAddress } = config;
47
+ return { provider, address: lidoAddress };
48
+ },
49
+ inject: options.inject,
50
+ }),
51
+ contracts.RegistryContractModule.forFeatureAsync({
52
+ async useFactory(...args) {
53
+ const config = await options.useFactory(...args);
54
+ const { provider, registryAddress } = config;
55
+ return { provider, address: registryAddress };
56
+ },
57
+ inject: options.inject,
58
+ }),
59
+ ],
60
+ exports: [contracts.LidoContractModule, contracts.RegistryContractModule],
61
+ };
62
+ }
63
+ };
64
+ exports.RegistryFetchModule = RegistryFetchModule_1 = tslib.__decorate([
65
+ common.Module({
66
+ providers: [
67
+ registryFetch_service.RegistryFetchService,
68
+ operator_fetch.RegistryOperatorFetchService,
69
+ meta_fetch.RegistryMetaFetchService,
70
+ key_fetch.RegistryKeyFetchService,
71
+ ],
72
+ exports: [
73
+ registryFetch_service.RegistryFetchService,
74
+ operator_fetch.RegistryOperatorFetchService,
75
+ meta_fetch.RegistryMetaFetchService,
76
+ key_fetch.RegistryKeyFetchService,
77
+ ],
78
+ })
79
+ ], exports.RegistryFetchModule);
@@ -0,0 +1,2 @@
1
+ export declare class RegistryFetchService {
2
+ }
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib = require('tslib');
6
+ var common = require('@nestjs/common');
7
+
8
+ exports.RegistryFetchService = class RegistryFetchService {
9
+ };
10
+ exports.RegistryFetchService = tslib.__decorate([
11
+ common.Injectable()
12
+ ], exports.RegistryFetchService);
@@ -0,0 +1,22 @@
1
+ export * from './fetch/registry-fetch.module';
2
+ export * from './fetch/registry-fetch.service';
3
+ export * from './fetch/key.constants';
4
+ export * from './fetch/key.fetch';
5
+ export * from './fetch/meta.fetch';
6
+ export * from './fetch/operator.constants';
7
+ export * from './fetch/operator.fetch';
8
+ export * from './storage/registry-storage.module';
9
+ export * from './storage/registry-storage.service';
10
+ export * from './storage/key.entity';
11
+ export * from './storage/key.repository';
12
+ export * from './storage/key.storage';
13
+ export * from './storage/meta.entity';
14
+ export * from './storage/meta.repository';
15
+ export * from './storage/meta.storage';
16
+ export * from './storage/operator.entity';
17
+ export * from './storage/operator.repository';
18
+ export * from './storage/operator.storage';
19
+ export * from './main/key-registry/key-registry.service';
20
+ export * from './main/key-registry/key-registry.module';
21
+ export * from './main/validator-registry/validator-registry.service';
22
+ export * from './main/validator-registry/validator-registry.module';
package/dist/index.js ADDED
@@ -0,0 +1,96 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var registryFetch_module = require('./fetch/registry-fetch.module.js');
6
+ var registryFetch_service = require('./fetch/registry-fetch.service.js');
7
+ var key_constants = require('./fetch/key.constants.js');
8
+ var key_fetch = require('./fetch/key.fetch.js');
9
+ var meta_fetch = require('./fetch/meta.fetch.js');
10
+ var operator_constants = require('./fetch/operator.constants.js');
11
+ var operator_fetch = require('./fetch/operator.fetch.js');
12
+ var registryStorage_module = require('./storage/registry-storage.module.js');
13
+ var registryStorage_service = require('./storage/registry-storage.service.js');
14
+ var key_entity = require('./storage/key.entity.js');
15
+ var key_repository = require('./storage/key.repository.js');
16
+ var key_storage = require('./storage/key.storage.js');
17
+ var meta_entity = require('./storage/meta.entity.js');
18
+ var meta_repository = require('./storage/meta.repository.js');
19
+ var meta_storage = require('./storage/meta.storage.js');
20
+ var operator_entity = require('./storage/operator.entity.js');
21
+ var operator_repository = require('./storage/operator.repository.js');
22
+ var operator_storage = require('./storage/operator.storage.js');
23
+ var keyRegistry_service = require('./main/key-registry/key-registry.service.js');
24
+ var keyRegistry_module = require('./main/key-registry/key-registry.module.js');
25
+ var validatorRegistry_service = require('./main/validator-registry/validator-registry.service.js');
26
+ var validatorRegistry_module = require('./main/validator-registry/validator-registry.module.js');
27
+
28
+
29
+
30
+ Object.defineProperty(exports, 'RegistryFetchModule', {
31
+ enumerable: true,
32
+ get: function () { return registryFetch_module.RegistryFetchModule; }
33
+ });
34
+ Object.defineProperty(exports, 'RegistryFetchService', {
35
+ enumerable: true,
36
+ get: function () { return registryFetch_service.RegistryFetchService; }
37
+ });
38
+ exports.REGISTRY_KEY_BATCH_SIZE = key_constants.REGISTRY_KEY_BATCH_SIZE;
39
+ Object.defineProperty(exports, 'RegistryKeyFetchService', {
40
+ enumerable: true,
41
+ get: function () { return key_fetch.RegistryKeyFetchService; }
42
+ });
43
+ Object.defineProperty(exports, 'RegistryMetaFetchService', {
44
+ enumerable: true,
45
+ get: function () { return meta_fetch.RegistryMetaFetchService; }
46
+ });
47
+ exports.REGISTRY_OPERATORS_BATCH_SIZE = operator_constants.REGISTRY_OPERATORS_BATCH_SIZE;
48
+ Object.defineProperty(exports, 'RegistryOperatorFetchService', {
49
+ enumerable: true,
50
+ get: function () { return operator_fetch.RegistryOperatorFetchService; }
51
+ });
52
+ Object.defineProperty(exports, 'RegistryStorageModule', {
53
+ enumerable: true,
54
+ get: function () { return registryStorage_module.RegistryStorageModule; }
55
+ });
56
+ Object.defineProperty(exports, 'RegistryStorageService', {
57
+ enumerable: true,
58
+ get: function () { return registryStorage_service.RegistryStorageService; }
59
+ });
60
+ Object.defineProperty(exports, 'RegistryKey', {
61
+ enumerable: true,
62
+ get: function () { return key_entity.RegistryKey; }
63
+ });
64
+ exports.RegistryKeyRepository = key_repository.RegistryKeyRepository;
65
+ Object.defineProperty(exports, 'RegistryKeyStorageService', {
66
+ enumerable: true,
67
+ get: function () { return key_storage.RegistryKeyStorageService; }
68
+ });
69
+ Object.defineProperty(exports, 'RegistryMeta', {
70
+ enumerable: true,
71
+ get: function () { return meta_entity.RegistryMeta; }
72
+ });
73
+ exports.RegistryMetaRepository = meta_repository.RegistryMetaRepository;
74
+ Object.defineProperty(exports, 'RegistryMetaStorageService', {
75
+ enumerable: true,
76
+ get: function () { return meta_storage.RegistryMetaStorageService; }
77
+ });
78
+ Object.defineProperty(exports, 'RegistryOperator', {
79
+ enumerable: true,
80
+ get: function () { return operator_entity.RegistryOperator; }
81
+ });
82
+ exports.RegistryOperatorRepository = operator_repository.RegistryOperatorRepository;
83
+ Object.defineProperty(exports, 'RegistryOperatorStorageService', {
84
+ enumerable: true,
85
+ get: function () { return operator_storage.RegistryOperatorStorageService; }
86
+ });
87
+ exports.KeyRegistryService = keyRegistry_service.KeyRegistryService;
88
+ Object.defineProperty(exports, 'KeyRegistryModule', {
89
+ enumerable: true,
90
+ get: function () { return keyRegistry_module.KeyRegistryModule; }
91
+ });
92
+ exports.ValidatorRegistryService = validatorRegistry_service.ValidatorRegistryService;
93
+ Object.defineProperty(exports, 'ValidatorRegistryModule', {
94
+ enumerable: true,
95
+ get: function () { return validatorRegistry_module.ValidatorRegistryModule; }
96
+ });
@@ -0,0 +1,52 @@
1
+ /// <reference types="node" />
2
+ import { LoggerService } from '@nestjs/common';
3
+ import { Registry } from '@lido-nestjs/contracts';
4
+ import { EntityManager } from '@mikro-orm/sqlite';
5
+ import EventEmitter from 'events';
6
+ import { CronJob } from 'cron';
7
+ import { RegistryMetaFetchService } from '../fetch/meta.fetch';
8
+ import { RegistryKeyFetchService } from '../fetch/key.fetch';
9
+ import { RegistryOperatorFetchService } from '../fetch/operator.fetch';
10
+ import { RegistryMetaStorageService } from '../storage/meta.storage';
11
+ import { RegistryKeyStorageService } from '../storage/key.storage';
12
+ import { RegistryOperatorStorageService } from '../storage/operator.storage';
13
+ import { RegistryMeta } from '../storage/meta.entity';
14
+ import { RegistryKey } from '../storage/key.entity';
15
+ import { RegistryOperator } from '../storage/operator.entity';
16
+ import { RegistryOptions } from './interfaces/module.interface';
17
+ export declare abstract class AbstractRegistryService {
18
+ protected registryContract: Registry;
19
+ protected logger: LoggerService;
20
+ protected readonly metaFetch: RegistryMetaFetchService;
21
+ protected readonly metaStorage: RegistryMetaStorageService;
22
+ protected readonly keyFetch: RegistryKeyFetchService;
23
+ protected readonly keyStorage: RegistryKeyStorageService;
24
+ protected readonly operatorFetch: RegistryOperatorFetchService;
25
+ protected readonly operatorStorage: RegistryOperatorStorageService;
26
+ protected readonly entityManager: EntityManager;
27
+ options?: RegistryOptions | undefined;
28
+ constructor(registryContract: Registry, logger: LoggerService, metaFetch: RegistryMetaFetchService, metaStorage: RegistryMetaStorageService, keyFetch: RegistryKeyFetchService, keyStorage: RegistryKeyStorageService, operatorFetch: RegistryOperatorFetchService, operatorStorage: RegistryOperatorStorageService, entityManager: EntityManager, options?: RegistryOptions | undefined);
29
+ eventEmitter: EventEmitter;
30
+ cronJob: CronJob;
31
+ protected cronHandler(): Promise<void>;
32
+ protected collectListenerCount(): number;
33
+ subscribe(cb: (error: null | Error, payload: RegistryKey[]) => void): () => void;
34
+ /** collects changed data from the contract and store it to the db */
35
+ update(blockHashOrBlockTag: string | number): Promise<import("../fetch/interfaces/key.interface").RegistryKey[] | undefined>;
36
+ /** contract */
37
+ /** returns the meta data from the contract */
38
+ getMetaDataFromContract(blockHashOrBlockTag: string | number): Promise<RegistryMeta>;
39
+ /** returns operators from the contract */
40
+ getOperatorsFromContract(blockHash: string): Promise<import("../fetch/interfaces/operator.interface").RegistryOperator[]>;
41
+ /** returns the right border of the update keys range */
42
+ abstract getToIndex(currOperator: RegistryOperator): number;
43
+ /** returns updated keys from the contract */
44
+ getUpdatedKeysFromContract(previousOperators: RegistryOperator[], currentOperators: RegistryOperator[], blockHash: string): Promise<import("../fetch/interfaces/key.interface").RegistryKey[]>;
45
+ /** storage */
46
+ /** returns the latest meta data from the db */
47
+ getMetaDataFromStorage(): Promise<RegistryMeta | null>;
48
+ /** returns the latest operators data from the db */
49
+ getOperatorsFromStorage(): Promise<RegistryOperator[]>;
50
+ /** clears the db */
51
+ clear(): Promise<void>;
52
+ }