import { ApplicationCommandType, InteractionContextType, type CacheType, type ClientEvents, type PermissionResolvable } from "discord.js"; import { type BaseCommandsConfig, type BaseEventsConfig, type BaseRespondersConfig } from "../app.js"; import { Command, type CommandData, type CommandType } from "./commands/command.js"; import { Event, type EventData } from "./events/event.js"; import { Responder, type ResponderData, type ResponderType } from "./responders/responder.js"; export interface SetupCreatorsOptions { commands?: BaseCommandsConfig & { defaultMemberPermissions?: PermissionResolvable[]; }; responders?: Partial; events?: Partial; } /** * Initializes the Constatic command/event/responder creation system. * * This function configures the Constatic application’s internal registries * for commands, events, and responders, and returns a set of factory * functions used to create each type of component. * * It also: * - Applies optional default command permissions * - Merges user-provided config into the ConstaticApp instance * - Automatically injects `process.env.GUILD_ID` into guild-restricted commands * - Ensures `"clientReady"` events always run once * * **Returned creators:** * - `createCommand(data)` — Registers a new slash command (or other command type) * - `createEvent(data)` — Registers a Discord.js event listener * - `createResponder(data)` — Registers an interaction responder (buttons, modals, etc.) * * @example * import { setupCreators } from "@constatic/base"; * * export const { createCommand, createResponder, createEvent } = setupCreators(); */ export declare function setupCreators(options?: SetupCreatorsOptions): { createCommand: (data: CommandData) => Command; createEvent: (data: EventData) => Event; createResponder: (data: ResponderData) => Responder; };