@bsv/sdk
Version:
BSV Blockchain Software Development Kit
37 lines • 1.2 kB
TypeScript
interface HostReputationEntry {
host: string;
totalSuccesses: number;
totalFailures: number;
consecutiveFailures: number;
avgLatencyMs: number | null;
lastLatencyMs: number | null;
backoffUntil: number;
lastUpdatedAt: number;
lastError?: string;
}
export interface RankedHost extends HostReputationEntry {
score: number;
}
interface KeyValueStore {
get: (key: string) => string | null | undefined;
set: (key: string, value: string) => void;
}
export declare class HostReputationTracker {
private readonly stats;
private readonly store;
constructor(store?: KeyValueStore);
reset(): void;
recordSuccess(host: string, latencyMs: number): void;
recordFailure(host: string, reason?: unknown): void;
rankHosts(hosts: string[], now?: number): RankedHost[];
snapshot(host: string): HostReputationEntry | undefined;
private getStorage;
private getLocalStorageAdapter;
private loadFromStorage;
private saveToStorage;
private computeScore;
private getOrCreate;
}
export declare const getOverlayHostReputationTracker: () => HostReputationTracker;
export {};
//# sourceMappingURL=HostReputationTracker.d.ts.map