import * as pulumi from "@pulumi/pulumi";
import { output as outputs } from "../types";
/**
 * Use this data source to query the detailed information list of the EVS disks within HuaweiCloud.
 */
export declare function getVolumes(args?: GetVolumesArgs, opts?: pulumi.InvokeOptions): Promise<GetVolumesResult>;
/**
 * A collection of arguments for invoking getVolumes.
 */
export interface GetVolumesArgs {
    /**
     * Specifies the availability zone for the disks.
     */
    availabilityZone?: string;
    /**
     * Specifies the dedicated storage pool ID. All disks in the dedicated storage
     * pool can be filtered by exact match.
     */
    dedicatedStorageId?: string;
    /**
     * Specifies the dedicated storage pool name. All disks in the dedicated
     * storage pool can be filtered by fuzzy match.
     */
    dedicatedStorageName?: string;
    /**
     * Specifies the enterprise project ID for filtering.
     */
    enterpriseProjectId?: string;
    /**
     * Specifies the disk IDs. The value is in the ids=['id1','id2',...,'idx'] format.
     * In the response, the `ids` value contains valid disk IDs only. Invalid disk IDs are ignored.
     * The details about a maximum of `60` disks can be queried. If `volumeId` and `ids` are both specified in the request,
     * `volumeId` will be ignored.
     * Please pay attention to escape special characters before use. Please refer to the usage of example.
     */
    ids?: string;
    /**
     * Specifies the disk metadata.
     * Please pay attention to escape special characters before use. Please refer to the usage of example.
     */
    metadata?: string;
    /**
     * Specifies the name for the disks. This field will undergo a fuzzy matching query, the
     * query result is for all disks whose names contain this value.
     */
    name?: string;
    /**
     * Specifies the region in which to query the disk list.
     * If omitted, the provider-level region will be used.
     */
    region?: string;
    /**
     * Specifies the server ID to which the disks are attached.
     */
    serverId?: string;
    /**
     * Specifies the service type. Supported services are **EVS**, **DSS**, and **DESS**.
     */
    serviceType?: string;
    /**
     * Specifies whether the disk is shareable.
     */
    shareable?: boolean;
    /**
     * Specifies the result sorting order. The default value is **desc**.
     * + **desc**: The descending order.
     * + **asc**: The ascending order.
     */
    sortDir?: string;
    /**
     * Specifies the keyword based on which the returned results are sorted.
     * The value can be **id**, **status**, **size**, or **created_at**, and the default value is **created_at**.
     */
    sortKey?: string;
    /**
     * Specifies the disk status. The valid values are as following:
     * + **FREEZED**
     * + **BIND_ERROR**
     * + **BINDING**
     * + **PENDING_DELETE**
     * + **PENDING_CREATE**
     * + **NOTIFYING**
     * + **NOTIFY_DELETE**
     * + **PENDING_UPDATE**
     * + **DOWN**
     * + **ACTIVE**
     * + **ELB**
     * + **ERROR**
     * + **VPN**
     */
    status?: string;
    /**
     * Specifies the included key/value pairs which associated with the desired disk.
     */
    tags?: {
        [key: string]: string;
    };
    /**
     * Specifies the ID for the disk.
     */
    volumeId?: string;
    /**
     * Specifies the type ID for the disks.
     */
    volumeTypeId?: string;
}
/**
 * A collection of values returned by getVolumes.
 */
export interface GetVolumesResult {
    /**
     * The availability zone of the disk.
     */
    readonly availabilityZone?: string;
    /**
     * The ID of the dedicated storage pool housing the disk.
     */
    readonly dedicatedStorageId?: string;
    /**
     * The name of the dedicated storage pool housing the disk.
     */
    readonly dedicatedStorageName?: string;
    /**
     * The ID of the enterprise project associated with the disk.
     */
    readonly enterpriseProjectId?: string;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    readonly ids?: string;
    /**
     * The key-value pair disk metadata. Valid key-value pairs are as follows:
     * + **__system__cmkid**: The encryption CMK ID in metadata. This attribute is used together with **__system__encrypted**
     * for encryption.
     * + **__system__encrypted**: The encryption field in metadata. The value can be `0` (no encryption) or `1` (encryption).
     * If this attribute is not specified, the encryption attribute of the disk is the same as that of the data source.
     * If the disk is not created from a data source, the disk is not encrypted by default.
     * + **full_clone**: The creation method when the disk is created from a snapshot. `0`: linked clone. `1`: full clone.
     * + **hw:passthrough**: If this attribute value is **true**, the disk device type is SCSI, which allows ECS OSs to directly
     * access the underlying storage media and supports SCSI reservation commands. If this attribute is set to **false**,
     * the disk device type is VBD, which is also the default type. VBD supports only simple SCSI read/write commands.
     * If this attribute is not specified, the disk device type is VBD.
     * + **orderID**: The attribute that describes the disk billing mode in metadata. If this attribute has a value, the disk
     * is billed on a yearly/monthly basis. If this attribute is empty, the disk is billed on a pay-per-use basis.
     */
    readonly metadata?: string;
    /**
     * The disk name.
     */
    readonly name?: string;
    readonly region?: string;
    /**
     * The ID of the server to which the disk is attached.
     */
    readonly serverId?: string;
    /**
     * The service type, such as EVS, DSS or DESS.
     */
    readonly serviceType?: string;
    /**
     * Whether the disk is shareable.
     */
    readonly shareable?: boolean;
    readonly sortDir?: string;
    readonly sortKey?: string;
    /**
     * The disk status.
     */
    readonly status?: string;
    /**
     * The disk tags.
     */
    readonly tags?: {
        [key: string]: string;
    };
    /**
     * The disk ID.
     */
    readonly volumeId?: string;
    readonly volumeTypeId?: string;
    /**
     * The detailed information of the disks. Structure is documented below.
     */
    readonly volumes: outputs.Evs.GetVolumesVolume[];
}
export declare function getVolumesOutput(args?: GetVolumesOutputArgs, opts?: pulumi.InvokeOptions): pulumi.Output<GetVolumesResult>;
/**
 * A collection of arguments for invoking getVolumes.
 */
export interface GetVolumesOutputArgs {
    /**
     * Specifies the availability zone for the disks.
     */
    availabilityZone?: pulumi.Input<string>;
    /**
     * Specifies the dedicated storage pool ID. All disks in the dedicated storage
     * pool can be filtered by exact match.
     */
    dedicatedStorageId?: pulumi.Input<string>;
    /**
     * Specifies the dedicated storage pool name. All disks in the dedicated
     * storage pool can be filtered by fuzzy match.
     */
    dedicatedStorageName?: pulumi.Input<string>;
    /**
     * Specifies the enterprise project ID for filtering.
     */
    enterpriseProjectId?: pulumi.Input<string>;
    /**
     * Specifies the disk IDs. The value is in the ids=['id1','id2',...,'idx'] format.
     * In the response, the `ids` value contains valid disk IDs only. Invalid disk IDs are ignored.
     * The details about a maximum of `60` disks can be queried. If `volumeId` and `ids` are both specified in the request,
     * `volumeId` will be ignored.
     * Please pay attention to escape special characters before use. Please refer to the usage of example.
     */
    ids?: pulumi.Input<string>;
    /**
     * Specifies the disk metadata.
     * Please pay attention to escape special characters before use. Please refer to the usage of example.
     */
    metadata?: pulumi.Input<string>;
    /**
     * Specifies the name for the disks. This field will undergo a fuzzy matching query, the
     * query result is for all disks whose names contain this value.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the region in which to query the disk list.
     * If omitted, the provider-level region will be used.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the server ID to which the disks are attached.
     */
    serverId?: pulumi.Input<string>;
    /**
     * Specifies the service type. Supported services are **EVS**, **DSS**, and **DESS**.
     */
    serviceType?: pulumi.Input<string>;
    /**
     * Specifies whether the disk is shareable.
     */
    shareable?: pulumi.Input<boolean>;
    /**
     * Specifies the result sorting order. The default value is **desc**.
     * + **desc**: The descending order.
     * + **asc**: The ascending order.
     */
    sortDir?: pulumi.Input<string>;
    /**
     * Specifies the keyword based on which the returned results are sorted.
     * The value can be **id**, **status**, **size**, or **created_at**, and the default value is **created_at**.
     */
    sortKey?: pulumi.Input<string>;
    /**
     * Specifies the disk status. The valid values are as following:
     * + **FREEZED**
     * + **BIND_ERROR**
     * + **BINDING**
     * + **PENDING_DELETE**
     * + **PENDING_CREATE**
     * + **NOTIFYING**
     * + **NOTIFY_DELETE**
     * + **PENDING_UPDATE**
     * + **DOWN**
     * + **ACTIVE**
     * + **ELB**
     * + **ERROR**
     * + **VPN**
     */
    status?: pulumi.Input<string>;
    /**
     * Specifies the included key/value pairs which associated with the desired disk.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies the ID for the disk.
     */
    volumeId?: pulumi.Input<string>;
    /**
     * Specifies the type ID for the disks.
     */
    volumeTypeId?: pulumi.Input<string>;
}
