
    (i                        d dl mZ d dlZd dl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 d dlmZ d dlmZ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"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- d dl.m/Z/ d dl0m1Z1m2Z2 erd dl3m4Z4m5Z5  e	d      Z6 ejn                  d      Z8dede9fdZ: e ee:e8            Z;e
eeee<f   Z=ede
e=ee=   f   deeeef      fd       Z>ededefd       Z?e?j                  e      de6de6fd       ZAde=defdZBe?j                  eeB       e?j                  eCeB       e?j                  e<eB       de2de2fd ZD G d! d"e/      ZEy)#    )singledispatchN)TYPE_CHECKINGAny
CollectionIterableTupleTypeVarUnioncast)Account)LocalAccount)TransactionDictType)
PrivateKey)ChecksumAddressHexStr)to_checksum_addressto_dict)apply_formatter_if)compose)curry)async_fill_nonceasync_fill_transaction_defaults)STANDARD_NORMALIZERS)TRANSACTION_PARAMS_ABISapply_abi_formatters_to_dict)
fill_noncefill_transaction_defaults)Web3TypeError)Web3MiddlewareBuilder)RPCEndpointTxParams)	AsyncWeb3Web3Tto_hexvaluereturnc                 "    t        | t              S N)
isinstancer   )r&   s    H/var/www/br/venv/lib/python3.12/site-packages/web3/middleware/signing.py
is_eth_keyr,   S   s    eZ((    valc              #      K   t        | t        t        t        f      r#| D ]  }t	        |      }|j
                  |f  y t	        |       }|j
                  |f y wr)   )r*   listtupleset
to_accountaddress)r.   iaccounts      r+   gen_normalized_accountsr7   ^   sg      	
  	+A$.qMG//7**	+ S/oow&&s   AAc                 0    t        dt        |              )Nzkey must be one of the types: eth_keys.datatype.PrivateKey, eth_account.signers.local.LocalAccount, or raw private key as a hex string or byte string. Was of type )r   typer.   s    r+   r3   r3   s   s$    
	 Cyk	# r-   c                     | S r)    r:   s    r+   _r=   }   s    Jr-   c                 B    t        |       }t        j                  |      S r)   )key_normalizerr   from_key)r.   normalized_keys     r+   private_key_to_accountrB      s    #C(NN++r-   transactionc                 ,    t        t        t        |       S )a  
    Format transaction so that it can be used correctly in the signing middleware.

    Converts bytes to hex strings and other types that can be passed to
    the underlying layers. Also has the effect of normalizing 'from' for
    easier comparisons.
    )r   r   r   )rC   s    r+   format_transactionrE      s     (5{ r-   c                   z    e Zd ZdZdZeedeee	e   f   ded   dd fd              Z
ddd	edefd
Zddd	edefdZy)SignAndSendRawMiddlewareBuilderNprivate_key_or_accountw3)r#   AsyncWeb3[Any]r'   c                 <    t        |      }t        |       |_        |S r)   )rG   r7   	_accounts)rH   rI   
middlewares      r+   buildz%SignAndSendRawMiddlewareBuilder.build   s"     5R8
67MN
r-   methodr    paramsc                    |dk7  r||fS t        d| j                        }| j                  (t        t        t        |      t        |            | _        | j                  |d         }|j                  dd       }|||| j                  vr||fS | j                  t        |         }|j                  |      j                  }t        d      |j                         gfS )Neth_sendTransactionr#   r   frometh_sendRawTransaction)r   _w3format_and_fill_txr   rE   r   r   getrL   r   sign_transactionraw_transactionr    	to_0x_hex)selfrO   rP   rI   filled_transactiontx_fromr6   raw_txs           r+   request_processorz1SignAndSendRawMiddlewareBuilder.request_processor   s    **6>!fdhh'B&&.*1&-b1rN+' "&!8!8!C(,,VT:G#t~~(Ev~%..)<W)EF 112DEUU   89%%'( r-   c                   K   |dk7  r||fS t        d| j                        }t        |d         }t        ||       d {   }t	        ||       d {   }|j                  dd       }|||| j                  vr||fS | j                  t        |         }|j                  t        t        |            j                  }t        d      |j                         gfS 7 7 w)NrR   rJ   r   rS   rT   )r   rU   rE   r   r   rW   rL   r   rX   EthAccountTxParamsrY   r    rZ   )	r[   rO   rP   rI   formatted_transactionr\   r]   r6   r^   s	            r+   async_request_processorz7SignAndSendRawMiddlewareBuilder.async_request_processor   s     **6>! &1B$6vay$A!'F)( " (8<N'O!O(,,VT:G#t~~(Ev~%..)<W)EF 11+-?@!/ 
   89%%'( !" "Ps#   =C!C C!CB
C!C!)__name__
__module____qualname__rL   rV   staticmethodr   r
   _PrivateKeyr   rN   r   r_   rc   r<   r-   r+   rG   rG      s    I
 %k:k3J&J K*+ 
+   s s <M 3 SV r-   rG   )F	functoolsr   operatortypingr   r   r   r   r   r	   r
   r   eth_accountr   eth_account.signers.localr   eth_account.typesr   ra   eth_keys.datatypesr   
eth_typingr   r   	eth_utilsr   r   eth_utils.curriedr   eth_utils.toolzr   toolzr   web3._utils.async_transactionsr   r   web3._utils.method_formattersr   web3._utils.rpc_abir   r   web3._utils.transactionsr   r   web3.exceptionsr   web3.middleware.baser   
web3.typesr    r!   web3r"   r#   r$   methodcallerto_hexstr_from_eth_keyboolr,   r?   bytesrh   r7   r3   registerr=   rB   strrE   rG   r<   r-   r+   <module>r      s   	 	 	
 
 CL...x8 )c )d ) z#9: L*fe;< 		{J{33	4eO\123 	( C L   \"1   #, , ,
   J 6 7 
  C/ 0 
  E1 2
H 
 
G&; Gr-   