import { Client } from "discord.js";
import { Logger } from "./Logger";
import type { VerseDatabase } from "../types";
export type CommandType = "slash" | "prefix";
export interface CommandUsage {
    count: number;
    type: CommandType;
}
export interface MostUsedCommand {
    name: string;
    uses: number;
    type: CommandType;
}
export interface DatabaseStats {
    adapter: string;
    keys: number;
    size?: number;
}
export interface DatabaseStore {
    name: string;
    adapter: string;
    status: "connected" | "down";
    keys?: number;
    size?: number;
    info?: string;
}
export interface BotInfo {
    ownerId?: string;
    botInvite?: string;
    serverInvite?: string;
    avatar?: string;
    serverId?: string;
}
export interface GenerateStatsOptions {
    BotInfo?: BotInfo;
}
export declare class BotStatistics {
    private logger;
    private startTime;
    private commandUsage;
    private eventTriggers;
    private printedOnce;
    private totalCommandsExecuted;
    private totalEventsTriggered;
    private responseTimes;
    private errorCount;
    private totalRequests;
    private loadedSlashCommands;
    private loadedPrefixCommands;
    private loadedEvents;
    private dbStats?;
    private dbStores;
    constructor(logger?: Logger);
    setDatabaseStats(stats?: DatabaseStats): void;
    setDatabaseStores(stores: DatabaseStore[] | undefined): void;
    resetPrintedFlag(): void;
    loadDatabaseStatsFrom(db?: VerseDatabase): Promise<void>;
    initialize(client: Client): void;
    setLoadedCommands(slashCount: number, prefixCount: number): void;
    setLoadedEvents(eventCount: number): void;
    trackCommand(commandName: string, type: CommandType, responseTime?: number): void;
    trackEvent(eventName: string): void;
    trackError(): void;
    private pushRow;
    generateTableStats(client: Client, options: GenerateStatsOptions, databaseStats?: DatabaseStats): Promise<void>;
    generateStatsDisplay(client: Client): Promise<string>;
    private setupEventTracking;
    private formatUptime;
}
//# sourceMappingURL=BotStatistics.d.ts.map