§
    šŠtjI  ã                   ób   — d dl Z d dlZd dlmZmZ d dlZd dlmZ d dlm	Z	  G d„ de	¦  «        Z
dS )é    N)ÚIteratorÚList)ÚDocument)Ú
BaseLoaderc                   óò   — e Zd ZdZ	 	 	 	 	 	 	 dd	ed
ededededededefd„Zdee         fd„Z	de
e         fd„Zde
e         fd„Zde
e         fd„Zde
e         fd„Zde
e         fd„Zde
e         fd„ZdS )ÚEtherscanLoaderz½Load transactions from `Ethereum` mainnet.

    The Loader use Etherscan API to interact with Ethereum mainnet.

    ETHERSCAN_API_KEY environment variable must be set use this loader.
    ú	docs-demoÚnormal_transactioné   é
   r   éÿàõÚdescÚaccount_addressÚapi_keyÚfilterÚpageÚoffsetÚstart_blockÚ	end_blockÚsortc	                 ón  — || _         t          j                             d¦  «        p|| _        || _        || _        || _        || _        || _	        || _
        | j        st          d¦  «        ‚t          j        d| j         ¦  «        st          d| j         › �¦  «        ‚|dvrt          d|› �¦  «        ‚d S )NÚETHERSCAN_API_KEYzEtherscan API key not providedz^0x[a-fA-F0-9]{40}$zInvalid contract address )r
   Úinternal_transactionÚerc20_transactionÚeth_balanceÚerc721_transactionÚerc1155_transactionúInvalid filter )r   ÚosÚenvironÚgetr   r   r   r   r   r   r   Ú
ValueErrorÚreÚmatch)	Úselfr   r   r   r   r   r   r   r   s	            úl/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/langchain_community/document_loaders/etherscan.pyÚ__init__zEtherscanLoader.__init__   sÓ   € ð  /ˆÔÝ”z—~’~Ð&9Ñ:Ô:ÐE¸gˆŒØˆŒØˆŒ	ØˆŒØ&ˆÔØ"ˆŒØˆŒ	àŒ|ð 	?ÝÐ=Ñ>Ô>Ð>åŒxÐ.°Ô0DÑEÔEð 	QÝÐO¸Ô9MÐOÐOÑPÔPÐPØð 
ð 
ð 
õ Ð7¨vÐ7Ð7Ñ8Ô8Ð8ð
ð 
ó    Úreturnc              #   óÎ  K  — g }| j         dk    r|                      ¦   «         }n·| j         dk    r|                      ¦   «         }n—| j         dk    r|                      ¦   «         }nw| j         dk    r|                      ¦   «         }nW| j         dk    r|                      ¦   «         }n7| j         dk    r|                      ¦   «         }nt          dt           › �¦  «        ‚|D ]}|V — ŒdS )	zLazy load Documents from table.r
   r   r   r   r   r   r   N)r   Ú	getNormTxÚgetInternalTxÚ
getERC20TxÚgetEthBalanceÚgetERC721TxÚgetERC1155Txr"   )r%   ÚresultÚdocs      r&   Ú	lazy_loadzEtherscanLoader.lazy_load6   s  è è € àˆØŒ;Ð.Ò.Ð.Ø—^’^Ñ%Ô%ˆFˆFØŒ[Ð2Ò2Ð2Ø×'Ò'Ñ)Ô)ˆFˆFØŒ[Ð/Ò/Ð/Ø—_’_Ñ&Ô&ˆFˆFØŒ[˜MÒ)Ð)Ø×'Ò'Ñ)Ô)ˆFˆFØŒ[Ð0Ò0Ð0Ø×%Ò%Ñ'Ô'ˆFˆFØŒ[Ð1Ò1Ð1Ø×&Ò&Ñ(Ô(ˆFˆFåÐ7­vÐ7Ð7Ñ8Ô8Ð8Øð 	ð 	ˆCØˆIˆIˆIˆIð	ð 	r(   c                 óˆ  — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › �}	 t          j        |¦  «        }| 	                    ¦   «          n1# t          j
        j        $ r}t          d|¦  «         Y d }~nd }~ww xY w|                     ¦   «         d	         }g }t          |¦  «        d
k    rt          d¬¦  «        gS |D ]M}t!          |¦  «        }|d         |d         |d         dœ}|                     t          ||¬¦  «        ¦  «         ŒNt          t          |¦  «        ¦  «         |S )NzBhttps://api.etherscan.io/api?module=account&action=txlist&address=ú&startblock=ú
&endblock=ú&page=ú&offset=ú&sort=ú&apikey=ú(Error occurred while making the request:r1   r   Ú ©Úpage_contentÚfromÚhashÚto©r?   Útx_hashrA   ©r>   Úmetadata©r   r   r   r   r   r   r   Úrequestsr!   Úraise_for_statusÚ
exceptionsÚRequestExceptionÚprintÚjsonÚlenr   ÚstrÚappend©	r%   ÚurlÚresponseÚeÚitemsr1   ÚitemÚcontentrE   s	            r&   r+   zEtherscanLoader.getNormTxJ   s¦  € ðLÐQUÔQeð Lð LØÔ+ðLð LØ7;´~ðLð LØMQÌYðLð Là”{ðLð Là*.¬)ðLð Là=A¼\ðLð Lð 	ð
	AÝ”| CÑ(Ô(ˆHØ×%Ò%Ñ'Ô'Ð'Ð'øÝÔ"Ô3ð 	Að 	Að 	AÝÐ<¸aÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@øøøøð	Aøøøà—’‘” Ô)ˆØˆÝˆu‰:Œ:˜Š?ˆ?Ý¨"Ð-Ñ-Ô-Ð.Ð.Øð 	Mð 	MˆDÝ˜$‘i”iˆGØ $ V¤¸¸f¼ÈTÐRVÌZÐXÐXˆHØ�MŠM�(°À(ÐKÑKÔKÑLÔLÐLÐLÝ�c�&‰kŒkÑÔÐØˆó   ¼(A% Á%BÁ9BÂBc                 ó.  — d| j         › d| j        › �}	 t          j        |¦  «        }|                     ¦   «          n1# t          j        j        $ r}t          d|¦  «         Y d }~nd }~ww xY wt          | 	                    ¦   «         d         ¬¦  «        gS )NzChttps://api.etherscan.io/api?module=account&action=balance&address=z&tag=latest&apikey=r;   r1   r=   )
r   r   rG   r!   rH   rI   rJ   rK   r   rL   )r%   rQ   rR   rS   s       r&   r.   zEtherscanLoader.getEthBalance`   sÄ   € ðPØÔ,ðPð PØAEÄðPð Pð 	ð
	AÝ”| CÑ(Ô(ˆHØ×%Ò%Ñ'Ô'Ð'Ð'øÝÔ"Ô3ð 	Að 	Að 	AÝÐ<¸aÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@øøøøð	Aøøøå h§m¢m¡o¤o°hÔ&?Ð@Ñ@Ô@ÐAÐAs   ”(= ½A+ÁA&Á&A+c                 óP  — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › �}	 t          j        |¦  «        }| 	                    ¦   «          n1# t          j
        j        $ r}t          d|¦  «         Y d }~nd }~ww xY w|                     ¦   «         d	         }g }t          |¦  «        d
k    rt          d¬¦  «        gS |D ]M}t!          |¦  «        }|d         |d         |d         dœ}|                     t          ||¬¦  «        ¦  «         ŒN|S )NzJhttps://api.etherscan.io/api?module=account&action=txlistinternal&address=r5   r6   r7   r8   r9   r:   r;   r1   r   r<   r=   r?   r@   rA   rB   rD   rF   rP   s	            r&   r,   zEtherscanLoader.getInternalTxm   ó‡  € ð7ØÔ,ð7ð 7Ø:>Ô:Jð7ð 7àœð7ð 7à/3¬yð7ð 7àBFÄ+ð7ð 7ð ”Yð7ð 7ð )-¬ð7ð 7ð 	ð	AÝ”| CÑ(Ô(ˆHØ×%Ò%Ñ'Ô'Ð'Ð'øÝÔ"Ô3ð 	Að 	Að 	AÝÐ<¸aÑ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@øøøøð	Aøøøà—’‘” Ô)ˆØˆÝˆu‰:Œ:˜Š?ˆ?Ý¨"Ð-Ñ-Ô-Ð.Ð.Øð 	Mð 	MˆDÝ˜$‘i”iˆGØ $ V¤¸¸f¼ÈTÐRVÌZÐXÐXˆHØ�MŠM�(°À(ÐKÑKÔKÑLÔLÐLÐLØˆrW   c                 óP  — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › �}	 t          j        |¦  «        }| 	                    ¦   «          n1# t          j
        j        $ r}t          d|¦  «         Y d }~nd }~ww xY w|                     ¦   «         d	         }g }t          |¦  «        d
k    rt          d¬¦  «        gS |D ]M}t!          |¦  «        }|d         |d         |d         dœ}|                     t          ||¬¦  «        ¦  «         ŒN|S )NzChttps://api.etherscan.io/api?module=account&action=tokentx&address=r5   r6   r7   r8   r9   r:   r;   r1   r   r<   r=   r?   r@   rA   rB   rD   rF   rP   s	            r&   r-   zEtherscanLoader.getERC20Tx„   rZ   rW   c                 óP  — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › �}	 t          j        |¦  «        }| 	                    ¦   «          n1# t          j
        j        $ r}t          d|¦  «         Y d }~nd }~ww xY w|                     ¦   «         d	         }g }t          |¦  «        d
k    rt          d¬¦  «        gS |D ]M}t!          |¦  «        }|d         |d         |d         dœ}|                     t          ||¬¦  «        ¦  «         ŒN|S )NzFhttps://api.etherscan.io/api?module=account&action=tokennfttx&address=r5   r6   r7   r8   r9   r:   r;   r1   r   r<   r=   r?   r@   rA   rB   rD   rF   rP   s	            r&   r/   zEtherscanLoader.getERC721Tx›   rZ   rW   c                 óP  — d| j         › d| j        › d| j        › d| j        › d| j        › d| j        › d| j        › �}	 t          j        |¦  «        }| 	                    ¦   «          n1# t          j
        j        $ r}t          d|¦  «         Y d }~nd }~ww xY w|                     ¦   «         d	         }g }t          |¦  «        d
k    rt          d¬¦  «        gS |D ]M}t!          |¦  «        }|d         |d         |d         dœ}|                     t          ||¬¦  «        ¦  «         ŒN|S )NzGhttps://api.etherscan.io/api?module=account&action=token1155tx&address=r5   r6   r7   r8   r9   r:   r;   r1   r   r<   r=   r?   r@   rA   rB   rD   rF   rP   s	            r&   r0   zEtherscanLoader.getERC1155Tx²   rZ   rW   N)r	   r
   r   r   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rN   Úintr'   r   r   r3   r   r+   r.   r,   r-   r/   r0   © r(   r&   r   r      s|  € € € € € ðð ð #Ø*ØØØØ!Øð!9ð !9àð!9ð ð!9ð ð	!9ð
 ð!9ð ð!9ð ð!9ð ð!9ð ð!9ð !9ð !9ð !9ðF˜8 HÔ-ð ð ð ð ð(˜4 œ>ð ð ð ð ð,B˜t Hœ~ð Bð Bð Bð Bð˜t Hœ~ð ð ð ð ð.˜D œNð ð ð ð ð.˜T (œ^ð ð ð ð ð.˜d 8œnð ð ð ð ð ð r(   r   )r   r#   Útypingr   r   rG   Úlangchain_core.documentsr   Ú)langchain_community.document_loaders.baser   r   rc   r(   r&   ú<module>rg      sš   ðØ 	€	€	€	Ø 	€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à €€€Ø -Ð -Ð -Ð -Ð -Ð -à @Ð @Ð @Ð @Ð @Ð @ð|ð |ð |ð |ð |�jñ |ô |ð |ð |ð |r(   