import { ActionRowBuilder, AnySelectMenuInteraction, ChannelType, Client, type MessageActionRowComponentBuilder } from 'discord.js'; export { ChannelType } from 'discord.js'; export interface StringSelectOption { label: string; value: string; description?: string; emoji?: string; default?: boolean; } export interface StringSelectConfig { id: string; placeholder?: string; options: StringSelectOption[]; minValues?: number; maxValues?: number; disabled?: boolean; } export interface GenericSelectConfig { id: string; placeholder?: string; minValues?: number; maxValues?: number; disabled?: boolean; channelTypes?: ChannelType[]; } export type SelectMenuExecutor = (interaction: T) => Promise | void; /** * Build a string select menu wrapped in an ActionRow. * * @example * stringSelect({ * id: 'color_pick', * placeholder: 'Choose a color', * options: [ * { label: 'Red', value: 'red', emoji: '🔴' }, * { label: 'Green', value: 'green', emoji: '🟢' }, * { label: 'Blue', value: 'blue', emoji: '🔵' }, * ], * }) */ export declare function stringSelect(config: StringSelectConfig): ActionRowBuilder; /** Build a user select menu wrapped in an ActionRow */ export declare function userSelect(config: GenericSelectConfig): ActionRowBuilder; /** Build a role select menu wrapped in an ActionRow */ export declare function roleSelect(config: GenericSelectConfig): ActionRowBuilder; /** Build a channel select menu wrapped in an ActionRow */ export declare function channelSelect(config: GenericSelectConfig): ActionRowBuilder; /** Build a mentionable (user+role) select menu wrapped in an ActionRow */ export declare function mentionableSelect(config: GenericSelectConfig): ActionRowBuilder; export declare class SelectHandler { private handlers; /** * Register a handler for a select menu custom ID (or ID prefix). * @returns `this` for chaining */ on(customId: string, executor: SelectMenuExecutor): this; /** Handle an incoming select menu interaction */ handle(interaction: AnySelectMenuInteraction): Promise; /** Attach to a Client — handles all select menu interactions automatically */ attach(client: Client): this; } export declare const SelectMenus: { stringSelect: typeof stringSelect; userSelect: typeof userSelect; roleSelect: typeof roleSelect; channelSelect: typeof channelSelect; mentionableSelect: typeof mentionableSelect; }; //# sourceMappingURL=select.d.ts.map