123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- import { AbstractProvider } from "./abstract-provider.js";
- import { Network } from "./network.js";
- import type { PerformActionRequest } from "./abstract-provider.js";
- import type { Networkish } from "./network.js";
- /**
- * A configuration entry for how to use a [[Provider]].
- */
- export interface FallbackProviderConfig {
- /**
- * The provider.
- */
- provider: AbstractProvider;
- /**
- * The amount of time to wait before kicking off the next provider.
- *
- * Any providers that have not responded can still respond and be
- * counted, but this ensures new providers start.
- */
- stallTimeout?: number;
- /**
- * The priority. Lower priority providers are dispatched first.
- */
- priority?: number;
- /**
- * The amount of weight a provider is given against the quorum.
- */
- weight?: number;
- }
- /**
- * The statistics and state maintained for a [[Provider]].
- */
- export interface FallbackProviderState extends Required<FallbackProviderConfig> {
- /**
- * The most recent blockNumber this provider has reported (-2 if none).
- */
- blockNumber: number;
- /**
- * The number of total requests ever sent to this provider.
- */
- requests: number;
- /**
- * The number of responses that errored.
- */
- errorResponses: number;
- /**
- * The number of responses that occured after the result resolved.
- */
- lateResponses: number;
- /**
- * How many times syncing was required to catch up the expected block.
- */
- outOfSync: number;
- /**
- * The number of requests which reported unsupported operation.
- */
- unsupportedEvents: number;
- /**
- * A rolling average (5% current duration) for response time.
- */
- rollingDuration: number;
- /**
- * The ratio of quorum-agreed results to total.
- */
- score: number;
- }
- /**
- * Additional options to configure a [[FallbackProvider]].
- */
- export type FallbackProviderOptions = {
- quorum?: number;
- eventQuorum?: number;
- eventWorkers?: number;
- cacheTimeout?: number;
- pollingInterval?: number;
- };
- /**
- * A **FallbackProvider** manages several [[Providers]] providing
- * resilience by switching between slow or misbehaving nodes, security
- * by requiring multiple backends to aggree and performance by allowing
- * faster backends to respond earlier.
- *
- */
- export declare class FallbackProvider extends AbstractProvider {
- #private;
- /**
- * The number of backends that must agree on a value before it is
- * accpeted.
- */
- readonly quorum: number;
- /**
- * @_ignore:
- */
- readonly eventQuorum: number;
- /**
- * @_ignore:
- */
- readonly eventWorkers: number;
- /**
- * Creates a new **FallbackProvider** with %%providers%% connected to
- * %%network%%.
- *
- * If a [[Provider]] is included in %%providers%%, defaults are used
- * for the configuration.
- */
- constructor(providers: Array<AbstractProvider | FallbackProviderConfig>, network?: Networkish, options?: FallbackProviderOptions);
- get providerConfigs(): Array<FallbackProviderState>;
- _detectNetwork(): Promise<Network>;
- /**
- * Transforms a %%req%% into the correct method call on %%provider%%.
- */
- _translatePerform(provider: AbstractProvider, req: PerformActionRequest): Promise<any>;
- _perform<T = any>(req: PerformActionRequest): Promise<T>;
- destroy(): Promise<void>;
- }
- //# sourceMappingURL=provider-fallback.d.ts.map
|