use crate::models::payloads::base::{
APIDMInteractionWrapper, APIGuildInteractionWrapper,
};
use crate::models::payloads::channel::APIBaseComponent;
use crate::models::payloads::responses::InteractionType;
use crate::models::payloads::{ComponentType, base::APIBaseInteraction};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModalSubmitComponent {
pub r#type: ComponentType,
pub custom_id: String,
pub value: String,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ModalSubmitActionRowComponent {
#[serde(flatten)]
pub base: APIBaseComponent<ComponentType>,
pub components: Vec<ModalSubmitComponent>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct APIModalSubmission {
pub custom_id: String,
pub components: Vec<ModalSubmitActionRowComponent>,
}
pub type APIModalSubmitInteraction = APIBaseInteraction<InteractionType, APIModalSubmission>;
pub type APIModalSubmitDMInteraction = APIDMInteractionWrapper<APIModalSubmitInteraction>;
pub type APIModalSubmitGuildInteraction = APIGuildInteractionWrapper<APIModalSubmitInteraction>;