import { Reflector } from '@nestjs/core';
import { ContextMenuDiscovery, SlashCommandDiscovery } from '../commands';
import { MessageComponentDiscovery } from '../message-components';
import { ListenerDiscovery } from '../listeners';
import { TextCommandDiscovery } from '../text-commands';
import { ModalDiscovery } from '../modals';
interface DiscoveredItem {
    class: new (...args: unknown[]) => unknown;
    handler?: (...args: unknown[]) => void;
}
export declare abstract class NestCordBaseDiscovery<T = unknown> {
    meta: T;
    protected readonly reflector: Reflector;
    protected discovery: DiscoveredItem;
    protected contextCallback: (context: unknown, discovery: this) => unknown;
    constructor(meta: T);
    getClass(): new (...args: unknown[]) => unknown;
    getHandler(): (...args: unknown[]) => void;
    setDiscoveryMeta(meta: DiscoveredItem): void;
    setContextCallback(fn: (context: unknown, discovery: this) => unknown): void;
    execute(context?: unknown): unknown;
    isContextMenu(): this is ContextMenuDiscovery;
    isSlashCommand(): this is SlashCommandDiscovery;
    isMessageComponent(): this is MessageComponentDiscovery;
    isListener(): this is ListenerDiscovery;
    isTextCommand(): this is TextCommandDiscovery;
    isModal(): this is ModalDiscovery;
    abstract toJSON(): Record<string, any>;
}
export {};
