use super::InteractionDataType;
use crate::models::serde_helpers::{is_default, is_zero_i32};
use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::BTreeMap;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct Resolved {
#[serde(default, skip_serializing_if = "String::is_empty")]
pub keyword: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub user_id: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub request: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub message_id: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub member_nick: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub button_data: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub button_id: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub feature_id: String,
#[serde(default, skip_serializing_if = "String::is_empty")]
pub feedback_opt: String,
#[serde(default, skip_serializing_if = "is_zero_i32")]
pub checked: i32,
#[serde(default, flatten, skip_serializing_if = "BTreeMap::is_empty")]
pub extra: BTreeMap<String, Value>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Default)]
pub struct InteractionData {
#[serde(default, skip_serializing_if = "String::is_empty")]
pub name: String,
#[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
pub data_type: Option<InteractionDataType>,
#[serde(default, skip_serializing_if = "is_default")]
pub resolved: Resolved,
}