#[allow(missing_docs)] #[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct DescribeSlotOutput {
    pub slot_id: ::std::option::Option<::std::string::String>,
    pub slot_name: ::std::option::Option<::std::string::String>,
    pub description: ::std::option::Option<::std::string::String>,
    pub slot_type_id: ::std::option::Option<::std::string::String>,
    pub value_elicitation_setting: ::std::option::Option<crate::types::SlotValueElicitationSetting>,
    pub obfuscation_setting: ::std::option::Option<crate::types::ObfuscationSetting>,
    pub bot_id: ::std::option::Option<::std::string::String>,
    pub bot_version: ::std::option::Option<::std::string::String>,
    pub locale_id: ::std::option::Option<::std::string::String>,
    pub intent_id: ::std::option::Option<::std::string::String>,
    pub creation_date_time: ::std::option::Option<::aws_smithy_types::DateTime>,
    pub last_updated_date_time: ::std::option::Option<::aws_smithy_types::DateTime>,
    pub multiple_values_setting: ::std::option::Option<crate::types::MultipleValuesSetting>,
    pub sub_slot_setting: ::std::option::Option<crate::types::SubSlotSetting>,
    _request_id: Option<String>,
}
impl DescribeSlotOutput {
    pub fn slot_id(&self) -> ::std::option::Option<&str> {
        self.slot_id.as_deref()
    }
    pub fn slot_name(&self) -> ::std::option::Option<&str> {
        self.slot_name.as_deref()
    }
    pub fn description(&self) -> ::std::option::Option<&str> {
        self.description.as_deref()
    }
    pub fn slot_type_id(&self) -> ::std::option::Option<&str> {
        self.slot_type_id.as_deref()
    }
    pub fn value_elicitation_setting(&self) -> ::std::option::Option<&crate::types::SlotValueElicitationSetting> {
        self.value_elicitation_setting.as_ref()
    }
    pub fn obfuscation_setting(&self) -> ::std::option::Option<&crate::types::ObfuscationSetting> {
        self.obfuscation_setting.as_ref()
    }
    pub fn bot_id(&self) -> ::std::option::Option<&str> {
        self.bot_id.as_deref()
    }
    pub fn bot_version(&self) -> ::std::option::Option<&str> {
        self.bot_version.as_deref()
    }
    pub fn locale_id(&self) -> ::std::option::Option<&str> {
        self.locale_id.as_deref()
    }
    pub fn intent_id(&self) -> ::std::option::Option<&str> {
        self.intent_id.as_deref()
    }
    pub fn creation_date_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
        self.creation_date_time.as_ref()
    }
    pub fn last_updated_date_time(&self) -> ::std::option::Option<&::aws_smithy_types::DateTime> {
        self.last_updated_date_time.as_ref()
    }
    pub fn multiple_values_setting(&self) -> ::std::option::Option<&crate::types::MultipleValuesSetting> {
        self.multiple_values_setting.as_ref()
    }
    pub fn sub_slot_setting(&self) -> ::std::option::Option<&crate::types::SubSlotSetting> {
        self.sub_slot_setting.as_ref()
    }
}
impl ::aws_http::request_id::RequestId for DescribeSlotOutput {
    fn request_id(&self) -> Option<&str> {
        self._request_id.as_deref()
    }
}
impl DescribeSlotOutput {
    pub fn builder() -> crate::operation::describe_slot::builders::DescribeSlotOutputBuilder {
        crate::operation::describe_slot::builders::DescribeSlotOutputBuilder::default()
    }
}
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct DescribeSlotOutputBuilder {
    pub(crate) slot_id: ::std::option::Option<::std::string::String>,
    pub(crate) slot_name: ::std::option::Option<::std::string::String>,
    pub(crate) description: ::std::option::Option<::std::string::String>,
    pub(crate) slot_type_id: ::std::option::Option<::std::string::String>,
    pub(crate) value_elicitation_setting: ::std::option::Option<crate::types::SlotValueElicitationSetting>,
    pub(crate) obfuscation_setting: ::std::option::Option<crate::types::ObfuscationSetting>,
    pub(crate) bot_id: ::std::option::Option<::std::string::String>,
    pub(crate) bot_version: ::std::option::Option<::std::string::String>,
    pub(crate) locale_id: ::std::option::Option<::std::string::String>,
    pub(crate) intent_id: ::std::option::Option<::std::string::String>,
    pub(crate) creation_date_time: ::std::option::Option<::aws_smithy_types::DateTime>,
    pub(crate) last_updated_date_time: ::std::option::Option<::aws_smithy_types::DateTime>,
    pub(crate) multiple_values_setting: ::std::option::Option<crate::types::MultipleValuesSetting>,
    pub(crate) sub_slot_setting: ::std::option::Option<crate::types::SubSlotSetting>,
    _request_id: Option<String>,
}
impl DescribeSlotOutputBuilder {
    pub fn slot_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.slot_id = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_slot_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.slot_id = input;
        self
    }
    pub fn get_slot_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.slot_id
    }
    pub fn slot_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.slot_name = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_slot_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.slot_name = input;
        self
    }
    pub fn get_slot_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.slot_name
    }
    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.description = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.description = input;
        self
    }
    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
        &self.description
    }
    pub fn slot_type_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.slot_type_id = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_slot_type_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.slot_type_id = input;
        self
    }
    pub fn get_slot_type_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.slot_type_id
    }
    pub fn value_elicitation_setting(mut self, input: crate::types::SlotValueElicitationSetting) -> Self {
        self.value_elicitation_setting = ::std::option::Option::Some(input);
        self
    }
    pub fn set_value_elicitation_setting(mut self, input: ::std::option::Option<crate::types::SlotValueElicitationSetting>) -> Self {
        self.value_elicitation_setting = input;
        self
    }
    pub fn get_value_elicitation_setting(&self) -> &::std::option::Option<crate::types::SlotValueElicitationSetting> {
        &self.value_elicitation_setting
    }
    pub fn obfuscation_setting(mut self, input: crate::types::ObfuscationSetting) -> Self {
        self.obfuscation_setting = ::std::option::Option::Some(input);
        self
    }
    pub fn set_obfuscation_setting(mut self, input: ::std::option::Option<crate::types::ObfuscationSetting>) -> Self {
        self.obfuscation_setting = input;
        self
    }
    pub fn get_obfuscation_setting(&self) -> &::std::option::Option<crate::types::ObfuscationSetting> {
        &self.obfuscation_setting
    }
    pub fn bot_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.bot_id = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_bot_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.bot_id = input;
        self
    }
    pub fn get_bot_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.bot_id
    }
    pub fn bot_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.bot_version = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_bot_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.bot_version = input;
        self
    }
    pub fn get_bot_version(&self) -> &::std::option::Option<::std::string::String> {
        &self.bot_version
    }
    pub fn locale_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.locale_id = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_locale_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.locale_id = input;
        self
    }
    pub fn get_locale_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.locale_id
    }
    pub fn intent_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.intent_id = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_intent_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.intent_id = input;
        self
    }
    pub fn get_intent_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.intent_id
    }
    pub fn creation_date_time(mut self, input: ::aws_smithy_types::DateTime) -> Self {
        self.creation_date_time = ::std::option::Option::Some(input);
        self
    }
    pub fn set_creation_date_time(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
        self.creation_date_time = input;
        self
    }
    pub fn get_creation_date_time(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
        &self.creation_date_time
    }
    pub fn last_updated_date_time(mut self, input: ::aws_smithy_types::DateTime) -> Self {
        self.last_updated_date_time = ::std::option::Option::Some(input);
        self
    }
    pub fn set_last_updated_date_time(mut self, input: ::std::option::Option<::aws_smithy_types::DateTime>) -> Self {
        self.last_updated_date_time = input;
        self
    }
    pub fn get_last_updated_date_time(&self) -> &::std::option::Option<::aws_smithy_types::DateTime> {
        &self.last_updated_date_time
    }
    pub fn multiple_values_setting(mut self, input: crate::types::MultipleValuesSetting) -> Self {
        self.multiple_values_setting = ::std::option::Option::Some(input);
        self
    }
    pub fn set_multiple_values_setting(mut self, input: ::std::option::Option<crate::types::MultipleValuesSetting>) -> Self {
        self.multiple_values_setting = input;
        self
    }
    pub fn get_multiple_values_setting(&self) -> &::std::option::Option<crate::types::MultipleValuesSetting> {
        &self.multiple_values_setting
    }
    pub fn sub_slot_setting(mut self, input: crate::types::SubSlotSetting) -> Self {
        self.sub_slot_setting = ::std::option::Option::Some(input);
        self
    }
    pub fn set_sub_slot_setting(mut self, input: ::std::option::Option<crate::types::SubSlotSetting>) -> Self {
        self.sub_slot_setting = input;
        self
    }
    pub fn get_sub_slot_setting(&self) -> &::std::option::Option<crate::types::SubSlotSetting> {
        &self.sub_slot_setting
    }
    pub(crate) fn _request_id(mut self, request_id: impl Into<String>) -> Self {
        self._request_id = Some(request_id.into());
        self
    }
    pub(crate) fn _set_request_id(&mut self, request_id: Option<String>) -> &mut Self {
        self._request_id = request_id;
        self
    }
    pub fn build(self) -> crate::operation::describe_slot::DescribeSlotOutput {
        crate::operation::describe_slot::DescribeSlotOutput {
            slot_id: self.slot_id,
            slot_name: self.slot_name,
            description: self.description,
            slot_type_id: self.slot_type_id,
            value_elicitation_setting: self.value_elicitation_setting,
            obfuscation_setting: self.obfuscation_setting,
            bot_id: self.bot_id,
            bot_version: self.bot_version,
            locale_id: self.locale_id,
            intent_id: self.intent_id,
            creation_date_time: self.creation_date_time,
            last_updated_date_time: self.last_updated_date_time,
            multiple_values_setting: self.multiple_values_setting,
            sub_slot_setting: self.sub_slot_setting,
            _request_id: self._request_id,
        }
    }
}