import * as pulumi from "@pulumi/pulumi";
/**
 * Creates and manages Scaleway RDB (Relational Database) Snapshots.
 * Snapshots are point-in-time backups of a database instance that can be used for recovery or duplication.
 * For more information, refer to [the API documentation](https://www.scaleway.com/en/developers/api/managed-database-postgre-mysql/).
 *
 * ## Example Usage
 *
 * ### Example Basic Snapshot
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const main = new scaleway.databases.Instance("main", {
 *     name: "test-rdb-instance",
 *     nodeType: "db-dev-s",
 *     engine: "PostgreSQL-15",
 *     isHaCluster: false,
 *     disableBackup: true,
 *     userName: "my_initial_user",
 *     password: "thiZ_is_v&ry_s3cret",
 *     tags: [
 *         "terraform-test",
 *         "scaleway_rdb_instance",
 *         "minimal",
 *     ],
 *     volumeType: "sbs_5k",
 *     volumeSizeInGb: 10,
 * });
 * const test = new scaleway.databases.Snapshot("test", {
 *     name: "initial-snapshot",
 *     instanceId: main.id,
 * }, {
 *     dependsOn: [main],
 * });
 * ```
 *
 * ### Example with Expiration
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const snapshotWithExpiration = new scaleway.databases.Snapshot("snapshot_with_expiration", {
 *     name: "snapshot-with-expiration",
 *     instanceId: main.id,
 *     expiresAt: "2025-01-31T00:00:00Z",
 * });
 * ```
 *
 * ### Example with Multiple Snapshots
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const snapshotA = new scaleway.databases.Snapshot("snapshot_a", {
 *     name: "snapshot_a",
 *     instanceId: main.id,
 * }, {
 *     dependsOn: [main],
 * });
 * const snapshotB = new scaleway.databases.Snapshot("snapshot_b", {
 *     name: "snapshot_b",
 *     instanceId: main.id,
 *     expiresAt: "2025-02-07T00:00:00Z",
 * }, {
 *     dependsOn: [main],
 * });
 * ```
 *
 * ## Limitations
 *
 * - Snapshots are tied to the database instance and region where they are created.
 * - Expired snapshots are automatically deleted and cannot be restored.
 *
 * ## Notes
 *
 * - Ensure the `instanceId` corresponds to an existing database instance.
 * - Use the `dependsOn` argument when creating snapshots right after creating an instance to ensure proper dependency management.
 *
 * ## Import
 *
 * RDB Snapshots can be imported using the `{region}/{snapshot_id}` format.
 */
export declare class Snapshot extends pulumi.CustomResource {
    /**
     * Get an existing Snapshot 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?: SnapshotState, opts?: pulumi.CustomResourceOptions): Snapshot;
    /**
     * Returns true if the given object is an instance of Snapshot.  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 Snapshot;
    /**
     * The timestamp when the snapshot was created, in ISO 8601 format.
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
     */
    readonly expiresAt: pulumi.Output<string>;
    /**
     * The UUID of the database instance for which the snapshot is created.
     */
    readonly instanceId: pulumi.Output<string>;
    /**
     * The name of the snapshot.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The type of the database instance for which the snapshot was created.
     */
    readonly nodeType: pulumi.Output<string>;
    /**
     * The region where the snapshot is stored. Defaults to the region set in the provider configuration.
     */
    readonly region: pulumi.Output<string | undefined>;
    /**
     * The size of the snapshot in bytes.
     */
    readonly size: pulumi.Output<number>;
    /**
     * The current status of the snapshot (e.g., `ready`, `creating`, `error`).
     */
    readonly status: pulumi.Output<string>;
    /**
     * The timestamp when the snapshot was last updated, in ISO 8601 format.
     */
    readonly updatedAt: pulumi.Output<string>;
    /**
     * The type of volume used by the snapshot.
     */
    readonly volumeType: pulumi.Output<string>;
    /**
     * Create a Snapshot 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: SnapshotArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Snapshot resources.
 */
export interface SnapshotState {
    /**
     * The timestamp when the snapshot was created, in ISO 8601 format.
     */
    createdAt?: pulumi.Input<string | undefined>;
    /**
     * Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
     */
    expiresAt?: pulumi.Input<string | undefined>;
    /**
     * The UUID of the database instance for which the snapshot is created.
     */
    instanceId?: pulumi.Input<string | undefined>;
    /**
     * The name of the snapshot.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The type of the database instance for which the snapshot was created.
     */
    nodeType?: pulumi.Input<string | undefined>;
    /**
     * The region where the snapshot is stored. Defaults to the region set in the provider configuration.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * The size of the snapshot in bytes.
     */
    size?: pulumi.Input<number | undefined>;
    /**
     * The current status of the snapshot (e.g., `ready`, `creating`, `error`).
     */
    status?: pulumi.Input<string | undefined>;
    /**
     * The timestamp when the snapshot was last updated, in ISO 8601 format.
     */
    updatedAt?: pulumi.Input<string | undefined>;
    /**
     * The type of volume used by the snapshot.
     */
    volumeType?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Snapshot resource.
 */
export interface SnapshotArgs {
    /**
     * Expiration date of the snapshot in ISO 8601 format (e.g., `2025-01-31T00:00:00Z`). If not set, the snapshot will not expire automatically.
     */
    expiresAt?: pulumi.Input<string | undefined>;
    /**
     * The UUID of the database instance for which the snapshot is created.
     */
    instanceId: pulumi.Input<string>;
    /**
     * The name of the snapshot.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The region where the snapshot is stored. Defaults to the region set in the provider configuration.
     */
    region?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=snapshot.d.ts.map