o
    ¢ØÆhÀ  ã                   @   sH  d dl mZmZmZmZmZmZmZmZ d dl	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 d dlmZ d d	lmZmZmZmZ d d
lmZm Z  G dd„ deddefdefde!fde!fde!fgƒƒZ"G dd„ deddefde!fde!fde!fdefgƒƒZ#G dd„ deƒZ$G dd„ deƒZ%G dd„ de%ƒZ&dS )é    )ÚAnyÚDictÚ
NamedTupleÚSupportsIndexÚTupleÚTypeÚUnionÚoverloadN)Ú	Signature)ÚChecksumAddress©Úto_checksum_address)ÚHexBytes)Ú	BaseModelÚ
ConfigDictÚFieldÚfield_serializer)Úto_camel)ÚDEFAULT_REF_TEMPLATEÚGenerateJsonSchemaÚJsonSchemaModeÚJsonSchemaValue)Ú
CoreSchemaÚPydanticOmitc                       óz   e Zd Zededefdd„ƒZededeedf fdd„ƒZede	defdd„ƒZde
eee	f def‡ fdd„Z‡  ZS )	ÚSignedTransactionÚindexÚreturnc                 C   ó   d S ©N© ©Úselfr   r    r    úg/var/www/html/HyperOracle/crypto_trader/venv/lib/python3.10/site-packages/eth_account/datastructures.pyÚ__getitem__:   ó   zSignedTransaction.__getitem__.c                 C   r   r   r    r!   r    r    r#   r$   >   r%   c                 C   r   r   r    r!   r    r    r#   r$   B   r%   c                    ó6   t |ttfƒrtƒ  |¡S t |tƒrt| |ƒS tdƒ‚©Nz*Index must be an integer, slice, or string©Ú
isinstanceÚintÚsliceÚsuperr$   ÚstrÚgetattrÚ	TypeErrorr!   ©Ú	__class__r    r#   r$   F   ó
   

©Ú__name__Ú
__module__Ú__qualname__r	   r   r   r$   r+   r   r-   r   Ú__classcell__r    r    r0   r#   r   .   ó    (r   Úraw_transactionÚhashÚrÚsÚvc                       r   )	ÚSignedMessager   r   c                 C   r   r   r    r!   r    r    r#   r$   [   r%   zSignedMessage.__getitem__.c                 C   r   r   r    r!   r    r    r#   r$   _   r%   c                 C   r   r   r    r!   r    r    r#   r$   c   r%   c                    r&   r'   r(   r!   r0   r    r#   r$   g   r2   r3   r    r    r0   r#   r>   O   r8   r>   Úmessage_hashÚ	signaturec                   @   s"   e Zd Zdededefdd„ZdS )ÚOmitJsonSchemaÚschemaÚ
error_infor   c                 C   s   t ‚r   )r   )r"   rB   rC   r    r    r#   Úhandle_invalid_for_json_schemaq   s   z-OmitJsonSchema.handle_invalid_for_json_schemaN)r4   r5   r6   r   r-   r   rD   r    r    r    r#   rA   p   s    ÿÿþrA   c                       sl   e Zd ZdZedded�Zdefdd„Ze	de
edfded	ed
ee dedeeef f
‡ fdd„ƒZ‡  ZS )ÚCustomPydanticModelaP  
    A base class for eth-account pydantic models that provides custom JSON-RPC
    serialization configuration. JSON-RPC serialization is configured to use
    camelCase keys and to exclude fields that are marked as ``exclude=True``. To
    serialize a model to the expected JSON-RPC format, use
    ``model_dump(by_alias=True)``.
    T)Úarbitrary_types_allowedÚpopulate_by_nameÚalias_generatorr   c                 C   s   t jdtdd� | jdd�S )NzSrecursive_model_dump() is deprecated. Please use model_dump(by_alias=True) instead.é   )Ú
stacklevelT)Úby_alias)ÚwarningsÚwarnÚDeprecationWarningÚ
model_dump©r"   r    r    r#   Úrecursive_model_dump†   s   üz(CustomPydanticModel.recursive_model_dumpÚ
validationrK   Úref_templateÚschema_generatorÚmodec                    s   t ƒ j||||d�S )z—
        Omits excluded fields from the JSON schema, preventing errors that would
        otherwise be raised by the default schema generator.
        )rK   rS   rT   rU   )r,   Úmodel_json_schema)ÚclsrK   rS   rT   rU   r0   r    r#   rV   ’   s   üz%CustomPydanticModel.model_json_schema)r4   r5   r6   Ú__doc__r   r   Úmodel_configr   rQ   Úclassmethodr   rA   Úboolr-   r   r   r   r   rV   r7   r    r    r0   r#   rE   w   s0    ýúþýûú
ùrE   c                   @   s’   e Zd ZU eed< eed< eed< eed< eed< eed< edd�Zeed	< edd�Z	e
ed
< edƒededefdd„ƒƒZedefdd„ƒZdS )ÚSignedSetCodeAuthorizationÚchain_idÚaddressÚnonceÚy_parityr;   r<   T)Úexcluder@   Úauthorization_hashÚvaluer   c                 C   s   t |ƒS r   r   )rW   rc   r    r    r#   Úserialize_address±   s   z,SignedSetCodeAuthorization.serialize_addressc                 C   s   | j  | j¡ ¡ S )ay  
        Return the address of the authority that signed the authorization.

        In order to prevent any potential confusion or mal-intent, the authority is
        always derived from the signature and the authorization hash, rather than
        statically assigned. This value should be verified against the expected
        authority for a signed authorization.
        )r@   Ú recover_public_key_from_msg_hashrb   Úto_canonical_addressrP   r    r    r#   Ú	authority¶   s
   
ÿþz$SignedSetCodeAuthorization.authorityN)r4   r5   r6   r*   Ú__annotations__Úbytesr   r@   r
   rb   r   r   rZ   r   rd   Úpropertyrg   r    r    r    r#   r\   §   s   
 r\   )'Útypingr   r   r   r   r   r   r   r	   rL   Úeth_keys.datatypesr
   Ú
eth_typingr   Ú	eth_utilsr   Úhexbytesr   Úpydanticr   r   r   r   Úpydantic.alias_generatorsr   Úpydantic.json_schemar   r   r   r   Úpydantic_corer   r   r*   r   r>   rA   rE   r\   r    r    r    r#   Ú<module>   sF   ( 

ûþÿ
!ûþÿ!0