import { ClientOptions as DiscordClientOptions, Message, CommandInteraction, AutocompleteInteraction, ClientEvents, EmbedBuilder } from 'discord.js';
import SolaraClient from '../core/SolaraClient';
export interface SolaraClientOptions extends DiscordClientOptions {
    prefix: string | string[];
    commandDirs?: string[];
    functionDirs?: string[];
    eventDirs?: string[];
    developerIds?: string[];
    token: string;
}
export interface CommandData {
    name: string;
    description?: string;
    aliases?: string[];
    category?: string;
    code: string;
    type?: 'message' | 'interaction' | 'both';
    slash?: boolean;
    options?: any[];
    enabled?: boolean;
    developerOnly?: boolean;
}
export interface FunctionData {
    name: string;
    execute: (ctx: FunctionContext) => Promise<any>;
}
export interface FunctionContext {
    client: SolaraClient;
    message?: Message;
    interaction?: CommandInteraction | AutocompleteInteraction;
    args: string[];
    commandData?: CommandData;
    embed?: EmbedBuilder;
    [key: string]: any;
}
export type EventListener = (client: SolaraClient, ...args: any[]) => Promise<void>;
export interface EventData<K extends keyof ClientEvents> {
    name: K;
    execute: (client: SolaraClient, ...args: ClientEvents[K]) => Promise<void>;
}
