import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Provides an Equinix Metal Spot Market Request resource to allow you to manage spot market requests on your account. For more detail on Spot Market, see [this article in Equinix Metal documentation](https://metal.equinix.com/developers/docs/deploy/spot-market/).
 *
 * ## Example Usage
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const req = new equinix.metal.SpotMarketRequest("req", {
 *     projectId: projectId,
 *     maxBidPrice: 0.03,
 *     metro: "ny",
 *     devicesMin: 1,
 *     devicesMax: 1,
 *     instanceParameters: {
 *         hostname: "testspot",
 *         billingCycle: "hourly",
 *         operatingSystem: "ubuntu_20_04",
 *         plan: "c3.small.x86",
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * This resource can be imported using an existing spot market request ID:
 *
 * ```sh
 * $ pulumi import equinix:metal/spotMarketRequest:SpotMarketRequest equinix_metal_spot_market_request {existing_spot_market_request_id}
 * ```
 */
export declare class SpotMarketRequest extends pulumi.CustomResource {
    /**
     * Get an existing SpotMarketRequest 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?: SpotMarketRequestState, opts?: pulumi.CustomResourceOptions): SpotMarketRequest;
    /**
     * Returns true if the given object is an instance of SpotMarketRequest.  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 SpotMarketRequest;
    /**
     * Maximum number devices to be created.
     */
    readonly devicesMax: pulumi.Output<number>;
    /**
     * Miniumum number devices to be created.
     */
    readonly devicesMin: pulumi.Output<number>;
    /**
     * Facility IDs where devices should be created. Use metro instead; read the facility to metro migration guide
     *
     * @deprecated Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices
     */
    readonly facilities: pulumi.Output<string[]>;
    /**
     * Key/Value pairs of parameters for devices provisioned from this request. Valid keys are: `billingCycle`, `plan`, `operatingSystem`, `hostname`, `terminationTime`, `alwaysPxe`, `description`, `features`, `locked`, `projectSshKeys`, `userSshKeys`, `userdata`, `customdata`, `ipxeScriptUrl`, `tags`. You can find each parameter description in equinix.metal.Device docs.
     */
    readonly instanceParameters: pulumi.Output<outputs.metal.SpotMarketRequestInstanceParameters>;
    /**
     * Maximum price user is willing to pay per hour per device.
     */
    readonly maxBidPrice: pulumi.Output<number>;
    /**
     * Metro where devices should be created.
     */
    readonly metro: pulumi.Output<string | undefined>;
    /**
     * Project ID.
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * On resource creation wait until all desired devices are active. On resource destruction wait until devices are removed.
     */
    readonly waitForDevices: pulumi.Output<boolean | undefined>;
    /**
     * Create a SpotMarketRequest 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: SpotMarketRequestArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering SpotMarketRequest resources.
 */
export interface SpotMarketRequestState {
    /**
     * Maximum number devices to be created.
     */
    devicesMax?: pulumi.Input<number>;
    /**
     * Miniumum number devices to be created.
     */
    devicesMin?: pulumi.Input<number>;
    /**
     * Facility IDs where devices should be created. Use metro instead; read the facility to metro migration guide
     *
     * @deprecated Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices
     */
    facilities?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Key/Value pairs of parameters for devices provisioned from this request. Valid keys are: `billingCycle`, `plan`, `operatingSystem`, `hostname`, `terminationTime`, `alwaysPxe`, `description`, `features`, `locked`, `projectSshKeys`, `userSshKeys`, `userdata`, `customdata`, `ipxeScriptUrl`, `tags`. You can find each parameter description in equinix.metal.Device docs.
     */
    instanceParameters?: pulumi.Input<inputs.metal.SpotMarketRequestInstanceParameters>;
    /**
     * Maximum price user is willing to pay per hour per device.
     */
    maxBidPrice?: pulumi.Input<number>;
    /**
     * Metro where devices should be created.
     */
    metro?: pulumi.Input<string>;
    /**
     * Project ID.
     */
    projectId?: pulumi.Input<string>;
    /**
     * On resource creation wait until all desired devices are active. On resource destruction wait until devices are removed.
     */
    waitForDevices?: pulumi.Input<boolean>;
}
/**
 * The set of arguments for constructing a SpotMarketRequest resource.
 */
export interface SpotMarketRequestArgs {
    /**
     * Maximum number devices to be created.
     */
    devicesMax: pulumi.Input<number>;
    /**
     * Miniumum number devices to be created.
     */
    devicesMin: pulumi.Input<number>;
    /**
     * Facility IDs where devices should be created. Use metro instead; read the facility to metro migration guide
     *
     * @deprecated Use metro instead of facility.  For more information, read the migration guide: https://registry.terraform.io/providers/equinix/equinix/latest/docs/guides/migration_guide_facilities_to_metros_devices
     */
    facilities?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Key/Value pairs of parameters for devices provisioned from this request. Valid keys are: `billingCycle`, `plan`, `operatingSystem`, `hostname`, `terminationTime`, `alwaysPxe`, `description`, `features`, `locked`, `projectSshKeys`, `userSshKeys`, `userdata`, `customdata`, `ipxeScriptUrl`, `tags`. You can find each parameter description in equinix.metal.Device docs.
     */
    instanceParameters: pulumi.Input<inputs.metal.SpotMarketRequestInstanceParameters>;
    /**
     * Maximum price user is willing to pay per hour per device.
     */
    maxBidPrice: pulumi.Input<number>;
    /**
     * Metro where devices should be created.
     */
    metro?: pulumi.Input<string>;
    /**
     * Project ID.
     */
    projectId: pulumi.Input<string>;
    /**
     * On resource creation wait until all desired devices are active. On resource destruction wait until devices are removed.
     */
    waitForDevices?: pulumi.Input<boolean>;
}
