import { ApplicationCommand, BaseApplicationCommandData, Collection, Snowflake } from 'discord.js';
import { NestCordBaseDiscovery } from '../context';
export interface BaseCommandMeta extends BaseApplicationCommandData {
    guilds?: Snowflake[];
    category?: string;
    discordResponse?: ApplicationCommand;
}
/**
 * Represents a command discovery.
 * @abstract
 */
export declare abstract class CommandDiscovery<T extends BaseCommandMeta = BaseCommandMeta> extends NestCordBaseDiscovery<T> {
    /**
     * Return the command ID
     */
    getId(): string;
    /**
     * Return the discord response of command
     */
    getDiscordResponse(): ApplicationCommand<{}>;
    /**
     * Returns the command name.
     */
    getName(): string;
    /**
     * Get command category
     */
    getCategory(): string | undefined;
    /**
     * Sets the command guilds for register.
     * @param guilds
     */
    setGuilds(guilds: Snowflake[]): void;
    /**
     * Checks if the command has a guild.
     * @param guild
     */
    hasGuild(guild: Snowflake): boolean;
    /**
     * Returns the guilds.
     */
    getGuilds(): Snowflake[] | undefined;
    /**
     * Get sub commands
     */
    getSubCommands(): Collection<string, CommandDiscovery>;
    hasSubCommands(): boolean;
}
