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

import com.pulumi.aws.ec2.outputs.GetCustomerGatewayFilter;
import com.pulumi.core.annotations.CustomType;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;

@CustomType
public final class GetCustomerGatewayResult {
    /**
     * @return ARN of the customer gateway.
     * 
     */
    private String arn;
    /**
     * @return Gateway&#39;s Border Gateway Protocol (BGP) Autonomous System Number (ASN).
     * 
     */
    private Integer bgpAsn;
    /**
     * @return ARN for the customer gateway certificate.
     * 
     */
    private String certificateArn;
    /**
     * @return Name for the customer gateway device.
     * 
     */
    private String deviceName;
    private @Nullable List<GetCustomerGatewayFilter> filters;
    private String id;
    /**
     * @return IP address of the gateway&#39;s Internet-routable external interface.
     * 
     */
    private String ipAddress;
    /**
     * @return Map of key-value pairs assigned to the gateway.
     * 
     */
    private Map<String,String> tags;
    /**
     * @return Type of customer gateway. The only type AWS supports at this time is &#34;ipsec.1&#34;.
     * 
     */
    private String type;

    private GetCustomerGatewayResult() {}
    /**
     * @return ARN of the customer gateway.
     * 
     */
    public String arn() {
        return this.arn;
    }
    /**
     * @return Gateway&#39;s Border Gateway Protocol (BGP) Autonomous System Number (ASN).
     * 
     */
    public Integer bgpAsn() {
        return this.bgpAsn;
    }
    /**
     * @return ARN for the customer gateway certificate.
     * 
     */
    public String certificateArn() {
        return this.certificateArn;
    }
    /**
     * @return Name for the customer gateway device.
     * 
     */
    public String deviceName() {
        return this.deviceName;
    }
    public List<GetCustomerGatewayFilter> filters() {
        return this.filters == null ? List.of() : this.filters;
    }
    public String id() {
        return this.id;
    }
    /**
     * @return IP address of the gateway&#39;s Internet-routable external interface.
     * 
     */
    public String ipAddress() {
        return this.ipAddress;
    }
    /**
     * @return Map of key-value pairs assigned to the gateway.
     * 
     */
    public Map<String,String> tags() {
        return this.tags;
    }
    /**
     * @return Type of customer gateway. The only type AWS supports at this time is &#34;ipsec.1&#34;.
     * 
     */
    public String type() {
        return this.type;
    }

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

    public static Builder builder(GetCustomerGatewayResult defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String arn;
        private Integer bgpAsn;
        private String certificateArn;
        private String deviceName;
        private @Nullable List<GetCustomerGatewayFilter> filters;
        private String id;
        private String ipAddress;
        private Map<String,String> tags;
        private String type;
        public Builder() {}
        public Builder(GetCustomerGatewayResult defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.arn = defaults.arn;
    	      this.bgpAsn = defaults.bgpAsn;
    	      this.certificateArn = defaults.certificateArn;
    	      this.deviceName = defaults.deviceName;
    	      this.filters = defaults.filters;
    	      this.id = defaults.id;
    	      this.ipAddress = defaults.ipAddress;
    	      this.tags = defaults.tags;
    	      this.type = defaults.type;
        }

        @CustomType.Setter
        public Builder arn(String arn) {
            this.arn = Objects.requireNonNull(arn);
            return this;
        }
        @CustomType.Setter
        public Builder bgpAsn(Integer bgpAsn) {
            this.bgpAsn = Objects.requireNonNull(bgpAsn);
            return this;
        }
        @CustomType.Setter
        public Builder certificateArn(String certificateArn) {
            this.certificateArn = Objects.requireNonNull(certificateArn);
            return this;
        }
        @CustomType.Setter
        public Builder deviceName(String deviceName) {
            this.deviceName = Objects.requireNonNull(deviceName);
            return this;
        }
        @CustomType.Setter
        public Builder filters(@Nullable List<GetCustomerGatewayFilter> filters) {
            this.filters = filters;
            return this;
        }
        public Builder filters(GetCustomerGatewayFilter... filters) {
            return filters(List.of(filters));
        }
        @CustomType.Setter
        public Builder id(String id) {
            this.id = Objects.requireNonNull(id);
            return this;
        }
        @CustomType.Setter
        public Builder ipAddress(String ipAddress) {
            this.ipAddress = Objects.requireNonNull(ipAddress);
            return this;
        }
        @CustomType.Setter
        public Builder tags(Map<String,String> tags) {
            this.tags = Objects.requireNonNull(tags);
            return this;
        }
        @CustomType.Setter
        public Builder type(String type) {
            this.type = Objects.requireNonNull(type);
            return this;
        }
        public GetCustomerGatewayResult build() {
            final var o = new GetCustomerGatewayResult();
            o.arn = arn;
            o.bgpAsn = bgpAsn;
            o.certificateArn = certificateArn;
            o.deviceName = deviceName;
            o.filters = filters;
            o.id = id;
            o.ipAddress = ipAddress;
            o.tags = tags;
            o.type = type;
            return o;
        }
    }
}
