
    &j2                         d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
mZmZ ddlmZ ddlmZ dd	lmZmZmZmZmZ dd
lmZ erddlmZmZ  G d de          ZdS )zSThis module contains an object that represents a Telegram EncryptedPassportElement.    )	b64decode)Sequence)TYPE_CHECKING)decrypt_json)IdDocumentDataPersonalDetailsResidentialAddress)PassportFile)TelegramObject)de_json_decrypted_optionalde_json_optionalde_list_decrypted_optionalde_list_optionalparse_sequence_arg)JSONDict)BotCredentialsc                       e Zd ZdZdZ	 	 	 	 	 	 	 	 ddddededeez  ez  dz  dedz  d	edz  d
e	e
         dz  de
dz  de
dz  de
dz  de	e
         dz  dedz  f fdZeddedddd f fd            Zededddddd f fd            Z xZS )EncryptedPassportElementa  
    Contains information about documents or other Telegram Passport elements shared with the bot
    by the user. The data has been automatically decrypted by python-telegram-bot.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal, if their :attr:`type`, :attr:`data`, :attr:`phone_number`, :attr:`email`,
    :attr:`files`, :attr:`front_side`, :attr:`reverse_side` and :attr:`selfie` are equal.

    Note:
        This object is decrypted only when originating from
        :attr:`telegram.PassportData.decrypted_data`.

    Args:
        type (:obj:`str`): Element type. One of "personal_details", "passport", "driver_license",
            "identity_card", "internal_passport", "address", "utility_bill", "bank_statement",
            "rental_agreement", "passport_registration", "temporary_registration", "phone_number",
            "email".
        hash (:obj:`str`): Base64-encoded element hash for using in
            :class:`telegram.PassportElementErrorUnspecified`.
        data (:class:`telegram.PersonalDetails` | :class:`telegram.IdDocumentData` |             :class:`telegram.ResidentialAddress` | :obj:`str`, optional):
            Decrypted or encrypted data; available only for "personal_details", "passport",
            "driver_license", "identity_card", "internal_passport" and "address" types.
        phone_number (:obj:`str`, optional): User's verified phone number; available only for
            "phone_number" type.
        email (:obj:`str`, optional): User's verified email address; available only for "email"
            type.
        files (Sequence[:class:`telegram.PassportFile`], optional): Array of encrypted/decrypted
            files with documents provided by the user; available only for "utility_bill",
            "bank_statement", "rental_agreement", "passport_registration" and
            "temporary_registration" types.

            .. versionchanged:: 20.0
                |sequenceclassargs|

        front_side (:class:`telegram.PassportFile`, optional): Encrypted/decrypted file with the
            front side of the document, provided by the user; Available only for "passport",
            "driver_license", "identity_card" and "internal_passport".
        reverse_side (:class:`telegram.PassportFile`, optional): Encrypted/decrypted file with the
            reverse side of the document, provided by the user; Available only for
            "driver_license" and "identity_card".
        selfie (:class:`telegram.PassportFile`, optional): Encrypted/decrypted file with the
            selfie of the user holding a document, provided by the user; available if requested for
            "passport", "driver_license", "identity_card" and "internal_passport".
        translation (Sequence[:class:`telegram.PassportFile`], optional): Array of
            encrypted/decrypted files with translated versions of documents provided by the user;
            available if requested requested for "passport", "driver_license", "identity_card",
            "internal_passport", "utility_bill", "bank_statement", "rental_agreement",
            "passport_registration" and "temporary_registration" types.

            .. versionchanged:: 20.0
                |sequenceclassargs|

    Attributes:
        type (:obj:`str`): Element type. One of "personal_details", "passport", "driver_license",
            "identity_card", "internal_passport", "address", "utility_bill", "bank_statement",
            "rental_agreement", "passport_registration", "temporary_registration", "phone_number",
            "email".
        hash (:obj:`str`): Base64-encoded element hash for using in
            :class:`telegram.PassportElementErrorUnspecified`.
        data (:class:`telegram.PersonalDetails` | :class:`telegram.IdDocumentData` |             :class:`telegram.ResidentialAddress` | :obj:`str`):
            Optional. Decrypted or encrypted data; available only for "personal_details",
            "passport", "driver_license", "identity_card", "internal_passport" and "address" types.
        phone_number (:obj:`str`): Optional. User's verified phone number; available only for
            "phone_number" type.
        email (:obj:`str`): Optional. User's verified email address; available only for "email"
            type.
        files (tuple[:class:`telegram.PassportFile`]): Optional. Array of encrypted/decrypted
            files with documents provided by the user; available only for "utility_bill",
            "bank_statement", "rental_agreement", "passport_registration" and
            "temporary_registration" types.

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|

        front_side (:class:`telegram.PassportFile`): Optional. Encrypted/decrypted file with the
            front side of the document, provided by the user; available only for "passport",
            "driver_license", "identity_card" and "internal_passport".
        reverse_side (:class:`telegram.PassportFile`): Optional. Encrypted/decrypted file with the
            reverse side of the document, provided by the user; available only for "driver_license"
            and "identity_card".
        selfie (:class:`telegram.PassportFile`): Optional. Encrypted/decrypted file with the
            selfie of the user holding a document, provided by the user; available if requested for
            "passport", "driver_license", "identity_card" and "internal_passport".
        translation (tuple[:class:`telegram.PassportFile`]): Optional. Array of
            encrypted/decrypted files with translated versions of documents provided by the user;
            available if requested for "passport", "driver_license", "identity_card",
            "internal_passport", "utility_bill", "bank_statement", "rental_agreement",
            "passport_registration" and "temporary_registration" types.

            .. versionchanged:: 20.0

                * |tupleclassattrs|
                * |alwaystuple|

    )
dataemailfiles
front_sidehashphone_numberreverse_sideselfietranslationtypeN
api_kwargsr   r   r   r   r   r   r   r   r   r   r!   c                   t                                          |           || _        || _        || _        || _        t          |          | _        || _        || _	        |	| _
        t          |
          | _        || _        | j        | j        | j        | j        | j        | j        | j	        | j
        f| _        |                                  d S )Nr    )super__init__r   r   r   r   r   r   r   r   r   r   r   	_id_attrs_freeze)selfr   r   r   r   r   r   r   r   r   r   r!   	__class__s               l/usr/local/lib/hermes-agent/venv/lib/python3.11/site-packages/telegram/_passport/encryptedpassportelement.pyr$   z!EncryptedPassportElement.__init__   s     	J/// 	RV	(4!&
/A%/H/H
/91=+15G5T5T	 IIJJOK	
 	    botz
Bot | Nonereturnc                 4   |                      |          }t          |                    d          t          |          pd|d<   t	          |                    d          t          |          |d<   t	          |                    d          t          |          |d<   t	          |                    d          t          |          |d<   t          |                    d          t          |          pd|d<   t                                          ||          S )z,See :meth:`telegram.TelegramObject.de_json`.r   Nr   r   r   r   r   r+   )_parse_datar   getr
   r   r#   de_json)clsr   r+   r(   s      r)   r1   z EncryptedPassportElement.de_json   s     t$$('):):L#NNVRVW-dhh|.D.DlTWXX\/0H0H,X[\\^)$((8*<*<lCPPX.txx/F/FVYZZb^b]wwDc222r*   credentialsr   c                    |d         dvrt          |j        |d                   }|j        t          |d         t                    sUt          t          |j        j                  t          |j        j                  t          |d                             |d<   |d         dk    r t          j
        |d         |          |d<   nU|d         dv r t          j
        |d         |          |d<   n+|d         dk    rt          j
        |d         |          |d<   t          |                    d	          t          ||j                  pd|d	<   t#          |                    d
          t          ||j                  |d
<   t#          |                    d          t          ||j                  |d<   t#          |                    d          t          ||j                  |d<   t          |                    d          t          ||j                  pd|d<   t-                      
                    ||          S )a  Variant of :meth:`telegram.TelegramObject.de_json` that also takes into account
        passport credentials.

        Args:
            data (dict[:obj:`str`, ...]): The JSON data.
            bot (:class:`telegram.Bot` | :obj:`None`): The bot associated with these object.
                May be :obj:`None`, in which case shortcut methods will not be available.

                .. versionchanged:: 21.4
                   :paramref:`bot` is now optional and defaults to :obj:`None`

                .. deprecated:: 21.4
                   This argument will be converted to an optional argument in future versions.
            credentials (:class:`telegram.FileCredentials`): The credentials

        Returns:
            :class:`telegram.EncryptedPassportElement`:

        r   )r   r   Nr   personal_details)r+   )passportinternal_passportdriver_licenseidentity_cardaddressr   r   r   r   r   r.   )getattrsecure_datar   
isinstancedictr   r   secretr   r   r1   r   r	   r   r0   r
   r   r   r   r   r   r   r#   )r2   r   r+   r3   r<   r(   s        r)   de_json_decryptedz*EncryptedPassportElement.de_json_decrypted   s7   0 <888!+"94<HHK+!$v,55 #/!+"2"9::!+"2"788!$v,//$ $DL
 <#555#2#:4<S#Q#Q#QDLL&\ &   $2#9$v,C#P#P#PDLL&\Y..#5#=d6lPS#T#T#TDL +488G+<+<lCQ\Qbcc  M "<&&c;;Q" "D $>((,[=U$ $D  8""L#{7I DN +HH]++\3@W   	  wwDc222r*   )NNNNNNNN)N)__name__
__module____qualname____doc__	__slots__strr   r   r	   r   r
   r   r$   classmethodr1   r@   __classcell__)r(   s   @r)   r   r   )   s       b bHI" NR#' /3*.,0&*59) '+) ) )) ) .1CCdJ	)
 Dj) Tz) %,) !4') #T)) t#) l+d2) tO) ) ) ) ) )V 
3 
38 
3, 
3B\ 
3 
3 
3 
3 
3 [
3 B3B3".B3=JB3	#B3 B3 B3 B3 B3 [B3 B3 B3 B3 B3r*   r   N)rD   base64r   collections.abcr   typingr   telegram._passport.credentialsr   telegram._passport.datar   r   r	   telegram._passport.passportfiler
   telegram._telegramobjectr   telegram._utils.argumentparsingr   r   r   r   r   telegram._utils.typesr   telegramr   r   r    r*   r)   <module>rT      sP  $ Z Y       $ $ $ $ $ $             7 7 7 7 7 7 W W W W W W W W W W 8 8 8 8 8 8 3 3 3 3 3 3              + * * * * * *))))))))m3 m3 m3 m3 m3~ m3 m3 m3 m3 m3r*   