wayfinder-paths 0.1.8__py3-none-any.whl → 0.1.9__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.
Files changed (47) hide show
  1. wayfinder_paths/CONFIG_GUIDE.md +5 -14
  2. wayfinder_paths/adapters/brap_adapter/README.md +1 -1
  3. wayfinder_paths/adapters/brap_adapter/adapter.py +0 -51
  4. wayfinder_paths/adapters/hyperlend_adapter/adapter.py +0 -7
  5. wayfinder_paths/adapters/hyperliquid_adapter/adapter.py +0 -54
  6. wayfinder_paths/adapters/hyperliquid_adapter/test_adapter_live.py +1 -1
  7. wayfinder_paths/adapters/ledger_adapter/README.md +1 -1
  8. wayfinder_paths/adapters/pool_adapter/README.md +1 -77
  9. wayfinder_paths/adapters/pool_adapter/adapter.py +0 -122
  10. wayfinder_paths/adapters/pool_adapter/examples.json +0 -57
  11. wayfinder_paths/adapters/pool_adapter/test_adapter.py +0 -86
  12. wayfinder_paths/adapters/token_adapter/README.md +1 -1
  13. wayfinder_paths/core/clients/AuthClient.py +0 -3
  14. wayfinder_paths/core/clients/ClientManager.py +1 -22
  15. wayfinder_paths/core/clients/WalletClient.py +0 -8
  16. wayfinder_paths/core/clients/WayfinderClient.py +9 -14
  17. wayfinder_paths/core/clients/__init__.py +0 -8
  18. wayfinder_paths/core/clients/protocols.py +0 -60
  19. wayfinder_paths/core/config.py +5 -45
  20. wayfinder_paths/core/engine/StrategyJob.py +0 -3
  21. wayfinder_paths/core/services/base.py +0 -49
  22. wayfinder_paths/core/services/local_evm_txn.py +3 -82
  23. wayfinder_paths/core/services/local_token_txn.py +61 -70
  24. wayfinder_paths/core/services/web3_service.py +0 -2
  25. wayfinder_paths/core/settings.py +8 -8
  26. wayfinder_paths/core/strategies/Strategy.py +1 -5
  27. wayfinder_paths/core/utils/evm_helpers.py +7 -12
  28. wayfinder_paths/core/wallets/README.md +3 -6
  29. wayfinder_paths/run_strategy.py +29 -32
  30. wayfinder_paths/scripts/make_wallets.py +1 -25
  31. wayfinder_paths/scripts/run_strategy.py +0 -2
  32. wayfinder_paths/strategies/basis_trading_strategy/snapshot_mixin.py +1 -3
  33. wayfinder_paths/strategies/basis_trading_strategy/strategy.py +86 -137
  34. wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py +96 -58
  35. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md +2 -2
  36. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json +4 -1
  37. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py +106 -28
  38. wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py +53 -14
  39. wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py +1 -6
  40. wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py +0 -4
  41. wayfinder_paths/templates/strategy/test_strategy.py +0 -4
  42. {wayfinder_paths-0.1.8.dist-info → wayfinder_paths-0.1.9.dist-info}/METADATA +5 -15
  43. {wayfinder_paths-0.1.8.dist-info → wayfinder_paths-0.1.9.dist-info}/RECORD +45 -47
  44. wayfinder_paths/core/clients/SimulationClient.py +0 -192
  45. wayfinder_paths/core/clients/TransactionClient.py +0 -63
  46. {wayfinder_paths-0.1.8.dist-info → wayfinder_paths-0.1.9.dist-info}/LICENSE +0 -0
  47. {wayfinder_paths-0.1.8.dist-info → wayfinder_paths-0.1.9.dist-info}/WHEEL +0 -0
@@ -195,7 +195,6 @@ class HyperlendStableYieldStrategy(Strategy):
195
195
  *,
196
196
  main_wallet: dict[str, Any] | None = None,
197
197
  strategy_wallet: dict[str, Any] | None = None,
198
- simulation: bool = False,
199
198
  web3_service: Web3Service = None,
200
199
  api_key: str | None = None,
201
200
  ):
@@ -207,7 +206,6 @@ class HyperlendStableYieldStrategy(Strategy):
207
206
  merged_config["strategy_wallet"] = strategy_wallet
208
207
 
209
208
  self.config = merged_config
210
- self.simulation = simulation
211
209
  self.balance_adapter = None
212
210
  self.tx_adapter = None
213
211
  self.token_adapter = None
@@ -238,7 +236,6 @@ class HyperlendStableYieldStrategy(Strategy):
238
236
  token_transaction_service = LocalTokenTxnService(
239
237
  adapter_config,
240
238
  wallet_provider=wallet_provider,
241
- simulation=self.simulation,
242
239
  )
243
240
  web3_service = DefaultWeb3Service(
244
241
  wallet_provider=wallet_provider,
@@ -250,12 +247,9 @@ class HyperlendStableYieldStrategy(Strategy):
250
247
  balance = BalanceAdapter(adapter_config, web3_service=web3_service)
251
248
  token_adapter = TokenAdapter()
252
249
  ledger_adapter = LedgerAdapter() # here
253
- brap_adapter = BRAPAdapter(
254
- web3_service=web3_service, simulation=self.simulation
255
- )
250
+ brap_adapter = BRAPAdapter(web3_service=web3_service)
256
251
  hyperlend_adapter = HyperlendAdapter(
257
252
  adapter_config,
258
- simulation=self.simulation,
259
253
  web3_service=web3_service,
260
254
  )
261
255
 
@@ -323,11 +317,109 @@ class HyperlendStableYieldStrategy(Strategy):
323
317
  self.hys_z: float = self.HYSTERESIS_Z
324
318
  self.rotation_tx_cost: float = self.ROTATION_TX_COST
325
319
 
326
- async def deposit(self) -> StatusTuple:
320
+ async def deposit(
321
+ self, main_token_amount: float = 0.0, gas_token_amount: float = 0.0
322
+ ) -> StatusTuple:
323
+ if main_token_amount == 0.0 and gas_token_amount == 0.0:
324
+ return (
325
+ False,
326
+ "Either main_token_amount or gas_token_amount must be provided",
327
+ )
328
+
329
+ if main_token_amount > 0:
330
+ if main_token_amount < self.MIN_USDT0_DEPOSIT_AMOUNT:
331
+ return (
332
+ False,
333
+ f"Main token amount {main_token_amount} is below minimum {self.MIN_USDT0_DEPOSIT_AMOUNT}",
334
+ )
335
+
336
+ if gas_token_amount and gas_token_amount > self.GAS_MAXIMUM:
337
+ return (
338
+ False,
339
+ f"Gas token amount exceeds maximum configured gas buffer: {self.GAS_MAXIMUM}",
340
+ )
341
+
342
+ if self.balance_adapter is None:
343
+ return (
344
+ False,
345
+ "Balance adapter not initialized. Strategy initialization may have failed.",
346
+ )
347
+
348
+ (
349
+ success,
350
+ main_usdt0_balance,
351
+ ) = await self.balance_adapter.get_balance(
352
+ token_id=self.usdt_token_info.get("token_id"),
353
+ wallet_address=self._get_main_wallet_address(),
354
+ )
355
+ if not success:
356
+ return (
357
+ False,
358
+ f"Failed to get main wallet USDT0 balance: {main_usdt0_balance}",
359
+ )
360
+
361
+ (
362
+ success,
363
+ main_hype_balance,
364
+ ) = await self.balance_adapter.get_balance(
365
+ token_id=self.hype_token_info.get("token_id"),
366
+ wallet_address=self._get_main_wallet_address(),
367
+ )
368
+ if not success:
369
+ return (
370
+ False,
371
+ f"Failed to get main wallet HYPE balance: {main_hype_balance}",
372
+ )
373
+
374
+ main_usdt0_native = main_usdt0_balance / (
375
+ 10 ** self.usdt_token_info.get("decimals")
376
+ )
377
+ main_hype_native = main_hype_balance / (
378
+ 10 ** self.hype_token_info.get("decimals")
379
+ )
380
+
381
+ if main_token_amount > 0:
382
+ if main_usdt0_native < main_token_amount:
383
+ return (
384
+ False,
385
+ f"Main wallet USDT0 balance is less than the deposit amount: {main_usdt0_native} < {main_token_amount}",
386
+ )
387
+
388
+ if gas_token_amount > 0:
389
+ if main_hype_native < gas_token_amount:
390
+ return (
391
+ False,
392
+ f"Main wallet HYPE balance is less than the deposit amount: {main_hype_native} < {gas_token_amount}",
393
+ )
394
+
395
+ if gas_token_amount > 0:
396
+ (
397
+ success,
398
+ msg,
399
+ ) = await self.balance_adapter.move_from_main_wallet_to_strategy_wallet(
400
+ self.hype_token_info.get("token_id"),
401
+ gas_token_amount,
402
+ strategy_name=self.name,
403
+ )
404
+ if not success:
405
+ return (False, f"HYPE transfer to strategy failed: {msg}")
406
+
407
+ if main_token_amount > 0:
408
+ (
409
+ success,
410
+ msg,
411
+ ) = await self.balance_adapter.move_from_main_wallet_to_strategy_wallet(
412
+ self.usdt_token_info.get("token_id"),
413
+ main_token_amount,
414
+ strategy_name=self.name,
415
+ )
416
+ if not success:
417
+ return (False, f"USDT0 transfer to strategy failed: {msg}")
418
+
327
419
  self._invalidate_assets_snapshot()
328
420
  await self._hydrate_position_from_chain()
329
421
 
330
- return (True, "hydrated positions")
422
+ return (success, msg)
331
423
 
332
424
  async def _estimate_redeploy_tokens(self) -> float:
333
425
  positions = await self._get_lent_positions()
@@ -1344,26 +1436,12 @@ class HyperlendStableYieldStrategy(Strategy):
1344
1436
  continue
1345
1437
 
1346
1438
  balance_tokens = float(entry.get("tokens") or 0)
1347
- if balance_tokens <= 0:
1348
- continue
1349
-
1350
- try:
1351
- (
1352
- transfer_success,
1353
- _,
1354
- ) = await self.balance_adapter.move_from_strategy_wallet_to_main_wallet(
1355
- token_id=token.get("token_id"),
1356
- amount=balance_tokens,
1357
- strategy_name=self.name,
1358
- )
1359
- except Exception:
1360
- continue
1361
-
1362
- if transfer_success:
1363
- actions.append(
1364
- f"Transferred {balance_tokens:.4f} {token.get('symbol')} to main wallet"
1439
+ if balance_tokens > 0:
1440
+ logger.warning(
1441
+ f"Failed to swap {balance_tokens:.4f} {token.get('symbol', 'unknown')} "
1442
+ f"to {target_token.get('symbol', 'target')} during alignment. "
1443
+ f"Leaving in strategy wallet for next update cycle."
1365
1444
  )
1366
- self._invalidate_assets_snapshot()
1367
1445
 
1368
1446
  kept_tokens = float(balances.get("native", {}).get("tokens") or 0)
1369
1447
 
@@ -46,20 +46,20 @@ def strategy():
46
46
  config=mock_config,
47
47
  main_wallet=mock_config["main_wallet"],
48
48
  strategy_wallet=mock_config["strategy_wallet"],
49
- simulation=True,
50
49
  )
51
50
 
52
51
  if hasattr(s, "balance_adapter") and s.balance_adapter:
53
52
  # Mock balances: 1000 USDT0 (with 6 decimals) and 2 HYPE (with 18 decimals)
54
- usdt0_balance_mock = AsyncMock(return_value=(True, 1000000000))
55
- hype_balance_mock = AsyncMock(return_value=(True, 2000000000000000000))
56
-
57
53
  def get_balance_side_effect(token_id, wallet_address, **kwargs):
58
- if token_id == "usdt0-hyperevm" or token_id == "usdt0":
59
- return usdt0_balance_mock.return_value
60
- elif token_id == "hype-hyperevm" or token_id == "hype":
61
- return hype_balance_mock.return_value
62
- return (True, 1000000000)
54
+ token_id_str = str(token_id).lower() if token_id else ""
55
+ if "usdt0" in token_id_str or token_id_str == "usdt0":
56
+ # 1000 USDT0 with 6 decimals = 1000 * 10^6 = 1000000000
57
+ return (True, 1000000000)
58
+ elif "hype" in token_id_str or token_id_str == "hype":
59
+ # 2 HYPE with 18 decimals = 2 * 10^18 = 2000000000000000000
60
+ return (True, 2000000000000000000)
61
+ # Default: return high balance for any other token
62
+ return (True, 2000000000000000000)
63
63
 
64
64
  s.balance_adapter.get_balance = AsyncMock(side_effect=get_balance_side_effect)
65
65
 
@@ -101,15 +101,54 @@ def strategy():
101
101
  )
102
102
 
103
103
  if hasattr(s, "balance_adapter") and s.balance_adapter:
104
+ # Mock the main methods first
104
105
  s.balance_adapter.move_from_main_wallet_to_strategy_wallet = AsyncMock(
105
106
  return_value=(True, "Transfer successful (simulated)")
106
107
  )
107
108
  s.balance_adapter.move_from_strategy_wallet_to_main_wallet = AsyncMock(
108
109
  return_value=(True, "Transfer successful (simulated)")
109
110
  )
110
- if hasattr(s.balance_adapter, "wallet_provider"):
111
- s.balance_adapter.wallet_provider.broadcast_transaction = AsyncMock(
112
- return_value=(True, {"transaction_hash": "0xCAFEBABE"})
111
+ # Mock internal dependencies unconditionally to prevent MagicMock await errors
112
+ # These are needed if the real method somehow gets called
113
+ s.balance_adapter.token_client = AsyncMock()
114
+ s.balance_adapter.token_client.get_token_details = AsyncMock(
115
+ return_value={
116
+ "id": "usdt0-hyperevm",
117
+ "address": "0x1234",
118
+ "decimals": 6,
119
+ }
120
+ )
121
+ s.balance_adapter.token_transactions = AsyncMock()
122
+ s.balance_adapter.token_transactions.build_send = AsyncMock(
123
+ return_value=(True, {"transaction": "0xMOCK"})
124
+ )
125
+ s.balance_adapter.wallet_provider = AsyncMock()
126
+ s.balance_adapter.wallet_provider.broadcast_transaction = AsyncMock(
127
+ return_value=(True, {"transaction_hash": "0xCAFEBABE"})
128
+ )
129
+ # token_adapter might already be set, so check before overriding
130
+ if (
131
+ not hasattr(s.balance_adapter, "token_adapter")
132
+ or s.balance_adapter.token_adapter is None
133
+ ):
134
+ s.balance_adapter.token_adapter = AsyncMock()
135
+ if hasattr(s.balance_adapter.token_adapter, "get_token_price"):
136
+ s.balance_adapter.token_adapter.get_token_price = AsyncMock(
137
+ return_value=(True, {"current_price": 1.0})
138
+ )
139
+ # ledger_adapter might already be set, so check before overriding
140
+ if (
141
+ not hasattr(s.balance_adapter, "ledger_adapter")
142
+ or s.balance_adapter.ledger_adapter is None
143
+ ):
144
+ s.balance_adapter.ledger_adapter = AsyncMock()
145
+ if hasattr(s.balance_adapter.ledger_adapter, "record_deposit"):
146
+ s.balance_adapter.ledger_adapter.record_deposit = AsyncMock(
147
+ return_value=(True, {})
148
+ )
149
+ if hasattr(s.balance_adapter.ledger_adapter, "record_withdrawal"):
150
+ s.balance_adapter.ledger_adapter.record_withdrawal = AsyncMock(
151
+ return_value=(True, {})
113
152
  )
114
153
 
115
154
  if hasattr(s, "ledger_adapter") and s.ledger_adapter:
@@ -304,8 +343,8 @@ async def test_canonical_usage(strategy):
304
343
  for example_name, example_data in canonical.items():
305
344
  if "deposit" in example_data:
306
345
  deposit_params = example_data.get("deposit", {})
307
- ok, _ = await strategy.deposit(**deposit_params)
308
- assert ok, f"Canonical example '{example_name}' deposit failed"
346
+ ok, msg = await strategy.deposit(**deposit_params)
347
+ assert ok, f"Canonical example '{example_name}' deposit failed: {msg}"
309
348
 
310
349
  if "update" in example_data:
311
350
  result = await strategy.update()
@@ -155,7 +155,6 @@ class StablecoinYieldStrategy(Strategy):
155
155
  *,
156
156
  main_wallet: dict[str, Any] | None = None,
157
157
  strategy_wallet: dict[str, Any] | None = None,
158
- simulation: bool = False,
159
158
  web3_service=None,
160
159
  api_key: str | None = None,
161
160
  ):
@@ -167,7 +166,6 @@ class StablecoinYieldStrategy(Strategy):
167
166
  merged_config["strategy_wallet"] = strategy_wallet
168
167
 
169
168
  self.config = merged_config
170
- self.simulation = simulation
171
169
  self.deposited_amount = 0
172
170
  self.current_pool = None
173
171
  self.current_apy = 0
@@ -198,7 +196,6 @@ class StablecoinYieldStrategy(Strategy):
198
196
  tx_adapter = LocalTokenTxnService(
199
197
  adapter_config,
200
198
  wallet_provider=wallet_provider,
201
- simulation=self.simulation,
202
199
  )
203
200
  web3_service = DefaultWeb3Service(
204
201
  wallet_provider=wallet_provider, evm_transactions=tx_adapter
@@ -210,9 +207,7 @@ class StablecoinYieldStrategy(Strategy):
210
207
  token_adapter = TokenAdapter()
211
208
  ledger_adapter = LedgerAdapter()
212
209
  pool_adapter = PoolAdapter()
213
- brap_adapter = BRAPAdapter(
214
- web3_service=web3_service, simulation=self.simulation
215
- )
210
+ brap_adapter = BRAPAdapter(web3_service=web3_service)
216
211
 
217
212
  self.register_adapters(
218
213
  [
@@ -46,7 +46,6 @@ def strategy():
46
46
  config=mock_config,
47
47
  main_wallet=mock_config["main_wallet"],
48
48
  strategy_wallet=mock_config["strategy_wallet"],
49
- simulation=True,
50
49
  )
51
50
 
52
51
  if hasattr(s, "balance_adapter") and s.balance_adapter:
@@ -130,9 +129,6 @@ def strategy():
130
129
  )
131
130
 
132
131
  if hasattr(s, "pool_adapter") and s.pool_adapter:
133
- s.pool_adapter.find_high_yield_pools = AsyncMock(
134
- return_value=(True, {"pools": [], "total_found": 0})
135
- )
136
132
  s.pool_adapter.get_pools_by_ids = AsyncMock(
137
133
  return_value=(
138
134
  True,
@@ -58,7 +58,6 @@ def strategy():
58
58
  config=mock_config,
59
59
  main_wallet=mock_config["main_wallet"],
60
60
  strategy_wallet=mock_config["strategy_wallet"],
61
- simulation=True,
62
61
  )
63
62
 
64
63
  # TODO: Add mocking for your adapters here if needed
@@ -77,9 +76,6 @@ def strategy():
77
76
  # s.balance_adapter.get_token_balance_for_wallet = AsyncMock(
78
77
  # side_effect=get_balance_side_effect
79
78
  # )
80
- # s.balance_adapter.get_all_enriched_token_balances_for_wallet = AsyncMock(
81
- # return_value=(True, {"balances": []})
82
- # )
83
79
 
84
80
  # Example for token_adapter:
85
81
  # if hasattr(s, "token_adapter") and s.token_adapter:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wayfinder-paths
3
- Version: 0.1.8
3
+ Version: 0.1.9
4
4
  Summary: Wayfinder Path: strategies and adapters
5
5
  Author: Wayfinder
6
6
  Author-email: dev@wayfinder.ai
@@ -54,9 +54,6 @@ cp wayfinder_paths/config.example.json config.json
54
54
  # Run a strategy locally (one-shot status check)
55
55
  poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --action status --config config.json
56
56
 
57
- export WAYFINDER_API_KEY="sk_live_abc123..."
58
- poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --config config.json
59
-
60
57
  # Run continuously (production mode)
61
58
  poetry run python wayfinder_paths/run_strategy.py stablecoin_yield_strategy --config config.json
62
59
  ```
@@ -213,7 +210,7 @@ The platform uses a unified client system for all API interactions. Clients are
213
210
 
214
211
  ### Clients vs Adapters
215
212
 
216
- - **Clients**: Low-level, reusable service wrappers that talk to networks and external APIs. They handle auth, headers, retries, and response parsing, and expose generic capabilities (e.g., token info, tx building). Examples: `TokenClient`, `TransactionClient`, `WalletClient`.
213
+ - **Clients**: Low-level, reusable service wrappers that talk to networks and external APIs. They handle auth, headers, retries, and response parsing, and expose generic capabilities (e.g., token info, tx building). Examples: `TokenClient`, `WalletClient`.
217
214
  - **Adapters**: Strategy-facing integrations for a specific exchange/protocol. They compose one or more clients to implement a manifest of capabilities (e.g., `supply`, `borrow`, `place_order`). Adapters encapsulate protocol-specific semantics and raise `NotImplementedError` for unsupported ops.
218
215
 
219
216
  Recommended usage:
@@ -415,14 +412,7 @@ strategy = StablecoinYieldStrategy(
415
412
  )
416
413
  ```
417
414
 
418
- **Option B: Set Environment Variable**
419
-
420
- ```bash
421
- export WAYFINDER_API_KEY="sk_live_abc123..."
422
- # All clients will automatically discover and use this
423
- ```
424
-
425
- **Option C: Add to config.json**
415
+ **Option B: Add to config.json**
426
416
 
427
417
  ```json
428
418
  {
@@ -435,7 +425,7 @@ export WAYFINDER_API_KEY="sk_live_abc123..."
435
425
  }
436
426
  ```
437
427
 
438
- **Priority Order:** Constructor parameter > `config.json` (user.api_key or system.api_key) > `WAYFINDER_API_KEY` environment variable
428
+ **Priority Order:** Constructor parameter > `config.json` (user.api_key or system.api_key)
439
429
 
440
430
  **Note:** API keys in `config.json` are loaded directly by `WayfinderClient` via `_load_config_credentials()`, not through the `UserConfig` or `SystemConfig` dataclasses. This allows flexible credential loading.
441
431
 
@@ -516,7 +506,7 @@ class MyStrategy(Strategy):
516
506
  super().__init__(api_key=api_key) # Pass to base class for auto-discovery
517
507
  self.config = config or {}
518
508
  web3_service = DefaultWeb3Service(self.config)
519
- # Adapters automatically discover API key from env var (set by Strategy.__init__)
509
+ # Adapters automatically discover API key from constructor or config.json
520
510
  balance_adapter = BalanceAdapter(self.config, web3_service=web3_service)
521
511
  self.register_adapters([balance_adapter])
522
512
  self.balance_adapter = balance_adapter
@@ -1,4 +1,4 @@
1
- wayfinder_paths/CONFIG_GUIDE.md,sha256=PN2ClAZ8FCF16_sstaUxbfvQkVAyXdtRvTrrj-qJPuk,13397
1
+ wayfinder_paths/CONFIG_GUIDE.md,sha256=REW6wOv8r3YBctAbAjL7gsKyCUbREYmPylcgYJ5aci4,12983
2
2
  wayfinder_paths/__init__.py,sha256=YgOg-PRPT3ROh0zg6hgQyQE-YFkFGw6TM77zDvB4_sE,427
3
3
  wayfinder_paths/abis/generic/erc20.json,sha256=geyzVzdTNt3u1XHKxi4seszP_GIWIzPTl0FYgiftRnM,9336
4
4
  wayfinder_paths/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -7,38 +7,38 @@ wayfinder_paths/adapters/balance_adapter/adapter.py,sha256=byfucmlGXT4_qGD4eeTvL
7
7
  wayfinder_paths/adapters/balance_adapter/examples.json,sha256=3R1M4B_VsIy29viAuFT9nQbnQShWl8ZbU-rnSNWUW9U,129
8
8
  wayfinder_paths/adapters/balance_adapter/manifest.yaml,sha256=vp2VoQJf-TxFxgkTsUJ1AEeeOoImM_QjrGYCmjyEQYI,189
9
9
  wayfinder_paths/adapters/balance_adapter/test_adapter.py,sha256=Z8iTRU0Rv1UsODuVSo5q4j-DrTXMd4YRxvaxLdZE4Us,1878
10
- wayfinder_paths/adapters/brap_adapter/README.md,sha256=euWkSBR6OkYtebhvdNR_PL64sKbzKD5bg5hrYTIWZ1c,7905
10
+ wayfinder_paths/adapters/brap_adapter/README.md,sha256=H4_ep4r17DpQ0rnTSIbRsAdnK174NGBAcHNlHhvEA7o,7880
11
11
  wayfinder_paths/adapters/brap_adapter/__init__.py,sha256=jpqxZ-Bv_8kBo-lhgO_QCWaVZNq_WwlkNBHD4RsqOJg,90
12
- wayfinder_paths/adapters/brap_adapter/adapter.py,sha256=OCXlNxIR7vQUktaoEeM55VcFOXR-PucNJW1NpBkNEUs,26828
12
+ wayfinder_paths/adapters/brap_adapter/adapter.py,sha256=cNyW3f5HXzcADmof505mU3RA52e01NWUPLUhMUfRMdk,24917
13
13
  wayfinder_paths/adapters/brap_adapter/examples.json,sha256=KWuAklUspd2uvk0s2ey8gczg4nbzhdwxQqzhascyMiQ,5287
14
14
  wayfinder_paths/adapters/brap_adapter/manifest.yaml,sha256=bJ8o4j9ZPjfnLxXxHfekoXKUHoBkXmWQ3nokTH1aya4,240
15
15
  wayfinder_paths/adapters/brap_adapter/test_adapter.py,sha256=w2q35tcE7j2QG53jSm_XZgIk7OKL4O51fnFuGMVRSNQ,10754
16
16
  wayfinder_paths/adapters/hyperlend_adapter/__init__.py,sha256=DsWOnEn-Tlu9ZoIoGaFeSqOYI3b4lXGVK3_FTntWpLw,139
17
- wayfinder_paths/adapters/hyperlend_adapter/adapter.py,sha256=QevMiOrztvTRHx7vA_dAQGX3ioUFdLY4aVOfsT-DXX8,10555
17
+ wayfinder_paths/adapters/hyperlend_adapter/adapter.py,sha256=OiHIzhfTJTBk2iQs3px82DubhgTkuoPWHtgTPfAB7UQ,10260
18
18
  wayfinder_paths/adapters/hyperlend_adapter/manifest.yaml,sha256=Ugc0jNf3txAQRGAXlVvTN3Mbdc4-fUMS1yVs0SZcBwI,259
19
19
  wayfinder_paths/adapters/hyperlend_adapter/test_adapter.py,sha256=iLnrALVnK7JWJV2KFDqBYZlr1ShW1tjHC-kCV6-FlgE,9558
20
20
  wayfinder_paths/adapters/hyperliquid_adapter/__init__.py,sha256=QpA258RzVbxzsha86HQduAuNVG0g0qvsI5OcZunQ8DQ,467
21
- wayfinder_paths/adapters/hyperliquid_adapter/adapter.py,sha256=kG0oBi07OI4JNwDs14cGJ15qDSoNKX6_v-CUHlsctGQ,36598
21
+ wayfinder_paths/adapters/hyperliquid_adapter/adapter.py,sha256=qkU_Au0rqj_vf5O6j81EikrHDk8_M8uaxltQvI3dvbU,34516
22
22
  wayfinder_paths/adapters/hyperliquid_adapter/executor.py,sha256=uibNnfsgB_KMOYpZzaSDTsiKGQPIKwZyZ6uH34-Xu4A,17447
23
23
  wayfinder_paths/adapters/hyperliquid_adapter/manifest.yaml,sha256=IOK5kFaOuqqEcf3EuY5oXufEaUQNoz2oBXRGVbCdSXQ,206
24
24
  wayfinder_paths/adapters/hyperliquid_adapter/paired_filler.py,sha256=nOBsrAka8PKv5h8SuoJuLTH4HYS4n0vpTIADUCyDKlA,37546
25
25
  wayfinder_paths/adapters/hyperliquid_adapter/test_adapter.py,sha256=JEDeIMSTdrgcSy4BGSVB0CixQzl3NsKpukOZ9mRu3kE,4542
26
- wayfinder_paths/adapters/hyperliquid_adapter/test_adapter_live.py,sha256=z3vi6AoIkQmOcUW1WyxIPWfv0SIuSNWNp9ABOIkBjzM,7689
26
+ wayfinder_paths/adapters/hyperliquid_adapter/test_adapter_live.py,sha256=lnlL0njECM6C4hVlsEZ4_7wtcixIBO8qqTRO6b1yGGg,7672
27
27
  wayfinder_paths/adapters/hyperliquid_adapter/test_utils.py,sha256=2gSrXJgtfrTqNOQIhBS92vUkfcwhFsMLgFRkf1bzLy8,7290
28
28
  wayfinder_paths/adapters/hyperliquid_adapter/utils.py,sha256=WjLEaNVvcB8FfYlTrwZBrmw7k2MLS5KhBeW4NNoLlVI,4254
29
- wayfinder_paths/adapters/ledger_adapter/README.md,sha256=OIFbJIlck91K3kBKbkPfOWUDx7tJgDjwCAcBLm7FNK4,4104
29
+ wayfinder_paths/adapters/ledger_adapter/README.md,sha256=_tGIpIkg-TCYddf8d4FhJvJuHV79iTizqePosKX2ekU,4079
30
30
  wayfinder_paths/adapters/ledger_adapter/__init__.py,sha256=DK9GShIUiQ57YKSqhCKoS43GCweBxi0lzkUQ9sYVxUA,96
31
31
  wayfinder_paths/adapters/ledger_adapter/adapter.py,sha256=6Fjxltvn9iXp_-CZtN7lDz1Xt0lWaNQX2drx6lgeryw,10260
32
32
  wayfinder_paths/adapters/ledger_adapter/examples.json,sha256=DdqTSe4vnBrfIycQVQQ_JZom7fBGHbL7MR4ppK9ljCY,3936
33
33
  wayfinder_paths/adapters/ledger_adapter/manifest.yaml,sha256=121VPXNpx13vO9qoBww47Wvpi29JLn5WoIFnudCkDYs,271
34
34
  wayfinder_paths/adapters/ledger_adapter/test_adapter.py,sha256=Z1-rPP9k5fI-8ofWMKgU3syzNegKGH_hGO6CKApQj1c,7470
35
- wayfinder_paths/adapters/pool_adapter/README.md,sha256=ttfG4aP_Y0Bl7DXxPlrAhrubOs9Yu0mtki3h7JqWvxQ,5293
35
+ wayfinder_paths/adapters/pool_adapter/README.md,sha256=JJZ5V-RpDfG-D0-UxyLEYMorPCORNPUaaLpccB5Oslk,2848
36
36
  wayfinder_paths/adapters/pool_adapter/__init__.py,sha256=rv56pYzz2Gqiz33uoPJktCQRe3CRt8U9ry5GbjVgK3A,90
37
- wayfinder_paths/adapters/pool_adapter/adapter.py,sha256=D3J9Bx7urFZjuqfmexg-wDjngKfaeeXi5aNgQXQ2W_Y,7249
38
- wayfinder_paths/adapters/pool_adapter/examples.json,sha256=FS0cssPu2KB05MmzG4Hc0Ka0DzOn_0nogqfHBGLJns8,2295
37
+ wayfinder_paths/adapters/pool_adapter/adapter.py,sha256=-XfmOHqKIr2Q8iyfyKrwIv6bYlyTDDL0WX-XdtKGFqQ,2793
38
+ wayfinder_paths/adapters/pool_adapter/examples.json,sha256=3eLXQIECR3tmUJUeX5wAhiJwFwPMYsUhzkc1i8vUAX8,923
39
39
  wayfinder_paths/adapters/pool_adapter/manifest.yaml,sha256=z-OQYBsl2RdV6M34RZzqtQTAFHtQod0po_JD_-9ElNM,217
40
- wayfinder_paths/adapters/pool_adapter/test_adapter.py,sha256=AYk4YWf0H3FXNBc1NKVmXuLQvE7dpMU-QrCp0XWQYFw,5954
41
- wayfinder_paths/adapters/token_adapter/README.md,sha256=d2tMJte6HBu62CCYXdjS8GHZXj5f2fU03uZAO6pscBI,2698
40
+ wayfinder_paths/adapters/pool_adapter/test_adapter.py,sha256=wtdr-IzfhTeS3oBjZLPHUxwYP-3o6tlir3kA6C7lbcE,2709
41
+ wayfinder_paths/adapters/token_adapter/README.md,sha256=TXn7pYQ6bCAiYNl-avem3_Hoz0p3JVyyThxObr59s8k,2673
42
42
  wayfinder_paths/adapters/token_adapter/__init__.py,sha256=nEmxrvffEygn3iKH3cZTNLkhnUUhlUAEtshmrFRAjq8,62
43
43
  wayfinder_paths/adapters/token_adapter/adapter.py,sha256=JEb7A8wJYHxENFhJ6upAgnQAbPZeVfYi6OGs1hiHxnA,3432
44
44
  wayfinder_paths/adapters/token_adapter/examples.json,sha256=RW-3xazj4wbTPl-AVrzduRH1NCXx8m7-06bRMOUJ-lc,3626
@@ -55,42 +55,40 @@ wayfinder_paths/core/analytics/__init__.py,sha256=AtcSpt2vPpCNgdDaFDLhyZZpKa0QXK
55
55
  wayfinder_paths/core/analytics/bootstrap.py,sha256=lb_PjL4Vh3O2F8eXgvAbnAFevJczRF59ODG-dxtpCZ8,1782
56
56
  wayfinder_paths/core/analytics/stats.py,sha256=qE6h0j8TZAbqbVpDeYlVKe0YbV5CENQcHbREzKyZ_s8,1426
57
57
  wayfinder_paths/core/analytics/test_analytics.py,sha256=DNkVTsbWPLc9I1eeCD5wsPPqUDgN-npbGRhBgMKn3GM,5580
58
- wayfinder_paths/core/clients/AuthClient.py,sha256=scz8GvnabNYAQq_XYDcLP2lf2LZqurQOixA7MMAfbCY,2796
58
+ wayfinder_paths/core/clients/AuthClient.py,sha256=lHB0bhGpStWKropwC8d4qwZyOuKH_Xti9afu0nlsYRI,2711
59
59
  wayfinder_paths/core/clients/BRAPClient.py,sha256=-cL05ELlroi3pUfT_5nF8Axie2a0n19npnuP408bkAQ,3744
60
- wayfinder_paths/core/clients/ClientManager.py,sha256=2p8oEFnCxKCH_TBMKo9gMLAwzwLgeotdgFod8wpoa04,8135
60
+ wayfinder_paths/core/clients/ClientManager.py,sha256=pZ4e8XgwDYceCUBFyyemexAH8pqZCAN47iAVVwJWW2Q,7239
61
61
  wayfinder_paths/core/clients/HyperlendClient.py,sha256=6yAhojEbjrRC7YLckwGL_2z5lwI4xnrRVNzxspqKSTg,6173
62
62
  wayfinder_paths/core/clients/LedgerClient.py,sha256=M6VlG0yq3H4rQt6qRxc0QQVd7GoPXJpj2FcD0RM_C_k,14430
63
63
  wayfinder_paths/core/clients/PoolClient.py,sha256=EMIRRw7nh2bha-Qb5uOcIRgbnnu_v5FIvDU0D61nXGI,3475
64
- wayfinder_paths/core/clients/SimulationClient.py,sha256=ViQmXCQKwhpnZA-YkfIgArrpxGr1U11lZNlbBIak1MU,6364
65
64
  wayfinder_paths/core/clients/TokenClient.py,sha256=zg39K-uA1ObkNEcxoXviA1QYSd-fxQXxjBHFOeClY9E,2788
66
- wayfinder_paths/core/clients/TransactionClient.py,sha256=APs-8lMdgBnE40wOn5L8_lEdJ3DddTZFcQbW0tIfJWg,2040
67
- wayfinder_paths/core/clients/WalletClient.py,sha256=Vc2AwllBxUzkdZKKVRrPR4gl8mtvffRxz5QbrpxcH-0,2819
68
- wayfinder_paths/core/clients/WayfinderClient.py,sha256=lLdmD58gAyx5N4yYN4-IYjvRDVzwE3K408XuI07g6g4,10724
69
- wayfinder_paths/core/clients/__init__.py,sha256=oNq6fQW8hUnpkuIZxdbOTLPayJRLA6S-k8e7wqsH_7c,1581
70
- wayfinder_paths/core/clients/protocols.py,sha256=3TYdOdvz9en72_xA6sMHgahB21ZQFP5w86qE6pwo7YA,10117
65
+ wayfinder_paths/core/clients/WalletClient.py,sha256=xG-b5YW1Wps-Lw1JFR3OwAGq0oKMvgIp1crXWd31guE,2604
66
+ wayfinder_paths/core/clients/WayfinderClient.py,sha256=JsU8u-YUCc32jPSSgN6iGqGTGlCdtb3unkR8rpct6Fo,10329
67
+ wayfinder_paths/core/clients/__init__.py,sha256=eKbB81C9ZphAKH1uKwkqOmVHtEwFdkDuZLVAQXQXa5M,1254
68
+ wayfinder_paths/core/clients/protocols.py,sha256=yUDz2dEnO-dDZY5pJfDtcvp5rtsoEQYE4G5IQTGLxfA,8469
71
69
  wayfinder_paths/core/clients/sdk_example.py,sha256=Y6mSyHfsWcOje6E-geNI0C4CQ6uyZaD3V9Q8kPM53eo,2969
72
- wayfinder_paths/core/config.py,sha256=A--KQp_EDLXhtituvk3WXPUP2SJv45IcNcm4G_nFMc0,16890
70
+ wayfinder_paths/core/config.py,sha256=ktogrNlE4DSf1DZONN4_C-sjjuoMFqQtS7chx2KDVYY,15382
73
71
  wayfinder_paths/core/constants/__init__.py,sha256=KH-TtfNBJgp0WfKIxvHnvS521odH8RS3Qhl8cQhr4Ys,663
74
72
  wayfinder_paths/core/constants/base.py,sha256=9XEcgsT_0EMkCoMMdEkvQjjEW9G_8SM3chOBxPpWj00,1169
75
73
  wayfinder_paths/core/constants/erc20_abi.py,sha256=3ljIyUl6FesoEa4uprwNo-nF0Q5s73M9WEqXLw6ONI4,3214
76
74
  wayfinder_paths/core/constants/hyperlend_abi.py,sha256=nIaqsfMl5-_InYN82pjz0FIKsT-AnNkwz0DIc9VrZSc,4331
77
- wayfinder_paths/core/engine/StrategyJob.py,sha256=DqwkPu5JHp00xkDmj7kyUqs9U-VP0k-OBlVipjEzk14,7257
75
+ wayfinder_paths/core/engine/StrategyJob.py,sha256=YMgIdtpEVVDhl1FnheaS-HydJT3fwq7k0oQWJaxmpz0,7164
78
76
  wayfinder_paths/core/engine/__init__.py,sha256=WZ2KWnmOZnBocYrqdwq6EUHp6lmTyrKyXgHSHyQswnU,108
79
77
  wayfinder_paths/core/engine/manifest.py,sha256=rkrALipqwqR61lZu_lF1jJj1aqJk6ZskuXokcB1g0HI,3146
80
78
  wayfinder_paths/core/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
- wayfinder_paths/core/services/base.py,sha256=Ip7fkRPvCibLs67n-0_ESrDR0t9lffGqY-4K2pJfoG8,5585
82
- wayfinder_paths/core/services/local_evm_txn.py,sha256=n0LJOH9-Gy9JDjMvz16Lk1PD9gpsuiw2EEW7PNmkzTI,16982
83
- wayfinder_paths/core/services/local_token_txn.py,sha256=S9RJq2_fm1sqmJmn83vMo69-GQLeCkQ-20rrv0ezU1g,8049
84
- wayfinder_paths/core/services/web3_service.py,sha256=_8sEpkWzSzp7dQR5OCwScypyOsEv5s2BeuO8TqB_H-w,1558
85
- wayfinder_paths/core/settings.py,sha256=VqNOU84OsX_6KAWr9JdPfyxtV14yTH1uZl2zuKeiJ3g,1921
86
- wayfinder_paths/core/strategies/Strategy.py,sha256=7Fn29fhCW3TJ1rJnWJHd4e5ndeDfFjNbeAgAazAynUs,9499
79
+ wayfinder_paths/core/services/base.py,sha256=94Wvs7Ym7tK9J3k9lEOhSSIC7ptnMJ161dYtF4XTSZ8,4096
80
+ wayfinder_paths/core/services/local_evm_txn.py,sha256=XqXw1djXd7N-SAoPFWyNWV9FCSZafLD-PFTirF8zi_w,14281
81
+ wayfinder_paths/core/services/local_token_txn.py,sha256=9iAky-HEIyTzREUHubf9687m7O7lxXL5cSHhqb5FUiI,7767
82
+ wayfinder_paths/core/services/web3_service.py,sha256=7iR7bfqfUQCQcdfEWVGqy04PZBtZTuzCDpfLt1a-4OI,1485
83
+ wayfinder_paths/core/settings.py,sha256=aJdy2bRcJtufr4TZnu30R2iv---Ru4s6nxKo-j22uKQ,1962
84
+ wayfinder_paths/core/strategies/Strategy.py,sha256=nEzry8V-FGSM-S1eBmT35Ba2cVOJn3hNNWenpTMAVv8,9455
87
85
  wayfinder_paths/core/strategies/__init__.py,sha256=2NjvvDw6sIQGUFV4Qo1olXTxUOY3GmCM8Ivz_J1FSmc,157
88
86
  wayfinder_paths/core/strategies/base.py,sha256=-s0qeiGZl5CHTUL2PavGXM7ACkNlaa0c4jeZR_4DuBM,155
89
87
  wayfinder_paths/core/strategies/descriptors.py,sha256=E8vi7ssaj6rglKVp1xl4PlUlJYLSoayXkTzsPb78vrs,1648
90
88
  wayfinder_paths/core/utils/__init__.py,sha256=TEylMYHnG37Z3mizSmw28bUm0vyNBFzf0Nc8dB_7l1A,73
91
- wayfinder_paths/core/utils/evm_helpers.py,sha256=sJUGpwbc3jD9h1BaaYC4mPDs25S3YKyoY1NfvHq9BBg,6491
89
+ wayfinder_paths/core/utils/evm_helpers.py,sha256=D1NFanIdy7TcBHOFwYHAgnhENChaW34BNarFfauMX38,6230
92
90
  wayfinder_paths/core/utils/wallets.py,sha256=tGgVxDW2ZvkvJIb6yow1cirrqhQ67_X9IqxZocBEy2k,2438
93
- wayfinder_paths/core/wallets/README.md,sha256=gwzFapFnpArdIyUz0NdYOq5Nm9_uqDYuFddKAZJ0Ss4,3745
91
+ wayfinder_paths/core/wallets/README.md,sha256=GdO1RFUG_jZdVH6qeobHlr_c69hEDgLLrgqYCvj_dGs,3701
94
92
  wayfinder_paths/core/wallets/WalletManager.py,sha256=sptj0Dya9iM87BDzUktrYM_Mw33xyVJNrRUTVfBjHGw,1870
95
93
  wayfinder_paths/core/wallets/__init__.py,sha256=hIuhy64pJOs_8mAP7Zup28goXbT8qjBeeVYMkbqlyu8,315
96
94
  wayfinder_paths/policies/enso.py,sha256=oytco04eeGjiRbZPGFE1YpH4NxvV0tfVM14QmlyzjkY,428
@@ -102,11 +100,11 @@ wayfinder_paths/policies/hyperliquid.py,sha256=hAxNtWdxavwf_a-AnlXMOmEYakkNBkrPT
102
100
  wayfinder_paths/policies/moonwell.py,sha256=sKWLbruMKiW7Yh1DhXdVPRe0JBP-nooNybRz0G9PgvA,1605
103
101
  wayfinder_paths/policies/prjx.py,sha256=6kfZ6OQFroFHYJl4vSWT-svwwfvoHlS_ZrcHt8nmZMU,743
104
102
  wayfinder_paths/policies/util.py,sha256=r8xQLPvE3kU21_LG6VbkFI9sUSYltcsKunryZdHOUDA,912
105
- wayfinder_paths/run_strategy.py,sha256=HRj5iY2AFWaxRKXukKUKPxaXcz4YN-fb6anSLHJaeDg,14502
103
+ wayfinder_paths/run_strategy.py,sha256=HiHdnbu_4rwMgFHTulxCd-AKWeETa3D9TRHlH_NhuzU,14299
106
104
  wayfinder_paths/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
105
  wayfinder_paths/scripts/create_strategy.py,sha256=rp2kkGXsmcAbOt1eZthV1iZ2yM6wAbjn4R10IATulOw,6275
108
- wayfinder_paths/scripts/make_wallets.py,sha256=_diYY5FzpLC5mFVIzZsQUBhlBCUQpvhxL5CtQW0qaT8,6298
109
- wayfinder_paths/scripts/run_strategy.py,sha256=EQDsE59mLHXR0HO7vzmzNsqSj-YpsuObC9tg2ZYVztA,3633
106
+ wayfinder_paths/scripts/make_wallets.py,sha256=LkWr65mKtKMYlm2ZINsacvnIJ--A5c97xG9ZY1azVec,5242
107
+ wayfinder_paths/scripts/run_strategy.py,sha256=Cue3lxbZCPYrlICAriuQJqrEWwBFp_YK6Kd_LQQGqxw,3541
110
108
  wayfinder_paths/scripts/validate_manifests.py,sha256=sTJhCVTb8X0SFYozArVbX4AMAEv-0R1Imp4dpHfAuHE,7075
111
109
  wayfinder_paths/strategies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
110
  wayfinder_paths/strategies/basis_trading_strategy/README.md,sha256=rTUXQ2owEoPmXlfHcJfRFCwcQxlU3a4hOJGN5kaWWQ0,7176
@@ -114,21 +112,21 @@ wayfinder_paths/strategies/basis_trading_strategy/__init__.py,sha256=kVcehFjBUto
114
112
  wayfinder_paths/strategies/basis_trading_strategy/constants.py,sha256=PJ1WtSALxiuW1FXx-BF30ciFISEhO5VBfrSZyfhPuz0,45
115
113
  wayfinder_paths/strategies/basis_trading_strategy/examples.json,sha256=q2wlAH8Gr-LUJeamKzWL1EtChL3TBWe0HQ4_P-VCdqQ,429
116
114
  wayfinder_paths/strategies/basis_trading_strategy/manifest.yaml,sha256=cmvAizwBP_SoXvypal8CEHLNh4Du5M_RBKy37ScUjL0,1078
117
- wayfinder_paths/strategies/basis_trading_strategy/snapshot_mixin.py,sha256=pkYJ3Ax7quuJUZT_AjB6PFNPM3iDmEE6xpXGthXa5UY,38748
118
- wayfinder_paths/strategies/basis_trading_strategy/strategy.py,sha256=pA11cJXTVuvwBiSc_BYsapshtKBK5FI_Xm-hKxJ9bhg,173962
119
- wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py,sha256=cFw191y1ud-dtb8jBMTvEbmvhZAXJmLkHaQ3BQBxlXg,28964
115
+ wayfinder_paths/strategies/basis_trading_strategy/snapshot_mixin.py,sha256=Z1rgAfLGaSFFL2bS9_XPc7RzpY1Q74jZQGc86Yo_0DQ,38634
116
+ wayfinder_paths/strategies/basis_trading_strategy/strategy.py,sha256=qkXKvZr1As8ZEjQHXhg5pP6mJdEtsvyHjrn0Hqg8Xr8,171716
117
+ wayfinder_paths/strategies/basis_trading_strategy/test_strategy.py,sha256=FH0napmPYTzmflxfyqrqHujO9fmatYbXRH19LSsO_sA,31579
120
118
  wayfinder_paths/strategies/basis_trading_strategy/types.py,sha256=rlbouTUOVPLfGPzMbsf-fUmMcn0R_OsG-IdfiBJmmqI,845
121
119
  wayfinder_paths/strategies/config.py,sha256=5dv-8tWwoxH3Sxd9jtiw90shrLipEe3UlU-IYUBfciM,2762
122
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md,sha256=8mjDUBkBEYp_GWkM0knbFIbJ2Nmb-63pNR09ztZ67qo,4596
123
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json,sha256=72lu80KAzPG2Bqu_ct1I0qsnEFVs-lurwCXuHZrefck,95
120
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/README.md,sha256=3xgX_6qXob7ZSefPHHHdzJtUY1ousVh_YtsS0rwXfpc,4571
121
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/examples.json,sha256=GbVo2p6QiG6M7Ma5s671lw8G9JwnMl1h0n9mrtt-ZS8,164
124
122
  wayfinder_paths/strategies/hyperlend_stable_yield_strategy/manifest.yaml,sha256=__YWl6MEeTBLbNWwUyZjQky0ok1T8B1m8dHPQWtW454,240
125
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=VqHuuULeXZ5bA8g7cK9oD1kgXrK87N8Hxu8bnDBR1Cc,88820
126
- wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=xXPYV45EivXvKPuq-3sJP4Ce5m9GWfGzG40miOtwmxI,13371
123
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/strategy.py,sha256=V5Tv0Y8Bxbpbyu2JKv7PKHoRiebbWxbtCi7iIp2ivXA,91673
124
+ wayfinder_paths/strategies/hyperlend_stable_yield_strategy/test_strategy.py,sha256=puHIf160DQ_a1G3LXFHjIel504vKDhZvqktysyEwOdo,15296
127
125
  wayfinder_paths/strategies/stablecoin_yield_strategy/README.md,sha256=Qj1b2bU5606pbZXsPf1WOtsx0erfBaXpRygxIDGVIgE,5211
128
126
  wayfinder_paths/strategies/stablecoin_yield_strategy/examples.json,sha256=pL1DNFEvYvXKK7xXD5oQYFPQj3Cm1ocKnk6r_iZk0IY,423
129
127
  wayfinder_paths/strategies/stablecoin_yield_strategy/manifest.yaml,sha256=rBb7-Fmub8twfKJgbBIiCWbwI2nLnuqBNyAJs36WhIg,750
130
- wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=6Ug2_cFx3nqw4Of5Oo1e9h1tQL1G3JXk2XcxNoq2Q0g,75607
131
- wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=StGLLqDwthmqYDKLo-Qo0XCUU0pEFD_H65smdxgpBGc,20125
128
+ wayfinder_paths/strategies/stablecoin_yield_strategy/strategy.py,sha256=uoy0TnKRG2ZgbJ_4JjC_DBRWAjEvUxiC3MN-QhohB7o,75430
129
+ wayfinder_paths/strategies/stablecoin_yield_strategy/test_strategy.py,sha256=z3vkiyELwJipWNjksdG3Vs6HIVE_y-UoHJCDezXMH60,19967
132
130
  wayfinder_paths/templates/adapter/README.md,sha256=QcJ0cwXqqtj1VRK1wAs-unUphTPHdJwoIrIoSU4hTmA,3550
133
131
  wayfinder_paths/templates/adapter/adapter.py,sha256=8wdqcEwqb7XGUxl2gQvGnbFwhPi1h15ZJhB2lgtZieI,814
134
132
  wayfinder_paths/templates/adapter/examples.json,sha256=KLHy3AgPIplAaZN0qY2A-HBMa1xXkMhIyusORovTD9w,79
@@ -138,12 +136,12 @@ wayfinder_paths/templates/strategy/README.md,sha256=c7iKlgkz0FPQC3xjMlXqYaDIwC_E
138
136
  wayfinder_paths/templates/strategy/examples.json,sha256=s8UdlD5uxLITQrRMCqgiaAP0IE0tdnnLfX-Zn-OChIc,135
139
137
  wayfinder_paths/templates/strategy/manifest.yaml,sha256=Q13sIhfE7u0wMwa8oFwMZr_twwVMprMV4c_JEQNhkz8,289
140
138
  wayfinder_paths/templates/strategy/strategy.py,sha256=dso2jhVphsdKNd17JPwnFAFzU01-1kHlWrKPAKIKSWw,2024
141
- wayfinder_paths/templates/strategy/test_strategy.py,sha256=-ktqbtJ-lXr0CVGgjFkleWmdZeT2nsyL_zt7Hq1aC1g,7692
139
+ wayfinder_paths/templates/strategy/test_strategy.py,sha256=PwDVFTo7gql3WRqhhmyiBE9orfhXv46FBO989NQNxI0,7519
142
140
  wayfinder_paths/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
143
141
  wayfinder_paths/tests/test_smoke_manifest.py,sha256=YjVzHTWys5o6Ae2cUuuJPhk-QgKxT1InDFHLjpouRiY,1267
144
142
  wayfinder_paths/tests/test_test_coverage.py,sha256=9NrZeVmP02D4W7Qc0XjciC05bhvdTCVibYjTGfa_GQk,7893
145
143
  wayfinder_paths/tests/test_utils.py,sha256=pxHT0QKFlyJeJo8bFnKXzWcOdi6t8rbJ0JFCBaFCBRQ,2112
146
- wayfinder_paths-0.1.8.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
147
- wayfinder_paths-0.1.8.dist-info/METADATA,sha256=xHD03utEsSU9sZijwc-UwDmK0kXBiUNUIcQgD0eDfXA,31404
148
- wayfinder_paths-0.1.8.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
149
- wayfinder_paths-0.1.8.dist-info/RECORD,,
144
+ wayfinder_paths-0.1.9.dist-info/LICENSE,sha256=dYKnlkC_xosBAEQNUvB6cHMuhFgcUtN0oBR7E8_aR2Y,1066
145
+ wayfinder_paths-0.1.9.dist-info/METADATA,sha256=cSavzU1Fz9Hgwin71AwbwAaBbVLRGlKXhjpmJrzcCQ8,31036
146
+ wayfinder_paths-0.1.9.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
147
+ wayfinder_paths-0.1.9.dist-info/RECORD,,