import * as djs from "discord.js";
import { ClientOptions, Events, EventOptions } from "./types";
export declare class Bot {
    discordjs_client: djs.Client;
    private token;
    private showDebugLogLevel;
    constructor(token: string, options: ClientOptions, showDebugLogLevel?: boolean);
    /**
     * Add a listener
     * Example: bot.on("messageCreate", (msg) => ...)
     */
    on<K extends keyof djs.ClientEvents>(event: K, callback: (...args: djs.ClientEvents[K]) => void): void;
    /**
     * Send a message on a channel
     */
    sendMessage(channelId: string, content: string | djs.MessagePayload | djs.MessageCreateOptions): Promise<djs.Message<true> | djs.Message<false>>;
    /**
     * Register prefix commands via this
     * Usage Example: bot.registerCommand("!").addCommand("lorem", (message, args) => ...).addCommand("hello", (message, args) => ...) ...;
     */
    registerCommand(prefix: string): {
        addCommand: (name: string, handler: (msg: djs.Message, args: string[]) => void) => any;
    };
    /**
     * Register slash commands via this
     * Usage Example: bot.registerSlashCommand()
     *   .addCommand({ name: "lorem", description: "Send a Lorem Ipsum" }, (message, args) => ...)
     *   .addCommand({ name: "hello", description: "Hello, World!" }, (message, args) => ...)
     *  ...;
     */
    registerSlashCommand(): {
        addCommand: (command: {
            name: string;
            description: string;
        }, handler: (interaction: djs.ChatInputCommandInteraction) => void) => any;
    };
    registerEvent(event: Events | keyof Events, handler: (...args: any[]) => void, options?: EventOptions): void;
    private _getIntents__;
    private login;
}
