
    5ie                     >   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rddlmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z  G d de      Z!y)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                   \     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z  f fdZ	 x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                P   t         |   |       || _        || _        || _        t        |      | _        || _        t        |      | _        | j                  | j                  | j                  | j                  | j                  | j                  f| _	        | j                          y Nr   )super__init__r   r   r   r   r   r   r   	_id_attrs_freeze)	selfr   r   r   r   r   r   r   	__class__s	           R/var/www/app/trading-bot/venv/lib/python3.12/site-packages/telegram/_uniquegift.pyr   zUniqueGiftColors.__init__P   s     	J/*?"+A#+A#9K$:
% +@"8JKb8c$ &&''''))&&((
 	    )__name__
__module____qualname____doc__	__slots__strintr   r   r   __classcell__r"   s   @r#   r   r   '   sn    >I$ '+" !$ !$	
 #+3-  # "*# tO r$   r   c                   v     e Zd ZdZdZ	 ddddededededz  d	edz  f
 fd
Z	e
ddedddd f fd       Z x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   r0   r3   r2   r1   r   c                   t         |   |       || _        || _        || _        t        j                  t        j                  ||      | _	        | j                  | j                  | j                  f| _
        | j                          y r   )r   r   r0   r3   r2   r
   
get_memberr   UniqueGiftModelRarityr1   r   r    )r!   r0   r3   r2   r1   r   r"   s         r#   r   zUniqueGiftModel.__init__   sl     	J/	 '%5"&//)2Q2QSY[a"b))T\\43H3HIr$   databot
Bot | Nonereturnc                     | j                  |      }t        |j                  d      t        |      |d<   t        |   ||      S ,See :meth:`telegram.TelegramObject.de_json`.r3   r7   r8   _parse_datar   getr   r   de_jsonclsr7   r8   r"   s      r#   rB   zUniqueGiftModel.de_json   A     t$*488I+>MYwDc22r$   Nr%   r&   r'   r(   r)   r*   r   r+   r   r   classmethodrB   r,   r-   s   @r#   r/   r/   q   s     DI " '+  	
 d
 tO* 38 3, 3BS 3 3r$   r/   c            
       h     e Zd ZdZdZdddededededz  f fd	Z	e
dd
edddd f fd       Z x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.

    )r0   r2   r3   Nr   r0   r3   r2   r   c                    t         |   |       || _        || _        || _        | j                  | j                  | j                  f| _        | j                          y r   )r   r   r0   r3   r2   r   r    )r!   r0   r3   r2   r   r"   s        r#   r   zUniqueGiftSymbol.__init__   sP     	J/	 '%5))T\\43H3HIr$   r7   r8   r9   r:   c                     | j                  |      }t        |j                  d      t        |      |d<   t        |   ||      S r<   r?   rC   s      r#   rB   zUniqueGiftSymbol.de_json   rE   r$   rF   rG   r-   s   @r#   rJ   rJ      sm    *I '+  	 tO" 38 3, 3BT 3 3r$   rJ   c                   H     e Zd ZdZdZdddedededed	edz  f
 fd
Z x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   rO   rP   rQ   rR   r   c                    t         |   |       || _        || _        || _        || _        | j                  | j                  | j                  | j
                  f| _        | j                          y r   )r   r   rO   rP   rQ   rR   r   r    )r!   rO   rP   rQ   rR   r   r"   s         r#   r   z!UniqueGiftBackdropColors.__init__  sc     	J/!-)!-)++T__d>O>OQUQ`Q`ar$   )	r%   r&   r'   r(   r)   r+   r   r   r,   r-   s   @r#   rN   rN      sR    ,I '+  	
  tO r$   rN   c            
       h     e Zd ZdZdZdddededededz  f fd	Z	e
dd
edddd f fd       Z xZS )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.

    )colorsr0   r2   Nr   r0   rV   r2   r   c                    t         |   |       || _        || _        || _        | j                  | j                  | j                  f| _        | j                          y r   )r   r   r0   rV   r2   r   r    )r!   r0   rV   r2   r   r"   s        r#   r   zUniqueGiftBackdrop.__init__?  sP     	J/	06%5))T[[$2G2GHr$   r7   r8   r9   r:   c                     | j                  |      }t        |j                  d      t        |      |d<   t        |   ||      S )r=   rV   r>   )r@   r   rA   rN   r   rB   rC   s      r#   rB   zUniqueGiftBackdrop.de_jsonP  sC     t$)$((8*<>VX[\XwDc22r$   rF   )r%   r&   r'   r(   r)   r*   rN   r+   r   r   rH   rB   r,   r-   s   @r#   rU   rU   #  sm    *I '+ ) 	 tO" 38 3, 3BV 3 3r$   rU   c                        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z  dedz  dedz  dedz  dedz  dedz  f fdZeddedddd f fd       Z x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_namerV   gift_id	is_burnedis_from_blockchain
is_premiummodelr0   numberpublisher_chatsymbolNr   r]   r\   r0   rb   ra   rd   r[   rc   r_   r`   rV   r^   r   c                   t         |   |       || _        || _        || _        || _        || _        || _        || _        || _	        |	| _
        |
| _        || _        || _        | j                  | j                  | j
                  | j                  | j                  | j                  f| _        | j                          y r   )r   r   r]   r\   r0   rb   ra   rd   r[   rc   r_   r`   rV   r^   r   r    )r!   r]   r\   r0   rb   ra   rd   r[   rc   r_   r`   rV   r^   r   r"   s                 r#   r   zUniqueGift.__init__  s    " 	J/#'	!&+
(.,4+9/A'1/5&/ NNIIKKJJKKMM
 	r$   r7   r8   r9   r:   c                    | j                  |      }t        |j                  d      t        |      |d<   t        |j                  d      t        |      |d<   t        |j                  d      t
        |      |d<   t        |j                  d      t        |      |d<   t        |j                  d      t        |      |d<   t        | %  ||      S )r=   ra   rd   r[   rc   rV   r>   )
r@   r   rA   r/   rJ   rU   r   r   r   rB   rC   s      r#   rB   zUniqueGift.de_json  s     t$('):OSQW)$((8*<>NPSTX+DHHZ,@BTVYZZ!1$((;K2LdTW!X)$((8*<>NPSTXwDc22r$   NNNNNrF   )r%   r&   r'   r(   r)   r*   r+   r/   rJ   rU   r   boolr   r   r   rH   rB   r,   r-   s   @r#   rZ   rZ   Z  s    PdI0 '+*."&*.!%( '+(( ( 	(
 ( ( !( %( t( !4K( 4K( !4'( $;( tO(T 
38 
3, 
3, 
3 
3r$   rZ   c                       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z  dedz  dej$                  dz  dedz  dedz  dedz  f fdZeddedddd f fd       Z x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   rp   rt   ru   rv   rs   rr   rq   r   c                (   t         	|   |       || _        t        j                  t
        j                  ||      | _        || _        || _	        || _
        || _        || _        | j                  | j                  f| _        | j                          y r   )r   r   rp   r
   r5   r   UniqueGiftInfoOriginrt   ru   rv   rs   rr   rq   r   r    )
r!   rp   rt   ru   rv   rs   rr   rq   r   r"   s
            r#   r   zUniqueGiftInfo.__init__\  s|     	J/ $	??9+I+I6SYZ)6/B 7I0D!.@))T[[1r$   r7   r8   r9   r:   c                     | j                  |      }t        |      }t        |j                  d      t        |      |d<   t        |j                  d      |      |d<   t        |   ||      S )r=   rp   rs   )tzinfor>   )r@   r   r   rA   rZ   r   r   rB   )rD   r7   r8   
loc_tzinfor"   s       r#   rB   zUniqueGiftInfo.de_jsonw  sl     t$1#6
'(8*cJV%3HH)*:&
!" wDc22r$   rg   rF   )r%   r&   r'   r(   r   rx   rk   r   r*   __annotations__rl   rm   rn   ro   r)   rZ   r+   dtmdatetimer   r   rH   rB   r,   r-   s   @r#   rj   rj     se   GR "+!?!?!N!NNE#JN "66<<E5:< #77>>FE#J> %99BBHeCjBC#88@@GU3Z@BI %)*.26+/)- '+  Tz	
 !4Z  LL4/ "Dj  $J tO6 
38 
3, 
3BR 
3 
3r$   rj   )"r(   r~   r}   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/   rJ   rN   rU   rZ   rj    r$   r#   <module>r      s   ( ;  $ '   + 3   P Q *G~ GTF3n F3R43~ 43n/~ /d43 43nW3 W3tN3^ N3r$   