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

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


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

    public static final ArchiveRuleFilterArgs Empty = new ArchiveRuleFilterArgs();

    /**
     * Contains comparator.
     * 
     */
    @Import(name="contains")
    private @Nullable Output<List<String>> contains;

    /**
     * @return Contains comparator.
     * 
     */
    public Optional<Output<List<String>>> contains() {
        return Optional.ofNullable(this.contains);
    }

    /**
     * Filter criteria.
     * 
     */
    @Import(name="criteria", required=true)
    private Output<String> criteria;

    /**
     * @return Filter criteria.
     * 
     */
    public Output<String> criteria() {
        return this.criteria;
    }

    /**
     * Equals comparator.
     * 
     */
    @Import(name="eqs")
    private @Nullable Output<List<String>> eqs;

    /**
     * @return Equals comparator.
     * 
     */
    public Optional<Output<List<String>>> eqs() {
        return Optional.ofNullable(this.eqs);
    }

    /**
     * Boolean comparator.
     * 
     */
    @Import(name="exists")
    private @Nullable Output<String> exists;

    /**
     * @return Boolean comparator.
     * 
     */
    public Optional<Output<String>> exists() {
        return Optional.ofNullable(this.exists);
    }

    /**
     * Not Equals comparator.
     * 
     */
    @Import(name="neqs")
    private @Nullable Output<List<String>> neqs;

    /**
     * @return Not Equals comparator.
     * 
     */
    public Optional<Output<List<String>>> neqs() {
        return Optional.ofNullable(this.neqs);
    }

    private ArchiveRuleFilterArgs() {}

    private ArchiveRuleFilterArgs(ArchiveRuleFilterArgs $) {
        this.contains = $.contains;
        this.criteria = $.criteria;
        this.eqs = $.eqs;
        this.exists = $.exists;
        this.neqs = $.neqs;
    }

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

    public static final class Builder {
        private ArchiveRuleFilterArgs $;

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

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

        /**
         * @param contains Contains comparator.
         * 
         * @return builder
         * 
         */
        public Builder contains(@Nullable Output<List<String>> contains) {
            $.contains = contains;
            return this;
        }

        /**
         * @param contains Contains comparator.
         * 
         * @return builder
         * 
         */
        public Builder contains(List<String> contains) {
            return contains(Output.of(contains));
        }

        /**
         * @param contains Contains comparator.
         * 
         * @return builder
         * 
         */
        public Builder contains(String... contains) {
            return contains(List.of(contains));
        }

        /**
         * @param criteria Filter criteria.
         * 
         * @return builder
         * 
         */
        public Builder criteria(Output<String> criteria) {
            $.criteria = criteria;
            return this;
        }

        /**
         * @param criteria Filter criteria.
         * 
         * @return builder
         * 
         */
        public Builder criteria(String criteria) {
            return criteria(Output.of(criteria));
        }

        /**
         * @param eqs Equals comparator.
         * 
         * @return builder
         * 
         */
        public Builder eqs(@Nullable Output<List<String>> eqs) {
            $.eqs = eqs;
            return this;
        }

        /**
         * @param eqs Equals comparator.
         * 
         * @return builder
         * 
         */
        public Builder eqs(List<String> eqs) {
            return eqs(Output.of(eqs));
        }

        /**
         * @param eqs Equals comparator.
         * 
         * @return builder
         * 
         */
        public Builder eqs(String... eqs) {
            return eqs(List.of(eqs));
        }

        /**
         * @param exists Boolean comparator.
         * 
         * @return builder
         * 
         */
        public Builder exists(@Nullable Output<String> exists) {
            $.exists = exists;
            return this;
        }

        /**
         * @param exists Boolean comparator.
         * 
         * @return builder
         * 
         */
        public Builder exists(String exists) {
            return exists(Output.of(exists));
        }

        /**
         * @param neqs Not Equals comparator.
         * 
         * @return builder
         * 
         */
        public Builder neqs(@Nullable Output<List<String>> neqs) {
            $.neqs = neqs;
            return this;
        }

        /**
         * @param neqs Not Equals comparator.
         * 
         * @return builder
         * 
         */
        public Builder neqs(List<String> neqs) {
            return neqs(Output.of(neqs));
        }

        /**
         * @param neqs Not Equals comparator.
         * 
         * @return builder
         * 
         */
        public Builder neqs(String... neqs) {
            return neqs(List.of(neqs));
        }

        public ArchiveRuleFilterArgs build() {
            $.criteria = Objects.requireNonNull($.criteria, "expected parameter 'criteria' to be non-null");
            return $;
        }
    }

}
