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}}
 * ```
 *
 * ```sh
 * $ pulumi import gcp:bigquery/reservation:Reservation default {{project}}/{{location}}/{{name}}
 * ```
 *
 * ```sh
 * $ 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>;
    /**
     * 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>;
    /**
     * 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 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>;
    /**
     * 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>;
    /**
     * The edition type. Valid values are STANDARD, ENTERPRISE, ENTERPRISE_PLUS
     */
    edition?: pulumi.Input<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.
     */
    ignoreIdleSlots?: pulumi.Input<boolean>;
    /**
     * The geographic location where the transfer config should reside.
     * Examples: US, EU, asia-northeast1. The default value is US.
     */
    location?: pulumi.Input<string>;
    /**
     * The name of the reservation. This field must only contain alphanumeric characters or dash.
     *
     *
     * - - -
     */
    name?: pulumi.Input<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.
     */
    originalPrimaryLocation?: pulumi.Input<string>;
    /**
     * 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>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<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.
     */
    replicationStatuses?: pulumi.Input<pulumi.Input<inputs.bigquery.ReservationReplicationStatus>[]>;
    /**
     * 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>;
    /**
     * 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>;
}
/**
 * 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>;
    /**
     * 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>;
    /**
     * The edition type. Valid values are STANDARD, ENTERPRISE, ENTERPRISE_PLUS
     */
    edition?: pulumi.Input<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.
     */
    ignoreIdleSlots?: pulumi.Input<boolean>;
    /**
     * The geographic location where the transfer config should reside.
     * Examples: US, EU, asia-northeast1. The default value is US.
     */
    location?: pulumi.Input<string>;
    /**
     * The name of the reservation. This field must only contain alphanumeric characters or dash.
     *
     *
     * - - -
     */
    name?: pulumi.Input<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string>;
    /**
     * 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>;
    /**
     * 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>;
}
