// *** 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.networkfirewall.outputs;

import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.Map;
import java.util.Objects;

@CustomType
public final class LoggingConfigurationLoggingConfigurationLogDestinationConfig {
    /**
     * @return A map describing the logging destination for the chosen `log_destination_type`.
     * * For an Amazon S3 bucket, specify the key `bucketName` with the name of the bucket and optionally specify the key `prefix` with a path.
     * * For a CloudWatch log group, specify the key `logGroup` with the name of the CloudWatch log group.
     * * For a Kinesis Data Firehose delivery stream, specify the key `deliveryStream` with the name of the delivery stream.
     * 
     */
    private Map<String,String> logDestination;
    /**
     * @return The location to send logs to. Valid values: `S3`, `CloudWatchLogs`, `KinesisDataFirehose`.
     * 
     */
    private String logDestinationType;
    /**
     * @return The type of log to send. Valid values: `ALERT` or `FLOW`. Alert logs report traffic that matches a `StatefulRule` with an action setting that sends a log message. Flow logs are standard network traffic flow logs.
     * 
     */
    private String logType;

    private LoggingConfigurationLoggingConfigurationLogDestinationConfig() {}
    /**
     * @return A map describing the logging destination for the chosen `log_destination_type`.
     * * For an Amazon S3 bucket, specify the key `bucketName` with the name of the bucket and optionally specify the key `prefix` with a path.
     * * For a CloudWatch log group, specify the key `logGroup` with the name of the CloudWatch log group.
     * * For a Kinesis Data Firehose delivery stream, specify the key `deliveryStream` with the name of the delivery stream.
     * 
     */
    public Map<String,String> logDestination() {
        return this.logDestination;
    }
    /**
     * @return The location to send logs to. Valid values: `S3`, `CloudWatchLogs`, `KinesisDataFirehose`.
     * 
     */
    public String logDestinationType() {
        return this.logDestinationType;
    }
    /**
     * @return The type of log to send. Valid values: `ALERT` or `FLOW`. Alert logs report traffic that matches a `StatefulRule` with an action setting that sends a log message. Flow logs are standard network traffic flow logs.
     * 
     */
    public String logType() {
        return this.logType;
    }

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

    public static Builder builder(LoggingConfigurationLoggingConfigurationLogDestinationConfig defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private Map<String,String> logDestination;
        private String logDestinationType;
        private String logType;
        public Builder() {}
        public Builder(LoggingConfigurationLoggingConfigurationLogDestinationConfig defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.logDestination = defaults.logDestination;
    	      this.logDestinationType = defaults.logDestinationType;
    	      this.logType = defaults.logType;
        }

        @CustomType.Setter
        public Builder logDestination(Map<String,String> logDestination) {
            this.logDestination = Objects.requireNonNull(logDestination);
            return this;
        }
        @CustomType.Setter
        public Builder logDestinationType(String logDestinationType) {
            this.logDestinationType = Objects.requireNonNull(logDestinationType);
            return this;
        }
        @CustomType.Setter
        public Builder logType(String logType) {
            this.logType = Objects.requireNonNull(logType);
            return this;
        }
        public LoggingConfigurationLoggingConfigurationLogDestinationConfig build() {
            final var o = new LoggingConfigurationLoggingConfigurationLogDestinationConfig();
            o.logDestination = logDestination;
            o.logDestinationType = logDestinationType;
            o.logType = logType;
            return o;
        }
    }
}
