@gearbox-protocol/sdk 9.1.9 → 9.2.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.
@@ -91,7 +91,8 @@ class RevolverTransport {
91
91
  get value() {
92
92
  return {
93
93
  rotate: (reason) => this.rotate(reason),
94
- currentTransportName: () => this.currentTransportName()
94
+ currentTransportName: () => this.currentTransportName(),
95
+ statuses: () => this.statuses()
95
96
  };
96
97
  }
97
98
  request = async (r) => {
@@ -203,6 +204,13 @@ class RevolverTransport {
203
204
  currentTransportName() {
204
205
  return this.#transport({}).config.name;
205
206
  }
207
+ statuses() {
208
+ const now = Date.now();
209
+ return this.#transports.map((t, i) => ({
210
+ id: t.transport({}).config.name,
211
+ status: t.cooldown < now ? this.#index === i ? "active" : "standby" : "cooldown"
212
+ }));
213
+ }
206
214
  get #logger() {
207
215
  return this.#config.logger;
208
216
  }
@@ -74,7 +74,8 @@ class RevolverTransport {
74
74
  get value() {
75
75
  return {
76
76
  rotate: (reason) => this.rotate(reason),
77
- currentTransportName: () => this.currentTransportName()
77
+ currentTransportName: () => this.currentTransportName(),
78
+ statuses: () => this.statuses()
78
79
  };
79
80
  }
80
81
  request = async (r) => {
@@ -186,6 +187,13 @@ class RevolverTransport {
186
187
  currentTransportName() {
187
188
  return this.#transport({}).config.name;
188
189
  }
190
+ statuses() {
191
+ const now = Date.now();
192
+ return this.#transports.map((t, i) => ({
193
+ id: t.transport({}).config.name,
194
+ status: t.cooldown < now ? this.#index === i ? "active" : "standby" : "cooldown"
195
+ }));
196
+ }
189
197
  get #logger() {
190
198
  return this.#config.logger;
191
199
  }
@@ -2,6 +2,10 @@ import { BaseError, type ClientConfig, type EIP1193RequestFn, type Transport, ty
2
2
  import type { HttpRpcClientOptions } from "viem/utils";
3
3
  import type { ILogger, NetworkType } from "../sdk/index.js";
4
4
  import { type ProviderConfig } from "./providers.js";
5
+ export interface ProviderStatus {
6
+ id: string;
7
+ status: "active" | "cooldown" | "standby";
8
+ }
5
9
  type OnRequestFn = (providerName: string, ...args: Parameters<Required<HttpRpcClientOptions>["onRequest"]>) => ReturnType<Required<HttpRpcClientOptions>["onRequest"]>;
6
10
  type OnResponseFn = (providerName: string, ...args: Parameters<Required<HttpRpcClientOptions>["onResponse"]>) => ReturnType<Required<HttpRpcClientOptions>["onResponse"]>;
7
11
  export interface RevolverTransportConfig {
@@ -53,6 +57,10 @@ export interface RevolverTransportValue {
53
57
  * Returns the name of the current transport
54
58
  */
55
59
  currentTransportName: () => string;
60
+ /**
61
+ * Returns statuses of all providers
62
+ */
63
+ statuses: () => ProviderStatus[];
56
64
  }
57
65
  export declare class RevolverTransport implements ReturnType<Transport<"revolver", RevolverTransportValue>> {
58
66
  #private;
@@ -77,5 +85,6 @@ export declare class RevolverTransport implements ReturnType<Transport<"revolver
77
85
  */
78
86
  rotate(reason?: BaseError): Promise<boolean>;
79
87
  currentTransportName(): string;
88
+ statuses(): ProviderStatus[];
80
89
  }
81
90
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gearbox-protocol/sdk",
3
- "version": "9.1.9",
3
+ "version": "9.2.0",
4
4
  "description": "Gearbox SDK",
5
5
  "license": "MIT",
6
6
  "main": "./dist/cjs/sdk/index.js",