1 | import { AbstractProvider } from "./abstract-provider.js";
|
2 | import { Network } from "./network.js";
|
3 | import type { PerformActionRequest } from "./abstract-provider.js";
|
4 | import type { Networkish } from "./network.js";
|
5 | /**
|
6 | * A configuration entry for how to use a [[Provider]].
|
7 | */
|
8 | export interface FallbackProviderConfig {
|
9 | /**
|
10 | * The provider.
|
11 | */
|
12 | provider: AbstractProvider;
|
13 | /**
|
14 | * The amount of time to wait before kicking off the next provider.
|
15 | *
|
16 | * Any providers that have not responded can still respond and be
|
17 | * counted, but this ensures new providers start.
|
18 | */
|
19 | stallTimeout?: number;
|
20 | /**
|
21 | * The priority. Lower priority providers are dispatched first.
|
22 | */
|
23 | priority?: number;
|
24 | /**
|
25 | * The amount of weight a provider is given against the quorum.
|
26 | */
|
27 | weight?: number;
|
28 | }
|
29 | /**
|
30 | * The statistics and state maintained for a [[Provider]].
|
31 | */
|
32 | export interface FallbackProviderState extends Required<FallbackProviderConfig> {
|
33 | /**
|
34 | * The most recent blockNumber this provider has reported (-2 if none).
|
35 | */
|
36 | blockNumber: number;
|
37 | /**
|
38 | * The number of total requests ever sent to this provider.
|
39 | */
|
40 | requests: number;
|
41 | /**
|
42 | * The number of responses that errored.
|
43 | */
|
44 | errorResponses: number;
|
45 | /**
|
46 | * The number of responses that occured after the result resolved.
|
47 | */
|
48 | lateResponses: number;
|
49 | /**
|
50 | * How many times syncing was required to catch up the expected block.
|
51 | */
|
52 | outOfSync: number;
|
53 | /**
|
54 | * The number of requests which reported unsupported operation.
|
55 | */
|
56 | unsupportedEvents: number;
|
57 | /**
|
58 | * A rolling average (5% current duration) for response time.
|
59 | */
|
60 | rollingDuration: number;
|
61 | /**
|
62 | * The ratio of quorum-agreed results to total.
|
63 | */
|
64 | score: number;
|
65 | }
|
66 | /**
|
67 | * Additional options to configure a [[FallbackProvider]].
|
68 | */
|
69 | export type FallbackProviderOptions = {
|
70 | quorum?: number;
|
71 | eventQuorum?: number;
|
72 | eventWorkers?: number;
|
73 | cacheTimeout?: number;
|
74 | pollingInterval?: number;
|
75 | };
|
76 | /**
|
77 | * A **FallbackProvider** manages several [[Providers]] providing
|
78 | * resilience by switching between slow or misbehaving nodes, security
|
79 | * by requiring multiple backends to aggree and performance by allowing
|
80 | * faster backends to respond earlier.
|
81 | *
|
82 | */
|
83 | export declare class FallbackProvider extends AbstractProvider {
|
84 | #private;
|
85 | /**
|
86 | * The number of backends that must agree on a value before it is
|
87 | * accpeted.
|
88 | */
|
89 | readonly quorum: number;
|
90 | /**
|
91 | * @_ignore:
|
92 | */
|
93 | readonly eventQuorum: number;
|
94 | /**
|
95 | * @_ignore:
|
96 | */
|
97 | readonly eventWorkers: number;
|
98 | /**
|
99 | * Creates a new **FallbackProvider** with %%providers%% connected to
|
100 | * %%network%%.
|
101 | *
|
102 | * If a [[Provider]] is included in %%providers%%, defaults are used
|
103 | * for the configuration.
|
104 | */
|
105 | constructor(providers: Array<AbstractProvider | FallbackProviderConfig>, network?: Networkish, options?: FallbackProviderOptions);
|
106 | get providerConfigs(): Array<FallbackProviderState>;
|
107 | _detectNetwork(): Promise<Network>;
|
108 | /**
|
109 | * Transforms a %%req%% into the correct method call on %%provider%%.
|
110 | */
|
111 | _translatePerform(provider: AbstractProvider, req: PerformActionRequest): Promise<any>;
|
112 | _perform<T = any>(req: PerformActionRequest): Promise<T>;
|
113 | destroy(): Promise<void>;
|
114 | }
|
115 | //# sourceMappingURL=provider-fallback.d.ts.map |
\ | No newline at end of file |