import * as pulumi from "@pulumi/pulumi";
/**
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as hcloud from "@pulumi/hcloud";
 *
 * const volume1 = hcloud.getVolume({
 *     id: 1234,
 * });
 * const volume2 = hcloud.getVolume({
 *     name: "my-volume",
 * });
 * const volume3 = hcloud.getVolume({
 *     withSelector: "key=value",
 * });
 * ```
 */
export declare function getVolume(args?: GetVolumeArgs, opts?: pulumi.InvokeOptions): Promise<GetVolumeResult>;
/**
 * A collection of arguments for invoking getVolume.
 */
export interface GetVolumeArgs {
    /**
     * ID of the volume.
     */
    id?: number;
    /**
     * (string) The location name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
     */
    location?: string;
    /**
     * Name of the volume.
     */
    name?: string;
    /**
     * @deprecated Please use the withSelector property instead.
     */
    selector?: string;
    /**
     * (Optional, int) Server ID the volume is attached to
     */
    serverId?: number;
    /**
     * Label Selector. For more information about possible values, visit the [Hetzner Cloud Documentation](https://docs.hetzner.cloud/#overview-label-selector).
     */
    withSelector?: string;
    /**
     * List only volumes with the specified status, could contain `creating` or `available`.
     */
    withStatuses?: string[];
}
/**
 * A collection of values returned by getVolume.
 */
export interface GetVolumeResult {
    /**
     * (bool) Whether delete protection is enabled.
     */
    readonly deleteProtection: boolean;
    /**
     * (int) Unique ID of the volume.
     */
    readonly id: number;
    /**
     * (map) User-defined labels (key-value pairs).
     */
    readonly labels: {
        [key: string]: string;
    };
    /**
     * (string) Device path on the file system for the Volume.
     */
    readonly linuxDevice: string;
    /**
     * (string) The location name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
     */
    readonly location?: string;
    /**
     * (string) Name of the volume.
     */
    readonly name: string;
    /**
     * @deprecated Please use the withSelector property instead.
     */
    readonly selector?: string;
    /**
     * (Optional, int) Server ID the volume is attached to
     */
    readonly serverId?: number;
    /**
     * (int) Size of the volume.
     */
    readonly size: number;
    readonly withSelector?: string;
    readonly withStatuses?: string[];
}
/**
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as hcloud from "@pulumi/hcloud";
 *
 * const volume1 = hcloud.getVolume({
 *     id: 1234,
 * });
 * const volume2 = hcloud.getVolume({
 *     name: "my-volume",
 * });
 * const volume3 = hcloud.getVolume({
 *     withSelector: "key=value",
 * });
 * ```
 */
export declare function getVolumeOutput(args?: GetVolumeOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetVolumeResult>;
/**
 * A collection of arguments for invoking getVolume.
 */
export interface GetVolumeOutputArgs {
    /**
     * ID of the volume.
     */
    id?: pulumi.Input<number>;
    /**
     * (string) The location name. See the [Hetzner Docs](https://docs.hetzner.com/cloud/general/locations/#what-locations-are-there) for more details about locations.
     */
    location?: pulumi.Input<string>;
    /**
     * Name of the volume.
     */
    name?: pulumi.Input<string>;
    /**
     * @deprecated Please use the withSelector property instead.
     */
    selector?: pulumi.Input<string>;
    /**
     * (Optional, int) Server ID the volume is attached to
     */
    serverId?: pulumi.Input<number>;
    /**
     * Label Selector. For more information about possible values, visit the [Hetzner Cloud Documentation](https://docs.hetzner.cloud/#overview-label-selector).
     */
    withSelector?: pulumi.Input<string>;
    /**
     * List only volumes with the specified status, could contain `creating` or `available`.
     */
    withStatuses?: pulumi.Input<pulumi.Input<string>[]>;
}
