
    (i	              
          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 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 d d	lmZmZmZmZmZ erd d
lmZ d dlmZ dddedee ee!e"f   f   de"fdZ#dddedee ee!e"f   f   defdZ$dddedee ee!e"f   f   defdZ%dddedee ee!e"f   f   de"fdZ&d de#d e%e$e&dZ'	 d)dddee   de"fdZ(	 d*ddded e"de"fd!Z)dddedefd"Z*dddedefd#Z+ddd$edefd%Z,ddd&ed'edefd(Z-y)+    )TYPE_CHECKINGAnyDictOptionalUnioncast)ChecksumAddress)assocmerge)HexBytes)prepare_replacement_transaction)any_in_dict)DYNAMIC_FEE_TXN_PARAMS)Web3ValueError)BlockIdentifierTxDataTxParamsWei_Hash32)AsyncEth)	AsyncWeb3async_w3zAsyncWeb3[Any]tx	_defaultsreturnc                 T   K   | j                   j                  |       d {   S 7 wN)ethestimate_gasr   r   r   s      O/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/async_transactions.py_estimate_gasr"   1   s#      **2....s   (&(defaultsc                    K   | j                   j                  d       d {   }|j                  d|j                  d            }t        t	        |      dt	        |d         z  z         S 7 Kw)NlatestmaxPriorityFeePerGas   baseFeePerGas)r   	get_blockgetr   int)r   r   r#   blockmax_priority_fees        r!   _max_fee_per_gasr.   7   si      ,,((22Evv-C D s#$Co0F,G(GHII	 3s   A/A-AA/_txc                 J   K   | j                   j                   d {   S 7 wr   )r   r-   r   r/   r   s      r!   _max_priority_fee_gasr2   A   s      .....   #!#c                 J   K   | j                   j                   d {   S 7 wr   )r   chain_idr1   s      r!   	_chain_idr6   G   s      &&&&&r3       c                 8    | j                   j                  |      S r   )r   generate_gas_pricer    s      r!   <lambda>r:   Q   s    0O0OPR0S r7   )valuedatagasgasPricer&   maxFeePerGaschainIdNweb3_ethr   block_identifierc                 R   K   | j                  |xs d       d {   }|d   S 7 	w)Nr%   gasLimit)r)   )rA   rB   r,   s      r!   get_block_gas_limitrE   X   s2      $$%5%ABBE Cs   '%
'transaction
gas_bufferc                   K   t        t        t        di |      }| j                  j	                  |       d {   }t        | j                         d {   }||kD  rt        d| d|       t        |||z         S 7 F7 +w)NzrGas estimate for transaction is higher than current network gas limits. Transaction could not be sent. Estimated: z. Current gas limit:  )r   r   dictr   r   rE   r   min)r   rF   rG   gas_estimate_transactiongas_estimate	gas_limits         r!   get_buffered_gas_estimaterO   _   s       $Hd.A[.AB!223KLLL)(,,77Ii99E G""+.
 	
 y,344 M7s!   8BBBB*BBc                    K   d|v rGd|vrC| j                   j                  t        t        |d         d       d {   }t	        |d|      S |S 7 w)Nfromnoncepending)rB   )r   get_transaction_countr   r	   r
   )r   rF   tx_counts      r!   async_fill_noncerV   r   sc      !;!;;+f"56& < 
 
 ['844
s   :AAAc                   K   | j                   j                  |      }|du xr d|vxs t        t        |      }i }t        j                         D ]b  \  }}||vs|r|dk(  s
|s	|t        v rt        |      r4| t        d| d      |dk(  r || ||      }n || ||       d{   }n|}|||<   d t        ||      S 7 w)zE
    If async_w3 is None, fill as much as possible while offline
    Nr>   zYou must specify a 'z' value in the transaction)	r   r9   r   r   TRANSACTION_DEFAULTSitemscallabler   r   )r   rF   strategy_based_gas_priceis_dynamic_fee_transactionr#   keydefault_getterdefault_vals           r!   async_fill_transaction_defaultsr`   ~   s      (||>>{K!9T!A "+% 	<-{; 
 .0H399; (^k!*:%111 '#(.se3MN  *$ #1;"QK(6xh(W"WK,'HSM5(6 ;'' #Xs   ACAC&C'Ctransaction_hashc                 z   K   | j                   j                  |       d {   }|st        d|d      |S 7 w)NzSupplied transaction with hash z does not exist)r   get_transactionr   )r   ra   current_transactions      r!   async_get_required_transactionre      sM      !) < <=M NN-.>-AQ
 	
  Os   ;9;rd   new_transactionc                 n   K   t        | ||      }| j                  j                  |       d {   S 7 wr   )r   r   send_transaction)r   rd   rf   s      r!   async_replace_transactionri      s7      6%O ..????s   ,535r   )i ).typingr   r   r   r   r   r   
eth_typingr	   eth_utils.toolzr
   r   hexbytesr   web3._utils.transactionsr   web3._utils.utility_methodsr   web3.constantsr   web3.exceptionsr   
web3.typesr   r   r   r   r   web3.ethr   	web3.mainr   strbytesr+   r"   r.   r2   r6   rX   rE   rO   rV   r`   re   ri   rI   r7   r!   <module>rw      s'     !//$,/9=c5PSCT>T9U//JJ$,J8<S%s
BS=S8TJJ//%-/:>sE%QT*DU?U:V//''%-':>sE%QT*DU?U:V'' S1$  IM,4_,E JP55-55CF55&		-5		)()(-5)()(X29@@5;@NV@@r7   