# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import json
import warnings
import pulumi
import pulumi.runtime
from typing import Union
from . import utilities, tables

class GetAccountResult:
    """
    A collection of values returned by getAccount.
    """
    def __init__(__self__, address1=None, address2=None, balance=None, city=None, company=None, country=None, email=None, first_name=None, id=None, last_name=None, phone=None, state=None, zip=None):
        if address1 and not isinstance(address1, str):
            raise TypeError("Expected argument 'address1' to be a str")
        __self__.address1 = address1
        if address2 and not isinstance(address2, str):
            raise TypeError("Expected argument 'address2' to be a str")
        __self__.address2 = address2
        if balance and not isinstance(balance, float):
            raise TypeError("Expected argument 'balance' to be a float")
        __self__.balance = balance
        if city and not isinstance(city, str):
            raise TypeError("Expected argument 'city' to be a str")
        __self__.city = city
        if company and not isinstance(company, str):
            raise TypeError("Expected argument 'company' to be a str")
        __self__.company = company
        if country and not isinstance(country, str):
            raise TypeError("Expected argument 'country' to be a str")
        __self__.country = country
        if email and not isinstance(email, str):
            raise TypeError("Expected argument 'email' to be a str")
        __self__.email = email
        if first_name and not isinstance(first_name, str):
            raise TypeError("Expected argument 'first_name' to be a str")
        __self__.first_name = first_name
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        __self__.id = id
        """
        id is the provider-assigned unique ID for this managed resource.
        """
        if last_name and not isinstance(last_name, str):
            raise TypeError("Expected argument 'last_name' to be a str")
        __self__.last_name = last_name
        if phone and not isinstance(phone, str):
            raise TypeError("Expected argument 'phone' to be a str")
        __self__.phone = phone
        if state and not isinstance(state, str):
            raise TypeError("Expected argument 'state' to be a str")
        __self__.state = state
        if zip and not isinstance(zip, str):
            raise TypeError("Expected argument 'zip' to be a str")
        __self__.zip = zip
class AwaitableGetAccountResult(GetAccountResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetAccountResult(
            address1=self.address1,
            address2=self.address2,
            balance=self.balance,
            city=self.city,
            company=self.company,
            country=self.country,
            email=self.email,
            first_name=self.first_name,
            id=self.id,
            last_name=self.last_name,
            phone=self.phone,
            state=self.state,
            zip=self.zip)

def get_account(opts=None):
    """
    Provides information about a Linode account.

    This data source should not be used in conjuction with the `LINODE_DEBUG` option.  See the [debugging notes](https://www.terraform.io/docs/providers/linode/index.html#debugging) for more details.


    ## Attributes

    The Linode Account resource exports the following attributes:

    * `email` - The email address for this Account, for account management communications, and may be used for other communications as configured.

    * `first_name` - The first name of the person associated with this Account.

    * `last_name` - The last name of the person associated with this Account.

    * `company` - The company name associated with this Account.

    * `address_1` - First line of this Account's billing address.

    * `address_2` - Second line of this Account's billing address.

    * `phone` - The phone number associated with this Account.

    * `city` - The city for this Account's billing address.

    * `state` - If billing address is in the United States, this is the State portion of the Account's billing address. If the address is outside the US, this is the Province associated with the Account's billing address.

    * `country` - The two-letter country code of this Account's billing address.

    * `zip` - The zip code of this Account's billing address.

    * `balance` - This Account's balance, in US dollars.

    > This content is derived from https://github.com/terraform-providers/terraform-provider-linode/blob/master/website/docs/d/account.html.md.
    """
    __args__ = dict()


    if opts is None:
        opts = pulumi.InvokeOptions()
    if opts.version is None:
        opts.version = utilities.get_version()
    __ret__ = pulumi.runtime.invoke('linode:index/getAccount:getAccount', __args__, opts=opts).value

    return AwaitableGetAccountResult(
        address1=__ret__.get('address1'),
        address2=__ret__.get('address2'),
        balance=__ret__.get('balance'),
        city=__ret__.get('city'),
        company=__ret__.get('company'),
        country=__ret__.get('country'),
        email=__ret__.get('email'),
        first_name=__ret__.get('firstName'),
        id=__ret__.get('id'),
        last_name=__ret__.get('lastName'),
        phone=__ret__.get('phone'),
        state=__ret__.get('state'),
        zip=__ret__.get('zip'))
