import * as pulumi from "@pulumi/pulumi";
/**
 * Manages an IMS image copy resource within HuaweiCloud.
 *
 * ## Example Usage
 * ### Copy image within region
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const config = new pulumi.Config();
 * const sourceImageId = config.requireObject("sourceImageId");
 * const name = config.requireObject("name");
 * const kmsKeyId = config.requireObject("kmsKeyId");
 * const test = new huaweicloud.ims.ImageCopy("test", {
 *     sourceImageId: sourceImageId,
 *     kmsKeyId: kmsKeyId,
 * });
 * ```
 * ### Copy image cross region
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const config = new pulumi.Config();
 * const sourceImageId = config.requireObject("sourceImageId");
 * const name = config.requireObject("name");
 * const targetRegion = config.requireObject("targetRegion");
 * const agencyName = config.requireObject("agencyName");
 * const test = new huaweicloud.ims.ImageCopy("test", {
 *     sourceImageId: sourceImageId,
 *     targetRegion: targetRegion,
 *     agencyName: agencyName,
 * });
 * ```
 */
export declare class ImageCopy extends pulumi.CustomResource {
    /**
     * Get an existing ImageCopy 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?: ImageCopyState, opts?: pulumi.CustomResourceOptions): ImageCopy;
    /**
     * Returns true if the given object is an instance of ImageCopy.  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 ImageCopy;
    /**
     * The time when the image status changes to active, in RFC3339 format.
     */
    readonly activeAt: pulumi.Output<string>;
    /**
     * Specifies the agency name. It is required in the cross-region scene.
     * Changing this parameter will create a new resource.
     */
    readonly agencyName: pulumi.Output<string>;
    /**
     * checksum is deprecated
     */
    readonly checksum: pulumi.Output<string>;
    /**
     * The creation time of the image, in RFC3339 format.
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * Indicates the image source.
     * The format is **image,region,source_image_id**, e.g. **image,cn-north-4,xxxxxx**.
     */
    readonly dataOrigin: pulumi.Output<string>;
    /**
     * Specifies the description of the copy image.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * Indicates the image file format.
     * The value can be **zvhd2**, **vhd**, **zvhd**, **raw**, **qcow2**, or **iso**.
     */
    readonly diskFormat: pulumi.Output<string>;
    /**
     * Specifies the enterprise project ID of the image.
     * Only copying scene within a region is supported, for enterprise users, if omitted, default enterprise project will
     * be used.
     */
    readonly enterpriseProjectId: pulumi.Output<string>;
    /**
     * Indicates the size(bytes) of the image file.
     */
    readonly imageSize: pulumi.Output<string>;
    /**
     * Indicates the ID of the ECS that needs to be converted into an image.
     */
    readonly instanceId: pulumi.Output<string>;
    /**
     * Specifies the master key used for encrypting an image.
     * Only copying scene within a region is supported. Changing this parameter will create a new resource.
     */
    readonly kmsKeyId: pulumi.Output<string>;
    /**
     * Specifies the maximum memory of the copy image in the unit of MB.
     */
    readonly maxRam: pulumi.Output<number>;
    /**
     * The minimum disk space required to run an image, in GB unit.
     */
    readonly minDisk: pulumi.Output<number>;
    /**
     * Specifies the minimum memory of the copy image in the unit of MB. The default value is
     * `0`, indicating that the memory is not restricted.
     */
    readonly minRam: pulumi.Output<number>;
    /**
     * Specifies the name of the copy image. The name can contain `1` to `128` characters,
     * only Chinese and English letters, digits, underscore (_), hyphens (-), dots (.) and space are allowed, but it cannot
     * start or end with a space.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Indicates the OS version.
     */
    readonly osVersion: pulumi.Output<string>;
    /**
     * Specifies the region to which the source image belongs.
     * If omitted, the provider-level region will be used. Changing this parameter will create a new resource.
     */
    readonly region: pulumi.Output<string>;
    /**
     * Specifies the ID of the copied image.
     * Changing this parameter will create a new resource.
     */
    readonly sourceImageId: pulumi.Output<string>;
    /**
     * Indicates the status of the image. The value can be **active**, **queued**, **saving**, **deleted**,
     * or **killed*, only image with a status of **active** can be used.
     */
    readonly status: pulumi.Output<string>;
    /**
     * Specifies the key/value pairs to associate with the copy image.
     */
    readonly tags: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * Specifies the target region name.
     * If specified, it means cross-region replication.
     */
    readonly targetRegion: pulumi.Output<string>;
    /**
     * The last update time of the image, in RFC3339 format.
     */
    readonly updatedAt: pulumi.Output<string>;
    /**
     * Specifies the ID of the vault. It is used in the cross-region scene, it is
     * mandatory if you are replicating a full-ECS image, and the region to which the vault belongs must be consistent with
     * the value of `targetRegion`.
     * Changing this parameter will create a new resource.
     */
    readonly vaultId: pulumi.Output<string>;
    /**
     * Indicates whether the image is visible to other tenants.
     */
    readonly visibility: pulumi.Output<string>;
    /**
     * Create a ImageCopy 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: ImageCopyArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ImageCopy resources.
 */
export interface ImageCopyState {
    /**
     * The time when the image status changes to active, in RFC3339 format.
     */
    activeAt?: pulumi.Input<string>;
    /**
     * Specifies the agency name. It is required in the cross-region scene.
     * Changing this parameter will create a new resource.
     */
    agencyName?: pulumi.Input<string>;
    /**
     * checksum is deprecated
     */
    checksum?: pulumi.Input<string>;
    /**
     * The creation time of the image, in RFC3339 format.
     */
    createdAt?: pulumi.Input<string>;
    /**
     * Indicates the image source.
     * The format is **image,region,source_image_id**, e.g. **image,cn-north-4,xxxxxx**.
     */
    dataOrigin?: pulumi.Input<string>;
    /**
     * Specifies the description of the copy image.
     */
    description?: pulumi.Input<string>;
    /**
     * Indicates the image file format.
     * The value can be **zvhd2**, **vhd**, **zvhd**, **raw**, **qcow2**, or **iso**.
     */
    diskFormat?: pulumi.Input<string>;
    /**
     * Specifies the enterprise project ID of the image.
     * Only copying scene within a region is supported, for enterprise users, if omitted, default enterprise project will
     * be used.
     */
    enterpriseProjectId?: pulumi.Input<string>;
    /**
     * Indicates the size(bytes) of the image file.
     */
    imageSize?: pulumi.Input<string>;
    /**
     * Indicates the ID of the ECS that needs to be converted into an image.
     */
    instanceId?: pulumi.Input<string>;
    /**
     * Specifies the master key used for encrypting an image.
     * Only copying scene within a region is supported. Changing this parameter will create a new resource.
     */
    kmsKeyId?: pulumi.Input<string>;
    /**
     * Specifies the maximum memory of the copy image in the unit of MB.
     */
    maxRam?: pulumi.Input<number>;
    /**
     * The minimum disk space required to run an image, in GB unit.
     */
    minDisk?: pulumi.Input<number>;
    /**
     * Specifies the minimum memory of the copy image in the unit of MB. The default value is
     * `0`, indicating that the memory is not restricted.
     */
    minRam?: pulumi.Input<number>;
    /**
     * Specifies the name of the copy image. The name can contain `1` to `128` characters,
     * only Chinese and English letters, digits, underscore (_), hyphens (-), dots (.) and space are allowed, but it cannot
     * start or end with a space.
     */
    name?: pulumi.Input<string>;
    /**
     * Indicates the OS version.
     */
    osVersion?: pulumi.Input<string>;
    /**
     * Specifies the region to which the source image belongs.
     * If omitted, the provider-level region will be used. Changing this parameter will create a new resource.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the ID of the copied image.
     * Changing this parameter will create a new resource.
     */
    sourceImageId?: pulumi.Input<string>;
    /**
     * Indicates the status of the image. The value can be **active**, **queued**, **saving**, **deleted**,
     * or **killed*, only image with a status of **active** can be used.
     */
    status?: pulumi.Input<string>;
    /**
     * Specifies the key/value pairs to associate with the copy image.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies the target region name.
     * If specified, it means cross-region replication.
     */
    targetRegion?: pulumi.Input<string>;
    /**
     * The last update time of the image, in RFC3339 format.
     */
    updatedAt?: pulumi.Input<string>;
    /**
     * Specifies the ID of the vault. It is used in the cross-region scene, it is
     * mandatory if you are replicating a full-ECS image, and the region to which the vault belongs must be consistent with
     * the value of `targetRegion`.
     * Changing this parameter will create a new resource.
     */
    vaultId?: pulumi.Input<string>;
    /**
     * Indicates whether the image is visible to other tenants.
     */
    visibility?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a ImageCopy resource.
 */
export interface ImageCopyArgs {
    /**
     * Specifies the agency name. It is required in the cross-region scene.
     * Changing this parameter will create a new resource.
     */
    agencyName?: pulumi.Input<string>;
    /**
     * Specifies the description of the copy image.
     */
    description?: pulumi.Input<string>;
    /**
     * Specifies the enterprise project ID of the image.
     * Only copying scene within a region is supported, for enterprise users, if omitted, default enterprise project will
     * be used.
     */
    enterpriseProjectId?: pulumi.Input<string>;
    /**
     * Specifies the master key used for encrypting an image.
     * Only copying scene within a region is supported. Changing this parameter will create a new resource.
     */
    kmsKeyId?: pulumi.Input<string>;
    /**
     * Specifies the maximum memory of the copy image in the unit of MB.
     */
    maxRam?: pulumi.Input<number>;
    /**
     * Specifies the minimum memory of the copy image in the unit of MB. The default value is
     * `0`, indicating that the memory is not restricted.
     */
    minRam?: pulumi.Input<number>;
    /**
     * Specifies the name of the copy image. The name can contain `1` to `128` characters,
     * only Chinese and English letters, digits, underscore (_), hyphens (-), dots (.) and space are allowed, but it cannot
     * start or end with a space.
     */
    name?: pulumi.Input<string>;
    /**
     * Specifies the region to which the source image belongs.
     * If omitted, the provider-level region will be used. Changing this parameter will create a new resource.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the ID of the copied image.
     * Changing this parameter will create a new resource.
     */
    sourceImageId: pulumi.Input<string>;
    /**
     * Specifies the key/value pairs to associate with the copy image.
     */
    tags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    }>;
    /**
     * Specifies the target region name.
     * If specified, it means cross-region replication.
     */
    targetRegion?: pulumi.Input<string>;
    /**
     * Specifies the ID of the vault. It is used in the cross-region scene, it is
     * mandatory if you are replicating a full-ECS image, and the region to which the vault belongs must be consistent with
     * the value of `targetRegion`.
     * Changing this parameter will create a new resource.
     */
    vaultId?: pulumi.Input<string>;
}
