U
    g                     @   sx   d 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mZ erdddlmZ G d	d
 d
eZdS )zKThis module contains an object that represents a Telegram PreCheckoutQuery.    )TYPE_CHECKINGOptional)	OrderInfo)TelegramObject)User)DEFAULT_NONE)JSONDictODVInput)Botc                       s   e Zd ZdZdZdddeeeeeee ee	 ee
 d fddZedee
 ed ed  d	 fd
dZdeeeeddeee ee ee ee ee ee
 edddZ  ZS )PreCheckoutQuerya  This object contains information about an incoming pre-checkout query.

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

    Note:
        In Python :keyword:`from` is a reserved word. Use :paramref:`from_user` instead.

    Args:
        id (:obj:`str`): Unique query identifier.
        from_user (:class:`telegram.User`): User who sent the query.
        currency (:obj:`str`): Three-letter ISO 4217 currency code, or ``XTR`` for payments in
            |tg_stars|.
        total_amount (:obj:`int`): Total price in the smallest units of the currency (integer,
            **not** float/double). For example, for a price of ``US$ 1.45`` pass ``amount = 145``.
            See the ``exp`` parameter in
            `currencies.json <https://core.telegram.org/bots/payments/currencies.json>`_,
            it shows the number of digits past the decimal point for each currency
            (2 for the majority of currencies).
        invoice_payload (:obj:`str`): Bot-specified invoice payload.
        shipping_option_id (:obj:`str`, optional): Identifier of the shipping option chosen by the
            user.
        order_info (:class:`telegram.OrderInfo`, optional): Order info provided by the user.

    Attributes:
        id (:obj:`str`): Unique query identifier.
        from_user (:class:`telegram.User`): User who sent the query.
        currency (:obj:`str`): Three-letter ISO 4217 currency code, or ``XTR`` for payments in
            |tg_stars|.
        total_amount (:obj:`int`): Total price in the smallest units of the currency (integer,
            **not** float/double). For example, for a price of ``US$ 1.45`` pass ``amount = 145``.
            See the ``exp`` parameter in
            `currencies.json <https://core.telegram.org/bots/payments/currencies.json>`_,
            it shows the number of digits past the decimal point for each currency
            (2 for the majority of currencies).
        invoice_payload (:obj:`str`): Bot-specified invoice payload.
        shipping_option_id (:obj:`str`): Optional. Identifier of the shipping option chosen by the
            user.
        order_info (:class:`telegram.OrderInfo`): Optional. Order info provided by the user.


    )currency	from_useridinvoice_payload
order_infoshipping_option_idtotal_amountN
api_kwargs)r   r   r   r   r   r   r   r   c          	         sN   t  j|d || _|| _|| _|| _|| _|| _|| _| jf| _	| 
  d S )Nr   )super__init__r   r   r   r   r   r   r   Z	_id_attrsZ_freeze)	selfr   r   r   r   r   r   r   r   	__class__ F/tmp/pip-unpacked-wheel-swnnwir2/telegram/_payment/precheckoutquery.pyr   W   s    
zPreCheckoutQuery.__init__r
   )databotreturnc                    sP   |  |}|sdS t|dd||d< t|d||d< t j||dS )z,See :meth:`telegram.TelegramObject.de_json`.Nfromr   r   )r   r   )Z_parse_datar   de_jsonpopr   getr   )clsr   r   r   r   r   r    p   s    
zPreCheckoutQuery.de_json)read_timeoutwrite_timeoutconnect_timeoutpool_timeoutr   )okerror_messager$   r%   r&   r'   r   r   c             
      s&   |   j| j|||||||dI dH S )zShortcut for::

             await bot.answer_pre_checkout_query(update.pre_checkout_query.id, *args, **kwargs)

        For the documentation of the arguments, please see
        :meth:`telegram.Bot.answer_pre_checkout_query`.

        )Zpre_checkout_query_idr(   r)   r$   r%   r&   r'   r   N)Zget_botZanswer_pre_checkout_queryr   )r   r(   r)   r$   r%   r&   r'   r   r   r   r   answer   s    zPreCheckoutQuery.answer)NN)N)N)__name__
__module____qualname____doc__	__slots__strr   intr   r   r   r   classmethodr    r   boolr	   floatr*   __classcell__r   r   r   r   r   !   sP   +  
   r   N)r.   typingr   r   Ztelegram._payment.orderinfor   Ztelegram._telegramobjectr   Ztelegram._userr   Ztelegram._utils.defaultvaluer   Ztelegram._utils.typesr   r	   Ztelegramr
   r   r   r   r   r   <module>   s   