wayfinder-paths 0.1.23__tar.gz → 0.1.25__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of wayfinder-paths might be problematic. Click here for more details.

Files changed (196) hide show
  1. wayfinder_paths-0.1.25/PKG-INFO +377 -0
  2. wayfinder_paths-0.1.25/README.md +354 -0
  3. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/pyproject.toml +4 -2
  4. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/__init__.py +2 -0
  5. wayfinder_paths-0.1.25/wayfinder_paths/adapters/balance_adapter/adapter.py +429 -0
  6. wayfinder_paths-0.1.25/wayfinder_paths/adapters/balance_adapter/manifest.yaml +8 -0
  7. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/balance_adapter/test_adapter.py +0 -11
  8. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/__init__.py +17 -0
  9. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/adapter.py +1574 -0
  10. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/client.py +476 -0
  11. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/manifest.yaml +10 -0
  12. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/parsers.py +88 -0
  13. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/test_adapter.py +460 -0
  14. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/test_golden.py +156 -0
  15. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/types.py +70 -0
  16. wayfinder_paths-0.1.25/wayfinder_paths/adapters/boros_adapter/utils.py +85 -0
  17. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/brap_adapter/adapter.py +1 -1
  18. wayfinder_paths-0.1.25/wayfinder_paths/adapters/brap_adapter/manifest.yaml +9 -0
  19. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperlend_adapter/adapter.py +161 -26
  20. wayfinder_paths-0.1.25/wayfinder_paths/adapters/hyperlend_adapter/manifest.yaml +9 -0
  21. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py +77 -13
  22. wayfinder_paths-0.1.25/wayfinder_paths/adapters/hyperliquid_adapter/__init__.py +11 -0
  23. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/adapter.py +585 -61
  24. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/executor.py +47 -68
  25. wayfinder_paths-0.1.25/wayfinder_paths/adapters/hyperliquid_adapter/manifest.yaml +14 -0
  26. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/paired_filler.py +2 -3
  27. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/test_adapter.py +17 -21
  28. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/test_adapter_live.py +3 -6
  29. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/test_executor.py +4 -8
  30. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/test_utils.py +2 -2
  31. wayfinder_paths-0.1.25/wayfinder_paths/adapters/ledger_adapter/manifest.yaml +7 -0
  32. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/ledger_adapter/test_adapter.py +1 -2
  33. wayfinder_paths-0.1.25/wayfinder_paths/adapters/moonwell_adapter/adapter.py +1175 -0
  34. wayfinder_paths-0.1.25/wayfinder_paths/adapters/moonwell_adapter/manifest.yaml +14 -0
  35. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/moonwell_adapter/test_adapter.py +126 -219
  36. wayfinder_paths-0.1.25/wayfinder_paths/adapters/multicall_adapter/__init__.py +7 -0
  37. wayfinder_paths-0.1.25/wayfinder_paths/adapters/multicall_adapter/adapter.py +166 -0
  38. wayfinder_paths-0.1.25/wayfinder_paths/adapters/multicall_adapter/manifest.yaml +5 -0
  39. wayfinder_paths-0.1.25/wayfinder_paths/adapters/multicall_adapter/test_adapter.py +97 -0
  40. wayfinder_paths-0.1.25/wayfinder_paths/adapters/pendle_adapter/README.md +102 -0
  41. wayfinder_paths-0.1.25/wayfinder_paths/adapters/pendle_adapter/__init__.py +7 -0
  42. wayfinder_paths-0.1.25/wayfinder_paths/adapters/pendle_adapter/adapter.py +1992 -0
  43. wayfinder_paths-0.1.25/wayfinder_paths/adapters/pendle_adapter/examples.json +11 -0
  44. wayfinder_paths-0.1.25/wayfinder_paths/adapters/pendle_adapter/manifest.yaml +21 -0
  45. wayfinder_paths-0.1.25/wayfinder_paths/adapters/pendle_adapter/test_adapter.py +666 -0
  46. wayfinder_paths-0.1.25/wayfinder_paths/adapters/pool_adapter/manifest.yaml +6 -0
  47. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/token_adapter/examples.json +0 -4
  48. wayfinder_paths-0.1.25/wayfinder_paths/adapters/token_adapter/manifest.yaml +7 -0
  49. wayfinder_paths-0.1.25/wayfinder_paths/conftest.py +30 -0
  50. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/__init__.py +2 -0
  51. wayfinder_paths-0.1.25/wayfinder_paths/core/adapters/BaseAdapter.py +18 -0
  52. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/adapters/models.py +17 -7
  53. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/BRAPClient.py +1 -1
  54. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/TokenClient.py +47 -1
  55. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/WayfinderClient.py +1 -2
  56. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/protocols.py +21 -22
  57. wayfinder_paths-0.1.25/wayfinder_paths/core/clients/test_ledger_client.py +448 -0
  58. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/config.py +12 -0
  59. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/constants/__init__.py +15 -0
  60. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/constants/base.py +6 -1
  61. wayfinder_paths-0.1.25/wayfinder_paths/core/constants/contracts.py +52 -0
  62. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/constants/erc20_abi.py +0 -1
  63. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/constants/hyperlend_abi.py +0 -4
  64. wayfinder_paths-0.1.25/wayfinder_paths/core/constants/hyperliquid.py +16 -0
  65. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/constants/moonwell_abi.py +0 -15
  66. wayfinder_paths-0.1.25/wayfinder_paths/core/engine/manifest.py +66 -0
  67. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/strategies/Strategy.py +0 -61
  68. wayfinder_paths-0.1.25/wayfinder_paths/core/strategies/__init__.py +12 -0
  69. wayfinder_paths-0.1.25/wayfinder_paths/core/strategies/opa_loop.py +167 -0
  70. wayfinder_paths-0.1.25/wayfinder_paths/core/utils/test_transaction.py +289 -0
  71. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/utils/transaction.py +44 -1
  72. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/utils/web3.py +3 -0
  73. wayfinder_paths-0.1.25/wayfinder_paths/mcp/__init__.py +5 -0
  74. wayfinder_paths-0.1.25/wayfinder_paths/mcp/preview.py +185 -0
  75. wayfinder_paths-0.1.25/wayfinder_paths/mcp/scripting.py +84 -0
  76. wayfinder_paths-0.1.25/wayfinder_paths/mcp/server.py +52 -0
  77. wayfinder_paths-0.1.25/wayfinder_paths/mcp/state/profile_store.py +195 -0
  78. wayfinder_paths-0.1.25/wayfinder_paths/mcp/state/store.py +89 -0
  79. wayfinder_paths-0.1.25/wayfinder_paths/mcp/test_scripting.py +267 -0
  80. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/balances.py +290 -0
  81. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/discovery.py +158 -0
  82. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/execute.py +770 -0
  83. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/hyperliquid.py +931 -0
  84. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/quotes.py +288 -0
  85. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/run_script.py +286 -0
  86. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/strategies.py +188 -0
  87. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/tokens.py +46 -0
  88. wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools/wallets.py +354 -0
  89. wayfinder_paths-0.1.25/wayfinder_paths/mcp/utils.py +129 -0
  90. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/hyperliquid.py +1 -1
  91. wayfinder_paths-0.1.25/wayfinder_paths/policies/lifi.py +18 -0
  92. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/util.py +8 -2
  93. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/strategy.py +28 -119
  94. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py +24 -53
  95. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/__init__.py +3 -0
  96. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/boros_ops_mixin.py +450 -0
  97. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/constants.py +255 -0
  98. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/examples.json +37 -0
  99. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/hyperevm_ops_mixin.py +114 -0
  100. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/hyperliquid_ops_mixin.py +642 -0
  101. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/manifest.yaml +36 -0
  102. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/planner.py +460 -0
  103. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/risk_ops_mixin.py +886 -0
  104. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/snapshot_mixin.py +494 -0
  105. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/strategy.py +1194 -0
  106. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/test_planner_golden.py +374 -0
  107. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/test_strategy.py +202 -0
  108. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/types.py +365 -0
  109. wayfinder_paths-0.1.25/wayfinder_paths/strategies/boros_hype_strategy/withdraw_mixin.py +997 -0
  110. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py +3 -12
  111. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py +7 -29
  112. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py +63 -40
  113. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/test_strategy.py +5 -15
  114. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py +0 -34
  115. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py +11 -34
  116. wayfinder_paths-0.1.25/wayfinder_paths/tests/__init__.py +0 -0
  117. wayfinder_paths-0.1.25/wayfinder_paths/tests/test_mcp_quote_swap.py +165 -0
  118. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/tests/test_test_coverage.py +1 -4
  119. wayfinder_paths-0.1.23/PKG-INFO +0 -354
  120. wayfinder_paths-0.1.23/README.md +0 -332
  121. wayfinder_paths-0.1.23/wayfinder_paths/adapters/balance_adapter/adapter.py +0 -179
  122. wayfinder_paths-0.1.23/wayfinder_paths/adapters/hyperliquid_adapter/__init__.py +0 -18
  123. wayfinder_paths-0.1.23/wayfinder_paths/adapters/moonwell_adapter/adapter.py +0 -983
  124. wayfinder_paths-0.1.23/wayfinder_paths/conftest.py +0 -23
  125. wayfinder_paths-0.1.23/wayfinder_paths/core/adapters/BaseAdapter.py +0 -43
  126. wayfinder_paths-0.1.23/wayfinder_paths/core/constants/contracts.py +0 -39
  127. wayfinder_paths-0.1.23/wayfinder_paths/core/strategies/__init__.py +0 -3
  128. wayfinder_paths-0.1.23/wayfinder_paths/scripts/create_strategy.py +0 -139
  129. wayfinder_paths-0.1.23/wayfinder_paths/scripts/make_wallets.py +0 -142
  130. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/LICENSE +0 -0
  131. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/__init__.py +0 -0
  132. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/balance_adapter/README.md +0 -0
  133. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/balance_adapter/examples.json +0 -0
  134. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/brap_adapter/README.md +0 -0
  135. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/brap_adapter/__init__.py +0 -0
  136. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/brap_adapter/examples.json +0 -0
  137. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/brap_adapter/test_adapter.py +0 -0
  138. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperlend_adapter/__init__.py +0 -0
  139. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/hyperliquid_adapter/utils.py +0 -0
  140. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/ledger_adapter/README.md +0 -0
  141. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/ledger_adapter/__init__.py +0 -0
  142. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/ledger_adapter/adapter.py +0 -0
  143. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/ledger_adapter/examples.json +0 -0
  144. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/moonwell_adapter/README.md +0 -0
  145. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/moonwell_adapter/__init__.py +0 -0
  146. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/pool_adapter/README.md +0 -0
  147. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/pool_adapter/__init__.py +0 -0
  148. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/pool_adapter/adapter.py +0 -0
  149. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/pool_adapter/examples.json +0 -0
  150. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/pool_adapter/test_adapter.py +0 -0
  151. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/token_adapter/README.md +0 -0
  152. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/token_adapter/__init__.py +0 -0
  153. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/token_adapter/adapter.py +0 -0
  154. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/adapters/token_adapter/test_adapter.py +0 -0
  155. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/adapters/__init__.py +0 -0
  156. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/analytics/__init__.py +0 -0
  157. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/analytics/bootstrap.py +0 -0
  158. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/analytics/stats.py +0 -0
  159. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/analytics/test_analytics.py +0 -0
  160. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/ClientManager.py +0 -0
  161. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/HyperlendClient.py +0 -0
  162. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/LedgerClient.py +0 -0
  163. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/PoolClient.py +0 -0
  164. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/clients/__init__.py +0 -0
  165. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/constants/chains.py +0 -0
  166. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/constants/tokens.py +0 -0
  167. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/strategies/base.py +0 -0
  168. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/strategies/descriptors.py +0 -0
  169. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/utils/__init__.py +0 -0
  170. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/utils/evm_helpers.py +0 -0
  171. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/utils/tokens.py +0 -0
  172. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/core/utils/wallets.py +0 -0
  173. {wayfinder_paths-0.1.23/wayfinder_paths/scripts → wayfinder_paths-0.1.25/wayfinder_paths/mcp/state}/__init__.py +0 -0
  174. {wayfinder_paths-0.1.23/wayfinder_paths/strategies → wayfinder_paths-0.1.25/wayfinder_paths/mcp/tools}/__init__.py +0 -0
  175. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/enso.py +0 -0
  176. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/erc20.py +0 -0
  177. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/evm.py +0 -0
  178. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/hyper_evm.py +0 -0
  179. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/hyperlend.py +0 -0
  180. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/moonwell.py +0 -0
  181. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/policies/prjx.py +0 -0
  182. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/run_strategy.py +0 -0
  183. {wayfinder_paths-0.1.23/wayfinder_paths/tests → wayfinder_paths-0.1.25/wayfinder_paths/strategies}/__init__.py +0 -0
  184. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/README.md +0 -0
  185. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/__init__.py +0 -0
  186. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/constants.py +0 -0
  187. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/examples.json +0 -0
  188. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/snapshot_mixin.py +0 -0
  189. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/basis_trading_strategy/types.py +0 -0
  190. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md +0 -0
  191. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json +0 -0
  192. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/README.md +0 -0
  193. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/examples.json +0 -0
  194. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/stablecoin_yield_strategy/README.md +0 -0
  195. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/strategies/stablecoin_yield_strategy/examples.json +0 -0
  196. {wayfinder_paths-0.1.23 → wayfinder_paths-0.1.25}/wayfinder_paths/tests/test_utils.py +0 -0
@@ -0,0 +1,377 @@
1
+ Metadata-Version: 2.1
2
+ Name: wayfinder-paths
3
+ Version: 0.1.25
4
+ Summary: Wayfinder Path: strategies and adapters
5
+ Author: Wayfinder
6
+ Author-email: dev@wayfinder.ai
7
+ Requires-Python: >=3.12,<4.0
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.12
10
+ Requires-Dist: aiocache (>=0.12.3,<0.13.0)
11
+ Requires-Dist: aiohttp (>=3.13.0,<4.0.0)
12
+ Requires-Dist: eth-account (>=0.13.7,<0.14.0)
13
+ Requires-Dist: httpx (>=0.28.1,<0.29.0)
14
+ Requires-Dist: hyperliquid-felix
15
+ Requires-Dist: loguru (>=0.7.3,<0.8.0)
16
+ Requires-Dist: numpy (>=1.26.0,<2.0.0)
17
+ Requires-Dist: pandas (>=2.2.0,<3.0.0)
18
+ Requires-Dist: pydantic (>=2.11.9,<3.0.0)
19
+ Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
20
+ Requires-Dist: web3 (>=7.13.0,<8.0.0)
21
+ Description-Content-Type: text/markdown
22
+
23
+ # Wayfinder Paths SDK
24
+
25
+ [![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/)
26
+ [![PyPI](https://img.shields.io/pypi/v/wayfinder-paths.svg)](https://pypi.org/project/wayfinder-paths/)
27
+ [![Discord](https://img.shields.io/badge/discord-join-7289da.svg)](https://discord.gg/fUVwGMXjm3)
28
+
29
+ **An open-source SDK for building and managing automated DeFi strategies.** Use it locally to deposit into, monitor, rebalance, and exit strategies across multiple chains and protocols. Powered by the [Wayfinder API](https://wayfinder.ai).
30
+
31
+ ## What is Wayfinder Paths?
32
+
33
+ Wayfinder Paths is an SDK that lets you:
34
+
35
+ - **Enter and exit DeFi strategies** - Deposit funds, let strategies auto-rebalance, withdraw when ready
36
+ - **Build custom trading paths** - Create your own adapters and strategies for any protocol
37
+ - **Use Claude as your DeFi co-pilot** - With MCP (Model Context Protocol) integration, Claude can execute swaps, check balances, place perp orders, and manage your positions conversationally
38
+
39
+ Think of it as programmable DeFi infrastructure that connects your wallets to yield strategies, perpetual exchanges, lending protocols, and cross-chain bridges.
40
+
41
+ ## Getting Your Wayfinder API Key
42
+
43
+ **You need a Wayfinder API key to use this SDK.** The API provides token resolution, cross-chain routing, balance queries, and more.
44
+
45
+ 1. Go to [wayfinder.ai](https://wayfinder.ai)
46
+ 2. Create an account or log in
47
+ 3. Navigate to your account settings to generate an API key
48
+ 4. Add it to your `config.json` under `system.api_key`
49
+
50
+ ## Quick Start
51
+
52
+ ```bash
53
+ # Clone the repository
54
+ git clone https://github.com/WayfinderFoundation/wayfinder-paths.git
55
+ cd wayfinder-paths
56
+
57
+ # One-command setup (installs Poetry + deps, prompts for your Wayfinder API key, updates .mcp.json)
58
+ python3 scripts/setup.py
59
+
60
+ # Optional: create a strategy-specific wallet
61
+ poetry run python scripts/make_wallets.py --label stablecoin_yield_strategy
62
+
63
+ # Check strategy status
64
+ poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --action status --config config.json
65
+
66
+ # Deposit into a strategy
67
+ poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --action deposit \
68
+ --main-token-amount 100 --gas-token-amount 0.01 --config config.json
69
+ ```
70
+
71
+ ## Claude MCP Integration
72
+
73
+ **Turn Claude into an on-chain trading and DeFi engine.** The SDK includes an MCP server that gives Claude direct access to:
74
+
75
+ - **Wallet balances** across all supported chains
76
+ - **Token swaps** via the BRAP cross-chain router
77
+ - **Hyperliquid perpetuals** - market data, orders, leverage, withdrawals
78
+ - **Strategy management** - analyze, snapshot, and query any strategy
79
+ - **Script execution** - run custom Python scripts from `.wayfinder_runs/`
80
+
81
+ ### Setting Up MCP with Claude Code
82
+
83
+ This repo includes a project-scoped Claude Code MCP config at `.mcp.json` (you'll be prompted to enable it).
84
+ If you prefer a global config instead, add:
85
+
86
+ ```json
87
+ {
88
+ "mcpServers": {
89
+ "wayfinder": {
90
+ "command": "poetry",
91
+ "args": ["run", "python", "-m", "wayfinder_paths.mcp.server"],
92
+ "cwd": "/path/to/wayfinder-paths"
93
+ }
94
+ }
95
+ }
96
+ ```
97
+
98
+ ### Available MCP Tools
99
+
100
+ | Tool | Description |
101
+ |------|-------------|
102
+ | `discover` | List available adapters and strategies |
103
+ | `describe` | Get detailed info about any adapter or strategy |
104
+ | `wallets` | List or create local wallets |
105
+ | `tokens` | Resolve token metadata by ID or address |
106
+ | `balances` | Query token/pool balances across chains |
107
+ | `quote_swap` | Get swap quotes without executing |
108
+ | `execute` | Execute swaps, sends, and Hyperliquid deposits |
109
+ | `hyperliquid` | Read-only perp market data and user state |
110
+ | `hyperliquid_execute` | Place orders, update leverage, withdraw |
111
+ | `run_strategy` | Analyze strategies, get snapshots and policies |
112
+ | `run_script` | Execute local Python scripts safely |
113
+
114
+ ### Example Conversation with Claude
115
+
116
+ ```
117
+ You: What's my balance on Arbitrum?
118
+
119
+ Claude: [Uses balances tool to query your wallet]
120
+ Your Arbitrum wallet (0x81830...) holds:
121
+ - 1,245.32 USDC ($1,245.32)
122
+ - 0.42 ETH ($1,512.00)
123
+ - 15,000 ARB ($8,250.00)
124
+
125
+ You: Swap 500 USDC to ETH
126
+
127
+ Claude: [Uses quote_swap, then execute with your approval]
128
+ Swapped 500 USDC for 0.139 ETH via Uniswap V3
129
+ TX: 0xabc123...
130
+
131
+ You: Open a 2x long on BTC with $1000
132
+
133
+ Claude: [Uses hyperliquid_execute to place the order]
134
+ Opened BTC-PERP long position:
135
+ - Size: 0.0234 BTC (~$1,000 notional)
136
+ - Leverage: 2x
137
+ - Entry: $42,735.50
138
+ ```
139
+
140
+ ## Available Strategies
141
+
142
+ | Strategy | Description | Chain | Risk |
143
+ |----------|-------------|-------|------|
144
+ | **Stablecoin Yield** | USDC yield optimization across Base pools | Base | Low |
145
+ | **HyperLend Stable Yield** | Stablecoin rotation on HyperLend | HyperEVM | Medium |
146
+ | **Moonwell wstETH Loop** | Leveraged LST carry trade | Base | High |
147
+ | **Basis Trading** | Delta-neutral funding rate capture | Hyperliquid | High |
148
+ | **Boros HYPE** | Multi-leg HYPE yield with rate locking | Multi-chain | High |
149
+
150
+ ### Strategy Lifecycle
151
+
152
+ ```python
153
+ from wayfinder_paths.core.strategies.Strategy import Strategy, StatusDict, StatusTuple
154
+
155
+ class MyStrategy(Strategy):
156
+ name = "My Strategy"
157
+
158
+ def __init__(self, config=None, **kwargs):
159
+ super().__init__(config, **kwargs)
160
+ balance_adapter = BalanceAdapter(config, **kwargs)
161
+ self.balance_adapter = balance_adapter
162
+
163
+ async def deposit(self, main_token_amount=0.0, gas_token_amount=0.0) -> StatusTuple:
164
+ """Move funds from main wallet into strategy wallet."""
165
+ return (True, "Deposited successfully")
166
+
167
+ async def update(self) -> StatusTuple:
168
+ """Rebalance or optimize positions."""
169
+ return (True, "Updated successfully")
170
+
171
+ async def exit(self, **kwargs) -> StatusTuple:
172
+ """Transfer funds from strategy wallet back to main wallet."""
173
+ return (True, "Exited successfully")
174
+
175
+ async def _status(self) -> StatusDict:
176
+ """Report current state."""
177
+ return {
178
+ "portfolio_value": 0.0,
179
+ "net_deposit": 0.0,
180
+ "strategy_status": {"message": "healthy"},
181
+ "gas_available": 0.0,
182
+ "gassed_up": True,
183
+ }
184
+ ```
185
+
186
+ ## Available Adapters
187
+
188
+ | Adapter | Purpose | External Protocol |
189
+ |---------|---------|-------------------|
190
+ | **BalanceAdapter** | Wallet balances, cross-wallet transfers | - |
191
+ | **BRAPAdapter** | Cross-chain swaps and bridges | Wayfinder BRAP Router |
192
+ | **BorosAdapter** | Fixed-rate lending positions | Boros Protocol |
193
+ | **HyperliquidAdapter** | Perps, spot, deposits, withdrawals | Hyperliquid DEX |
194
+ | **HyperlendAdapter** | Stablecoin lending | HyperLend Protocol |
195
+ | **MoonwellAdapter** | Lending/borrowing on Base | Moonwell Protocol |
196
+ | **PendleAdapter** | PT/YT discovery + Hosted SDK convert (swap/mint/roll/LP) | Pendle Protocol |
197
+ | **MulticallAdapter** | Batch contract calls | Multicall3 |
198
+ | **LedgerAdapter** | Transaction recording | - |
199
+ | **TokenAdapter** | Token metadata and prices | Wayfinder API |
200
+ | **PoolAdapter** | DeFi pool analytics | DeFi Llama |
201
+
202
+ ## Configuration
203
+
204
+ Create `config.json` in the project root:
205
+
206
+ ```json
207
+ {
208
+ "system": {
209
+ "api_base_url": "https://api.wayfinder.ai",
210
+ "api_key": "wk_your_api_key_here"
211
+ },
212
+ "strategy": {
213
+ "rpc_urls": {
214
+ "1": "https://eth.llamarpc.com",
215
+ "8453": "https://mainnet.base.org",
216
+ "42161": "https://arb1.arbitrum.io/rpc",
217
+ "999": "https://rpc.hyperliquid.xyz"
218
+ }
219
+ },
220
+ "wallets": [
221
+ {
222
+ "label": "main",
223
+ "address": "0x...",
224
+ "private_key_hex": "..."
225
+ }
226
+ ]
227
+ }
228
+ ```
229
+
230
+ ### Supported Chains
231
+
232
+ | Chain | ID | Code |
233
+ |-------|-----|------|
234
+ | Ethereum | 1 | `ethereum` |
235
+ | Base | 8453 | `base` |
236
+ | Arbitrum | 42161 | `arbitrum` |
237
+ | Polygon | 137 | `polygon` |
238
+ | BSC | 56 | `bsc` |
239
+ | HyperEVM | 999 | `hyperevm` |
240
+
241
+ ## Architecture
242
+
243
+ ```
244
+ ┌─────────────────────────────────────────────────────────────┐
245
+ │ Claude + MCP Server │
246
+ │ "Swap 100 USDC to ETH" → execute tool → transaction │
247
+ └─────────────────────────────────────────────────────────────┘
248
+
249
+
250
+ ┌─────────────────────────────────────────────────────────────┐
251
+ │ Strategy Layer │
252
+ │ Strategies orchestrate adapters to capture yield │
253
+ │ (deposit → update → update → ... → exit) │
254
+ └─────────────────────────────────────────────────────────────┘
255
+
256
+
257
+ ┌─────────────────────────────────────────────────────────────┐
258
+ │ Adapter Layer │
259
+ │ Protocol integrations: Hyperliquid, Moonwell, Boros, etc. │
260
+ │ All methods return (success: bool, data: Any) tuples │
261
+ └─────────────────────────────────────────────────────────────┘
262
+
263
+
264
+ ┌─────────────────────────────────────────────────────────────┐
265
+ │ Client Layer │
266
+ │ TokenClient, BRAPClient, LedgerClient │
267
+ │ Authenticated via X-API-KEY header │
268
+ └─────────────────────────────────────────────────────────────┘
269
+
270
+
271
+ ┌─────────────────────────────────────────────────────────────┐
272
+ │ Network Layer │
273
+ │ Wayfinder API • Chain RPCs • Protocol APIs │
274
+ └─────────────────────────────────────────────────────────────┘
275
+ ```
276
+
277
+ ## CLI Reference
278
+
279
+ ```bash
280
+ # Check strategy status
281
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action status
282
+
283
+ # Deposit funds into strategy
284
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action deposit \
285
+ --main-token-amount 100 --gas-token-amount 0.01
286
+
287
+ # Run strategy update cycle
288
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action update
289
+
290
+ # Withdraw funds
291
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action withdraw
292
+
293
+ # Exit strategy (return all funds to main wallet)
294
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action exit
295
+
296
+ # Run continuously
297
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action run
298
+
299
+ # Partial liquidation
300
+ poetry run python wayfinder_paths/run_strategy.py <strategy> --action partial-liquidate --amount 50
301
+ ```
302
+
303
+ ## Contributing
304
+
305
+ We welcome contributions! You can add your own strategies and adapters to the SDK.
306
+
307
+ ### Adding a New Strategy
308
+
309
+ ```bash
310
+ # Use the convenience command
311
+ just create-strategy "My Strategy Name"
312
+
313
+ # Or copy the template manually
314
+ cp -r wayfinder_paths/templates/strategy wayfinder_paths/strategies/my_strategy
315
+ ```
316
+
317
+ Implement the required methods:
318
+ - `deposit()` - Move funds from main wallet to strategy
319
+ - `update()` - Rebalance/optimize positions
320
+ - `exit()` - Return funds to main wallet
321
+ - `_status()` - Report current state
322
+
323
+ ### Adding a New Adapter
324
+
325
+ ```bash
326
+ cp -r wayfinder_paths/templates/adapter wayfinder_paths/adapters/my_adapter
327
+ ```
328
+
329
+ Implement protocol-specific methods, returning `(success, data)` tuples.
330
+
331
+ ### Contribution Process
332
+
333
+ The process for contributing new paths to the official SDK is still being defined. For now:
334
+
335
+ 1. Fork the repository
336
+ 2. Create your adapter or strategy
337
+ 3. Add tests
338
+ 4. Open a PR with a description of what your path does
339
+
340
+ Join our [Discord](https://discord.gg/fUVwGMXjm3) to discuss ideas and get help.
341
+
342
+ ## Testing
343
+
344
+ ```bash
345
+ # Generate test wallets
346
+ just create-wallets
347
+
348
+ # Run all tests
349
+ poetry run pytest -v
350
+
351
+ # Run smoke tests
352
+ poetry run pytest -k smoke -v
353
+
354
+ # Run adapter tests
355
+ poetry run pytest wayfinder_paths/adapters/ -v
356
+
357
+ # Run with coverage
358
+ poetry run pytest --cov=wayfinder_paths -v
359
+ ```
360
+
361
+ ## Security
362
+
363
+ - **Never commit `config.json`** - it contains private keys
364
+ - **Use test wallets** for development
365
+ - **DRY_RUN mode** - Set `DRY_RUN=1` env var to simulate executions
366
+ - **Idempotency** - MCP tools use idempotency keys to prevent duplicate transactions
367
+
368
+ ## Community
369
+
370
+ - [Discord](https://discord.gg/fUVwGMXjm3) - Get help, share strategies, discuss DeFi
371
+ - [GitHub Issues](https://github.com/WayfinderFoundation/wayfinder-paths/issues) - Report bugs, request features
372
+ - [Wayfinder](https://wayfinder.ai) - Get your API key
373
+
374
+ ## License
375
+
376
+ MIT License - see [LICENSE](LICENSE) for details.
377
+