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