import * as pulumi from "@pulumi/pulumi";
/**
 * Creates and manages Scaleway IAM [Users](https://www.scaleway.com/en/docs/iam/concepts/#member).
 *
 * For more information, see the [API documentation](https://www.scaleway.com/en/developers/api/iam/#path-users-list-users-of-an-organization).
 *
 * > **Security Best Practice:**
 * For enhanced security, we recommend using the `passwordWo` write-only argument instead of the regular `password` argument. This ensures your sensitive credentials are never stored in Terraform state files, providing superior protection against accidental exposure. Write-Only arguments are supported in Terraform 1.11.0 and later.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * //## Basic IAM user creation
 * const user = new scaleway.iam.User("user", {
 *     email: "foo@test.com",
 *     tags: ["test-tag"],
 *     username: "foo",
 *     firstName: "Foo",
 *     lastName: "Bar",
 * });
 * ```
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const users = [
 *     {
 *         email: "test@test.com",
 *         username: "test",
 *     },
 *     {
 *         email: "test2@test.com",
 *         username: "test2",
 *     },
 * ];
 * const usersUser: scaleway.iam.User[] = [];
 * for (const range = {value: 0}; range.value < users.length; range.value++) {
 *     usersUser.push(new scaleway.iam.User(`users-${range.value}`, {
 *         email: users[range.value].email,
 *         username: users[range.value].username,
 *     }));
 * }
 * ```
 *
 * ## Import
 *
 * IAM users can be imported using the `{id}`, e.g.
 *
 * ```sh
 * $ pulumi import scaleway:iam/user:User basic 11111111-1111-1111-1111-111111111111
 * ```
 */
export declare class User extends pulumi.CustomResource {
    /**
     * Get an existing User 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?: UserState, opts?: pulumi.CustomResourceOptions): User;
    /**
     * Returns true if the given object is an instance of User.  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 User;
    /**
     * The ID of the account root user associated with the user.
     */
    readonly accountRootUserId: pulumi.Output<string>;
    /**
     * The date and time of the creation of the IAM user.
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * Whether the IAM user is deletable.
     */
    readonly deletable: pulumi.Output<boolean>;
    /**
     * The email of the IAM user. For Guest users, this argument is not editable.
     */
    readonly email: pulumi.Output<string>;
    /**
     * The user's first name.
     */
    readonly firstName: pulumi.Output<string | undefined>;
    /**
     * The date of the last login.
     */
    readonly lastLoginAt: pulumi.Output<string>;
    /**
     * The user's last name.
     */
    readonly lastName: pulumi.Output<string | undefined>;
    /**
     * The user's locale (e.g., en_US).
     */
    readonly locale: pulumi.Output<string>;
    /**
     * Whether the user is locked.
     */
    readonly locked: pulumi.Output<boolean>;
    /**
     * Whether the MFA is enabled.
     */
    readonly mfa: pulumi.Output<boolean>;
    /**
     * `organizationId`) The ID of the organization the user is associated with.
     */
    readonly organizationId: pulumi.Output<string>;
    /**
     * The password for first access. Only one of `password` or `passwordWo` should be specified.
     */
    readonly password: pulumi.Output<string | undefined>;
    /**
     * **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
     * The password for first access in write-only mode. Only one of `password` or `passwordWo` should be specified. `passwordWo` will not be set in the Terraform state. To update the `passwordWo`, you must also update the `passwordWoVersion`.
     */
    readonly passwordWo: pulumi.Output<string | undefined>;
    /**
     * The version of the write-only password. To update the `passwordWo`, you must also update the `passwordWoVersion`.
     */
    readonly passwordWoVersion: pulumi.Output<number | undefined>;
    /**
     * The user's phone number.
     */
    readonly phoneNumber: pulumi.Output<string | undefined>;
    /**
     * Whether or not to send an email containing the password for first access.
     */
    readonly sendPasswordEmail: pulumi.Output<boolean | undefined>;
    /**
     * Whether or not to send a welcome email that includes onboarding information.
     */
    readonly sendWelcomeEmail: pulumi.Output<boolean | undefined>;
    /**
     * The status of user invitation. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).
     */
    readonly status: pulumi.Output<string>;
    /**
     * The tags associated with the user.
     */
    readonly tags: pulumi.Output<string[] | undefined>;
    /**
     * The type of user. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).
     */
    readonly type: pulumi.Output<string>;
    /**
     * The date and time of the last update of the IAM user.
     */
    readonly updatedAt: pulumi.Output<string>;
    /**
     * The username of the IAM user.
     */
    readonly username: pulumi.Output<string>;
    /**
     * Create a User 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: UserArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering User resources.
 */
export interface UserState {
    /**
     * The ID of the account root user associated with the user.
     */
    accountRootUserId?: pulumi.Input<string | undefined>;
    /**
     * The date and time of the creation of the IAM user.
     */
    createdAt?: pulumi.Input<string | undefined>;
    /**
     * Whether the IAM user is deletable.
     */
    deletable?: pulumi.Input<boolean | undefined>;
    /**
     * The email of the IAM user. For Guest users, this argument is not editable.
     */
    email?: pulumi.Input<string | undefined>;
    /**
     * The user's first name.
     */
    firstName?: pulumi.Input<string | undefined>;
    /**
     * The date of the last login.
     */
    lastLoginAt?: pulumi.Input<string | undefined>;
    /**
     * The user's last name.
     */
    lastName?: pulumi.Input<string | undefined>;
    /**
     * The user's locale (e.g., en_US).
     */
    locale?: pulumi.Input<string | undefined>;
    /**
     * Whether the user is locked.
     */
    locked?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the MFA is enabled.
     */
    mfa?: pulumi.Input<boolean | undefined>;
    /**
     * `organizationId`) The ID of the organization the user is associated with.
     */
    organizationId?: pulumi.Input<string | undefined>;
    /**
     * The password for first access. Only one of `password` or `passwordWo` should be specified.
     */
    password?: pulumi.Input<string | undefined>;
    /**
     * **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
     * The password for first access in write-only mode. Only one of `password` or `passwordWo` should be specified. `passwordWo` will not be set in the Terraform state. To update the `passwordWo`, you must also update the `passwordWoVersion`.
     */
    passwordWo?: pulumi.Input<string | undefined>;
    /**
     * The version of the write-only password. To update the `passwordWo`, you must also update the `passwordWoVersion`.
     */
    passwordWoVersion?: pulumi.Input<number | undefined>;
    /**
     * The user's phone number.
     */
    phoneNumber?: pulumi.Input<string | undefined>;
    /**
     * Whether or not to send an email containing the password for first access.
     */
    sendPasswordEmail?: pulumi.Input<boolean | undefined>;
    /**
     * Whether or not to send a welcome email that includes onboarding information.
     */
    sendWelcomeEmail?: pulumi.Input<boolean | undefined>;
    /**
     * The status of user invitation. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).
     */
    status?: pulumi.Input<string | undefined>;
    /**
     * The tags associated with the user.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The type of user. Check the possible values in the [API doc](https://www.scaleway.com/en/developers/api/iam/#path-users-get-a-given-user).
     */
    type?: pulumi.Input<string | undefined>;
    /**
     * The date and time of the last update of the IAM user.
     */
    updatedAt?: pulumi.Input<string | undefined>;
    /**
     * The username of the IAM user.
     */
    username?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a User resource.
 */
export interface UserArgs {
    /**
     * The email of the IAM user. For Guest users, this argument is not editable.
     */
    email: pulumi.Input<string>;
    /**
     * The user's first name.
     */
    firstName?: pulumi.Input<string | undefined>;
    /**
     * The user's last name.
     */
    lastName?: pulumi.Input<string | undefined>;
    /**
     * The user's locale (e.g., en_US).
     */
    locale?: pulumi.Input<string | undefined>;
    /**
     * `organizationId`) The ID of the organization the user is associated with.
     */
    organizationId?: pulumi.Input<string | undefined>;
    /**
     * The password for first access. Only one of `password` or `passwordWo` should be specified.
     */
    password?: pulumi.Input<string | undefined>;
    /**
     * **NOTE:** This field is write-only and its value will not be updated in state as part of read operations.
     * The password for first access in write-only mode. Only one of `password` or `passwordWo` should be specified. `passwordWo` will not be set in the Terraform state. To update the `passwordWo`, you must also update the `passwordWoVersion`.
     */
    passwordWo?: pulumi.Input<string | undefined>;
    /**
     * The version of the write-only password. To update the `passwordWo`, you must also update the `passwordWoVersion`.
     */
    passwordWoVersion?: pulumi.Input<number | undefined>;
    /**
     * The user's phone number.
     */
    phoneNumber?: pulumi.Input<string | undefined>;
    /**
     * Whether or not to send an email containing the password for first access.
     */
    sendPasswordEmail?: pulumi.Input<boolean | undefined>;
    /**
     * Whether or not to send a welcome email that includes onboarding information.
     */
    sendWelcomeEmail?: pulumi.Input<boolean | undefined>;
    /**
     * The tags associated with the user.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The username of the IAM user.
     */
    username: pulumi.Input<string>;
}
//# sourceMappingURL=user.d.ts.map