@tatumio/tatum
Version:
Tatum JS SDK
74 lines (73 loc) • 2.48 kB
TypeScript
import { TatumConnector } from '../../../connector';
import { JsonRpcCall, JsonRpcResponse } from '../../../dto';
import { GetI } from '../../../dto/GetI';
import { PostI } from '../../../dto/PostI';
import { AbstractRpcInterface } from '../../../dto/rpc/AbstractJsonRpcInterface';
import { RpcNodeType } from '../../tatum';
declare enum RequestType {
RPC = "RPC",
POST = "POST",
GET = "GET",
BATCH = "BATCH",
PUT = "PUT",
DELETE = "DELETE"
}
interface HandleFailedRpcCallParams {
rpcCall: JsonRpcCall | JsonRpcCall[] | PostI | GetI;
e: unknown;
nodeType: RpcNodeType;
requestType: RequestType;
url: string;
}
export declare class LoadBalancer implements AbstractRpcInterface {
private readonly id;
protected readonly connector: TatumConnector;
private readonly logger;
private rpcUrls;
private activeUrl;
private interval;
private network;
private evictNodesOnFailure;
private noActiveNode;
constructor(id: string);
init(): Promise<void>;
destroy(): void;
private initCustomNodes;
private resetFailedStatuses;
private checkStatuses;
private checkIfNoActiveNodes;
private checkStatus;
private static getFastestServer;
getActiveArchiveUrlWithFallback(): {
url: string;
type: RpcNodeType;
};
getActiveNormalUrlWithFallback(): {
url: string;
type: RpcNodeType;
};
getActiveUrl(nodeType: RpcNodeType): {
url: string;
type: RpcNodeType;
};
private getActiveIndex;
private checkSSRF;
private initRemoteHosts;
private initRemoteHostsUrls;
initRemoteHostsFromResponse(response: Response, nodeType: RpcNodeType): Promise<void>;
handleFailedRpcCall({ rpcCall, e, nodeType, requestType, url }: HandleFailedRpcCallParams): Promise<void>;
rawRpcCall(rpcCall: JsonRpcCall, archive?: boolean): Promise<JsonRpcResponse<any>>;
rawBatchRpcCall(rpcCall: JsonRpcCall[]): Promise<JsonRpcResponse<any>[] | JsonRpcResponse<any>>;
modifyNodeUrl(url: string): string;
private getUrlForHttpMethod;
post<T>({ path, body, prefix }: PostI): Promise<T>;
put<T>({ path, body, prefix }: PostI): Promise<T>;
delete<T>({ path, prefix }: GetI): Promise<T>;
get<T>({ path, prefix }: GetI): Promise<T>;
getRpcNodeUrl(): string;
}
export declare class TronLoadBalancer extends LoadBalancer {
constructor(id: string);
modifyNodeUrl(url: string): string;
}
export {};