
    (ib#                        U 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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mZ d d	lmZmZmZmZ ed
   Zg dZ ee   e!d<   d dd d d d d dZ"erd dl#m$Z$m%Z% edddedefd       Z&edddedef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!edefd"Z,d!eddfd#Z-	 d.ded$   d%ed&ed'e.def
d(Z/ddd)ed*edefd+Z0y)/    N)TYPE_CHECKINGAnyDictListLiteralOptionalUnioncast)ChecksumAddress)assoccurrymerge)HexBytes)all_in_dictany_in_dict)DYNAMIC_FEE_TXN_PARAMS)Web3AttributeErrorWeb3ValueError)BlockIdentifierTxDataTxParams_Hash32)typefromtogasmaxFeePerGasmaxPriorityFeePerGasgasPricevaluedatanoncechainId
accessListmaxFeePerBlobGasblobVersionedHashes)r   r   r   r   r$   r   r   r   r    r!   r"   r#   r%   r&   VALID_TRANSACTION_PARAMS    c                 8    | j                   j                  |      S N)ethestimate_gasw3tx	_defaultss      I/var/www/br/venv/lib/python3.12/site-packages/web3/_utils/transactions.py<lambda>r2   P   s    RVV%8%8%< r(   c                 8    | j                   j                  |      S r*   )r+   generate_gas_pricer-   s      r1   r2   r2   Q   s    "&&*C*CB*G r(   c                 .    | j                   j                  S r*   )r+   max_priority_feer.   _txr0   s      r1   r2   r2   R   s    rvv7N7N r(   c                     |j                  d|j                  d            d| j                  j                  d      d   z  z   S )Nr      latestbaseFeePerGas)getr+   	get_block)r.   r/   defaultss      r1   r2   r2   T   sB    FF)8<<8N+OP266##H-o>>@ r(   c                 .    | j                   j                  S r*   )r+   chain_idr7   s      r1   r2   r2   Y   s    "&&// r(   )r    r!   r   r   r   r   r#   )	AsyncWeb3Web3r.   rC   transactionreturnc                     d|v r=d|vr9t        |d| j                  j                  t        t        |d         d            S |S )Nr   r"   pending)block_identifier)r   r+   get_transaction_countr
   r   )r.   rD   s     r1   
fill_noncerJ   c   sT    !;FF((_k&&9:Y ) 
 	
 r(   c                 N   | j                   j                  |      }|du xr d|vxs t        t        |      }i }t        j                         D ]J  \  }}||vs|r|dk(  s
|s	|t        v rt        |      r| t        d| d       || ||      }n|}|||<   L t        ||      S )z?
    If w3 is None, fill as much as possible while offline
    Nr   zYou must specify a 'z' value in the transaction)	r+   r4   r   r   TRANSACTION_DEFAULTSitemscallabler   r   )r.   rD   strategy_based_gas_priceis_dynamic_fee_transactionr?   keydefault_getterdefault_vals           r1   fill_transaction_defaultsrT   q   s    
  "vv88E!9T!A "+% 	<-{; 
 .0H399; (^k!*:%111 ':(.se3MN  -RhG,'HSM+(, ;''r(   rH   c                 J    | j                   j                  |xs d      }|d   S )Nr;   gasLimit)r+   r>   )r.   rH   blocks      r1   get_block_gas_limitrX      s)     FF-9:Er(   
gas_bufferc                     t        t        t        di |      }| j                  j	                  |      }t        |       }||kD  rt        d| d|       t        |||z         S )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,   rX   r   min)r.   rD   rY   gas_estimate_transactiongas_estimate	gas_limits         r1   get_buffered_gas_estimatera      s{      $Hd.A[.AB66&&'?@L#B'Ii99E G""+.
 	
 y,344r(   transaction_hashc                 ^    | j                   j                  |      }|st        d|d      |S )NSupplied transaction with hash z does not exist)r+   get_transactionr   )r.   rb   current_transactions      r1   get_required_transactionrg      s>    &&001AB-.>-AQ
 	
 r(   transaction_paramsc           	         t        t        t        D ci c]  }|| v r|| |    c}      }t        t        |      r|d   |d   k(  r|j                  d       |j                  d      I| j                  d      6|d   | d   k7  r)d}|dz  }| d   |d   f}t         |j                  |       |S |S |j                  d      #| j                  d      t        |d| d         S |S t        d      c c}w )Nr   r   r!   inputz>failure to handle this transaction due to both "input: {}" andz= "data: {}" are populated. You need to resolve this conflict.z?Unreachable path: transaction's 'data' is either set or not set)r
   r   r'   r   r   popr=   r   formatr   	Exception)rh   rQ   extracted_paramsmsgerr_valss        r1    extract_valid_transaction_paramsrq      s;    0	
(( #C((	
 )+;<J'+;N+KK  ,F#/!!'*6'+=g+FFVVV.w79I&9QR(X)>??''##			f	%	-!!'*6)63Eg3NOO##M
 	
E	
s   C0
c                 >    | D ]  }|t         vst        | d       y )Nz% is not a valid transaction parameter)r'   r   )rh   params     r1   assert_valid_transaction_paramsrt      s/    # R00 E7*O!PQQRr(   )rC   zAsyncWeb3[Any]original_transactionreplacement_transactiongas_multiplierc                    |d   t        d|d   d      d|v r|d   |d   k7  rt        d      d|vrt        |d|d         }t        t        |      r	 |S d|v r|d   |d   |d   k  rt        d      |S | j                  j                  |      }t        t        j                  |d   |z              }|r||kD  rt        |d|      }|S t        |d|      }|S )	N	blockHashrd   hashz has already been minedr"   zDSupplied nonce in new_transaction must match the pending transactionr   z=Supplied gas price must exceed existing transaction gas price)	r   r   r   r   r+   r4   intmathceil)r.   ru   rv   rw   generated_gas_priceminimum_gas_prices         r1   prepare_replacement_transactionr      sb    K(4-.B6.J-M N% %
 	
 ))(,@,IIR
 	
 --"'#W.B7.K#
 )+BC 	2 #"- 	-- ,8":.2Fz2RR O $ #" !ff778OPII*:6GH
 #69J#J&+'5H'# #"	 ','5F'# #"r(   rf   new_transactionc                 R    t        | ||      }| j                  j                  |      S r*   )r   r+   send_transaction)r.   rf   r   s      r1   replace_transactionr     s-     6
O 66""?33r(   r*   )i )g      ?)1r|   typingr   r   r   r   r   r   r	   r
   
eth_typingr   eth_utils.toolzr   r   r   hexbytesr   web3._utils.utility_methodsr   r   web3.constantsr   web3.exceptionsr   r   
web3.typesr   r   r   r   TX_PARAM_LITERALSr'   __annotations__rL   web3rB   rC   rJ   rT   r{   rX   ra   rg   rq   rt   floatr   r   r[   r(   r1   <module>r      s   	 	 	 
   "5 $01 $ <GN	

 :   
6 
 
X 
 
 !(& !(x !(H !( !(J ?C"*?"; :@55%53655& 7 v '
 '
H '
TR RT R "	3#&'3# 3# &3# 	3#
 3#l44%+4>F44r(   