// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.cognito.outputs;

import com.pulumi.aws.cognito.outputs.RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationBlockEmail;
import com.pulumi.aws.cognito.outputs.RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationMfaEmail;
import com.pulumi.aws.cognito.outputs.RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationNoActionEmail;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;

@CustomType
public final class RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfiguration {
    /**
     * @return Email template used when a detected risk event is blocked. See notify email type below.
     * 
     */
    private @Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationBlockEmail blockEmail;
    /**
     * @return The email address that is sending the email. The address must be either individually verified with Amazon Simple Email Service, or from a domain that has been verified with Amazon SES.
     * 
     */
    private @Nullable String from;
    /**
     * @return The multi-factor authentication (MFA) email template used when MFA is challenged as part of a detected risk. See notify email type below.
     * 
     */
    private @Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationMfaEmail mfaEmail;
    /**
     * @return The email template used when a detected risk event is allowed. See notify email type below.
     * 
     */
    private @Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationNoActionEmail noActionEmail;
    /**
     * @return The destination to which the receiver of an email should reply to.
     * 
     */
    private @Nullable String replyTo;
    /**
     * @return The Amazon Resource Name (ARN) of the identity that is associated with the sending authorization policy. This identity permits Amazon Cognito to send for the email address specified in the From parameter.
     * 
     */
    private String sourceArn;

    private RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfiguration() {}
    /**
     * @return Email template used when a detected risk event is blocked. See notify email type below.
     * 
     */
    public Optional<RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationBlockEmail> blockEmail() {
        return Optional.ofNullable(this.blockEmail);
    }
    /**
     * @return The email address that is sending the email. The address must be either individually verified with Amazon Simple Email Service, or from a domain that has been verified with Amazon SES.
     * 
     */
    public Optional<String> from() {
        return Optional.ofNullable(this.from);
    }
    /**
     * @return The multi-factor authentication (MFA) email template used when MFA is challenged as part of a detected risk. See notify email type below.
     * 
     */
    public Optional<RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationMfaEmail> mfaEmail() {
        return Optional.ofNullable(this.mfaEmail);
    }
    /**
     * @return The email template used when a detected risk event is allowed. See notify email type below.
     * 
     */
    public Optional<RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationNoActionEmail> noActionEmail() {
        return Optional.ofNullable(this.noActionEmail);
    }
    /**
     * @return The destination to which the receiver of an email should reply to.
     * 
     */
    public Optional<String> replyTo() {
        return Optional.ofNullable(this.replyTo);
    }
    /**
     * @return The Amazon Resource Name (ARN) of the identity that is associated with the sending authorization policy. This identity permits Amazon Cognito to send for the email address specified in the From parameter.
     * 
     */
    public String sourceArn() {
        return this.sourceArn;
    }

    public static Builder builder() {
        return new Builder();
    }

    public static Builder builder(RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfiguration defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationBlockEmail blockEmail;
        private @Nullable String from;
        private @Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationMfaEmail mfaEmail;
        private @Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationNoActionEmail noActionEmail;
        private @Nullable String replyTo;
        private String sourceArn;
        public Builder() {}
        public Builder(RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfiguration defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.blockEmail = defaults.blockEmail;
    	      this.from = defaults.from;
    	      this.mfaEmail = defaults.mfaEmail;
    	      this.noActionEmail = defaults.noActionEmail;
    	      this.replyTo = defaults.replyTo;
    	      this.sourceArn = defaults.sourceArn;
        }

        @CustomType.Setter
        public Builder blockEmail(@Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationBlockEmail blockEmail) {
            this.blockEmail = blockEmail;
            return this;
        }
        @CustomType.Setter
        public Builder from(@Nullable String from) {
            this.from = from;
            return this;
        }
        @CustomType.Setter
        public Builder mfaEmail(@Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationMfaEmail mfaEmail) {
            this.mfaEmail = mfaEmail;
            return this;
        }
        @CustomType.Setter
        public Builder noActionEmail(@Nullable RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfigurationNoActionEmail noActionEmail) {
            this.noActionEmail = noActionEmail;
            return this;
        }
        @CustomType.Setter
        public Builder replyTo(@Nullable String replyTo) {
            this.replyTo = replyTo;
            return this;
        }
        @CustomType.Setter
        public Builder sourceArn(String sourceArn) {
            this.sourceArn = Objects.requireNonNull(sourceArn);
            return this;
        }
        public RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfiguration build() {
            final var o = new RiskConfigurationAccountTakeoverRiskConfigurationNotifyConfiguration();
            o.blockEmail = blockEmail;
            o.from = from;
            o.mfaEmail = mfaEmail;
            o.noActionEmail = noActionEmail;
            o.replyTo = replyTo;
            o.sourceArn = sourceArn;
            return o;
        }
    }
}
