#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct UpgradeDomainOutput {
    pub upgrade_id: ::std::option::Option<::std::string::String>,
    pub domain_name: ::std::option::Option<::std::string::String>,
    pub target_version: ::std::option::Option<::std::string::String>,
    pub perform_check_only: ::std::option::Option<bool>,
    pub advanced_options: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    pub change_progress_details: ::std::option::Option<crate::types::ChangeProgressDetails>,
    _request_id: Option<String>,
}
impl UpgradeDomainOutput {
    pub fn upgrade_id(&self) -> ::std::option::Option<&str> {
        self.upgrade_id.as_deref()
    }
    pub fn domain_name(&self) -> ::std::option::Option<&str> {
        self.domain_name.as_deref()
    }
    pub fn target_version(&self) -> ::std::option::Option<&str> {
        self.target_version.as_deref()
    }
    pub fn perform_check_only(&self) -> ::std::option::Option<bool> {
        self.perform_check_only
    }
    pub fn advanced_options(&self) -> ::std::option::Option<&::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        self.advanced_options.as_ref()
    }
    pub fn change_progress_details(&self) -> ::std::option::Option<&crate::types::ChangeProgressDetails> {
        self.change_progress_details.as_ref()
    }
}
impl ::aws_types::request_id::RequestId for UpgradeDomainOutput {
    fn request_id(&self) -> Option<&str> {
        self._request_id.as_deref()
    }
}
impl UpgradeDomainOutput {
    pub fn builder() -> crate::operation::upgrade_domain::builders::UpgradeDomainOutputBuilder {
        crate::operation::upgrade_domain::builders::UpgradeDomainOutputBuilder::default()
    }
}
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct UpgradeDomainOutputBuilder {
    pub(crate) upgrade_id: ::std::option::Option<::std::string::String>,
    pub(crate) domain_name: ::std::option::Option<::std::string::String>,
    pub(crate) target_version: ::std::option::Option<::std::string::String>,
    pub(crate) perform_check_only: ::std::option::Option<bool>,
    pub(crate) advanced_options: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    pub(crate) change_progress_details: ::std::option::Option<crate::types::ChangeProgressDetails>,
    _request_id: Option<String>,
}
impl UpgradeDomainOutputBuilder {
    pub fn upgrade_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.upgrade_id = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_upgrade_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.upgrade_id = input;
        self
    }
    pub fn get_upgrade_id(&self) -> &::std::option::Option<::std::string::String> {
        &self.upgrade_id
    }
    pub fn domain_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.domain_name = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_domain_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.domain_name = input;
        self
    }
    pub fn get_domain_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.domain_name
    }
    pub fn target_version(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.target_version = ::std::option::Option::Some(input.into());
        self
    }
    pub fn set_target_version(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.target_version = input;
        self
    }
    pub fn get_target_version(&self) -> &::std::option::Option<::std::string::String> {
        &self.target_version
    }
    pub fn perform_check_only(mut self, input: bool) -> Self {
        self.perform_check_only = ::std::option::Option::Some(input);
        self
    }
    pub fn set_perform_check_only(mut self, input: ::std::option::Option<bool>) -> Self {
        self.perform_check_only = input;
        self
    }
    pub fn get_perform_check_only(&self) -> &::std::option::Option<bool> {
        &self.perform_check_only
    }
    pub fn advanced_options(
        mut self,
        k: impl ::std::convert::Into<::std::string::String>,
        v: impl ::std::convert::Into<::std::string::String>,
    ) -> Self {
        let mut hash_map = self.advanced_options.unwrap_or_default();
        hash_map.insert(k.into(), v.into());
        self.advanced_options = ::std::option::Option::Some(hash_map);
        self
    }
    pub fn set_advanced_options(
        mut self,
        input: ::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>>,
    ) -> Self {
        self.advanced_options = input;
        self
    }
    pub fn get_advanced_options(&self) -> &::std::option::Option<::std::collections::HashMap<::std::string::String, ::std::string::String>> {
        &self.advanced_options
    }
    pub fn change_progress_details(mut self, input: crate::types::ChangeProgressDetails) -> Self {
        self.change_progress_details = ::std::option::Option::Some(input);
        self
    }
    pub fn set_change_progress_details(mut self, input: ::std::option::Option<crate::types::ChangeProgressDetails>) -> Self {
        self.change_progress_details = input;
        self
    }
    pub fn get_change_progress_details(&self) -> &::std::option::Option<crate::types::ChangeProgressDetails> {
        &self.change_progress_details
    }
    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::upgrade_domain::UpgradeDomainOutput {
        crate::operation::upgrade_domain::UpgradeDomainOutput {
            upgrade_id: self.upgrade_id,
            domain_name: self.domain_name,
            target_version: self.target_version,
            perform_check_only: self.perform_check_only,
            advanced_options: self.advanced_options,
            change_progress_details: self.change_progress_details,
            _request_id: self._request_id,
        }
    }
}