o
    Zzje  ã                   @   s  d Z ddlZddlmZ ddlmZm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 dd
lmZmZ ddlmZmZ ddlmZ erPddlmZ G dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZG dd„ deƒZ G dd„ deƒZ!dS )z4This module contains classes related to unique gifs.é    N)ÚSequence)ÚTYPE_CHECKINGÚFinal)Ú	constants)ÚChat)ÚSticker)ÚTelegramObject)Úenum)Úde_json_optionalÚparse_sequence_arg)Úextract_tzinfo_from_defaultsÚfrom_timestamp)ÚJSONDict)ÚBotc                       sT   e Zd ZdZdZddœdedededee d	ed
ee dedB f‡ fdd„Z	‡  Z
S )ÚUniqueGiftColorsa4  This object contains information about the color scheme for a user's name, message replies
    and link previews based on a unique gift.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`model_custom_emoji_id`, :attr:`symbol_custom_emoji_id`,
    :attr:`light_theme_main_color`, :attr:`light_theme_other_colors`,
    :attr:`dark_theme_main_color`, and :attr:`dark_theme_other_colors` are equal.

    .. versionadded:: 22.6

    Args:
        model_custom_emoji_id (:obj:`str`): Custom emoji identifier of the unique gift's model.
        symbol_custom_emoji_id (:obj:`str`): Custom emoji identifier of the unique gift's symbol.
        light_theme_main_color (:obj:`int`): Main color used in light themes; RGB format.
        light_theme_other_colors (Sequence[:obj:`int`]): List of 1-3 additional colors used in
            light themes; RGB format. |sequenceclassargs|
        dark_theme_main_color (:obj:`int`): Main color used in dark themes; RGB format.
        dark_theme_other_colors (Sequence[:obj:`int`]): List of 1-3 additional colors used in dark
            themes; RGB format. |sequenceclassargs|

    Attributes:
        model_custom_emoji_id (:obj:`str`): Custom emoji identifier of the unique gift's model.
        symbol_custom_emoji_id (:obj:`str`): Custom emoji identifier of the unique gift's symbol.
        light_theme_main_color (:obj:`int`): Main color used in light themes; RGB format.
        light_theme_other_colors (Tuple[:obj:`int`]): Tuple of 1-3 additional colors used in
            light themes; RGB format.
        dark_theme_main_color (:obj:`int`): Main color used in dark themes; RGB format.
        dark_theme_other_colors (Tuple[:obj:`int`]): Tuple of 1-3 additional colors used in dark
            themes; RGB format.
    )Údark_theme_main_colorÚdark_theme_other_colorsÚlight_theme_main_colorÚlight_theme_other_colorsÚmodel_custom_emoji_idÚsymbol_custom_emoji_idN©Ú
api_kwargsr   r   r   r   r   r   r   c                   sd   t ƒ j|d� || _|| _|| _t|ƒ| _|| _t|ƒ| _| j| j| j| j| j| jf| _	|  
¡  d S ©Nr   )ÚsuperÚ__init__r   r   r   r   r   r   r   Ú	_id_attrsÚ_freeze)Úselfr   r   r   r   r   r   r   ©Ú	__class__© úO/var/www/kodo/tsheker/venv/lib/python3.10/site-packages/telegram/_uniquegift.pyr   P   s"   ÿ
ú	zUniqueGiftColors.__init__)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__ÚstrÚintr   r   r   Ú__classcell__r!   r!   r   r"   r   '   s&    ÷þýüûúù	÷r   c                       sl   e Zd ZdZdZ	dddœdededededB d	edB f
‡ fd
d„Z	e
ddedddd f‡ fdd„ƒZ‡  ZS )ÚUniqueGiftModelaø  This object describes the model of a unique gift.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`name`, :attr:`sticker` and :attr:`rarity_per_mille` are equal.

    .. versionadded:: 22.1

    Args:
        name (:obj:`str`): Name of the model.
        sticker (:class:`telegram.Sticker`): The sticker that represents the unique gift.
        rarity_per_mille (:obj:`int`): The number of unique gifts that receive this
            model for every ``1000`` gifts upgraded. Always ``0`` for crafted gifts.
        rarity (:obj:`str`, optional): Rarity of the model if it is a crafted model.
            Currently, can be :tg-const:`telegram.constants.UniqueGiftModelRarity.UNCOMMON`,
            :tg-const:`telegram.constants.UniqueGiftModelRarity.RARE`,
            :tg-const:`telegram.constants.UniqueGiftModelRarity.EPIC`,
            or :tg-const:`telegram.constants.UniqueGiftModelRarity.LEGENDARY`.

            .. versionadded:: 22.7

    Attributes:
        name (:obj:`str`): Name of the model.
        sticker (:class:`telegram.Sticker`): The sticker that represents the unique gift.
        rarity_per_mille (:obj:`int`): The number of unique gifts that receive this
            model for every ``1000`` gifts upgraded. Always ``0`` for crafted gifts.
        rarity (:obj:`str`): Optional. Rarity of the model if it is a crafted model.
            Currently, can be :tg-const:`telegram.constants.UniqueGiftModelRarity.UNCOMMON`,
            :tg-const:`telegram.constants.UniqueGiftModelRarity.RARE`,
            :tg-const:`telegram.constants.UniqueGiftModelRarity.EPIC`,
            or :tg-const:`telegram.constants.UniqueGiftModelRarity.LEGENDARY`.

            .. versionadded:: 22.7
    )ÚnameÚrarityÚrarity_per_milleÚstickerNr   r,   r/   r.   r-   r   c                   sP   t ƒ j|d� || _|| _|| _t tj||¡| _	| j| j| jf| _
|  ¡  d S r   )r   r   r,   r/   r.   r	   Ú
get_memberr   ÚUniqueGiftModelRarityr-   r   r   )r   r,   r/   r.   r-   r   r   r!   r"   r   ›   s   	zUniqueGiftModel.__init__ÚdataÚbotú
Bot | NoneÚreturnc                    ó0   |   |¡}t| d¡t|ƒ|d< tƒ j||d�S ©ú,See :meth:`telegram.TelegramObject.de_json`.r/   ©r2   r3   ©Ú_parse_datar
   Úgetr   r   Úde_json©Úclsr2   r3   r   r!   r"   r=   °   ó   
zUniqueGiftModel.de_json©N©r#   r$   r%   r&   r'   r(   r   r)   r   r   Úclassmethodr=   r*   r!   r!   r   r"   r+   q   s&    "ûùþýüûù&r+   c                
       ó`   e Zd ZdZdZddœdededededB f‡ fd	d
„Z	e
ddedddd f‡ fdd„ƒZ‡  ZS )ÚUniqueGiftSymbolak  This object describes the symbol shown on the pattern of a unique gift.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`name`, :attr:`sticker` and :attr:`rarity_per_mille` are equal.

    .. versionadded:: 22.1

    Args:
        name (:obj:`str`): Name of the symbol.
        sticker (:class:`telegram.Sticker`): The sticker that represents the unique gift.
        rarity_per_mille (:obj:`int`): The number of unique gifts that receive this
            model for every ``1000`` gifts upgraded.

    Attributes:
        name (:obj:`str`): Name of the symbol.
        sticker (:class:`telegram.Sticker`): The sticker that represents the unique gift.
        rarity_per_mille (:obj:`int`): The number of unique gifts that receive this
            model for every ``1000`` gifts upgraded.

    )r,   r.   r/   Nr   r,   r/   r.   r   c                   ó>   t ƒ j|d� || _|| _|| _| j| j| jf| _|  ¡  d S r   )r   r   r,   r/   r.   r   r   )r   r,   r/   r.   r   r   r!   r"   r   Ö   ó   zUniqueGiftSymbol.__init__r2   r3   r4   r5   c                    r6   r7   r:   r>   r   r!   r"   r=   ç   r@   zUniqueGiftSymbol.de_jsonrA   rB   r!   r!   r   r"   rE   º   ó    úþýüú&rE   c                       sD   e Zd ZdZdZddœdedededed	edB f
‡ fd
d„Z‡  ZS )ÚUniqueGiftBackdropColorsa"  This object describes the colors of the backdrop of a unique gift.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`center_color`, :attr:`edge_color`, :attr:`symbol_color`,
    and :attr:`text_color` are equal.

    .. versionadded:: 22.1

    Args:
        center_color (:obj:`int`): The color in the center of the backdrop in RGB format.
        edge_color (:obj:`int`): The color on the edges of the backdrop in RGB format.
        symbol_color (:obj:`int`): The color to be applied to the symbol in RGB format.
        text_color (:obj:`int`): The color for the text on the backdrop in RGB format.

    Attributes:
        center_color (:obj:`int`): The color in the center of the backdrop in RGB format.
        edge_color (:obj:`int`): The color on the edges of the backdrop in RGB format.
        symbol_color (:obj:`int`): The color to be applied to the symbol in RGB format.
        text_color (:obj:`int`): The color for the text on the backdrop in RGB format.

    )Úcenter_colorÚ
edge_colorÚsymbol_colorÚ
text_colorNr   rJ   rK   rL   rM   r   c                   sH   t ƒ j|d� || _|| _|| _|| _| j| j| j| jf| _|  ¡  d S r   )r   r   rJ   rK   rL   rM   r   r   )r   rJ   rK   rL   rM   r   r   r!   r"   r     s   	z!UniqueGiftBackdropColors.__init__)	r#   r$   r%   r&   r'   r)   r   r   r*   r!   r!   r   r"   rI   ñ   s    ùþýüûùrI   c                
       rD   )ÚUniqueGiftBackdropaX  This object describes the backdrop of a unique gift.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`name`, :attr:`colors`, and :attr:`rarity_per_mille` are equal.

    .. versionadded:: 22.1

    Args:
        name (:obj:`str`): Name of the backdrop.
        colors (:class:`telegram.UniqueGiftBackdropColors`): Colors of the backdrop.
        rarity_per_mille (:obj:`int`): The number of unique gifts that receive this backdrop
            for every ``1000`` gifts upgraded.

    Attributes:
        name (:obj:`str`): Name of the backdrop.
        colors (:class:`telegram.UniqueGiftBackdropColors`): Colors of the backdrop.
        rarity_per_mille (:obj:`int`): The number of unique gifts that receive this backdrop
            for every ``1000`` gifts upgraded.

    )Úcolorsr,   r.   Nr   r,   rO   r.   r   c                   rF   r   )r   r   r,   rO   r.   r   r   )r   r,   rO   r.   r   r   r!   r"   r   ?  rG   zUniqueGiftBackdrop.__init__r2   r3   r4   r5   c                    r6   )r8   rO   r9   )r;   r
   r<   rI   r   r=   r>   r   r!   r"   r=   P  r@   zUniqueGiftBackdrop.de_jsonrA   )r#   r$   r%   r&   r'   r(   rI   r)   r   r   rC   r=   r*   r!   r!   r   r"   rN   #  rH   rN   c                       s¤   e Zd ZdZdZ					dddœdedededed	ed
ede	de
dB dedB dedB dedB dedB dedB f‡ fdd„Zeddedddd f‡ fdd„ƒZ‡  ZS )Ú
UniqueGifta©  This object describes a unique gift that was upgraded from a regular gift.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`base_name`, :attr:`name`, :attr:`number`, :class:`model`,
    :attr:`symbol`, and :attr:`backdrop` are equal.

    .. versionadded:: 22.1

    .. versionchanged:: 22.7
        :attr:`gift_id` is now a positional argument.

    Args:
        gift_id (:obj:`str`): Identifier of the regular gift from which the gift was upgraded.

            .. versionadded:: 22.6
        base_name (:obj:`str`): Human-readable name of the regular gift from which this unique
            gift was upgraded.
        name (:obj:`str`): Unique name of the gift. This name can be used
            in ``https://t.me/nft/...`` links and story areas.
        number (:obj:`int`): Unique number of the upgraded gift among gifts upgraded from the
            same regular gift.
        model (:class:`UniqueGiftModel`): Model of the gift.
        symbol (:class:`UniqueGiftSymbol`): Symbol of the gift.
        backdrop (:class:`UniqueGiftBackdrop`): Backdrop of the gift.
        publisher_chat (:class:`telegram.Chat`, optional): Information about the chat that
            published the gift.

            .. versionadded:: 22.4
        is_premium (:obj:`bool`, optional): :obj:`True`, if the original regular gift was
            exclusively purchaseable by Telegram Premium subscribers.

            .. versionadded:: 22.6
        is_from_blockchain (:obj:`bool`, optional): :obj:`True`, if the gift is assigned from the
            TON blockchain and can't be resold or transferred in Telegram.

            .. versionadded:: 22.6
        colors (:class:`telegram.UniqueGiftColors`, optional): The color scheme that can be used
            by the gift's owner for the chat's name, replies to messages and link previews; for
            business account gifts and gifts that are currently on sale only.

            .. versionadded:: 22.6
        is_burned (:obj:`bool`, optional): :obj:`True`, if the gift was used to craft another
            gift and isn't available anymore.

            .. versionadded:: 22.7

    Attributes:
        gift_id (:obj:`str`): Identifier of the regular gift from which the gift was upgraded.

            .. versionadded:: 22.6
        base_name (:obj:`str`): Human-readable name of the regular gift from which this unique
            gift was upgraded.
        name (:obj:`str`): Unique name of the gift. This name can be used
            in ``https://t.me/nft/...`` links and story areas.
        number (:obj:`int`): Unique number of the upgraded gift among gifts upgraded from the
            same regular gift.
        model (:class:`telegram.UniqueGiftModel`): Model of the gift.
        symbol (:class:`telegram.UniqueGiftSymbol`): Symbol of the gift.
        backdrop (:class:`telegram.UniqueGiftBackdrop`): Backdrop of the gift.
        publisher_chat (:class:`telegram.Chat`): Optional. Information about the chat that
            published the gift.

            .. versionadded:: 22.4
        is_premium (:obj:`bool`): Optional. :obj:`True`, if the original regular gift was
            exclusively purchaseable by Telegram Premium subscribers.

            .. versionadded:: 22.6
        is_from_blockchain (:obj:`bool`): Optional. :obj:`True`, if the gift is assigned from the
            TON blockchain and can't be resold or transferred in Telegram.

            .. versionadded:: 22.6
        colors (:class:`telegram.UniqueGiftColors`): Optional. The color scheme that can be used
            by the gift's owner for the chat's name, replies to messages and link previews; for
            business account gifts and gifts that are currently on sale only.

            .. versionadded:: 22.6
        is_burned (:obj:`bool`): Optional. :obj:`True`, if the gift was used to craft another
            gift and isn't available anymore.

            .. versionadded:: 22.7
    )ÚbackdropÚ	base_namerO   Úgift_idÚ	is_burnedÚis_from_blockchainÚ
is_premiumÚmodelr,   ÚnumberÚpublisher_chatÚsymbolNr   rS   rR   r,   rX   rW   rZ   rQ   rY   rU   rV   rO   rT   r   c                   s€   t ƒ j|d� || _|| _|| _|| _|| _|| _|| _|| _	|	| _
|
| _|| _|| _| j| j| j| j| j| jf| _|  ¡  d S r   )r   r   rS   rR   r,   rX   rW   rZ   rQ   rY   rU   rV   rO   rT   r   r   )r   rS   rR   r,   rX   rW   rZ   rQ   rY   rU   rV   rO   rT   r   r   r!   r"   r   ¼  s*   ú	zUniqueGift.__init__r2   r3   r4   r5   c                    sˆ   |   |¡}t| d¡t|ƒ|d< t| d¡t|ƒ|d< t| d¡t|ƒ|d< t| d¡t|ƒ|d< t| d¡t|ƒ|d< tƒ j	||d�S )r8   rW   rZ   rQ   rY   rO   r9   )
r;   r
   r<   r+   rE   rN   r   r   r   r=   r>   r   r!   r"   r=   æ  s   
zUniqueGift.de_json©NNNNNrA   )r#   r$   r%   r&   r'   r(   r)   r+   rE   rN   r   Úboolr   r   r   rC   r=   r*   r!   r!   r   r"   rP   Z  sN    Róñþýüûúùø	÷
öõôóñ*&rP   c                       s  e Zd ZU dZejjZee e	d< 	 ejj
Z
ee e	d< 	 ejjZee e	d< 	 ejjZee e	d< 	 ejjZee e	d< 	 dZ					ddd	œd
edededB dedB dejdB dedB dedB dedB f‡ fdd„Zeddedddd f‡ fdd„ƒZ‡  ZS )ÚUniqueGiftInfoa�  Describes a service message about a unique gift that was sent or received.

    Objects of this class are comparable in terms of equality. Two objects of this class are
    considered equal if their :attr:`gift`, and :attr:`origin` are equal.

    .. versionadded:: 22.1

    .. versionremoved:: 22.7
        Removed argument and attribute ``last_resale_star_count`` deprecated since Bot API 9.3.

    Args:
        gift (:class:`UniqueGift`): Information about the gift.
        origin (:obj:`str`): Origin of the gift. Currently, either :attr:`UPGRADE` for gifts
            upgraded from regular gifts, :attr:`TRANSFER` for gifts transferred from other users
            or channels, :attr:`RESALE` for gifts bought from other users,
            :attr:`GIFTED_UPGRADE` for upgrades purchased after the gift was sent, or :attr:`OFFER`
            for gifts bought or sold through gift purchase offers

            .. versionchanged:: 22.3
                The :attr:`RESALE` origin was added.
            .. versionchanged:: 22.6
                Bot API 9.3 added the :attr:`GIFTED_UPGRADE` and :attr:`OFFER` origins.
        owned_gift_id (:obj:`str`, optional) Unique identifier of the received gift for the
            bot; only present for gifts received on behalf of business accounts.
        transfer_star_count (:obj:`int`, optional): Number of Telegram Stars that must be paid
            to transfer the gift; omitted if the bot cannot transfer the gift.
        last_resale_currency (:obj:`str`, optional): For gifts bought from other users, the
            currency in which the payment for the gift was done. Currently, one of ``XTR`` for
            Telegram Stars or ``TON`` for toncoins.

            .. versionadded:: 22.6
        last_resale_amount (:obj:`int`, optional): For gifts bought from other users, the price
            paid for the gift in either Telegram Stars or nanotoncoins.

            .. versionadded:: 22.6
        next_transfer_date (:obj:`datetime.datetime`, optional): Date when the gift can be
            transferred. If it's in the past, then the gift can be transferred now.
            |datetime_localization|

            .. versionadded:: 22.3

    Attributes:
        gift (:class:`UniqueGift`): Information about the gift.
        origin (:obj:`str`): Origin of the gift. Currently, either :attr:`UPGRADE` for gifts
            upgraded from regular gifts, :attr:`TRANSFER` for gifts transferred from other users
            or channels, :attr:`RESALE` for gifts bought from other users,
            :attr:`GIFTED_UPGRADE` for upgrades purchased after the gift was sent, or :attr:`OFFER`
            for gifts bought or sold through gift purchase offers

            .. versionchanged:: 22.3
                The :attr:`RESALE` origin was added.
            .. versionchanged:: 22.6
                Bot API 9.3 added the :attr:`GIFTED_UPGRADE` and :attr:`OFFER` origins.
        owned_gift_id (:obj:`str`) Optional. Unique identifier of the received gift for the
            bot; only present for gifts received on behalf of business accounts.
        transfer_star_count (:obj:`int`): Optional. Number of Telegram Stars that must be paid
            to transfer the gift; omitted if the bot cannot transfer the gift.
        last_resale_currency (:obj:`str`): Optional. For gifts bought from other users, the
            currency in which the payment for the gift was done. Currently, one of ``XTR`` for
            Telegram Stars or ``TON`` for toncoins.

            .. versionadded:: 22.6
        last_resale_amount (:obj:`int`): Optional. For gifts bought from other users, the price
            paid for the gift in either Telegram Stars or nanotoncoins.

            .. versionadded:: 22.6
        next_transfer_date (:obj:`datetime.datetime`): Optional. Date when the gift can be
            transferred. If it's in the past, then the gift can be transferred now.
            |datetime_localization|

            .. versionadded:: 22.3
    ÚGIFTED_UPGRADEÚOFFERÚRESALEÚTRANSFERÚUPGRADE)ÚgiftÚlast_resale_amountÚlast_resale_currencyÚnext_transfer_dateÚoriginÚowned_gift_idÚtransfer_star_countNr   rc   rg   rh   ri   rf   re   rd   r   c          	         s^   t ƒ j|d� || _t tj||¡| _|| _|| _	|| _
|| _|| _| j| jf| _|  ¡  d S r   )r   r   rc   r	   r0   r   ÚUniqueGiftInfoOriginrg   rh   ri   rf   re   rd   r   r   )	r   rc   rg   rh   ri   rf   re   rd   r   r   r!   r"   r   \  s   zUniqueGiftInfo.__init__r2   r3   r4   r5   c                    sN   |   |¡}t|ƒ}t| d¡t|ƒ|d< t| d¡|d�|d< tƒ j||d�S )r8   rc   rf   )Útzinfor9   )r;   r   r
   r<   rP   r   r   r=   )r?   r2   r3   Ú
loc_tzinfor   r!   r"   r=   w  s   


ÿzUniqueGiftInfo.de_jsonr[   rA   )r#   r$   r%   r&   r   rj   r^   r   r(   Ú__annotations__r_   r`   ra   rb   r'   rP   r)   ÚdtmÚdatetimer   r   rC   r=   r*   r!   r!   r   r"   r]   ô  sN   
 Iø
öþýüûúùø
ö&r]   )"r&   ro   rn   Úcollections.abcr   Útypingr   r   Útelegramr   Útelegram._chatr   Útelegram._files.stickerr   Útelegram._telegramobjectr   Útelegram._utilsr	   Útelegram._utils.argumentparsingr
   r   Útelegram._utils.datetimer   r   Útelegram._utils.typesr   r   r   r+   rE   rI   rN   rP   r]   r!   r!   r!   r"   Ú<module>   s,   JI727 