import * as interfaces from '../ts_interfaces/index.js'; import type { DcRouterApiClient } from './classes.dcrouterapiclient.js'; type TTimeRange = '1h' | '6h' | '24h' | '7d' | '30d'; export class StatsManager { private clientRef: DcRouterApiClient; constructor(clientRef: DcRouterApiClient) { this.clientRef = clientRef; } public async getServer(options?: { timeRange?: TTimeRange; includeHistory?: boolean; }): Promise { return this.clientRef.request( 'getServerStatistics', this.clientRef.buildRequestPayload(options || {}) as any, ); } public async getEmail(options?: { timeRange?: TTimeRange; domain?: string; includeDetails?: boolean; }): Promise { return this.clientRef.request( 'getEmailStatistics', this.clientRef.buildRequestPayload(options || {}) as any, ); } public async getDns(options?: { timeRange?: TTimeRange; domain?: string; includeQueryTypes?: boolean; }): Promise { return this.clientRef.request( 'getDnsStatistics', this.clientRef.buildRequestPayload(options || {}) as any, ); } public async getRateLimits(options?: { domain?: string; ip?: string; includeBlocked?: boolean; }): Promise { return this.clientRef.request( 'getRateLimitStatus', this.clientRef.buildRequestPayload(options || {}) as any, ); } public async getSecurity(options?: { timeRange?: TTimeRange; includeDetails?: boolean; }): Promise { return this.clientRef.request( 'getSecurityMetrics', this.clientRef.buildRequestPayload(options || {}) as any, ); } public async getConnections(options?: { protocol?: 'smtp' | 'smtps' | 'http' | 'https'; state?: string; }): Promise { return this.clientRef.request( 'getActiveConnections', this.clientRef.buildRequestPayload(options || {}) as any, ); } public async getQueues(options?: { queueName?: string; }): Promise { return this.clientRef.request( 'getQueueStatus', this.clientRef.buildRequestPayload(options || {}) as any, ); } public async getHealth(detailed?: boolean): Promise { return this.clientRef.request( 'getHealthStatus', this.clientRef.buildRequestPayload({ detailed }) as any, ); } public async getNetwork(): Promise { return this.clientRef.request( 'getNetworkStats', this.clientRef.buildRequestPayload() as any, ); } public async getCombined(sections?: { server?: boolean; email?: boolean; dns?: boolean; security?: boolean; network?: boolean; }): Promise { return this.clientRef.request( 'getCombinedMetrics', this.clientRef.buildRequestPayload({ sections }) as any, ); } }