chronik-cache
Version:
A cache helper for chronik-client
61 lines (60 loc) • 2.2 kB
TypeScript
interface WebSocketManagerOptions {
wsTimeout?: number;
wsExtendTimeout?: number;
maxSubscriptions?: number;
onEvict?: ((identifier: string, type: 'address' | 'token') => void) | null;
}
interface ChronikWebSocket {
subscribeToAddress: (address: string) => void;
unsubscribeFromAddress: (address: string) => void;
subscribeToTokenId: (tokenId: string) => void;
unsubscribeFromTokenId: (tokenId: string) => void;
close: () => void;
readyState: number;
manuallyClosed: boolean;
waitForOpen: () => Promise<void>;
}
interface ChronikClient {
ws?: (config: any) => ChronikWebSocket;
}
export default class WebSocketManager {
private chronik;
addressWs: ChronikWebSocket | null;
tokenWs: ChronikWebSocket | null;
private addressSubscriptions;
private tokenSubscriptions;
private failover;
private logger;
private wsTimeout;
private wsExtendTimeout;
private maxSubscriptions;
private onEvict;
constructor(chronik: ChronikClient, failoverOptions?: any, enableLogging?: boolean, options?: WebSocketManagerOptions);
private _ensureAddressWs;
private _ensureTokenWs;
initWebsocketForAddress(address: string, onNewTransaction: (address: string, txid: string, msgType: string) => Promise<void>): Promise<void>;
initWebsocketForToken(tokenId: string, onNewTransaction: (tokenId: string, txid: string, msgType: string) => Promise<void>): Promise<void>;
unsubscribeAddress(address: string): void;
unsubscribeToken(tokenId: string): void;
unsubscribeAll(): void;
resetWsTimer(identifier: string, options?: {
isToken?: boolean;
}, onTimeout?: ((identifier: string) => void) | null): void;
getRemainingTime(identifier: string, options?: {
isToken?: boolean;
}): {
active: boolean;
remainingSec?: number;
message?: string;
};
private _evictOldestAddressSubscription;
private _evictOldestTokenSubscription;
private _getInstanceCount;
private _getSubscriptionCount;
getRemainingTimeForAddress(address: string): {
active: boolean;
remainingSec?: number;
message?: string;
};
}
export {};