
    (i,              
       `   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mZmZmZmZ d dl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efdefdefd ejF                  dd      fdefdeffZ$ G d de      Z% G d de      Z&	 d)dedee   deee%e&f   fdZ'dee&ef   dee(e(e(f   de)fdZ*d d d dd!Z+h d"Z,e,j[                  e+j]                               Z/deddfd#Z0dedee1ef   fd$Z2ededefd%       Z3e%Z4d&e%deee(e)f      fd'Z5d&e%dee(ddf   fd(Z6y)*    N)AnyDict	GeneratorListOptionalTupleUnioncast)HashableRLP)apply_formatters_to_dict)currydissocmergepartialpipe)Binarybig_endian_intbinary)TypedTransaction)BlobsTransactionDictType   )set_transaction_type_if_needed)LEGACY_TRANSACTION_FORMATTERSLEGACY_TRANSACTION_VALID_VALUESnoncegasPricegasto   T)allow_emptyvaluedatac                   (    e Zd Zedefdefdeffz   Zy)TransactionvrsN)__name__
__module____qualname__UNSIGNED_TRANSACTION_FIELDSr   fields     W/var/www/br/venv/lib/python3.12/site-packages/eth_account/_utils/legacy_transactions.pyr%   r%   ;   s)    (	n	n	n, Fr/   r%   c                       e Zd ZeZy)UnsignedTransactionN)r)   r*   r+   r,   r-   r.   r/   r0   r2   r2   C   s    (Fr/   r2   transaction_dictblobsreturnc           	      .   t        |       } d| v rt        j                  | |      S |t        d      t	        |        t        | t        t        t        t              t        t        t                    }d|v rt        }nt        }|j                  |      S )Ntyper4   z3Blob data is not supported for legacy transactions.r&   )r   r   	from_dict	TypeErrorassert_valid_fieldsr   dictr   r   TRANSACTION_DEFAULTSchain_id_to_vr   r   r%   r2   )r3   r4   filled_transaction
serializers       r0   +serializable_unsigned_transaction_from_dictrA   G   s     66FG!!))*:%HHMNN()+, !>?    
(
 233r/   unsigned_transactionvrsc                    |\  }}}t        | j                         ddd      }t        | t              rl||d<   ||d<   ||d<   | j                  }t        j
                  ||r(|j                  D cg c]  }|j                          c}nd       }|j                         S t        d|||d|}	t        j                  |	      S c c}w )Nr&   r'   r(   r8   r&   r'   r(   r.   )r   as_dict
isinstancer   	blob_datar9   r4   as_bytesencoder%   rlp)
rB   rC   r&   r'   r(   chain_naive_transactionrH   blobsigned_typed_transactionsigned_transactions
             r0   encode_transactionrP   b   s     IQ1$%9%A%A%CS#sS&(89 ()$'($'($(22	#3#=#=#CLy?t4==??RV$
  (..00$NqAN6MN::()) @s   .C
r/   )r   r"   r#   chainId>   r   r   r#   r   r"   rQ   r   c                    t         j                  | j                               }|rt        dt	        |             t        | j                               j                  t              }|rt        dt	        |             t        t        |       }t        |j                               s?|j                         D ci c]  \  }}|s|| |    }}}t        dt	        |             y c c}}w )Nz'Transaction must include these fields: z2Transaction must not include unrecognized fields: z Transaction had invalid fields: )REQUIRED_TRANSACTION_KEYS
differencekeysr:   reprsetALLOWED_TRANSACTION_KEYSr   r   allvaluesitems)r3   missing_keyssuperfluous_keysvalid_fieldskeyvalidinvalids          r0   r;   r;      s   ,778H8M8M8OPLA$|BTAUVWW +0023>>?WX@$%&(
 	
 ,')9L |""$% +002
U !#&&
 

 :4=/JKK &
s   >C+c                 J    | j                  d      }|| S t        | |dd      S )NrQ   r   rE   )popr<   )r3   chain_ids     r0   r>   r>      s0    ##I.H$A;;r/   c                 >    t        t        t        t        |             S N)r
   r   r   r=   )r3   s    r0   fill_transaction_defaultsrg      s     #U+?AQ%RSSr/   transactionc                 ^    t        j                  | t        t                    }t	        |      S rf   )	itertoolsislicelenr,   list)rh   unsigned_partss     r0   strip_signaturero      s%    %%k37R3STNr/   c                       fddD        S )Nc              3   6   K   | ]  }t        |        y wrf   )getattr).0partrh   s     r0   	<genexpr>zvrs_from.<locals>.<genexpr>   s     94GK&9s   rC   r.   )rh   s   `r0   vrs_fromrv      s    9599r/   rf   )7rj   typingr   r   r   r   r   r   r	   r
   eth_rlpr   eth_utils.curriedr   eth_utils.toolzr   r   r   r   r   rK   	rlp.sedesr   r   r   eth_account.typed_transactionsr   eth_account.typesr   r   transaction_utilsr   
validationr   r   fixed_lengthr,   r%   r2   rA   intbytesrP   r=   rX   rT   rU   rS   r;   strr>   rg   ChainAwareUnsignedTransactionro   rv   r.   r/   r0   <module>r      s   	 	 	   
 n 
N	6rt45nV + )+ )
 EI4)42:5/4
[*==>46* 35E EF*	sC}	* *2 	 	  5?? 
L*= L$ L8<$7 <DcN < T)TT T !,    eCJ6G1H  
:+ :)CtO*D :r/   