import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * A reservation is a mechanism used to guarantee BigQuery slots to users.
 *
 * To get more information about Reservation, see:
 *
 * * [API documentation](https://cloud.google.com/bigquery/docs/reference/reservations/rest/v1/projects.locations.reservations/create)
 * * How-to Guides
 *     * [Introduction to Reservations](https://cloud.google.com/bigquery/docs/reservations-intro)
 *
 * ## Example Usage
 *
 * ### Bigquery Reservation Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const reservation = new gcp.bigquery.Reservation("reservation", {
 *     name: "my-reservation",
 *     location: "us-west2",
 *     slotCapacity: 0,
 *     edition: "STANDARD",
 *     ignoreIdleSlots: true,
 *     concurrency: 0,
 *     autoscale: {
 *         maxSlots: 100,
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Reservation can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/locations/{{location}}/reservations/{{name}}`
 * * `{{project}}/{{location}}/{{name}}`
 * * `{{location}}/{{name}}`
 *
 * When using the `pulumi import` command, Reservation can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:bigquery/reservation:Reservation default projects/{{project}}/locations/{{location}}/reservations/{{name}}
 * $ pulumi import gcp:bigquery/reservation:Reservation default {{project}}/{{location}}/{{name}}
 * $ pulumi import gcp:bigquery/reservation:Reservation default {{location}}/{{name}}
 * ```
 */
export declare class Reservation extends pulumi.CustomResource {
    /**
     * Get an existing Reservation resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ReservationState, opts?: pulumi.CustomResourceOptions): Reservation;
    /**
     * Returns true if the given object is an instance of Reservation.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Reservation;
    /**
     * The configuration parameters for the auto scaling feature.
     * Structure is documented below.
     */
    readonly autoscale: pulumi.Output<outputs.bigquery.ReservationAutoscale | undefined>;
    /**
     * Maximum number of queries that are allowed to run concurrently in this reservation. This is a soft limit due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency will be automatically set based on the reservation size.
     */
    readonly concurrency: pulumi.Output<number | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    readonly deletionPolicy: pulumi.Output<string>;
    /**
     * The edition type. Valid values are STANDARD, ENTERPRISE, ENTERPRISE_PLUS
     */
    readonly edition: pulumi.Output<string>;
    /**
     * If false, any query using this reservation will use idle slots from other reservations within
     * the same admin project. If true, a query using this reservation will execute with the slot
     * capacity specified above at most.
     */
    readonly ignoreIdleSlots: pulumi.Output<boolean | undefined>;
    /**
     * The geographic location where the transfer config should reside.
     * Examples: US, EU, asia-northeast1. The default value is US.
     */
    readonly location: pulumi.Output<string | undefined>;
    /**
     * (Optional, Beta)
     * The overall max slots for the reservation, covering slotCapacity (baseline), idle slots
     * (if ignoreIdleSlots is false) and scaled slots. If present, the reservation won't use
     * more than the specified number of slots, even if there is demand and supply (from idle
     * slots). NOTE: capping a reservation's idle slot usage is best effort and its usage may
     * exceed the maxSlots value. However, in terms of autoscale.current_slots (which accounts
     * for the additional added slots), it will never exceed the maxSlots - baseline.
     * This field must be set together with the scalingMode enum value, otherwise the request
     * will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * If the maxSlots and scalingMode are set, the autoscale or autoscale.max_slots field
     * must be unset. Otherwise the request will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT. However, the autoscale field may still be in the
     * output. The autopscale.max_slots will always show as 0 and the autoscaler.current_slots
     * will represent the current slots from autoscaler excluding idle slots. For example,
     * if the maxSlots is 1000 and scalingMode is AUTOSCALE_ONLY, then in the output, the
     * autoscaler.max_slots will be 0 and the autoscaler.current_slots may be any value
     * between 0 and 1000.
     * If the maxSlots is 1000, scalingMode is ALL_SLOTS, the baseline is 100 and idle slots
     * usage is 200, then in the output, the autoscaler.max_slots will be 0 and the
     * autoscaler.current_slots will not be higher than 700.
     * If the maxSlots is 1000, scalingMode is IDLE_SLOTS_ONLY, then in the output, the
     * autoscaler field will be null.
     * If the maxSlots and scalingMode are set, then the ignoreIdleSlots field must be
     * aligned with the scalingMode enum value.(See details in ScalingMode comments).
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Please note, the maxSlots is for user to manage the part of slots greater than the
     * baseline. Therefore, we don't allow users to set maxSlots smaller or equal to the
     * baseline as it will not be meaningful. If the field is present and
     * slotCapacity>=maxSlots, requests will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT.
     * Please note that if maxSlots is set to 0, we will treat it as unset. Customers can set
     * maxSlots to 0 and set scalingMode to SCALING_MODE_UNSPECIFIED to disable the maxSlots
     * feature.
     */
    readonly maxSlots: pulumi.Output<number | undefined>;
    /**
     * The name of the reservation. This field must only contain alphanumeric characters or dash.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The location where the reservation was originally created. This is set only during the
     * failover reservation's creation. All billing charges for the failover reservation will be
     * applied to this location.
     */
    readonly originalPrimaryLocation: pulumi.Output<string>;
    /**
     * The current location of the reservation's primary replica. This field is only set for
     * reservations using the managed disaster recovery feature.
     */
    readonly primaryLocation: pulumi.Output<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * The Disaster Recovery(DR) replication status of the reservation. This is only available for
     * the primary replicas of DR/failover reservations and provides information about the both the
     * staleness of the secondary and the last error encountered while trying to replicate changes
     * from the primary to the secondary. If this field is blank, it means that the reservation is
     * either not a DR reservation or the reservation is a DR secondary or that any replication
     * operations on the reservation have succeeded.
     * Structure is documented below.
     */
    readonly replicationStatuses: pulumi.Output<outputs.bigquery.ReservationReplicationStatus[]>;
    /**
     * The reservation group that this reservation belongs to.
     */
    readonly reservationGroup: pulumi.Output<string | undefined>;
    /**
     * (Optional, Beta)
     * The scaling mode for the reservation. If the field is present but maxSlots is not present,
     * requests will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Enum values:
     * `SCALING_MODE_UNSPECIFIED`: Default value of ScalingMode.
     * `AUTOSCALE_ONLY`: The reservation will scale up only using slots from autoscaling. It will
     * not use any idle slots even if there may be some available. The upper limit that autoscaling
     * can scale up to will be maxSlots - baseline. For example, if maxSlots is 1000, baseline is 200
     * and customer sets ScalingMode to AUTOSCALE_ONLY, then autoscalerg will scale up to 800 slots
     * and no idle slots will be used. Please note, in this mode, the ignoreIdleSlots field must be
     * set to true. Otherwise the request will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT.
     * `IDLE_SLOTS_ONLY`: The reservation will scale up using only idle slots contributed by other
     * reservations or from unassigned commitments. If no idle slots are available it will not scale
     * up further. If the idle slots which it is using are reclaimed by the contributing reservation(s)
     * it may be forced to scale down. The max idle slots the reservation can be maxSlots - baseline
     * capacity. For example, if maxSlots is 1000, baseline is 200 and customer sets ScalingMode to
     * IDLE_SLOTS_ONLY, 1. if there are 1000 idle slots available in other reservations, the
     * reservation will scale up to 1000 slots with 200 baseline and 800 idle slots. 2. if there are
     * 500 idle slots available in other reservations, the reservation will scale up to 700 slots with
     * 200 baseline and 300 idle slots. Please note, in this mode, the reservation might not be able to
     * scale up to maxSlots. Please note, in this mode, the ignoreIdleSlots field must be set to false.
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT
     * `ALL_SLOTS`: The reservation will scale up using all slots available to it. It will use idle slots
     * contributed by other reservations or from unassigned commitments first. If no idle slots are
     * available it will scale up using autoscaling. For example, if maxSlots is 1000, baseline is 200
     * and customer sets ScalingMode to ALL_SLOTS, 1. if there are 800 idle slots available in other
     * reservations, the reservation will scale up to 1000 slots with 200 baseline and 800 idle slots. 2.
     * if there are 500 idle slots available in other reservations, the reservation will scale up to 1000
     * slots with 200 baseline, 500 idle slots and 300 autoscaling slots. 3. if there are no idle slots
     * available in other reservations, it will scale up to 1000 slots with 200 baseline and 800
     * autoscaling slots. Please note, in this mode, the ignoreIdleSlots field must be set to false.
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Possible values are: `SCALING_MODE_UNSPECIFIED`, `AUTOSCALE_ONLY`, `IDLE_SLOTS_ONLY`, `ALL_SLOTS`.
     */
    readonly scalingMode: pulumi.Output<string | undefined>;
    /**
     * The current location of the reservation's secondary replica. This field is only set for
     * reservations using the managed disaster recovery feature. Users can set this in create
     * reservation calls to create a failover reservation or in update reservation calls to convert
     * a non-failover reservation to a failover reservation(or vice versa).
     */
    readonly secondaryLocation: pulumi.Output<string | undefined>;
    /**
     * Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the
     * unit of parallelism. Queries using this reservation might use more slots during runtime if ignoreIdleSlots is set to false.
     */
    readonly slotCapacity: pulumi.Output<number>;
    /**
     * Create a Reservation resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ReservationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Reservation resources.
 */
export interface ReservationState {
    /**
     * The configuration parameters for the auto scaling feature.
     * Structure is documented below.
     */
    autoscale?: pulumi.Input<inputs.bigquery.ReservationAutoscale | undefined>;
    /**
     * Maximum number of queries that are allowed to run concurrently in this reservation. This is a soft limit due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency will be automatically set based on the reservation size.
     */
    concurrency?: pulumi.Input<number | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * The edition type. Valid values are STANDARD, ENTERPRISE, ENTERPRISE_PLUS
     */
    edition?: pulumi.Input<string | undefined>;
    /**
     * If false, any query using this reservation will use idle slots from other reservations within
     * the same admin project. If true, a query using this reservation will execute with the slot
     * capacity specified above at most.
     */
    ignoreIdleSlots?: pulumi.Input<boolean | undefined>;
    /**
     * The geographic location where the transfer config should reside.
     * Examples: US, EU, asia-northeast1. The default value is US.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * (Optional, Beta)
     * The overall max slots for the reservation, covering slotCapacity (baseline), idle slots
     * (if ignoreIdleSlots is false) and scaled slots. If present, the reservation won't use
     * more than the specified number of slots, even if there is demand and supply (from idle
     * slots). NOTE: capping a reservation's idle slot usage is best effort and its usage may
     * exceed the maxSlots value. However, in terms of autoscale.current_slots (which accounts
     * for the additional added slots), it will never exceed the maxSlots - baseline.
     * This field must be set together with the scalingMode enum value, otherwise the request
     * will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * If the maxSlots and scalingMode are set, the autoscale or autoscale.max_slots field
     * must be unset. Otherwise the request will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT. However, the autoscale field may still be in the
     * output. The autopscale.max_slots will always show as 0 and the autoscaler.current_slots
     * will represent the current slots from autoscaler excluding idle slots. For example,
     * if the maxSlots is 1000 and scalingMode is AUTOSCALE_ONLY, then in the output, the
     * autoscaler.max_slots will be 0 and the autoscaler.current_slots may be any value
     * between 0 and 1000.
     * If the maxSlots is 1000, scalingMode is ALL_SLOTS, the baseline is 100 and idle slots
     * usage is 200, then in the output, the autoscaler.max_slots will be 0 and the
     * autoscaler.current_slots will not be higher than 700.
     * If the maxSlots is 1000, scalingMode is IDLE_SLOTS_ONLY, then in the output, the
     * autoscaler field will be null.
     * If the maxSlots and scalingMode are set, then the ignoreIdleSlots field must be
     * aligned with the scalingMode enum value.(See details in ScalingMode comments).
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Please note, the maxSlots is for user to manage the part of slots greater than the
     * baseline. Therefore, we don't allow users to set maxSlots smaller or equal to the
     * baseline as it will not be meaningful. If the field is present and
     * slotCapacity>=maxSlots, requests will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT.
     * Please note that if maxSlots is set to 0, we will treat it as unset. Customers can set
     * maxSlots to 0 and set scalingMode to SCALING_MODE_UNSPECIFIED to disable the maxSlots
     * feature.
     */
    maxSlots?: pulumi.Input<number | undefined>;
    /**
     * The name of the reservation. This field must only contain alphanumeric characters or dash.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The location where the reservation was originally created. This is set only during the
     * failover reservation's creation. All billing charges for the failover reservation will be
     * applied to this location.
     */
    originalPrimaryLocation?: pulumi.Input<string | undefined>;
    /**
     * The current location of the reservation's primary replica. This field is only set for
     * reservations using the managed disaster recovery feature.
     */
    primaryLocation?: pulumi.Input<string | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * The Disaster Recovery(DR) replication status of the reservation. This is only available for
     * the primary replicas of DR/failover reservations and provides information about the both the
     * staleness of the secondary and the last error encountered while trying to replicate changes
     * from the primary to the secondary. If this field is blank, it means that the reservation is
     * either not a DR reservation or the reservation is a DR secondary or that any replication
     * operations on the reservation have succeeded.
     * Structure is documented below.
     */
    replicationStatuses?: pulumi.Input<pulumi.Input<inputs.bigquery.ReservationReplicationStatus>[] | undefined>;
    /**
     * The reservation group that this reservation belongs to.
     */
    reservationGroup?: pulumi.Input<string | undefined>;
    /**
     * (Optional, Beta)
     * The scaling mode for the reservation. If the field is present but maxSlots is not present,
     * requests will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Enum values:
     * `SCALING_MODE_UNSPECIFIED`: Default value of ScalingMode.
     * `AUTOSCALE_ONLY`: The reservation will scale up only using slots from autoscaling. It will
     * not use any idle slots even if there may be some available. The upper limit that autoscaling
     * can scale up to will be maxSlots - baseline. For example, if maxSlots is 1000, baseline is 200
     * and customer sets ScalingMode to AUTOSCALE_ONLY, then autoscalerg will scale up to 800 slots
     * and no idle slots will be used. Please note, in this mode, the ignoreIdleSlots field must be
     * set to true. Otherwise the request will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT.
     * `IDLE_SLOTS_ONLY`: The reservation will scale up using only idle slots contributed by other
     * reservations or from unassigned commitments. If no idle slots are available it will not scale
     * up further. If the idle slots which it is using are reclaimed by the contributing reservation(s)
     * it may be forced to scale down. The max idle slots the reservation can be maxSlots - baseline
     * capacity. For example, if maxSlots is 1000, baseline is 200 and customer sets ScalingMode to
     * IDLE_SLOTS_ONLY, 1. if there are 1000 idle slots available in other reservations, the
     * reservation will scale up to 1000 slots with 200 baseline and 800 idle slots. 2. if there are
     * 500 idle slots available in other reservations, the reservation will scale up to 700 slots with
     * 200 baseline and 300 idle slots. Please note, in this mode, the reservation might not be able to
     * scale up to maxSlots. Please note, in this mode, the ignoreIdleSlots field must be set to false.
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT
     * `ALL_SLOTS`: The reservation will scale up using all slots available to it. It will use idle slots
     * contributed by other reservations or from unassigned commitments first. If no idle slots are
     * available it will scale up using autoscaling. For example, if maxSlots is 1000, baseline is 200
     * and customer sets ScalingMode to ALL_SLOTS, 1. if there are 800 idle slots available in other
     * reservations, the reservation will scale up to 1000 slots with 200 baseline and 800 idle slots. 2.
     * if there are 500 idle slots available in other reservations, the reservation will scale up to 1000
     * slots with 200 baseline, 500 idle slots and 300 autoscaling slots. 3. if there are no idle slots
     * available in other reservations, it will scale up to 1000 slots with 200 baseline and 800
     * autoscaling slots. Please note, in this mode, the ignoreIdleSlots field must be set to false.
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Possible values are: `SCALING_MODE_UNSPECIFIED`, `AUTOSCALE_ONLY`, `IDLE_SLOTS_ONLY`, `ALL_SLOTS`.
     */
    scalingMode?: pulumi.Input<string | undefined>;
    /**
     * The current location of the reservation's secondary replica. This field is only set for
     * reservations using the managed disaster recovery feature. Users can set this in create
     * reservation calls to create a failover reservation or in update reservation calls to convert
     * a non-failover reservation to a failover reservation(or vice versa).
     */
    secondaryLocation?: pulumi.Input<string | undefined>;
    /**
     * Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the
     * unit of parallelism. Queries using this reservation might use more slots during runtime if ignoreIdleSlots is set to false.
     */
    slotCapacity?: pulumi.Input<number | undefined>;
}
/**
 * The set of arguments for constructing a Reservation resource.
 */
export interface ReservationArgs {
    /**
     * The configuration parameters for the auto scaling feature.
     * Structure is documented below.
     */
    autoscale?: pulumi.Input<inputs.bigquery.ReservationAutoscale | undefined>;
    /**
     * Maximum number of queries that are allowed to run concurrently in this reservation. This is a soft limit due to asynchronous nature of the system and various optimizations for small queries. Default value is 0 which means that concurrency will be automatically set based on the reservation size.
     */
    concurrency?: pulumi.Input<number | undefined>;
    /**
     * Whether Terraform will be prevented from destroying the resource. Defaults to DELETE.
     * When a 'terraform destroy' or 'pulumi up' would delete the resource,
     * the command will fail if this field is set to "PREVENT" in Terraform state.
     * When set to "ABANDON", the command will remove the resource from Terraform
     * management without updating or deleting the resource in the API.
     * When set to "DELETE", deleting the resource is allowed.
     */
    deletionPolicy?: pulumi.Input<string | undefined>;
    /**
     * The edition type. Valid values are STANDARD, ENTERPRISE, ENTERPRISE_PLUS
     */
    edition?: pulumi.Input<string | undefined>;
    /**
     * If false, any query using this reservation will use idle slots from other reservations within
     * the same admin project. If true, a query using this reservation will execute with the slot
     * capacity specified above at most.
     */
    ignoreIdleSlots?: pulumi.Input<boolean | undefined>;
    /**
     * The geographic location where the transfer config should reside.
     * Examples: US, EU, asia-northeast1. The default value is US.
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * (Optional, Beta)
     * The overall max slots for the reservation, covering slotCapacity (baseline), idle slots
     * (if ignoreIdleSlots is false) and scaled slots. If present, the reservation won't use
     * more than the specified number of slots, even if there is demand and supply (from idle
     * slots). NOTE: capping a reservation's idle slot usage is best effort and its usage may
     * exceed the maxSlots value. However, in terms of autoscale.current_slots (which accounts
     * for the additional added slots), it will never exceed the maxSlots - baseline.
     * This field must be set together with the scalingMode enum value, otherwise the request
     * will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * If the maxSlots and scalingMode are set, the autoscale or autoscale.max_slots field
     * must be unset. Otherwise the request will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT. However, the autoscale field may still be in the
     * output. The autopscale.max_slots will always show as 0 and the autoscaler.current_slots
     * will represent the current slots from autoscaler excluding idle slots. For example,
     * if the maxSlots is 1000 and scalingMode is AUTOSCALE_ONLY, then in the output, the
     * autoscaler.max_slots will be 0 and the autoscaler.current_slots may be any value
     * between 0 and 1000.
     * If the maxSlots is 1000, scalingMode is ALL_SLOTS, the baseline is 100 and idle slots
     * usage is 200, then in the output, the autoscaler.max_slots will be 0 and the
     * autoscaler.current_slots will not be higher than 700.
     * If the maxSlots is 1000, scalingMode is IDLE_SLOTS_ONLY, then in the output, the
     * autoscaler field will be null.
     * If the maxSlots and scalingMode are set, then the ignoreIdleSlots field must be
     * aligned with the scalingMode enum value.(See details in ScalingMode comments).
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Please note, the maxSlots is for user to manage the part of slots greater than the
     * baseline. Therefore, we don't allow users to set maxSlots smaller or equal to the
     * baseline as it will not be meaningful. If the field is present and
     * slotCapacity>=maxSlots, requests will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT.
     * Please note that if maxSlots is set to 0, we will treat it as unset. Customers can set
     * maxSlots to 0 and set scalingMode to SCALING_MODE_UNSPECIFIED to disable the maxSlots
     * feature.
     */
    maxSlots?: pulumi.Input<number | undefined>;
    /**
     * The name of the reservation. This field must only contain alphanumeric characters or dash.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * The reservation group that this reservation belongs to.
     */
    reservationGroup?: pulumi.Input<string | undefined>;
    /**
     * (Optional, Beta)
     * The scaling mode for the reservation. If the field is present but maxSlots is not present,
     * requests will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Enum values:
     * `SCALING_MODE_UNSPECIFIED`: Default value of ScalingMode.
     * `AUTOSCALE_ONLY`: The reservation will scale up only using slots from autoscaling. It will
     * not use any idle slots even if there may be some available. The upper limit that autoscaling
     * can scale up to will be maxSlots - baseline. For example, if maxSlots is 1000, baseline is 200
     * and customer sets ScalingMode to AUTOSCALE_ONLY, then autoscalerg will scale up to 800 slots
     * and no idle slots will be used. Please note, in this mode, the ignoreIdleSlots field must be
     * set to true. Otherwise the request will be rejected with error code
     * google.rpc.Code.INVALID_ARGUMENT.
     * `IDLE_SLOTS_ONLY`: The reservation will scale up using only idle slots contributed by other
     * reservations or from unassigned commitments. If no idle slots are available it will not scale
     * up further. If the idle slots which it is using are reclaimed by the contributing reservation(s)
     * it may be forced to scale down. The max idle slots the reservation can be maxSlots - baseline
     * capacity. For example, if maxSlots is 1000, baseline is 200 and customer sets ScalingMode to
     * IDLE_SLOTS_ONLY, 1. if there are 1000 idle slots available in other reservations, the
     * reservation will scale up to 1000 slots with 200 baseline and 800 idle slots. 2. if there are
     * 500 idle slots available in other reservations, the reservation will scale up to 700 slots with
     * 200 baseline and 300 idle slots. Please note, in this mode, the reservation might not be able to
     * scale up to maxSlots. Please note, in this mode, the ignoreIdleSlots field must be set to false.
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT
     * `ALL_SLOTS`: The reservation will scale up using all slots available to it. It will use idle slots
     * contributed by other reservations or from unassigned commitments first. If no idle slots are
     * available it will scale up using autoscaling. For example, if maxSlots is 1000, baseline is 200
     * and customer sets ScalingMode to ALL_SLOTS, 1. if there are 800 idle slots available in other
     * reservations, the reservation will scale up to 1000 slots with 200 baseline and 800 idle slots. 2.
     * if there are 500 idle slots available in other reservations, the reservation will scale up to 1000
     * slots with 200 baseline, 500 idle slots and 300 autoscaling slots. 3. if there are no idle slots
     * available in other reservations, it will scale up to 1000 slots with 200 baseline and 800
     * autoscaling slots. Please note, in this mode, the ignoreIdleSlots field must be set to false.
     * Otherwise the request will be rejected with error code google.rpc.Code.INVALID_ARGUMENT.
     * Possible values are: `SCALING_MODE_UNSPECIFIED`, `AUTOSCALE_ONLY`, `IDLE_SLOTS_ONLY`, `ALL_SLOTS`.
     */
    scalingMode?: pulumi.Input<string | undefined>;
    /**
     * The current location of the reservation's secondary replica. This field is only set for
     * reservations using the managed disaster recovery feature. Users can set this in create
     * reservation calls to create a failover reservation or in update reservation calls to convert
     * a non-failover reservation to a failover reservation(or vice versa).
     */
    secondaryLocation?: pulumi.Input<string | undefined>;
    /**
     * Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the
     * unit of parallelism. Queries using this reservation might use more slots during runtime if ignoreIdleSlots is set to false.
     */
    slotCapacity: pulumi.Input<number>;
}
//# sourceMappingURL=reservation.d.ts.map