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

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


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

    public static final AppLimitsArgs Empty = new AppLimitsArgs();

    /**
     * The maximum number of messages that the campaign can send daily.
     * 
     */
    @Import(name="daily")
    private @Nullable Output<Integer> daily;

    /**
     * @return The maximum number of messages that the campaign can send daily.
     * 
     */
    public Optional<Output<Integer>> daily() {
        return Optional.ofNullable(this.daily);
    }

    /**
     * The length of time (in seconds) that the campaign can run before it ends and message deliveries stop. This duration begins at the scheduled start time for the campaign. The minimum value is 60.
     * 
     */
    @Import(name="maximumDuration")
    private @Nullable Output<Integer> maximumDuration;

    /**
     * @return The length of time (in seconds) that the campaign can run before it ends and message deliveries stop. This duration begins at the scheduled start time for the campaign. The minimum value is 60.
     * 
     */
    public Optional<Output<Integer>> maximumDuration() {
        return Optional.ofNullable(this.maximumDuration);
    }

    /**
     * The number of messages that the campaign can send per second. The minimum value is 50, and the maximum is 20000.
     * 
     */
    @Import(name="messagesPerSecond")
    private @Nullable Output<Integer> messagesPerSecond;

    /**
     * @return The number of messages that the campaign can send per second. The minimum value is 50, and the maximum is 20000.
     * 
     */
    public Optional<Output<Integer>> messagesPerSecond() {
        return Optional.ofNullable(this.messagesPerSecond);
    }

    /**
     * The maximum total number of messages that the campaign can send.
     * 
     */
    @Import(name="total")
    private @Nullable Output<Integer> total;

    /**
     * @return The maximum total number of messages that the campaign can send.
     * 
     */
    public Optional<Output<Integer>> total() {
        return Optional.ofNullable(this.total);
    }

    private AppLimitsArgs() {}

    private AppLimitsArgs(AppLimitsArgs $) {
        this.daily = $.daily;
        this.maximumDuration = $.maximumDuration;
        this.messagesPerSecond = $.messagesPerSecond;
        this.total = $.total;
    }

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

    public static final class Builder {
        private AppLimitsArgs $;

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

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

        /**
         * @param daily The maximum number of messages that the campaign can send daily.
         * 
         * @return builder
         * 
         */
        public Builder daily(@Nullable Output<Integer> daily) {
            $.daily = daily;
            return this;
        }

        /**
         * @param daily The maximum number of messages that the campaign can send daily.
         * 
         * @return builder
         * 
         */
        public Builder daily(Integer daily) {
            return daily(Output.of(daily));
        }

        /**
         * @param maximumDuration The length of time (in seconds) that the campaign can run before it ends and message deliveries stop. This duration begins at the scheduled start time for the campaign. The minimum value is 60.
         * 
         * @return builder
         * 
         */
        public Builder maximumDuration(@Nullable Output<Integer> maximumDuration) {
            $.maximumDuration = maximumDuration;
            return this;
        }

        /**
         * @param maximumDuration The length of time (in seconds) that the campaign can run before it ends and message deliveries stop. This duration begins at the scheduled start time for the campaign. The minimum value is 60.
         * 
         * @return builder
         * 
         */
        public Builder maximumDuration(Integer maximumDuration) {
            return maximumDuration(Output.of(maximumDuration));
        }

        /**
         * @param messagesPerSecond The number of messages that the campaign can send per second. The minimum value is 50, and the maximum is 20000.
         * 
         * @return builder
         * 
         */
        public Builder messagesPerSecond(@Nullable Output<Integer> messagesPerSecond) {
            $.messagesPerSecond = messagesPerSecond;
            return this;
        }

        /**
         * @param messagesPerSecond The number of messages that the campaign can send per second. The minimum value is 50, and the maximum is 20000.
         * 
         * @return builder
         * 
         */
        public Builder messagesPerSecond(Integer messagesPerSecond) {
            return messagesPerSecond(Output.of(messagesPerSecond));
        }

        /**
         * @param total The maximum total number of messages that the campaign can send.
         * 
         * @return builder
         * 
         */
        public Builder total(@Nullable Output<Integer> total) {
            $.total = total;
            return this;
        }

        /**
         * @param total The maximum total number of messages that the campaign can send.
         * 
         * @return builder
         * 
         */
        public Builder total(Integer total) {
            return total(Output.of(total));
        }

        public AppLimitsArgs build() {
            return $;
        }
    }

}
