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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final TransformOutputCustomPresetFilterFadeInArgs Empty = new TransformOutputCustomPresetFilterFadeInArgs();

    /**
     * The duration of the fade effect in the video. The value can be in ISO 8601 format (For example, PT05S to fade In/Out a color during 5 seconds), or a frame count (For example, 10 to fade 10 frames from the start time), or a relative value to stream duration (For example, 10% to fade 10% of stream duration).
     * 
     */
    @Import(name="duration", required=true)
    private Output<String> duration;

    /**
     * @return The duration of the fade effect in the video. The value can be in ISO 8601 format (For example, PT05S to fade In/Out a color during 5 seconds), or a frame count (For example, 10 to fade 10 frames from the start time), or a relative value to stream duration (For example, 10% to fade 10% of stream duration).
     * 
     */
    public Output<String> duration() {
        return this.duration;
    }

    /**
     * The color for the fade in/out. It can be on the [CSS Level1 colors](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color_keywords) or an RGB/hex value: e.g: `rgb(255,0,0)`, `0xFF0000` or `#FF0000`.
     * 
     */
    @Import(name="fadeColor", required=true)
    private Output<String> fadeColor;

    /**
     * @return The color for the fade in/out. It can be on the [CSS Level1 colors](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color_keywords) or an RGB/hex value: e.g: `rgb(255,0,0)`, `0xFF0000` or `#FF0000`.
     * 
     */
    public Output<String> fadeColor() {
        return this.fadeColor;
    }

    /**
     * The position in the input video from where to start fade. The value can be in ISO 8601 format (For example, `PT05S` to start at 5 seconds), or a frame count (For example, `10` to start at the 10th frame), or a relative value to stream duration (For example, `10%` to start at 10% of stream duration). Default to `0`.
     * 
     */
    @Import(name="start")
    private @Nullable Output<String> start;

    /**
     * @return The position in the input video from where to start fade. The value can be in ISO 8601 format (For example, `PT05S` to start at 5 seconds), or a frame count (For example, `10` to start at the 10th frame), or a relative value to stream duration (For example, `10%` to start at 10% of stream duration). Default to `0`.
     * 
     */
    public Optional<Output<String>> start() {
        return Optional.ofNullable(this.start);
    }

    private TransformOutputCustomPresetFilterFadeInArgs() {}

    private TransformOutputCustomPresetFilterFadeInArgs(TransformOutputCustomPresetFilterFadeInArgs $) {
        this.duration = $.duration;
        this.fadeColor = $.fadeColor;
        this.start = $.start;
    }

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

    public static final class Builder {
        private TransformOutputCustomPresetFilterFadeInArgs $;

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

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

        /**
         * @param duration The duration of the fade effect in the video. The value can be in ISO 8601 format (For example, PT05S to fade In/Out a color during 5 seconds), or a frame count (For example, 10 to fade 10 frames from the start time), or a relative value to stream duration (For example, 10% to fade 10% of stream duration).
         * 
         * @return builder
         * 
         */
        public Builder duration(Output<String> duration) {
            $.duration = duration;
            return this;
        }

        /**
         * @param duration The duration of the fade effect in the video. The value can be in ISO 8601 format (For example, PT05S to fade In/Out a color during 5 seconds), or a frame count (For example, 10 to fade 10 frames from the start time), or a relative value to stream duration (For example, 10% to fade 10% of stream duration).
         * 
         * @return builder
         * 
         */
        public Builder duration(String duration) {
            return duration(Output.of(duration));
        }

        /**
         * @param fadeColor The color for the fade in/out. It can be on the [CSS Level1 colors](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color_keywords) or an RGB/hex value: e.g: `rgb(255,0,0)`, `0xFF0000` or `#FF0000`.
         * 
         * @return builder
         * 
         */
        public Builder fadeColor(Output<String> fadeColor) {
            $.fadeColor = fadeColor;
            return this;
        }

        /**
         * @param fadeColor The color for the fade in/out. It can be on the [CSS Level1 colors](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color_keywords) or an RGB/hex value: e.g: `rgb(255,0,0)`, `0xFF0000` or `#FF0000`.
         * 
         * @return builder
         * 
         */
        public Builder fadeColor(String fadeColor) {
            return fadeColor(Output.of(fadeColor));
        }

        /**
         * @param start The position in the input video from where to start fade. The value can be in ISO 8601 format (For example, `PT05S` to start at 5 seconds), or a frame count (For example, `10` to start at the 10th frame), or a relative value to stream duration (For example, `10%` to start at 10% of stream duration). Default to `0`.
         * 
         * @return builder
         * 
         */
        public Builder start(@Nullable Output<String> start) {
            $.start = start;
            return this;
        }

        /**
         * @param start The position in the input video from where to start fade. The value can be in ISO 8601 format (For example, `PT05S` to start at 5 seconds), or a frame count (For example, `10` to start at the 10th frame), or a relative value to stream duration (For example, `10%` to start at 10% of stream duration). Default to `0`.
         * 
         * @return builder
         * 
         */
        public Builder start(String start) {
            return start(Output.of(start));
        }

        public TransformOutputCustomPresetFilterFadeInArgs build() {
            $.duration = Objects.requireNonNull($.duration, "expected parameter 'duration' to be non-null");
            $.fadeColor = Objects.requireNonNull($.fadeColor, "expected parameter 'fadeColor' to be non-null");
            return $;
        }
    }

}
