provider-fallback.d.ts 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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