/// import { Request, RequestContext } from "../../api/request"; type StatsMaps = { completedRequests: Map; connections: Map; failedRequests: Map; ongoingRequests: Map; }; type SerializableStats = { completedRequests: Record; connections: Record; failedRequests: Record; ongoingRequests: Record; }; type StatsFrame = SerializableStats & { timestamp: number; }; type StatsResponse = { hits: StatsFrame[]; total: number; }; type LastStatsResponse = StatsFrame | (StatsMaps & { timestamp: number; }); /** * @class Statistics * @param {Kuzzle} kuzzle */ export default class Statistics { private cacheKeyPrefix; enabled: boolean; ttl: number; interval: number; lastFrame: number | null; timer: NodeJS.Timeout | null; currentStats: StatsMaps; private readonly logger; constructor(); /** * Start recording a new request * * @param {Request} request */ startRequest(request?: Request): void; /** * Mark an ongoing request as 'completed' * * @param {Request} request */ completedRequest(request?: Request): void; /** * Mark an ongoing request as 'completed' * * @param {Request} request */ failedRequest(request?: Request): void; /** * Register a newly created connection * * @param {RequestContext} requestContext */ newConnection(requestContext: RequestContext): void; /** * Removes a connection from the statistics * * @param {RequestContext} requestContext */ dropConnection(requestContext: RequestContext): void; /** * Gets stored statistics frames from a date * * @returns {Promise} */ getLastStats(): Promise; /** * Gets the last saved statistics frame from a date * * @param {Request} request * @returns {Promise} */ getStats(request?: Request): Promise; /** * Gets all the saved statistics * * @returns {Promise} */ getAllStats(): Promise; /** * Init statistics component */ init(): void; writeStats(): Promise; } export {};