Skip to main content
Glama

ONEDeFi MCP Server

by JMadhan1
yield_farming.cpython-311.pyc17.1 kB
� R\�hC��t�ddlZddlZddlmZddlmZddlmZeje ��Z Gd�d��Z dS)�N)�EthereumClient)� PolygonClient)� SolanaClientc�~�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Z d �Z d �Z d �Zd �Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�YieldFarmingOperationsz0Yield farming and liquidity provision operationsc��t��|_t��|_t ��|_dddd�ddd�d�|_dS) N�*0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f�*0x1F98431c8aD98523631AE4a59f267346ea31F984�*0xC0AEe478e3658e2610c5F7A4A2E1777cE9e4f2Ac)� uniswap_v2� uniswap_v3� sushiswap�*0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32�*0xc35DADB65012eC5796536bD9864eD8773aBc74C4)� quickswapr)�ethereum�polygon)r�ethereum_clientr�polygon_clientr� solana_client� protocols)�selfs �2/home/runner/workspace/defi_tools/yield_farming.py�__init__zYieldFarmingOperations.__init__ sc��-�/�/���+�o�o���)�^�^��� K�J�I��� J�I���  �  �����c ��� |���dkr|�|||||||��S|���dkr|�|||||||��S|���dkr|�|||||||��Sdd|��d�S#t$rF} t �dt| ������dt| ��d�cYd} ~ Sd} ~ wwxYw) zAdd liquidity to a farming poolrr�solanaF�Unsupported blockchain: ��success�errorz Add liquidity operation failed: N)�lower�_add_liquidity_ethereum�_add_liquidity_polygon�_add_liquidity_solana� Exception�loggerr!�str) r� blockchain�protocol�wallet_address�pool_id�token_a�token_b�amount_a�amount_b�es r� add_liquidityz$YieldFarmingOperations.add_liquiditys2�� 7����!�!�Z�/�/��3�3�H�n�g�W^�`g�iq�s{�|�|�|��!�!�#�#�y�0�0��2�2�8�^�W�V]�_f�hp�rz�{�{�{��!�!�#�#�x�/�/��1�1�(�N�G�U\�^e�go�qy�z�z�z�#(�3Z�j�3Z�3Z�[�[�[��� 7� 7� 7� �L�L�D�C��F�F�D�D� E� E� E�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s.�2B#�2B#�(2B#�B#�# C3�-;C.�(C3�.C3c�~� |���dkr|�|||||��S|���dkr|�|||||��Sdd|��d�S#t$rF}t�dt |������dt |��d�cYd}~Sd}~wwxYw)zAdd liquidity on Ethereum�uniswaprF�Unsupported protocol: rz$Ethereum liquidity addition failed: N)r"�_add_liquidity_uniswap_v2�_add_liquidity_sushiswapr&r'r!r(� rr*r+r,r-r.r/r0r1s rr#z.YieldFarmingOperations._add_liquidity_ethereum.s��� 7��~�~���9�,�,��5�5�n�g�w�X`�bj�k�k�k����!�!�[�0�0��4�4�^�W�g�W_�ai�j�j�j�#(�3V�H�3V�3V�W�W�W��� 7� 7� 7� �L�L�H��A���H�H� I� I� I�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s(�0A,�0A,�$A,�, B<�6;B7�1B<�7B<c �� d}ddd�ddd�ddd�ddd�d dd�d dd�d dd�d dd�gd dd�g}tt|��dz��}tt|��dz��} t|j�����dz} |j�|d||t|��t|��|| || g���} |j�||| d���} | r=|�||||��} d| dd||||| |�||��|| d�d� Sddd�S#t$rF}t� dt|������dt|��d�cYd}~Sd}~wwxYw) zAdd liquidity to Uniswap V2�*0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D�tokenA�address��name�type�tokenB�amountADesired�uint256�amountBDesired� amountAMin� amountBMin�to�deadline� addLiquidity�function��inputsr>r?�ffffff�?�r��abi�args�0�r+� to_address�data�valueTr r2)�routerrG) r �tx_hashr*� operationr-r.r/r0� lp_tokens� pool_address�metadataF�Transaction failedrz&Uniswap V2 liquidity addition failed: N) �intr�get_current_timestamp�encode_function_call�send_transaction�_calculate_lp_tokens�_get_pair_addressr&r'r!r(�rr+r-r.r/r0�router_address�add_liquidity_abi� amount_a_min� amount_b_minrG� function_datarWrYr1s rr6z0YieldFarmingOperations._add_liquidity_uniswap_v2<s6��? 7�I�N� &�y�9�9�%�y�9�9�-�y�A�A�-�y�A�A�)�9�=�=�)�9�=�=�!�9�5�5�'��;�;� �'�"� "� "� !� � �s�8�}�}�t�3�4�4�L��s�8�}�}�t�3�4�4�L��4�/�E�E�G�G�H�H�4�O�H�!�0�E�E�%�a�(��w��H� � �s�8�}�}�l�T`�bp�rz�{�F���M� �*�;�;�-�)�"�� <���G�� I� �5�5�g�w��RZ�[�[� � $�&� ,�!0�&�&� (� (�!*�$(�$:�$:�7�G�$L�$L�"0�$,�!�!����"$)�3G�H�H�H��� 7� 7� 7� �L�L�J�#�a�&�&�J�J� K� K� K�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s$�D0D8�3D8�8 F�;F�=F�Fc ��� d}ddd�ddd�ddd�ddd�d dd�d dd�d dd�d dd�gd dd�g}tt|��dz��}tt|��dz��} t|j�����dz} |j�|d||t|��t|��|| || g���} |j�||| d���} | r'|�||||��} d| dd||||| d|id� Sddd�S#t $rF}t�dt|������dt|��d�cYd}~Sd}~wwxYw) zAdd liquidity to SushiSwap�*0xd9e1cE17f2641f24aE83637ab66a2cca9C378B9Fr;r<r=r@rArBrCrDrErFrGrHrIrJrLrMrrNrQrRTrr2rV) r rWr*rXr-r.r/r0rYr[Fr\rz%SushiSwap liquidity addition failed: N) r]rr^r_r`rar&r'r!r(rcs rr7z/YieldFarmingOperations._add_liquidity_sushiswaps��9 7�I�N� &�y�9�9�%�y�9�9�-�y�A�A�-�y�A�A�)�9�=�=�)�9�=�=�!�9�5�5�'��;�;� �'�"� "� "� !� ��s�8�}�}�t�3�4�4�L��s�8�}�}�t�3�4�4�L��4�/�E�E�G�G�H�H�4�O�H� �0�E�E�%�a�(��w��H� � �s�8�}�}�l�T`�bp�rz�{�F���M� �*�;�;�-�)�"�� <���G�� I� �5�5�g�w��RZ�[�[� � $�&� +�!0�&�&� (� (�!*� �.�!� � � �$)�3G�H�H�H��� 7� 7� 7� �L�L�I��Q���I�I� J� J� J�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s$�DD"�D"�" E2�,;E-�'E2�-E2c�� |���dkr|�|||||��Sdd|��d�S#t$rF}t�dt |������dt |��d�cYd}~Sd}~wwxYw)zAdd liquidity on PolygonrFr5rz#Polygon liquidity addition failed: N)r"�_add_liquidity_quickswapr&r'r!r(r8s rr$z-YieldFarmingOperations._add_liquidity_polygon�s��� 7��~�~���;�.�.��4�4�^�W�g�W_�ai�j�j�j�#(�3V�H�3V�3V�W�W�W��� 7� 7� 7� �L�L�G�s�1�v�v�G�G� H� H� H�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s�0;�;� B �;B�B �B c �� d}ddd�ddd�ddd�ddd�d dd�d dd�d dd�d dd�gd dd�g}tt|��dz��}tt|��dz��} t|j�����dz} |j�|d||t|��t|��|| || g���} |j�||| d���} | rd| dd||||dd|id� Sddd�S#t $rF} t �dt| ������dt| ��d�cYd } ~ Sd } ~ wwxYw)!zAdd liquidity to QuickSwap�*0xa5E0829CaCEd8fFDD4De3c43696c57F7D7A678ffr;r<r=r@rArBrCrDrErFrGrHrIrJrLrMrrNrQrRTrr2rrV) r rWr*rXr-r.r/r0r)r[Fr\rz%QuickSwap liquidity addition failed: N) r]rr^r_r`r&r'r!r()rr+r-r.r/r0rdrerfrgrGrhrWr1s rrlz/YieldFarmingOperations._add_liquidity_quickswap�s���6 7�I�N�&�y�9�9�%�y�9�9�-�y�A�A�-�y�A�A�)�9�=�=�)�9�=�=�!�9�5�5�'��;�;� �'�"� "� "� !� ��s�8�}�}�t�3�4�4�L��s�8�}�}�t�3�4�4�L��4�.�D�D�F�F�G�G�$�N�H� �/�D�D�%�a�(��w��H� � �s�8�}�}�l�T`�bp�rz�{�E���M� �)�:�:�-�)�"�� ;���G�� I�#�&� +�!0�&�&� (� (�"+� �.�!� � � �$)�3G�H�H�H��� 7� 7� 7� �L�L�I��Q���I�I� J� J� J�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s$�DD �D � E�;E�E�Ec�� |���dkr|�||||||��S|���dkr|�||||||��Sdd|��d�S#t$rF}t�dt |������dt |��d�cYd}~Sd}~wwxYw)zAdd liquidity on Solana�raydium�orcaFr5rz"Solana liquidity addition failed: N)r"�_add_liquidity_raydium�_add_liquidity_orcar&r'r!r(r8s rr%z,YieldFarmingOperations._add_liquidity_solanas��� 7��~�~���9�,�,��2�2�>�7�G�U\�^f�hp�q�q�q����!�!�V�+�+��/�/����RY�[c�em�n�n�n�#(�3V�H�3V�3V�W�W�W��� 7� 7� 7� �L�L�F�c�!�f�f�F�F� G� G� G�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s(�1A.�1A.�&A.�. B>�8;B9�3B>�9B>c �L� |j�||||||���}|j�||g���}|r d|dd|||||dd� Sdd d �S#t$rF} t�d t | ������dt | ��d �cYd } ~ Sd } ~ wwxYw) zAdd liquidity to Raydium)r+r,r-r.r/r0)r+� instructionsTrpr2r) r rWr*rXr,r-r.r/r0r)Fr\rz#Raydium liquidity addition failed: N)r�'build_raydium_add_liquidity_instructionr`r&r'r!r() rr+r,r-r.r/r0� instructionrWr1s rrrz-YieldFarmingOperations._add_liquidity_raydiums ��" 7��,�T�T�-����!�!� U���K��(�9�9�-�)�]�:���G� � I�#�&� )�!0�&�&�&� (� (�"*� � � �$)�3G�H�H�H��� 7� 7� 7� �L�L�G�s�1�v�v�G�G� H� H� H�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s$�A A�A� B#�;B�B#�B#c��� |���dkr|�||||��S|���dkr|�||||��S|���dkr|�||||��Sdd|��d�S#t$rF}t �dt|������dt|��d�cYd}~Sd}~wwxYw) z$Remove liquidity from a farming poolrrrFrrz#Remove liquidity operation failed: N)r"�_remove_liquidity_ethereum�_remove_liquidity_polygon�_remove_liquidity_solanar&r'r!r()rr)r*r+r,rYr1s r�remove_liquidityz'YieldFarmingOperations.remove_liquidity6s�� 7����!�!�Z�/�/��6�6�x��QX�Zc�d�d�d��!�!�#�#�y�0�0��5�5�h��PW�Yb�c�c�c��!�!�#�#�x�/�/��4�4�X�~�w�Xa�b�b�b�#(�3Z�j�3Z�3Z�[�[�[��� 7� 7� 7� �L�L�G�s�1�v�v�G�G� H� H� H�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s.�/B�/B�"/B�B� C*�$;C%�C*�%C*c��� g}|���dkrU|�|��}|�|��|�|��}|�|��n�|���dkr+|�|��}|�|��nl|���dkrT|�|��}|�|��|�|��}|�|��d|d�S#t$rF} t� dt| ������dt| ��d�cYd } ~ Sd } ~ wwxYw) z"Get farming positions for a walletrrrT)r � positionsz!Failed to get farming positions: FrN) r"�_get_uniswap_positions�extend�_get_sushiswap_positions�_get_quickswap_positions�_get_raydium_positions�_get_orca_positionsr&r'r!r() rr)r+r~�uniswap_positions�sushiswap_positions�quickswap_positions�raydium_positions�orca_positionsr1s r�get_farming_positionsz,YieldFarmingOperations.get_farming_positionsFs��� 7��I����!�!�Z�/�/�$(�$?�$?��$O�$O�!�� � �!2�3�3�3�&*�&C�&C�N�&S�&S�#�� � �!4�5�5�5�5��!�!�#�#�y�0�0�&*�&C�&C�N�&S�&S�#�� � �!4�5�5�5�5��!�!�#�#�x�/�/�$(�$?�$?��$O�$O�!�� � �!2�3�3�3�!%�!9�!9�.�!I�!I��� � ��0�0�0�#�)�<�<� <��� 7� 7� 7� �L�L�E�S��V�V�E�E� F� F� F�$�s�1�v�v�6�6� 6� 6� 6� 6� 6� 6����� 7���s�D"D%�% E5�/;E0�*E5�0E5c�Z�tt|��t|��z��S)z5Calculate LP tokens received (simplified calculation))r(r])rr-r.r/r0s rraz+YieldFarmingOperations._calculate_lp_tokenscs#���3�x�=�=�3�x�=�=�0�1�1�1rc��dS)z$Get pair contract address for tokens�*0x0000000000000000000000000000000000000000�)rr-r.s rrbz(YieldFarmingOperations._get_pair_addresshs ���rc��gS)zGet Uniswap positionsr��rr+s rrz-YieldFarmingOperations._get_uniswap_positionsm� ��� rc��gS)zGet SushiSwap positionsr�r�s rr�z/YieldFarmingOperations._get_sushiswap_positionsrr�rc��gS)zGet QuickSwap positionsr�r�s rr�z/YieldFarmingOperations._get_quickswap_positionswr�rc��gS)zGet Raydium positionsr�r�s rr�z-YieldFarmingOperations._get_raydium_positions|r�rc��gS)zGet Orca positionsr�r�s rr�z*YieldFarmingOperations._get_orca_positions�r�rN)�__name__� __module__� __qualname__�__doc__rr2r#r6r7r$rlr%rrr|r�rarbrr�r�r�r�r�rrrr s/������:�:� � � �$7�7�7� 7� 7� 7�A7�A7�A7�F;7�;7�;7�z 7� 7� 7�87�87�87�t 7� 7� 7�$7�$7�$7�L7�7�7� 7�7�7�:2�2�2� ��� ��� ��� ��� ��� ����rr) �os�logging�blockchain.ethereumr�blockchain.polygonr�blockchain.solanar� getLoggerr�r'rr�rr�<module>r�s��� � � � �����.�.�.�.�.�.�,�,�,�,�,�,�*�*�*�*�*�*� �� �8� $� $��{�{�{�{�{�{�{�{�{�{r

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JMadhan1/OneDefi-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server