import mongoose from "mongoose";
import type { ILevel, computeLeaderboardType } from "./types";
declare class DiscordXp {
    /**
     * @param {string} [dbUrl] - A valid mongo database URI.
     */
    static setURL(dbUrl: string): Promise<typeof mongoose>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     */
    static createUser(userId: string, guildId: string): Promise<ILevel | false>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     */
    static deleteUser(userId: string, guildId: string): Promise<ILevel | false>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     * @param {number} [xp] - Amount of xp to append.
     */
    static appendXp(userId: string, guildId: string, xp: number): Promise<boolean>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     * @param {number} [levelss] - Amount of levels to append.
     */
    static appendLevel(userId: string, guildId: string, levelss: number): Promise<ILevel | false>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     * @param {number} [xp] - Amount of xp to set.
     */
    static setXp(userId: string, guildId: string, xp: number): Promise<ILevel | false>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     * @param {number} [level] - A level to set.
     */
    static setLevel(userId: string, guildId: string, level: number): Promise<ILevel | false>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     */
    static fetch(userId: string, guildId: string, fetchPosition?: boolean): Promise<ILevel | false>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     * @param {number} [xp] - Amount of xp to subtract.
     */
    static subtractXp(userId: string, guildId: string, xp: number): Promise<ILevel | false>;
    /**
     * @param {string} [userId] - Discord user id.
     * @param {string} [guildId] - Discord guild id.
     * @param {number} [levels] - Amount of levels to subtract.
     */
    static subtractLevel(userId: string, guildId: string, levelss: number): Promise<ILevel | false>;
    /**
     * @param {string} [guildId] - Discord guild id.
     * @param {number} [limit] - Amount of maximum enteries to return.
     */
    static fetchLeaderboard(guildId: string, limit: number): Promise<ILevel[]>;
    /**
     * @param {any} [client] - Your Discord.CLient.
     * @param {ILevel[]} [leaderboard] - The output from 'fetchLeaderboard' function.
     */
    static computeLeaderboard(client: any, leaderboard: ILevel[], fetchUsers?: boolean): Promise<computeLeaderboardType[]>;
    /**
     * @param {number} [targetLevel] - Xp required to reach that level.
     */
    static xpFor(targetLevel: number): number;
}
export default DiscordXp;
