import type { ComponentType, Snowflake } from '../../index'; import type { APIBaseInteraction, InteractionType } from '../interactions'; import type { APIDMInteractionWrapper, APIGuildInteractionWrapper, APIInteractionDataResolved, APIUserInteractionDataResolved } from './base'; export type APIMessageComponentInteraction = APIBaseInteraction & Required, 'app_permissions' | 'channel' | 'data' | 'message'>>; export type APIMessageComponentButtonInteraction = APIBaseInteraction & Required, 'app_permissions' | 'channel' | 'data' | 'message'>>; export type APIMessageComponentSelectMenuInteraction = APIBaseInteraction & Required, 'app_permissions' | 'channel' | 'data' | 'message'>>; export type APIMessageComponentInteractionData = APIMessageButtonInteractionData | APIMessageSelectMenuInteractionData; export interface APIMessageComponentBaseInteractionData { /** * The `custom_id` of the component */ custom_id: string; /** * The type of the component */ component_type: CType; } export type APIMessageButtonInteractionData = APIMessageComponentBaseInteractionData; export interface APIMessageStringSelectInteractionData extends APIMessageComponentBaseInteractionData { values: string[]; } export interface APIMessageUserSelectInteractionData extends APIMessageComponentBaseInteractionData { values: Snowflake[]; resolved: APIUserInteractionDataResolved; } export interface APIMessageRoleSelectInteractionData extends APIMessageComponentBaseInteractionData { values: Snowflake[]; resolved: Required>; } export interface APIMessageMentionableSelectInteractionData extends APIMessageComponentBaseInteractionData { values: Snowflake[]; resolved: Pick; } export interface APIMessageChannelSelectInteractionData extends APIMessageComponentBaseInteractionData { values: Snowflake[]; resolved: Required>; } export type APIMessageSelectMenuInteractionData = APIMessageChannelSelectInteractionData | APIMessageMentionableSelectInteractionData | APIMessageRoleSelectInteractionData | APIMessageStringSelectInteractionData | APIMessageUserSelectInteractionData; export type APIMessageComponentDMInteraction = APIDMInteractionWrapper; export type APIMessageComponentGuildInteraction = APIGuildInteractionWrapper;