-
Notifications
You must be signed in to change notification settings - Fork 158
/
Copy pathControllerConfig.ts
62 lines (58 loc) · 2.1 KB
/
ControllerConfig.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Copyright 2017-2025 Parity Technologies (UK) Ltd.
// This file is part of Substrate API Sidecar.
//
// Substrate API Sidecar is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
import type { LRUCache } from 'lru-cache';
import { QueryFeeDetailsCache } from '../../chains-config/cache';
import { controllers } from '../../controllers';
import { IBlock } from '../../types/responses';
import { IOption } from '../util';
/**
* Controller mounting configuration as an object where the keys are the
* controller class names and the values are booleans indicating whether or not
* to include the controller.
*
* There is an additional `finalizes` field that is used to indicate wether or
* not a chain has finalized blocks. Practically, this only affects if
* `BlocksController` defaults to getFinalizedHead (in the case it finalizes) or
* getHeader (in the case it does not finalize)
*/
export interface ControllerConfig {
/**
* Controller class names to be included
*/
controllers: (keyof typeof controllers)[];
/**
* Options relating to how the controllers are configured.
*/
options: ControllerOptions;
}
export interface ControllerOptions {
/**
* Whether or not the chain finalizes blocks
*/
finalizes?: boolean;
/**
* The minimum runtime that supports fee's.
*/
minCalcFeeRuntime: IOption<number>;
/**
* LRU cache that stores the 2 most recent queries.
*/
blockStore: LRUCache<string, IBlock>;
/**
* Cache for storing runtime versions that either have queryFeeDetails, or dont.
*/
hasQueryFeeApi: QueryFeeDetailsCache;
}