import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * Provides information about a Linode user
 * For more information, see the [Linode APIv4 docs](https://techdocs.akamai.com/linode-api/reference/get-user).
 *
 * ## Example Usage
 *
 * The following example shows how one might use this data source to access information about a Linode user.
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as linode from "@pulumi/linode";
 *
 * const foo = linode.getUser({
 *     username: "foo",
 * });
 * ```
 *
 * The following example shows a sample grant.
 */
export declare function getUser(args: GetUserArgs, opts?: pulumi.InvokeOptions): Promise<GetUserResult>;
/**
 * A collection of arguments for invoking getUser.
 */
export interface GetUserArgs {
    databaseGrants?: inputs.GetUserDatabaseGrant[];
    domainGrants?: inputs.GetUserDomainGrant[];
    firewallGrants?: inputs.GetUserFirewallGrant[];
    imageGrants?: inputs.GetUserImageGrant[];
    linodeGrants?: inputs.GetUserLinodeGrant[];
    longviewGrants?: inputs.GetUserLongviewGrant[];
    nodebalancerGrants?: inputs.GetUserNodebalancerGrant[];
    placementGroupGrants?: inputs.GetUserPlacementGroupGrant[];
    stackscriptGrants?: inputs.GetUserStackscriptGrant[];
    /**
     * The unique username of this User.
     */
    username: string;
    volumeGrants?: inputs.GetUserVolumeGrant[];
    vpcGrants?: inputs.GetUserVpcGrant[];
}
/**
 * A collection of values returned by getUser.
 */
export interface GetUserResult {
    readonly databaseGrants: outputs.GetUserDatabaseGrant[];
    readonly domainGrants: outputs.GetUserDomainGrant[];
    /**
     * The email address for this User, for account management communications, and may be used for other communications as configured.
     */
    readonly email: string;
    readonly firewallGrants: outputs.GetUserFirewallGrant[];
    readonly globalGrants: outputs.GetUserGlobalGrant[];
    /**
     * The ID of entity this grant applies to.
     */
    readonly id: string;
    readonly imageGrants: outputs.GetUserImageGrant[];
    readonly linodeGrants: outputs.GetUserLinodeGrant[];
    readonly longviewGrants: outputs.GetUserLongviewGrant[];
    readonly nodebalancerGrants: outputs.GetUserNodebalancerGrant[];
    /**
     * The date and time when this User’s current password was created. User passwords are first created during the Account sign-up process, and updated using the Reset Password webpage. null if this User has not created a password yet.
     */
    readonly passwordCreated: string;
    readonly placementGroupGrants: outputs.GetUserPlacementGroupGrant[];
    /**
     * If true, this User must be granted access to perform actions or access entities on this Account.
     */
    readonly restricted: boolean;
    /**
     * A list of SSH Key labels added by this User. These are the keys that will be deployed if this User is included in the authorizedUsers field of a create Linode, rebuild Linode, or create Disk request.
     */
    readonly sshKeys: string[];
    readonly stackscriptGrants: outputs.GetUserStackscriptGrant[];
    /**
     * A boolean value indicating if the User has Two Factor Authentication (TFA) enabled.
     */
    readonly tfaEnabled: boolean;
    /**
     * The type of this user.
     */
    readonly userType: string;
    readonly username: string;
    /**
     * The phone number verified for this User Profile with the Phone Number Verify command. null if this User Profile has no verified phone number.
     */
    readonly verifiedPhoneNumber: string;
    readonly volumeGrants: outputs.GetUserVolumeGrant[];
    readonly vpcGrants: outputs.GetUserVpcGrant[];
}
/**
 * Provides information about a Linode user
 * For more information, see the [Linode APIv4 docs](https://techdocs.akamai.com/linode-api/reference/get-user).
 *
 * ## Example Usage
 *
 * The following example shows how one might use this data source to access information about a Linode user.
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as linode from "@pulumi/linode";
 *
 * const foo = linode.getUser({
 *     username: "foo",
 * });
 * ```
 *
 * The following example shows a sample grant.
 */
export declare function getUserOutput(args: GetUserOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetUserResult>;
/**
 * A collection of arguments for invoking getUser.
 */
export interface GetUserOutputArgs {
    databaseGrants?: pulumi.Input<pulumi.Input<inputs.GetUserDatabaseGrantArgs>[]>;
    domainGrants?: pulumi.Input<pulumi.Input<inputs.GetUserDomainGrantArgs>[]>;
    firewallGrants?: pulumi.Input<pulumi.Input<inputs.GetUserFirewallGrantArgs>[]>;
    imageGrants?: pulumi.Input<pulumi.Input<inputs.GetUserImageGrantArgs>[]>;
    linodeGrants?: pulumi.Input<pulumi.Input<inputs.GetUserLinodeGrantArgs>[]>;
    longviewGrants?: pulumi.Input<pulumi.Input<inputs.GetUserLongviewGrantArgs>[]>;
    nodebalancerGrants?: pulumi.Input<pulumi.Input<inputs.GetUserNodebalancerGrantArgs>[]>;
    placementGroupGrants?: pulumi.Input<pulumi.Input<inputs.GetUserPlacementGroupGrantArgs>[]>;
    stackscriptGrants?: pulumi.Input<pulumi.Input<inputs.GetUserStackscriptGrantArgs>[]>;
    /**
     * The unique username of this User.
     */
    username: pulumi.Input<string>;
    volumeGrants?: pulumi.Input<pulumi.Input<inputs.GetUserVolumeGrantArgs>[]>;
    vpcGrants?: pulumi.Input<pulumi.Input<inputs.GetUserVpcGrantArgs>[]>;
}
