U
    hn                     @   s$  d Z ddlmZ ddlmZ ddlmZmZmZmZ ddl	Z	ddl
Z
ddlmZ erpddlmZmZmZmZ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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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/d0 d0eZ%G d1d2 d2eZ&G d3d4 d4eZ'G d5d6 d6eZ(G d7d8 d8eZ)G d9d: d:eZ*G d;d< d<eZ+G d=d> d>eZ,dS )?zBFile generated by TLObjects' generator. All changes will be ERASED   )TLObject)	TLRequest    )OptionalListUnionTYPE_CHECKINGN)datetime)TypeInputContactTypeInputGeoPointTypeInputPeerTypeInputUserTypeTopPeerCategoryc                   @   sF   e Zd ZdZdZddddZdd Zd	d
 Zdd Ze	dd Z
dS )AcceptContactRequestl   "cp    * r   idc                 C   s
   || _ dS z
        :returns Updates: Instance of either UpdatesTooLong, UpdateShortMessage, UpdateShortChatMessage, UpdateShort, UpdatesCombined, Updates, UpdateShortSentMessage.
        Nr   selfr    r   B/tmp/pip-unpacked-wheel-c81u5j2r/telethon/tl/functions/contacts.py__init__   s    zAcceptContactRequest.__init__c                    s   | || jI d H | _d S Nget_input_userget_input_entityr   r   clientutilsr   r   r   resolve   s    zAcceptContactRequest.resolvec                 C   s"   dt | jtr| j n| jdS )Nr   _r   )
isinstancer   r   to_dictr   r   r   r   r$      s    zAcceptContactRequest.to_dictc                 C   s   d d| j fS )N    s   1)joinr   _bytesr%   r   r   r   r(       s    zAcceptContactRequest._bytesc                 C   s   |  }| |dS Nr   tgread_object)clsreader_idr   r   r   from_reader&   s    z AcceptContactRequest.from_readerN__name__
__module____qualname__CONSTRUCTOR_IDSUBCLASS_OF_IDr   r    r$   r(   classmethodr/   r   r   r   r   r      s   r   c                   @   sT   e Zd ZdZdZddeeeee dddZdd	 Z	d
d Z
dd Zedd ZdS )AddContactRequestl   cQ r   Nr   r   
first_name	last_namephoneadd_phone_privacy_exceptionc                 C   s"   || _ || _|| _|| _|| _dS r   r8   )r   r   r9   r:   r;   r<   r   r   r   r   0   s
    zAddContactRequest.__init__c                    s   | || jI d H | _d S r   r   r   r   r   r   r    :   s    zAddContactRequest.resolvec                 C   s2   dt | jtr| j n| j| j| j| j| jdS )Nr7   )r"   r   r9   r:   r;   r<   )r#   r   r   r$   r9   r:   r;   r<   r%   r   r   r   r$   =   s    zAddContactRequest.to_dictc              
   C   sT   d dtd| jd ks | jdkr$dnd| j | | j| | j| | j	fS )Nr&   s   c<IFr      )
r'   structpackr<   r   r(   serialize_bytesr9   r:   r;   r%   r   r   r   r(   G   s    "


zAddContactRequest._bytesc                 C   sF   |  }t|d@ }| }| }| }| }| |||||dS )Nr>   r8   )read_intboolr+   tgread_string)r,   r-   flagsZ_add_phone_privacy_exceptionr.   Z_first_nameZ
_last_name_phoner   r   r   r/   Q   s    zAddContactRequest.from_reader)N)r1   r2   r3   r4   r5   strr   rC   r   r    r$   r(   r6   r/   r   r   r   r   r7   ,   s   


r7   c                   @   sN   e Zd ZdZdZddee dddZdd	 Zd
d Z	dd Z
edd ZdS )BlockRequesti4..   gk Nr   r   my_stories_fromc                 C   s   || _ || _dS z?
        :returns Bool: This type has no constructors.
        NrJ   r   r   rK   r   r   r   r   a   s    zBlockRequest.__init__c                    s   | || jI d H | _d S r   get_input_peerr   r   r   r   r   r   r    h   s    zBlockRequest.resolvec                 C   s&   dt | jtr| j n| j| jdS )NrH   r"   r   rK   r#   r   r   r$   rK   r%   r   r   r   r$   k   s    zBlockRequest.to_dictc                 C   s6   d dtd| jd ks | jdkr$dnd| j fS )Nr&   s   4..r=   Fr   r>   r'   r?   r@   rK   r   r(   r%   r   r   r   r(   r   s
    "zBlockRequest._bytesc                 C   s(   |  }t|d@ }| }| ||dS Nr>   rJ   rB   rC   r+   r,   r-   rE   _my_stories_fromr.   r   r   r   r/   y   s    zBlockRequest.from_reader)Nr1   r2   r3   r4   r5   r   rC   r   r    r$   r(   r6   r/   r   r   r   r   rH   ]   s   rH   c                   @   sR   e Zd ZdZdZdeee ee ee dddZdd Z	d	d
 Z
edd ZdS )BlockFromRepliesRequesti,)r   Nmsg_iddelete_messagedelete_historyreport_spamc                 C   s   || _ || _|| _|| _dS r   rY   )r   rZ   r[   r\   r]   r   r   r   r      s    z BlockFromRepliesRequest.__init__c                 C   s   d| j | j| j| jdS )NrX   )r"   rZ   r[   r\   r]   rY   r%   r   r   r   r$      s    zBlockFromRepliesRequest.to_dictc              	   C   sr   d dtd| jd ks | jdkr$dnd| jd ks:| jdkr>dndB | jd ksV| jdkrZdndB td	| jfS )
Nr&   s   ,)r=   Fr   r>         <i)r'   r?   r@   r[   r\   r]   rZ   r%   r   r   r   r(      s
    ZzBlockFromRepliesRequest._bytesc                 C   sD   |  }t|d@ }t|d@ }t|d@ }|  }| ||||dS )Nr>   r^   r_   rY   rB   rC   )r,   r-   rE   Z_delete_messageZ_delete_historyZ_report_spamZ_msg_idr   r   r   r/      s    z#BlockFromRepliesRequest.from_reader)NNNr1   r2   r3   r4   r5   intr   rC   r   r$   r(   r6   r/   r   r   r   r   rX      s   "		rX   c                   @   sB   e Zd ZdZdZee dddZdd Zdd	 Z	e
d
d ZdS )DeleteByPhonesRequestirI   phonesc                 C   s
   || _ dS rL   re   )r   rf   r   r   r   r      s    zDeleteByPhonesRequest.__init__c                 C   s"   d| j d krg n| j d d  dS )Nrd   )r"   rf   re   r%   r   r   r   r$      s    zDeleteByPhonesRequest.to_dictc              
      s6   d ddtdt jd  fdd jD fS )Nr&   s      ĵr`   c                 3   s   | ]}  |V  qd S r   )rA   .0xr%   r   r   	<genexpr>   s     z/DeleteByPhonesRequest._bytes.<locals>.<genexpr>)r'   r?   r@   lenrf   r%   r   r%   r   r(      s      zDeleteByPhonesRequest._bytesc                 C   s:   |   g }t|  D ]}| }|| q| |dS )Nre   )rB   rangerD   append)r,   r-   Z_phonesr"   _xr   r   r   r/      s    z!DeleteByPhonesRequest.from_readerN)r1   r2   r3   r4   r5   r   rG   r   r$   r(   r6   r/   r   r   r   r   rd      s   rd   c                   @   sJ   e Zd ZdZdZed dddZdd Zd	d
 Zdd Z	e
dd ZdS )DeleteContactsRequesti j	r   r   r   c                 C   s
   || _ dS r   r   r   r   r   r   r      s    zDeleteContactsRequest.__init__c                    s6   g }| j D ] }||||I d H  q
|| _ d S r   )r   rn   r   r   r   r   r   Z_tmpro   r   r   r   r       s    
zDeleteContactsRequest.resolvec                 C   s$   d| j d krg ndd | j D dS )Nrp   c                 S   s"   g | ]}t |tr| n|qS r   r#   r   r$   rh   r   r   r   
<listcomp>   s     z1DeleteContactsRequest.to_dict.<locals>.<listcomp>r!   r   r%   r   r   r   r$      s    zDeleteContactsRequest.to_dictc              	   C   s2   d ddtdt| jd dd | jD fS )Nr&   s    j	rg   r`   c                 s   s   | ]}|  V  qd S r   r(   rh   r   r   r   rk      s     z/DeleteContactsRequest._bytes.<locals>.<genexpr>r'   r?   r@   rl   r   r%   r   r   r   r(      s      zDeleteContactsRequest._bytesc                 C   s:   |   g }t|  D ]}| }|| q| |dS r)   rB   rm   r+   rn   r,   r-   r.   r"   ro   r   r   r   r/      s    z!DeleteContactsRequest.from_readerN)r1   r2   r3   r4   r5   r   r   r    r$   r(   r6   r/   r   r   r   r   rp      s   rp   c                   @   sB   e Zd ZdZdZee dddZdd Zdd	 Z	e
d
d ZdS )EditCloseFriendsRequestl   t rI   r   c                 C   s
   || _ dS rL   r   r   r   r   r   r      s    z EditCloseFriendsRequest.__init__c                 C   s"   d| j d krg n| j d d  dS )Nrx   r!   r   r%   r   r   r   r$      s    zEditCloseFriendsRequest.to_dictc              	   C   s2   d ddtdt| jd dd | jD fS )Nr&   s   grg   r`   c                 s   s   | ]}t d |V  qdS )<qN)r?   r@   rh   r   r   r   rk     s     z1EditCloseFriendsRequest._bytes.<locals>.<genexpr>ru   r%   r   r   r   r(     s      zEditCloseFriendsRequest._bytesc                 C   s:   |   g }t|  D ]}| }|| q| |dS r)   )rB   rm   	read_longrn   rw   r   r   r   r/   	  s    z#EditCloseFriendsRequest.from_readerN)r1   r2   r3   r4   r5   r   rc   r   r$   r(   r6   r/   r   r   r   r   rx      s   rx   c                   @   s0   e Zd ZdZdZdd Zdd Zedd Zd	S )
ExportContactTokenRequestl   '@p l   > c                 C   s   ddiS )Nr"   r{   r   r%   r   r   r   r$     s     z!ExportContactTokenRequest.to_dictc                 C   s
   d dS )Nr&   )s   '@er'   r%   r   r   r   r(     s    z ExportContactTokenRequest._bytesc                 C   s   |  S r   r   r,   r-   r   r   r   r/   "  s    z%ExportContactTokenRequest.from_readerN	r1   r2   r3   r4   r5   r$   r(   r6   r/   r   r   r   r   r{     s   r{   c                   @   s0   e Zd ZdZdZdd Zdd Zedd Zd	S )
GetBirthdaysRequestl   d(5 izc                 C   s   ddiS )Nr"   r   r   r%   r   r   r   r$   +  s     zGetBirthdaysRequest.to_dictc                 C   s
   d dS )Nr&   )s   dr|   r%   r   r   r   r(   0  s    zGetBirthdaysRequest._bytesc                 C   s   |  S r   r   r}   r   r   r   r/   5  s    zGetBirthdaysRequest.from_readerNr~   r   r   r   r   r   '  s   r   c                   @   sH   e Zd ZdZdZdeeee dddZdd Z	d	d
 Z
edd ZdS )GetBlockedRequestl   5 l   OOt NoffsetlimitrK   c                 C   s   || _ || _|| _dS )zV
        :returns contacts.Blocked: Instance of either Blocked, BlockedSlice.
        Nr   )r   r   r   rK   r   r   r   r   >  s    zGetBlockedRequest.__init__c                 C   s   d| j | j| jdS )Nr   )r"   r   r   rK   r   r%   r   r   r   r$   F  s
    zGetBlockedRequest.to_dictc              	   C   sF   d dtd| jd ks | jdkr$dndtd| jtd| jfS )Nr&   s   r=   Fr   r>   r`   )r'   r?   r@   rK   r   r   r%   r   r   r   r(   N  s    "zGetBlockedRequest._bytesc                 C   s2   |  }t|d@ }|  }|  }| |||dS )Nr>   r   ra   )r,   r-   rE   rV   _offset_limitr   r   r   r/   V  s
    zGetBlockedRequest.from_reader)Nrb   r   r   r   r   r   :  s   r   c                   @   sJ   e Zd ZdZdZedddZdd Zdd	 Ze	d
d Z
edd ZdS )GetContactIDsRequestifziq&Phashc                 C   s
   || _ dS )zF
        :returns Vector<int>: This type has no constructors.
        Nr   r   r   r   r   r   r   d  s    zGetContactIDsRequest.__init__c                 C   s   d| j dS )Nr   r"   r   r   r%   r   r   r   r$   j  s    zGetContactIDsRequest.to_dictc                 C   s   d dtd| jfS )Nr&   s   fzry   r'   r?   r@   r   r%   r   r   r   r(   p  s    zGetContactIDsRequest._bytesc                 C   s   |  }| |dS Nr   rz   r,   r-   _hashr   r   r   r/   v  s    z GetContactIDsRequest.from_readerc                    s"        fddt   D S )Nc                    s   g | ]}   qS r   )rB   )ri   r"   r-   r   r   rs   ~  s     z4GetContactIDsRequest.read_result.<locals>.<listcomp>)rB   rm   r   r   r   r   read_result{  s    z GetContactIDsRequest.read_resultN)r1   r2   r3   r4   r5   rc   r   r$   r(   r6   r/   staticmethodr   r   r   r   r   r   `  s   
r   c                   @   s>   e Zd ZdZdZedddZdd Zdd	 Ze	d
d Z
dS )GetContactsRequesti]i%8r   c                 C   s
   || _ dS )z_
        :returns contacts.Contacts: Instance of either ContactsNotModified, Contacts.
        Nr   r   r   r   r   r     s    zGetContactsRequest.__init__c                 C   s   d| j dS )Nr   r   r   r%   r   r   r   r$     s    zGetContactsRequest.to_dictc                 C   s   d dtd| jfS )Nr&   s   ]ry   r   r%   r   r   r   r(     s    zGetContactsRequest._bytesc                 C   s   |  }| |dS r   r   r   r   r   r   r/     s    zGetContactsRequest.from_readerN)r1   r2   r3   r4   r5   rc   r   r$   r(   r6   r/   r   r   r   r   r     s   r   c                   @   sL   e Zd ZdZdZddee ee dddZdd	 Z	d
d Z
edd ZdS )GetLocatedRequestl   D<& r   Nr   	geo_point
backgroundself_expiresc                 C   s   || _ || _|| _dS r   r   )r   r   r   r   r   r   r   r     s    zGetLocatedRequest.__init__c                 C   s*   dt | jtr| j n| j| j| jdS )Nr   )r"   r   r   r   )r#   r   r   r$   r   r   r%   r   r   r   r$     s
    zGetLocatedRequest.to_dictc              	   C   sv   d dtd| jd ks | jdkr$dnd| jd ks:| jdkr>dndB | j | jd ks`| jdkrddntd| jfS )	Nr&   s   DHr=   Fr   r^   r>   r`   )r'   r?   r@   r   r   r   r(   r%   r   r   r   r(     s    >$zGetLocatedRequest._bytesc                 C   s@   |  }t|d@ }| }|d@ r.|  }nd }| |||dS )Nr^   r>   r   rT   )r,   r-   rE   Z_backgroundZ
_geo_pointZ_self_expiresr   r   r   r/     s    
zGetLocatedRequest.from_reader)NN)r1   r2   r3   r4   r5   r   rC   rc   r   r$   r(   r6   r/   r   r   r   r   r     s   r   c                   @   s0   e Zd ZdZdZdd Zdd Zedd Zd	S )
GetSavedRequestl   c iu	c                 C   s   ddiS )Nr"   r   r   r%   r   r   r   r$     s     zGetSavedRequest.to_dictc                 C   s
   d dS )Nr&   )s   r|   r%   r   r   r   r(     s    zGetSavedRequest._bytesc                 C   s   |  S r   r   r}   r   r   r   r/     s    zGetSavedRequest.from_readerNr~   r   r   r   r   r     s   r   c                   @   s>   e Zd ZdZdZedddZdd Zdd	 Ze	d
d Z
dS )GetSponsoredPeersRequestl   Cm l   \h qc                 C   s
   || _ dS )zk
        :returns contacts.SponsoredPeers: Instance of either SponsoredPeersEmpty, SponsoredPeers.
        Nr   )r   r   r   r   r   r     s    z!GetSponsoredPeersRequest.__init__c                 C   s   d| j dS )Nr   )r"   r   r   r%   r   r   r   r$     s    z GetSponsoredPeersRequest.to_dictc                 C   s   d d| | jfS )Nr&   s   ȶ)r'   rA   r   r%   r   r   r   r(     s    
zGetSponsoredPeersRequest._bytesc                 C   s   |  }| |dS )Nr   rD   )r,   r-   _qr   r   r   r/     s    z$GetSponsoredPeersRequest.from_readerNr1   r2   r3   r4   r5   rG   r   r$   r(   r6   r/   r   r   r   r   r     s   r   c                   @   s0   e Zd ZdZdZdd Zdd Zedd Zd	S )
GetStatusesRequestl   SF	 l   \? c                 C   s   ddiS )Nr"   r   r   r%   r   r   r   r$     s     zGetStatusesRequest.to_dictc                 C   s
   d dS )Nr&   )s   Sr|   r%   r   r   r   r(     s    zGetStatusesRequest._bytesc                 C   s   |  S r   r   r}   r   r   r   r/     s    zGetStatusesRequest.from_readerNr~   r   r   r   r   r     s   r   c                   @   sz   e Zd ZdZdZdeeeee ee ee ee ee ee ee ee ee dddZdd Z	d	d
 Z
edd ZdS )GetTopPeersRequestl   xh. l   ;= Nr   r   r   correspondentsbots_pmbots_inlinephone_callsforward_usersforward_chatsgroupschannelsbots_appc                 C   sL   || _ || _|| _|| _|| _|| _|| _|| _|	| _|
| _	|| _
|| _dS )zq
        :returns contacts.TopPeers: Instance of either TopPeersNotModified, TopPeers, TopPeersDisabled.
        Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r     s    zGetTopPeersRequest.__init__c                 C   s8   d| j | j| j| j| j| j| j| j| j| j	| j
| jdS )Nr   )r"   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   r   r$     s    zGetTopPeersRequest.to_dictc              
   C   s6  d dtd| jd ks | jdkr$dnd| jd ks:| jdkr>dndB | jd ksV| jdkrZdndB | jd ksr| jdkrvdnd	B | jd ks| jdkrdnd
B | jd ks| jdkrdndB | j	d ks| j	dkrdndB | j
d ks| j
dkrdndB | jd ks| jdkrdndB td| jtd| jtd| jfS )Nr&   s   x4r=   Fr   r>   r^   r_                      r`   ry   )r'   r?   r@   r   r   r   r   r   r   r   r   r   r   r   r   r%   r   r   r   r(   .  s     zGetTopPeersRequest._bytesc                 C   s   |  }t|d@ }t|d@ }t|d@ }t|d@ }t|d@ }t|d@ }t|d@ }	t|d@ }
t|d	@ }|  }|  }| }| ||||||||||	|
|d
S )Nr>   r^   r_   r   r   r   r   r   r   r   )rB   rC   rz   )r,   r-   rE   Z_correspondentsZ_bots_pmZ_bots_inlineZ_phone_callsZ_forward_usersZ_forward_chatsZ_groupsZ	_channelsZ	_bots_appr   r   r   r   r   r   r/   7  s    zGetTopPeersRequest.from_reader)	NNNNNNNNNrb   r   r   r   r   r     s   J	r   c                   @   s>   e Zd ZdZdZedddZdd Zdd	 Ze	d
d Z
dS )ImportContactTokenRequestiW iwy-tokenc                 C   s
   || _ dS )zD
        :returns User: Instance of either UserEmpty, User.
        Nr   )r   r   r   r   r   r   N  s    z"ImportContactTokenRequest.__init__c                 C   s   d| j dS )Nr   )r"   r   r   r%   r   r   r   r$   T  s    z!ImportContactTokenRequest.to_dictc                 C   s   d d| | jfS )Nr&   s   W )r'   rA   r   r%   r   r   r   r(   Z  s    
z ImportContactTokenRequest._bytesc                 C   s   |  }| |dS )Nr   r   )r,   r-   _tokenr   r   r   r/   `  s    z%ImportContactTokenRequest.from_readerNr   r   r   r   r   r   J  s   r   c                   @   sB   e Zd ZdZdZed dddZdd Zd	d
 Ze	dd Z
dS )ImportContactsRequesti,l   - r
   contactsc                 C   s
   || _ dS )zS
        :returns contacts.ImportedContacts: Instance of ImportedContacts.
        Nr   )r   r   r   r   r   r   j  s    zImportContactsRequest.__init__c                 C   s$   d| j d krg ndd | j D dS )Nr   c                 S   s"   g | ]}t |tr| n|qS r   rr   rh   r   r   r   rs   s  s     z1ImportContactsRequest.to_dict.<locals>.<listcomp>)r"   r   r   r%   r   r   r   r$   p  s    zImportContactsRequest.to_dictc              	   C   s2   d ddtdt| jd dd | jD fS )Nr&   s   ,rg   r`   c                 s   s   | ]}|  V  qd S r   rt   rh   r   r   r   rk   y  s     z/ImportContactsRequest._bytes.<locals>.<genexpr>)r'   r?   r@   rl   r   r%   r   r   r   r(   v  s      zImportContactsRequest._bytesc                 C   s:   |   g }t|  D ]}| }|| q| |dS )Nr   rv   )r,   r-   Z	_contactsr"   ro   r   r   r   r/   |  s    z!ImportContactsRequest.from_readerN)r1   r2   r3   r4   r5   r   r   r$   r(   r6   r/   r   r   r   r   r   f  s   r   c                   @   s0   e Zd ZdZdZdd Zdd Zedd Zd	S )
ResetSavedRequestl   7* rI   c                 C   s   ddiS )Nr"   r   r   r%   r   r   r   r$     s     zResetSavedRequest.to_dictc                 C   s
   d dS )Nr&   )s   7r|   r%   r   r   r   r(     s    zResetSavedRequest._bytesc                 C   s   |  S r   r   r}   r   r   r   r/     s    zResetSavedRequest.from_readerNr~   r   r   r   r   r     s   r   c                   @   sH   e Zd ZdZdZdddddZdd	 Zd
d Zdd Ze	dd Z
dS )ResetTopPeerRatingRequestisrI   r   r   categorypeerc                 C   s   || _ || _dS rL   r   )r   r   r   r   r   r   r     s    z"ResetTopPeerRatingRequest.__init__c                    s   | || jI d H | _d S r   )rO   r   r   r   r   r   r   r      s    z!ResetTopPeerRatingRequest.resolvec                 C   s<   dt | jtr| j n| jt | jtr2| j n| jdS )Nr   )r"   r   r   )r#   r   r   r$   r   r%   r   r   r   r$     s    z!ResetTopPeerRatingRequest.to_dictc                 C   s   d d| j | j fS )Nr&   s   s)r'   r   r(   r   r%   r   r   r   r(     s
    z ResetTopPeerRatingRequest._bytesc                 C   s   |  }|  }| ||dS )Nr   r*   )r,   r-   Z	_categoryZ_peerr   r   r   r/     s    z%ResetTopPeerRatingRequest.from_readerNr0   r   r   r   r   r     s   r   c                   @   s>   e Zd ZdZdZedddZdd Zdd	 Ze	d
d Z
dS )ResolvePhoneRequestl   DC    3` r;   c                 C   s
   || _ dS zK
        :returns contacts.ResolvedPeer: Instance of ResolvedPeer.
        Nr   )r   r;   r   r   r   r     s    zResolvePhoneRequest.__init__c                 C   s   d| j dS )Nr   )r"   r;   r   r%   r   r   r   r$     s    zResolvePhoneRequest.to_dictc                 C   s   d d| | jfS )Nr&   s   DC)r'   rA   r;   r%   r   r   r   r(     s    
zResolvePhoneRequest._bytesc                 C   s   |  }| |dS )Nr   r   )r,   r-   rF   r   r   r   r/     s    zResolvePhoneRequest.from_readerNr   r   r   r   r   r     s   r   c                   @   sF   e Zd ZdZdZdeee dddZdd Zd	d
 Z	e
dd ZdS )ResolveUsernameRequestiZrr   Nusernamerefererc                 C   s   || _ || _dS r   r   )r   r   r   r   r   r   r     s    zResolveUsernameRequest.__init__c                 C   s   d| j | jdS )Nr   )r"   r   r   r   r%   r   r   r   r$     s    zResolveUsernameRequest.to_dictc                 C   sZ   d dtd| jd ks | jdkr$dnd| | j| jd ksF| jdkrJdn
| | jfS )Nr&   s   Zrr=   Fr   r>   )r'   r?   r@   r   rA   r   r%   r   r   r   r(     s    "
"zResolveUsernameRequest._bytesc                 C   s2   |  }| }|d@ r"| }nd }| ||dS )Nr>   r   )rB   rD   )r,   r-   rE   Z	_usernameZ_refererr   r   r   r/     s    
z"ResolveUsernameRequest.from_reader)N)r1   r2   r3   r4   r5   rG   r   r   r$   r(   r6   r/   r   r   r   r   r     s   r   c                   @   s@   e Zd ZdZdZeedddZdd Zdd	 Z	e
d
d ZdS )SearchRequestii㢆Cr   r   c                 C   s   || _ || _dS )z=
        :returns contacts.Found: Instance of Found.
        Nr   )r   r   r   r   r   r   r     s    zSearchRequest.__init__c                 C   s   d| j | jdS )Nr   )r"   r   r   r   r%   r   r   r   r$   
  s    zSearchRequest.to_dictc                 C   s"   d d| | jtd| jfS )Nr&   s   r`   )r'   rA   r   r?   r@   r   r%   r   r   r   r(     s
    
zSearchRequest._bytesc                 C   s   |  }| }| ||dS )Nr   )rD   rB   )r,   r-   r   r   r   r   r   r/     s    zSearchRequest.from_readerN)r1   r2   r3   r4   r5   rG   rc   r   r$   r(   r6   r/   r   r   r   r   r     s   r   c                   @   sT   e Zd ZdZdZded eee dddZ	dd	 Z
d
d Zdd Zedd ZdS )SetBlockedRequestl   v\) rI   Nr   r   r   rK   c                 C   s   || _ || _|| _dS rL   r   )r   r   r   rK   r   r   r   r   #  s    zSetBlockedRequest.__init__c                    s6   g }| j D ] }||||I d H  q
|| _ d S r   )r   rn   rO   r   rq   r   r   r   r    +  s    
zSetBlockedRequest.resolvec                 C   s,   d| j d krg ndd | j D | j| jdS )Nr   c                 S   s"   g | ]}t |tr| n|qS r   rr   rh   r   r   r   rs   5  s     z-SetBlockedRequest.to_dict.<locals>.<listcomp>)r"   r   r   rK   r   r%   r   r   r   r$   2  s
    zSetBlockedRequest.to_dictc                 C   s`   d dtd| jd ks | jdkr$dnddtdt| jd d	d
 | jD td| jfS )Nr&   s   v\Ɣr=   Fr   r>   rg   r`   c                 s   s   | ]}|  V  qd S r   rt   rh   r   r   r   rk   >  s     z+SetBlockedRequest._bytes.<locals>.<genexpr>)r'   r?   r@   rK   rl   r   r   r%   r   r   r   r(   :  s    "  zSetBlockedRequest._bytesc                 C   sZ   |  }t|d@ }|   g }t|  D ]}| }|| q,|  }| |||dS )Nr>   r   )rB   rC   rm   r+   rn   )r,   r-   rE   rV   r.   r"   ro   r   r   r   r   r/   B  s    zSetBlockedRequest.from_reader)N)r1   r2   r3   r4   r5   r   rc   r   rC   r   r    r$   r(   r6   r/   r   r   r   r   r     s   r   c                   @   s>   e Zd ZdZdZedddZdd Zdd	 Ze	d
d Z
dS )ToggleTopPeersRequestl   =)
 rI   enabledc                 C   s
   || _ dS rL   r   )r   r   r   r   r   r   U  s    zToggleTopPeersRequest.__init__c                 C   s   d| j dS )Nr   )r"   r   r   r%   r   r   r   r$   [  s    zToggleTopPeersRequest.to_dictc                 C   s   d d| jrdndfS )Nr&   s   ڽs   urs   7y)r'   r   r%   r   r   r   r(   a  s    zToggleTopPeersRequest._bytesc                 C   s   |  }| |dS )Nr   )Ztgread_bool)r,   r-   Z_enabledr   r   r   r/   g  s    z!ToggleTopPeersRequest.from_readerN)r1   r2   r3   r4   r5   rC   r   r$   r(   r6   r/   r   r   r   r   r   Q  s   r   c                   @   sN   e Zd ZdZdZddee dddZdd	 Zd
d Z	dd Z
edd ZdS )UnblockRequestl   (Sj rI   Nr   rJ   c                 C   s   || _ || _dS rL   rJ   rM   r   r   r   r   q  s    zUnblockRequest.__init__c                    s   | || jI d H | _d S r   rN   r   r   r   r   r    x  s    zUnblockRequest.resolvec                 C   s&   dt | jtr| j n| j| jdS )Nr   rP   rQ   r%   r   r   r   r$   {  s    zUnblockRequest.to_dictc                 C   s6   d dtd| jd ks | jdkr$dnd| j fS )Nr&   s   (Pr=   Fr   r>   rR   r%   r   r   r   r(     s
    "zUnblockRequest._bytesc                 C   s(   |  }t|d@ }| }| ||dS rS   rT   rU   r   r   r   r/     s    zUnblockRequest.from_reader)NrW   r   r   r   r   r   m  s   r   )-__doc__Ztl.tlobjectr   r   typingr   r   r   r   osr?   r	   Ztl.typesr
   r   r   r   r   r   r7   rH   rX   rd   rp   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sF   1%(!(!&!)B!#& 2