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

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


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

    public static final FunctionBuildConfigSourceStorageSourceArgs Empty = new FunctionBuildConfigSourceStorageSourceArgs();

    /**
     * Google Cloud Storage bucket containing the source
     * 
     */
    @Import(name="bucket")
    private @Nullable Output<String> bucket;

    /**
     * @return Google Cloud Storage bucket containing the source
     * 
     */
    public Optional<Output<String>> bucket() {
        return Optional.ofNullable(this.bucket);
    }

    /**
     * Google Cloud Storage generation for the object. If the generation
     * is omitted, the latest generation will be used.
     * 
     */
    @Import(name="generation")
    private @Nullable Output<Integer> generation;

    /**
     * @return Google Cloud Storage generation for the object. If the generation
     * is omitted, the latest generation will be used.
     * 
     */
    public Optional<Output<Integer>> generation() {
        return Optional.ofNullable(this.generation);
    }

    /**
     * Google Cloud Storage object containing the source.
     * 
     */
    @Import(name="object")
    private @Nullable Output<String> object;

    /**
     * @return Google Cloud Storage object containing the source.
     * 
     */
    public Optional<Output<String>> object() {
        return Optional.ofNullable(this.object);
    }

    private FunctionBuildConfigSourceStorageSourceArgs() {}

    private FunctionBuildConfigSourceStorageSourceArgs(FunctionBuildConfigSourceStorageSourceArgs $) {
        this.bucket = $.bucket;
        this.generation = $.generation;
        this.object = $.object;
    }

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

    public static final class Builder {
        private FunctionBuildConfigSourceStorageSourceArgs $;

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

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

        /**
         * @param bucket Google Cloud Storage bucket containing the source
         * 
         * @return builder
         * 
         */
        public Builder bucket(@Nullable Output<String> bucket) {
            $.bucket = bucket;
            return this;
        }

        /**
         * @param bucket Google Cloud Storage bucket containing the source
         * 
         * @return builder
         * 
         */
        public Builder bucket(String bucket) {
            return bucket(Output.of(bucket));
        }

        /**
         * @param generation Google Cloud Storage generation for the object. If the generation
         * is omitted, the latest generation will be used.
         * 
         * @return builder
         * 
         */
        public Builder generation(@Nullable Output<Integer> generation) {
            $.generation = generation;
            return this;
        }

        /**
         * @param generation Google Cloud Storage generation for the object. If the generation
         * is omitted, the latest generation will be used.
         * 
         * @return builder
         * 
         */
        public Builder generation(Integer generation) {
            return generation(Output.of(generation));
        }

        /**
         * @param object Google Cloud Storage object containing the source.
         * 
         * @return builder
         * 
         */
        public Builder object(@Nullable Output<String> object) {
            $.object = object;
            return this;
        }

        /**
         * @param object Google Cloud Storage object containing the source.
         * 
         * @return builder
         * 
         */
        public Builder object(String object) {
            return object(Output.of(object));
        }

        public FunctionBuildConfigSourceStorageSourceArgs build() {
            return $;
        }
    }

}
