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

import com.pulumi.aws.kms.outputs.GetKeyMultiRegionConfigurationPrimaryKey;
import com.pulumi.aws.kms.outputs.GetKeyMultiRegionConfigurationReplicaKey;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetKeyMultiRegionConfiguration {
    /**
     * @return Indicates whether the KMS key is a `PRIMARY` or `REPLICA` key.
     * 
     */
    private String multiRegionKeyType;
    /**
     * @return The key ARN and Region of the primary key. This is the current KMS key if it is the primary key.
     * 
     */
    private List<GetKeyMultiRegionConfigurationPrimaryKey> primaryKeys;
    /**
     * @return The key ARNs and Regions of all replica keys. Includes the current KMS key if it is a replica key.
     * 
     */
    private List<GetKeyMultiRegionConfigurationReplicaKey> replicaKeys;

    private GetKeyMultiRegionConfiguration() {}
    /**
     * @return Indicates whether the KMS key is a `PRIMARY` or `REPLICA` key.
     * 
     */
    public String multiRegionKeyType() {
        return this.multiRegionKeyType;
    }
    /**
     * @return The key ARN and Region of the primary key. This is the current KMS key if it is the primary key.
     * 
     */
    public List<GetKeyMultiRegionConfigurationPrimaryKey> primaryKeys() {
        return this.primaryKeys;
    }
    /**
     * @return The key ARNs and Regions of all replica keys. Includes the current KMS key if it is a replica key.
     * 
     */
    public List<GetKeyMultiRegionConfigurationReplicaKey> replicaKeys() {
        return this.replicaKeys;
    }

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

    public static Builder builder(GetKeyMultiRegionConfiguration defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String multiRegionKeyType;
        private List<GetKeyMultiRegionConfigurationPrimaryKey> primaryKeys;
        private List<GetKeyMultiRegionConfigurationReplicaKey> replicaKeys;
        public Builder() {}
        public Builder(GetKeyMultiRegionConfiguration defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.multiRegionKeyType = defaults.multiRegionKeyType;
    	      this.primaryKeys = defaults.primaryKeys;
    	      this.replicaKeys = defaults.replicaKeys;
        }

        @CustomType.Setter
        public Builder multiRegionKeyType(String multiRegionKeyType) {
            this.multiRegionKeyType = Objects.requireNonNull(multiRegionKeyType);
            return this;
        }
        @CustomType.Setter
        public Builder primaryKeys(List<GetKeyMultiRegionConfigurationPrimaryKey> primaryKeys) {
            this.primaryKeys = Objects.requireNonNull(primaryKeys);
            return this;
        }
        public Builder primaryKeys(GetKeyMultiRegionConfigurationPrimaryKey... primaryKeys) {
            return primaryKeys(List.of(primaryKeys));
        }
        @CustomType.Setter
        public Builder replicaKeys(List<GetKeyMultiRegionConfigurationReplicaKey> replicaKeys) {
            this.replicaKeys = Objects.requireNonNull(replicaKeys);
            return this;
        }
        public Builder replicaKeys(GetKeyMultiRegionConfigurationReplicaKey... replicaKeys) {
            return replicaKeys(List.of(replicaKeys));
        }
        public GetKeyMultiRegionConfiguration build() {
            final var o = new GetKeyMultiRegionConfiguration();
            o.multiRegionKeyType = multiRegionKeyType;
            o.primaryKeys = primaryKeys;
            o.replicaKeys = replicaKeys;
            return o;
        }
    }
}
