import * as pulumi from "@pulumi/pulumi";
/**
 * Use this data source to get the ID of an available HuaweiCloud DMS product.
 *
 * ## Example Usage
 * ### Filter DMS kafka product list by I/O specification
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 *
 * const product1 = pulumi.output(huaweicloud.Dms.getProduct({
 *     engine: "kafka",
 *     instanceType: "cluster",
 *     partitionNum: "300",
 *     storage: "600",
 *     storageSpecCode: "dms.physical.storage.high",
 *     version: "1.1.0",
 * }));
 * ```
 * ### Filter DMS kafka product list by underlying VM specification
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as huaweicloud from "@pulumi/huaweicloud";
 *
 * const product2 = pulumi.output(huaweicloud.Dms.getProduct({
 *     engine: "kafka",
 *     instanceType: "cluster",
 *     version: "2.3.0",
 *     vmSpecification: "c6.large.2",
 * }));
 * ```
 */
export declare function getProduct(args: GetProductArgs, opts?: pulumi.InvokeOptions): Promise<GetProductResult>;
/**
 * A collection of arguments for invoking getProduct.
 */
export interface GetProductArgs {
    /**
     * Indicates the list of availability zones with available resources.
     */
    availabilityZones?: string[];
    /**
     * Indicates the baseline bandwidth of a DMS instance.
     * The valid values are **100MB**, **300MB**, **600MB** and **1200MB**.
     */
    bandwidth?: string;
    /**
     * Indicates the name of a message engine. The valid values are **kafka**, **rabbitmq**.
     */
    engine: string;
    /**
     * Indicates an instance type. The valid values are **single** and **cluster**.
     */
    instanceType: string;
    /**
     * @deprecated io_type has deprecated, please use storage_spec_code
     */
    ioType?: string;
    /**
     * Indicates the number of nodes in a cluster.
     */
    nodeNum?: string;
    /**
     * Indicates the maximum number of topics that can be created for a Kafka instance.
     * The valid values are **300**, **900** and **1800**.
     */
    partitionNum?: string;
    /**
     * The region in which to obtain the dms products. If omitted, the provider-level region
     * will be used.
     */
    region?: string;
    /**
     * Indicates the storage capacity of the resource.
     * The default value is the storage capacity of the product.
     */
    storage?: string;
    /**
     * Indicates an I/O specification.
     * The valid values are **dms.physical.storage.high** and **dms.physical.storage.ultra**.
     */
    storageSpecCode?: string;
    /**
     * Indicates the version of a message engine.
     */
    version?: string;
    /**
     * Indicates underlying VM specification, such as **c6.large.2**.
     */
    vmSpecification?: string;
}
/**
 * A collection of values returned by getProduct.
 */
export interface GetProductResult {
    readonly availabilityZones: string[];
    readonly bandwidth: string;
    readonly engine: string;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    readonly instanceType: string;
    /**
     * @deprecated io_type has deprecated, please use storage_spec_code
     */
    readonly ioType: string;
    readonly nodeNum: string;
    readonly partitionNum: string;
    readonly region: string;
    readonly storage: string;
    readonly storageSpecCode: string;
    /**
     * The available I/O specifications.
     */
    readonly storageSpecCodes: string[];
    readonly version: string;
    readonly vmSpecification: string;
}
export declare function getProductOutput(args: GetProductOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetProductResult>;
/**
 * A collection of arguments for invoking getProduct.
 */
export interface GetProductOutputArgs {
    /**
     * Indicates the list of availability zones with available resources.
     */
    availabilityZones?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Indicates the baseline bandwidth of a DMS instance.
     * The valid values are **100MB**, **300MB**, **600MB** and **1200MB**.
     */
    bandwidth?: pulumi.Input<string>;
    /**
     * Indicates the name of a message engine. The valid values are **kafka**, **rabbitmq**.
     */
    engine: pulumi.Input<string>;
    /**
     * Indicates an instance type. The valid values are **single** and **cluster**.
     */
    instanceType: pulumi.Input<string>;
    /**
     * @deprecated io_type has deprecated, please use storage_spec_code
     */
    ioType?: pulumi.Input<string>;
    /**
     * Indicates the number of nodes in a cluster.
     */
    nodeNum?: pulumi.Input<string>;
    /**
     * Indicates the maximum number of topics that can be created for a Kafka instance.
     * The valid values are **300**, **900** and **1800**.
     */
    partitionNum?: pulumi.Input<string>;
    /**
     * The region in which to obtain the dms products. If omitted, the provider-level region
     * will be used.
     */
    region?: pulumi.Input<string>;
    /**
     * Indicates the storage capacity of the resource.
     * The default value is the storage capacity of the product.
     */
    storage?: pulumi.Input<string>;
    /**
     * Indicates an I/O specification.
     * The valid values are **dms.physical.storage.high** and **dms.physical.storage.ultra**.
     */
    storageSpecCode?: pulumi.Input<string>;
    /**
     * Indicates the version of a message engine.
     */
    version?: pulumi.Input<string>;
    /**
     * Indicates underlying VM specification, such as **c6.large.2**.
     */
    vmSpecification?: pulumi.Input<string>;
}
