import type { Snowflake } from '../..'; import type { APIAttachment, APIBaseInteraction, APIDMInteractionWrapper, APIGuildInteractionWrapper, APIInteractionDataResolvedChannel, APIInteractionDataResolvedGuildMember, APILabelComponents, APIRole, APIUser, ComponentType, InteractionType } from '../index'; export interface ModalSubmitComponent { type: APILabelComponents['type']; id?: number; custom_id: string; } export interface ModalSubmitFileUploadData extends ModalSubmitComponent { type: ComponentType.FileUpload; values: string[]; } export type ModalSubmitFileUpload = ModalSubmitInsideLabel; export interface ModalSubmitRadioGroupData extends ModalSubmitComponent { type: ComponentType.RadioGroup; value: string; } export type ModalSubmitRadioGroup = ModalSubmitInsideLabel; export interface ModalSubmitCheckboxGroupData extends ModalSubmitComponent { type: ComponentType.CheckboxGroup; values: string[]; } export type ModalSubmitCheckboxGroup = ModalSubmitInsideLabel; export interface ModalSubmitCheckboxData extends ModalSubmitComponent { type: ComponentType.Checkbox; value: boolean; } export type ModalSubmitCheckbox = ModalSubmitInsideLabel; export interface ModalSubmitTextInputData extends ModalSubmitComponent { type: ComponentType.TextInput; value: string; } export type ModalSubmitTextInput = ModalSubmitInsideLabel; export interface ModalSubmitSelectMenuData extends ModalSubmitComponent { type: ComponentType.StringSelect | ComponentType.UserSelect | ComponentType.RoleSelect | ComponentType.MentionableSelect | ComponentType.ChannelSelect; values: string[]; } export type ModalSubmitSelectMenu = ModalSubmitInsideLabel; export type ModalSubmitInsideLabelData = ModalSubmitRadioGroupData | ModalSubmitCheckboxGroupData | ModalSubmitCheckboxData | ModalSubmitTextInputData | ModalSubmitSelectMenuData | ModalSubmitFileUploadData; export interface ModalSubmitInsideLabel { type: ComponentType.Label; id?: number; component?: C; } /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object-modal-submit-data-structure */ export interface APIModalSubmission { /** * A developer-defined identifier for the component, max 100 characters */ custom_id: string; /** * A list of child components */ components: ModalSubmitInsideLabel[]; /** * Resolved data structure */ resolved?: { /** * A map of attachments */ attachments?: Record>; /** * A map of members */ members?: Record; /** * A map of roles */ roles?: Record; /** * A map of users */ users?: Record; /** * A map of channels */ channels?: Record; }; } /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object */ export type APIModalSubmitInteraction = APIBaseInteraction & Required, 'data'>>; /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object */ export type APIModalSubmitDMInteraction = APIDMInteractionWrapper; /** * https://discord.com/developers/docs/interactions/receiving-and-responding#interaction-object */ export type APIModalSubmitGuildInteraction = APIGuildInteractionWrapper;