
    (iF@                     ~   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	m
Z
mZmZmZmZmZmZmZ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m Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d d	l)m*Z*m+Z+m,Z,m-Z- d d
l.m/Z/ d dlm0Z0 d dl1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z:m;Z;m<Z< d dl=m>Z> d dl?m@ZA d dlBmCZC d dlDmEZEmFZF d dlGmHZHmIZImJZJ d dlKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZS d dlTmUZV d dlWmXZX d dlYmZZZ d dl[m\Z\ d dl]m^Z^m_Z_ d dl`maZambZb d dlcmdZdmeZe d dlfmgZg d dlhmiZi d dljmkZkmlZl d d l`mmZmmnZn d d!lompZp d d"lqmrZr d d#lsmtZt d d$lumvZv d d%lwmxZx erd d&lymzZz d d'l7m{Z{ d d(lom|Z| d)ee}e'e%e\   e$e   f   f   fd*Z~d)ee}e'e%e\   e$e   f   f   fd+Z G d, d-      Zd.e'd/   d0e#e'ebeaf      d)dfd1Z G d2 d3e      Z e&d4ea5      Z G d6 d7ee!e         Zy)8    N)TracebackType)AsyncENSENS)ABICodec)add_0x_prefixapply_to_return_valuefrom_wei
is_addressis_checksum_addresskeccakremove_0x_prefixto_bytesto_checksum_addressto_intto_textto_wei)wraps)HexBytes)TYPE_CHECKINGAnyAsyncIteratorCallableDict	GeneratorGenericListOptionalSequenceTypeTypeVarUnioncast)
AnyAddressChecksumAddressHexStr
Primitives)TypeStr)combomethod)build_non_strict_registrybuild_strict_registrymap_abi_data)Self)empty)hex_encode_abi_typeto_hexto_json)RPC)attach_modules)abi_ens_resolver)AsyncEthEth)Web3TypeErrorWeb3ValidationErrorWeb3ValueError)	AsyncGethAsyncGethAdminAsyncGethDebugAsyncGethTxPoolGeth	GethAdmin	GethDebug
GethTxPool)RequestManager)MiddlewareOnion)Method)Module)AsyncNetNet)AsyncBaseProviderBaseProvider)AsyncEthereumTesterProviderEthereumTesterProvider)IPCProvider)%persistent_connection_provider_method)AsyncHTTPProviderHTTPProvider)LegacyWebSocketProviderWebSocketProvider)PersistentConnection)Testing)Tracing)Wei)SubscriptionManager)RequestBatcher)Empty)PersistentConnectionProviderreturnc                  J    t         t        t        t        t        t
        dfdS )Nadmintxpooldebug)ethnetgeth)r4   rE   r9   r:   r<   r;        :/var/www/br/venv/lib/python3.12/site-packages/web3/main.pyget_async_default_modulesre      s(    ')'
 rc   c                  ^    t         t        t        t        t        t
        dft        t        dS )Nr[   )r_   r`   ra   tracingtesting)r5   rF   r=   r>   r@   r?   rS   rR   rb   rc   rd   get_default_modulesri      s0    "$"
  rc   c                      e Zd ZU dZeZeed<   eee	f   ed<   ee
ef   ed<   eeef   ed<   edefd       Ze ee      	 	 	 d)d	ee   d
ee   dee   defd              Ze ee      	 	 	 d)d	ee   d
ee   dee   defd              Ze ee      	 	 	 d)d	ee   d
ee   dee   defd              Ze ee      	 	 	 d)d	ee   d
ee   dee   defd              Ze ee      deeef   defd              Ze ee       deee!ee"jF                  f   dede$fd              Z e ee%      dededeee"jF                  f   fd              Z%e ee&      dede'fd              Z&e ee(      dede'fd              Z(e ee)      dee*eef   de+fd              Z)edefd       Z,ede'fd       Z-e-j\                  de'ddfd       Z-e e/e0      	 	 	 d)d	ee   dee   d
ee   defd              Z1e2dd d e3e4   d!e3e   de3e   fd"       Z5e6d e3e4   d!e3e   defd#       Z7d$eeee8e9   e:e   f   f   ddfd%Z;d&e4dede'fd'Z<	 	 d*d(Z=y)+BaseWeb3Tmanagerr_   r`   ra   rY   c                 J    t        t        | j                  j                        S N)r"   rB   rl   middleware_onionselfs    rd   ro   zBaseWeb3.middleware_onion   s    OT\\%B%BCCrc   N	primitivehexstrtextc                     t        | ||      S rn   )r   rr   rs   rt   s      rd   r   zBaseWeb3.to_bytes   s     	6400rc   c                     t        | ||      S rn   )r   rv   s      rd   r   zBaseWeb3.to_int        i..rc   c                     t        | ||      S rn   )r/   rv   s      rd   r/   zBaseWeb3.to_hex   rx   rc   c                     t        | ||      S rn   )r   rv   s      rd   r   zBaseWeb3.to_text   s     y&$//rc   objc                     t        |       S rn   )r0   )r{   s    rd   r0   zBaseWeb3.to_json   s     s|rc   numberunitc                 6    t        t        t        | |            S rn   )r"   rT   r   r}   r~   s     rd   r   zBaseWeb3.to_wei   s     C-..rc   c                     t        | |      S rn   )r	   r   s     rd   r	   zBaseWeb3.from_wei  s     %%rc   valuec                     t        |       S rn   )r
   r   s    rd   r
   zBaseWeb3.is_address	  s     %  rc   c                     t        |       S rn   )r   r   s    rd   r   zBaseWeb3.is_checksum_address       #5))rc   c                     t        |       S rn   )r   r   s    rd   r   zBaseWeb3.to_checksum_address  r   rc   c                     ddl m} |S )Nr   )__version__)web3r   )rq   r   s     rd   apizBaseWeb3.api  s    $rc   c                     | j                   S rn   )_strict_bytes_type_checkingrp   s    rd   strict_bytes_type_checkingz#BaseWeb3.strict_bytes_type_checking  s    ///rc   strict_bytes_type_checkc                 l    |rt        t                     nt        t                     | _        || _        y rn   )r   r*   r)   codecr   )rq   r   s     rd   r   z#BaseWeb3.strict_bytes_type_checking"  s3     ' *,-356 	

 ,C(rc   c           	          t        | t        t        t        d       f      rt	        | ||      }t        |      S t        d| d|d|d      )N)rs   rt   z!You called keccak with first arg z and keywords {'text': z, 'hexstr': z}. You must call it with one of these approaches: keccak(text='txt'), keccak(hexstr='0x747874'), keccak(b'\x74\x78\x74'), or keccak(0x747874).)
isinstancebytesinttyper   eth_utils_keccakr6   )rr   rt   rs   input_bytess       rd   r   zBaseWeb3.keccak+  s`     i%d4j!9:"9V$GK#K00/	} =VJ 7??
 	
rc   w3	abi_typesvaluesc                 0    t        t        |      g||      S rn   )r+   r3   )clsr   r   r   s       rd   normalize_valueszBaseWeb3.normalize_values=  s     -b12IvFFrc   c                 T   t        |      t        |      k7  r$t        dt        |       dt        |       d      t        | t              rd}n| }| j	                  |||      }t        t        dj                  d t        ||      D                          }| j                  |      S )z
        Executes keccak256 exactly as Solidity does.
        Takes list of abi_types as inputs -- `[uint24, int8[], bool]`
        and list of corresponding values  -- `[20, [-1, 5, 0], True]`
        z<Length mismatch between provided abi types and values.  Got z types and z values.N c              3   L   K   | ]  \  }}t        t        ||              y wrn   )r   r.   ).0abi_typer   s      rd   	<genexpr>z+BaseWeb3.solidity_keccak.<locals>.<genexpr>X  s)      '% %%85%IJs   "$)rs   )
lenr8   r   r   r   r   r%   joinzipr   )r   r   r   r   normalized_values
hex_strings         rd   solidity_keccakzBaseWeb3.solidity_keccakC  s     y>S[( Ny>"+c&k](D 
 c4 BB00YG" +.y:K+L 

 zzz,,rc   modulesc                     t        | |       y)z8
        Attach modules to the `Web3` instance.
        N)_attach_modules)rq   r   s     rd   r2   zBaseWeb3.attach_modules`  s     	g&rc   _typec                 :    | j                   j                  ||      S rn   )r   is_encodable)rq   r   r   s      rd   r   zBaseWeb3.is_encodableh  s    zz&&ue44rc   c                 6    | j                   j                         S rn   )rl   _batch_requestsrp   s    rd   batch_requestszBaseWeb3.batch_requestsm  s     ||++--rc   )NNN)rY   z*RequestBatcher[Method[Callable[..., Any]]])>__name__
__module____qualname__r   DefaultRequestManagerrA   __annotations__r!   r5   r4   rF   rE   r=   r9   propertyrB   ro   staticmethodr   r   r   r&   r%   strr   r   r   r/   r   r0   r   r   r   floatdecimalDecimalrT   r	   r
   boolr   r   r#   r$   r   r   setterr   r   r   classmethodr   r'   r   r(   r   r   rD   r   r2   r   r   rb   rc   rd   rk   rk      s   "& +N"" 
sH}		sH}	
i
  D/ D D 
8_*.#'"1J'1 1 sm1 
	1  1 
6]*.#'"/J'/ / sm/ 
	/  / 
6]*.#'"/J'/ / sm/ 
	/  / 
7^*.#'"0J'0 0 sm0 
	0  0 
7^T#s(^     
6]/uS%goo=> /c /c /  / 
8_& &C &E#w2F,G &  & 
:!# !$ !  ! 
*3 *4 *   * 
*5S%)?#@ *_ *   * S  
 0D 0 0  &&C$ C4 C 'C 8$*."#'
J'
sm
  
 
	
 % 
  GG(,WG?CCyG	cG G
 -W -tCy -U - -8'CtF|Xc]'B!CCD'	'5' 5# 5$ 5
.	5.rc   rk   r   )Web3zAsyncWeb3[Any]providerc                     |rt        | t              r(t        |t              st        dt	        |       d      t        | t
              r)t        |t              st        dt	        |       d      y y y )NzIProvider must be an instance of `AsyncBaseProvider` for `AsyncWeb3`, got .z?Provider must be an instance of `BaseProvider` for `Web3`, got )r   	AsyncWeb3rG   r7   r   r   rH   )r   r   s     rd   _validate_providerr   s  s     b)$ZBS-T%$$(N#316 
 b$
8\(J%H~&a)  )K rc   c                      e Zd ZU eed<   eed<   eed<   eZeZe	Z	e
Z
ddddefdee   deee      deeeeee   ee   f   f      deeeeee   ee   f   f      d	eed
f   ddfdZddedefdZedefd       Zej6                  deddfd       Zedefd       Zedeed
f   fd       Zej6                  deed
f   ddfd       Zy)r   r_   r`   ra   Nr   
middlewarer   external_modulesensrW   rY   c                     t        | |       | j                  | ||      | _        t        t	                     | _        |
t               }| j                  |       || j                  |       || _        y rn   )	r   rA   rl   r   r*   r   ri   r2   r   rq   r   r   r   r   r   s         rd   __init__zWeb3.__init__  sk     	4***4:F356
?)+GG$' 01rc   show_tracebackc                 8    | j                   j                  |      S rn   r   is_connectedrq   r   s     rd   r   zWeb3.is_connected  s    }})).99rc   c                 J    t        t        | j                  j                        S rn   )r"   rH   rl   r   rp   s    rd   r   zWeb3.provider  s    L$,,"7"788rc   c                 &    || j                   _        y rn   rl   r   rq   r   s     rd   r   zWeb3.provider       (rc   c                 V    | j                   j                  t        j                  g       S rn   )rl   request_blockingr1   web3_clientVersionrp   s    rd   client_versionzWeb3.client_version  s    ||,,S-C-CRHHrc   c                 z    | j                   t        u rt        j                  |       }| |_        |S | j                   S rn   )_ensr-   r   	from_web3r   rq   nss     rd   r   zWeb3.ens  s2    99t$BBEIyyrc   new_ensc                 $    |r| |_         || _        y rn   r   r   rq   r   s     rd   r   zWeb3.ens      GJ	rc   F)r   r   r   r5   r   rF   r=   rN   rK   rJ   rO   r-   r   rH   r   r   r   r   r!   r   rD   r   r   r   r   r   r   r   r   r   rb   rc   rd   r   r     s   	H	H
J  LK35 ,0.2KO #(<( Xc]+ $sE$v,*E$FFGH	
 #eDL(3-7889
 3<  
2:4 :D : 9, 9 9 __) )$ ) ) I I I U3<(   	ZZ5g. 4  rc   r   AsyncProviderT)boundc                      e Zd ZU eed<   eed<   eed<   eZeZe	Z	dddde
fdee   deee      deeeeee   ee   f   f      deeeeee   ee   f   f      d	eed
f   ddfdZd%dedefdZedefd       Zej4                  deddfd       Zedefd       Zedeed
f   fd       Zej4                  deed
f   ddfd       ZdZee   ed<   dZed   ed<   e e        defd              Z!e e        de"fd              Z# e d      de$ede%f   fd       Z& e d      de%fd       Z' e        dee(   d e(d!e)ddfd"       Z* e d#      de+e%   fd$       Z,y)&r   r_   r`   ra   Nr   r   r   r   r   rW   rY   c                 "   t        | |       | j                  | ||      | _        t        t	                     | _        |
t               n|| _        |d n|| _        | j                  | j                         || j                  |       || _
        y rn   )r   rA   rl   r   r*   r   re   _modules_external_modulesr2   r   r   s         rd   r   zAsyncWeb3.__init__  s     	4***4:F356
7>13G)9)AGWDMM*' 01rc   r   c                 T   K   | j                   j                  |       d {   S 7 wrn   r   r   s     rd   r   zAsyncWeb3.is_connected  s!     ]]//????s   (&(c                 J    t        t        | j                  j                        S rn   )r"   r   rl   r   rp   s    rd   r   zAsyncWeb3.provider  s    NDLL$9$9::rc   c                 &    || j                   _        y rn   r   r   s     rd   r   zAsyncWeb3.provider  r   rc   c                 r   K   | j                   j                  t        j                  g        d {   S 7 wrn   )rl   coro_requestr1   r   rp   s    rd   r   zAsyncWeb3.client_version  s)     \\..s/E/ErJJJJs   .757c                 z    | j                   t        u rt        j                  |       }| |_        |S | j                   S rn   )r   r-   r   r   r   r   s     rd   r   zAsyncWeb3.ens  s4    99##D)BBEIyyrc   r   c                 $    |r| |_         || _        y rn   r   r   s     rd   r   zAsyncWeb3.ens	  r   rc   _subscription_managerrQ   _persistent_connectionc                 R    | j                   st        |       | _         | j                   S )z_
        Access the subscription manager for the current PersistentConnectionProvider.
        )r   rU   rp   s    rd   subscription_managerzAsyncWeb3.subscription_manager  s&     )))<T)BD&)))rc   c                 R    | j                   t        |       | _         | j                   S rn   )r   rQ   rp   s    rd   socketzAsyncWeb3.socket  s)     &&.*>t*DD'***rc   zcProvider must inherit from ``PersistentConnectionProvider`` class when instantiating via ``await``.c                 F     dt         f fd} |       j                         S )NrY   c                     K   t        dj                        } | j                          d {    | j                          S 7 w)NrX   )r"   r   connect_set_signal_handlers)r   rq   s    rd   __async_init__z+AsyncWeb3.__await__.<locals>.__async_init__+  s@     :DMMJH""$$$))+K %s   *AAA)r,   	__await__)rq   r   s   ` rd   r   zAsyncWeb3.__await__&  s#    
	d 	 ))++rc   zhProvider must inherit from ``PersistentConnectionProvider`` class when instantiating via ``async with``.)messagec                 V   K   | j                   j                          d {    | S 7 wrn   )r   r   rp   s    rd   
__aenter__zAsyncWeb3.__aenter__5  s(     
 mm##%%% 	&s   )')exc_typeexc_valexc_tbc                 T   K   | j                   j                          d {    y 7 wrn   )r   
disconnect)rq   r  r  r  s       rd   	__aexit__zAsyncWeb3.__aexit__=  s      mm&&(((s   (&(zgProvider must inherit from ``PersistentConnectionProvider`` class when instantiating via ``async for``.c                   K   | j                   }	 |j                          d {    |  t        d|      j                  j	                  d       |j                          d {    [7 G7 w)NrX   z2Connection interrupted, attempting to reconnect...)r   r   r"   loggererrorr  r   s     rd   	__aiter__zAsyncWeb3.__aiter__G  sl     
 ==""$$$J/:AAGGD %%''' $
 (s"   !A/A+AA/%A-&A/-A/r   )-r   r   r   r4   r   rE   r9   rM   rP   rI   r-   r   r   r   r   r   r   r!   r   rD   r   r   r   r   r   r   r   r   r   r   rU   r   rL   r   rQ   r   r   r,   r   r  BaseExceptionr   r	  r   r  rb   rc   rd   r   r     s   	M	M
O *)"= .2.2KO (->* Xc]+ $sE$v,*E$FFGH	
 #eDL(3-7889
 8W$% 
0@ @$ @ ;. ; ; __) )D ) ) Kc K K U8W,-   	ZZ57!23    <@8$78??CH%;<C*,*&9 * - * *,+, + - + +	,,9S$_5 ,	, +1$ 	 +,)}%) ) 	)
 
) -) +0(t!4 (	(rc   r   )r   typesr   r   r   r   eth_abi.codecr   	eth_utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   	functoolsr   hexbytesr   typingr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   
eth_typingr#   r$   r%   r&   eth_typing.abir'   r(   web3._utils.abir)   r*   r+   web3._utils.compatr,   web3._utils.emptyr-   web3._utils.encodingr.   r/   r0   web3._utils.rpc_abir1   web3._utils.moduler2   r   web3._utils.normalizersr3   web3.ethr4   r5   web3.exceptionsr6   r7   r8   	web3.gethr9   r:   r;   r<   r=   r>   r?   r@   web3.managerrA   r   web3.middleware.baserB   web3.methodrC   web3.modulerD   web3.netrE   rF   web3.providersrG   rH   web3.providers.eth_testerrI   rJ   web3.providers.ipcrK   web3.providers.persistent.utilsrL   web3.providers.rpcrM   rN   rO   rP   web3.providers.persistentrQ   web3.testingrR   web3.tracingrS   
web3.typesrT   .web3.providers.persistent.subscription_managerrU   web3._utils.batchingrV   rW   rX   r   re   ri   rk   r   r   r   r   rb   rc   rd   <module>r1     s         "  # 
 
 
	 	 	 1 3'F4U4<#3N-O(O#P T#uT&\8C=-H'I"IJ "m. m.`&'u\+<<=> 
$A8 AN )1BCD('.1 D(rc   