
    (i
                     R   d dl mZ d dlmZmZmZmZmZmZ d dl	m
Z
 d dlmZmZmZmZ d dlmZmZ d dlmZ erd dlmZmZ d dlmZ d	ed
efdZdeded
e
fdZ G d d      Z G d d      Zeded   deee
f   d
ed   fd       Z edddeee
f   d
ed   fd       Z!deded
e
fdZ"y)    )contextmanager)TYPE_CHECKINGAnyDictIteratorUnioncast)ChecksumAddress)is_0x_prefixedis_hexis_hex_addressto_checksum_address)ENSAsyncENS)NameNotFound)	AsyncWeb3Web3)Contractvaluereturnc                     t        | t              syt        |       ryt        |       rt	        |       ryt        j                  |       S )NF)
isinstancestrr   r   r   r   is_valid_name)r   s    @/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/ens.pyis_ens_namer   )   s<    eS!				6%=  ''    ensnamec                 Z    | j                  |      }|rt        |      S t        d|      Nz Could not find address for name )addressr   r   )r   r   addrs      r   validate_name_has_addressr$   4   s1    ;;tD"4((=dXFGGr   c                   6    e Zd Zdeeef   ddfdZdedefdZy)	StaticENSname_addr_pairsr   Nc                 $    t        |      | _        y Ndictregistryselfr'   s     r   __init__zStaticENS.__init__=       _-r   r   c                 :    | j                   j                  |d       S r)   r,   getr.   r   s     r   r"   zStaticENS.address@   s    }}  t,,r   __name__
__module____qualname__r   r   r
   r/   r"    r   r   r&   r&   <   s2    .S/-A(B .t .-C -O -r   r&   c                   6    e Zd Zdeeef   ddfdZdedefdZy)AsyncStaticENSr'   r   Nc                 $    t        |      | _        y r)   r*   r-   s     r   r/   zAsyncStaticENS.__init__E   r0   r   r   c                 B   K   | j                   j                  |d       S wr)   r2   r4   s     r   r"   zAsyncStaticENS.addressH   s     }}  t,,s   r5   r9   r   r   r;   r;   D   s2    .S/-A(B .t .-# -/ -r   r;   w3)r   zAsyncWeb3[Any]r'   Nc              #      K   | j                   }| j                  j                  rt        t        t        |            | _         nt        t        t        |            | _         d  || _         y wr)   )r   provideris_asyncr	   r   r;   r   r&   )r>   r'   original_enss      r   ens_addressesrC   L   sN      66L	{{h ?@c9_56	BFs   A,A.contractr   c              #   j   K   t        | j                  |      5  d ddd       y# 1 sw Y   yxY ww)a&  
    Use this context manager to temporarily resolve name/address pairs
    supplied as the argument. For example:

    with contract_ens_addresses(mycontract, [('resolve-as-1s.eth', '0x111...111')]):
        # any contract call or transaction in here would only resolve the above ENS pair
    N)rC   r>   )rD   r'   s     r   contract_ens_addressesrF   Y   s-      
x{{O	4   s   3'	303	async_ensc                 d   K   | j                  |       d {   }|st        d|      |S 7 wr!   )r"   r   )rG   r   r#   s      r   async_validate_name_has_addressrI   k   s;      ""4((D=dXFGGK )s   0.0)#
contextlibr   typingr   r   r   r   r   r	   
eth_typingr
   	eth_utilsr   r   r   r   r   r   r   web3.exceptionsr   web3r   r   web3.contractr   boolr   r   r$   r&   r;   rC   rF   rI   r9   r   r   <module>rR      s     
(s (t (H3 Hc Ho H- -- - 	&'	:>sO?S:T	d^	 	 +/_0D+Ed^ ""r   