import * as pulumi from "@pulumi/pulumi";
/**
 * Provides a Tair (Redis OSS-Compatible) And Memcache (KVStore) Backup resource.
 *
 * Instance level or database level backup objects.
 *
 * For information about Tair (Redis OSS-Compatible) And Memcache (KVStore) Backup and how to use it, see [What is Backup](https://www.alibabacloud.com/help/en/redis/developer-reference/api-r-kvstore-2015-01-01-modifybackuppolicy-redis).
 *
 * > **NOTE:** Available since v1.15.0.
 *
 * ## Example Usage
 *
 * Basic Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as alicloud from "@pulumi/alicloud";
 * import * as std from "@pulumi/std";
 *
 * const config = new pulumi.Config();
 * const name = config.get("name") || "terraform-example";
 * const zoneId = config.get("zoneId") || "cn-hangzhou-h";
 * const _default = alicloud.vpc.getNetworks({
 *     nameRegex: "^default-NODELETING$",
 * });
 * const defaultGetSwitches = _default.then(_default => alicloud.vpc.getSwitches({
 *     zoneId: zoneId,
 *     vpcId: _default.ids?.[0],
 * }));
 * const vswitch: alicloud.vpc.Switch[] = [];
 * defaultGetSwitches.then(defaultGetSwitches => defaultGetSwitches.ids).length.apply(length => {
 *     for (let range = 0; range < (length > 0 ? 0 : 1); range++) {
 *         vswitch.push(new alicloud.vpc.Switch(`vswitch-${range}`, {
 *             vpcId: _default.then(_default => _default.ids?.[0]),
 *             cidrBlock: _default.then(_default => std.cidrsubnet({
 *                 input: _default.vpcs?.[0]?.cidrBlock,
 *                 newbits: 8,
 *                 netnum: 8,
 *             })).then(invoke => invoke.result),
 *             zoneId: zoneId,
 *             vswitchName: name,
 *         }));
 *     }
 * });
 * const vswitchId = pulumi.all([defaultGetSwitches.then(defaultGetSwitches => defaultGetSwitches.ids).length, defaultGetSwitches, std.concat({
 *     input: [
 *         vswitch.map(__item => __item.id),
 *         [""],
 *     ],
 * })]).apply(([length, defaultGetSwitches, invoke]) => length > 0 ? defaultGetSwitches.ids?.[0] : invoke.result?.[0]);
 * const defaultInstance = new alicloud.kvstore.Instance("default", {
 *     port: 6379,
 *     paymentType: "PrePaid",
 *     instanceType: "Redis",
 *     password: "123456_tf",
 *     engineVersion: "5.0",
 *     zoneId: zoneId,
 *     vswitchId: vswitchId,
 *     period: "1",
 *     instanceClass: "redis.shard.small.2.ce",
 * });
 * const defaultBackup = new alicloud.redis.Backup("default", {
 *     instanceId: defaultInstance.id,
 *     backupRetentionPeriod: 7,
 * });
 * ```
 *
 * 📚 Need more examples? VIEW MORE EXAMPLES
 *
 * ## Import
 *
 * Tair (Redis OSS-Compatible) And Memcache (KVStore) Backup can be imported using the id, e.g.
 *
 * ```sh
 * $ pulumi import alicloud:redis/backup:Backup example <instance_id>:<backup_id>
 * ```
 */
export declare class Backup extends pulumi.CustomResource {
    /**
     * Get an existing Backup 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?: BackupState, opts?: pulumi.CustomResourceOptions): Backup;
    /**
     * Returns true if the given object is an instance of Backup.  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 Backup;
    /**
     * Backup ID.
     */
    readonly backupId: pulumi.Output<number>;
    /**
     * The expiration period for this manual backup ranges from 7 to 730 days. When you pass in -1, it indicates that this manual backup will not expire (during the instance's lifecycle). If you do not pass any value (default case), it means the expiration policy will be consistent with the current automatic backup strategy.
     *
     * > **NOTE:** The parameter is immutable after resource creation. It only applies during resource creation and has no effect when modified post-creation.
     */
    readonly backupRetentionPeriod: pulumi.Output<number | undefined>;
    /**
     * InstanceId
     */
    readonly instanceId: pulumi.Output<string>;
    /**
     * Backup status.
     */
    readonly status: pulumi.Output<string>;
    /**
     * Create a Backup 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: BackupArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Backup resources.
 */
export interface BackupState {
    /**
     * Backup ID.
     */
    backupId?: pulumi.Input<number | undefined>;
    /**
     * The expiration period for this manual backup ranges from 7 to 730 days. When you pass in -1, it indicates that this manual backup will not expire (during the instance's lifecycle). If you do not pass any value (default case), it means the expiration policy will be consistent with the current automatic backup strategy.
     *
     * > **NOTE:** The parameter is immutable after resource creation. It only applies during resource creation and has no effect when modified post-creation.
     */
    backupRetentionPeriod?: pulumi.Input<number | undefined>;
    /**
     * InstanceId
     */
    instanceId?: pulumi.Input<string | undefined>;
    /**
     * Backup status.
     */
    status?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Backup resource.
 */
export interface BackupArgs {
    /**
     * The expiration period for this manual backup ranges from 7 to 730 days. When you pass in -1, it indicates that this manual backup will not expire (during the instance's lifecycle). If you do not pass any value (default case), it means the expiration policy will be consistent with the current automatic backup strategy.
     *
     * > **NOTE:** The parameter is immutable after resource creation. It only applies during resource creation and has no effect when modified post-creation.
     */
    backupRetentionPeriod?: pulumi.Input<number | undefined>;
    /**
     * InstanceId
     */
    instanceId: pulumi.Input<string>;
}
//# sourceMappingURL=backup.d.ts.map