// *** 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.vpclattice.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class AccessLogSubscriptionState extends com.pulumi.resources.ResourceArgs {

    public static final AccessLogSubscriptionState Empty = new AccessLogSubscriptionState();

    /**
     * Amazon Resource Name (ARN) of the access log subscription.
     * 
     */
    @Import(name="arn")
    private @Nullable Output<String> arn;

    /**
     * @return Amazon Resource Name (ARN) of the access log subscription.
     * 
     */
    public Optional<Output<String>> arn() {
        return Optional.ofNullable(this.arn);
    }

    /**
     * Amazon Resource Name (ARN) of the log destination.
     * 
     */
    @Import(name="destinationArn")
    private @Nullable Output<String> destinationArn;

    /**
     * @return Amazon Resource Name (ARN) of the log destination.
     * 
     */
    public Optional<Output<String>> destinationArn() {
        return Optional.ofNullable(this.destinationArn);
    }

    /**
     * Amazon Resource Name (ARN) of the service network or service.
     * 
     */
    @Import(name="resourceArn")
    private @Nullable Output<String> resourceArn;

    /**
     * @return Amazon Resource Name (ARN) of the service network or service.
     * 
     */
    public Optional<Output<String>> resourceArn() {
        return Optional.ofNullable(this.resourceArn);
    }

    /**
     * The ID or Amazon Resource Identifier (ARN) of the service network or service. You must use the ARN if the resources specified in the operation are in different accounts.
     * 
     */
    @Import(name="resourceIdentifier")
    private @Nullable Output<String> resourceIdentifier;

    /**
     * @return The ID or Amazon Resource Identifier (ARN) of the service network or service. You must use the ARN if the resources specified in the operation are in different accounts.
     * 
     */
    public Optional<Output<String>> resourceIdentifier() {
        return Optional.ofNullable(this.resourceIdentifier);
    }

    @Import(name="tags")
    private @Nullable Output<Map<String,String>> tags;

    public Optional<Output<Map<String,String>>> tags() {
        return Optional.ofNullable(this.tags);
    }

    @Import(name="tagsAll")
    private @Nullable Output<Map<String,String>> tagsAll;

    public Optional<Output<Map<String,String>>> tagsAll() {
        return Optional.ofNullable(this.tagsAll);
    }

    private AccessLogSubscriptionState() {}

    private AccessLogSubscriptionState(AccessLogSubscriptionState $) {
        this.arn = $.arn;
        this.destinationArn = $.destinationArn;
        this.resourceArn = $.resourceArn;
        this.resourceIdentifier = $.resourceIdentifier;
        this.tags = $.tags;
        this.tagsAll = $.tagsAll;
    }

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

    public static final class Builder {
        private AccessLogSubscriptionState $;

        public Builder() {
            $ = new AccessLogSubscriptionState();
        }

        public Builder(AccessLogSubscriptionState defaults) {
            $ = new AccessLogSubscriptionState(Objects.requireNonNull(defaults));
        }

        /**
         * @param arn Amazon Resource Name (ARN) of the access log subscription.
         * 
         * @return builder
         * 
         */
        public Builder arn(@Nullable Output<String> arn) {
            $.arn = arn;
            return this;
        }

        /**
         * @param arn Amazon Resource Name (ARN) of the access log subscription.
         * 
         * @return builder
         * 
         */
        public Builder arn(String arn) {
            return arn(Output.of(arn));
        }

        /**
         * @param destinationArn Amazon Resource Name (ARN) of the log destination.
         * 
         * @return builder
         * 
         */
        public Builder destinationArn(@Nullable Output<String> destinationArn) {
            $.destinationArn = destinationArn;
            return this;
        }

        /**
         * @param destinationArn Amazon Resource Name (ARN) of the log destination.
         * 
         * @return builder
         * 
         */
        public Builder destinationArn(String destinationArn) {
            return destinationArn(Output.of(destinationArn));
        }

        /**
         * @param resourceArn Amazon Resource Name (ARN) of the service network or service.
         * 
         * @return builder
         * 
         */
        public Builder resourceArn(@Nullable Output<String> resourceArn) {
            $.resourceArn = resourceArn;
            return this;
        }

        /**
         * @param resourceArn Amazon Resource Name (ARN) of the service network or service.
         * 
         * @return builder
         * 
         */
        public Builder resourceArn(String resourceArn) {
            return resourceArn(Output.of(resourceArn));
        }

        /**
         * @param resourceIdentifier The ID or Amazon Resource Identifier (ARN) of the service network or service. You must use the ARN if the resources specified in the operation are in different accounts.
         * 
         * @return builder
         * 
         */
        public Builder resourceIdentifier(@Nullable Output<String> resourceIdentifier) {
            $.resourceIdentifier = resourceIdentifier;
            return this;
        }

        /**
         * @param resourceIdentifier The ID or Amazon Resource Identifier (ARN) of the service network or service. You must use the ARN if the resources specified in the operation are in different accounts.
         * 
         * @return builder
         * 
         */
        public Builder resourceIdentifier(String resourceIdentifier) {
            return resourceIdentifier(Output.of(resourceIdentifier));
        }

        public Builder tags(@Nullable Output<Map<String,String>> tags) {
            $.tags = tags;
            return this;
        }

        public Builder tags(Map<String,String> tags) {
            return tags(Output.of(tags));
        }

        public Builder tagsAll(@Nullable Output<Map<String,String>> tagsAll) {
            $.tagsAll = tagsAll;
            return this;
        }

        public Builder tagsAll(Map<String,String> tagsAll) {
            return tagsAll(Output.of(tagsAll));
        }

        public AccessLogSubscriptionState build() {
            return $;
        }
    }

}
