Ë
    µŒjI  ã                   óZ   — 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
y)é    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y)Ú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.
    Úaccount_addressÚapi_keyÚfilterÚpageÚoffsetÚstart_blockÚ	end_blockÚsortc	                 óx  — || _         t        j                  j                  d«      xs || _        || _        || _        || _        || _        || _	        || _
        | j                  st        d«      ‚t        j                  d| j                   «      st        d| j                   › �«      ‚|dvrt        d|› �«      ‚y )NÚETHERSCAN_API_KEYzEtherscan API key not providedz^0x[a-fA-F0-9]{40}$zInvalid contract address )Únormal_transactionÚ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	            úx/var/www/html/Fitness-lenito-AI-main/venv/lib/python3.12/site-packages/langchain_community/document_loaders/etherscan.pyÚ__init__zEtherscanLoader.__init__   s¹   € ð  /ˆÔÜ—z‘z—~‘~Ð&9Ó:ÒE¸gˆŒØˆŒØˆŒ	ØˆŒØ&ˆÔØ"ˆŒØˆŒ	à�|Š|ÜÐ=Ó>Ð>ä�x‰xÐ.°×0DÑ0DÔEÜÐ8¸×9MÑ9MÐ8NÐOÓPÐPØð 
ñ 
ô ˜¨v¨hÐ7Ó8Ð8ð
ó    Úreturnc              #   óÊ  K  — g }| j                   dk(  r| j                  «       }n²| j                   dk(  r| j                  «       }n’| j                   dk(  r| j                  «       }nr| j                   dk(  r| j	                  «       }nR| j                   dk(  r| j                  «       }n2| j                   dk(  r| j                  «       }nt        dt         › �«      ‚|D ]  }|–— Œ y­w)	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Ø�[‰[Ð2Ò2Ø×'Ñ'Ó)‰FØ�[‰[Ð/Ò/Ø—_‘_Ó&‰FØ�[‰[˜MÒ)Ø×'Ñ'Ó)‰FØ�[‰[Ð0Ò0Ø×%Ñ%Ó'‰FØ�[‰[Ð1Ò1Ø×&Ñ&Ó(‰Fä˜¬v¨hÐ7Ó8Ð8ÛˆCØ‹Iñ ùs   ‚C!C#c                 óz  — d| j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › d| j                  › �}	 t        j                  |«      }|j                  «        j                  «       d	   }g }t        |«      d
k(  rt        d¬«      gS |D ]8  }t!        |«      }|d   |d   |d   dœ}|j#                  t        ||¬«      «       Œ: t        t        |«      «       |S # t        j                  j                  $ r}t        d|«       Y d }~Œ±d }~ww xY w)NzBhttps://api.etherscan.io/api?module=account&action=txlist&address=ú&startblock=ú
&endblock=ú&page=ú&offset=ú&sort=ú&apikey=ú(Error occurred while making the request:r,   r   Ú ©Úpage_contentÚfromÚhashÚto©r:   Útx_hashr<   ©r9   Úmetadata©r	   r   r   r   r   r   r
   Úrequestsr   Úraise_for_statusÚ
exceptionsÚRequestExceptionÚprintÚjsonÚlenr   ÚstrÚappend©	r    ÚurlÚresponseÚeÚitemsr,   ÚitemÚcontentr@   s	            r!   r&   zEtherscanLoader.getNormTxJ   s.  € àPÐQU×QeÑQeÐPfØ˜4×+Ñ+Ð,¨J°t·~±~Ð6FÀfÈTÏYÉYÈKØ�t—{‘{�m 6¨$¯)©)¨°H¸T¿\¹\¸NðLð 	ð
	AÜ—|‘| CÓ(ˆHØ×%Ñ%Ô'ð —‘“ Ñ)ˆØˆÜˆu‹:˜Š?Ü¨"Ô-Ð.Ð.ÛˆDÜ˜$“iˆGØ $ V¡¸¸f¹ÈTÐRVÉZÑXˆHØ�M‰Mœ(°À(ÔKÕLð ô 	Œc�&‹kÔØˆøô ×"Ñ"×3Ñ3ò 	AÜÐ<¸a×@Ñ@ûð	Aús   Á%D ÄD:Ä$D5Ä5D:c                 ó.  — d| j                   › d| j                  › �}	 t        j                  |«      }|j	                  «        t        j                  «       d   ¬«      gS # t        j
                  j                  $ r}t        d|«       Y d }~ŒLd }~ww xY w)NzChttps://api.etherscan.io/api?module=account&action=balance&address=z&tag=latest&apikey=r6   r,   r8   )
r	   r
   rB   r   rC   rD   rE   rF   r   rG   )r    rL   rM   rN   s       r!   r)   zEtherscanLoader.getEthBalance`   s’   € ðØ×,Ñ,Ð-Ð-@ÀÇÁÀðPð 	ð
	AÜ—|‘| CÓ(ˆHØ×%Ñ%Ô'ô  h§m¡m£o°hÑ&?Ô@ÐAÐAøô ×"Ñ"×3Ñ3ò 	AÜÐ<¸a×@Ñ@ûð	Aús   ž%A! Á!BÁ>BÂBc                 óR  — d| j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › d| j                  › �}	 t        j                  |«      }|j                  «        j                  «       d	   }g }t        |«      d
k(  rt        d¬«      gS |D ]8  }t!        |«      }|d   |d   |d   dœ}|j#                  t        ||¬«      «       Œ: |S # t        j                  j                  $ r}t        d|«       Y d }~Œ�d }~ww xY w)NzJhttps://api.etherscan.io/api?module=account&action=txlistinternal&address=r0   r1   r2   r3   r4   r5   r6   r,   r   r7   r8   r:   r;   r<   r=   r?   rA   rK   s	            r!   r'   zEtherscanLoader.getInternalTxm   ó#  € ðØ×,Ñ,Ð-¨\¸$×:JÑ:JÐ9KØ˜Ÿ™Ð(¨¨t¯y©y¨k¸À$Ç+Á+ÀØ�T—Y‘Y�K˜x¨¯© ~ð7ð 	ð	AÜ—|‘| CÓ(ˆHØ×%Ñ%Ô'ð —‘“ Ñ)ˆØˆÜˆu‹:˜Š?Ü¨"Ô-Ð.Ð.ÛˆDÜ˜$“iˆGØ $ V¡¸¸f¹ÈTÐRVÉZÑXˆHØ�M‰Mœ(°À(ÔKÕLð ð ˆøô ×"Ñ"×3Ñ3ò 	AÜÐ<¸a×@Ñ@ûð	Aúó   Á%C3 Ã3D&ÄD!Ä!D&c                 óR  — d| j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › d| j                  › �}	 t        j                  |«      }|j                  «        j                  «       d	   }g }t        |«      d
k(  rt        d¬«      gS |D ]8  }t!        |«      }|d   |d   |d   dœ}|j#                  t        ||¬«      «       Œ: |S # t        j                  j                  $ r}t        d|«       Y d }~Œ�d }~ww xY w)NzChttps://api.etherscan.io/api?module=account&action=tokentx&address=r0   r1   r2   r3   r4   r5   r6   r,   r   r7   r8   r:   r;   r<   r=   r?   rA   rK   s	            r!   r(   zEtherscanLoader.getERC20Tx„   rT   rU   c                 óR  — d| j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › d| j                  › �}	 t        j                  |«      }|j                  «        j                  «       d	   }g }t        |«      d
k(  rt        d¬«      gS |D ]8  }t!        |«      }|d   |d   |d   dœ}|j#                  t        ||¬«      «       Œ: |S # t        j                  j                  $ r}t        d|«       Y d }~Œ�d }~ww xY w)NzFhttps://api.etherscan.io/api?module=account&action=tokennfttx&address=r0   r1   r2   r3   r4   r5   r6   r,   r   r7   r8   r:   r;   r<   r=   r?   rA   rK   s	            r!   r*   zEtherscanLoader.getERC721Tx›   rT   rU   c                 óR  — d| j                   › d| j                  › d| j                  › d| j                  › d| j                  › d| j
                  › d| j                  › �}	 t        j                  |«      }|j                  «        j                  «       d	   }g }t        |«      d
k(  rt        d¬«      gS |D ]8  }t!        |«      }|d   |d   |d   dœ}|j#                  t        ||¬«      «       Œ: |S # t        j                  j                  $ r}t        d|«       Y d }~Œ�d }~ww xY w)NzGhttps://api.etherscan.io/api?module=account&action=token1155tx&address=r0   r1   r2   r3   r4   r5   r6   r,   r   r7   r8   r:   r;   r<   r=   r?   rA   rK   s	            r!   r+   zEtherscanLoader.getERC1155Tx²   rT   rU   N)z	docs-demor   é   é
   r   iÿàõÚdesc)Ú__name__Ú
__module__Ú__qualname__Ú__doc__rI   Úintr"   r   r   r.   r   r&   r)   r'   r(   r*   r+   © r#   r!   r   r      så   „ ñð #Ø*ØØØØ!Øñ!9àð!9ð ð!9ð ð	!9ð
 ð!9ð ð!9ð ð!9ð ð!9ð ó!9ðF˜8 HÑ-ó ð(˜4 ™>ó ð,B˜t H™~ó Bð˜t H™~ó ð.˜D ™Nó ð.˜T (™^ó ð.˜d 8™nô r#   r   )r   r   Útypingr   r   rB   Úlangchain_core.documentsr   Ú)langchain_community.document_loaders.baser   r   ra   r#   r!   Ú<module>re      s%   ðÛ 	Û 	ß !ã Ý -å @ô|�jõ |r#   