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

import com.pulumi.aws.connect.outputs.GetQuickConnectQuickConnectConfigPhoneConfig;
import com.pulumi.aws.connect.outputs.GetQuickConnectQuickConnectConfigQueueConfig;
import com.pulumi.aws.connect.outputs.GetQuickConnectQuickConnectConfigUserConfig;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetQuickConnectQuickConnectConfig {
    /**
     * @return Phone configuration of the Quick Connect. This is returned only if `quick_connect_type` is `PHONE_NUMBER`. The `phone_config` block is documented below.
     * 
     */
    private List<GetQuickConnectQuickConnectConfigPhoneConfig> phoneConfigs;
    /**
     * @return Queue configuration of the Quick Connect. This is returned only if `quick_connect_type` is `QUEUE`. The `queue_config` block is documented below.
     * 
     */
    private List<GetQuickConnectQuickConnectConfigQueueConfig> queueConfigs;
    /**
     * @return Configuration type of the Quick Connect. Valid values are `PHONE_NUMBER`, `QUEUE`, `USER`.
     * 
     */
    private String quickConnectType;
    /**
     * @return User configuration of the Quick Connect. This is returned only if `quick_connect_type` is `USER`. The `user_config` block is documented below.
     * 
     */
    private List<GetQuickConnectQuickConnectConfigUserConfig> userConfigs;

    private GetQuickConnectQuickConnectConfig() {}
    /**
     * @return Phone configuration of the Quick Connect. This is returned only if `quick_connect_type` is `PHONE_NUMBER`. The `phone_config` block is documented below.
     * 
     */
    public List<GetQuickConnectQuickConnectConfigPhoneConfig> phoneConfigs() {
        return this.phoneConfigs;
    }
    /**
     * @return Queue configuration of the Quick Connect. This is returned only if `quick_connect_type` is `QUEUE`. The `queue_config` block is documented below.
     * 
     */
    public List<GetQuickConnectQuickConnectConfigQueueConfig> queueConfigs() {
        return this.queueConfigs;
    }
    /**
     * @return Configuration type of the Quick Connect. Valid values are `PHONE_NUMBER`, `QUEUE`, `USER`.
     * 
     */
    public String quickConnectType() {
        return this.quickConnectType;
    }
    /**
     * @return User configuration of the Quick Connect. This is returned only if `quick_connect_type` is `USER`. The `user_config` block is documented below.
     * 
     */
    public List<GetQuickConnectQuickConnectConfigUserConfig> userConfigs() {
        return this.userConfigs;
    }

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

    public static Builder builder(GetQuickConnectQuickConnectConfig defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private List<GetQuickConnectQuickConnectConfigPhoneConfig> phoneConfigs;
        private List<GetQuickConnectQuickConnectConfigQueueConfig> queueConfigs;
        private String quickConnectType;
        private List<GetQuickConnectQuickConnectConfigUserConfig> userConfigs;
        public Builder() {}
        public Builder(GetQuickConnectQuickConnectConfig defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.phoneConfigs = defaults.phoneConfigs;
    	      this.queueConfigs = defaults.queueConfigs;
    	      this.quickConnectType = defaults.quickConnectType;
    	      this.userConfigs = defaults.userConfigs;
        }

        @CustomType.Setter
        public Builder phoneConfigs(List<GetQuickConnectQuickConnectConfigPhoneConfig> phoneConfigs) {
            this.phoneConfigs = Objects.requireNonNull(phoneConfigs);
            return this;
        }
        public Builder phoneConfigs(GetQuickConnectQuickConnectConfigPhoneConfig... phoneConfigs) {
            return phoneConfigs(List.of(phoneConfigs));
        }
        @CustomType.Setter
        public Builder queueConfigs(List<GetQuickConnectQuickConnectConfigQueueConfig> queueConfigs) {
            this.queueConfigs = Objects.requireNonNull(queueConfigs);
            return this;
        }
        public Builder queueConfigs(GetQuickConnectQuickConnectConfigQueueConfig... queueConfigs) {
            return queueConfigs(List.of(queueConfigs));
        }
        @CustomType.Setter
        public Builder quickConnectType(String quickConnectType) {
            this.quickConnectType = Objects.requireNonNull(quickConnectType);
            return this;
        }
        @CustomType.Setter
        public Builder userConfigs(List<GetQuickConnectQuickConnectConfigUserConfig> userConfigs) {
            this.userConfigs = Objects.requireNonNull(userConfigs);
            return this;
        }
        public Builder userConfigs(GetQuickConnectQuickConnectConfigUserConfig... userConfigs) {
            return userConfigs(List.of(userConfigs));
        }
        public GetQuickConnectQuickConnectConfig build() {
            final var o = new GetQuickConnectQuickConnectConfig();
            o.phoneConfigs = phoneConfigs;
            o.queueConfigs = queueConfigs;
            o.quickConnectType = quickConnectType;
            o.userConfigs = userConfigs;
            return o;
        }
    }
}
