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

import com.pulumi.aws.medialive.inputs.ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsAkamaiSettingsArgs;
import com.pulumi.aws.medialive.inputs.ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsBasicPutSettingsArgs;
import com.pulumi.aws.medialive.inputs.ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsMediaStoreSettingsArgs;
import com.pulumi.aws.medialive.inputs.ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsS3SettingsArgs;
import com.pulumi.aws.medialive.inputs.ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsWebdavSettingsArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingArgs Empty = new ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingArgs();

    @Import(name="hlsAkamaiSettings")
    private @Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsAkamaiSettingsArgs> hlsAkamaiSettings;

    public Optional<Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsAkamaiSettingsArgs>> hlsAkamaiSettings() {
        return Optional.ofNullable(this.hlsAkamaiSettings);
    }

    @Import(name="hlsBasicPutSettings")
    private @Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsBasicPutSettingsArgs> hlsBasicPutSettings;

    public Optional<Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsBasicPutSettingsArgs>> hlsBasicPutSettings() {
        return Optional.ofNullable(this.hlsBasicPutSettings);
    }

    @Import(name="hlsMediaStoreSettings")
    private @Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsMediaStoreSettingsArgs> hlsMediaStoreSettings;

    public Optional<Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsMediaStoreSettingsArgs>> hlsMediaStoreSettings() {
        return Optional.ofNullable(this.hlsMediaStoreSettings);
    }

    @Import(name="hlsS3Settings")
    private @Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsS3SettingsArgs> hlsS3Settings;

    public Optional<Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsS3SettingsArgs>> hlsS3Settings() {
        return Optional.ofNullable(this.hlsS3Settings);
    }

    @Import(name="hlsWebdavSettings")
    private @Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsWebdavSettingsArgs> hlsWebdavSettings;

    public Optional<Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsWebdavSettingsArgs>> hlsWebdavSettings() {
        return Optional.ofNullable(this.hlsWebdavSettings);
    }

    private ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingArgs() {}

    private ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingArgs(ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingArgs $) {
        this.hlsAkamaiSettings = $.hlsAkamaiSettings;
        this.hlsBasicPutSettings = $.hlsBasicPutSettings;
        this.hlsMediaStoreSettings = $.hlsMediaStoreSettings;
        this.hlsS3Settings = $.hlsS3Settings;
        this.hlsWebdavSettings = $.hlsWebdavSettings;
    }

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

    public static final class Builder {
        private ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingArgs $;

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

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

        public Builder hlsAkamaiSettings(@Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsAkamaiSettingsArgs> hlsAkamaiSettings) {
            $.hlsAkamaiSettings = hlsAkamaiSettings;
            return this;
        }

        public Builder hlsAkamaiSettings(ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsAkamaiSettingsArgs hlsAkamaiSettings) {
            return hlsAkamaiSettings(Output.of(hlsAkamaiSettings));
        }

        public Builder hlsBasicPutSettings(@Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsBasicPutSettingsArgs> hlsBasicPutSettings) {
            $.hlsBasicPutSettings = hlsBasicPutSettings;
            return this;
        }

        public Builder hlsBasicPutSettings(ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsBasicPutSettingsArgs hlsBasicPutSettings) {
            return hlsBasicPutSettings(Output.of(hlsBasicPutSettings));
        }

        public Builder hlsMediaStoreSettings(@Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsMediaStoreSettingsArgs> hlsMediaStoreSettings) {
            $.hlsMediaStoreSettings = hlsMediaStoreSettings;
            return this;
        }

        public Builder hlsMediaStoreSettings(ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsMediaStoreSettingsArgs hlsMediaStoreSettings) {
            return hlsMediaStoreSettings(Output.of(hlsMediaStoreSettings));
        }

        public Builder hlsS3Settings(@Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsS3SettingsArgs> hlsS3Settings) {
            $.hlsS3Settings = hlsS3Settings;
            return this;
        }

        public Builder hlsS3Settings(ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsS3SettingsArgs hlsS3Settings) {
            return hlsS3Settings(Output.of(hlsS3Settings));
        }

        public Builder hlsWebdavSettings(@Nullable Output<ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsWebdavSettingsArgs> hlsWebdavSettings) {
            $.hlsWebdavSettings = hlsWebdavSettings;
            return this;
        }

        public Builder hlsWebdavSettings(ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingHlsWebdavSettingsArgs hlsWebdavSettings) {
            return hlsWebdavSettings(Output.of(hlsWebdavSettings));
        }

        public ChannelEncoderSettingsOutputGroupOutputGroupSettingsHlsGroupSettingsHlsCdnSettingArgs build() {
            return $;
        }
    }

}
