U
    g                     @   sX   d dl mZ d dlmZ d dlmZ G dd deZG dd deZG dd	 d	eZd
S )    )Optional)TelegramObject)JSONDictc                       sZ   e Zd ZdZdZdddeeeeeeee ee ee ee ee d fddZ  Z	S )	PersonalDetailsa  
    This object represents personal details.

    Args:
        first_name (:obj:`str`): First Name.
        middle_name (:obj:`str`): Optional. First Name.
        last_name (:obj:`str`): Last Name.
        birth_date (:obj:`str`): Date of birth in DD.MM.YYYY format.
        gender (:obj:`str`): Gender, male or female.
        country_code (:obj:`str`): Citizenship (ISO 3166-1 alpha-2 country code).
        residence_country_code (:obj:`str`): Country of residence (ISO 3166-1 alpha-2 country
            code).
        first_name_native (:obj:`str`): First Name in the language of the user's country of
            residence.
        middle_name_native (:obj:`str`): Optional. Middle Name in the language of the user's
            country of residence.
        last_name_native (:obj:`str`): Last Name in the language of the user's country of
            residence.

    Attributes:
        first_name (:obj:`str`): First Name.
        middle_name (:obj:`str`): Optional. First Name.
        last_name (:obj:`str`): Last Name.
        birth_date (:obj:`str`): Date of birth in DD.MM.YYYY format.
        gender (:obj:`str`): Gender, male or female.
        country_code (:obj:`str`): Citizenship (ISO 3166-1 alpha-2 country code).
        residence_country_code (:obj:`str`): Country of residence (ISO 3166-1 alpha-2 country
            code).
        first_name_native (:obj:`str`): First Name in the language of the user's country of
            residence.
        middle_name_native (:obj:`str`): Optional. Middle Name in the language of the user's
            country of residence.
        last_name_native (:obj:`str`): Last Name in the language of the user's country of
            residence.
    )

birth_datecountry_code
first_namefirst_name_nativegender	last_namelast_name_nativemiddle_namemiddle_name_nativeresidence_country_codeN
api_kwargs)r   r   r   r
   r   r   r	   r   r   r   r   c                   sV   t  j|d || _|| _|	| _|| _|| _|| _|| _|| _	|| _
|
| _|   d S Nr   )super__init__r   r   r   r   r
   r   r   r	   r   r   _freeze)selfr   r   r   r
   r   r   r	   r   r   r   r   	__class__ ;/tmp/pip-unpacked-wheel-swnnwir2/telegram/_passport/data.pyr   L   s    zPersonalDetails.__init__)NNNN
__name__
__module____qualname____doc__	__slots__strr   r   r   __classcell__r   r   r   r   r      s*   $    r   c                	       s@   e Zd ZdZdZddeeeeeeee d fddZ  Z	S )ResidentialAddressa  
    This object represents a residential address.

    Args:
        street_line1 (:obj:`str`): First line for the address.
        street_line2 (:obj:`str`): Optional. Second line for the address.
        city (:obj:`str`): City.
        state (:obj:`str`): Optional. State.
        country_code (:obj:`str`): ISO 3166-1 alpha-2 country code.
        post_code (:obj:`str`): Address post code.

    Attributes:
        street_line1 (:obj:`str`): First line for the address.
        street_line2 (:obj:`str`): Optional. Second line for the address.
        city (:obj:`str`): City.
        state (:obj:`str`): Optional. State.
        country_code (:obj:`str`): ISO 3166-1 alpha-2 country code.
        post_code (:obj:`str`): Address post code.
    )cityr   	post_codestatestreet_line1street_line2Nr   )r'   r(   r$   r&   r   r%   r   c                   s>   t  j|d || _|| _|| _|| _|| _|| _|   d S r   )	r   r   r'   r(   r$   r&   r   r%   r   )r   r'   r(   r$   r&   r   r%   r   r   r   r   r      s    zResidentialAddress.__init__r   r   r   r   r   r#   k   s   r#   c                       s8   e Zd ZdZdZddeeee d fddZ  Z	S )IdDocumentDataah  
    This object represents the data of an identity document.

    Args:
        document_no (:obj:`str`): Document number.
        expiry_date (:obj:`str`): Optional. Date of expiry, in DD.MM.YYYY format.

    Attributes:
        document_no (:obj:`str`): Document number.
        expiry_date (:obj:`str`): Optional. Date of expiry, in DD.MM.YYYY format.
    )document_noexpiry_dateNr   )r*   r+   r   c                   s&   t  j|d || _|| _|   d S r   )r   r   r*   r+   r   )r   r*   r+   r   r   r   r   r      s    zIdDocumentData.__init__r   r   r   r   r   r)      s   r)   N)	typingr   Ztelegram._telegramobjectr   Ztelegram._utils.typesr   r   r#   r)   r   r   r   r   <module>   s
   Q5