wayfinder-paths 0.1.28__py3-none-any.whl → 0.1.30__py3-none-any.whl

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 (36) hide show
  1. wayfinder_paths/adapters/boros_adapter/adapter.py +445 -14
  2. wayfinder_paths/adapters/boros_adapter/client.py +7 -5
  3. wayfinder_paths/adapters/boros_adapter/test_adapter.py +259 -19
  4. wayfinder_paths/adapters/hyperliquid_adapter/adapter.py +4 -14
  5. wayfinder_paths/adapters/hyperliquid_adapter/exchange.py +2 -2
  6. wayfinder_paths/adapters/hyperliquid_adapter/local_signer.py +2 -33
  7. wayfinder_paths/adapters/multicall_adapter/adapter.py +2 -4
  8. wayfinder_paths/core/clients/TokenClient.py +1 -1
  9. wayfinder_paths/core/constants/__init__.py +23 -1
  10. wayfinder_paths/core/constants/contracts.py +22 -0
  11. wayfinder_paths/core/constants/hype_oft_abi.py +151 -0
  12. wayfinder_paths/core/constants/hyperliquid.py +20 -3
  13. wayfinder_paths/core/engine/manifest.py +1 -1
  14. wayfinder_paths/core/strategies/Strategy.py +1 -2
  15. wayfinder_paths/mcp/scripting.py +2 -2
  16. wayfinder_paths/mcp/tools/discovery.py +3 -72
  17. wayfinder_paths/mcp/tools/execute.py +8 -4
  18. wayfinder_paths/mcp/tools/hyperliquid.py +1 -1
  19. wayfinder_paths/mcp/tools/quotes.py +11 -133
  20. wayfinder_paths/mcp/tools/wallets.py +4 -7
  21. wayfinder_paths/mcp/utils.py +0 -22
  22. wayfinder_paths/policies/lifi.py +5 -2
  23. wayfinder_paths/policies/moonwell.py +3 -1
  24. wayfinder_paths/policies/util.py +4 -2
  25. wayfinder_paths/strategies/basis_trading_strategy/strategy.py +2 -4
  26. wayfinder_paths/strategies/boros_hype_strategy/boros_ops_mixin.py +57 -201
  27. wayfinder_paths/strategies/boros_hype_strategy/constants.py +24 -168
  28. wayfinder_paths/strategies/boros_hype_strategy/strategy.py +24 -63
  29. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py +2 -0
  30. wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py +2 -0
  31. wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py +4 -1
  32. {wayfinder_paths-0.1.28.dist-info → wayfinder_paths-0.1.30.dist-info}/METADATA +1 -1
  33. {wayfinder_paths-0.1.28.dist-info → wayfinder_paths-0.1.30.dist-info}/RECORD +35 -35
  34. wayfinder_paths/core/types.py +0 -19
  35. {wayfinder_paths-0.1.28.dist-info → wayfinder_paths-0.1.30.dist-info}/LICENSE +0 -0
  36. {wayfinder_paths-0.1.28.dist-info → wayfinder_paths-0.1.30.dist-info}/WHEEL +0 -0
@@ -23,7 +23,6 @@ from loguru import logger
23
23
 
24
24
  from wayfinder_paths.adapters.balance_adapter.adapter import BalanceAdapter
25
25
  from wayfinder_paths.adapters.boros_adapter import BorosAdapter, BorosMarketQuote
26
- from wayfinder_paths.adapters.boros_adapter.client import BorosClient
27
26
  from wayfinder_paths.adapters.brap_adapter.adapter import BRAPAdapter
28
27
  from wayfinder_paths.adapters.hyperliquid_adapter.adapter import (
29
28
  HyperliquidAdapter,
@@ -273,75 +272,37 @@ class BorosHypeStrategy(
273
272
  user_address=user_address,
274
273
  )
275
274
 
276
- # Verify Boros connection
277
- try:
278
- connected = await self.boros_adapter.connect()
279
- except Exception as e:
280
- connected = False
281
- logger.warning(f"Boros adapter connection failed: {e}")
282
- if not connected:
283
- logger.warning(
284
- "Boros adapter connection failed - some features may not work"
285
- )
286
-
287
- # Initialize Hyperliquid adapter for market data and perp trading
288
- # The adapter will create Exchange internally with local signer from config
289
- # if no sign_callback is provided (and not in simulation mode).
290
- try:
291
- self.hyperliquid_adapter = HyperliquidAdapter(
292
- config=self._config,
293
- simulation=self.simulation,
294
- sign_callback=self.strategy_sign_typed_data,
295
- )
296
- try:
297
- hl_connected = await self.hyperliquid_adapter.connect()
298
- except Exception as e:
299
- hl_connected = False
300
- logger.warning(f"Hyperliquid adapter connection failed: {e}")
301
- if not hl_connected:
302
- logger.warning("Hyperliquid adapter connection failed")
303
- except Exception as e:
304
- logger.warning(f"Hyperliquid adapter not available: {e}")
305
- self.hyperliquid_adapter = None
306
-
307
- # Initialize BalanceAdapter for on-chain balance reads
308
- try:
309
- self.balance_adapter = BalanceAdapter(
310
- config=self._config,
311
- main_wallet_signing_callback=main_sign_callback,
312
- strategy_wallet_signing_callback=self._sign_callback,
313
- )
314
- logger.debug("BalanceAdapter initialized for on-chain balance reads")
315
- except Exception as e:
316
- logger.warning(f"BalanceAdapter initialization failed: {e}")
317
- self.balance_adapter = None
275
+ self.hyperliquid_adapter = HyperliquidAdapter(
276
+ config=self._config,
277
+ simulation=self.simulation,
278
+ sign_callback=self.strategy_sign_typed_data,
279
+ )
318
280
 
319
- # Initialize BRAP adapter for swaps and bridging
320
- try:
321
- self.brap_adapter = BRAPAdapter(
322
- config=self._config,
323
- strategy_wallet_signing_callback=self._sign_callback,
324
- )
325
- logger.debug("BRAPAdapter initialized for swaps")
326
- except Exception as e:
327
- logger.warning(f"BRAPAdapter initialization failed: {e}")
328
- self.brap_adapter = None
281
+ self.balance_adapter = BalanceAdapter(
282
+ config=self._config,
283
+ main_wallet_signing_callback=main_sign_callback,
284
+ strategy_wallet_signing_callback=self._sign_callback,
285
+ )
286
+ self.brap_adapter = BRAPAdapter(
287
+ config=self._config,
288
+ strategy_wallet_signing_callback=self._sign_callback,
289
+ )
329
290
 
330
- # Initialize ledger adapter for transaction recording
331
- try:
332
- self.ledger_adapter = LedgerAdapter()
333
- logger.debug("LedgerAdapter initialized")
334
- except Exception as e:
335
- logger.warning(f"LedgerAdapter initialization failed: {e}")
336
- self.ledger_adapter = None
291
+ self.ledger_adapter = LedgerAdapter()
337
292
 
338
293
  logger.info(f"BorosHypeStrategy setup complete (simulation={self.simulation})")
339
294
 
340
295
  async def analyze(self, deposit_usdc: float = 1000.0) -> dict[str, Any]:
341
296
  # Read-only market analysis returning Boros fixed-rate markets for HYPE
342
- client = (
343
- self.boros_adapter.boros_client if self.boros_adapter else BorosClient()
344
- )
297
+ # Client ownership: BorosAdapter owns the client; we require adapter to be set up
298
+ if not self.boros_adapter:
299
+ return {
300
+ "success": False,
301
+ "error": "BorosAdapter not initialized - call setup() first",
302
+ "deposit_usdc": float(deposit_usdc),
303
+ "hype_markets": [],
304
+ }
305
+ client = self.boros_adapter.boros_client
345
306
  try:
346
307
  markets = await client.list_markets(is_whitelisted=True, skip=0, limit=250)
347
308
  except Exception as exc: # noqa: BLE001
@@ -196,10 +196,12 @@ class HyperlendStableYieldStrategy(Strategy):
196
196
  main_wallet_signing_callback: Callable[[dict], Awaitable[str]] | None = None,
197
197
  strategy_wallet_signing_callback: Callable[[dict], Awaitable[str]]
198
198
  | None = None,
199
+ strategy_sign_typed_data: Callable[[dict], Awaitable[str]] | None = None,
199
200
  ):
200
201
  super().__init__(
201
202
  main_wallet_signing_callback=main_wallet_signing_callback,
202
203
  strategy_wallet_signing_callback=strategy_wallet_signing_callback,
204
+ strategy_sign_typed_data=strategy_sign_typed_data,
203
205
  )
204
206
  merged_config: dict[str, Any] = dict(config or {})
205
207
  if main_wallet is not None:
@@ -181,10 +181,12 @@ class MoonwellWstethLoopStrategy(Strategy):
181
181
  main_wallet_signing_callback: Callable[[dict], Awaitable[str]] | None = None,
182
182
  strategy_wallet_signing_callback: Callable[[dict], Awaitable[str]]
183
183
  | None = None,
184
+ strategy_sign_typed_data: Callable[[dict], Awaitable[str]] | None = None,
184
185
  ):
185
186
  super().__init__(
186
187
  main_wallet_signing_callback=main_wallet_signing_callback,
187
188
  strategy_wallet_signing_callback=strategy_wallet_signing_callback,
189
+ strategy_sign_typed_data=strategy_sign_typed_data,
188
190
  )
189
191
  merged_config: dict[str, Any] = dict(config or {})
190
192
  if main_wallet is not None:
@@ -12,6 +12,7 @@ from wayfinder_paths.adapters.brap_adapter.adapter import BRAPAdapter
12
12
  from wayfinder_paths.adapters.ledger_adapter.adapter import LedgerAdapter
13
13
  from wayfinder_paths.adapters.pool_adapter.adapter import PoolAdapter
14
14
  from wayfinder_paths.adapters.token_adapter.adapter import TokenAdapter
15
+ from wayfinder_paths.core.constants.contracts import ENSO_ROUTER
15
16
  from wayfinder_paths.core.strategies.descriptors import (
16
17
  Complexity,
17
18
  Directionality,
@@ -154,10 +155,12 @@ class StablecoinYieldStrategy(Strategy):
154
155
  main_wallet_signing_callback: Callable[[dict], Awaitable[str]] | None = None,
155
156
  strategy_wallet_signing_callback: Callable[[dict], Awaitable[str]]
156
157
  | None = None,
158
+ strategy_sign_typed_data: Callable[[dict], Awaitable[str]] | None = None,
157
159
  ):
158
160
  super().__init__(
159
161
  main_wallet_signing_callback=main_wallet_signing_callback,
160
162
  strategy_wallet_signing_callback=strategy_wallet_signing_callback,
163
+ strategy_sign_typed_data=strategy_sign_typed_data,
161
164
  )
162
165
  merged_config: dict[str, Any] = dict(config or {})
163
166
  if main_wallet is not None:
@@ -1591,7 +1594,7 @@ class StablecoinYieldStrategy(Strategy):
1591
1594
 
1592
1595
  @staticmethod
1593
1596
  def policies() -> list[str]:
1594
- enso_router = "0xF75584eF6673aD213a685a1B58Cc0330B8eA22Cf".lower()
1597
+ enso_router = ENSO_ROUTER.lower()
1595
1598
  approve_enso = (
1596
1599
  "eth.tx.data[0..10] == '0x095ea7b3' && "
1597
1600
  f"eth.tx.data[34..74] == '{enso_router[2:]}'"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: wayfinder-paths
3
- Version: 0.1.28
3
+ Version: 0.1.30
4
4
  Summary: Wayfinder Path: strategies and adapters
5
5
  Author: Wayfinder
6
6
  Author-email: dev@wayfinder.ai
@@ -6,11 +6,11 @@ wayfinder_paths/adapters/balance_adapter/examples.json,sha256=3R1M4B_VsIy29viAuF
6
6
  wayfinder_paths/adapters/balance_adapter/manifest.yaml,sha256=w6Fb9Bui1QKjcGpRX1kzwe8GNGjQXAH6GtLp-D_Ez_Q,218
7
7
  wayfinder_paths/adapters/balance_adapter/test_adapter.py,sha256=BQWQWun9En4-10QUTSheSfp4bxypqDWWv1BjuHneu3w,2794
8
8
  wayfinder_paths/adapters/boros_adapter/__init__.py,sha256=y32d5WyoTzrqmnk3i1Vi13iMAVoJiWO2mO9YEpg5pGg,337
9
- wayfinder_paths/adapters/boros_adapter/adapter.py,sha256=FnT2nA9g0cEOG4gzV7RaTo5XRMLKd0jMdqj7GqJfdqM,61696
10
- wayfinder_paths/adapters/boros_adapter/client.py,sha256=t-Tt9_HOEA3OfhRmkQg9-sf2BYkDQGD11yRdOht4bUM,15215
9
+ wayfinder_paths/adapters/boros_adapter/adapter.py,sha256=trBzDu5x0rHlwSFc5nJXaqXiB2AtiUiCndQAOLrmAKI,78755
10
+ wayfinder_paths/adapters/boros_adapter/client.py,sha256=lEIMbVB3aH6JTsaqf619ppML5A1vNvkrHpcR4UJy-Xw,15406
11
11
  wayfinder_paths/adapters/boros_adapter/manifest.yaml,sha256=PGrhgw6A4Pf6Kqg9vGGL8QvL479K9yM0tpP3zhObxX4,240
12
12
  wayfinder_paths/adapters/boros_adapter/parsers.py,sha256=r_KtWeLhfIyfTgWZB0CUMGv8N4higojsTsLMhuFP7NM,2792
13
- wayfinder_paths/adapters/boros_adapter/test_adapter.py,sha256=xicpa62i2TiumlsYibxfKAw4NDQB5vA1GaAliusSYRo,16145
13
+ wayfinder_paths/adapters/boros_adapter/test_adapter.py,sha256=Y9Ddvff9iB3OFnBGYHkO_5RS5c2by4stym6WHxmnLJY,25456
14
14
  wayfinder_paths/adapters/boros_adapter/test_golden.py,sha256=9pQSYy8FdGfo38-jJPzvM9DlVK3OjuRQizEBsExp3FA,4895
15
15
  wayfinder_paths/adapters/boros_adapter/types.py,sha256=SJN1cUUZF9-_HZaa8TIsLbsOvJ6I-btqjhvjXk_D3cM,1613
16
16
  wayfinder_paths/adapters/boros_adapter/utils.py,sha256=fQY0AclEJbxFU4QHFcDsyRkEFPr2C3t6Mwp1FwtHfoU,2259
@@ -25,10 +25,10 @@ wayfinder_paths/adapters/hyperlend_adapter/adapter.py,sha256=knEb5j1kNZvOeus-4gy
25
25
  wayfinder_paths/adapters/hyperlend_adapter/manifest.yaml,sha256=M0xfk0KPpILSo-XtFgwFKIy-HZHunzBnXakh6yU_R_I,238
26
26
  wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py,sha256=QYpXpxSw-aG20DXPbNowPZs8Z9BnACa-OO8mc0EaR9I,13677
27
27
  wayfinder_paths/adapters/hyperliquid_adapter/__init__.py,sha256=8kOiGrmGvk8BR16wHxVo1qaWwAQSTQbkcJg0cW46RCE,288
28
- wayfinder_paths/adapters/hyperliquid_adapter/adapter.py,sha256=dmd6vpkSC5aOSrIx9T3EWutNklDyLm45K2djXjV92oE,46146
29
- wayfinder_paths/adapters/hyperliquid_adapter/exchange.py,sha256=VSSCmsSTnQ3qDjPRLZLA60mwHoBkn5l_f-h0H0g7yBw,12551
28
+ wayfinder_paths/adapters/hyperliquid_adapter/adapter.py,sha256=wtvssFgBAlxHwnMTmQWfmMgmX2TJZGPb3KWDu4S3FGM,45811
29
+ wayfinder_paths/adapters/hyperliquid_adapter/exchange.py,sha256=SELWlB3LDxLXj5T7ChKqawYr20uKmpJF5J9cgJJhQzo,12545
30
30
  wayfinder_paths/adapters/hyperliquid_adapter/executor.py,sha256=PDF8oM99m7EVgij8scLYkdpvFsq_lrhTVeLYrP_5vfY,18372
31
- wayfinder_paths/adapters/hyperliquid_adapter/local_signer.py,sha256=56RVsFy63pxXYzAxIyVbyn3NRBt1lQ6dCAvtBH7M9SU,2751
31
+ wayfinder_paths/adapters/hyperliquid_adapter/local_signer.py,sha256=OuUIFNYvN3_WyrvsVvGnvsOW97iiWJJnsdVBxCAulro,1637
32
32
  wayfinder_paths/adapters/hyperliquid_adapter/manifest.yaml,sha256=lwADwkooWOivqIUEAxiVTdHBYuchHyuQR8y40K_AUgw,315
33
33
  wayfinder_paths/adapters/hyperliquid_adapter/paired_filler.py,sha256=V_cIiNJYER6E3r8hYLTy1zR2YuO_GBKhn9rP5dkPaVs,35156
34
34
  wayfinder_paths/adapters/hyperliquid_adapter/test_adapter.py,sha256=1oMMoHG6hNeq08Tcwtt4XYjEdGaO5Jc0daCPuKvMWPM,3784
@@ -49,7 +49,7 @@ wayfinder_paths/adapters/moonwell_adapter/adapter.py,sha256=ERiJWrlVZhPVCvKwpWrv
49
49
  wayfinder_paths/adapters/moonwell_adapter/manifest.yaml,sha256=A84L59KjeHJi116Kw0PDRytKsI4piOL16x7HwSOMtzY,331
50
50
  wayfinder_paths/adapters/moonwell_adapter/test_adapter.py,sha256=5Q62lnAoBq1AfpXUVdossU1ClejNPsiDxIqOzrrfqCI,22566
51
51
  wayfinder_paths/adapters/multicall_adapter/__init__.py,sha256=NoPCKUidjkiYjMtdIcPM3LObiEORRfaqxv1JQLD7Xa0,139
52
- wayfinder_paths/adapters/multicall_adapter/adapter.py,sha256=DJ1hiToTZnS9E9qv343N6qQfNYCd22vYbfb_-9XTA1I,5742
52
+ wayfinder_paths/adapters/multicall_adapter/adapter.py,sha256=inKo7ejpfm61EPXmLkz3MmnnpweB1E3pA98NFH3ZI3c,5710
53
53
  wayfinder_paths/adapters/multicall_adapter/manifest.yaml,sha256=z8cGp0gNdWELgEvNy_3_KQUCvFIGNGkZQwYqAsaGc0c,145
54
54
  wayfinder_paths/adapters/multicall_adapter/test_adapter.py,sha256=g3ywwEAv5kb9xBDEM42YfKa9eFPGw4NnPYyFVpBkvgU,3265
55
55
  wayfinder_paths/adapters/pendle_adapter/README.md,sha256=iPcaNx6U7jRWrTW6B89iHwo9wG3MzaxdwOnVpX2vy9I,4011
@@ -85,28 +85,28 @@ wayfinder_paths/core/clients/ClientManager.py,sha256=rNGGcqU9Y7gdnlkNlXtWUW2EB8W
85
85
  wayfinder_paths/core/clients/HyperlendClient.py,sha256=_10Hrbo3M4VbW3Nwlt1_rJMrz955u_AIanQotG0fwE8,5508
86
86
  wayfinder_paths/core/clients/LedgerClient.py,sha256=9PtXW2o_WZGfvu7wIwBuCPzXYex2B1rsMDN70tKgJeA,11713
87
87
  wayfinder_paths/core/clients/PoolClient.py,sha256=ij0aVwV73UiUndOmBrtpg1BhalSIr_Ab78pP7xQQHzY,4266
88
- wayfinder_paths/core/clients/TokenClient.py,sha256=-Xh7fKtj_OTcoKfWDbgD_u3Ih0xEzgrFjlLenJFx4Rs,5011
88
+ wayfinder_paths/core/clients/TokenClient.py,sha256=TRTKg4z0JFdNGjEaQ4UZlBAj1OS4eAyRwnEdUj2g5Yw,5008
89
89
  wayfinder_paths/core/clients/WayfinderClient.py,sha256=y7S535kakRP7pFqYEqUXygdW5hv-FMmtxds9ZL476jQ,3423
90
90
  wayfinder_paths/core/clients/__init__.py,sha256=Lx2hdR0j6obO47WWFk8MqIF_5DycAvw8M7-LTTBNLrY,1041
91
91
  wayfinder_paths/core/clients/protocols.py,sha256=kNNyUssPkZVc1f82YdkF8deUyWBMKKLUYygBcHZ4JmA,5180
92
92
  wayfinder_paths/core/clients/test_ledger_client.py,sha256=RE-IJ3MfbR9AGEeFhPduYhJRqwLoMaKDuHRf_yq0AHo,15228
93
93
  wayfinder_paths/core/config.py,sha256=JZLFdxCMj5naJb3SAoieM--w7UNDrHP0YEMpz1Mmdps,1396
94
- wayfinder_paths/core/constants/__init__.py,sha256=C5kXQnCPrzhjJrXxUUbnulBLgWK80A8y1znQaSQzPwU,2152
94
+ wayfinder_paths/core/constants/__init__.py,sha256=-MuVJ06XVr1wNAUEG28o3zOvWimlFjGF56lN-Cf1WuQ,2684
95
95
  wayfinder_paths/core/constants/base.py,sha256=4jN3Qr8rBK2ZRAlFmRFeCyRPqwQwQufZx5E5eM8ispo,940
96
96
  wayfinder_paths/core/constants/chains.py,sha256=DA03zVjukRGndBB2EROaxvc1uW8bt2550ySh9Cn2J34,729
97
- wayfinder_paths/core/constants/contracts.py,sha256=R0Moh8Pm5cmDwEVpGytNS2tWjFNzVaRD0ZABeL4AXhU,2336
97
+ wayfinder_paths/core/constants/contracts.py,sha256=frlJL90nHaXDv1DBPMVo5V4PljrneaW9RtonSQJ44MM,3344
98
98
  wayfinder_paths/core/constants/erc20_abi.py,sha256=o84ShHG1j59i1fkmG7qgBVo1bqdG5_5GRE1ptNlPBWU,2656
99
+ wayfinder_paths/core/constants/hype_oft_abi.py,sha256=JOuEWFWoB5COeW-4ba5oiOMXduDJk_G7nx4oUQfnb7g,5598
99
100
  wayfinder_paths/core/constants/hyperlend_abi.py,sha256=rcXnfYvw6Np40lNK1SVTXVknoapu0HbP1DHAR6g4x9A,3893
100
- wayfinder_paths/core/constants/hyperliquid.py,sha256=54RkDtsuvfm8LtE2W7cUkrxeSQZ7cyWhkL6lBBikHuo,565
101
+ wayfinder_paths/core/constants/hyperliquid.py,sha256=F-rWVvFd8DQdVB_2lmpvUbk9gIAxO2zzv9T6enIdBtY,904
101
102
  wayfinder_paths/core/constants/moonwell_abi.py,sha256=IERwnQKUG7yyKiICXcfybt8LgPCD1sze95dA2vJalLQ,10940
102
103
  wayfinder_paths/core/constants/tokens.py,sha256=lkpZXRJcnygcNKVvrIBgnUozPvcbpHT-BkqqpEG9Xug,326
103
- wayfinder_paths/core/engine/manifest.py,sha256=-bFBClnIx21FeAq4p-p3nLvzOuZ5OoGVofSbO1W6n80,2201
104
- wayfinder_paths/core/strategies/Strategy.py,sha256=CVV5hl9nVxtOnV8dB9vu3XJkYgS2yZ6Dh3_J-udgOD8,3772
104
+ wayfinder_paths/core/engine/manifest.py,sha256=SLn87A2pZEPrSDH6ZmuMQJDyGINGjYueOwzVTGfcalI,2200
105
+ wayfinder_paths/core/strategies/Strategy.py,sha256=-eHTG5kZJQRX7jjpGE8TYP-9z9gvndxXDk1mSDrHNC8,3718
105
106
  wayfinder_paths/core/strategies/__init__.py,sha256=5Hq9nJf1jS9oZuo0lRAOQw3hazZJg2jRmGCKtJF-1cs,247
106
107
  wayfinder_paths/core/strategies/base.py,sha256=-s0qeiGZl5CHTUL2PavGXM7ACkNlaa0c4jeZR_4DuBM,155
107
108
  wayfinder_paths/core/strategies/descriptors.py,sha256=2Olef0VWols1CWb-TWcb5pil2rztC0jP6F_Trpv2hIw,1958
108
109
  wayfinder_paths/core/strategies/opa_loop.py,sha256=Eoy4uUA2YSo9najJFUwS4wVykPKJ5A_i-Sf6XnwNsv0,5483
109
- wayfinder_paths/core/types.py,sha256=mArnxr6V09SNso3wH0ykvWX1AMx9NsYM6Ey3l-vEAGw,873
110
110
  wayfinder_paths/core/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
111
111
  wayfinder_paths/core/utils/evm_helpers.py,sha256=m_h9eMjcMW5a3Di6PGkpZOwpZkZ-tVdwiLsTZqFJacE,3809
112
112
  wayfinder_paths/core/utils/test_transaction.py,sha256=0GtXROAWmll-zgbIquO9TeqcClhhCmJJNFg1XoYAYIc,10613
@@ -116,7 +116,7 @@ wayfinder_paths/core/utils/wallets.py,sha256=ccCQ128lDShO265AFMOCdijzPLucWe-Neg5
116
116
  wayfinder_paths/core/utils/web3.py,sha256=KeoUjnVXR8ZQLqjd1ZH4fMowRGSBfykirZFWfiICfN8,2071
117
117
  wayfinder_paths/mcp/__init__.py,sha256=ldUqhq_wbWe7-fJB9UWVFyh1rAoeqwD0TuYu0oSw5Ec,172
118
118
  wayfinder_paths/mcp/preview.py,sha256=qZmylK3T5h5efJXnjx0Vvm-O5toI61uyug68eFajaMA,6452
119
- wayfinder_paths/mcp/scripting.py,sha256=fRT-x3wL1kQXkVBl3KUALeAzLhJNhK3v6K7x2RrqGTg,2344
119
+ wayfinder_paths/mcp/scripting.py,sha256=gATdMnpNJf2pur6UQww9ZYGrmQJWSZqafoQY9kuA06w,2321
120
120
  wayfinder_paths/mcp/server.py,sha256=DfiJHc8ZH5xRSdKyIRW2ZS8z865AI2yU3hpflhYL4c0,1516
121
121
  wayfinder_paths/mcp/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
122
  wayfinder_paths/mcp/state/profile_store.py,sha256=wth_EkIFiVV1Uw7s6na7TzsZLmqa63KY7Ip5-y7-Yuk,6235
@@ -124,25 +124,25 @@ wayfinder_paths/mcp/state/store.py,sha256=BPKwnVJUMAodMiFpXVSoLm0tQinb4GCH_fg--Y
124
124
  wayfinder_paths/mcp/test_scripting.py,sha256=X-Fyy3lkpqOQjU_g5G9OaAOeliVqOJmh3u_PA-ogGe0,9314
125
125
  wayfinder_paths/mcp/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
126
  wayfinder_paths/mcp/tools/balances.py,sha256=7uypGrWGPiy9035_7jxTV9sdehdD2Brz2GqHrXHM6kI,6854
127
- wayfinder_paths/mcp/tools/discovery.py,sha256=tFcRc7EF95Cy1ClVwNJ-fmOp_hNzX-GjchoZwrZjOKw,5595
128
- wayfinder_paths/mcp/tools/execute.py,sha256=EaZDI10db74gqGdX96iDUC5iIY6DLVDufwqdw546CVQ,27097
129
- wayfinder_paths/mcp/tools/hyperliquid.py,sha256=10GZOtyKlNVW31ZT7S7-SkG-18C7GOg2OZAsds7L3s0,31845
130
- wayfinder_paths/mcp/tools/quotes.py,sha256=9n4O1DJLn_UP94xLA05cTVbJ4jFADzsFWCs8sUJtYTw,9739
127
+ wayfinder_paths/mcp/tools/discovery.py,sha256=FQPhQFvrft0zKoC_YgOC2byLe8zPdZcjG0ZIuoy2xHQ,2945
128
+ wayfinder_paths/mcp/tools/execute.py,sha256=CSNgwAk_SMwGgtcWg3B4RGVHFe546GMYXF40tMVIDg8,27269
129
+ wayfinder_paths/mcp/tools/hyperliquid.py,sha256=mUtjXGPVj5eEzq346cg76fGzcC2eZIsih2g1dvecYkg,31844
130
+ wayfinder_paths/mcp/tools/quotes.py,sha256=Tb5NawCd3-KeQz02azfIfTfiYI7nIyKAlv--35GMS40,6016
131
131
  wayfinder_paths/mcp/tools/run_script.py,sha256=RF83GyhXZlXEIcK24vS9bHDDm8Q1scQktBrxWBp6WX8,7887
132
132
  wayfinder_paths/mcp/tools/strategies.py,sha256=WSqVWXjvrOsS9X4sffI42lUf2h4QWRWjRQ0t9aHSifQ,6746
133
133
  wayfinder_paths/mcp/tools/tokens.py,sha256=AtFv39e6mJ9WeH1ufZ1U0KW6CUbUi2HtVAoiBbnD39A,1535
134
- wayfinder_paths/mcp/tools/wallets.py,sha256=Xk63su9jUq-tgzejjlwBHyJfKCfxEaW6sMumvjdl6Mc,11840
135
- wayfinder_paths/mcp/utils.py,sha256=eVRsaEm6FLAGtzt9fG5wrt3jAn6DvqOc_bn_wZDbpuk,3613
134
+ wayfinder_paths/mcp/tools/wallets.py,sha256=_A-OUlK8DQFRU7ElG99EgENBHr3Rt0OcIQEHiufolKA,11741
135
+ wayfinder_paths/mcp/utils.py,sha256=-tAVWm36WOFdRGOfM0M5aI-XP1eQ7YXJ4nyBqpme21Y,2922
136
136
  wayfinder_paths/policies/enso.py,sha256=JdmjzGBrIBsqq0nTQN5sbWbcGk5wktoxqAIl9NIvHV0,433
137
137
  wayfinder_paths/policies/erc20.py,sha256=K5PQCUivBrU2nYmIdsIARzRiFy36Rijver-RJnaxNT8,960
138
138
  wayfinder_paths/policies/evm.py,sha256=8fJpjAl6XVxr51sVMw_VkWmIaI_lj2T7qrLcR8_sWgs,713
139
139
  wayfinder_paths/policies/hyper_evm.py,sha256=WNbU2JjWa236HY3AxeQLO6ofFmKoU0bFboTt8KWZVmY,641
140
140
  wayfinder_paths/policies/hyperlend.py,sha256=70Zf133lL0Q1HudaZlFEcqINeAYkU5SEncONDMYrb-o,375
141
141
  wayfinder_paths/policies/hyperliquid.py,sha256=940rzpLVbIdn8RmFrEKbe0uYcRC2JVDBiKxh6CZiF6Y,795
142
- wayfinder_paths/policies/lifi.py,sha256=0n9KgXGZ0qyOaEGe_fQquo7PnDBJ8Jfih0uCI7JX7KY,645
143
- wayfinder_paths/policies/moonwell.py,sha256=aWp3ZgB_NWWuJuIo6idGEiCQN3DRqigXm5ButDRzjAM,1622
142
+ wayfinder_paths/policies/lifi.py,sha256=7IpYfq3lDcaeOt6lUADPAVWd4Z3-m6YfUgCoy1Qxc94,662
143
+ wayfinder_paths/policies/moonwell.py,sha256=0j5qSncWGJAVMW-ddELe0ZgEHbUSddh_JED50apgD1I,1699
144
144
  wayfinder_paths/policies/prjx.py,sha256=ncXOGXTkSrzPgtw2VhIC-ep3Il5-V4o9kRX_etIOEEM,702
145
- wayfinder_paths/policies/util.py,sha256=0g5zQlHfFqvq8ijQwmpe4a58ZPx25ehuZ9CrWY3sS-8,1018
145
+ wayfinder_paths/policies/util.py,sha256=LsYr45YFRt0QpwZUj6lP4uwnX5UpR6bPWkEnxnNA1V8,1084
146
146
  wayfinder_paths/run_strategy.py,sha256=n2beh0jxi88jNr0nhijz6lP4O77F9j10zFnjQyjugyU,5036
147
147
  wayfinder_paths/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
148
  wayfinder_paths/strategies/basis_trading_strategy/README.md,sha256=kZtG5NVVZwWsuz65n2SrwPMUGow9xsfIRplbHI0ARgE,3540
@@ -150,12 +150,12 @@ wayfinder_paths/strategies/basis_trading_strategy/__init__.py,sha256=kVcehFjBUto
150
150
  wayfinder_paths/strategies/basis_trading_strategy/constants.py,sha256=dYQn_297CB1x9whic8YEMdEig0vibclDGCasjJL10mI,122
151
151
  wayfinder_paths/strategies/basis_trading_strategy/examples.json,sha256=q2wlAH8Gr-LUJeamKzWL1EtChL3TBWe0HQ4_P-VCdqQ,429
152
152
  wayfinder_paths/strategies/basis_trading_strategy/snapshot_mixin.py,sha256=F324ILz9w6uT7fkOVUa7gltp2LMEyGBlw3tz-ANcff8,37634
153
- wayfinder_paths/strategies/basis_trading_strategy/strategy.py,sha256=EIXZgDbbJloFSRdXloogzEOynS7hlsPxwdxcLufpRf8,142409
153
+ wayfinder_paths/strategies/basis_trading_strategy/strategy.py,sha256=yJtE4hjilIq5EQFUNNGvizFSkDkVkn8qC8rDHa2nc-Y,142300
154
154
  wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py,sha256=BnjgsYEDkqnG5Qm6zmyOXzgwnunB95UPtr7HLopU9tA,34126
155
155
  wayfinder_paths/strategies/basis_trading_strategy/types.py,sha256=xTkLYqwvS0meMdlRAvIKNH9AANRyz63bQSYFSxLI6n4,740
156
156
  wayfinder_paths/strategies/boros_hype_strategy/__init__.py,sha256=OZlSnGYwlMUsNWWBMIqA7glI5oX9XDQvlgEZ_Ph2uDY,73
157
- wayfinder_paths/strategies/boros_hype_strategy/boros_ops_mixin.py,sha256=WGq2c_BPmHYf0gJNf849Fuxhpb2amF40GpB5BBNiDAY,27287
158
- wayfinder_paths/strategies/boros_hype_strategy/constants.py,sha256=FAvDN_G9H-0Slhky6yYjDgOAl5VsQ1ZgETPAfhrtev4,11924
157
+ wayfinder_paths/strategies/boros_hype_strategy/boros_ops_mixin.py,sha256=IXAVhR4hzZlUuu-0H4gSr4yRslS6PRISqF-z8eZCDxU,20796
158
+ wayfinder_paths/strategies/boros_hype_strategy/constants.py,sha256=0GuzgHWwtAHsaxp6M8BtdqtgHLrhrD9aZHPa934OzQw,5967
159
159
  wayfinder_paths/strategies/boros_hype_strategy/examples.json,sha256=_d3WauNJs6DTaS3oIhLn94lKn9_TtK26bdmS3bOrU9A,638
160
160
  wayfinder_paths/strategies/boros_hype_strategy/hyperevm_ops_mixin.py,sha256=dkihqyCSEMx9sQ6jFSin4yT62FDiOMvlexNWmWrXIYM,5878
161
161
  wayfinder_paths/strategies/boros_hype_strategy/hyperliquid_ops_mixin.py,sha256=aLqjRQvJjqLbNf3UhS62l9yPHQ0nxkq1shjFhCfAiXY,25109
@@ -163,28 +163,28 @@ wayfinder_paths/strategies/boros_hype_strategy/manifest.yaml,sha256=Tb7lfXD1261q
163
163
  wayfinder_paths/strategies/boros_hype_strategy/planner.py,sha256=wBGzn_x9TDASU0vCeHHPzyhYTPQM3OFoxm3bJ930vrI,20419
164
164
  wayfinder_paths/strategies/boros_hype_strategy/risk_ops_mixin.py,sha256=xtICtw760hmqyNoGz7FZn9kqEpazjZ4xArQ25AfAgLk,40623
165
165
  wayfinder_paths/strategies/boros_hype_strategy/snapshot_mixin.py,sha256=UtciP6cwFW0I_x_j8CIpFaS9Jvf4CZeNXV3XpZgK5k8,20685
166
- wayfinder_paths/strategies/boros_hype_strategy/strategy.py,sha256=4mWRJqZuA-EFSzML6RQ79sQ2MtCIdYab62S4J3i35KM,50524
166
+ wayfinder_paths/strategies/boros_hype_strategy/strategy.py,sha256=f63X11VtFAa4cAMzoSMLntX_YMN60nZKboCHIDiEJCo,48731
167
167
  wayfinder_paths/strategies/boros_hype_strategy/test_planner_golden.py,sha256=hLvYWrSf6aDPMfpfhMAUklMrjIaiAYYiQKv885iDBCQ,10641
168
168
  wayfinder_paths/strategies/boros_hype_strategy/test_strategy.py,sha256=1Lg2LWZYd-pkOdxysooMhSF_vTs_IpiWErBoXtxwuXM,6625
169
169
  wayfinder_paths/strategies/boros_hype_strategy/types.py,sha256=-tgHvKn7MvttRucxLWV9aY677DfTuCZq0TNneh_LRLM,12425
170
170
  wayfinder_paths/strategies/boros_hype_strategy/withdraw_mixin.py,sha256=kQEuDWSU-4UVeaXCC6SJw3FZkb2yI8iJaCxd0_txHcQ,47447
171
171
  wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md,sha256=cqCmcWIPiOpCwt-82dnOgHnN64ZUITITR3jqIUYDXmA,2906
172
172
  wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json,sha256=GbVo2p6QiG6M7Ma5s671lw8G9JwnMl1h0n9mrtt-ZS8,164
173
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=zlCBrkz7reV4fSxNKQV3kRx2icv8kUDUyi0GGewG9Yg,92725
173
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=PyBAbo-Q80xO3Icr8yVgihsGIrjAqla3q5GnHf5dB8g,92870
174
174
  wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=qHUXeTLr23gi7ADN0vuWpUgOGFQML3-kPAWBsL3cumw,14353
175
175
  wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/README.md,sha256=PZVbRXfoMNNrZUZY3YOWBW9A-6By7vi-IBBDIfvcdNc,3594
176
176
  wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/examples.json,sha256=kgNRdZcqne8XTm-Y8Hv1a1pdajRQsey4Qhd5La-iWss,164
177
- wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py,sha256=D3pou5S4tZ-48m1Z8l7XP5DRU2AfzYe-p_N9NVuZxps,152697
177
+ wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/strategy.py,sha256=XTzH5vgUpHYvJaiUFpLNR5x0YT-Tr6pdie3VnxmcIOk,152842
178
178
  wayfinder_paths/strategies/moonwell_wsteth_loop_strategy/test_strategy.py,sha256=64Prr3m5Qibe4yBtAAVmNZutLV88xkjDRFobCbXXhLs,37059
179
179
  wayfinder_paths/strategies/stablecoin_yield_strategy/README.md,sha256=efyLd2AJHL_JtHF3eZsnHk2wF4NWzEnuLKRA2vOpLtE,2844
180
180
  wayfinder_paths/strategies/stablecoin_yield_strategy/examples.json,sha256=pL1DNFEvYvXKK7xXD5oQYFPQj3Cm1ocKnk6r_iZk0IY,423
181
- wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=CFrGyCo3rL2Ko71ZIj-pVL_cKZg6gt1xdPMagySo9s8,71736
181
+ wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=QgqrHsp1QK39e3DLl9FmGPSEOvxFZhiM1UV4TnBtWNo,71913
182
182
  wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=PJVnFxbHtB6s-A5FaXqrQqQ9Nsg6F7LEnIMOkP_iBsw,17078
183
183
  wayfinder_paths/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
184
  wayfinder_paths/tests/test_mcp_quote_swap.py,sha256=In4SxTkjfy7f2dqr8z6g1onHk8N2hQRc7a5_zQwcpXI,5473
185
185
  wayfinder_paths/tests/test_test_coverage.py,sha256=ZU0zhlm1PllvQkrnESPtEVdr-VcFDT6EtPiPRreLukk,7118
186
186
  wayfinder_paths/tests/test_utils.py,sha256=VzweYVaO20deZOwR8RKGYFrDnKTW0gZLm3dBwZiMK28,1015
187
- wayfinder_paths-0.1.28.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
188
- wayfinder_paths-0.1.28.dist-info/METADATA,sha256=jugtcgnX8bNTAwoQXaUx6-ejV-oTl661XzuCEqcFzjo,14473
189
- wayfinder_paths-0.1.28.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
190
- wayfinder_paths-0.1.28.dist-info/RECORD,,
187
+ wayfinder_paths-0.1.30.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
188
+ wayfinder_paths-0.1.30.dist-info/METADATA,sha256=wFbS3EY5pdJ8UpF-l_w08eeUV5gBgR2f9T96dUteJ4E,14473
189
+ wayfinder_paths-0.1.30.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
190
+ wayfinder_paths-0.1.30.dist-info/RECORD,,
@@ -1,19 +0,0 @@
1
- from collections.abc import Awaitable, Callable
2
- from typing import Any
3
-
4
- # EVM transaction signing callback
5
- # Used for signing EVM-compatible transactions (mainnet, Base, Arbitrum, etc.)
6
- # Parameters: transaction dict with to/from/data/value/etc.
7
- # Returns: signed transaction hex string
8
- TransactionSigningCallback = Callable[[dict], Awaitable[str]]
9
-
10
- # Hyperliquid signing callback
11
- # Used for signing Hyperliquid actions (orders, transfers, withdrawals, etc.)
12
- # Parameters:
13
- # - action: dict - The action being signed (order, transfer, etc.)
14
- # - payload: str - Either JSON string (EIP-712) or keccak hash (local) of typed data
15
- # - address: str - The address signing the transaction
16
- # Returns: signature dict {"r": "0x...", "s": "0x...", "v": 28} or None if declined
17
- HyperliquidSignCallback = Callable[
18
- [dict[str, Any], str, str], Awaitable[dict[str, str] | None]
19
- ]