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

import com.pulumi.aws.appmesh.outputs.GetVirtualNodeSpecBackendDefaultClientPolicyTlCertificate;
import com.pulumi.aws.appmesh.outputs.GetVirtualNodeSpecBackendDefaultClientPolicyTlValidation;
import com.pulumi.core.annotations.CustomType;
import java.lang.Boolean;
import java.lang.Integer;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetVirtualNodeSpecBackendDefaultClientPolicyTl {
    private List<GetVirtualNodeSpecBackendDefaultClientPolicyTlCertificate> certificates;
    private Boolean enforce;
    private List<Integer> ports;
    private List<GetVirtualNodeSpecBackendDefaultClientPolicyTlValidation> validations;

    private GetVirtualNodeSpecBackendDefaultClientPolicyTl() {}
    public List<GetVirtualNodeSpecBackendDefaultClientPolicyTlCertificate> certificates() {
        return this.certificates;
    }
    public Boolean enforce() {
        return this.enforce;
    }
    public List<Integer> ports() {
        return this.ports;
    }
    public List<GetVirtualNodeSpecBackendDefaultClientPolicyTlValidation> validations() {
        return this.validations;
    }

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

    public static Builder builder(GetVirtualNodeSpecBackendDefaultClientPolicyTl defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private List<GetVirtualNodeSpecBackendDefaultClientPolicyTlCertificate> certificates;
        private Boolean enforce;
        private List<Integer> ports;
        private List<GetVirtualNodeSpecBackendDefaultClientPolicyTlValidation> validations;
        public Builder() {}
        public Builder(GetVirtualNodeSpecBackendDefaultClientPolicyTl defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.certificates = defaults.certificates;
    	      this.enforce = defaults.enforce;
    	      this.ports = defaults.ports;
    	      this.validations = defaults.validations;
        }

        @CustomType.Setter
        public Builder certificates(List<GetVirtualNodeSpecBackendDefaultClientPolicyTlCertificate> certificates) {
            this.certificates = Objects.requireNonNull(certificates);
            return this;
        }
        public Builder certificates(GetVirtualNodeSpecBackendDefaultClientPolicyTlCertificate... certificates) {
            return certificates(List.of(certificates));
        }
        @CustomType.Setter
        public Builder enforce(Boolean enforce) {
            this.enforce = Objects.requireNonNull(enforce);
            return this;
        }
        @CustomType.Setter
        public Builder ports(List<Integer> ports) {
            this.ports = Objects.requireNonNull(ports);
            return this;
        }
        public Builder ports(Integer... ports) {
            return ports(List.of(ports));
        }
        @CustomType.Setter
        public Builder validations(List<GetVirtualNodeSpecBackendDefaultClientPolicyTlValidation> validations) {
            this.validations = Objects.requireNonNull(validations);
            return this;
        }
        public Builder validations(GetVirtualNodeSpecBackendDefaultClientPolicyTlValidation... validations) {
            return validations(List.of(validations));
        }
        public GetVirtualNodeSpecBackendDefaultClientPolicyTl build() {
            final var o = new GetVirtualNodeSpecBackendDefaultClientPolicyTl();
            o.certificates = certificates;
            o.enforce = enforce;
            o.ports = ports;
            o.validations = validations;
            return o;
        }
    }
}
